microui-wc 0.1.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 (609) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +33 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  4. package/.github/workflows/ci.yml +42 -0
  5. package/.github/workflows/deploy-pages.yml +112 -0
  6. package/AGENTS.md +2366 -0
  7. package/CHANGELOG.md +47 -0
  8. package/CODE_OF_CONDUCT.md +59 -0
  9. package/CONTRIBUTING.md +156 -0
  10. package/LICENSE +190 -0
  11. package/README.md +254 -0
  12. package/SECURITY.md +58 -0
  13. package/app/.generated/routes/alerts.js +8 -0
  14. package/app/.generated/routes/avatars.js +8 -0
  15. package/app/.generated/routes/badges.js +8 -0
  16. package/app/.generated/routes/buttons.js +10 -0
  17. package/app/.generated/routes/cards.js +10 -0
  18. package/app/.generated/routes/checkboxes.js +9 -0
  19. package/app/.generated/routes/chips.js +8 -0
  20. package/app/.generated/routes/dropdowns.js +9 -0
  21. package/app/.generated/routes/home.js +7 -0
  22. package/app/.generated/routes/icons.js +9 -0
  23. package/app/.generated/routes/inputs.js +10 -0
  24. package/app/.generated/routes/installation.js +7 -0
  25. package/app/.generated/routes/layout.js +9 -0
  26. package/app/.generated/routes/modals.js +9 -0
  27. package/app/.generated/routes/navbar.js +7 -0
  28. package/app/.generated/routes/progress.js +9 -0
  29. package/app/.generated/routes/radios.js +9 -0
  30. package/app/.generated/routes/switches.js +9 -0
  31. package/app/.generated/routes/tabs.js +8 -0
  32. package/app/.generated/routes/toasts.js +9 -0
  33. package/app/index.html +67 -0
  34. package/app/pages/alerts.html +23 -0
  35. package/app/pages/avatars.html +22 -0
  36. package/app/pages/badges.html +22 -0
  37. package/app/pages/buttons.html +71 -0
  38. package/app/pages/cards.html +54 -0
  39. package/app/pages/checkboxes.html +39 -0
  40. package/app/pages/chips.html +23 -0
  41. package/app/pages/dropdowns.html +41 -0
  42. package/app/pages/home.html +59 -0
  43. package/app/pages/icons.html +29 -0
  44. package/app/pages/inputs.html +66 -0
  45. package/app/pages/installation.html +34 -0
  46. package/app/pages/layout.html +30 -0
  47. package/app/pages/modals.html +21 -0
  48. package/app/pages/navbar.html +22 -0
  49. package/app/pages/progress.html +35 -0
  50. package/app/pages/radios.html +40 -0
  51. package/app/pages/switches.html +39 -0
  52. package/app/pages/tabs.html +30 -0
  53. package/app/pages/toasts.html +22 -0
  54. package/app-dist/index.html +67 -0
  55. package/app-dist/pages/alerts.html +23 -0
  56. package/app-dist/pages/avatars.html +22 -0
  57. package/app-dist/pages/badges.html +22 -0
  58. package/app-dist/pages/buttons.html +71 -0
  59. package/app-dist/pages/cards.html +54 -0
  60. package/app-dist/pages/checkboxes.html +39 -0
  61. package/app-dist/pages/chips.html +23 -0
  62. package/app-dist/pages/dropdowns.html +41 -0
  63. package/app-dist/pages/home.html +59 -0
  64. package/app-dist/pages/icons.html +29 -0
  65. package/app-dist/pages/inputs.html +66 -0
  66. package/app-dist/pages/installation.html +34 -0
  67. package/app-dist/pages/layout.html +30 -0
  68. package/app-dist/pages/modals.html +21 -0
  69. package/app-dist/pages/navbar.html +22 -0
  70. package/app-dist/pages/progress.html +35 -0
  71. package/app-dist/pages/radios.html +40 -0
  72. package/app-dist/pages/switches.html +39 -0
  73. package/app-dist/pages/tabs.html +30 -0
  74. package/app-dist/pages/toasts.html +22 -0
  75. package/app-dist/pages.json +217 -0
  76. package/app-dist/routes/alerts.js +5 -0
  77. package/app-dist/routes/avatars.js +1 -0
  78. package/app-dist/routes/badges.js +1 -0
  79. package/app-dist/routes/buttons.js +1 -0
  80. package/app-dist/routes/cards.js +1 -0
  81. package/app-dist/routes/checkboxes.js +9 -0
  82. package/app-dist/routes/chips.js +4 -0
  83. package/app-dist/routes/chunk-019e5e2f.js +5 -0
  84. package/app-dist/routes/chunk-0m4j19yd.js +2 -0
  85. package/app-dist/routes/chunk-0tmmp5q0.js +1 -0
  86. package/app-dist/routes/chunk-10xn709r.js +1 -0
  87. package/app-dist/routes/chunk-15m2qcda.js +2 -0
  88. package/app-dist/routes/chunk-1bh8g23n.js +1 -0
  89. package/app-dist/routes/chunk-1vg0v937.js +1 -0
  90. package/app-dist/routes/chunk-1zvcgy3j.js +1 -0
  91. package/app-dist/routes/chunk-2afb0861.js +1 -0
  92. package/app-dist/routes/chunk-2c6ttpzt.js +5 -0
  93. package/app-dist/routes/chunk-3dy30fhs.js +1 -0
  94. package/app-dist/routes/chunk-426dnces.js +13 -0
  95. package/app-dist/routes/chunk-44kgxery.js +1 -0
  96. package/app-dist/routes/chunk-47fdnejd.js +33 -0
  97. package/app-dist/routes/chunk-49a6t2vq.js +1 -0
  98. package/app-dist/routes/chunk-4fe1rm5b.js +1 -0
  99. package/app-dist/routes/chunk-4ggmvkta.js +33 -0
  100. package/app-dist/routes/chunk-4vkz81q7.js +33 -0
  101. package/app-dist/routes/chunk-4w4tmj8f.js +31 -0
  102. package/app-dist/routes/chunk-532s62kr.js +31 -0
  103. package/app-dist/routes/chunk-5hm3bssy.js +33 -0
  104. package/app-dist/routes/chunk-5vrh24hc.js +1 -0
  105. package/app-dist/routes/chunk-61pcg25a.js +1 -0
  106. package/app-dist/routes/chunk-6nfhygvf.js +1 -0
  107. package/app-dist/routes/chunk-700e7je6.js +33 -0
  108. package/app-dist/routes/chunk-7fsn17kg.js +1 -0
  109. package/app-dist/routes/chunk-7k789b32.js +1 -0
  110. package/app-dist/routes/chunk-7r46q0ys.js +36 -0
  111. package/app-dist/routes/chunk-86fmc1fr.js +5 -0
  112. package/app-dist/routes/chunk-8qth37vw.js +1 -0
  113. package/app-dist/routes/chunk-924wv8n0.js +1 -0
  114. package/app-dist/routes/chunk-9mbhgxk9.js +1 -0
  115. package/app-dist/routes/chunk-a216hyd9.js +1 -0
  116. package/app-dist/routes/chunk-akzxykh9.js +33 -0
  117. package/app-dist/routes/chunk-b3dcvy8c.js +1 -0
  118. package/app-dist/routes/chunk-b74zahz5.js +31 -0
  119. package/app-dist/routes/chunk-bftj53p2.js +5 -0
  120. package/app-dist/routes/chunk-c01hnz3e.js +1 -0
  121. package/app-dist/routes/chunk-d8pvv5km.js +1 -0
  122. package/app-dist/routes/chunk-dev0aezr.js +2 -0
  123. package/app-dist/routes/chunk-dh6vnv0e.js +1 -0
  124. package/app-dist/routes/chunk-dn2cbpva.js +36 -0
  125. package/app-dist/routes/chunk-dvn0my90.js +1 -0
  126. package/app-dist/routes/chunk-dvq8mnve.js +36 -0
  127. package/app-dist/routes/chunk-e8c2gc4d.js +5 -0
  128. package/app-dist/routes/chunk-ejf9ak2x.js +1 -0
  129. package/app-dist/routes/chunk-f083m55s.js +1 -0
  130. package/app-dist/routes/chunk-fnrj28s1.js +31 -0
  131. package/app-dist/routes/chunk-fvg3yjdp.js +31 -0
  132. package/app-dist/routes/chunk-g7k381n1.js +1 -0
  133. package/app-dist/routes/chunk-h01kq2ae.js +13 -0
  134. package/app-dist/routes/chunk-h4dk761v.js +5 -0
  135. package/app-dist/routes/chunk-hmx91z2x.js +5 -0
  136. package/app-dist/routes/chunk-hxbg4m42.js +36 -0
  137. package/app-dist/routes/chunk-jbjnfp2b.js +2 -0
  138. package/app-dist/routes/chunk-jxtz5vv6.js +36 -0
  139. package/app-dist/routes/chunk-jxzcs0ey.js +36 -0
  140. package/app-dist/routes/chunk-kt7wwhcx.js +1 -0
  141. package/app-dist/routes/chunk-kzptszyc.js +33 -0
  142. package/app-dist/routes/chunk-mhgca4w4.js +2 -0
  143. package/app-dist/routes/chunk-mhswxa20.js +1 -0
  144. package/app-dist/routes/chunk-n8zfeex6.js +1 -0
  145. package/app-dist/routes/chunk-pee47b2r.js +1 -0
  146. package/app-dist/routes/chunk-pesmw829.js +1 -0
  147. package/app-dist/routes/chunk-pgc4c6f3.js +36 -0
  148. package/app-dist/routes/chunk-q8egegm1.js +1 -0
  149. package/app-dist/routes/chunk-q9mn2qyq.js +36 -0
  150. package/app-dist/routes/chunk-qh0rtaf3.js +5 -0
  151. package/app-dist/routes/chunk-qqhmk6ye.js +2 -0
  152. package/app-dist/routes/chunk-qrxygmf7.js +33 -0
  153. package/app-dist/routes/chunk-r46yzksx.js +36 -0
  154. package/app-dist/routes/chunk-rgpbw2w0.js +5 -0
  155. package/app-dist/routes/chunk-rnpzv3d8.js +2 -0
  156. package/app-dist/routes/chunk-s5v8cv05.js +2 -0
  157. package/app-dist/routes/chunk-sbwn5bpc.js +1 -0
  158. package/app-dist/routes/chunk-sqbg8jbt.js +33 -0
  159. package/app-dist/routes/chunk-sv8dqnf7.js +1 -0
  160. package/app-dist/routes/chunk-t67sw3za.js +1 -0
  161. package/app-dist/routes/chunk-tjdpqwdf.js +31 -0
  162. package/app-dist/routes/chunk-tq2mfghg.js +1 -0
  163. package/app-dist/routes/chunk-ttn10vt6.js +1 -0
  164. package/app-dist/routes/chunk-v2hzpjxr.js +1 -0
  165. package/app-dist/routes/chunk-wfjjkw9y.js +1 -0
  166. package/app-dist/routes/chunk-wt8cxzmf.js +31 -0
  167. package/app-dist/routes/chunk-x45d372k.js +5 -0
  168. package/app-dist/routes/chunk-y3wsazkt.js +1 -0
  169. package/app-dist/routes/chunk-y7pmgc7t.js +33 -0
  170. package/app-dist/routes/chunk-zefdt2q3.js +31 -0
  171. package/app-dist/routes/dropdowns.js +6 -0
  172. package/app-dist/routes/home.js +1 -0
  173. package/app-dist/routes/icons.js +1 -0
  174. package/app-dist/routes/inputs.js +12 -0
  175. package/app-dist/routes/installation.js +1 -0
  176. package/app-dist/routes/layout.js +1 -0
  177. package/app-dist/routes/modals.js +7 -0
  178. package/app-dist/routes/navbar.js +1 -0
  179. package/app-dist/routes/progress.js +1 -0
  180. package/app-dist/routes/radios.js +6 -0
  181. package/app-dist/routes/switches.js +6 -0
  182. package/app-dist/routes/tabs.js +1 -0
  183. package/app-dist/routes/toasts.js +16 -0
  184. package/assets/fonts/material-symbols-mini.woff2 +0 -0
  185. package/assets/fonts/material-symbols.woff2 +0 -0
  186. package/assets/fonts/roboto-400.woff2 +0 -0
  187. package/assets/fonts/roboto-500.woff2 +0 -0
  188. package/assets/fonts/roboto-700.woff2 +0 -0
  189. package/assets/logo-banner-400.jpg +0 -0
  190. package/assets/logo-banner-400.webp +0 -0
  191. package/assets/logo-banner-800.webp +0 -0
  192. package/assets/logo-banner.jpg +0 -0
  193. package/assets/logo-icon-64.jpg +0 -0
  194. package/assets/logo-icon-64.webp +0 -0
  195. package/assets/logo-icon.jpg +0 -0
  196. package/assets/logo-square.jpg +0 -0
  197. package/bun.lock +312 -0
  198. package/bunfig.toml +4 -0
  199. package/custom-elements.json +1916 -0
  200. package/demo/api/sample-data.json +38 -0
  201. package/demo/content/alerts.html +115 -0
  202. package/demo/content/avatars.html +70 -0
  203. package/demo/content/badges.html +65 -0
  204. package/demo/content/buttons.html +188 -0
  205. package/demo/content/callouts.html +91 -0
  206. package/demo/content/cards.html +121 -0
  207. package/demo/content/checkboxes.html +178 -0
  208. package/demo/content/chips.html +67 -0
  209. package/demo/content/codeblocks.html +101 -0
  210. package/demo/content/confirms.html +115 -0
  211. package/demo/content/datatables.html +149 -0
  212. package/demo/content/dividers.html +119 -0
  213. package/demo/content/dropdowns.html +89 -0
  214. package/demo/content/enterprise.html +252 -0
  215. package/demo/content/home.html +149 -0
  216. package/demo/content/icons.html +89 -0
  217. package/demo/content/inputs.html +135 -0
  218. package/demo/content/installation.html +16 -0
  219. package/demo/content/layout.html +136 -0
  220. package/demo/content/modals.html +141 -0
  221. package/demo/content/navbar.html +70 -0
  222. package/demo/content/progress.html +119 -0
  223. package/demo/content/radios.html +88 -0
  224. package/demo/content/skeletons.html +109 -0
  225. package/demo/content/spinners.html +96 -0
  226. package/demo/content/switches.html +84 -0
  227. package/demo/content/tables.html +124 -0
  228. package/demo/content/tabs.html +85 -0
  229. package/demo/content/toasts.html +116 -0
  230. package/demo/content/tooltips.html +107 -0
  231. package/demo/content/virtual-lists.html +233 -0
  232. package/demo/favicon.ico +0 -0
  233. package/demo/favicon.png +0 -0
  234. package/demo/full.html +52 -0
  235. package/demo/iife.html +46 -0
  236. package/demo/manifest.json +34 -0
  237. package/demo/pages/datatable-demo.html +237 -0
  238. package/demo/pages/prompt-ui-demo.html +218 -0
  239. package/demo/pages/responsive-demo.html +122 -0
  240. package/demo/pages/schema-form-demo.html +270 -0
  241. package/demo/robots.txt +6 -0
  242. package/demo/shell.html +712 -0
  243. package/demo/sw.js +387 -0
  244. package/dist/AGENTS.md +2366 -0
  245. package/dist/README.md +254 -0
  246. package/dist/chunks/advanced.js +174 -0
  247. package/dist/chunks/chunk-1nhr1wrq.js +14 -0
  248. package/dist/chunks/chunk-hssyjbr0.js +2 -0
  249. package/dist/chunks/chunk-k8etzx0z.js +2 -0
  250. package/dist/chunks/chunk-rr1et8fg.js +2 -0
  251. package/dist/chunks/chunk-sjcx4fd5.js +6 -0
  252. package/dist/chunks/chunk-v1c777xh.js +5 -0
  253. package/dist/chunks/chunk-w5k5vwjd.js +13 -0
  254. package/dist/chunks/core.js +10 -0
  255. package/dist/chunks/display.js +17 -0
  256. package/dist/chunks/feedback.js +15 -0
  257. package/dist/chunks/forms.js +48 -0
  258. package/dist/chunks/layout.js +9 -0
  259. package/dist/components/chunk-4tezav8r.js +2 -0
  260. package/dist/components/chunk-fqyb2pms.js +2 -0
  261. package/dist/components/chunk-h7cdbhxw.js +13 -0
  262. package/dist/components/chunk-mzd8jwrs.js +2 -0
  263. package/dist/components/chunk-qwmxyn8e.js +2 -0
  264. package/dist/components/chunk-redtk47a.js +14 -0
  265. package/dist/components/mu-alert.js +5 -0
  266. package/dist/components/mu-api-table.js +33 -0
  267. package/dist/components/mu-avatar.js +1 -0
  268. package/dist/components/mu-badge.js +1 -0
  269. package/dist/components/mu-bottom-nav.js +1 -0
  270. package/dist/components/mu-button.js +1 -0
  271. package/dist/components/mu-callout.js +1 -0
  272. package/dist/components/mu-card.js +1 -0
  273. package/dist/components/mu-checkbox.js +9 -0
  274. package/dist/components/mu-chip.js +4 -0
  275. package/dist/components/mu-code.js +48 -0
  276. package/dist/components/mu-confirm.js +10 -0
  277. package/dist/components/mu-container.js +1 -0
  278. package/dist/components/mu-datatable.js +96 -0
  279. package/dist/components/mu-divider.js +1 -0
  280. package/dist/components/mu-doc-page.js +26 -0
  281. package/dist/components/mu-drawer-item.js +9 -0
  282. package/dist/components/mu-drawer.js +1 -0
  283. package/dist/components/mu-dropdown.js +6 -0
  284. package/dist/components/mu-error-boundary.js +10 -0
  285. package/dist/components/mu-example.js +38 -0
  286. package/dist/components/mu-fetch.js +1 -0
  287. package/dist/components/mu-form.js +1 -0
  288. package/dist/components/mu-grid.js +1 -0
  289. package/dist/components/mu-icon.js +5 -0
  290. package/dist/components/mu-input.js +12 -0
  291. package/dist/components/mu-layout.js +1 -0
  292. package/dist/components/mu-lazy.js +1 -0
  293. package/dist/components/mu-modal.js +7 -0
  294. package/dist/components/mu-navbar.js +1 -0
  295. package/dist/components/mu-page.js +1 -0
  296. package/dist/components/mu-progress.js +1 -0
  297. package/dist/components/mu-prompt-ui.js +20 -0
  298. package/dist/components/mu-radio.js +6 -0
  299. package/dist/components/mu-repeat.js +1 -0
  300. package/dist/components/mu-router.js +6 -0
  301. package/dist/components/mu-schema-form.js +76 -0
  302. package/dist/components/mu-sidebar.js +1 -0
  303. package/dist/components/mu-skeleton.js +13 -0
  304. package/dist/components/mu-spinner.js +1 -0
  305. package/dist/components/mu-stack.js +1 -0
  306. package/dist/components/mu-switch.js +6 -0
  307. package/dist/components/mu-table.js +1 -0
  308. package/dist/components/mu-tabs.js +1 -0
  309. package/dist/components/mu-textarea.js +11 -0
  310. package/dist/components/mu-theme-toggle.js +5 -0
  311. package/dist/components/mu-toast.js +4 -0
  312. package/dist/components/mu-tooltip.js +10 -0
  313. package/dist/components/mu-virtual-list.js +33 -0
  314. package/dist/components.css +1 -0
  315. package/dist/microui.css +1 -0
  316. package/dist/microui.d.ts +234 -0
  317. package/dist/microui.esm.js +549 -0
  318. package/dist/microui.esm.js.map +79 -0
  319. package/dist/microui.min.js +549 -0
  320. package/dist/microui.min.js.map +79 -0
  321. package/dist/routes/alerts.js +1 -0
  322. package/dist/routes/avatars.js +1 -0
  323. package/dist/routes/badges.js +1 -0
  324. package/dist/routes/buttons.js +1 -0
  325. package/dist/routes/callouts.js +1 -0
  326. package/dist/routes/cards.js +1 -0
  327. package/dist/routes/checkboxes.js +9 -0
  328. package/dist/routes/chips.js +4 -0
  329. package/dist/routes/chunk-19wgcncm.js +2 -0
  330. package/dist/routes/chunk-1khyr3v1.js +33 -0
  331. package/dist/routes/chunk-4rhxe97g.js +1 -0
  332. package/dist/routes/chunk-5qah04bh.js +2 -0
  333. package/dist/routes/chunk-7gfxy70n.js +5 -0
  334. package/dist/routes/chunk-e86zbeta.js +1 -0
  335. package/dist/routes/chunk-fagt36h6.js +2 -0
  336. package/dist/routes/chunk-fed7zr7m.js +1 -0
  337. package/dist/routes/chunk-hwj7pfwp.js +1 -0
  338. package/dist/routes/chunk-mhvcs2f8.js +5 -0
  339. package/dist/routes/chunk-nv3bddmj.js +13 -0
  340. package/dist/routes/chunk-q3f2aeqe.js +7 -0
  341. package/dist/routes/chunk-qxxa8trk.js +1 -0
  342. package/dist/routes/chunk-rw15y9zh.js +1 -0
  343. package/dist/routes/chunk-sfb7x11v.js +5 -0
  344. package/dist/routes/chunk-swyhghrm.js +48 -0
  345. package/dist/routes/chunk-sxddjs2d.js +2 -0
  346. package/dist/routes/chunk-vby0zg5w.js +17 -0
  347. package/dist/routes/chunk-w6zqjqqs.js +9 -0
  348. package/dist/routes/chunk-z960rexd.js +38 -0
  349. package/dist/routes/codeblocks.js +1 -0
  350. package/dist/routes/confirms.js +10 -0
  351. package/dist/routes/datatables.js +96 -0
  352. package/dist/routes/dividers.js +1 -0
  353. package/dist/routes/dropdowns.js +6 -0
  354. package/dist/routes/enterprise.js +15 -0
  355. package/dist/routes/home.js +1 -0
  356. package/dist/routes/icons.js +1 -0
  357. package/dist/routes/inputs.js +22 -0
  358. package/dist/routes/installation.js +1 -0
  359. package/dist/routes/layout.js +1 -0
  360. package/dist/routes/modals.js +1 -0
  361. package/dist/routes/navbar.js +1 -0
  362. package/dist/routes/page-components.json +316 -0
  363. package/dist/routes/progress.js +1 -0
  364. package/dist/routes/radios.js +6 -0
  365. package/dist/routes/route-deps.json +156 -0
  366. package/dist/routes/shell-critical.js +1 -0
  367. package/dist/routes/shell-deferred.js +1 -0
  368. package/dist/routes/shell.js +20 -0
  369. package/dist/routes/skeletons.js +13 -0
  370. package/dist/routes/spinners.js +1 -0
  371. package/dist/routes/src/chunks/core.js +36 -0
  372. package/dist/routes/switches.js +6 -0
  373. package/dist/routes/tables.js +1 -0
  374. package/dist/routes/tabs.js +1 -0
  375. package/dist/routes/toasts.js +1 -0
  376. package/dist/routes/tooltips.js +10 -0
  377. package/dist/routes/virtual-lists.js +33 -0
  378. package/dist/styles/common.css +1 -0
  379. package/dist/styles/components/animations.css +1 -0
  380. package/dist/styles/components/avatar.css +1 -0
  381. package/dist/styles/components/badge.css +1 -0
  382. package/dist/styles/components/bottom-nav.css +1 -0
  383. package/dist/styles/components/button.css +1 -0
  384. package/dist/styles/components/card.css +1 -0
  385. package/dist/styles/components/checkbox.css +1 -0
  386. package/dist/styles/components/chip.css +1 -0
  387. package/dist/styles/components/datatable.css +1 -0
  388. package/dist/styles/components/divider.css +1 -0
  389. package/dist/styles/components/drawer-item.css +1 -0
  390. package/dist/styles/components/drawer.css +1 -0
  391. package/dist/styles/components/grid.css +1 -0
  392. package/dist/styles/components/icon.css +1 -0
  393. package/dist/styles/components/input.css +1 -0
  394. package/dist/styles/components/layout.css +1 -0
  395. package/dist/styles/components/navbar.css +1 -0
  396. package/dist/styles/components/overlays.css +1 -0
  397. package/dist/styles/components/progress.css +1 -0
  398. package/dist/styles/components/prompt-ui.css +1 -0
  399. package/dist/styles/components/radio.css +1 -0
  400. package/dist/styles/components/schema-form.css +1 -0
  401. package/dist/styles/components/switch.css +1 -0
  402. package/dist/styles/components/tabs.css +1 -0
  403. package/dist/styles/components/tooltip.css +1 -0
  404. package/dist/styles/components/virtual-list.css +1 -0
  405. package/dist/tokens.css +1 -0
  406. package/docs/api-reference.md +175 -0
  407. package/docs/component-schema.md +231 -0
  408. package/docs/components.md +269 -0
  409. package/docs/design-system.md +183 -0
  410. package/docs/getting-started.md +198 -0
  411. package/docs/message-protocol.md +262 -0
  412. package/docs/utility-classes.md +205 -0
  413. package/lighthouse-audit.mjs +113 -0
  414. package/package.json +45 -0
  415. package/scripts/analyze-components.js +105 -0
  416. package/scripts/build-app.js +193 -0
  417. package/scripts/build-framework.js +444 -0
  418. package/scripts/build-utils.js +101 -0
  419. package/scripts/test-isolated.js +151 -0
  420. package/server.js +256 -0
  421. package/src/chunks/advanced.js +27 -0
  422. package/src/chunks/core.js +61 -0
  423. package/src/chunks/display.js +25 -0
  424. package/src/chunks/feedback.js +15 -0
  425. package/src/chunks/forms.js +25 -0
  426. package/src/chunks/layout.js +27 -0
  427. package/src/components/mu-alert.js +96 -0
  428. package/src/components/mu-api-table.js +167 -0
  429. package/src/components/mu-avatar.js +94 -0
  430. package/src/components/mu-badge.js +32 -0
  431. package/src/components/mu-bottom-nav.js +115 -0
  432. package/src/components/mu-button.js +61 -0
  433. package/src/components/mu-callout.js +71 -0
  434. package/src/components/mu-card.js +36 -0
  435. package/src/components/mu-checkbox.js +186 -0
  436. package/src/components/mu-chip.js +125 -0
  437. package/src/components/mu-code.js +534 -0
  438. package/src/components/mu-confirm.js +268 -0
  439. package/src/components/mu-container.js +53 -0
  440. package/src/components/mu-datatable.js +517 -0
  441. package/src/components/mu-divider.js +40 -0
  442. package/src/components/mu-doc-page.js +100 -0
  443. package/src/components/mu-drawer-item.js +158 -0
  444. package/src/components/mu-drawer.js +305 -0
  445. package/src/components/mu-dropdown.js +239 -0
  446. package/src/components/mu-error-boundary.js +191 -0
  447. package/src/components/mu-example.js +335 -0
  448. package/src/components/mu-fetch.js +256 -0
  449. package/src/components/mu-form.js +133 -0
  450. package/src/components/mu-grid.js +63 -0
  451. package/src/components/mu-icon.js +211 -0
  452. package/src/components/mu-input.js +142 -0
  453. package/src/components/mu-layout.js +129 -0
  454. package/src/components/mu-lazy.js +94 -0
  455. package/src/components/mu-modal.js +160 -0
  456. package/src/components/mu-navbar.js +71 -0
  457. package/src/components/mu-page.js +77 -0
  458. package/src/components/mu-progress.js +54 -0
  459. package/src/components/mu-prompt-ui.js +382 -0
  460. package/src/components/mu-radio.js +200 -0
  461. package/src/components/mu-repeat.js +135 -0
  462. package/src/components/mu-router.js +169 -0
  463. package/src/components/mu-schema-form.js +441 -0
  464. package/src/components/mu-sidebar.js +81 -0
  465. package/src/components/mu-skeleton.js +69 -0
  466. package/src/components/mu-spinner.js +30 -0
  467. package/src/components/mu-stack.js +59 -0
  468. package/src/components/mu-switch.js +150 -0
  469. package/src/components/mu-table.js +80 -0
  470. package/src/components/mu-tabs.js +112 -0
  471. package/src/components/mu-textarea.js +96 -0
  472. package/src/components/mu-theme-toggle.js +52 -0
  473. package/src/components/mu-toast.js +151 -0
  474. package/src/components/mu-tooltip.js +182 -0
  475. package/src/components/mu-virtual-list.js +184 -0
  476. package/src/core/MuElement.js +562 -0
  477. package/src/core/agent-api.js +771 -0
  478. package/src/core/breakpoints.js +195 -0
  479. package/src/core/bus.js +378 -0
  480. package/src/core/component-schema.js +287 -0
  481. package/src/core/feature-registry.js +241 -0
  482. package/src/core/form-state.js +252 -0
  483. package/src/core/http.js +104 -0
  484. package/src/core/keyboard.js +105 -0
  485. package/src/core/layers.js +71 -0
  486. package/src/core/render.js +201 -0
  487. package/src/core/ripple.js +158 -0
  488. package/src/core/router.js +100 -0
  489. package/src/core/scheduler.js +109 -0
  490. package/src/core/signals.js +164 -0
  491. package/src/core/store.js +268 -0
  492. package/src/core/theme.js +68 -0
  493. package/src/core/transitions.js +72 -0
  494. package/src/core/utils.js +30 -0
  495. package/src/index.d.ts +234 -0
  496. package/src/index.js +308 -0
  497. package/src/styles/animations.css +252 -0
  498. package/src/styles/common.css +82 -0
  499. package/src/styles/components/animations.css +129 -0
  500. package/src/styles/components/avatar.css +83 -0
  501. package/src/styles/components/badge.css +80 -0
  502. package/src/styles/components/bottom-nav.css +37 -0
  503. package/src/styles/components/button.css +348 -0
  504. package/src/styles/components/card.css +138 -0
  505. package/src/styles/components/checkbox.css +201 -0
  506. package/src/styles/components/chip.css +93 -0
  507. package/src/styles/components/datatable.css +180 -0
  508. package/src/styles/components/divider.css +49 -0
  509. package/src/styles/components/drawer-item.css +123 -0
  510. package/src/styles/components/drawer.css +273 -0
  511. package/src/styles/components/grid.css +189 -0
  512. package/src/styles/components/icon.css +40 -0
  513. package/src/styles/components/input.css +203 -0
  514. package/src/styles/components/layout.css +121 -0
  515. package/src/styles/components/navbar.css +91 -0
  516. package/src/styles/components/overlays.css +329 -0
  517. package/src/styles/components/progress.css +79 -0
  518. package/src/styles/components/prompt-ui.css +286 -0
  519. package/src/styles/components/radio.css +17 -0
  520. package/src/styles/components/schema-form.css +85 -0
  521. package/src/styles/components/switch.css +69 -0
  522. package/src/styles/components/tabs.css +145 -0
  523. package/src/styles/components/tooltip.css +93 -0
  524. package/src/styles/components/virtual-list.css +36 -0
  525. package/src/styles/components.css +3677 -0
  526. package/src/styles/routes/home.css +97 -0
  527. package/src/styles/tokens.css +675 -0
  528. package/tests/agents/agent-integration.test.js +76 -0
  529. package/tests/benchmark.html +296 -0
  530. package/tests/build/scan-components.test.js +173 -0
  531. package/tests/components/all-components.test.js +245 -0
  532. package/tests/components/all-missing-components.test.js +574 -0
  533. package/tests/components/mu-alert.test.js +113 -0
  534. package/tests/components/mu-avatar.test.js +148 -0
  535. package/tests/components/mu-badge.test.js +92 -0
  536. package/tests/components/mu-button.test.js +112 -0
  537. package/tests/components/mu-card.test.js +89 -0
  538. package/tests/components/mu-checkbox.test.js +158 -0
  539. package/tests/components/mu-chip.test.js +118 -0
  540. package/tests/components/mu-container.test.js +120 -0
  541. package/tests/components/mu-divider.test.js +98 -0
  542. package/tests/components/mu-drawer-item.test.js +199 -0
  543. package/tests/components/mu-drawer.test.js +96 -0
  544. package/tests/components/mu-dropdown.test.js +125 -0
  545. package/tests/components/mu-form.test.js +138 -0
  546. package/tests/components/mu-grid.test.js +135 -0
  547. package/tests/components/mu-icon.test.js +110 -0
  548. package/tests/components/mu-input.test.js +131 -0
  549. package/tests/components/mu-lazy.test.js +103 -0
  550. package/tests/components/mu-modal.test.js +275 -0
  551. package/tests/components/mu-navbar.test.js +101 -0
  552. package/tests/components/mu-progress.test.js +115 -0
  553. package/tests/components/mu-radio.test.js +114 -0
  554. package/tests/components/mu-repeat.test.js +106 -0
  555. package/tests/components/mu-sidebar.test.js +126 -0
  556. package/tests/components/mu-skeleton.test.js +162 -0
  557. package/tests/components/mu-stack.test.js +143 -0
  558. package/tests/components/mu-switch.test.js +292 -0
  559. package/tests/components/mu-table.test.js +124 -0
  560. package/tests/components/mu-tabs.test.js +104 -0
  561. package/tests/components/mu-textarea.test.js +115 -0
  562. package/tests/components/mu-toast.test.js +321 -0
  563. package/tests/components/mu-tooltip.test.js +133 -0
  564. package/tests/components/mu-virtual-list.test.js +109 -0
  565. package/tests/core/MuElement.test.js +120 -0
  566. package/tests/core/agent-api.test.js +125 -0
  567. package/tests/core/all-core-modules.test.js +442 -0
  568. package/tests/core/bus.test.js +364 -0
  569. package/tests/core/component-schema.test.js +160 -0
  570. package/tests/core/feature-registry.test.js +198 -0
  571. package/tests/core/form-state.test.js +167 -0
  572. package/tests/core/http.test.js +119 -0
  573. package/tests/core/keyboard.test.js +319 -0
  574. package/tests/core/layers.test.js +129 -0
  575. package/tests/core/namespaced-stores.test.js +114 -0
  576. package/tests/core/render.test.js +121 -0
  577. package/tests/core/ripple.test.js +131 -0
  578. package/tests/core/router.test.js +89 -0
  579. package/tests/core/scheduler.test.js +121 -0
  580. package/tests/core/signals.test.js +128 -0
  581. package/tests/core/store.test.js +171 -0
  582. package/tests/core/transitions.test.js +82 -0
  583. package/tests/e2e/accessibility-harness.html +58 -0
  584. package/tests/e2e/accessibility.test.js +401 -0
  585. package/tests/e2e/agent-features.test.js +372 -0
  586. package/tests/e2e/card-spacing.test.js +287 -0
  587. package/tests/e2e/components.test.js +439 -0
  588. package/tests/e2e/demo-routes.test.js +478 -0
  589. package/tests/e2e/layout-css-fallback.test.js +334 -0
  590. package/tests/e2e/mu-alert.e2e.test.js +111 -0
  591. package/tests/e2e/mu-checkbox.test.js +489 -0
  592. package/tests/e2e/mu-chip.test.js +347 -0
  593. package/tests/e2e/mu-form.test.js +499 -0
  594. package/tests/e2e/mu-icon.test.js +114 -0
  595. package/tests/e2e/mu-radio.test.js +113 -0
  596. package/tests/e2e/mu-skeleton.test.js +140 -0
  597. package/tests/e2e/mu-switch.test.js +415 -0
  598. package/tests/e2e/mu-tabs.test.js +494 -0
  599. package/tests/e2e/mu-textarea.test.js +242 -0
  600. package/tests/e2e/mu-virtual-list.test.js +427 -0
  601. package/tests/e2e/perf-memory.test.js +161 -0
  602. package/tests/e2e/puppeteer-helper.js +137 -0
  603. package/tests/e2e/puppeteer.test.js +226 -0
  604. package/tests/e2e/pwa.test.js +261 -0
  605. package/tests/e2e/test-harness.html +319 -0
  606. package/tests/manual/test-components.html +120 -0
  607. package/tests/memory-test.html +309 -0
  608. package/tests/setup-dom.js +93 -0
  609. package/tests/visual-test.html +301 -0
@@ -0,0 +1 @@
1
+ :root{--md-ref-palette-primary0:#000000;--md-ref-palette-primary10:#21005D;--md-ref-palette-primary20:#381E72;--md-ref-palette-primary30:#4F378B;--md-ref-palette-primary40:#6750A4;--md-ref-palette-primary50:#7F67BE;--md-ref-palette-primary60:#9A82DB;--md-ref-palette-primary70:#B69DF8;--md-ref-palette-primary80:#D0BCFF;--md-ref-palette-primary90:#EADDFF;--md-ref-palette-primary95:#F6EDFF;--md-ref-palette-primary99:#FFFBFE;--md-ref-palette-primary100:#FFFFFF;--md-ref-palette-secondary0:#000000;--md-ref-palette-secondary10:#1D192B;--md-ref-palette-secondary20:#332D41;--md-ref-palette-secondary30:#4A4458;--md-ref-palette-secondary40:#625B71;--md-ref-palette-secondary50:#7A7289;--md-ref-palette-secondary60:#958DA5;--md-ref-palette-secondary70:#B0A7C0;--md-ref-palette-secondary80:#CCC2DC;--md-ref-palette-secondary90:#E8DEF8;--md-ref-palette-secondary95:#F6EDFF;--md-ref-palette-secondary99:#FFFBFE;--md-ref-palette-secondary100:#FFFFFF;--md-ref-palette-tertiary0:#000000;--md-ref-palette-tertiary10:#31111D;--md-ref-palette-tertiary20:#492532;--md-ref-palette-tertiary30:#633B48;--md-ref-palette-tertiary40:#7D5260;--md-ref-palette-tertiary50:#986977;--md-ref-palette-tertiary60:#B58392;--md-ref-palette-tertiary70:#D29DAC;--md-ref-palette-tertiary80:#EFB8C8;--md-ref-palette-tertiary90:#FFD8E4;--md-ref-palette-tertiary95:#FFECF1;--md-ref-palette-tertiary99:#FFFBFA;--md-ref-palette-tertiary100:#FFFFFF;--md-ref-palette-error0:#000000;--md-ref-palette-error10:#410E0B;--md-ref-palette-error20:#601410;--md-ref-palette-error30:#8C1D18;--md-ref-palette-error40:#B3261E;--md-ref-palette-error50:#DC362E;--md-ref-palette-error60:#E46962;--md-ref-palette-error70:#EC928E;--md-ref-palette-error80:#F2B8B5;--md-ref-palette-error90:#F9DEDC;--md-ref-palette-error95:#FCEEEE;--md-ref-palette-error99:#FFFBF9;--md-ref-palette-error100:#FFFFFF;--md-ref-palette-neutral0:#000000;--md-ref-palette-neutral10:#1D1B20;--md-ref-palette-neutral20:#322F35;--md-ref-palette-neutral30:#48464C;--md-ref-palette-neutral40:#605D64;--md-ref-palette-neutral50:#79767D;--md-ref-palette-neutral60:#938F96;--md-ref-palette-neutral70:#AEA9B1;--md-ref-palette-neutral80:#CAC5CD;--md-ref-palette-neutral90:#E6E0E9;--md-ref-palette-neutral95:#F5EFF7;--md-ref-palette-neutral99:#FFFBFE;--md-ref-palette-neutral100:#FFFFFF;--md-ref-palette-neutral-variant0:#000000;--md-ref-palette-neutral-variant10:#1D1A22;--md-ref-palette-neutral-variant20:#322F37;--md-ref-palette-neutral-variant30:#49454F;--md-ref-palette-neutral-variant40:#605D66;--md-ref-palette-neutral-variant50:#79747E;--md-ref-palette-neutral-variant60:#938F99;--md-ref-palette-neutral-variant70:#AEA9B4;--md-ref-palette-neutral-variant80:#CAC4D0;--md-ref-palette-neutral-variant90:#E7E0EC;--md-ref-palette-neutral-variant95:#F5EEFA;--md-ref-palette-neutral-variant99:#FFFBFE;--md-ref-palette-neutral-variant100:#FFFFFF;--md-sys-color-primary:var(--md-ref-palette-primary40);--md-sys-color-on-primary:var(--md-ref-palette-primary100);--md-sys-color-primary-container:var(--md-ref-palette-primary90);--md-sys-color-on-primary-container:var(--md-ref-palette-primary10);--md-sys-color-secondary:var(--md-ref-palette-secondary40);--md-sys-color-on-secondary:var(--md-ref-palette-secondary100);--md-sys-color-secondary-container:var(--md-ref-palette-secondary90);--md-sys-color-on-secondary-container:var(--md-ref-palette-secondary10);--md-sys-color-tertiary:var(--md-ref-palette-tertiary40);--md-sys-color-on-tertiary:var(--md-ref-palette-tertiary100);--md-sys-color-tertiary-container:var(--md-ref-palette-tertiary90);--md-sys-color-on-tertiary-container:var(--md-ref-palette-tertiary10);--md-sys-color-error:var(--md-ref-palette-error40);--md-sys-color-on-error:var(--md-ref-palette-error100);--md-sys-color-error-container:var(--md-ref-palette-error90);--md-sys-color-on-error-container:var(--md-ref-palette-error10);--md-sys-color-surface:var(--md-ref-palette-neutral99);--md-sys-color-on-surface:var(--md-ref-palette-neutral10);--md-sys-color-surface-variant:var(--md-ref-palette-neutral-variant90);--md-sys-color-on-surface-variant:var(--md-ref-palette-neutral-variant30);--md-sys-color-surface-container-lowest:var(--md-ref-palette-neutral100);--md-sys-color-surface-container-low:var(--md-ref-palette-neutral96,#F7F2FA);--md-sys-color-surface-container:var(--md-ref-palette-neutral94,#F3EDF7);--md-sys-color-surface-container-high:var(--md-ref-palette-neutral92,#ECE6F0);--md-sys-color-surface-container-highest:var(--md-ref-palette-neutral90);--md-sys-color-outline:var(--md-ref-palette-neutral-variant50);--md-sys-color-outline-variant:var(--md-ref-palette-neutral-variant80);--md-sys-color-background:var(--md-ref-palette-neutral99);--md-sys-color-on-background:var(--md-ref-palette-neutral10);--md-sys-color-inverse-surface:var(--md-ref-palette-neutral20);--md-sys-color-inverse-on-surface:var(--md-ref-palette-neutral95);--md-sys-color-inverse-primary:var(--md-ref-palette-primary80);--md-sys-color-scrim:var(--md-ref-palette-neutral0);--md-sys-color-shadow:var(--md-ref-palette-neutral0);--md-sys-color-warning:#E65100;--md-sys-color-on-warning:#FFFFFF;--md-sys-color-warning-container:#FFE0B2;--md-sys-color-on-warning-container:#5D4037;--md-sys-color-success:#2E7D32;--md-sys-color-on-success:#FFFFFF;--md-sys-color-success-container:#C8E6C9;--md-sys-color-on-success-container:#1B5E20;--mu-color-primary:var(--md-sys-color-primary);--mu-color-primary-light:var(--md-sys-color-primary-container);--mu-color-primary-dark:var(--md-ref-palette-primary30);--mu-color-secondary:var(--md-sys-color-secondary);--mu-color-error:var(--md-sys-color-error);--mu-color-success:#1B5E20;--mu-color-warning:#E65100;--mu-color-info:#01579B;--mu-surface-background:var(--md-sys-color-background);--mu-surface-foreground:var(--md-sys-color-on-background);--mu-surface-card:var(--md-sys-color-surface-container-low);--mu-surface-elevated:var(--md-sys-color-surface-container);--mu-surface-muted:var(--md-sys-color-surface-variant);--mu-surface-border:var(--md-sys-color-outline-variant);--md-sys-typescale-font:'Roboto',system-ui,-apple-system,sans-serif;--md-sys-typescale-display-large-size:57px;--md-sys-typescale-display-large-line-height:64px;--md-sys-typescale-display-large-weight:400;--md-sys-typescale-display-medium-size:45px;--md-sys-typescale-display-medium-line-height:52px;--md-sys-typescale-display-small-size:36px;--md-sys-typescale-display-small-line-height:44px;--md-sys-typescale-headline-large-size:32px;--md-sys-typescale-headline-large-line-height:40px;--md-sys-typescale-headline-medium-size:28px;--md-sys-typescale-headline-medium-line-height:36px;--md-sys-typescale-headline-small-size:24px;--md-sys-typescale-headline-small-line-height:32px;--md-sys-typescale-title-large-size:22px;--md-sys-typescale-title-large-line-height:28px;--md-sys-typescale-title-large-weight:400;--md-sys-typescale-title-medium-size:16px;--md-sys-typescale-title-medium-line-height:24px;--md-sys-typescale-title-medium-weight:500;--md-sys-typescale-title-small-size:14px;--md-sys-typescale-title-small-line-height:20px;--md-sys-typescale-title-small-weight:500;--md-sys-typescale-body-large-size:16px;--md-sys-typescale-body-large-line-height:24px;--md-sys-typescale-body-medium-size:14px;--md-sys-typescale-body-medium-line-height:20px;--md-sys-typescale-body-small-size:12px;--md-sys-typescale-body-small-line-height:16px;--md-sys-typescale-label-large-size:14px;--md-sys-typescale-label-large-line-height:20px;--md-sys-typescale-label-large-weight:500;--md-sys-typescale-label-medium-size:12px;--md-sys-typescale-label-medium-line-height:16px;--md-sys-typescale-label-medium-weight:500;--md-sys-typescale-label-small-size:11px;--md-sys-typescale-label-small-line-height:16px;--md-sys-typescale-label-small-weight:500;--mu-font-sans:var(--md-sys-typescale-font);--mu-font-size-xs:11px;--mu-font-size-sm:12px;--mu-font-size-base:14px;--mu-font-size-lg:16px;--mu-font-size-xl:22px;--mu-font-weight-normal:400;--mu-font-weight-medium:500;--mu-font-weight-bold:700;--md-sys-shape-corner-none:0;--md-sys-shape-corner-extra-small:4px;--md-sys-shape-corner-small:8px;--md-sys-shape-corner-medium:12px;--md-sys-shape-corner-large:16px;--md-sys-shape-corner-extra-large:28px;--md-sys-shape-corner-full:9999px;--mu-radius-none:var(--md-sys-shape-corner-none);--mu-radius-sm:var(--md-sys-shape-corner-extra-small);--mu-radius-md:var(--md-sys-shape-corner-small);--mu-radius-lg:var(--md-sys-shape-corner-medium);--mu-radius-xl:var(--md-sys-shape-corner-large);--mu-radius-2xl:var(--md-sys-shape-corner-extra-large);--mu-radius-full:var(--md-sys-shape-corner-full);--md-sys-state-hover-opacity:0.08;--md-sys-state-focus-opacity:0.10;--md-sys-state-pressed-opacity:0.10;--md-sys-state-dragged-opacity:0.16;--md-sys-elevation-level0:none;--md-sys-elevation-level1:0 1px 2px 0 rgba(0,0,0,0.3),0 1px 3px 1px rgba(0,0,0,0.15);--md-sys-elevation-level2:0 1px 2px 0 rgba(0,0,0,0.3),0 2px 6px 2px rgba(0,0,0,0.15);--md-sys-elevation-level3:0 1px 3px 0 rgba(0,0,0,0.3),0 4px 8px 3px rgba(0,0,0,0.15);--md-sys-elevation-level4:0 2px 3px 0 rgba(0,0,0,0.3),0 6px 10px 4px rgba(0,0,0,0.15);--md-sys-elevation-level5:0 4px 4px 0 rgba(0,0,0,0.3),0 8px 12px 6px rgba(0,0,0,0.15);--mu-shadow-none:var(--md-sys-elevation-level0);--mu-shadow-sm:var(--md-sys-elevation-level1);--mu-shadow-md:var(--md-sys-elevation-level2);--mu-shadow-lg:var(--md-sys-elevation-level3);--mu-shadow-xl:var(--md-sys-elevation-level4);--mu-shadow-2xl:var(--md-sys-elevation-level5);--mu-spacing-0:0;--mu-spacing-1:4px;--mu-spacing-2:8px;--mu-spacing-3:12px;--mu-spacing-4:16px;--mu-spacing-5:20px;--mu-spacing-6:24px;--mu-spacing-8:32px;--mu-spacing-10:40px;--mu-spacing-12:48px;--mu-spacing-16:64px;--mu-z-base:0;--mu-z-dropdown:100;--mu-z-sticky:200;--mu-z-fixed:300;--mu-z-backdrop:400;--mu-z-modal:500;--mu-z-popover:600;--mu-z-tooltip:700;--mu-z-toast:800;--md-sys-motion-duration-short1:50ms;--md-sys-motion-duration-short2:100ms;--md-sys-motion-duration-short3:150ms;--md-sys-motion-duration-short4:200ms;--md-sys-motion-duration-medium1:250ms;--md-sys-motion-duration-medium2:300ms;--md-sys-motion-duration-medium3:350ms;--md-sys-motion-duration-medium4:400ms;--md-sys-motion-duration-long1:450ms;--md-sys-motion-duration-long2:500ms;--md-sys-motion-duration-long3:550ms;--md-sys-motion-duration-long4:600ms;--md-sys-motion-duration-extra-long1:700ms;--md-sys-motion-duration-extra-long2:800ms;--md-sys-motion-duration-extra-long3:900ms;--md-sys-motion-duration-extra-long4:1000ms;--md-sys-motion-easing-standard:cubic-bezier(0.2,0,0,1);--md-sys-motion-easing-standard-decelerate:cubic-bezier(0,0,0,1);--md-sys-motion-easing-standard-accelerate:cubic-bezier(0.3,0,1,1);--md-sys-motion-easing-emphasized:cubic-bezier(0.2,0,0,1);--md-sys-motion-easing-emphasized-decelerate:cubic-bezier(0.05,0.7,0.1,1);--md-sys-motion-easing-emphasized-accelerate:cubic-bezier(0.3,0,0.8,0.15);--mu-duration-fast:var(--md-sys-motion-duration-short2);--mu-duration-normal:var(--md-sys-motion-duration-short4);--mu-duration-slow:var(--md-sys-motion-duration-medium2);--mu-ease-in-out:var(--md-sys-motion-easing-standard);--mu-breakpoint-compact:600px;--mu-breakpoint-medium:840px;--mu-breakpoint-expanded:1200px;--mu-breakpoint-large:1600px;--mu-drawer-rail-width:80px;--mu-drawer-expanded-width:360px;--mu-drawer-standard-width:256px;--mu-bottom-nav-height:80px;--mu-z-drawer:250;--mu-z-drawer-scrim:240;--mu-z-bottom-nav:150}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--md-sys-color-primary:var(--md-ref-palette-primary80);--md-sys-color-on-primary:var(--md-ref-palette-primary20);--md-sys-color-primary-container:var(--md-ref-palette-primary30);--md-sys-color-on-primary-container:var(--md-ref-palette-primary90);--md-sys-color-secondary:var(--md-ref-palette-secondary80);--md-sys-color-on-secondary:var(--md-ref-palette-secondary20);--md-sys-color-secondary-container:var(--md-ref-palette-secondary30);--md-sys-color-on-secondary-container:var(--md-ref-palette-secondary90);--md-sys-color-tertiary:var(--md-ref-palette-tertiary80);--md-sys-color-on-tertiary:var(--md-ref-palette-tertiary20);--md-sys-color-tertiary-container:var(--md-ref-palette-tertiary30);--md-sys-color-on-tertiary-container:var(--md-ref-palette-tertiary90);--md-sys-color-error:var(--md-ref-palette-error80);--md-sys-color-on-error:var(--md-ref-palette-error20);--md-sys-color-error-container:var(--md-ref-palette-error30);--md-sys-color-on-error-container:var(--md-ref-palette-error90);--md-sys-color-surface:var(--md-ref-palette-neutral10);--md-sys-color-on-surface:var(--md-ref-palette-neutral90);--md-sys-color-surface-variant:var(--md-ref-palette-neutral-variant30);--md-sys-color-on-surface-variant:var(--md-ref-palette-neutral-variant80);--md-sys-color-surface-container-lowest:#0F0D13;--md-sys-color-surface-container-low:var(--md-ref-palette-neutral10);--md-sys-color-surface-container:#211F26;--md-sys-color-surface-container-high:#2B2930;--md-sys-color-surface-container-highest:#36343B;--md-sys-color-outline:var(--md-ref-palette-neutral-variant60);--md-sys-color-outline-variant:var(--md-ref-palette-neutral-variant30);--md-sys-color-background:var(--md-ref-palette-neutral10);--md-sys-color-on-background:var(--md-ref-palette-neutral90);--md-sys-color-inverse-surface:var(--md-ref-palette-neutral90);--md-sys-color-inverse-on-surface:var(--md-ref-palette-neutral20);--md-sys-color-inverse-primary:var(--md-ref-palette-primary40);--mu-color-primary:var(--md-sys-color-primary);--mu-color-primary-light:var(--md-sys-color-primary-container);--mu-surface-background:var(--md-sys-color-background);--mu-surface-foreground:var(--md-sys-color-on-background);--mu-surface-card:var(--md-sys-color-surface-container-low);--mu-surface-elevated:var(--md-sys-color-surface-container);--mu-surface-muted:var(--md-sys-color-surface-variant);--mu-surface-border:var(--md-sys-color-outline-variant)}}[data-theme="dark"]{--md-sys-color-primary:var(--md-ref-palette-primary80);--md-sys-color-on-primary:var(--md-ref-palette-primary20);--md-sys-color-primary-container:var(--md-ref-palette-primary30);--md-sys-color-on-primary-container:var(--md-ref-palette-primary90);--md-sys-color-secondary:var(--md-ref-palette-secondary80);--md-sys-color-on-secondary:var(--md-ref-palette-secondary20);--md-sys-color-secondary-container:var(--md-ref-palette-secondary30);--md-sys-color-on-secondary-container:var(--md-ref-palette-secondary90);--md-sys-color-tertiary:var(--md-ref-palette-tertiary80);--md-sys-color-on-tertiary:var(--md-ref-palette-tertiary20);--md-sys-color-tertiary-container:var(--md-ref-palette-tertiary30);--md-sys-color-on-tertiary-container:var(--md-ref-palette-tertiary90);--md-sys-color-error:var(--md-ref-palette-error80);--md-sys-color-on-error:var(--md-ref-palette-error20);--md-sys-color-error-container:var(--md-ref-palette-error30);--md-sys-color-on-error-container:var(--md-ref-palette-error90);--md-sys-color-surface:var(--md-ref-palette-neutral10);--md-sys-color-on-surface:var(--md-ref-palette-neutral90);--md-sys-color-surface-variant:var(--md-ref-palette-neutral-variant30);--md-sys-color-on-surface-variant:var(--md-ref-palette-neutral-variant80);--md-sys-color-surface-container-lowest:#0F0D13;--md-sys-color-surface-container-low:var(--md-ref-palette-neutral10);--md-sys-color-surface-container:#211F26;--md-sys-color-surface-container-high:#2B2930;--md-sys-color-surface-container-highest:#36343B;--md-sys-color-outline:var(--md-ref-palette-neutral-variant60);--md-sys-color-outline-variant:var(--md-ref-palette-neutral-variant30);--md-sys-color-background:var(--md-ref-palette-neutral10);--md-sys-color-on-background:var(--md-ref-palette-neutral90);--md-sys-color-inverse-surface:var(--md-ref-palette-neutral90);--md-sys-color-inverse-on-surface:var(--md-ref-palette-neutral20);--md-sys-color-inverse-primary:var(--md-ref-palette-primary40);--mu-color-primary:var(--md-sys-color-primary);--mu-color-primary-light:var(--md-sys-color-primary-container);--mu-surface-background:var(--md-sys-color-background);--mu-surface-foreground:var(--md-sys-color-on-background);--mu-surface-card:var(--md-sys-color-surface-container-low);--mu-surface-elevated:var(--md-sys-color-surface-container);--mu-surface-muted:var(--md-sys-color-surface-variant);--mu-surface-border:var(--md-sys-color-outline-variant)}[data-theme="light"]{--md-sys-color-primary:var(--md-ref-palette-primary40);--md-sys-color-on-primary:var(--md-ref-palette-primary100);--md-sys-color-primary-container:var(--md-ref-palette-primary90);--md-sys-color-on-primary-container:var(--md-ref-palette-primary10);--md-sys-color-surface:var(--md-ref-palette-neutral99);--md-sys-color-on-surface:var(--md-ref-palette-neutral10);--md-sys-color-background:var(--md-ref-palette-neutral99);--md-sys-color-on-background:var(--md-ref-palette-neutral10)}.mu-text-primary{color:var(--md-sys-color-on-surface)}.mu-text-secondary{color:var(--md-sys-color-on-surface-variant)}.mu-text-disabled{color:color-mix(in srgb,var(--md-sys-color-on-surface) 38%,transparent)}.mu-text-error{color:var(--md-sys-color-error)}.mu-text-success{color:var(--md-sys-color-success)}.mu-text-warning{color:var(--md-sys-color-warning)}.mu-text-display-large{font-size:var(--md-sys-typescale-display-large-size);line-height:var(--md-sys-typescale-display-large-line-height)}.mu-text-display-medium{font-size:var(--md-sys-typescale-display-medium-size);line-height:var(--md-sys-typescale-display-medium-line-height)}.mu-text-display-small{font-size:var(--md-sys-typescale-display-small-size);line-height:var(--md-sys-typescale-display-small-line-height)}.mu-text-headline-large{font-size:var(--md-sys-typescale-headline-large-size);line-height:var(--md-sys-typescale-headline-large-line-height)}.mu-text-headline-medium{font-size:var(--md-sys-typescale-headline-medium-size);line-height:var(--md-sys-typescale-headline-medium-line-height)}.mu-text-headline-small{font-size:var(--md-sys-typescale-headline-small-size);line-height:var(--md-sys-typescale-headline-small-line-height)}.mu-text-title-large{font-size:var(--md-sys-typescale-title-large-size);line-height:var(--md-sys-typescale-title-large-line-height);font-weight:var(--md-sys-typescale-title-large-weight)}.mu-text-title-medium{font-size:var(--md-sys-typescale-title-medium-size);line-height:var(--md-sys-typescale-title-medium-line-height);font-weight:var(--md-sys-typescale-title-medium-weight)}.mu-text-title-small{font-size:var(--md-sys-typescale-title-small-size);line-height:var(--md-sys-typescale-title-small-line-height);font-weight:var(--md-sys-typescale-title-small-weight)}.mu-text-body-large{font-size:var(--md-sys-typescale-body-large-size);line-height:var(--md-sys-typescale-body-large-line-height)}.mu-text-body-medium{font-size:var(--md-sys-typescale-body-medium-size);line-height:var(--md-sys-typescale-body-medium-line-height)}.mu-text-body-small{font-size:var(--md-sys-typescale-body-small-size);line-height:var(--md-sys-typescale-body-small-line-height)}.mu-text-label-large{font-size:var(--md-sys-typescale-label-large-size);line-height:var(--md-sys-typescale-label-large-line-height);font-weight:var(--md-sys-typescale-label-large-weight)}.mu-text-label-medium{font-size:var(--md-sys-typescale-label-medium-size);line-height:var(--md-sys-typescale-label-medium-line-height);font-weight:var(--md-sys-typescale-label-medium-weight)}.mu-text-label-small{font-size:var(--md-sys-typescale-label-small-size);line-height:var(--md-sys-typescale-label-small-line-height);font-weight:var(--md-sys-typescale-label-small-weight)}*,*::before,*::after{box-sizing:border-box}.mu-state-layer{position:relative;overflow:hidden}.mu-state-layer::before{content:'';position:absolute;inset:0;border-radius:inherit;opacity:0;transition:opacity var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard);pointer-events:none}.mu-state-layer--surface::before,.mu-state-layer:not([class*="mu-state-layer--"])::before{background:var(--md-sys-color-on-surface)}.mu-state-layer--on-primary::before{background:var(--md-sys-color-on-primary)}.mu-state-layer--on-secondary::before{background:var(--md-sys-color-on-secondary-container)}.mu-state-layer--on-error::before{background:var(--md-sys-color-on-error)}.mu-state-layer:hover:not(:disabled)::before{opacity:var(--md-sys-state-hover-opacity)}.mu-state-layer:focus-visible:not(:disabled)::before{opacity:var(--md-sys-state-focus-opacity)}.mu-state-layer:active:not(:disabled)::before{opacity:var(--md-sys-state-pressed-opacity)}.mu-state-layer:disabled::before,.mu-state-layer.is-disabled::before{display:none}mu-icon,.mu-icon{display:inline-flex;align-items:center;justify-content:center;line-height:1;vertical-align:middle}mu-icon .material-symbols-outlined{font-family:'Material Symbols Outlined',sans-serif;font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:'liga'}mu-icon svg{display:block}.mu-button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:48px;height:40px;padding:0 24px;font-family:var(--md-sys-typescale-font);font-size:var(--md-sys-typescale-label-large-size);font-weight:var(--md-sys-typescale-label-large-weight);line-height:var(--md-sys-typescale-label-large-line-height);letter-spacing:0.1px;text-decoration:none;white-space:nowrap;border:none;border-radius:var(--md-sys-shape-corner-full);cursor:pointer;overflow:hidden}.mu-button::before{content:'';position:absolute;inset:0;border-radius:inherit;opacity:0;transition:opacity var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.mu-button--sm{height:32px;padding:0 16px;font-size:var(--md-sys-typescale-label-medium-size)}.mu-button--md{height:40px;padding:0 24px}.mu-button--lg{height:48px;padding:0 32px;font-size:var(--md-sys-typescale-body-large-size)}.mu-button--primary{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.mu-button--primary::before{background:var(--md-sys-color-on-primary)}.mu-button--primary:hover:not(:disabled)::before{opacity:var(--md-sys-state-hover-opacity)}.mu-button--primary:focus-visible:not(:disabled)::before{opacity:var(--md-sys-state-focus-opacity)}.mu-button--primary:active:not(:disabled)::before{opacity:var(--md-sys-state-pressed-opacity)}.mu-button--primary:hover:not(:disabled){box-shadow:var(--md-sys-elevation-level1)}.mu-button--secondary{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.mu-button--secondary::before{background:var(--md-sys-color-on-secondary-container)}.mu-button--secondary:hover:not(:disabled)::before{opacity:var(--md-sys-state-hover-opacity)}.mu-button--secondary:focus-visible:not(:disabled)::before{opacity:var(--md-sys-state-focus-opacity)}.mu-button--secondary:active:not(:disabled)::before{opacity:var(--md-sys-state-pressed-opacity)}.mu-button--secondary:hover:not(:disabled){box-shadow:var(--md-sys-elevation-level1)}.mu-button--ghost{background:transparent;color:var(--md-sys-color-primary);border:1px solid var(--md-sys-color-outline)}.mu-button--ghost::before{background:var(--md-sys-color-primary)}.mu-button--ghost:hover:not(:disabled)::before{opacity:var(--md-sys-state-hover-opacity)}.mu-button--ghost:focus-visible:not(:disabled)::before{opacity:var(--md-sys-state-focus-opacity)}.mu-button--danger{background:var(--md-sys-color-error);color:var(--md-sys-color-on-error)}.mu-button--danger::before{background:var(--md-sys-color-on-error)}.mu-button--danger:hover:not(:disabled)::before{opacity:var(--md-sys-state-hover-opacity)}.mu-button--danger:hover:not(:disabled){box-shadow:var(--md-sys-elevation-level1)}.mu-button:disabled,.mu-button.is-disabled{background:color-mix(in srgb,var(--md-sys-color-on-surface) 12%,transparent);color:color-mix(in srgb,var(--md-sys-color-on-surface) 38%,transparent);cursor:not-allowed;box-shadow:none}.mu-button:disabled::before,.mu-button.is-disabled::before{display:none}.mu-button--elevated{background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-primary);box-shadow:var(--md-sys-elevation-level1)}.mu-button--elevated::before{background:var(--md-sys-color-primary)}.mu-button--elevated:hover:not(:disabled)::before{opacity:var(--md-sys-state-hover-opacity)}.mu-button--elevated:hover:not(:disabled){box-shadow:var(--md-sys-elevation-level2)}.mu-button--elevated:focus-visible:not(:disabled)::before{opacity:var(--md-sys-state-focus-opacity)}.mu-button--elevated:active:not(:disabled)::before{opacity:var(--md-sys-state-pressed-opacity)}.mu-button--filled{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.mu-button--filled::before{background:var(--md-sys-color-on-primary)}.mu-button--filled:hover:not(:disabled)::before{opacity:var(--md-sys-state-hover-opacity)}.mu-button--filled:hover:not(:disabled){box-shadow:var(--md-sys-elevation-level1)}.mu-button--filled:focus-visible:not(:disabled)::before{opacity:var(--md-sys-state-focus-opacity)}.mu-button--filled:active:not(:disabled)::before{opacity:var(--md-sys-state-pressed-opacity)}.mu-button--tonal{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.mu-button--tonal::before{background:var(--md-sys-color-on-secondary-container)}.mu-button--tonal:hover:not(:disabled)::before{opacity:var(--md-sys-state-hover-opacity)}.mu-button--tonal:hover:not(:disabled){box-shadow:var(--md-sys-elevation-level1)}.mu-button--tonal:focus-visible:not(:disabled)::before{opacity:var(--md-sys-state-focus-opacity)}.mu-button--tonal:active:not(:disabled)::before{opacity:var(--md-sys-state-pressed-opacity)}.mu-button--outlined{background:transparent;color:var(--md-sys-color-primary);border:1px solid var(--md-sys-color-outline)}.mu-button--outlined::before{background:var(--md-sys-color-primary)}.mu-button--outlined:hover:not(:disabled)::before{opacity:var(--md-sys-state-hover-opacity)}.mu-button--outlined:focus-visible:not(:disabled)::before{opacity:var(--md-sys-state-focus-opacity)}.mu-button--outlined:active:not(:disabled)::before{opacity:var(--md-sys-state-pressed-opacity)}.mu-button--text{background:transparent;color:var(--md-sys-color-primary);padding:0 12px}.mu-button--text::before{background:var(--md-sys-color-primary)}.mu-button--text:hover:not(:disabled)::before{opacity:var(--md-sys-state-hover-opacity)}.mu-button--text:focus-visible:not(:disabled)::before{opacity:var(--md-sys-state-focus-opacity)}.mu-button--text:active:not(:disabled)::before{opacity:var(--md-sys-state-pressed-opacity)}@keyframes md-ripple{from{transform:scale(0);opacity:0.12}to{transform:scale(2.5);opacity:0}}@keyframes mu-ripple-expand{from{transform:scale(0);opacity:0.20}to{transform:scale(1);opacity:0}}.mu-button.ripple::after{content:'';position:absolute;width:100%;height:100%;border-radius:50%;background:currentColor;transform:scale(0);animation:md-ripple var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-standard);pointer-events:none}.mu-button.is-loading{color:transparent}.mu-button.is-loading::after{content:'';position:absolute;width:20px;height:20px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin 0.75s linear infinite}.mu-input{position:relative;display:block;width:100%}.mu-input__label{position:absolute;left:16px;top:50%;transform:translateY(-50%) scale(1);transform-origin:left center;font-size:16px;color:var(--md-sys-color-on-surface-variant);pointer-events:none;transition:top var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-emphasized),transform var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-emphasized),color var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-standard);z-index:1}.mu-input:focus-within .mu-input__label,.mu-input.has-value .mu-input__label{top:6px;transform:translateY(0) scale(0.75)}.mu-input:focus-within .mu-input__label{color:var(--md-sys-color-primary)}.mu-input--outlined .mu-input__label{background:var(--md-sys-color-surface,#fff);padding:0 4px;margin-left:-4px}.mu-input:has(.mu-input__label) .mu-input__field{padding-top:24px;padding-bottom:8px}.mu-input::after{content:'';position:absolute;bottom:0;left:50%;width:0;height:2px;background:var(--md-sys-color-primary);transition:width var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized),left var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized)}.mu-input.is-focused::after,.mu-input:focus-within::after{width:100%;left:0}.mu-input__field{display:block;width:100%;height:56px;padding:16px;font-family:var(--md-sys-typescale-font);font-size:var(--md-sys-typescale-body-large-size);line-height:var(--md-sys-typescale-body-large-line-height);color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface-container-highest);border:none;border-bottom:1px solid var(--md-sys-color-on-surface-variant);border-radius:var(--md-sys-shape-corner-extra-small) var(--md-sys-shape-corner-extra-small) 0 0;caret-color:var(--md-sys-color-primary);transition:background-color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard),border-color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.mu-input__field::placeholder{color:var(--md-sys-color-on-surface-variant);transition:opacity var(--md-sys-motion-duration-short2)}.mu-input__field:focus::placeholder{opacity:0.6}.mu-input__field:hover:not(:disabled):not(:focus){background:color-mix(in srgb,var(--md-sys-color-surface-container-highest) 95%,var(--md-sys-color-on-surface) 5%);border-bottom-color:var(--md-sys-color-on-surface)}.mu-input--outlined:has(.mu-input__field:hover:not(:disabled):not(:focus)) .mu-input__label{background:color-mix(in srgb,var(--md-sys-color-surface-container-highest) 95%,var(--md-sys-color-on-surface) 5%)}.mu-input__field:focus{outline:none;border-bottom-color:transparent}.mu-input--sm .mu-input__field{height:40px;padding:8px 12px;font-size:var(--md-sys-typescale-body-medium-size)}.mu-input--md .mu-input__field{height:56px;padding:16px}.mu-input--lg .mu-input__field{height:64px;padding:20px;font-size:18px}.mu-input--filled .mu-input__field{background:var(--md-sys-color-surface-container-highest)}.mu-input--outlined .mu-input__field{height:56px;padding:16px;background:transparent;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-extra-small);transition:border-color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard),box-shadow var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.mu-input--outlined .mu-input__field:hover:not(:disabled):not(:focus){border-color:var(--md-sys-color-on-surface)}.mu-input--outlined .mu-input__field:focus{border-color:var(--md-sys-color-primary);box-shadow:inset 0 0 0 1px var(--md-sys-color-primary);outline:none}.mu-input--outlined::after{display:none}.mu-input.is-disabled .mu-input__field,.mu-input__field:disabled{color:color-mix(in srgb,var(--md-sys-color-on-surface) 38%,transparent);background:color-mix(in srgb,var(--md-sys-color-on-surface) 4%,transparent);border-bottom-color:color-mix(in srgb,var(--md-sys-color-on-surface) 12%,transparent);cursor:not-allowed}.mu-input__field[type="number"]::-webkit-inner-spin-button,.mu-input__field[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.mu-input__field[type="number"]{-moz-appearance:textfield;appearance:textfield}.mu-card{display:block;border-radius:var(--md-sys-shape-corner-medium);overflow:hidden;padding:20px}.mu-card--flat,.mu-card--filled{background:var(--md-sys-color-surface-container-highest);box-shadow:none}.mu-card--elevated{background:var(--md-sys-color-surface-container-low);box-shadow:var(--md-sys-elevation-level1);transition:transform var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.mu-card--elevated:hover{transform:translateY(-2px)}.mu-card--outlined{background:var(--md-sys-color-surface);border:1px solid var(--md-sys-color-outline-variant);box-shadow:none}.mu-card--padding-none{padding:0}.mu-card--padding-sm{padding:12px}.mu-card--padding-md{padding:20px}.mu-card--padding-lg{padding:28px}.mu-card--radius-none{border-radius:0}.mu-card--radius-sm{border-radius:var(--md-sys-shape-corner-small)}.mu-card--radius-md{border-radius:var(--md-sys-shape-corner-medium)}.mu-card--radius-lg{border-radius:var(--md-sys-shape-corner-large)}.mu-card--radius-full{border-radius:var(--md-sys-shape-corner-full)}.mu-card--clickable{cursor:pointer;position:relative}.mu-card--clickable::before{content:'';position:absolute;inset:0;border-radius:inherit;background:var(--md-sys-color-on-surface);opacity:0;transition:opacity var(--md-sys-motion-duration-short2);pointer-events:none}.mu-card--clickable:hover::before{opacity:var(--md-sys-state-hover-opacity)}.mu-card--clickable:active::before{opacity:var(--md-sys-state-pressed-opacity)}.mu-card__header{padding:16px;padding-bottom:0}.mu-card__body{padding:16px}.mu-card__footer{padding:16px;padding-top:0}.mu-card h3{margin:0 0 8px;font-size:var(--md-sys-typescale-title-medium-size);font-weight:var(--md-sys-typescale-title-medium-weight)}.mu-card p{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:var(--md-sys-typescale-body-medium-size)}mu-stack{display:flex;flex-direction:column;gap:var(--md-sys-spacing-md,16px)}mu-stack[direction="row"]{flex-direction:row}mu-stack[direction="column"]{flex-direction:column}mu-stack[direction="row-reverse"]{flex-direction:row-reverse}mu-stack[direction="column-reverse"]{flex-direction:column-reverse}mu-stack[gap="none"]{gap:0}mu-stack[gap="xs"]{gap:var(--md-sys-spacing-xs,4px)}mu-stack[gap="sm"]{gap:var(--md-sys-spacing-sm,8px)}mu-stack[gap="md"]{gap:var(--md-sys-spacing-md,16px)}mu-stack[gap="lg"]{gap:var(--md-sys-spacing-lg,24px)}mu-stack[gap="xl"]{gap:var(--md-sys-spacing-xl,32px)}mu-stack[align="start"]{align-items:flex-start}mu-stack[align="center"]{align-items:center}mu-stack[align="end"]{align-items:flex-end}mu-stack[align="stretch"]{align-items:stretch}mu-stack[justify="start"]{justify-content:flex-start}mu-stack[justify="center"]{justify-content:center}mu-stack[justify="end"]{justify-content:flex-end}mu-stack[justify="between"]{justify-content:space-between}mu-stack[wrap]{flex-wrap:wrap}mu-grid{display:grid;gap:var(--md-sys-spacing-md,16px)}mu-grid[cols="1"]{grid-template-columns:repeat(1,1fr)}mu-grid[cols="2"]{grid-template-columns:repeat(2,1fr)}mu-grid[cols="3"]{grid-template-columns:repeat(3,1fr)}mu-grid[cols="4"]{grid-template-columns:repeat(4,1fr)}mu-grid[cols="6"]{grid-template-columns:repeat(6,1fr)}mu-grid[cols="12"]{grid-template-columns:repeat(12,1fr)}mu-grid[gap="none"]{gap:0}mu-grid[gap="xs"]{gap:var(--md-sys-spacing-xs,4px)}mu-grid[gap="sm"]{gap:var(--md-sys-spacing-sm,8px)}mu-grid[gap="md"]{gap:var(--md-sys-spacing-md,16px)}mu-grid[gap="lg"]{gap:var(--md-sys-spacing-lg,24px)}mu-grid[gap="xl"]{gap:var(--md-sys-spacing-xl,32px)}@media (max-width:599px){mu-grid[cols="2"],mu-grid[cols="3"],mu-grid[cols="4"],mu-grid[cols="6"]{grid-template-columns:1fr !important}}.mu-stack{display:flex}.mu-stack--row{flex-direction:row}.mu-stack--column{flex-direction:column}.mu-stack--row-reverse{flex-direction:row-reverse}.mu-stack--column-reverse{flex-direction:column-reverse}.mu-stack--gap-0{gap:0}.mu-stack--gap-1{gap:4px}.mu-stack--gap-2{gap:8px}.mu-stack--gap-3{gap:12px}.mu-stack--gap-4{gap:16px}.mu-stack--gap-5{gap:20px}.mu-stack--gap-6{gap:24px}.mu-stack--gap-8{gap:32px}.mu-stack--gap-10{gap:40px}.mu-stack--gap-12{gap:48px}.mu-stack--gap-16{gap:64px}.mu-stack--align-start{align-items:flex-start}.mu-stack--align-center{align-items:center}.mu-stack--align-end{align-items:flex-end}.mu-stack--align-stretch{align-items:stretch}.mu-stack--align-baseline{align-items:baseline}.mu-stack--justify-start{justify-content:flex-start}.mu-stack--justify-center{justify-content:center}.mu-stack--justify-end{justify-content:flex-end}.mu-stack--justify-between{justify-content:space-between}.mu-stack--justify-around{justify-content:space-around}.mu-stack--justify-evenly{justify-content:space-evenly}.mu-stack--wrap{flex-wrap:wrap}.mu-alert,mu-alert{display:flex;align-items:center;gap:12px;padding:16px;border-radius:var(--md-sys-shape-corner-medium,12px);font-size:var(--md-sys-typescale-body-medium-size,14px);line-height:var(--md-sys-typescale-body-medium-line-height,20px);border:1px solid transparent}.mu-alert--info,mu-alert[severity="info"]{background:var(--md-sys-color-surface-container-high,#E6E0E9);color:var(--md-sys-color-on-surface,#1D1B20);border-color:var(--md-sys-color-outline-variant,#CAC4D0)}.mu-alert--info .mu-alert__icon,mu-alert[severity="info"] mu-icon{color:var(--md-sys-color-primary,#6750A4)}.mu-alert--success,mu-alert[severity="success"]{background:var(--md-sys-color-success-container,#C8E6C9);color:var(--md-sys-color-on-success-container,#1B5E20);border-color:var(--md-sys-color-success,#2E7D32)}.mu-alert--success .mu-alert__icon,mu-alert[severity="success"] mu-icon{color:var(--md-sys-color-success,#2E7D32)}.mu-alert--warning,mu-alert[severity="warning"]{background:var(--md-sys-color-warning-container,#FFF3E0);color:var(--md-sys-color-on-warning-container,#5D4037);border-color:var(--md-sys-color-warning,#FF9800)}.mu-alert--warning .mu-alert__icon,mu-alert[severity="warning"] mu-icon{color:var(--md-sys-color-warning,#FF9800)}.mu-alert--error,mu-alert[severity="error"]{background:var(--md-sys-color-error-container,#F9DEDC);color:var(--md-sys-color-on-error-container,#410E0B);border-color:var(--md-sys-color-error,#B3261E)}.mu-alert--error .mu-alert__icon,mu-alert[severity="error"] mu-icon{color:var(--md-sys-color-error,#B3261E)}.mu-alert__icon,mu-alert mu-icon:first-child{flex-shrink:0;display:flex;align-items:center;justify-content:center}.mu-alert__content{flex:1;min-width:0}.mu-alert__title{display:block;font-weight:var(--md-sys-typescale-title-small-weight,500);margin-bottom:4px}.mu-alert__close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;margin:-8px -8px -8px 0;background:transparent;border:none;border-radius:var(--md-sys-shape-corner-full,50%);cursor:pointer;color:currentColor;opacity:0.7;transition:opacity 0.2s,background 0.2s}.mu-alert__close:hover{opacity:1;background:var(--md-sys-color-on-surface-variant,rgba(0,0,0,0.08))}.mu-alert__close:focus-visible{outline:2px solid var(--md-sys-color-primary,#6750A4);outline-offset:2px}.mu-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;font-family:var(--md-sys-typescale-font);font-size:var(--md-sys-typescale-label-small-size);font-weight:var(--md-sys-typescale-label-small-weight);line-height:1;border-radius:var(--md-sys-shape-corner-full)}.mu-badge--sm{min-width:16px;height:16px;font-size:10px}.mu-badge--md{min-width:20px;height:20px;padding:0 6px}.mu-badge--lg{min-width:24px;height:24px;padding:0 8px;font-size:13px}.mu-badge--primary{background:var(--md-sys-color-error);color:var(--md-sys-color-on-error)}.mu-badge--secondary{background:var(--md-sys-color-secondary);color:var(--md-sys-color-on-secondary)}.mu-badge--success{background:#1B5E20;color:white}.mu-badge--warning{background:#E65100;color:white}.mu-badge--error{background:var(--md-sys-color-error);color:var(--md-sys-color-on-error)}.mu-badge--neutral{background:var(--md-sys-color-surface-container-highest);color:var(--md-sys-color-on-surface)}.mu-badge--dot{min-width:6px;width:6px;height:6px;padding:0}.mu-skeleton{display:block;background:var(--md-sys-color-surface-container-highest);border-radius:var(--md-sys-shape-corner-extra-small);animation:mu-skeleton-pulse var(--md-sys-motion-duration-extra-long4) var(--md-sys-motion-easing-standard) infinite}.mu-skeleton--circle{border-radius:50%}.mu-skeleton--text{height:16px;margin-bottom:8px}.mu-skeleton--text:last-child{width:70%}.mu-skeleton__line{height:16px;margin-bottom:8px;background:var(--md-sys-color-surface-container-highest);border-radius:var(--md-sys-shape-corner-extra-small);animation:mu-skeleton-pulse var(--md-sys-motion-duration-extra-long4) var(--md-sys-motion-easing-standard) infinite}@keyframes mu-skeleton-pulse{0%,100%{opacity:1}50%{opacity:0.4}}.mu-spinner{display:inline-block}.mu-spinner__circle{display:block;border:3px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin var(--md-sys-motion-duration-extra-long1) linear infinite}.mu-spinner--xs .mu-spinner__circle{width:16px;height:16px;border-width:2px}.mu-spinner--sm .mu-spinner__circle{width:20px;height:20px;border-width:2px}.mu-spinner--md .mu-spinner__circle{width:48px;height:48px;border-width:4px}.mu-spinner--lg .mu-spinner__circle{width:40px;height:40px;border-width:4px}.mu-spinner--xl .mu-spinner__circle{width:48px;height:48px;border-width:4px}.mu-spinner--primary{color:var(--md-sys-color-primary)}.mu-spinner--secondary{color:var(--md-sys-color-secondary)}.mu-spinner--current{color:currentColor}.mu-spinner--white{color:white}.mu-progress{position:relative;width:100%;height:8px;background:var(--md-sys-color-surface-container-highest);border-radius:4px;overflow:hidden}.mu-progress--sm{height:4px;border-radius:2px}.mu-progress--md{height:8px;border-radius:4px}.mu-progress--lg{height:12px;border-radius:6px}.mu-progress__bar{display:block;height:100%;background:var(--md-sys-color-primary);border-radius:inherit;transition:width var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-standard)}.mu-progress--success .mu-progress__bar{background:#1B5E20}.mu-progress--warning .mu-progress__bar{background:#E65100}.mu-progress--error .mu-progress__bar{background:var(--md-sys-color-error)}.mu-progress[indeterminate] .mu-progress__bar{width:50% !important;animation:mu-progress-indeterminate 1.5s infinite ease-in-out}@keyframes mu-progress-indeterminate{0%{transform:translateX(-100%)}100%{transform:translateX(300%)}}.mu-progress__label{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:var(--md-sys-typescale-label-small-size);color:var(--md-sys-color-on-surface)}.mu-tabs{display:block;width:100%;position:relative;margin-bottom:24px}.mu-tabs__list{display:flex;position:relative;border-bottom:1px solid var(--md-sys-color-surface-variant)}.mu-tabs__tab{position:relative;display:flex;align-items:center;justify-content:center;flex:1;min-width:90px;height:48px;padding:0 16px;background:transparent;border:none;font-family:var(--md-sys-typescale-font);font-size:var(--md-sys-typescale-title-small-size);font-weight:var(--md-sys-typescale-title-small-weight);color:var(--md-sys-color-on-surface-variant);cursor:pointer;overflow:hidden;transition:color var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard),background-color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.mu-tabs__tab::before{content:'';position:absolute;inset:0;background:var(--md-sys-color-primary);opacity:0;transition:opacity var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.mu-tabs__tab:hover::before{opacity:var(--md-sys-state-hover-opacity)}.mu-tabs__tab:active::before{opacity:var(--md-sys-state-pressed-opacity)}.mu-tabs__tab.is-active{color:var(--md-sys-color-primary)}.mu-tabs__tab::after{display:none}.mu-tabs__list::after{content:'';position:absolute;bottom:0;height:3px;background:var(--md-sys-color-primary);border-radius:3px 3px 0 0;width:var(--indicator-width,33.3333%);left:var(--indicator-left,0);transition:left var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-emphasized),width var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-emphasized)}.mu-tabs__indicator{display:none}.mu-tabs__panel,mu-tab-panel{display:block;padding:16px 0;animation:fadeIn var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard)}mu-tab-panel:not([active]),.mu-tab-panel:not(.active),.doc-tab-content:not(:first-of-type){display:none}.mu-tabs--pills .mu-tabs__list{border-bottom:none;gap:8px;padding:4px;background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-full);width:fit-content}.mu-tabs--pills .mu-tabs__tab{flex:none;height:36px;min-width:auto;border-radius:var(--md-sys-shape-corner-full);transition:color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard),background-color var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized)}.mu-tabs--pills .mu-tabs__indicator{display:none}.mu-tabs--pills .mu-tabs__tab.is-active{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.mu-tabs--underline .mu-tabs__indicator{height:2px}.mu-dropdown{position:relative;display:inline-block}.mu-dropdown__trigger{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:200px;height:56px;padding:0 16px;background:var(--md-sys-color-surface);border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-extra-small);font-family:var(--md-sys-typescale-font);font-size:var(--md-sys-typescale-body-large-size);color:var(--md-sys-color-on-surface);cursor:pointer;overflow:hidden;transition:border-color var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-standard),background-color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.mu-dropdown__trigger::before{content:'';position:absolute;inset:0;background:var(--md-sys-color-on-surface);opacity:0;transition:opacity var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard);pointer-events:none;border-radius:inherit}.mu-dropdown__trigger:hover::before{opacity:var(--md-sys-state-hover-opacity,0.08)}.mu-dropdown__trigger:active::before{opacity:var(--md-sys-state-pressed-opacity,0.12)}.mu-dropdown__trigger:focus-visible{outline:none;border-color:var(--md-sys-color-primary);border-width:2px}.mu-dropdown__trigger:disabled{opacity:0.38;cursor:not-allowed;background:var(--md-sys-color-surface-container)}.mu-dropdown__trigger:disabled::before{display:none}.mu-dropdown__arrow{flex-shrink:0;color:var(--md-sys-color-on-surface-variant);transition:transform var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized)}.mu-dropdown.is-open .mu-dropdown__arrow{transform:rotate(180deg)}.mu-dropdown.is-open .mu-dropdown__trigger{border-color:var(--md-sys-color-primary);border-width:2px}.mu-dropdown__menu{position:fixed;min-width:160px;max-height:280px;overflow-y:auto;padding:8px 0;margin:0;background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-extra-small);box-shadow:var(--md-sys-elevation-level2);list-style:none;border:none;inset:unset;opacity:0;visibility:hidden;transform:scaleY(0.92) translateY(-8px);transform-origin:top center;transition:opacity var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized-decelerate),visibility var(--md-sys-motion-duration-short4),transform var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized-decelerate);pointer-events:none}.mu-dropdown__menu:popover-open{opacity:1;visibility:visible;transform:scaleY(1) translateY(0);pointer-events:auto}.mu-dropdown__menu.is-open{opacity:1 !important;visibility:visible !important;transform:scaleY(1) translateY(0);pointer-events:auto}.mu-dropdown__item,.mu-dropdown__option{position:relative;display:flex;align-items:center;height:48px;padding:0 16px;font-size:var(--md-sys-typescale-body-large-size);color:var(--md-sys-color-on-surface);cursor:pointer;overflow:hidden;transition:background var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.mu-dropdown__item::before,.mu-dropdown__option::before{content:'';position:absolute;inset:0;background:var(--md-sys-color-on-surface);opacity:0;transition:opacity var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard);pointer-events:none}.mu-dropdown__item:hover::before,.mu-dropdown__option:hover::before{opacity:var(--md-sys-state-hover-opacity,0.08)}.mu-dropdown__item:active::before,.mu-dropdown__option:active::before{opacity:var(--md-sys-state-pressed-opacity,0.12)}.mu-dropdown__item:focus-visible,.mu-dropdown__option:focus-visible{outline:none}.mu-dropdown__item:focus-visible::before,.mu-dropdown__option:focus-visible::before{opacity:var(--md-sys-state-focus-opacity,0.12)}.mu-dropdown__item.is-selected,.mu-dropdown__option.is-active{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.mu-dropdown__item.is-selected::before,.mu-dropdown__option.is-active::before{background:var(--md-sys-color-on-secondary-container)}.mu-toast-container{position:fixed;z-index:9999;padding:24px;display:flex;flex-direction:column;gap:8px;pointer-events:none;max-width:100%;bottom:0;left:50%;transform:translateX(-50%);align-items:center}.mu-toast-container[position="bottom-center"]{bottom:0;left:50%;transform:translateX(-50%);align-items:center}.mu-toast-container[position="top-center"]{top:0;left:50%;transform:translateX(-50%);flex-direction:column-reverse;align-items:center}.mu-toast-container[position="top-right"]{top:0;right:0;left:auto;transform:none;flex-direction:column-reverse;align-items:flex-end}.mu-toast-container[position="top-left"]{top:0;left:0;right:auto;transform:none;flex-direction:column-reverse;align-items:flex-start}.mu-toast-container[position="bottom-right"]{bottom:0;right:0;left:auto;transform:none;align-items:flex-end}.mu-toast-container[position="bottom-left"]{bottom:0;left:0;right:auto;transform:none;align-items:flex-start}.mu-toast{position:relative;pointer-events:auto;display:flex;align-items:center;gap:12px;min-height:48px;padding:14px 16px;background:var(--md-sys-color-inverse-surface);color:var(--md-sys-color-inverse-on-surface);border-radius:var(--md-sys-shape-corner-extra-small);box-shadow:var(--md-sys-elevation-level3);font-size:var(--md-sys-typescale-body-medium-size);min-width:288px;max-width:560px;animation:toastEnter 0.3s cubic-bezier(0.2,0,0,1) forwards}@keyframes toastEnter{from{opacity:0;transform:scale(0.9)}to{opacity:1;transform:scale(1)}}.mu-toast.is-exiting{animation:toastExit 0.2s cubic-bezier(0.4,0,1,1) forwards}@keyframes toastExit{to{opacity:0;transform:scale(0.9)}}.mu-toast--info,.mu-toast--success,.mu-toast--warning,.mu-toast--error{border-left:none}.mu-toast__icon{font-size:24px}.mu-toast__content{flex:1}.mu-toast__title{display:block;font-weight:500;margin-bottom:4px}.mu-toast__close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;border-radius:var(--md-sys-shape-corner-full);color:var(--md-sys-color-inverse-primary);cursor:pointer}.mu-toast__close:hover{background:rgba(255,255,255,0.08)}.mu-tooltip{position:relative;display:inline-block;cursor:pointer}.mu-tooltip__content{position:absolute;padding:8px 12px;background:var(--md-sys-color-inverse-surface);color:var(--md-sys-color-inverse-on-surface);font-family:var(--md-sys-typescale-font);font-size:var(--md-sys-typescale-body-small-size);line-height:var(--md-sys-typescale-body-small-line-height);border-radius:var(--md-sys-shape-corner-extra-small);white-space:nowrap;z-index:var(--mu-z-tooltip);pointer-events:none;opacity:0;visibility:hidden;transform:translateX(-50%) scale(0.9);transition:opacity var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-standard),visibility var(--md-sys-motion-duration-short3),transform var(--md-sys-motion-duration-short3) var(--md-sys-motion-easing-emphasized)}.mu-tooltip:hover .mu-tooltip__content,.mu-tooltip:focus-within .mu-tooltip__content{opacity:1;visibility:visible;transform:translateX(-50%) scale(1)}.mu-tooltip--top .mu-tooltip__content{bottom:100%;left:50%;transform:translateX(-50%) translateY(4px) scale(0.9);margin-bottom:8px}.mu-tooltip--top:hover .mu-tooltip__content{transform:translateX(-50%) translateY(0) scale(1)}.mu-tooltip--bottom .mu-tooltip__content{top:100%;left:50%;transform:translateX(-50%) translateY(-4px) scale(0.9);margin-top:8px}.mu-tooltip--bottom:hover .mu-tooltip__content{transform:translateX(-50%) translateY(0) scale(1)}.mu-tooltip--left .mu-tooltip__content{right:100%;top:50%;transform:translateY(-50%) translateX(4px) scale(0.9);margin-right:8px}.mu-tooltip--left:hover .mu-tooltip__content{transform:translateY(-50%) translateX(0) scale(1)}.mu-tooltip--right .mu-tooltip__content{left:100%;top:50%;transform:translateY(-50%) translateX(-4px) scale(0.9);margin-left:8px}.mu-tooltip--right:hover .mu-tooltip__content{transform:translateY(-50%) translateX(0) scale(1)}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes slideUp{from{opacity:0;transform:translateY(16px) scale(0.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes slideDown{from{opacity:0;transform:translateY(-16px) scale(0.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes slideInRight{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slideInLeft{from{transform:translateX(-100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes scaleIn{from{opacity:0;transform:scale(0.85)}to{opacity:1;transform:scale(1)}}@keyframes ripple{from{transform:scale(0);opacity:0.4}to{transform:scale(4);opacity:0}}.mu-button::after{content:'';position:absolute;inset:0;background:radial-gradient(circle,currentColor 10%,transparent 10.01%);transform:scale(10,10);opacity:0;transition:transform 0.3s,opacity 0.5s}.mu-button:active::after{transform:scale(0,0);opacity:0.2;transition:0s}.mu-modal{display:contents}dialog.mu-modal__dialog{border:none;padding:24px;margin:auto;background:var(--md-sys-color-surface-container-high,var(--md-sys-color-surface));border-radius:var(--md-sys-shape-corner-extra-large,28px);width:fit-content;min-width:280px;max-width:min(560px,calc(100vw - 96px));max-height:min(560px,calc(100vh - 96px));overflow-y:auto;box-shadow:var(--md-sys-elevation-3);color:var(--md-sys-color-on-surface);transform:scale(0.9);opacity:0;transition:transform var(--md-sys-motion-duration-medium3,300ms) var(--md-sys-motion-easing-emphasized-decelerate,cubic-bezier(0.05,0.7,0.1,1)),opacity var(--md-sys-motion-duration-medium2,200ms) var(--md-sys-motion-easing-standard,cubic-bezier(0.2,0,0,1))}dialog.mu-modal__dialog::backdrop{background:rgba(0,0,0,0.32);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:0;transition:opacity var(--md-sys-motion-duration-medium2,200ms) var(--md-sys-motion-easing-standard,cubic-bezier(0.2,0,0,1))}.mu-modal.is-visible dialog.mu-modal__dialog{transform:scale(1);opacity:1}.mu-modal.is-visible dialog.mu-modal__dialog::backdrop{opacity:1}dialog.mu-modal__dialog[open]{display:flex;flex-direction:column}.mu-modal__close{position:absolute;top:12px;right:12px;width:40px;height:40px;border:none;background:transparent;border-radius:50%;font-size:20px;cursor:pointer;color:var(--md-sys-color-on-surface-variant);transition:background-color var(--md-sys-motion-duration-short2)}.mu-modal__close:hover{background:var(--md-sys-color-on-surface-variant-opacity-08,rgba(0,0,0,0.08))}.mu-modal__body{color:var(--md-sys-color-on-surface)}dialog.mu-modal__dialog.mu-modal--sm{max-width:400px}dialog.mu-modal__dialog.mu-modal--lg{max-width:720px}dialog.mu-modal__dialog.mu-modal--xl{max-width:900px}dialog.mu-modal__dialog.mu-modal--full{width:95vw;max-width:95vw;height:95vh;max-height:95vh}.mu-modal__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;font-size:var(--md-sys-typescale-headline-small-size,24px);font-weight:var(--md-sys-typescale-headline-small-weight,400);line-height:var(--md-sys-typescale-headline-small-line-height,32px);color:var(--md-sys-color-on-surface)}.mu-modal__footer{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.mu-button:focus-visible,.mu-tabs__tab:focus-visible,.mu-dropdown__trigger:focus-visible,.mu-input:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.mu-card,.mu-alert,.mu-badge,.mu-progress__bar{transition:transform var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard),opacity var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard),box-shadow var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard)}.mu-button,.mu-tabs__tab,.mu-dropdown__item{transition:background-color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard),box-shadow var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard),transform var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.mu-button:active:not(:disabled){transform:scale(0.98)}.mu-tabs__tab:active,.mu-dropdown__item:active{transform:scale(0.98)}.mu-theme-toggle{display:inline-flex}.mu-theme-toggle__button{position:relative;display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:linear-gradient(135deg,var(--md-sys-color-primary-container) 0%,var(--md-sys-color-secondary-container) 100%);border:2px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-full);cursor:pointer;overflow:hidden;transition:transform var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-emphasized),box-shadow var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard),border-color var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard)}.mu-theme-toggle__button:hover{transform:scale(1.1);box-shadow:0 4px 16px rgba(0,0,0,0.2),0 0 24px var(--md-sys-color-primary);border-color:var(--md-sys-color-primary)}.mu-theme-toggle__button:active{transform:scale(0.95)}.mu-theme-toggle__icon{font-size:22px;transition:transform var(--md-sys-motion-duration-medium3) var(--md-sys-motion-easing-emphasized-decelerate);filter:drop-shadow(0 2px 4px rgba(0,0,0,0.3))}.mu-theme-toggle__button:hover .mu-theme-toggle__icon{transform:rotate(20deg) scale(1.1)}[data-theme="dark"] .mu-theme-toggle__button{background:linear-gradient(135deg,rgba(255,200,50,0.15) 0%,rgba(255,150,0,0.1) 100%);border-color:rgba(255,200,50,0.3)}[data-theme="dark"] .mu-theme-toggle__button:hover{box-shadow:0 4px 16px rgba(0,0,0,0.4),0 0 32px rgba(255,200,50,0.4);border-color:rgba(255,200,50,0.6)}[data-theme="light"] .mu-theme-toggle__button{background:linear-gradient(135deg,rgba(100,100,200,0.1) 0%,rgba(50,50,150,0.05) 100%)}[data-theme="light"] .mu-theme-toggle__button:hover{box-shadow:0 4px 16px rgba(0,0,0,0.15),0 0 24px rgba(100,100,200,0.3)}.mu-navbar__links{display:flex;align-items:center;gap:4px;margin-left:24px}.mu-navbar__links a{position:relative;display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 16px;border-radius:var(--md-sys-shape-corner-full);color:var(--md-sys-color-on-surface-variant);text-decoration:none;font-family:var(--md-sys-typescale-font);font-size:var(--md-sys-typescale-label-large-size);font-weight:var(--md-sys-typescale-label-large-weight);overflow:hidden;cursor:pointer;transition:color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.mu-navbar__links a::before{content:'';position:absolute;inset:0;border-radius:inherit;background:var(--md-sys-color-on-surface);opacity:0;transition:opacity var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard);pointer-events:none}.mu-navbar__links a:hover{color:var(--md-sys-color-on-surface)}.mu-navbar__links a:hover::before{opacity:var(--md-sys-state-hover-opacity)}.mu-navbar__links a:focus-visible{outline:none}.mu-navbar__links a:focus-visible::before{opacity:var(--md-sys-state-focus-opacity)}.mu-navbar__links a:focus-visible::after{content:'';position:absolute;inset:-2px;border:2px solid var(--md-sys-color-primary);border-radius:calc(var(--md-sys-shape-corner-full)+2px);pointer-events:none}.mu-navbar__links a:active::before{opacity:var(--md-sys-state-pressed-opacity)}.mu-navbar__links a.active,.mu-navbar__links a[aria-current="page"]{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.mu-navbar__links a.active::before,.mu-navbar__links a[aria-current="page"]::before{background:var(--md-sys-color-on-secondary-container)}mu-confirm{display:none;position:fixed;inset:0;z-index:1000}mu-confirm.is-open{display:flex;align-items:center;justify-content:center}.mu-confirm__overlay{position:absolute;inset:0;background:rgba(0,0,0,0.32);opacity:0;transition:opacity 200ms var(--md-sys-motion-easing-standard)}mu-confirm.is-visible .mu-confirm__overlay{opacity:1}.mu-confirm__dialog{position:relative;min-width:280px;max-width:400px;background:var(--md-sys-color-surface);border-radius:var(--md-sys-shape-corner-extra-large);box-shadow:var(--md-sys-elevation-level3);padding:24px;transform:scale(0.9);opacity:0;transition:transform 250ms var(--md-sys-motion-easing-emphasized),opacity 150ms var(--md-sys-motion-easing-standard)}mu-confirm.is-visible .mu-confirm__dialog{transform:scale(1);opacity:1}.mu-confirm__title{margin:0 0 16px;font-size:var(--md-sys-typescale-headline-small-size);font-weight:var(--md-sys-typescale-headline-small-weight);color:var(--md-sys-color-on-surface)}.mu-confirm__message{margin:0 0 24px;font-size:var(--md-sys-typescale-body-medium-size);color:var(--md-sys-color-on-surface-variant);line-height:1.5}.mu-confirm__actions{display:flex;justify-content:flex-end;gap:8px}mu-fetch{display:block}.mu-fetch__loading{display:flex;align-items:center;justify-content:center;min-height:100px}.mu-fetch__error{margin:16px 0}.mu-fetch__empty{display:flex;align-items:center;justify-content:center;min-height:100px;color:var(--md-sys-color-on-surface-variant)}.mu-fetch__data{display:block}.page{display:none}.page.active{display:block}.page-title{font-size:var(--md-sys-typescale-headline-medium-size,28px);line-height:var(--md-sys-typescale-headline-medium-line-height,36px);margin-bottom:8px}.page-subtitle{color:var(--md-sys-color-on-surface-variant);margin-bottom:32px;line-height:1.5}.component-section{background:var(--md-sys-color-surface-container);padding:24px;border-radius:var(--md-sys-shape-corner-large,16px);margin-bottom:24px}.section-title{font-size:var(--md-sys-typescale-title-medium-size,16px);font-weight:var(--md-sys-typescale-title-medium-weight,500);margin-top:32px;margin-bottom:16px}.section-title:first-child,.component-section>.section-title:first-child{margin-top:0}.demo-row{display:flex;gap:16px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.demo-label{font-size:var(--md-sys-typescale-label-small-size,11px);color:var(--md-sys-color-on-surface-variant);margin-bottom:8px;width:100%}.code-block{background:var(--md-sys-color-surface-container-highest);padding:16px;border-radius:var(--md-sys-shape-corner-medium,12px);font-family:'Fira Code','Cascadia Code','SF Mono',Consolas,monospace;font-size:13px;overflow-x:auto;margin-top:16px}.doc-tab-content{display:none}.doc-tab-content:first-of-type,.doc-tab-content.active{display:block}mu-drawer-item,mu-nav-item{display:block}.mu-drawer-item-link{display:flex;align-items:center;gap:12px;padding:0 24px 0 16px;min-height:56px;width:100%;border:none;background:transparent;color:var(--md-sys-color-on-surface-variant);text-decoration:none;cursor:pointer;border-radius:28px;font-family:var(--md-sys-typescale-font);font-size:var(--md-sys-typescale-label-large-size,14px);font-weight:var(--md-sys-typescale-label-large-weight,500);line-height:var(--md-sys-typescale-label-large-line-height,20px);transition:background-color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard),color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard);position:relative;box-sizing:border-box}mu-drawer-item[layout="vertical"] .mu-drawer-item-link,mu-nav-item .mu-drawer-item-link{flex-direction:column;justify-content:center;gap:4px;padding:12px 16px;border-radius:var(--md-sys-shape-corner-large)}.mu-drawer-item-link:hover:not([disabled]):not([aria-disabled="true"]){background:color-mix(in srgb,var(--md-sys-color-on-surface) calc(var(--md-sys-state-hover-opacity,0.08) * 100%),transparent)}.mu-drawer-item-link:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.mu-drawer-item-link:active:not([disabled]):not([aria-disabled="true"]){background:color-mix(in srgb,var(--md-sys-color-on-surface) calc(var(--md-sys-state-pressed-opacity,0.12) * 100%),transparent)}mu-drawer-item[active] .mu-drawer-item-link{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}mu-drawer-item[active] .mu-drawer-item-link:hover{background:color-mix(in srgb,var(--md-sys-color-on-secondary-container) calc(var(--md-sys-state-hover-opacity,0.08) * 100%),var(--md-sys-color-secondary-container))}mu-drawer-item[layout="vertical"][active] .mu-drawer-item-link,mu-nav-item[active] .mu-drawer-item-link{background:transparent;color:var(--md-sys-color-on-secondary-container)}mu-drawer-item[layout="vertical"][active] .mu-drawer-item-icon,mu-nav-item[active] .mu-drawer-item-icon{background:var(--md-sys-color-secondary-container)}.mu-drawer-item-link[disabled],.mu-drawer-item-link[aria-disabled="true"]{opacity:0.38;cursor:not-allowed}.mu-drawer-item-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;position:relative;transition:background-color var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}mu-drawer-item[layout="vertical"] .mu-drawer-item-icon,mu-nav-item .mu-drawer-item-icon{width:56px;height:32px;border-radius:var(--md-sys-shape-corner-full)}.mu-drawer-item-icon mu-icon{display:flex;align-items:center;justify-content:center}.mu-drawer-item-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}mu-drawer-item[layout="vertical"] .mu-drawer-item-label,mu-nav-item .mu-drawer-item-label{flex:none;text-align:center;font-size:var(--md-sys-typescale-label-medium-size,12px);font-weight:var(--md-sys-typescale-label-medium-weight,500)}mu-drawer-item[hide-label] .mu-drawer-item-label{display:none}mu-drawer-item[hide-label] .mu-drawer-item-link{width:auto;padding:12px;min-width:48px;min-height:48px;border-radius:var(--md-sys-shape-corner-full);background:transparent;justify-content:center}mu-drawer-item[hide-label][active] .mu-drawer-item-link{background:transparent}mu-drawer-item[hide-label][active] .mu-drawer-item-icon{background:var(--md-sys-color-secondary-container);width:56px;height:32px;border-radius:var(--md-sys-shape-corner-full)}mu-drawer-item[hide-label] .mu-drawer-item-link:hover:not([disabled]){background:transparent}mu-drawer-item[hide-label] .mu-drawer-item-icon:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) calc(var(--md-sys-state-hover-opacity,0.08) * 100%),transparent);border-radius:var(--md-sys-shape-corner-full)}.mu-drawer-item-badge{min-width:16px;height:16px;padding:0 4px;border-radius:var(--md-sys-shape-corner-full);background:var(--md-sys-color-error);color:var(--md-sys-color-on-error);font-size:11px;font-weight:500;display:flex;align-items:center;justify-content:center;flex-shrink:0}mu-drawer-item[layout="vertical"] .mu-drawer-item-badge,mu-nav-item .mu-drawer-item-badge{position:absolute;top:0;right:8px}mu-bottom-nav{display:block;position:fixed;bottom:0;left:0;right:0;z-index:var(--mu-z-bottom-nav,150)}.mu-bottom-nav-nav{display:flex;align-items:stretch;justify-content:space-around;height:var(--mu-bottom-nav-height,80px);background:var(--md-sys-color-surface-container);border-top:1px solid var(--md-sys-color-outline-variant);padding:0 8px;padding-bottom:env(safe-area-inset-bottom,0)}.mu-bottom-nav-nav>mu-nav-item,.mu-bottom-nav-nav>mu-drawer-item{flex:1;max-width:120px}mu-layout{display:flex;flex-direction:column;height:100vh;background:var(--md-sys-color-background);color:var(--md-sys-color-on-background);overflow:hidden}.mu-layout-wrapper{display:flex;flex-direction:column;flex:1;height:100vh;overflow:hidden}.mu-layout-header{flex-shrink:0;width:100%;z-index:var(--z-sticky,100)}.mu-layout-body{display:flex;flex:1;overflow:hidden;min-height:0}.mu-layout-drawer{flex-shrink:0;height:100%;overflow-y:auto;overflow-x:hidden}@media (max-width:599px){.mu-layout-drawer{position:fixed;top:0;left:0;height:100vh;z-index:var(--mu-z-drawer,250)}}.mu-layout-main{flex:1;display:flex;flex-direction:column;min-width:0;height:100%;overflow-y:auto}.mu-layout-content{flex:1;padding:16px}mu-layout[has-bottom-nav] .mu-layout-content{padding-bottom:calc(var(--mu-bottom-nav-height,80px)+16px+env(safe-area-inset-bottom,0))}@media (max-width:599px){.mu-layout-content{padding:8px}mu-layout[has-bottom-nav] .mu-layout-content{padding-bottom:calc(var(--mu-bottom-nav-height,80px)+8px+env(safe-area-inset-bottom,0))}}.mu-layout-footer{flex-shrink:0;width:100%}.mu-layout-bottom{}mu-layout.mu-loading .mu-layout-content::before{content:'';position:fixed;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--md-sys-color-primary) 0%,var(--md-sys-color-primary-container) 50%,var(--md-sys-color-primary) 100%);background-size:200% 100%;animation:loading-bar 1.5s ease-in-out infinite;z-index:var(--z-overlay,9999)}@keyframes loading-bar{0%{background-position:200% 0}100%{background-position:-200% 0}}mu-drawer{display:block;position:relative;z-index:var(--mu-z-drawer,250)}.mu-drawer-scrim{position:fixed;inset:0;background:rgba(0,0,0,0.32);opacity:0;visibility:hidden;transition:opacity var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-standard),visibility var(--md-sys-motion-duration-medium2);z-index:var(--mu-z-drawer-scrim,240)}.mu-drawer-scrim.mu-drawer-scrim-visible{opacity:1;visibility:visible}.mu-drawer-nav{display:flex;flex-direction:column;background:var(--md-sys-color-surface-container-low);border-right:1px solid var(--md-sys-color-outline-variant);height:100%;overflow-y:auto;overflow-x:hidden;transition:width var(--md-sys-motion-duration-short3,150ms) var(--md-sys-motion-easing-emphasized-accelerate,cubic-bezier(0.3,0,0.8,0.15)),transform var(--md-sys-motion-duration-short3,150ms) var(--md-sys-motion-easing-emphasized-accelerate,cubic-bezier(0.3,0,0.8,0.15))}mu-drawer[position="end"] .mu-drawer-nav{border-right:none;border-left:1px solid var(--md-sys-color-outline-variant)}.mu-drawer-nav.mu-drawer-mode-expanded{width:var(--mu-drawer-standard-width,256px)}.mu-drawer-nav.mu-drawer-mode-rail{width:var(--mu-drawer-rail-width,80px)}.mu-drawer-nav.mu-drawer-mode-rail.mu-drawer-expanded-hover{width:var(--mu-drawer-standard-width,256px);box-shadow:var(--md-sys-elevation-level2);transition:width var(--md-sys-motion-duration-medium2,300ms) var(--md-sys-motion-easing-emphasized-decelerate,cubic-bezier(0.05,0.7,0.1,1)),transform var(--md-sys-motion-duration-medium2,300ms) var(--md-sys-motion-easing-emphasized-decelerate,cubic-bezier(0.05,0.7,0.1,1)),box-shadow var(--md-sys-motion-duration-medium2,300ms) var(--md-sys-motion-easing-emphasized-decelerate,cubic-bezier(0.05,0.7,0.1,1))}.mu-drawer-nav.mu-drawer-mode-hidden{position:fixed;top:0;left:0;bottom:0;width:var(--mu-drawer-expanded-width,360px);max-width:calc(100vw - 56px);transform:translateX(-100%);box-shadow:var(--md-sys-elevation-level3);z-index:var(--mu-z-drawer,250)}mu-drawer[position="end"] .mu-drawer-nav.mu-drawer-mode-hidden{left:auto;right:0;transform:translateX(100%)}.mu-drawer-nav.mu-drawer-mode-hidden.mu-drawer-open{transform:translateX(0)}.mu-drawer-header{padding:16px;border-bottom:1px solid var(--md-sys-color-outline-variant);transition:opacity var(--md-sys-motion-duration-short2,100ms) var(--md-sys-motion-easing-standard),padding var(--md-sys-motion-duration-short2,100ms) var(--md-sys-motion-easing-standard)}.mu-drawer-nav.mu-drawer-mode-rail:not(.mu-drawer-expanded-hover) .mu-drawer-header{opacity:0;padding:8px;height:0;overflow:hidden;border-bottom:none}.mu-drawer-content{flex:1;padding:8px 12px;display:flex;flex-direction:column;gap:4px}.mu-drawer-nav.mu-drawer-mode-rail:not(.mu-drawer-expanded-hover) .mu-drawer-content{align-items:center;padding:8px 0}mu-datatable{display:block;font-family:var(--md-sys-typescale-font)}.mu-datatable-wrapper{background:var(--md-sys-color-surface);border-radius:var(--md-sys-shape-corner-medium);border:1px solid var(--md-sys-color-outline-variant);overflow:hidden}.mu-datatable-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-low)}.mu-datatable-search{display:flex;align-items:center;gap:8px;flex:1;max-width:300px}.mu-datatable-search input{flex:1;padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-small);font-size:var(--md-sys-typescale-body-medium-size);background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface)}.mu-datatable-search input:focus{outline:2px solid var(--md-sys-color-primary);outline-offset:-1px;border-color:var(--md-sys-color-primary)}.mu-datatable-info{font-size:var(--md-sys-typescale-body-small-size);color:var(--md-sys-color-on-surface-variant)}.mu-datatable-table{width:100%;border-collapse:collapse}.mu-datatable-table thead{background:var(--md-sys-color-surface-container)}.mu-datatable-table th{padding:12px 16px;text-align:left;font-weight:500;font-size:var(--md-sys-typescale-label-large-size);color:var(--md-sys-color-on-surface);border-bottom:1px solid var(--md-sys-color-outline-variant);user-select:none}.mu-datatable-table th.mu-datatable-sortable{cursor:pointer;transition:background-color 0.15s}.mu-datatable-table th.mu-datatable-sortable:hover{background:var(--md-sys-color-surface-container-high)}.mu-datatable-sort-icon{margin-left:4px;opacity:0.5;font-size:16px}.mu-datatable-table th.mu-datatable-sorted .mu-datatable-sort-icon{opacity:1;color:var(--md-sys-color-primary)}.mu-datatable-table tbody tr{border-bottom:1px solid var(--md-sys-color-outline-variant);transition:background-color 0.15s}.mu-datatable-table tbody tr:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 4%,transparent)}.mu-datatable-table tbody tr.mu-datatable-selected{background:color-mix(in srgb,var(--md-sys-color-primary) 8%,transparent)}.mu-datatable-table td{padding:12px 16px;font-size:var(--md-sys-typescale-body-medium-size);color:var(--md-sys-color-on-surface)}.mu-datatable-checkbox-cell{width:48px;text-align:center}.mu-datatable-checkbox-cell input{width:18px;height:18px;accent-color:var(--md-sys-color-primary);cursor:pointer}.mu-datatable-empty-state{padding:48px 16px;text-align:center;color:var(--md-sys-color-on-surface-variant)}.mu-datatable-pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-low)}.mu-datatable-pagination-info{font-size:var(--md-sys-typescale-body-small-size);color:var(--md-sys-color-on-surface-variant)}.mu-datatable-pagination-controls{display:flex;gap:4px}.mu-datatable-pagination-btn{padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:var(--md-sys-shape-corner-small);background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface);cursor:pointer;font-size:var(--md-sys-typescale-body-small-size);transition:background-color 0.15s}.mu-datatable-pagination-btn:hover:not(:disabled){background:var(--md-sys-color-surface-container)}.mu-datatable-pagination-btn:disabled{opacity:0.5;cursor:not-allowed}.mu-datatable-pagination-btn.mu-datatable-pagination-btn-active{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-color:var(--md-sys-color-primary)}mu-schema-form{display:block;font-family:var(--md-sys-typescale-font)}.mu-schema-form{display:flex;flex-direction:column;gap:20px}.mu-schema-form.mu-schema-form-inline{flex-direction:row;flex-wrap:wrap}.mu-schema-form.mu-schema-form-inline .mu-schema-form-field{flex:1;min-width:200px}.mu-schema-form-field{display:flex;flex-direction:column;gap:4px}.mu-schema-form-field.mu-schema-form-field-error mu-input,.mu-schema-form-field.mu-schema-form-field-error mu-dropdown,.mu-schema-form-field.mu-schema-form-field-error mu-textarea{--md-sys-color-outline:var(--md-sys-color-error)}.mu-schema-form-description{font-size:var(--md-sys-typescale-body-small-size);color:var(--md-sys-color-on-surface-variant);margin-top:2px}.mu-schema-form-error{font-size:var(--md-sys-typescale-body-small-size);color:var(--md-sys-color-error);margin-top:2px}.mu-schema-form-switch-row{display:flex;align-items:center;gap:12px}.mu-schema-form-switch-label{font-size:var(--md-sys-typescale-body-medium-size);color:var(--md-sys-color-on-surface)}.mu-schema-form-actions{display:flex;gap:12px;margin-top:8px;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}.mu-schema-form-actions mu-button{flex:0 0 auto}.mu-schema-form-empty-state{padding:24px;text-align:center;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-medium)}mu-prompt-input{display:block;font-family:var(--md-sys-typescale-font)}.mu-prompt-input-container{display:flex;gap:8px;background:var(--md-sys-color-surface-container);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-large);padding:12px 16px;transition:border-color 0.2s var(--md-sys-motion-easing-standard)}.mu-prompt-input-container:focus-within{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 1px var(--md-sys-color-primary)}.mu-prompt-input-loading{opacity:0.7;pointer-events:none}.mu-prompt-input-field{flex:1;border:none;background:transparent;color:var(--md-sys-color-on-surface);font-size:var(--md-sys-typescale-body-large-size);font-family:inherit;resize:none;outline:none;min-height:24px}textarea.mu-prompt-input-field{min-height:80px}.mu-prompt-input-field::placeholder{color:var(--md-sys-color-on-surface-variant)}.mu-prompt-input-submit{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;border-radius:50%;background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);cursor:pointer;transition:background 0.2s,transform 0.1s;flex-shrink:0;align-self:flex-end}.mu-prompt-input-submit:hover:not(:disabled){background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.mu-prompt-input-submit:active:not(:disabled){transform:scale(0.95)}.mu-prompt-input-submit:disabled{background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);cursor:not-allowed}.mu-prompt-input-submit svg{width:20px;height:20px}.mu-prompt-input-spinner{width:20px;height:20px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:mu-prompt-spin 0.8s linear infinite}@keyframes mu-prompt-spin{to{transform:rotate(360deg)}}mu-code-block{display:block;margin:12px 0;font-family:'SF Mono','Monaco','Consolas',monospace}.mu-code-block-container{background:var(--md-sys-color-surface-container-highest);border-radius:var(--md-sys-shape-corner-medium);overflow:hidden}.mu-code-block-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:var(--md-sys-color-surface-container-high);border-bottom:1px solid var(--md-sys-color-outline-variant)}.mu-code-block-language{font-size:12px;color:var(--md-sys-color-on-surface-variant);text-transform:uppercase;font-weight:500}.mu-code-block-filename{font-size:12px;color:var(--md-sys-color-on-surface)}.mu-code-block-copy-btn{font-size:12px;padding:4px 8px;border:none;border-radius:4px;background:transparent;color:var(--md-sys-color-primary);cursor:pointer;transition:background 0.2s}.mu-code-block-copy-btn:hover{background:var(--md-sys-color-primary-container)}.mu-code-block-pre{margin:0;padding:16px;overflow-x:auto;font-size:13px;line-height:1.5;color:var(--md-sys-color-on-surface)}.mu-code-block-pre code{font-family:inherit}mu-agent-toolbar{display:flex;gap:4px;margin-top:8px}.mu-agent-toolbar-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:8px;background:transparent;cursor:pointer;font-size:16px;opacity:0.6;transition:opacity 0.2s,background 0.2s}.mu-agent-toolbar-btn:hover{opacity:1;background:var(--md-sys-color-surface-container-high)}.mu-agent-toolbar-btn:active{transform:scale(0.95)}mu-message-bubble{display:block;margin:16px 0;font-family:var(--md-sys-typescale-font)}.mu-message-bubble-message{display:flex;gap:12px}.mu-message-bubble-message.mu-message-bubble-user{flex-direction:row-reverse}.mu-message-bubble-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.mu-message-bubble-avatar.mu-message-bubble-user{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.mu-message-bubble-avatar.mu-message-bubble-assistant{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.mu-message-bubble-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}.mu-message-bubble-content{flex:1;max-width:80%}.mu-message-bubble-header{display:flex;gap:8px;align-items:center;margin-bottom:4px}.mu-message-bubble-header.mu-message-bubble-user{flex-direction:row-reverse}.mu-message-bubble-name{font-size:var(--md-sys-typescale-label-medium-size);font-weight:600;color:var(--md-sys-color-on-surface)}.mu-message-bubble-timestamp{font-size:var(--md-sys-typescale-label-small-size);color:var(--md-sys-color-on-surface-variant)}.mu-message-bubble-bubble{padding:12px 16px;line-height:1.5}.mu-message-bubble-bubble.mu-message-bubble-user{border-radius:16px 16px 4px 16px;background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.mu-message-bubble-bubble.mu-message-bubble-assistant{border-radius:16px 16px 16px 4px;background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}mu-example{content-visibility:auto;contain-intrinsic-size:auto 300px}mu-modal,mu-confirm,dialog.mu-modal__dialog,dialog.mu-confirm__dialog{contain:layout style paint}.mu-fade-in{animation:mu-fade-in var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized);will-change:opacity}.mu-fade-out{animation:mu-fade-out var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized);will-change:opacity}@keyframes mu-fade-in{from{opacity:0}to{opacity:1}}@keyframes mu-fade-out{from{opacity:1}to{opacity:0}}.mu-slide-up{animation:mu-slide-up var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-emphasized);will-change:transform,opacity}.mu-slide-down{animation:mu-slide-down var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-emphasized);will-change:transform,opacity}.mu-slide-left{animation:mu-slide-left var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-emphasized);will-change:transform,opacity}.mu-slide-right{animation:mu-slide-right var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-emphasized);will-change:transform,opacity}@keyframes mu-slide-up{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes mu-slide-down{from{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes mu-slide-left{from{transform:translateX(20px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes mu-slide-right{from{transform:translateX(-20px);opacity:0}to{transform:translateX(0);opacity:1}}.mu-scale-in{animation:mu-scale-in var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized);will-change:transform,opacity}.mu-scale-out{animation:mu-scale-out var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized);will-change:transform,opacity}@keyframes mu-scale-in{from{transform:scale(0.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes mu-scale-out{from{transform:scale(1);opacity:1}to{transform:scale(0.9);opacity:0}}.mu-pulse{animation:mu-pulse 2s infinite;will-change:opacity}@keyframes mu-pulse{0%,100%{opacity:1}50%{opacity:0.5}}.mu-shake{animation:mu-shake 0.4s var(--md-sys-motion-easing-emphasized);will-change:transform}@keyframes mu-shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}.mu-spin{animation:mu-spin 1s linear infinite;will-change:transform}@keyframes mu-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.mu-bounce{animation:mu-bounce 0.5s var(--md-sys-motion-easing-emphasized);will-change:transform}@keyframes mu-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}.mu-transition{transition:transform var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized),opacity var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized),box-shadow var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-emphasized)}.mu-transition-slow{transition:transform var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-emphasized),opacity var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-emphasized),box-shadow var(--md-sys-motion-duration-medium2) var(--md-sys-motion-easing-emphasized)}.mu-transition-fast{transition:transform var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-emphasized),opacity var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-emphasized),box-shadow var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-emphasized)}.mu-hover-lift:hover{transform:translateY(-2px);box-shadow:var(--md-sys-elevation-2);will-change:transform,box-shadow}.mu-hover-glow:hover{box-shadow:0 0 20px var(--md-sys-color-primary);will-change:box-shadow}.mu-hover-scale:hover{transform:scale(1.05);will-change:transform}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * microUI v2 TypeScript Definitions
3
+ * Complete types for 40+ components
4
+ */
5
+
6
+ // ============================================
7
+ // CORE
8
+ // ============================================
9
+ export declare class MuElement extends HTMLElement {
10
+ static observedAttributes: string[];
11
+ static baseClass: string;
12
+ static useContainment: boolean;
13
+
14
+ connectedCallback(): void;
15
+ disconnectedCallback(): void;
16
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
17
+
18
+ render(): void;
19
+ update(attr: string, newValue: string | null, oldValue: string | null): void;
20
+ cleanup(): void;
21
+
22
+ attr(name: string, defaultValue?: string): string;
23
+ has(name: string): boolean;
24
+ emit(name: string, detail?: any): void;
25
+ listen(target: EventTarget, type: string, handler: EventListener, options?: AddEventListenerOptions): void;
26
+ setTimeout(fn: () => void, delay: number): number;
27
+ setInterval(fn: () => void, delay: number): number;
28
+ }
29
+
30
+ export declare function define(tagName: string, ComponentClass: typeof MuElement): void;
31
+
32
+ // ============================================
33
+ // EVENT BUS (CrossBus 1.0.0)
34
+ // ============================================
35
+ export interface EventBus {
36
+ on(event: string, callback: (data: any) => void): () => void;
37
+ once(event: string, callback: (data: any) => void): void;
38
+ off(event: string, callback: (data: any) => void): void;
39
+ emit(event: string, data?: any): number;
40
+ emitAsync(event: string, data?: any): Promise<number>;
41
+ signal(event: string, data?: any): void;
42
+ request(peerId: string, handler: string, payload?: any): Promise<any>;
43
+ broadcastRequest(handler: string, payload?: any): Promise<Map<string, any>>;
44
+ handle(name: string, handler: (payload: any) => any): () => void;
45
+ destroy(): void;
46
+ setMaxListeners(n: number): void;
47
+ readonly peerId: string;
48
+ readonly peers: string[];
49
+ readonly peerCount: number;
50
+ }
51
+
52
+ export declare const bus: EventBus;
53
+
54
+ export declare const UIEvents: {
55
+ TOAST_SHOW: 'ui:toast:show';
56
+ TOAST_DISMISS: 'ui:toast:dismiss';
57
+ MODAL_OPEN: 'ui:modal:open';
58
+ MODAL_CLOSE: 'ui:modal:close';
59
+ THEME_CHANGE: 'ui:theme:change';
60
+ TAB_CHANGE: 'ui:tab:change';
61
+ DROPDOWN_SELECT: 'ui:dropdown:select';
62
+ FORM_SUBMIT: 'ui:form:submit';
63
+ FORM_VALIDATE: 'ui:form:validate';
64
+ };
65
+
66
+ export declare function showToast(message: string, options?: {
67
+ severity?: 'success' | 'error' | 'warning' | 'info';
68
+ duration?: number;
69
+ }): void;
70
+
71
+ // ============================================
72
+ // SIGNALS (2026 SOTA)
73
+ // ============================================
74
+ export interface Signal<T> {
75
+ (): T;
76
+ set(value: T): void;
77
+ update(fn: (current: T) => T): void;
78
+ peek(): T;
79
+ subscribe(callback: (value: T, oldValue: T) => void): () => void;
80
+ dispose(): void;
81
+ readonly name: string;
82
+ }
83
+
84
+ export declare function signal<T>(initialValue: T, name?: string): Signal<T>;
85
+ export declare function computed<T>(fn: () => T, name?: string): () => T;
86
+ export declare function effect(fn: () => void): () => void;
87
+ export declare function batch(fn: () => void): void;
88
+
89
+ // ============================================
90
+ // VIEW TRANSITIONS (2026 SOTA)
91
+ // ============================================
92
+ export declare const supportsViewTransitions: boolean;
93
+ export declare function transition(updateCallback: () => void | Promise<void>): Promise<void>;
94
+ export declare function transitionNamed(updateCallback: () => void | Promise<void>, options?: { name?: string }): Promise<void>;
95
+ export declare function navigateWithTransition(path: string, render: () => void): Promise<void>;
96
+
97
+ // ============================================
98
+ // TASK SCHEDULER (2026 SOTA)
99
+ // ============================================
100
+ export declare const supportsScheduler: boolean;
101
+ export declare function scheduleTask<T>(callback: () => T, priority?: 'user-blocking' | 'user-visible' | 'background'): Promise<T>;
102
+ export declare function yieldToMain(): Promise<void>;
103
+ export declare function processWithYield<T>(items: T[], process: (item: T, index: number) => void, chunkSize?: number): Promise<void>;
104
+ export declare function runBackground<T>(callback: () => T): Promise<T>;
105
+ export declare function runImmediate<T>(callback: () => T): Promise<T>;
106
+ export declare function afterPaint(): Promise<void>;
107
+
108
+ // ============================================
109
+ // RENDER UTILITIES
110
+ // ============================================
111
+ export declare const scheduler: { schedule(callback: () => void): void };
112
+ export declare function memo<T extends (...args: any[]) => any>(fn: T, keyFn?: (args: any[]) => string): T;
113
+ export declare function debounce<T extends (...args: any[]) => any>(fn: T, delay?: number): T;
114
+ export declare function throttle<T extends (...args: any[]) => any>(fn: T, limit?: number): T;
115
+ export declare function createVisibilityObserver(onVisible: (el: Element) => void, options?: IntersectionObserverInit): { observe(el: Element): void; disconnect(): void };
116
+ export declare const domBatch: { read(fn: () => void): void; write(fn: () => void): void };
117
+ export declare function processInChunks<T>(items: T[], processFn: (item: T, index: number) => void, chunkSize?: number): Promise<void>;
118
+
119
+ // ============================================
120
+ // STORE & ROUTER & HTTP
121
+ // ============================================
122
+ export interface Store<T> {
123
+ get(): T;
124
+ set(newState: Partial<T>): void;
125
+ update(fn: (state: T) => Partial<T>): void;
126
+ subscribe(listener: (state: T) => void): () => void;
127
+ reset(): void;
128
+ }
129
+
130
+ export declare function createStore<T extends object>(initialState: T): Store<T>;
131
+ export declare const appStore: Store<any>;
132
+
133
+ export interface Router {
134
+ on(path: string, handler: (params: Record<string, string>) => void): Router;
135
+ notFound(handler: (path: string) => void): Router;
136
+ navigate(path: string): void;
137
+ start(): Router;
138
+ readonly current: string;
139
+ }
140
+
141
+ export declare const Router: Router;
142
+
143
+ export interface Http {
144
+ baseURL: string;
145
+ setBaseURL(url: string): void;
146
+ setHeader(key: string, value: string): void;
147
+ get<T = any>(url: string, options?: RequestInit): Promise<T>;
148
+ post<T = any>(url: string, body?: any, options?: RequestInit): Promise<T>;
149
+ put<T = any>(url: string, body?: any, options?: RequestInit): Promise<T>;
150
+ delete<T = any>(url: string, options?: RequestInit): Promise<T>;
151
+ }
152
+
153
+ export declare const http: Http;
154
+ export declare class HttpError extends Error {
155
+ status: number;
156
+ statusText: string;
157
+ body: string;
158
+ }
159
+
160
+ // ============================================
161
+ // THEME
162
+ // ============================================
163
+ export interface Theme {
164
+ set(mode: 'light' | 'dark' | 'auto'): void;
165
+ toggle(): void;
166
+ get(): 'light' | 'dark';
167
+ readonly current: 'light' | 'dark';
168
+ }
169
+
170
+ export declare const Theme: Theme;
171
+
172
+ // ============================================
173
+ // COMPONENTS
174
+ // ============================================
175
+ // Layout
176
+ export declare class MuStack extends MuElement { }
177
+ export declare class MuGrid extends MuElement { }
178
+ export declare class MuContainer extends MuElement { }
179
+ export declare class MuNavbar extends MuElement { }
180
+ export declare class MuNavbarBrand extends MuElement { }
181
+ export declare class MuNavbarLinks extends MuElement { }
182
+ export declare class MuNavbarActions extends MuElement { }
183
+ export declare class MuSidebar extends MuElement { open(): void; close(): void; toggle(): void; }
184
+ export declare class MuSidebarItem extends MuElement { }
185
+ export declare class MuDivider extends MuElement { }
186
+
187
+ // Form
188
+ export declare class MuButton extends MuElement { }
189
+ export declare class MuInput extends MuElement { value: string; focus(): void; }
190
+ export declare class MuTextarea extends MuElement { value: string; }
191
+ export declare class MuForm extends MuElement { }
192
+ export declare class MuDropdown extends MuElement { open(): void; close(): void; toggle(): void; }
193
+ export declare class MuOption extends MuElement { }
194
+ export declare class MuCheckbox extends MuElement { checked: boolean; toggle(): void; }
195
+ export declare class MuSwitch extends MuElement { on: boolean; toggle(): void; }
196
+ export declare class MuRadioGroup extends MuElement { value: string; }
197
+ export declare class MuRadio extends MuElement { }
198
+ export declare class MuChip extends MuElement { selected: boolean; }
199
+
200
+ // Display
201
+ export declare class MuCard extends MuElement { }
202
+ export declare class MuTabs extends MuElement { }
203
+ export declare class MuTab extends MuElement { }
204
+ export declare class MuAlert extends MuElement { dismiss(): void; }
205
+ export declare class MuBadge extends MuElement { }
206
+ export declare class MuProgress extends MuElement { }
207
+ export declare class MuTable extends MuElement { }
208
+ export declare class MuThead extends MuElement { }
209
+ export declare class MuTbody extends MuElement { }
210
+ export declare class MuTr extends MuElement { }
211
+ export declare class MuTh extends MuElement { }
212
+ export declare class MuTd extends MuElement { }
213
+ export declare class MuAvatar extends MuElement { }
214
+ export declare class MuSkeleton extends MuElement { }
215
+
216
+ // Feedback
217
+ export declare class MuSpinner extends MuElement { }
218
+ export declare class MuModal extends MuElement { open(): void; close(): void; }
219
+ export declare class MuToast extends MuElement { dismiss(): void; }
220
+ export declare class MuTooltip extends MuElement { show(): void; hide(): void; }
221
+
222
+ // Utility
223
+ export declare class MuThemeToggle extends MuElement { }
224
+ export declare class MuIcon extends MuElement { }
225
+ export declare const IconNames: string[];
226
+
227
+ // Performance
228
+ export declare class MuVirtualList extends MuElement { items: any[]; renderItem: (item: any, index: number) => string; scrollToIndex(index: number): void; }
229
+ export declare class MuLazy extends MuElement { load(): void; }
230
+ export declare class MuRepeat extends MuElement { items: any[]; keyFn: (item: any, index: number) => any; renderItem: (item: any, index: number) => string; refresh(): void; }
231
+
232
+ export declare const Toast: {
233
+ show(message: string, options?: { severity?: string; duration?: number }): MuToast;
234
+ };