@qwickapps/react-framework 1.3.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 (441) hide show
  1. package/LICENSE +44 -0
  2. package/README.md +794 -0
  3. package/dist/components/AccessibilityChecker.d.ts +12 -0
  4. package/dist/components/AccessibilityChecker.d.ts.map +1 -0
  5. package/dist/components/Html.d.ts +48 -0
  6. package/dist/components/Html.d.ts.map +1 -0
  7. package/dist/components/Logo.d.ts +79 -0
  8. package/dist/components/Logo.d.ts.map +1 -0
  9. package/dist/components/Markdown.d.ts +47 -0
  10. package/dist/components/Markdown.d.ts.map +1 -0
  11. package/dist/components/QwickApp.d.ts +56 -0
  12. package/dist/components/QwickApp.d.ts.map +1 -0
  13. package/dist/components/QwickAppsLogo.d.ts +25 -0
  14. package/dist/components/QwickAppsLogo.d.ts.map +1 -0
  15. package/dist/components/ResponsiveMenu.d.ts +38 -0
  16. package/dist/components/ResponsiveMenu.d.ts.map +1 -0
  17. package/dist/components/SafeSpan.d.ts +23 -0
  18. package/dist/components/SafeSpan.d.ts.map +1 -0
  19. package/dist/components/Scaffold.d.ts +57 -0
  20. package/dist/components/Scaffold.d.ts.map +1 -0
  21. package/dist/components/blocks/Article.d.ts +23 -0
  22. package/dist/components/blocks/Article.d.ts.map +1 -0
  23. package/dist/components/blocks/CardListGrid.d.ts +23 -0
  24. package/dist/components/blocks/CardListGrid.d.ts.map +1 -0
  25. package/dist/components/blocks/Code.d.ts +21 -0
  26. package/dist/components/blocks/Code.d.ts.map +1 -0
  27. package/dist/components/blocks/Content.d.ts +24 -0
  28. package/dist/components/blocks/Content.d.ts.map +1 -0
  29. package/dist/components/blocks/CoverImageHeader.d.ts +44 -0
  30. package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -0
  31. package/dist/components/blocks/FeatureCard.d.ts +66 -0
  32. package/dist/components/blocks/FeatureCard.d.ts.map +1 -0
  33. package/dist/components/blocks/FeatureGrid.d.ts +48 -0
  34. package/dist/components/blocks/FeatureGrid.d.ts.map +1 -0
  35. package/dist/components/blocks/Footer.d.ts +56 -0
  36. package/dist/components/blocks/Footer.d.ts.map +1 -0
  37. package/dist/components/blocks/HeroBlock.d.ts +33 -0
  38. package/dist/components/blocks/HeroBlock.d.ts.map +1 -0
  39. package/dist/components/blocks/PageBannerHeader.d.ts +30 -0
  40. package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -0
  41. package/dist/components/blocks/ProductCard.d.ts +57 -0
  42. package/dist/components/blocks/ProductCard.d.ts.map +1 -0
  43. package/dist/components/blocks/Section.d.ts +40 -0
  44. package/dist/components/blocks/Section.d.ts.map +1 -0
  45. package/dist/components/blocks/index.d.ts +37 -0
  46. package/dist/components/blocks/index.d.ts.map +1 -0
  47. package/dist/components/buttons/Button.d.ts +38 -0
  48. package/dist/components/buttons/Button.d.ts.map +1 -0
  49. package/dist/components/buttons/PaletteSwitcher.d.ts +24 -0
  50. package/dist/components/buttons/PaletteSwitcher.d.ts.map +1 -0
  51. package/dist/components/buttons/ThemeSwitcher.d.ts +24 -0
  52. package/dist/components/buttons/ThemeSwitcher.d.ts.map +1 -0
  53. package/dist/components/buttons/index.d.ts +11 -0
  54. package/dist/components/buttons/index.d.ts.map +1 -0
  55. package/dist/components/forms/FormBlock.d.ts +45 -0
  56. package/dist/components/forms/FormBlock.d.ts.map +1 -0
  57. package/dist/components/forms/index.d.ts +8 -0
  58. package/dist/components/forms/index.d.ts.map +1 -0
  59. package/dist/components/index.d.ts +32 -0
  60. package/dist/components/index.d.ts.map +1 -0
  61. package/dist/components/input/ChoiceInputField.d.ts +30 -0
  62. package/dist/components/input/ChoiceInputField.d.ts.map +1 -0
  63. package/dist/components/input/HtmlInputField.d.ts +29 -0
  64. package/dist/components/input/HtmlInputField.d.ts.map +1 -0
  65. package/dist/components/input/SelectInputField.d.ts +29 -0
  66. package/dist/components/input/SelectInputField.d.ts.map +1 -0
  67. package/dist/components/input/TextField.d.ts +18 -0
  68. package/dist/components/input/TextField.d.ts.map +1 -0
  69. package/dist/components/input/TextInputField.d.ts +32 -0
  70. package/dist/components/input/TextInputField.d.ts.map +1 -0
  71. package/dist/components/input/index.d.ts +17 -0
  72. package/dist/components/input/index.d.ts.map +1 -0
  73. package/dist/components/layout/GridCell.d.ts +16 -0
  74. package/dist/components/layout/GridCell.d.ts.map +1 -0
  75. package/dist/components/layout/GridCellWrapper.d.ts +46 -0
  76. package/dist/components/layout/GridCellWrapper.d.ts.map +1 -0
  77. package/dist/components/layout/GridLayout.d.ts +38 -0
  78. package/dist/components/layout/GridLayout.d.ts.map +1 -0
  79. package/dist/components/layout/index.d.ts +12 -0
  80. package/dist/components/layout/index.d.ts.map +1 -0
  81. package/dist/components/menu/Menu.d.ts +1 -0
  82. package/dist/components/menu/Menu.d.ts.map +1 -0
  83. package/dist/components/menu/MenuItem.d.ts +31 -0
  84. package/dist/components/menu/MenuItem.d.ts.map +1 -0
  85. package/dist/components/menu/index.d.ts +7 -0
  86. package/dist/components/menu/index.d.ts.map +1 -0
  87. package/dist/components/pages/FormPage.d.ts +66 -0
  88. package/dist/components/pages/FormPage.d.ts.map +1 -0
  89. package/dist/components/pages/Page.d.ts +124 -0
  90. package/dist/components/pages/Page.d.ts.map +1 -0
  91. package/dist/components/pages/index.d.ts +11 -0
  92. package/dist/components/pages/index.d.ts.map +1 -0
  93. package/dist/contexts/DataContext.d.ts +139 -0
  94. package/dist/contexts/DataContext.d.ts.map +1 -0
  95. package/dist/contexts/DimensionsContext.d.ts +42 -0
  96. package/dist/contexts/DimensionsContext.d.ts.map +1 -0
  97. package/dist/contexts/PaletteContext.d.ts +53 -0
  98. package/dist/contexts/PaletteContext.d.ts.map +1 -0
  99. package/dist/contexts/QwickAppContext.d.ts +71 -0
  100. package/dist/contexts/QwickAppContext.d.ts.map +1 -0
  101. package/dist/contexts/ThemeContext.d.ts +65 -0
  102. package/dist/contexts/ThemeContext.d.ts.map +1 -0
  103. package/dist/contexts/index.d.ts +9 -0
  104. package/dist/contexts/index.d.ts.map +1 -0
  105. package/dist/hooks/index.d.ts +10 -0
  106. package/dist/hooks/index.d.ts.map +1 -0
  107. package/dist/hooks/useBaseProps.d.ts +101 -0
  108. package/dist/hooks/useBaseProps.d.ts.map +1 -0
  109. package/dist/hooks/useDataBinding.d.ts +22 -0
  110. package/dist/hooks/useDataBinding.d.ts.map +1 -0
  111. package/dist/index.css +1 -0
  112. package/dist/index.d.ts +8 -0
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.esm.css +1 -0
  115. package/dist/index.esm.js +24143 -0
  116. package/dist/index.js +24245 -0
  117. package/dist/palettes/PaletteAutumn.d.ts +10 -0
  118. package/dist/palettes/PaletteAutumn.d.ts.map +1 -0
  119. package/dist/palettes/PaletteCosmic.d.ts +10 -0
  120. package/dist/palettes/PaletteCosmic.d.ts.map +1 -0
  121. package/dist/palettes/PaletteDefault.d.ts +10 -0
  122. package/dist/palettes/PaletteDefault.d.ts.map +1 -0
  123. package/dist/palettes/PaletteOcean.d.ts +10 -0
  124. package/dist/palettes/PaletteOcean.d.ts.map +1 -0
  125. package/dist/palettes/PaletteSpring.d.ts +10 -0
  126. package/dist/palettes/PaletteSpring.d.ts.map +1 -0
  127. package/dist/palettes/PaletteWinter.d.ts +10 -0
  128. package/dist/palettes/PaletteWinter.d.ts.map +1 -0
  129. package/dist/palettes/index.d.ts +13 -0
  130. package/dist/palettes/index.d.ts.map +1 -0
  131. package/dist/schemas/ActionSchema.d.ts +21 -0
  132. package/dist/schemas/ActionSchema.d.ts.map +1 -0
  133. package/dist/schemas/ArticleSchema.d.ts +13 -0
  134. package/dist/schemas/ArticleSchema.d.ts.map +1 -0
  135. package/dist/schemas/Builders.d.ts +7 -0
  136. package/dist/schemas/Builders.d.ts.map +1 -0
  137. package/dist/schemas/ButtonSchema.d.ts +19 -0
  138. package/dist/schemas/ButtonSchema.d.ts.map +1 -0
  139. package/dist/schemas/CardListGridSchema.d.ts +17 -0
  140. package/dist/schemas/CardListGridSchema.d.ts.map +1 -0
  141. package/dist/schemas/ChoiceInputFieldSchema.d.ts +18 -0
  142. package/dist/schemas/ChoiceInputFieldSchema.d.ts.map +1 -0
  143. package/dist/schemas/CodeSchema.d.ts +18 -0
  144. package/dist/schemas/CodeSchema.d.ts.map +1 -0
  145. package/dist/schemas/ContentSchema.d.ts +20 -0
  146. package/dist/schemas/ContentSchema.d.ts.map +1 -0
  147. package/dist/schemas/CoverImageHeaderSchema.d.ts +28 -0
  148. package/dist/schemas/CoverImageHeaderSchema.d.ts.map +1 -0
  149. package/dist/schemas/FeatureCardSchema.d.ts +28 -0
  150. package/dist/schemas/FeatureCardSchema.d.ts.map +1 -0
  151. package/dist/schemas/FeatureGridSchema.d.ts +17 -0
  152. package/dist/schemas/FeatureGridSchema.d.ts.map +1 -0
  153. package/dist/schemas/FeatureItemSchema.d.ts +16 -0
  154. package/dist/schemas/FeatureItemSchema.d.ts.map +1 -0
  155. package/dist/schemas/FooterItemSchema.d.ts +15 -0
  156. package/dist/schemas/FooterItemSchema.d.ts.map +1 -0
  157. package/dist/schemas/FooterSchema.d.ts +20 -0
  158. package/dist/schemas/FooterSchema.d.ts.map +1 -0
  159. package/dist/schemas/FooterSectionSchema.d.ts +15 -0
  160. package/dist/schemas/FooterSectionSchema.d.ts.map +1 -0
  161. package/dist/schemas/FormBlockSchema.d.ts +19 -0
  162. package/dist/schemas/FormBlockSchema.d.ts.map +1 -0
  163. package/dist/schemas/HeaderActionSchema.d.ts +17 -0
  164. package/dist/schemas/HeaderActionSchema.d.ts.map +1 -0
  165. package/dist/schemas/HeroBlockSchema.d.ts +22 -0
  166. package/dist/schemas/HeroBlockSchema.d.ts.map +1 -0
  167. package/dist/schemas/HtmlInputFieldSchema.d.ts +18 -0
  168. package/dist/schemas/HtmlInputFieldSchema.d.ts.map +1 -0
  169. package/dist/schemas/MetadataItemSchema.d.ts +13 -0
  170. package/dist/schemas/MetadataItemSchema.d.ts.map +1 -0
  171. package/dist/schemas/PageBannerHeaderSchema.d.ts +28 -0
  172. package/dist/schemas/PageBannerHeaderSchema.d.ts.map +1 -0
  173. package/dist/schemas/PaletteSwitcherSchema.d.ts +16 -0
  174. package/dist/schemas/PaletteSwitcherSchema.d.ts.map +1 -0
  175. package/dist/schemas/ProductCardSchema.d.ts +39 -0
  176. package/dist/schemas/ProductCardSchema.d.ts.map +1 -0
  177. package/dist/schemas/SafeSpanSchema.d.ts +13 -0
  178. package/dist/schemas/SafeSpanSchema.d.ts.map +1 -0
  179. package/dist/schemas/SectionSchema.d.ts +17 -0
  180. package/dist/schemas/SectionSchema.d.ts.map +1 -0
  181. package/dist/schemas/SelectInputFieldSchema.d.ts +27 -0
  182. package/dist/schemas/SelectInputFieldSchema.d.ts.map +1 -0
  183. package/dist/schemas/TextInputFieldSchema.d.ts +22 -0
  184. package/dist/schemas/TextInputFieldSchema.d.ts.map +1 -0
  185. package/dist/schemas/ThemeSwitcherSchema.d.ts +19 -0
  186. package/dist/schemas/ThemeSwitcherSchema.d.ts.map +1 -0
  187. package/dist/schemas/index.d.ts +33 -0
  188. package/dist/schemas/index.d.ts.map +1 -0
  189. package/dist/schemas/types.d.ts +7 -0
  190. package/dist/schemas/types.d.ts.map +1 -0
  191. package/dist/templates/TemplateResolver.d.ts +52 -0
  192. package/dist/templates/TemplateResolver.d.ts.map +1 -0
  193. package/dist/templates/index.d.ts +7 -0
  194. package/dist/templates/index.d.ts.map +1 -0
  195. package/dist/tests/ConsoleWarningTest.d.ts +5 -0
  196. package/dist/tests/ConsoleWarningTest.d.ts.map +1 -0
  197. package/dist/tests/StorageKeyTest.d.ts +6 -0
  198. package/dist/tests/StorageKeyTest.d.ts.map +1 -0
  199. package/dist/tests/ThemeStorageKeyTest.d.ts +6 -0
  200. package/dist/tests/ThemeStorageKeyTest.d.ts.map +1 -0
  201. package/dist/types/CacheProvider.d.ts +18 -0
  202. package/dist/types/CacheProvider.d.ts.map +1 -0
  203. package/dist/types/ContentProxy.d.ts +47 -0
  204. package/dist/types/ContentProxy.d.ts.map +1 -0
  205. package/dist/types/DataBinding.d.ts +7 -0
  206. package/dist/types/DataBinding.d.ts.map +1 -0
  207. package/dist/types/DataProvider.d.ts +7 -0
  208. package/dist/types/DataProvider.d.ts.map +1 -0
  209. package/dist/types/DataTypes.d.ts +185 -0
  210. package/dist/types/DataTypes.d.ts.map +1 -0
  211. package/dist/types/TemplateProvider.d.ts +10 -0
  212. package/dist/types/TemplateProvider.d.ts.map +1 -0
  213. package/dist/types/TemplateResolver.d.ts +23 -0
  214. package/dist/types/TemplateResolver.d.ts.map +1 -0
  215. package/dist/types/index.d.ts +81 -0
  216. package/dist/types/index.d.ts.map +1 -0
  217. package/dist/utils/breakpoints.d.ts +35 -0
  218. package/dist/utils/breakpoints.d.ts.map +1 -0
  219. package/dist/utils/customPaletteManager.d.ts +8 -0
  220. package/dist/utils/customPaletteManager.d.ts.map +1 -0
  221. package/dist/utils/dimensions.d.ts +34 -0
  222. package/dist/utils/dimensions.d.ts.map +1 -0
  223. package/dist/utils/htmlTransform.d.ts +44 -0
  224. package/dist/utils/htmlTransform.d.ts.map +1 -0
  225. package/dist/utils/index.d.ts +15 -0
  226. package/dist/utils/index.d.ts.map +1 -0
  227. package/dist/utils/logger.d.ts +14 -0
  228. package/dist/utils/logger.d.ts.map +1 -0
  229. package/dist/utils/paletteUtils.d.ts +38 -0
  230. package/dist/utils/paletteUtils.d.ts.map +1 -0
  231. package/dist/utils/persistenceUtils.d.ts +31 -0
  232. package/dist/utils/persistenceUtils.d.ts.map +1 -0
  233. package/dist/utils/reactUtils.d.ts +24 -0
  234. package/dist/utils/reactUtils.d.ts.map +1 -0
  235. package/dist/utils/spacing.d.ts +34 -0
  236. package/dist/utils/spacing.d.ts.map +1 -0
  237. package/dist/utils/themePerformanceMonitor.d.ts +32 -0
  238. package/dist/utils/themePerformanceMonitor.d.ts.map +1 -0
  239. package/dist/utils/themeUtils.d.ts +27 -0
  240. package/dist/utils/themeUtils.d.ts.map +1 -0
  241. package/package.json +141 -0
  242. package/src/__tests__/components/Logo.test.js +172 -0
  243. package/src/__tests__/contexts/DataContext.test.js +505 -0
  244. package/src/__tests__/contexts/PaletteContext.test.js +115 -0
  245. package/src/__tests__/contexts/ThemeContext.test.js +123 -0
  246. package/src/__tests__/utils/paletteUtils.test.js +142 -0
  247. package/src/__tests__/utils/themeUtils.test.js +142 -0
  248. package/src/components/AccessibilityChecker.tsx +264 -0
  249. package/src/components/Html.tsx +191 -0
  250. package/src/components/Logo.css +217 -0
  251. package/src/components/Logo.tsx +370 -0
  252. package/src/components/Markdown.tsx +191 -0
  253. package/src/components/QwickApp.css +257 -0
  254. package/src/components/QwickApp.tsx +157 -0
  255. package/src/components/QwickAppsLogo.tsx +77 -0
  256. package/src/components/ResponsiveMenu.css +416 -0
  257. package/src/components/ResponsiveMenu.tsx +310 -0
  258. package/src/components/SafeSpan.tsx +128 -0
  259. package/src/components/Scaffold.css +541 -0
  260. package/src/components/Scaffold.tsx +463 -0
  261. package/src/components/__tests__/Article.test.tsx +419 -0
  262. package/src/components/__tests__/Button.test.tsx +702 -0
  263. package/src/components/__tests__/CardListGrid.test.tsx +478 -0
  264. package/src/components/__tests__/ChoiceInputField.test.tsx +864 -0
  265. package/src/components/__tests__/Code.test.tsx +595 -0
  266. package/src/components/__tests__/Content.integration.test.tsx +193 -0
  267. package/src/components/__tests__/Content.test.tsx +504 -0
  268. package/src/components/__tests__/CoverImageHeader.test.tsx +456 -0
  269. package/src/components/__tests__/FeatureCard.integration.test.tsx +384 -0
  270. package/src/components/__tests__/FeatureGrid.integration.test.tsx +364 -0
  271. package/src/components/__tests__/FeatureGrid.test.tsx +494 -0
  272. package/src/components/__tests__/Footer.test.tsx +544 -0
  273. package/src/components/__tests__/FormBlock.test.tsx +857 -0
  274. package/src/components/__tests__/HeroBlock.integration.test.tsx +272 -0
  275. package/src/components/__tests__/HeroBlock.test.tsx +463 -0
  276. package/src/components/__tests__/Html.test.tsx +174 -0
  277. package/src/components/__tests__/HtmlInputField.test.tsx +856 -0
  278. package/src/components/__tests__/Markdown.test.tsx +233 -0
  279. package/src/components/__tests__/PageBannerHeader.test.tsx +614 -0
  280. package/src/components/__tests__/PaletteSwitcher.test.tsx +864 -0
  281. package/src/components/__tests__/ProductCard.test.tsx +377 -0
  282. package/src/components/__tests__/SafeSpan.integration.test.tsx +123 -0
  283. package/src/components/__tests__/SafeSpan.simple.test.tsx +65 -0
  284. package/src/components/__tests__/SafeSpan.test.tsx +388 -0
  285. package/src/components/__tests__/Section.integration.test.tsx +288 -0
  286. package/src/components/__tests__/Section.test.tsx +494 -0
  287. package/src/components/__tests__/SelectInputField.test.tsx +886 -0
  288. package/src/components/__tests__/TextInputField.test.tsx +749 -0
  289. package/src/components/__tests__/ThemeSwitcher.test.tsx +777 -0
  290. package/src/components/blocks/Article.tsx +194 -0
  291. package/src/components/blocks/CardListGrid.tsx +132 -0
  292. package/src/components/blocks/Code.tsx +313 -0
  293. package/src/components/blocks/Content.tsx +265 -0
  294. package/src/components/blocks/CoverImageHeader.css +17 -0
  295. package/src/components/blocks/CoverImageHeader.tsx +435 -0
  296. package/src/components/blocks/FeatureCard.tsx +321 -0
  297. package/src/components/blocks/FeatureGrid.tsx +147 -0
  298. package/src/components/blocks/Footer.tsx +343 -0
  299. package/src/components/blocks/HeroBlock.tsx +280 -0
  300. package/src/components/blocks/PageBannerHeader.tsx +471 -0
  301. package/src/components/blocks/ProductCard.tsx +472 -0
  302. package/src/components/blocks/Section.tsx +209 -0
  303. package/src/components/blocks/index.ts +37 -0
  304. package/src/components/buttons/Button.tsx +233 -0
  305. package/src/components/buttons/PaletteSwitcher.tsx +268 -0
  306. package/src/components/buttons/ThemeSwitcher.tsx +283 -0
  307. package/src/components/buttons/index.ts +11 -0
  308. package/src/components/forms/FormBlock.tsx +291 -0
  309. package/src/components/forms/index.ts +7 -0
  310. package/src/components/index.ts +37 -0
  311. package/src/components/input/ChoiceInputField.tsx +188 -0
  312. package/src/components/input/HtmlInputField.tsx +326 -0
  313. package/src/components/input/SelectInputField.tsx +197 -0
  314. package/src/components/input/TextField.tsx +47 -0
  315. package/src/components/input/TextInputField.tsx +144 -0
  316. package/src/components/input/index.ts +17 -0
  317. package/src/components/layout/GridCell.tsx +46 -0
  318. package/src/components/layout/GridCellWrapper.tsx +87 -0
  319. package/src/components/layout/GridLayout.tsx +169 -0
  320. package/src/components/layout/index.ts +13 -0
  321. package/src/components/menu/Menu.tsx +0 -0
  322. package/src/components/menu/MenuItem.tsx +32 -0
  323. package/src/components/menu/index.ts +6 -0
  324. package/src/components/pages/FormPage.tsx +108 -0
  325. package/src/components/pages/Page.css +460 -0
  326. package/src/components/pages/Page.tsx +345 -0
  327. package/src/components/pages/index.ts +11 -0
  328. package/src/contexts/DataContext.tsx +355 -0
  329. package/src/contexts/DimensionsContext.tsx +154 -0
  330. package/src/contexts/PaletteContext.tsx +217 -0
  331. package/src/contexts/QwickAppContext.tsx +95 -0
  332. package/src/contexts/ThemeContext.tsx +376 -0
  333. package/src/contexts/index.ts +9 -0
  334. package/src/hooks/__tests__/useDataBinding.test.tsx.disabled +229 -0
  335. package/src/hooks/index.ts +11 -0
  336. package/src/hooks/useBaseProps.ts +267 -0
  337. package/src/hooks/useDataBinding.ts +77 -0
  338. package/src/index.ts +23 -0
  339. package/src/palettes/PaletteAutumn.css +172 -0
  340. package/src/palettes/PaletteAutumn.ts +16 -0
  341. package/src/palettes/PaletteCosmic.css +172 -0
  342. package/src/palettes/PaletteCosmic.ts +16 -0
  343. package/src/palettes/PaletteDefault.css +178 -0
  344. package/src/palettes/PaletteDefault.ts +17 -0
  345. package/src/palettes/PaletteOcean.css +172 -0
  346. package/src/palettes/PaletteOcean.ts +16 -0
  347. package/src/palettes/PaletteSpring.css +160 -0
  348. package/src/palettes/PaletteSpring.ts +16 -0
  349. package/src/palettes/PaletteWinter.css +172 -0
  350. package/src/palettes/PaletteWinter.ts +16 -0
  351. package/src/palettes/index.css +12 -0
  352. package/src/palettes/index.ts +29 -0
  353. package/src/schemas/ActionSchema.ts +140 -0
  354. package/src/schemas/ArticleSchema.ts +35 -0
  355. package/src/schemas/ButtonSchema.ts +99 -0
  356. package/src/schemas/CardListGridSchema.ts +102 -0
  357. package/src/schemas/ChoiceInputFieldSchema.ts +89 -0
  358. package/src/schemas/CodeSchema.ts +88 -0
  359. package/src/schemas/ContentSchema.ts +128 -0
  360. package/src/schemas/CoverImageHeaderSchema.ts +208 -0
  361. package/src/schemas/FeatureCardSchema.ts +161 -0
  362. package/src/schemas/FeatureGridSchema.ts +87 -0
  363. package/src/schemas/FeatureItemSchema.ts +68 -0
  364. package/src/schemas/FooterItemSchema.ts +57 -0
  365. package/src/schemas/FooterSchema.ts +116 -0
  366. package/src/schemas/FooterSectionSchema.ts +50 -0
  367. package/src/schemas/FormBlockSchema.ts +102 -0
  368. package/src/schemas/HeaderActionSchema.ts +83 -0
  369. package/src/schemas/HeroBlockSchema.ts +149 -0
  370. package/src/schemas/HtmlInputFieldSchema.ts +88 -0
  371. package/src/schemas/MetadataItemSchema.ts +35 -0
  372. package/src/schemas/PageBannerHeaderSchema.ts +206 -0
  373. package/src/schemas/PaletteSwitcherSchema.ts +66 -0
  374. package/src/schemas/ProductCardSchema.ts +264 -0
  375. package/src/schemas/SafeSpanSchema.ts +36 -0
  376. package/src/schemas/SectionSchema.ts +106 -0
  377. package/src/schemas/SelectInputFieldSchema.ts +137 -0
  378. package/src/schemas/TextInputFieldSchema.ts +129 -0
  379. package/src/schemas/ThemeSwitcherSchema.ts +97 -0
  380. package/src/schemas/__tests__/builders.test.ts +313 -0
  381. package/src/schemas/index.ts +34 -0
  382. package/src/setupTests.js +60 -0
  383. package/src/stories/Article.stories.tsx +549 -0
  384. package/src/stories/Button.stories.tsx +498 -0
  385. package/src/stories/CardListGrid.stories.tsx +539 -0
  386. package/src/stories/ChoiceInputField.stories.tsx +591 -0
  387. package/src/stories/Code.stories.tsx +711 -0
  388. package/src/stories/Content.stories.tsx +463 -0
  389. package/src/stories/CoverImageHeader.stories.tsx +794 -0
  390. package/src/stories/DataBinding.advanced.stories.tsx +548 -0
  391. package/src/stories/DataBinding.stories.tsx +452 -0
  392. package/src/stories/DataProvider.stories.tsx +1361 -0
  393. package/src/stories/FeatureCard.stories.tsx +642 -0
  394. package/src/stories/FeatureGrid.stories.tsx +669 -0
  395. package/src/stories/Footer.stories.tsx +724 -0
  396. package/src/stories/FormBlock.stories.tsx +834 -0
  397. package/src/stories/HeroBlock.stories.tsx +442 -0
  398. package/src/stories/Html.stories.tsx +264 -0
  399. package/src/stories/HtmlInputField.stories.tsx +558 -0
  400. package/src/stories/Introduction.stories.tsx +721 -0
  401. package/src/stories/LayoutBlocks.stories.tsx +382 -0
  402. package/src/stories/LayoutSystem.stories.tsx +253 -0
  403. package/src/stories/Logo.stories.tsx +400 -0
  404. package/src/stories/Markdown.stories.tsx +349 -0
  405. package/src/stories/Page.stories.tsx +762 -0
  406. package/src/stories/PageBannerHeader.stories.tsx +949 -0
  407. package/src/stories/PaletteSwitcher.stories.tsx +156 -0
  408. package/src/stories/ProductCard.stories.tsx +504 -0
  409. package/src/stories/QwickApp.stories.tsx +461 -0
  410. package/src/stories/ResponsiveMenu.stories.tsx +299 -0
  411. package/src/stories/SafeSpan.stories.tsx +612 -0
  412. package/src/stories/Section.stories.tsx +613 -0
  413. package/src/stories/SelectInputField.stories.tsx +605 -0
  414. package/src/stories/TextInputField.stories.tsx +526 -0
  415. package/src/stories/ThemeSwitcher.stories.tsx +170 -0
  416. package/src/stories/form/FormComponents.stories.tsx +588 -0
  417. package/src/templates/TemplateResolver.ts +156 -0
  418. package/src/templates/index.ts +6 -0
  419. package/src/tests/ConsoleWarningTest.tsx +30 -0
  420. package/src/tests/StorageKeyTest.tsx +110 -0
  421. package/src/tests/ThemeStorageKeyTest.tsx +114 -0
  422. package/src/types/CacheProvider.ts +14 -0
  423. package/src/types/ContentProxy.ts +99 -0
  424. package/src/types/DataTypes.ts +196 -0
  425. package/src/types/TemplateProvider.ts +9 -0
  426. package/src/types/TemplateResolver.ts +26 -0
  427. package/src/types/index.ts +99 -0
  428. package/src/utils/__tests__/createDataDrivenComponent.test.tsx.disabled +193 -0
  429. package/src/utils/__tests__/htmlTransform.test.tsx +255 -0
  430. package/src/utils/breakpoints.ts +87 -0
  431. package/src/utils/customPaletteManager.js +214 -0
  432. package/src/utils/dimensions.ts +147 -0
  433. package/src/utils/htmlTransform.tsx +323 -0
  434. package/src/utils/index.ts +16 -0
  435. package/src/utils/logger.ts +28 -0
  436. package/src/utils/paletteUtils.ts +78 -0
  437. package/src/utils/persistenceUtils.ts +107 -0
  438. package/src/utils/reactUtils.tsx +37 -0
  439. package/src/utils/spacing.ts +155 -0
  440. package/src/utils/themePerformanceMonitor.js +113 -0
  441. package/src/utils/themeUtils.ts +67 -0
package/dist/index.css ADDED
@@ -0,0 +1 @@
1
+ @media (max-width:600px){.cover-image-header .MuiButton-root .MuiButton-startIcon+*{display:none}.cover-image-header .MuiButton-root{min-width:36px;padding:6px 8px}}html[data-palette=default]:not([data-theme=dark]),html[data-palette=default][data-theme=light]{--palette-primary-main:#007bff;--palette-primary-light:#4a90e2;--palette-primary-dark:#0056b3;--palette-on-primary:#fff;--palette-secondary-main:#6c757d;--palette-secondary-light:#868e96;--palette-secondary-dark:#495057;--palette-on-secondary:#fff;--palette-surface-main:#fff;--palette-surface-variant:#f5f5f5;--palette-surface-elevated:#fff;--palette-on-surface:#000;--palette-background-main:#fff;--palette-background-dark:#fafafa;--palette-background-overlay:hsla(0,0%,100%,.95);--palette-on-background:#000;--palette-header-bg-start:hsla(0,0%,100%,.98);--palette-header-bg-end:hsla(0,0%,100%,.95);--palette-header-collapsed-bg-start:hsla(0,0%,100%,.99);--palette-header-collapsed-bg-end:hsla(0,0%,100%,.96);--palette-text-primary:#000;--palette-text-secondary:#666;--palette-text-disabled:rgba(0,0,0,.38);--palette-text-inverted:#fff;--palette-border-main:#e0e0e0;--palette-border-light:rgba(0,0,0,.12);--palette-border-lighter:rgba(0,0,0,.05);--palette-border-medium:#ccc;--palette-success-main:#28a745;--palette-success-light:#d4edda;--palette-success-dark:#155724;--palette-on-success:#fff;--palette-success-border:#c3e6cb;--palette-error-main:#dc3545;--palette-error-light:#f8d7da;--palette-error-dark:#721c24;--palette-on-error:#fff;--palette-error-border:#f5c6cb;--palette-warning-main:#ffc107;--palette-warning-light:#fff3cd;--palette-warning-dark:#856404;--palette-on-warning:#000;--palette-warning-border:#ffeeba;--palette-info-main:#007acc;--palette-info-light:#f0f8ff;--palette-info-dark:#058;--palette-on-info:#fff;--palette-info-border:#007acc;--palette-accent-main:#ff6b35;--palette-accent-light:#ffb3a0;--palette-accent-dark:#cc5429;--palette-on-accent:#fff;--palette-control-main:#1a1a1a;--palette-control-light:#2a2a2a;--palette-control-text:#ccc;--palette-control-border:#333}html[data-palette=default][data-theme=dark]{--palette-primary-main:#4a90e2;--palette-primary-light:#87ceeb;--palette-primary-dark:#1a365d;--palette-on-primary:#fff;--palette-secondary-main:#868e96;--palette-secondary-light:#adb5bd;--palette-secondary-dark:#6c757d;--palette-on-secondary:#fff;--palette-surface-main:#1e1e1e;--palette-surface-variant:#2a2a2a;--palette-surface-elevated:#353535;--palette-on-surface:#fff;--palette-background-main:#121212;--palette-background-dark:#2a2a2a;--palette-background-overlay:rgba(30,30,30,.95);--palette-on-background:#fff;--palette-header-bg-start:hsla(0,0%,7%,.98);--palette-header-bg-end:hsla(0,0%,7%,.95);--palette-header-collapsed-bg-start:hsla(0,0%,7%,.99);--palette-header-collapsed-bg-end:hsla(0,0%,7%,.96);--palette-text-primary:#fff;--palette-text-secondary:#b0b0b0;--palette-text-disabled:hsla(0,0%,100%,.38);--palette-text-inverted:#000;--palette-border-main:#555;--palette-border-light:hsla(0,0%,100%,.12);--palette-border-lighter:hsla(0,0%,100%,.05);--palette-border-medium:#333;--palette-success-main:#4ade80;--palette-success-light:#064e3b;--palette-success-dark:#22c55e;--palette-on-success:#fff;--palette-success-border:#065f46;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-on-error:#fff;--palette-error-border:#991b1b;--palette-warning-main:#fbbf24;--palette-warning-light:#78350f;--palette-warning-dark:#f59e0b;--palette-on-warning:#000;--palette-warning-border:#92400e;--palette-info-main:#60a5fa;--palette-info-light:#1e3a8a;--palette-info-dark:#3b82f6;--palette-on-info:#fff;--palette-info-border:#1d4ed8;--palette-accent-main:#ff8a65;--palette-accent-light:#ffcc9c;--palette-accent-dark:#cc6e52;--palette-on-accent:#fff;--palette-control-main:#2a2a2a;--palette-control-light:#3a3a3a;--palette-control-text:#e0e0e0;--palette-control-border:#555}html[data-palette=autumn]:not([data-theme=dark]),html[data-palette=autumn][data-theme=light]{--palette-primary-main:#ea580c;--palette-primary-light:#fb923c;--palette-primary-dark:#c2410c;--palette-on-primary:#fff;--palette-secondary-main:#b45309;--palette-secondary-light:#d97706;--palette-secondary-dark:#92400e;--palette-on-secondary:#fff;--palette-surface-main:#fffbeb;--palette-surface-variant:#fef3c7;--palette-surface-elevated:#fff;--palette-on-surface:#451a03;--palette-background-main:#fefce8;--palette-background-dark:#fef3c7;--palette-background-overlay:hsla(55,92%,95%,.95);--palette-on-background:#78350f;--palette-header-bg-start:hsla(55,92%,95%,.98);--palette-header-bg-end:hsla(55,92%,95%,.95);--palette-header-collapsed-bg-start:hsla(55,92%,95%,.99);--palette-header-collapsed-bg-end:hsla(55,92%,95%,.96);--palette-text-primary:#451a03;--palette-text-secondary:#78350f;--palette-text-disabled:rgba(69,26,3,.38);--palette-text-inverted:#fff;--palette-border-main:#d4d4aa;--palette-border-light:rgba(69,26,3,.12);--palette-border-lighter:rgba(69,26,3,.05);--palette-border-medium:#a8a29e;--palette-success-main:#16a34a;--palette-success-light:#dcfce7;--palette-success-dark:#14532d;--palette-success-border:#bbf7d0;--palette-error-main:#dc2626;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-error-border:#fecaca;--palette-warning-main:#f59e0b;--palette-warning-light:#fef3c7;--palette-warning-dark:#78350f;--palette-warning-border:#fde68a;--palette-info-main:#0891b2;--palette-info-light:#e6fffa;--palette-info-dark:#164e63;--palette-on-info:#fff;--palette-info-border:#67e8f9;--palette-accent-main:#dc2626;--palette-accent-light:#f87171;--palette-accent-dark:#991b1b;--palette-on-accent:#fff;--palette-control-main:#451a03;--palette-control-light:#78350f;--palette-control-text:#fef3c7;--palette-control-border:#92400e}html[data-palette=autumn][data-theme=dark]{--palette-primary-main:#fb923c;--palette-primary-light:#fdba74;--palette-primary-dark:#ea580c;--palette-on-primary:#1c1917;--palette-secondary-main:#fbbf24;--palette-secondary-light:#fcd34d;--palette-secondary-dark:#f59e0b;--palette-on-secondary:#1c1917;--palette-surface-main:#1c1917;--palette-surface-variant:#292524;--palette-surface-elevated:#44403c;--palette-on-surface:#fef3c7;--palette-background-main:#0c0a09;--palette-background-dark:#1c1917;--palette-background-overlay:rgba(28,25,23,.95);--palette-on-background:#d6d3d1;--palette-header-bg-start:rgba(12,10,9,.98);--palette-header-bg-end:rgba(12,10,9,.95);--palette-header-collapsed-bg-start:rgba(12,10,9,.99);--palette-header-collapsed-bg-end:rgba(12,10,9,.96);--palette-text-primary:#fef3c7;--palette-text-secondary:#d6d3d1;--palette-text-disabled:hsla(48,96%,89%,.38);--palette-text-inverted:#0c0a09;--palette-border-main:#78716c;--palette-border-light:hsla(48,96%,89%,.12);--palette-border-lighter:hsla(48,96%,89%,.05);--palette-border-medium:#57534e;--palette-success-main:#4ade80;--palette-success-light:#14532d;--palette-success-dark:#22c55e;--palette-success-border:#166534;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#eab308;--palette-warning-light:#78350f;--palette-warning-dark:#ca8a04;--palette-warning-border:#a16207;--palette-info-main:#22d3ee;--palette-info-light:#164e63;--palette-info-dark:#06b6d4;--palette-on-info:#0c0a09;--palette-info-border:#0891b2;--palette-accent-main:#b91c1c;--palette-accent-light:#dc2626;--palette-accent-dark:#7f1d1d;--palette-on-accent:#fef3c7;--palette-control-main:#292524;--palette-control-light:#44403c;--palette-control-text:#f5f5f4;--palette-control-border:#57534e}html[data-palette=ocean]:not([data-theme=dark]),html[data-palette=ocean][data-theme=light]{--palette-primary-main:#0891b2;--palette-primary-light:#22d3ee;--palette-primary-dark:#164e63;--palette-on-primary:#fff;--palette-secondary-main:#0f766e;--palette-secondary-light:#14b8a6;--palette-secondary-dark:#134e4a;--palette-on-secondary:#fff;--palette-surface-main:#f0fdfa;--palette-surface-variant:#ccfbf1;--palette-surface-elevated:#fff;--palette-on-surface:#164e63;--palette-background-main:#ecfeff;--palette-background-dark:#cffafe;--palette-background-overlay:rgba(236,254,255,.95);--palette-on-background:#0f766e;--palette-header-bg-start:rgba(236,254,255,.98);--palette-header-bg-end:rgba(236,254,255,.95);--palette-header-collapsed-bg-start:rgba(236,254,255,.99);--palette-header-collapsed-bg-end:rgba(236,254,255,.96);--palette-text-primary:#164e63;--palette-text-secondary:#0891b2;--palette-text-disabled:rgba(22,78,99,.38);--palette-text-inverted:#fff;--palette-border-main:#a7f3d0;--palette-border-light:rgba(22,78,99,.12);--palette-border-lighter:rgba(22,78,99,.05);--palette-border-medium:#67e8f9;--palette-success-main:#059669;--palette-success-light:#d1fae5;--palette-success-dark:#065f46;--palette-success-border:#a7f3d0;--palette-error-main:#ef4444;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-error-border:#fecaca;--palette-warning-main:#f59e0b;--palette-warning-light:#fef3c7;--palette-warning-dark:#78350f;--palette-warning-border:#fde68a;--palette-info-main:#0ea5e9;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#fff;--palette-info-border:#7dd3fc;--palette-accent-main:#f97316;--palette-accent-light:#fb923c;--palette-accent-dark:#ea580c;--palette-on-accent:#fff;--palette-control-main:#0c4a6e;--palette-control-light:#075985;--palette-control-text:#cffafe;--palette-control-border:#0891b2}html[data-palette=ocean][data-theme=dark]{--palette-primary-main:#22d3ee;--palette-primary-light:#67e8f9;--palette-primary-dark:#0891b2;--palette-on-primary:#0a1a1f;--palette-secondary-main:#5eead4;--palette-secondary-light:#99f6e4;--palette-secondary-dark:#14b8a6;--palette-on-secondary:#0a1a1f;--palette-surface-main:#0a1a1f;--palette-surface-variant:#164e63;--palette-surface-elevated:#0e7490;--palette-on-surface:#cffafe;--palette-background-main:#020617;--palette-background-dark:#0c1821;--palette-background-overlay:rgba(10,26,31,.95);--palette-on-background:#5eead4;--palette-header-bg-start:rgba(2,6,23,.98);--palette-header-bg-end:rgba(2,6,23,.95);--palette-header-collapsed-bg-start:rgba(2,6,23,.99);--palette-header-collapsed-bg-end:rgba(2,6,23,.96);--palette-text-primary:#cffafe;--palette-text-secondary:#a5f3fc;--palette-text-disabled:rgba(207,250,254,.38);--palette-text-inverted:#020617;--palette-border-main:#155e75;--palette-border-light:rgba(207,250,254,.12);--palette-border-lighter:rgba(207,250,254,.05);--palette-border-medium:#0c4a6e;--palette-success-main:#34d399;--palette-success-light:#065f46;--palette-success-dark:#10b981;--palette-success-border:#047857;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb7185;--palette-warning-light:#881337;--palette-warning-dark:#e11d48;--palette-warning-border:#be123c;--palette-info-main:#0ea5e9;--palette-info-light:#0c4a6e;--palette-info-dark:#38bdf8;--palette-on-info:#020617;--palette-info-border:#0284c7;--palette-accent-main:#ea580c;--palette-accent-light:#fb923c;--palette-accent-dark:#c2410c;--palette-on-accent:#cffafe;--palette-control-main:#164e63;--palette-control-light:#0e7490;--palette-control-text:#ecfeff;--palette-control-border:#155e75}html[data-palette=spring]:not([data-theme=dark]),html[data-palette=spring][data-theme=light]{--palette-primary-main:#16a34a;--palette-primary-light:#4ade80;--palette-primary-dark:#15803d;--palette-on-primary:#fff;--palette-secondary-main:#ec4899;--palette-secondary-light:#f472b6;--palette-secondary-dark:#be185d;--palette-on-secondary:#fff;--palette-surface-main:#f7fee7;--palette-surface-variant:#d9f7be;--palette-surface-elevated:#fff;--palette-on-surface:#14532d;--palette-background-main:#f0fdf4;--palette-background-dark:#dcfce7;--palette-background-overlay:rgba(240,253,244,.95);--palette-on-background:#166534;--palette-text-primary:#14532d;--palette-text-secondary:#166534;--palette-text-disabled:rgba(20,83,45,.38);--palette-text-inverted:#fff;--palette-border-main:#bbf7d0;--palette-border-light:rgba(20,83,45,.12);--palette-border-lighter:rgba(20,83,45,.05);--palette-border-medium:#86efac;--palette-success-main:#22c55e;--palette-success-light:#dcfce7;--palette-success-dark:#15803d;--palette-success-border:#bbf7d0;--palette-error-main:#f43f5e;--palette-error-light:#ffe4e6;--palette-error-dark:#881337;--palette-error-border:#fecdd3;--palette-warning-main:#eab308;--palette-warning-light:#fefce8;--palette-warning-dark:#713f12;--palette-warning-border:#fef08a;--palette-info-main:#0ea5e9;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#14532d;--palette-info-border:#7dd3fc;--palette-accent-main:#ec4899;--palette-accent-light:#fce7f3;--palette-accent-dark:#be185d;--palette-on-accent:#fff;--palette-control-main:#365314;--palette-control-light:#4d7c0f;--palette-control-text:#ecfdf5;--palette-control-border:#65a30d}html[data-palette=spring][data-theme=dark]{--palette-primary-main:#4ade80;--palette-primary-light:#86efac;--palette-primary-dark:#16a34a;--palette-on-primary:#0f1f0f;--palette-secondary-main:#f472b6;--palette-secondary-light:#f9a8d4;--palette-secondary-dark:#ec4899;--palette-on-secondary:#0f1f0f;--palette-surface-main:#0f1f0f;--palette-surface-variant:#1a2e1a;--palette-surface-elevated:#2d4a2d;--palette-on-surface:#dcfce7;--palette-background-main:#0a120a;--palette-background-dark:#0f1f0f;--palette-background-overlay:rgba(15,31,15,.95);--palette-on-background:#bbf7d0;--palette-text-primary:#dcfce7;--palette-text-secondary:#bbf7d0;--palette-text-disabled:rgba(220,252,231,.38);--palette-text-inverted:#0a120a;--palette-border-main:#166534;--palette-border-light:rgba(220,252,231,.12);--palette-border-lighter:rgba(220,252,231,.05);--palette-border-medium:#14532d;--palette-success-main:#22c55e;--palette-success-light:#14532d;--palette-success-dark:#4ade80;--palette-success-border:#166534;--palette-error-main:#f472b6;--palette-error-light:#881337;--palette-error-dark:#ec4899;--palette-error-border:#be185d;--palette-warning-main:#facc15;--palette-warning-light:#713f12;--palette-warning-dark:#eab308;--palette-warning-border:#a16207;--palette-info-main:#06b6d4;--palette-info-light:#164e63;--palette-info-dark:#22d3ee;--palette-on-info:#0a120a;--palette-info-border:#0891b2;--palette-accent-main:#f472b6;--palette-accent-light:#fce7f3;--palette-accent-dark:#db2777;--palette-on-accent:#dcfce7;--palette-control-main:#1a2e1a;--palette-control-light:#2d4a2d;--palette-control-text:#dcfce7;--palette-control-border:#166534}html[data-palette=winter]:not([data-theme=dark]),html[data-palette=winter][data-theme=light]{--palette-primary-main:#0077be;--palette-primary-light:#5ba3d0;--palette-primary-dark:#005082;--palette-on-primary:#fff;--palette-secondary-main:#4682b4;--palette-secondary-light:#7ba7cc;--palette-secondary-dark:#2e5984;--palette-on-secondary:#fff;--palette-surface-main:#fafbfc;--palette-surface-variant:#e2e8f0;--palette-surface-elevated:#fff;--palette-on-surface:#0f172a;--palette-background-main:#f8fafc;--palette-background-dark:#f1f5f9;--palette-background-overlay:rgba(248,250,252,.95);--palette-on-background:#475569;--palette-header-bg-start:rgba(248,250,252,.98);--palette-header-bg-end:rgba(248,250,252,.95);--palette-header-collapsed-bg-start:rgba(248,250,252,.99);--palette-header-collapsed-bg-end:rgba(248,250,252,.96);--palette-text-primary:#0f172a;--palette-text-secondary:#475569;--palette-text-disabled:rgba(15,23,42,.38);--palette-text-inverted:#fff;--palette-border-main:#cbd5e1;--palette-border-light:rgba(15,23,42,.12);--palette-border-lighter:rgba(15,23,42,.05);--palette-border-medium:#94a3b8;--palette-success-main:#059669;--palette-success-light:#d1fae5;--palette-success-dark:#064e3b;--palette-success-border:#a7f3d0;--palette-error-main:#dc2626;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-error-border:#fecaca;--palette-warning-main:#d97706;--palette-warning-light:#fef3c7;--palette-warning-dark:#92400e;--palette-warning-border:#fde68a;--palette-info-main:#0284c7;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#fff;--palette-info-border:#7dd3fc;--palette-accent-main:#ec4899;--palette-accent-light:#fce7f3;--palette-accent-dark:#be185d;--palette-on-accent:#fff;--palette-control-main:#1e293b;--palette-control-light:#334155;--palette-control-text:#e2e8f0;--palette-control-border:#475569}html[data-palette=winter][data-theme=dark]{--palette-primary-main:#7dd3fc;--palette-primary-light:#bae6fd;--palette-primary-dark:#0369a1;--palette-on-primary:#020617;--palette-secondary-main:#94a3b8;--palette-secondary-light:#cbd5e1;--palette-secondary-dark:#64748b;--palette-on-secondary:#020617;--palette-surface-main:#0f172a;--palette-surface-variant:#1e293b;--palette-surface-elevated:#334155;--palette-on-surface:#f8fafc;--palette-background-main:#020617;--palette-background-dark:#0f172a;--palette-background-overlay:rgba(15,23,42,.95);--palette-on-background:#cbd5e1;--palette-header-bg-start:rgba(2,6,23,.98);--palette-header-bg-end:rgba(2,6,23,.95);--palette-header-collapsed-bg-start:rgba(2,6,23,.99);--palette-header-collapsed-bg-end:rgba(2,6,23,.96);--palette-text-primary:#f8fafc;--palette-text-secondary:#cbd5e1;--palette-text-disabled:rgba(248,250,252,.38);--palette-text-inverted:#020617;--palette-border-main:#475569;--palette-border-light:rgba(248,250,252,.12);--palette-border-lighter:rgba(248,250,252,.05);--palette-border-medium:#334155;--palette-success-main:#34d399;--palette-success-light:#064e3b;--palette-success-dark:#10b981;--palette-success-border:#065f46;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb923c;--palette-warning-light:#9a3412;--palette-warning-dark:#f97316;--palette-warning-border:#c2410c;--palette-info-main:#38bdf8;--palette-info-light:#0c4a6e;--palette-info-dark:#0ea5e9;--palette-on-info:#020617;--palette-info-border:#0284c7;--palette-accent-main:#f472b6;--palette-accent-light:#fce7f3;--palette-accent-dark:#db2777;--palette-on-accent:#f8fafc;--palette-control-main:#1e293b;--palette-control-light:#334155;--palette-control-text:#e2e8f0;--palette-control-border:#475569}html[data-palette=cosmic]:not([data-theme=dark]),html[data-palette=cosmic][data-theme=light]{--palette-primary-main:#8b5cf6;--palette-primary-light:#a78bfa;--palette-primary-dark:#7c3aed;--palette-on-primary:#fff;--palette-secondary-main:#8b5cf6;--palette-secondary-light:#c4b5fd;--palette-secondary-dark:#6d28d9;--palette-on-secondary:#fff;--palette-surface-main:#faf7ff;--palette-surface-variant:#f3e8ff;--palette-surface-elevated:#fff;--palette-on-surface:#4c1d95;--palette-background-main:#fef7ff;--palette-background-dark:#fae8ff;--palette-background-overlay:rgba(254,247,255,.95);--palette-on-background:#6b21a8;--palette-header-bg-start:rgba(254,247,255,.98);--palette-header-bg-end:rgba(254,247,255,.95);--palette-header-collapsed-bg-start:rgba(254,247,255,.99);--palette-header-collapsed-bg-end:rgba(254,247,255,.96);--palette-text-primary:#4c1d95;--palette-text-secondary:#7c3aed;--palette-text-disabled:rgba(76,29,149,.38);--palette-text-inverted:#fff;--palette-border-main:#c4b5fd;--palette-border-light:rgba(76,29,149,.12);--palette-border-lighter:rgba(76,29,149,.05);--palette-border-medium:#a78bfa;--palette-success-main:#10b981;--palette-success-light:#d1fae5;--palette-success-dark:#047857;--palette-success-border:#6ee7b7;--palette-error-main:#ef4444;--palette-error-light:#fee2e2;--palette-error-dark:#b91c1c;--palette-error-border:#fecaca;--palette-warning-main:#f59e0b;--palette-warning-light:#fef3c7;--palette-warning-dark:#b45309;--palette-warning-border:#fde68a;--palette-info-main:#3b82f6;--palette-info-light:#dbeafe;--palette-info-dark:#1d4ed8;--palette-on-info:#fff;--palette-info-border:#93c5fd;--palette-accent-main:#ec4899;--palette-accent-light:#f472b6;--palette-accent-dark:#be185d;--palette-on-accent:#fff;--palette-control-main:#1e1b4b;--palette-control-light:#3730a3;--palette-control-text:#e0e7ff;--palette-control-border:#8b5cf6}html[data-palette=cosmic][data-theme=dark]{--palette-primary-main:#a78bfa;--palette-primary-light:#c4b5fd;--palette-primary-dark:#8b5cf6;--palette-on-primary:#1e1b4b;--palette-secondary-main:#c4b5fd;--palette-secondary-light:#ddd6fe;--palette-secondary-dark:#a78bfa;--palette-on-secondary:#1e1b4b;--palette-surface-main:#1e1b4b;--palette-surface-variant:#312e81;--palette-surface-elevated:#3730a3;--palette-on-surface:#e0e7ff;--palette-background-main:#0f0c29;--palette-background-dark:#1a1625;--palette-background-overlay:rgba(15,12,41,.95);--palette-on-background:#c4b5fd;--palette-header-bg-start:rgba(15,12,41,.98);--palette-header-bg-end:rgba(15,12,41,.95);--palette-header-collapsed-bg-start:rgba(15,12,41,.99);--palette-header-collapsed-bg-end:rgba(15,12,41,.96);--palette-text-primary:#e0e7ff;--palette-text-secondary:#c4b5fd;--palette-text-disabled:rgba(224,231,255,.38);--palette-text-inverted:#0f0c29;--palette-border-main:#4338ca;--palette-border-light:rgba(224,231,255,.12);--palette-border-lighter:rgba(224,231,255,.05);--palette-border-medium:#312e81;--palette-success-main:#34d399;--palette-success-light:#047857;--palette-success-dark:#10b981;--palette-success-border:#065f46;--palette-error-main:#f87171;--palette-error-light:#b91c1c;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb7185;--palette-warning-light:#881337;--palette-warning-dark:#e11d48;--palette-warning-border:#be123c;--palette-info-main:#60a5fa;--palette-info-light:#1d4ed8;--palette-info-dark:#3b82f6;--palette-on-info:#0f0c29;--palette-info-border:#2563eb;--palette-accent-main:#f472b6;--palette-accent-light:#f9a8d4;--palette-accent-dark:#ec4899;--palette-on-accent:#0f0c29;--palette-control-main:#312e81;--palette-control-light:#4338ca;--palette-control-text:#f3f4f6;--palette-control-border:#4338ca}.dynamic-logo{transition:all .3s ease}.dynamic-logo:hover{transform:scale(1.05)}.logo-first-part{fill:var(--theme-primary);transition:fill .3s ease}.logo-second-part{fill:var(--theme-accent);transition:fill .3s ease}.logo-badge{fill:var(--theme-warning);transition:fill .3s ease}.logo-badge-circle{opacity:.9}.logo-badge-star{fill:var(--theme-accent,var(--theme-warning));opacity:.8}.logo-badge-square{fill:var(--theme-info,var(--theme-warning));opacity:.7}.logo-badge-heart{fill:var(--theme-error,var(--theme-warning));opacity:.8}.logo-tiny,.logo-tiny .logo-first-part,.logo-tiny .logo-second-part{font-size:16px}.logo-small,.logo-small .logo-first-part,.logo-small .logo-second-part{font-size:20px}.logo-medium,.logo-medium .logo-first-part,.logo-medium .logo-second-part{font-size:28px}.logo-large,.logo-large .logo-first-part,.logo-large .logo-second-part{font-size:36px}.logo-extra-large,.logo-extra-large .logo-first-part,.logo-extra-large .logo-second-part{font-size:48px}.dynamic-logo.logo-high-contrast .logo-first-part{filter:drop-shadow(0 0 2px var(--theme-accent));opacity:1}.dynamic-logo.logo-high-contrast .logo-second-part{filter:drop-shadow(0 0 2px var(--theme-warning));opacity:1}.dynamic-logo.logo-high-contrast .logo-badge{filter:drop-shadow(0 0 2px var(--theme-primary));opacity:1}.dynamic-logo.logo-monochrome .logo-first-part,.dynamic-logo.logo-monochrome .logo-second-part{fill:#000;font-weight:900}.dynamic-logo.logo-monochrome .logo-badge{fill:#000;opacity:.8}html[data-theme=dark] .dynamic-logo.logo-monochrome .logo-badge,html[data-theme=dark] .dynamic-logo.logo-monochrome .logo-first-part,html[data-theme=dark] .dynamic-logo.logo-monochrome .logo-second-part{fill:#fff}.dynamic-logo.logo-on-primary .logo-first-part{fill:var(--theme-text-inverted,#fff);font-weight:700}.dynamic-logo.logo-on-primary .logo-second-part{fill:var(--theme-accent-light,#60a5fa);font-weight:700}.dynamic-logo.logo-on-primary .logo-badge{fill:var(--theme-warning,#ffb020);opacity:.9}.dynamic-logo.colorway-accent .logo-first-part{fill:var(--theme-accent,var(--theme-success))}.dynamic-logo.colorway-accent .logo-second-part{fill:var(--theme-info)}.dynamic-logo.colorway-accent .logo-badge{fill:var(--theme-error)}.dynamic-logo.colorway-vibrant .logo-first-part{fill:var(--theme-primary)}.dynamic-logo.colorway-vibrant .logo-second-part{fill:var(--theme-accent,var(--theme-success))}.dynamic-logo.colorway-vibrant .logo-badge{fill:var(--theme-warning)}.dynamic-logo.logo-default .logo-first-part{fill:var(--theme-primary,#3b82f6)}.dynamic-logo.logo-default .logo-second-part{fill:var(--theme-accent,var(--theme-secondary,#6366f1))}.dynamic-logo.logo-default .logo-badge{fill:var(--theme-warning,#f59e0b)}.custom-first-part{fill:#ff6b35!important;font-weight:900!important}.custom-second-part{fill:#004e89!important;font-weight:200!important}.custom-styling{filter:drop-shadow(0 0 3px rgba(255,107,53,.4));text-shadow:1px 1px 2px rgba(0,0,0,.3)}.gradient-text{fill:url(#textGradient);font-weight:600}.page{--page-padding-none:0;--page-padding-small:1rem;--page-padding-medium:1.5rem;--page-padding-large:2rem;min-height:100%;width:100%}.page-variant-centered{align-items:center;display:flex;flex-direction:column;text-align:center}.page-variant-narrow{margin:0 auto;max-width:600px}.page-variant-wide{margin:0 auto;max-width:1400px}.page-variant-fullwidth{max-width:none;width:100%}.page-padding-none{padding:var(--page-padding-none)}.page-padding-small{padding:var(--page-padding-small)}.page-padding-medium{padding:var(--page-padding-medium)}.page-padding-large{padding:var(--page-padding-large)}.page-background-default{background:transparent}.page-background-surface{background:var(--theme-surface)}.page-background-alternate{background:var(--theme-surface-variant)}.page-max-width-small{margin-left:auto;margin-right:auto;max-width:600px}.page-max-width-medium{margin-left:auto;margin-right:auto;max-width:800px}.page-max-width-large{margin-left:auto;margin-right:auto;max-width:1200px}.page-max-width-extra-large{margin-left:auto;margin-right:auto;max-width:1400px}.page-max-width-none{max-width:none}.page-header{margin-bottom:1.5rem}.page-footer{margin-top:1.5rem}.page-title{color:var(--theme-on-background);flex:1;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:600;line-height:1.2;margin:0;transition:font-size .3s ease,font-weight .3s ease,margin .3s ease}.page-title-collapsed .page-title{font-size:clamp(1.25rem,3vw,1.75rem);font-weight:500;margin-bottom:.5rem}.page-title-collapsed .page-header{margin-bottom:1rem}.page-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem}.page-content{color:var(--theme-on-background);line-height:1.6;max-height:calc(100vh - var(--page-header-height, 200px));overflow-y:auto}.page-loading{color:var(--theme-on-background);flex-direction:column;gap:1rem;min-height:200px;text-align:center}.loading-spinner,.page-loading{align-items:center;display:flex;justify-content:center}.spinner{animation:spin 1s linear infinite;border-top:3px solid var(--theme-outline-variant);border:3px solid var(--theme-outline-variant);border-radius:50%;border-top-color:var(--theme-primary);height:40px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.page-loading-bar{background:var(--theme-outline-variant);height:4px;overflow:hidden;position:relative;width:100%}.page-loading-bar-top{left:0;position:absolute;right:0;top:0}.page-loading-bar-bottom{bottom:0;left:0;position:absolute;right:0}.loading-bar-progress{animation:loading-bar-slide 2s ease-in-out infinite;background:linear-gradient(90deg,var(--theme-primary),var(--theme-secondary));height:100%;width:30%}@keyframes loading-bar-slide{0%{transform:translateX(-100%)}50%{transform:translateX(350%)}to{transform:translateX(-100%)}}.page-loading-dots{min-height:120px}.loading-dots{align-items:center;display:flex;gap:8px}.loading-dots span{animation:loading-dots-bounce 1.4s ease-in-out infinite both;background:var(--theme-primary);border-radius:50%;height:8px;width:8px}.loading-dots span:first-child{animation-delay:-.32s}.loading-dots span:nth-child(2){animation-delay:-.16s}@keyframes loading-dots-bounce{0%,80%,to{opacity:.5;transform:scale(0)}40%{opacity:1;transform:scale(1)}}.loading-message{font-size:.875rem;margin-top:1rem;opacity:.8}.loading-message,.page-message{color:var(--theme-on-background)}.page-message{align-items:flex-start;background:var(--theme-surface-variant);border-left:4px solid;border-radius:var(--theme-border-radius,8px);display:flex;gap:1rem;margin:1rem 0;padding:1rem 1.5rem}.page-message-error{background:rgba(220,38,38,.05);border-left-color:var(--theme-error,#dc2626);color:var(--theme-error,#dc2626)}.page-message-warning{background:rgba(245,158,11,.05);border-left-color:var(--theme-warning,#f59e0b);color:var(--theme-warning,#f59e0b)}.page-message-success{background:rgba(16,185,129,.05);border-left-color:var(--theme-success,#10b981);color:var(--theme-success,#10b981)}.page-message-info{background:rgba(59,130,246,.05);border-left-color:var(--theme-info,#3b82f6);color:var(--theme-info,#3b82f6)}.page-message-loading{background:rgba(var(--theme-primary-rgb,59,130,246),.05);border-left-color:var(--theme-primary);color:var(--theme-primary)}.message-icon{flex-shrink:0;font-size:1.5rem;margin-top:.125rem}.message-content{flex:1;min-width:0}.message-content p{font-size:.875rem;line-height:1.5;margin:0}.message-content h3{font-size:1rem;font-weight:600;margin:0 0 .5rem}.page-message.message-compact{margin:.5rem 0;padding:.75rem 1rem}.page-message.message-prominent{flex-direction:column;justify-content:center;margin:1.5rem 0;min-height:200px;padding:1.5rem 2rem;text-align:center}.page-message.message-prominent .message-icon{font-size:3rem;margin:0 auto 1rem}.page-message.message-prominent .message-content{text-align:center}@media (max-width:768px){.page-header{align-items:stretch;flex-direction:column;gap:1rem}.page-title{font-size:clamp(1.5rem,6vw,2rem)}.page-header-actions{justify-content:flex-start}.page-padding-medium{padding:var(--page-padding-small)}.page-padding-large{padding:var(--page-padding-medium)}.page-max-width-extra-large,.page-max-width-large,.page-max-width-medium,.page-max-width-small{margin-left:1rem;margin-right:1rem;max-width:calc(100% - 2rem)}}@media (max-width:480px){.page-header-actions{justify-content:stretch;width:100%;>*{flex:1;min-width:0}}.retry-button{max-width:300px;width:100%}}@media (prefers-contrast:high){.page-title{font-weight:700}.spinner{border-width:4px}.retry-button{border:2px solid var(--theme-on-primary)}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}.retry-button{transition:none}.retry-button:hover{transform:none}}@media print{.page-error,.page-header-actions,.page-loading{display:none}.page-title{color:#000;font-size:1.5rem}.page-content{color:#000}}.app-scaffold{--appbar-height:64px;--bottom-nav-height:80px;--rail-width-collapsed:80px;--rail-width-expanded:280px;--touch-target-size:48px;--scaffold-background:var(--theme-background);--scaffold-surface:var(--theme-surface);--scaffold-on-surface:var(--theme-on-surface);--scaffold-primary:var(--theme-primary);--scaffold-on-primary:var(--theme-on-primary);--scaffold-outline:var(--theme-border-main);--scaffold-shadow:var(--theme-elevation-2);background:var(--scaffold-background);font-family:var(--theme-font-family,"Segoe UI",sans-serif);min-height:100vh;position:relative}.app-scaffold-appbar{background:var(--scaffold-surface);border-bottom:1px solid var(--scaffold-outline);box-shadow:var(--scaffold-shadow);left:0;position:fixed;right:0;top:0;z-index:1100}.appbar-content{align-items:center;display:flex;height:100%;margin:0 auto;max-width:1200px;padding:0 16px}.appbar-center,.appbar-left,.appbar-right{align-items:center;display:flex;gap:8px}.appbar-left{flex:0 0 auto}.appbar-center{flex:1;justify-content:center;position:relative}.appbar-right{flex:0 0 auto}.appbar-logo{align-items:center;display:flex;height:40px}.appbar-navigation{align-items:center;display:flex;gap:4px}.appbar-actions,.appbar-page-actions{align-items:center;display:flex;gap:8px}.menu-button{align-items:center;background:transparent;border:none;border-radius:50%;color:var(--scaffold-on-surface);cursor:pointer;display:flex;height:var(--touch-target-size);justify-content:center;transition:background-color .2s ease;width:var(--touch-target-size);&:hover{background:rgba(0,0,0,.04)}&:active{background:rgba(0,0,0,.08)}}.hamburger-icon{span{background:currentColor;border-radius:1px;display:block;height:2px;transition:all .3s ease;width:100%}}.menu-item{border-radius:12px;color:var(--scaffold-on-surface);font-size:14px;font-weight:500;justify-content:center;min-height:var(--touch-target-size);min-width:var(--touch-target-size);padding:12px 16px;&:hover:not(.disabled){background:rgba(0,0,0,.04)}&:active:not(.disabled){background:rgba(0,0,0,.08)}&.active{background:var(--scaffold-primary);color:var(--scaffold-on-primary)}&.disabled{cursor:default;opacity:.38}}.menu-item-label{font-size:inherit;font-weight:inherit}.menu-item-badge{align-items:center;border-radius:10px;display:flex;font-size:11px;height:16px;justify-content:center;line-height:1;min-width:16px;padding:2px 6px;position:absolute;right:6px;top:6px}.menu-item-appbar{flex-direction:row;gap:8px;min-width:auto;padding:8px 16px}.menu-item-icon-appbar{height:20px;width:20px}.menu-item-label-appbar{font-size:14px}.bottom-navigation{background:var(--scaffold-surface);border-top:1px solid var(--scaffold-outline);bottom:0;box-shadow:0 -2px 8px rgba(0,0,0,.1);height:var(--bottom-nav-height);left:0;position:fixed;right:0;z-index:1000}.bottom-nav-items{align-items:center;display:flex;height:100%;justify-content:space-around;margin:0 auto;max-width:600px;padding:0 8px}.menu-item-bottom{flex:1;flex-direction:column;gap:4px;max-width:120px;min-width:64px;padding:8px 12px;text-align:center}.menu-item-icon-bottom{height:24px;margin:0 auto;width:24px}.menu-item-label-bottom{font-size:12px;font-weight:500;line-height:1}.navigation-rail{background:var(--scaffold-surface);border-right:1px solid var(--scaffold-outline);bottom:0;box-shadow:2px 0 8px rgba(0,0,0,.1);left:0;overflow:hidden;position:fixed;top:var(--appbar-height);transition:width .3s ease;z-index:1000;&.collapsed{width:var(--rail-width-collapsed)}&.expanded{width:var(--rail-width-expanded)}}.rail-items{display:flex;flex-direction:column;gap:4px;height:100%;overflow-y:auto;padding:12px}.menu-item-rail{flex-direction:row;gap:12px;justify-content:flex-start;min-width:var(--touch-target-size);padding:12px 16px;.collapsed &{justify-content:center;padding:12px;.menu-item-label{display:none}}}.menu-item-icon-rail{height:24px;width:24px}.menu-item-label-rail{font-size:14px;font-weight:500}.drawer-overlay{animation:fadeIn .2s ease;background:rgba(0,0,0,.5);left:0;z-index:1200}.drawer-overlay,.navigation-drawer{bottom:0;position:fixed;right:0;top:0}.navigation-drawer{animation:slideInRight .3s ease;background:var(--scaffold-surface,#fff);box-shadow:-5px 0 20px rgba(0,0,0,.2);display:flex;flex-direction:column;max-width:80vw;overflow:hidden;width:320px}.drawer-header{border-bottom:1px solid var(--scaffold-outline);justify-content:space-between;min-height:var(--appbar-height);padding:16px 24px;h3{color:var(--scaffold-on-surface);font-size:20px;font-weight:500;margin:0}}.drawer-close,.drawer-header{align-items:center;display:flex}.drawer-close{background:transparent;border:none;border-radius:50%;color:var(--scaffold-on-surface);cursor:pointer;font-size:24px;height:var(--touch-target-size);justify-content:center;width:var(--touch-target-size);&:hover{background:rgba(0,0,0,.04)}}.drawer-items{flex:1;overflow-y:auto;padding:8px}.drawer-section{margin-bottom:16px;h4{color:var(--scaffold-primary);font-size:14px;font-weight:600;letter-spacing:.5px;margin:0 0 8px;padding:8px 16px;text-transform:uppercase}}.menu-item-drawer{flex-direction:row;gap:16px;justify-content:flex-start;margin:2px 0;padding:12px 16px;width:100%}.menu-item-icon-drawer{height:24px;width:24px}.menu-item-label-drawer{flex:1;font-size:16px;font-weight:400;text-align:left}.app-scaffold-content{background:var(--scaffold-background);min-height:100vh;padding-bottom:var(--bottom-nav-height,80px);padding-top:var(--appbar-height,64px);transition:padding .3s ease}@media (max-width:599px){.appbar-content{padding:0 8px}.menu-button{height:40px;width:40px}.bottom-nav-items{padding:0 4px}.menu-item-bottom{min-width:56px}}@media (min-width:600px) and (max-width:1023px){.appbar-content{padding:0 12px}}@media (min-width:1024px){.appbar-content{padding:0 16px}}@media (prefers-contrast:high){.menu-item:hover:not(.disabled){background:rgba(0,0,0,.1);outline:2px solid var(--scaffold-on-surface)}.menu-item.active{outline:2px solid var(--scaffold-on-primary)}}@media (prefers-reduced-motion:reduce){.app-scaffold-content,.hamburger-icon span,.menu-item,.navigation-rail{transition:none}.drawer-overlay,.navigation-drawer{animation:none}}@media (prefers-color-scheme:dark){.app-scaffold{--scaffold-shadow:0 2px 8px rgba(0,0,0,.3)}.menu-item:hover:not(.disabled){background:hsla(0,0%,100%,.08)}.menu-item:active:not(.disabled){background:hsla(0,0%,100%,.12)}.menu-button:hover{background:hsla(0,0%,100%,.08)}.menu-button:active{background:hsla(0,0%,100%,.12)}}.responsive-menu{--menu-bg:var(--theme-surface);--menu-text:var(--theme-on-surface);--menu-hover:var(--theme-surface-variant);--menu-active:var(--theme-primary);--menu-active-text:var(--theme-on-primary);--menu-border:var(--theme-outline-variant);--menu-shadow:rgba(0,0,0,.1);font-family:var(--theme-font-family,"Segoe UI",sans-serif);font-size:var(--theme-font-size-body,14px);line-height:1.5}.menu-item{align-items:center;background:transparent;border:none;border-radius:var(--theme-border-radius,8px);color:var(--menu-text);cursor:pointer;display:flex;font-family:inherit;font-size:inherit;gap:.75rem;min-height:48px;padding:.75rem 1rem;position:relative;text-decoration:none;transition:all .2s ease}.menu-item:hover:not(.disabled){background:var(--menu-hover);transform:translateY(-1px)}.menu-item:active:not(.disabled){transform:translateY(0)}.menu-item.active{background:transparent;color:var(--menu-active);font-weight:600}.menu-item.disabled{cursor:not-allowed;opacity:.5}.menu-item-icon{align-items:center;display:flex;flex-shrink:0;height:24px;justify-content:center;width:24px}.menu-item-label{flex:1;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.menu-item-badge{background:var(--theme-error,#dc2626);border-radius:12px;color:var(--theme-on-error,#fff);font-size:.75rem;font-weight:600;min-width:20px;padding:.125rem .375rem;text-align:center}.hamburger-icon{cursor:pointer;display:flex;flex-direction:column;gap:3px;height:16px;width:20px;span{background:currentColor;border-radius:1px;display:block;height:2px;transition:all .3s ease;width:100%}}.mobile-bottom-nav{background:var(--menu-bg);border-top:1px solid var(--menu-border);bottom:0;box-shadow:0 -2px 10px var(--menu-shadow);left:0;position:fixed;right:0;z-index:1000;.mobile-nav-items{-ms-overflow-style:none;align-items:center;display:flex;justify-content:space-around;max-width:100%;overflow-x:auto;padding:.5rem 0;scrollbar-width:none}.mobile-nav-items::-webkit-scrollbar{display:none}.menu-item{flex:1;flex-direction:column;gap:.25rem;max-width:100px;min-width:0;padding:.5rem .75rem;text-align:center;.menu-item-icon{margin:0 auto}.menu-item-label{font-size:.75rem;text-align:center}}}.tablet-nav-rail{background:var(--menu-bg);border-right:1px solid var(--menu-border);box-shadow:2px 0 10px var(--menu-shadow);height:100vh;left:0;overflow:hidden;position:fixed;top:0;transition:width .3s ease;z-index:1000;&.collapsed{width:72px}&.expanded{width:280px}.nav-rail-header{align-items:center;border-bottom:1px solid var(--menu-border);display:flex;justify-content:space-between;min-height:72px;padding:1rem}.nav-rail-logo{flex:1;overflow:hidden;transition:opacity .3s ease}.nav-rail-toggle{background:transparent;border:none;border-radius:var(--theme-border-radius,8px);color:var(--menu-text);cursor:pointer;padding:.5rem}.nav-rail-toggle:hover{background:var(--menu-hover)}.nav-rail-items{display:flex;flex-direction:column;gap:.5rem;height:calc(100vh - 72px);overflow-y:auto;padding:1rem}&.collapsed{.nav-rail-logo{opacity:0}.menu-item{justify-content:center;.menu-item-label{display:none}}}}.desktop-top-nav{background:var(--menu-bg);border-bottom:1px solid var(--menu-border);box-shadow:0 2px 10px var(--menu-shadow);position:sticky;top:0;z-index:1000;.top-nav-content{align-items:center;display:flex;height:64px;margin:0 auto;max-width:1200px;padding:0 2rem}.top-nav-logo{&.logo-left{margin-right:2rem}&.logo-center{left:50%;position:absolute;transform:translateX(-50%)}&.logo-right{margin-left:2rem}}.top-nav-items{align-items:center;display:flex;flex:1;gap:.5rem;justify-content:center;.logo-left~&{justify-content:flex-start}.logo-right~&{justify-content:flex-end}}.menu-toggle{background:transparent;border:none;border-radius:var(--theme-border-radius,8px);color:var(--menu-text);cursor:pointer;padding:.75rem}.menu-toggle:hover{background:var(--menu-hover)}}.menu-drawer-overlay{animation:fadeIn .2s ease;background:rgba(0,0,0,.5);bottom:0;left:0;position:fixed;right:0;top:0;z-index:2000}.menu-drawer{animation:slideInRight .3s ease;background:var(--menu-bg);box-shadow:-5px 0 20px var(--menu-shadow);display:flex;flex-direction:column;height:100vh;max-width:90vw;position:fixed;right:0;top:0;width:320px;.drawer-header{align-items:center;border-bottom:1px solid var(--menu-border);display:flex;justify-content:space-between;padding:1.5rem 2rem;h3{color:var(--menu-text);font-size:1.25rem;font-weight:600;margin:0}}.drawer-close{background:transparent;border:none;border-radius:var(--theme-border-radius,8px);color:var(--menu-text);cursor:pointer;font-size:1.5rem;padding:.25rem}.drawer-close:hover{background:var(--menu-hover)}.drawer-items{display:flex;flex:1;flex-direction:column;gap:.5rem;overflow-y:auto;padding:1rem 2rem}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInRight{0%{transform:translateX(100%)}to{transform:translateX(0)}}@media (max-width:767px){body{padding-bottom:80px}}@media (min-width:768px) and (max-width:1024px){body{margin-left:72px}}@media (prefers-color-scheme:dark){.responsive-menu{--menu-shadow:rgba(0,0,0,.3)}}html[data-theme=dark] .responsive-menu{--menu-hover:var(--theme-surface-elevated,#353535);--menu-shadow:rgba(0,0,0,.4)}html[data-theme=dark] .menu-item{color:var(--theme-on-surface,#fff)}html[data-theme=dark] .menu-item:hover:not(.disabled){background:var(--theme-surface-elevated,#353535);color:var(--theme-on-surface,#fff)}html[data-theme=dark] .menu-item.active{background:transparent;color:var(--theme-primary-light,#87ceeb)}html[data-theme=dark] .menu-item-icon{color:inherit;opacity:.9}html[data-theme=dark] .menu-item-label{color:inherit;font-weight:500}@import "../palettes/index.css";:root{--theme-primary:var(--palette-primary-main);--theme-primary-light:var(--palette-primary-light);--theme-primary-dark:var(--palette-primary-dark);--theme-on-primary:var(--palette-on-primary);--theme-secondary:var(--palette-secondary-main);--theme-secondary-light:var(--palette-secondary-light);--theme-secondary-dark:var(--palette-secondary-dark);--theme-on-secondary:var(--palette-on-secondary);--theme-accent:var(--palette-accent-main);--theme-accent-light:var(--palette-accent-light);--theme-accent-dark:var(--palette-accent-dark);--theme-on-accent:var(--palette-on-accent);--theme-success:var(--palette-success-main);--theme-success-light:var(--palette-success-light);--theme-success-dark:var(--palette-success-dark);--theme-on-success:var(--palette-on-success);--theme-success-border:var(--palette-success-border);--theme-warning:var(--palette-warning-main);--theme-warning-light:var(--palette-warning-light);--theme-warning-dark:var(--palette-warning-dark);--theme-on-warning:var(--palette-on-warning);--theme-warning-border:var(--palette-warning-border);--theme-error:var(--palette-error-main);--theme-error-light:var(--palette-error-light);--theme-error-dark:var(--palette-error-dark);--theme-on-error:var(--palette-on-error);--theme-error-border:var(--palette-error-border);--theme-info:var(--palette-info-main);--theme-info-light:var(--palette-info-light);--theme-info-dark:var(--palette-info-dark);--theme-on-info:var(--palette-on-info);--theme-info-border:var(--palette-info-border);--theme-background:var(--palette-background-main);--theme-background-dark:var(--palette-background-dark);--theme-background-overlay:var(--palette-background-overlay);--theme-on-background:var(--palette-on-background);--theme-surface:var(--palette-surface-main);--theme-surface-variant:var(--palette-surface-variant);--theme-surface-elevated:var(--palette-surface-elevated);--theme-on-surface:var(--palette-on-surface);--theme-border-main:var(--palette-border-main);--theme-border-light:var(--palette-border-light);--theme-border-lighter:var(--palette-border-lighter);--theme-border-medium:var(--palette-border-medium);--theme-border-dark:var(--palette-border-medium);--theme-text-primary:var(--palette-text-primary);--theme-text-secondary:var(--palette-text-secondary);--theme-text-disabled:var(--palette-text-disabled);--theme-text-inverted:var(--palette-text-inverted);--theme-control-bg:var(--palette-control-main);--theme-control-text:var(--palette-control-text);--theme-control-border:var(--palette-control-border);--theme-control-hover-bg:var(--palette-control-light);--theme-control-hover-text:var(--palette-text-inverted);--theme-control-hover-border:var(--palette-control-border);--theme-panel-bg-start:var(--palette-control-main);--theme-panel-bg-end:var(--palette-surface-elevated);--theme-panel-border:var(--palette-control-border);--theme-panel-shadow:rgba(0,0,0,.6);--theme-floating-bg:var(--palette-background-overlay);--theme-floating-border:var(--palette-border-light);--theme-option-bg:var(--palette-surface-variant);--theme-option-text:var(--palette-text-primary);--theme-option-border:var(--palette-border-main);--theme-option-hover-bg:var(--palette-surface-variant);--theme-option-selected-bg:var(--palette-primary-light);--theme-option-selected-border:var(--palette-primary-main);--theme-option-selected-text:var(--palette-on-primary);--theme-option-correct-bg:var(--palette-success-light);--theme-option-correct-border:var(--palette-success-border);--theme-option-correct-text:var(--palette-success-dark);--theme-option-incorrect-bg:var(--palette-error-light);--theme-option-incorrect-border:var(--palette-error-border);--theme-option-incorrect-text:var(--palette-error-dark);--theme-explanation-bg:var(--palette-info-light);--theme-explanation-border:var(--palette-info-main);--theme-link-color:var(--palette-info-main);--theme-link-hover:var(--palette-info-dark);--theme-code-bg:var(--palette-surface-variant);--theme-code-text:var(--palette-text-primary);--theme-mui-label-bg:var(--palette-surface-main);--theme-outline:var(--palette-border-main);--theme-outline-variant:var(--palette-border-light);--theme-border-radius:12px;--theme-border-radius-small:8px;--theme-border-radius-large:16px;--theme-elevation-1:0 2px 4px rgba(0,0,0,.1);--theme-elevation-2:0 4px 8px rgba(0,0,0,.15);--theme-elevation-3:0 6px 12px rgba(0,0,0,.2);--theme-elevation-4:0 8px 16px rgba(0,0,0,.25)}html[data-theme=light]{--theme-header-bg-start:var(--palette-header-bg-start);--theme-header-bg-end:var(--palette-header-bg-end);--theme-header-collapsed-bg-start:var(--palette-header-collapsed-bg-start);--theme-header-collapsed-bg-end:var(--palette-header-collapsed-bg-end);--theme-control-hover-text:var(--palette-text-inverted);--theme-control-hover-border:#555;--theme-panel-bg-end:#252525;--theme-panel-shadow:rgba(0,0,0,.6);--theme-floating-border:hsla(0,0%,100%,.5);--theme-option-text:#222;--theme-option-hover-bg:#e0e0e0;--theme-option-selected-bg:#d0e0ff;--theme-option-selected-text:var(--palette-primary-dark);--theme-code-bg:rgba(0,0,0,.1)}html[data-theme=dark]{--theme-header-bg-start:var(--palette-header-bg-start);--theme-header-bg-end:var(--palette-header-bg-end);--theme-header-collapsed-bg-start:var(--palette-header-collapsed-bg-start);--theme-header-collapsed-bg-end:var(--palette-header-collapsed-bg-end);--theme-control-hover-text:var(--palette-text-primary);--theme-control-hover-border:#777;--theme-panel-bg-end:var(--palette-surface-elevated);--theme-panel-shadow:rgba(0,0,0,.8);--theme-floating-border:hsla(0,0%,100%,.2);--theme-option-text:var(--palette-text-secondary);--theme-option-hover-bg:var(--palette-surface-elevated);--theme-option-selected-bg:var(--palette-primary-dark);--theme-option-selected-text:var(--palette-primary-light);--theme-code-bg:hsla(0,0%,100%,.1);--theme-code-text:var(--palette-text-secondary);--theme-mui-label-bg:#292929;--theme-elevation-1:0 2px 4px rgba(0,0,0,.2);--theme-elevation-2:0 4px 8px rgba(0,0,0,.3);--theme-elevation-3:0 6px 12px rgba(0,0,0,.4);--theme-elevation-4:0 8px 16px rgba(0,0,0,.5)}*{transition:background-color .3s cubic-bezier(.4,0,.2,1),border-color .3s cubic-bezier(.4,0,.2,1),color .3s cubic-bezier(.4,0,.2,1),box-shadow .3s cubic-bezier(.4,0,.2,1)}.MuiButton-root:focus,.MuiFab-root:hover,.MuiIconButton-root:focus,.MuiMenuItem-root:hover,:active,:focus,:hover,button:focus,input:focus,select:focus,textarea:focus{transition:none}
@@ -0,0 +1,8 @@
1
+ export * from './components';
2
+ export * from './contexts';
3
+ export * from './hooks';
4
+ export * from './palettes';
5
+ export * from './utils';
6
+ export * from './types';
7
+ export * from './schemas';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC;AAG7B,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ @media (max-width:600px){.cover-image-header .MuiButton-root .MuiButton-startIcon+*{display:none}.cover-image-header .MuiButton-root{min-width:36px;padding:6px 8px}}html[data-palette=default]:not([data-theme=dark]),html[data-palette=default][data-theme=light]{--palette-primary-main:#007bff;--palette-primary-light:#4a90e2;--palette-primary-dark:#0056b3;--palette-on-primary:#fff;--palette-secondary-main:#6c757d;--palette-secondary-light:#868e96;--palette-secondary-dark:#495057;--palette-on-secondary:#fff;--palette-surface-main:#fff;--palette-surface-variant:#f5f5f5;--palette-surface-elevated:#fff;--palette-on-surface:#000;--palette-background-main:#fff;--palette-background-dark:#fafafa;--palette-background-overlay:hsla(0,0%,100%,.95);--palette-on-background:#000;--palette-header-bg-start:hsla(0,0%,100%,.98);--palette-header-bg-end:hsla(0,0%,100%,.95);--palette-header-collapsed-bg-start:hsla(0,0%,100%,.99);--palette-header-collapsed-bg-end:hsla(0,0%,100%,.96);--palette-text-primary:#000;--palette-text-secondary:#666;--palette-text-disabled:rgba(0,0,0,.38);--palette-text-inverted:#fff;--palette-border-main:#e0e0e0;--palette-border-light:rgba(0,0,0,.12);--palette-border-lighter:rgba(0,0,0,.05);--palette-border-medium:#ccc;--palette-success-main:#28a745;--palette-success-light:#d4edda;--palette-success-dark:#155724;--palette-on-success:#fff;--palette-success-border:#c3e6cb;--palette-error-main:#dc3545;--palette-error-light:#f8d7da;--palette-error-dark:#721c24;--palette-on-error:#fff;--palette-error-border:#f5c6cb;--palette-warning-main:#ffc107;--palette-warning-light:#fff3cd;--palette-warning-dark:#856404;--palette-on-warning:#000;--palette-warning-border:#ffeeba;--palette-info-main:#007acc;--palette-info-light:#f0f8ff;--palette-info-dark:#058;--palette-on-info:#fff;--palette-info-border:#007acc;--palette-accent-main:#ff6b35;--palette-accent-light:#ffb3a0;--palette-accent-dark:#cc5429;--palette-on-accent:#fff;--palette-control-main:#1a1a1a;--palette-control-light:#2a2a2a;--palette-control-text:#ccc;--palette-control-border:#333}html[data-palette=default][data-theme=dark]{--palette-primary-main:#4a90e2;--palette-primary-light:#87ceeb;--palette-primary-dark:#1a365d;--palette-on-primary:#fff;--palette-secondary-main:#868e96;--palette-secondary-light:#adb5bd;--palette-secondary-dark:#6c757d;--palette-on-secondary:#fff;--palette-surface-main:#1e1e1e;--palette-surface-variant:#2a2a2a;--palette-surface-elevated:#353535;--palette-on-surface:#fff;--palette-background-main:#121212;--palette-background-dark:#2a2a2a;--palette-background-overlay:rgba(30,30,30,.95);--palette-on-background:#fff;--palette-header-bg-start:hsla(0,0%,7%,.98);--palette-header-bg-end:hsla(0,0%,7%,.95);--palette-header-collapsed-bg-start:hsla(0,0%,7%,.99);--palette-header-collapsed-bg-end:hsla(0,0%,7%,.96);--palette-text-primary:#fff;--palette-text-secondary:#b0b0b0;--palette-text-disabled:hsla(0,0%,100%,.38);--palette-text-inverted:#000;--palette-border-main:#555;--palette-border-light:hsla(0,0%,100%,.12);--palette-border-lighter:hsla(0,0%,100%,.05);--palette-border-medium:#333;--palette-success-main:#4ade80;--palette-success-light:#064e3b;--palette-success-dark:#22c55e;--palette-on-success:#fff;--palette-success-border:#065f46;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-on-error:#fff;--palette-error-border:#991b1b;--palette-warning-main:#fbbf24;--palette-warning-light:#78350f;--palette-warning-dark:#f59e0b;--palette-on-warning:#000;--palette-warning-border:#92400e;--palette-info-main:#60a5fa;--palette-info-light:#1e3a8a;--palette-info-dark:#3b82f6;--palette-on-info:#fff;--palette-info-border:#1d4ed8;--palette-accent-main:#ff8a65;--palette-accent-light:#ffcc9c;--palette-accent-dark:#cc6e52;--palette-on-accent:#fff;--palette-control-main:#2a2a2a;--palette-control-light:#3a3a3a;--palette-control-text:#e0e0e0;--palette-control-border:#555}html[data-palette=autumn]:not([data-theme=dark]),html[data-palette=autumn][data-theme=light]{--palette-primary-main:#ea580c;--palette-primary-light:#fb923c;--palette-primary-dark:#c2410c;--palette-on-primary:#fff;--palette-secondary-main:#b45309;--palette-secondary-light:#d97706;--palette-secondary-dark:#92400e;--palette-on-secondary:#fff;--palette-surface-main:#fffbeb;--palette-surface-variant:#fef3c7;--palette-surface-elevated:#fff;--palette-on-surface:#451a03;--palette-background-main:#fefce8;--palette-background-dark:#fef3c7;--palette-background-overlay:hsla(55,92%,95%,.95);--palette-on-background:#78350f;--palette-header-bg-start:hsla(55,92%,95%,.98);--palette-header-bg-end:hsla(55,92%,95%,.95);--palette-header-collapsed-bg-start:hsla(55,92%,95%,.99);--palette-header-collapsed-bg-end:hsla(55,92%,95%,.96);--palette-text-primary:#451a03;--palette-text-secondary:#78350f;--palette-text-disabled:rgba(69,26,3,.38);--palette-text-inverted:#fff;--palette-border-main:#d4d4aa;--palette-border-light:rgba(69,26,3,.12);--palette-border-lighter:rgba(69,26,3,.05);--palette-border-medium:#a8a29e;--palette-success-main:#16a34a;--palette-success-light:#dcfce7;--palette-success-dark:#14532d;--palette-success-border:#bbf7d0;--palette-error-main:#dc2626;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-error-border:#fecaca;--palette-warning-main:#f59e0b;--palette-warning-light:#fef3c7;--palette-warning-dark:#78350f;--palette-warning-border:#fde68a;--palette-info-main:#0891b2;--palette-info-light:#e6fffa;--palette-info-dark:#164e63;--palette-on-info:#fff;--palette-info-border:#67e8f9;--palette-accent-main:#dc2626;--palette-accent-light:#f87171;--palette-accent-dark:#991b1b;--palette-on-accent:#fff;--palette-control-main:#451a03;--palette-control-light:#78350f;--palette-control-text:#fef3c7;--palette-control-border:#92400e}html[data-palette=autumn][data-theme=dark]{--palette-primary-main:#fb923c;--palette-primary-light:#fdba74;--palette-primary-dark:#ea580c;--palette-on-primary:#1c1917;--palette-secondary-main:#fbbf24;--palette-secondary-light:#fcd34d;--palette-secondary-dark:#f59e0b;--palette-on-secondary:#1c1917;--palette-surface-main:#1c1917;--palette-surface-variant:#292524;--palette-surface-elevated:#44403c;--palette-on-surface:#fef3c7;--palette-background-main:#0c0a09;--palette-background-dark:#1c1917;--palette-background-overlay:rgba(28,25,23,.95);--palette-on-background:#d6d3d1;--palette-header-bg-start:rgba(12,10,9,.98);--palette-header-bg-end:rgba(12,10,9,.95);--palette-header-collapsed-bg-start:rgba(12,10,9,.99);--palette-header-collapsed-bg-end:rgba(12,10,9,.96);--palette-text-primary:#fef3c7;--palette-text-secondary:#d6d3d1;--palette-text-disabled:hsla(48,96%,89%,.38);--palette-text-inverted:#0c0a09;--palette-border-main:#78716c;--palette-border-light:hsla(48,96%,89%,.12);--palette-border-lighter:hsla(48,96%,89%,.05);--palette-border-medium:#57534e;--palette-success-main:#4ade80;--palette-success-light:#14532d;--palette-success-dark:#22c55e;--palette-success-border:#166534;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#eab308;--palette-warning-light:#78350f;--palette-warning-dark:#ca8a04;--palette-warning-border:#a16207;--palette-info-main:#22d3ee;--palette-info-light:#164e63;--palette-info-dark:#06b6d4;--palette-on-info:#0c0a09;--palette-info-border:#0891b2;--palette-accent-main:#b91c1c;--palette-accent-light:#dc2626;--palette-accent-dark:#7f1d1d;--palette-on-accent:#fef3c7;--palette-control-main:#292524;--palette-control-light:#44403c;--palette-control-text:#f5f5f4;--palette-control-border:#57534e}html[data-palette=ocean]:not([data-theme=dark]),html[data-palette=ocean][data-theme=light]{--palette-primary-main:#0891b2;--palette-primary-light:#22d3ee;--palette-primary-dark:#164e63;--palette-on-primary:#fff;--palette-secondary-main:#0f766e;--palette-secondary-light:#14b8a6;--palette-secondary-dark:#134e4a;--palette-on-secondary:#fff;--palette-surface-main:#f0fdfa;--palette-surface-variant:#ccfbf1;--palette-surface-elevated:#fff;--palette-on-surface:#164e63;--palette-background-main:#ecfeff;--palette-background-dark:#cffafe;--palette-background-overlay:rgba(236,254,255,.95);--palette-on-background:#0f766e;--palette-header-bg-start:rgba(236,254,255,.98);--palette-header-bg-end:rgba(236,254,255,.95);--palette-header-collapsed-bg-start:rgba(236,254,255,.99);--palette-header-collapsed-bg-end:rgba(236,254,255,.96);--palette-text-primary:#164e63;--palette-text-secondary:#0891b2;--palette-text-disabled:rgba(22,78,99,.38);--palette-text-inverted:#fff;--palette-border-main:#a7f3d0;--palette-border-light:rgba(22,78,99,.12);--palette-border-lighter:rgba(22,78,99,.05);--palette-border-medium:#67e8f9;--palette-success-main:#059669;--palette-success-light:#d1fae5;--palette-success-dark:#065f46;--palette-success-border:#a7f3d0;--palette-error-main:#ef4444;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-error-border:#fecaca;--palette-warning-main:#f59e0b;--palette-warning-light:#fef3c7;--palette-warning-dark:#78350f;--palette-warning-border:#fde68a;--palette-info-main:#0ea5e9;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#fff;--palette-info-border:#7dd3fc;--palette-accent-main:#f97316;--palette-accent-light:#fb923c;--palette-accent-dark:#ea580c;--palette-on-accent:#fff;--palette-control-main:#0c4a6e;--palette-control-light:#075985;--palette-control-text:#cffafe;--palette-control-border:#0891b2}html[data-palette=ocean][data-theme=dark]{--palette-primary-main:#22d3ee;--palette-primary-light:#67e8f9;--palette-primary-dark:#0891b2;--palette-on-primary:#0a1a1f;--palette-secondary-main:#5eead4;--palette-secondary-light:#99f6e4;--palette-secondary-dark:#14b8a6;--palette-on-secondary:#0a1a1f;--palette-surface-main:#0a1a1f;--palette-surface-variant:#164e63;--palette-surface-elevated:#0e7490;--palette-on-surface:#cffafe;--palette-background-main:#020617;--palette-background-dark:#0c1821;--palette-background-overlay:rgba(10,26,31,.95);--palette-on-background:#5eead4;--palette-header-bg-start:rgba(2,6,23,.98);--palette-header-bg-end:rgba(2,6,23,.95);--palette-header-collapsed-bg-start:rgba(2,6,23,.99);--palette-header-collapsed-bg-end:rgba(2,6,23,.96);--palette-text-primary:#cffafe;--palette-text-secondary:#a5f3fc;--palette-text-disabled:rgba(207,250,254,.38);--palette-text-inverted:#020617;--palette-border-main:#155e75;--palette-border-light:rgba(207,250,254,.12);--palette-border-lighter:rgba(207,250,254,.05);--palette-border-medium:#0c4a6e;--palette-success-main:#34d399;--palette-success-light:#065f46;--palette-success-dark:#10b981;--palette-success-border:#047857;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb7185;--palette-warning-light:#881337;--palette-warning-dark:#e11d48;--palette-warning-border:#be123c;--palette-info-main:#0ea5e9;--palette-info-light:#0c4a6e;--palette-info-dark:#38bdf8;--palette-on-info:#020617;--palette-info-border:#0284c7;--palette-accent-main:#ea580c;--palette-accent-light:#fb923c;--palette-accent-dark:#c2410c;--palette-on-accent:#cffafe;--palette-control-main:#164e63;--palette-control-light:#0e7490;--palette-control-text:#ecfeff;--palette-control-border:#155e75}html[data-palette=spring]:not([data-theme=dark]),html[data-palette=spring][data-theme=light]{--palette-primary-main:#16a34a;--palette-primary-light:#4ade80;--palette-primary-dark:#15803d;--palette-on-primary:#fff;--palette-secondary-main:#ec4899;--palette-secondary-light:#f472b6;--palette-secondary-dark:#be185d;--palette-on-secondary:#fff;--palette-surface-main:#f7fee7;--palette-surface-variant:#d9f7be;--palette-surface-elevated:#fff;--palette-on-surface:#14532d;--palette-background-main:#f0fdf4;--palette-background-dark:#dcfce7;--palette-background-overlay:rgba(240,253,244,.95);--palette-on-background:#166534;--palette-text-primary:#14532d;--palette-text-secondary:#166534;--palette-text-disabled:rgba(20,83,45,.38);--palette-text-inverted:#fff;--palette-border-main:#bbf7d0;--palette-border-light:rgba(20,83,45,.12);--palette-border-lighter:rgba(20,83,45,.05);--palette-border-medium:#86efac;--palette-success-main:#22c55e;--palette-success-light:#dcfce7;--palette-success-dark:#15803d;--palette-success-border:#bbf7d0;--palette-error-main:#f43f5e;--palette-error-light:#ffe4e6;--palette-error-dark:#881337;--palette-error-border:#fecdd3;--palette-warning-main:#eab308;--palette-warning-light:#fefce8;--palette-warning-dark:#713f12;--palette-warning-border:#fef08a;--palette-info-main:#0ea5e9;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#14532d;--palette-info-border:#7dd3fc;--palette-accent-main:#ec4899;--palette-accent-light:#fce7f3;--palette-accent-dark:#be185d;--palette-on-accent:#fff;--palette-control-main:#365314;--palette-control-light:#4d7c0f;--palette-control-text:#ecfdf5;--palette-control-border:#65a30d}html[data-palette=spring][data-theme=dark]{--palette-primary-main:#4ade80;--palette-primary-light:#86efac;--palette-primary-dark:#16a34a;--palette-on-primary:#0f1f0f;--palette-secondary-main:#f472b6;--palette-secondary-light:#f9a8d4;--palette-secondary-dark:#ec4899;--palette-on-secondary:#0f1f0f;--palette-surface-main:#0f1f0f;--palette-surface-variant:#1a2e1a;--palette-surface-elevated:#2d4a2d;--palette-on-surface:#dcfce7;--palette-background-main:#0a120a;--palette-background-dark:#0f1f0f;--palette-background-overlay:rgba(15,31,15,.95);--palette-on-background:#bbf7d0;--palette-text-primary:#dcfce7;--palette-text-secondary:#bbf7d0;--palette-text-disabled:rgba(220,252,231,.38);--palette-text-inverted:#0a120a;--palette-border-main:#166534;--palette-border-light:rgba(220,252,231,.12);--palette-border-lighter:rgba(220,252,231,.05);--palette-border-medium:#14532d;--palette-success-main:#22c55e;--palette-success-light:#14532d;--palette-success-dark:#4ade80;--palette-success-border:#166534;--palette-error-main:#f472b6;--palette-error-light:#881337;--palette-error-dark:#ec4899;--palette-error-border:#be185d;--palette-warning-main:#facc15;--palette-warning-light:#713f12;--palette-warning-dark:#eab308;--palette-warning-border:#a16207;--palette-info-main:#06b6d4;--palette-info-light:#164e63;--palette-info-dark:#22d3ee;--palette-on-info:#0a120a;--palette-info-border:#0891b2;--palette-accent-main:#f472b6;--palette-accent-light:#fce7f3;--palette-accent-dark:#db2777;--palette-on-accent:#dcfce7;--palette-control-main:#1a2e1a;--palette-control-light:#2d4a2d;--palette-control-text:#dcfce7;--palette-control-border:#166534}html[data-palette=winter]:not([data-theme=dark]),html[data-palette=winter][data-theme=light]{--palette-primary-main:#0077be;--palette-primary-light:#5ba3d0;--palette-primary-dark:#005082;--palette-on-primary:#fff;--palette-secondary-main:#4682b4;--palette-secondary-light:#7ba7cc;--palette-secondary-dark:#2e5984;--palette-on-secondary:#fff;--palette-surface-main:#fafbfc;--palette-surface-variant:#e2e8f0;--palette-surface-elevated:#fff;--palette-on-surface:#0f172a;--palette-background-main:#f8fafc;--palette-background-dark:#f1f5f9;--palette-background-overlay:rgba(248,250,252,.95);--palette-on-background:#475569;--palette-header-bg-start:rgba(248,250,252,.98);--palette-header-bg-end:rgba(248,250,252,.95);--palette-header-collapsed-bg-start:rgba(248,250,252,.99);--palette-header-collapsed-bg-end:rgba(248,250,252,.96);--palette-text-primary:#0f172a;--palette-text-secondary:#475569;--palette-text-disabled:rgba(15,23,42,.38);--palette-text-inverted:#fff;--palette-border-main:#cbd5e1;--palette-border-light:rgba(15,23,42,.12);--palette-border-lighter:rgba(15,23,42,.05);--palette-border-medium:#94a3b8;--palette-success-main:#059669;--palette-success-light:#d1fae5;--palette-success-dark:#064e3b;--palette-success-border:#a7f3d0;--palette-error-main:#dc2626;--palette-error-light:#fee2e2;--palette-error-dark:#7f1d1d;--palette-error-border:#fecaca;--palette-warning-main:#d97706;--palette-warning-light:#fef3c7;--palette-warning-dark:#92400e;--palette-warning-border:#fde68a;--palette-info-main:#0284c7;--palette-info-light:#e0f2fe;--palette-info-dark:#0c4a6e;--palette-on-info:#fff;--palette-info-border:#7dd3fc;--palette-accent-main:#ec4899;--palette-accent-light:#fce7f3;--palette-accent-dark:#be185d;--palette-on-accent:#fff;--palette-control-main:#1e293b;--palette-control-light:#334155;--palette-control-text:#e2e8f0;--palette-control-border:#475569}html[data-palette=winter][data-theme=dark]{--palette-primary-main:#7dd3fc;--palette-primary-light:#bae6fd;--palette-primary-dark:#0369a1;--palette-on-primary:#020617;--palette-secondary-main:#94a3b8;--palette-secondary-light:#cbd5e1;--palette-secondary-dark:#64748b;--palette-on-secondary:#020617;--palette-surface-main:#0f172a;--palette-surface-variant:#1e293b;--palette-surface-elevated:#334155;--palette-on-surface:#f8fafc;--palette-background-main:#020617;--palette-background-dark:#0f172a;--palette-background-overlay:rgba(15,23,42,.95);--palette-on-background:#cbd5e1;--palette-header-bg-start:rgba(2,6,23,.98);--palette-header-bg-end:rgba(2,6,23,.95);--palette-header-collapsed-bg-start:rgba(2,6,23,.99);--palette-header-collapsed-bg-end:rgba(2,6,23,.96);--palette-text-primary:#f8fafc;--palette-text-secondary:#cbd5e1;--palette-text-disabled:rgba(248,250,252,.38);--palette-text-inverted:#020617;--palette-border-main:#475569;--palette-border-light:rgba(248,250,252,.12);--palette-border-lighter:rgba(248,250,252,.05);--palette-border-medium:#334155;--palette-success-main:#34d399;--palette-success-light:#064e3b;--palette-success-dark:#10b981;--palette-success-border:#065f46;--palette-error-main:#f87171;--palette-error-light:#7f1d1d;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb923c;--palette-warning-light:#9a3412;--palette-warning-dark:#f97316;--palette-warning-border:#c2410c;--palette-info-main:#38bdf8;--palette-info-light:#0c4a6e;--palette-info-dark:#0ea5e9;--palette-on-info:#020617;--palette-info-border:#0284c7;--palette-accent-main:#f472b6;--palette-accent-light:#fce7f3;--palette-accent-dark:#db2777;--palette-on-accent:#f8fafc;--palette-control-main:#1e293b;--palette-control-light:#334155;--palette-control-text:#e2e8f0;--palette-control-border:#475569}html[data-palette=cosmic]:not([data-theme=dark]),html[data-palette=cosmic][data-theme=light]{--palette-primary-main:#8b5cf6;--palette-primary-light:#a78bfa;--palette-primary-dark:#7c3aed;--palette-on-primary:#fff;--palette-secondary-main:#8b5cf6;--palette-secondary-light:#c4b5fd;--palette-secondary-dark:#6d28d9;--palette-on-secondary:#fff;--palette-surface-main:#faf7ff;--palette-surface-variant:#f3e8ff;--palette-surface-elevated:#fff;--palette-on-surface:#4c1d95;--palette-background-main:#fef7ff;--palette-background-dark:#fae8ff;--palette-background-overlay:rgba(254,247,255,.95);--palette-on-background:#6b21a8;--palette-header-bg-start:rgba(254,247,255,.98);--palette-header-bg-end:rgba(254,247,255,.95);--palette-header-collapsed-bg-start:rgba(254,247,255,.99);--palette-header-collapsed-bg-end:rgba(254,247,255,.96);--palette-text-primary:#4c1d95;--palette-text-secondary:#7c3aed;--palette-text-disabled:rgba(76,29,149,.38);--palette-text-inverted:#fff;--palette-border-main:#c4b5fd;--palette-border-light:rgba(76,29,149,.12);--palette-border-lighter:rgba(76,29,149,.05);--palette-border-medium:#a78bfa;--palette-success-main:#10b981;--palette-success-light:#d1fae5;--palette-success-dark:#047857;--palette-success-border:#6ee7b7;--palette-error-main:#ef4444;--palette-error-light:#fee2e2;--palette-error-dark:#b91c1c;--palette-error-border:#fecaca;--palette-warning-main:#f59e0b;--palette-warning-light:#fef3c7;--palette-warning-dark:#b45309;--palette-warning-border:#fde68a;--palette-info-main:#3b82f6;--palette-info-light:#dbeafe;--palette-info-dark:#1d4ed8;--palette-on-info:#fff;--palette-info-border:#93c5fd;--palette-accent-main:#ec4899;--palette-accent-light:#f472b6;--palette-accent-dark:#be185d;--palette-on-accent:#fff;--palette-control-main:#1e1b4b;--palette-control-light:#3730a3;--palette-control-text:#e0e7ff;--palette-control-border:#8b5cf6}html[data-palette=cosmic][data-theme=dark]{--palette-primary-main:#a78bfa;--palette-primary-light:#c4b5fd;--palette-primary-dark:#8b5cf6;--palette-on-primary:#1e1b4b;--palette-secondary-main:#c4b5fd;--palette-secondary-light:#ddd6fe;--palette-secondary-dark:#a78bfa;--palette-on-secondary:#1e1b4b;--palette-surface-main:#1e1b4b;--palette-surface-variant:#312e81;--palette-surface-elevated:#3730a3;--palette-on-surface:#e0e7ff;--palette-background-main:#0f0c29;--palette-background-dark:#1a1625;--palette-background-overlay:rgba(15,12,41,.95);--palette-on-background:#c4b5fd;--palette-header-bg-start:rgba(15,12,41,.98);--palette-header-bg-end:rgba(15,12,41,.95);--palette-header-collapsed-bg-start:rgba(15,12,41,.99);--palette-header-collapsed-bg-end:rgba(15,12,41,.96);--palette-text-primary:#e0e7ff;--palette-text-secondary:#c4b5fd;--palette-text-disabled:rgba(224,231,255,.38);--palette-text-inverted:#0f0c29;--palette-border-main:#4338ca;--palette-border-light:rgba(224,231,255,.12);--palette-border-lighter:rgba(224,231,255,.05);--palette-border-medium:#312e81;--palette-success-main:#34d399;--palette-success-light:#047857;--palette-success-dark:#10b981;--palette-success-border:#065f46;--palette-error-main:#f87171;--palette-error-light:#b91c1c;--palette-error-dark:#ef4444;--palette-error-border:#991b1b;--palette-warning-main:#fb7185;--palette-warning-light:#881337;--palette-warning-dark:#e11d48;--palette-warning-border:#be123c;--palette-info-main:#60a5fa;--palette-info-light:#1d4ed8;--palette-info-dark:#3b82f6;--palette-on-info:#0f0c29;--palette-info-border:#2563eb;--palette-accent-main:#f472b6;--palette-accent-light:#f9a8d4;--palette-accent-dark:#ec4899;--palette-on-accent:#0f0c29;--palette-control-main:#312e81;--palette-control-light:#4338ca;--palette-control-text:#f3f4f6;--palette-control-border:#4338ca}.dynamic-logo{transition:all .3s ease}.dynamic-logo:hover{transform:scale(1.05)}.logo-first-part{fill:var(--theme-primary);transition:fill .3s ease}.logo-second-part{fill:var(--theme-accent);transition:fill .3s ease}.logo-badge{fill:var(--theme-warning);transition:fill .3s ease}.logo-badge-circle{opacity:.9}.logo-badge-star{fill:var(--theme-accent,var(--theme-warning));opacity:.8}.logo-badge-square{fill:var(--theme-info,var(--theme-warning));opacity:.7}.logo-badge-heart{fill:var(--theme-error,var(--theme-warning));opacity:.8}.logo-tiny,.logo-tiny .logo-first-part,.logo-tiny .logo-second-part{font-size:16px}.logo-small,.logo-small .logo-first-part,.logo-small .logo-second-part{font-size:20px}.logo-medium,.logo-medium .logo-first-part,.logo-medium .logo-second-part{font-size:28px}.logo-large,.logo-large .logo-first-part,.logo-large .logo-second-part{font-size:36px}.logo-extra-large,.logo-extra-large .logo-first-part,.logo-extra-large .logo-second-part{font-size:48px}.dynamic-logo.logo-high-contrast .logo-first-part{filter:drop-shadow(0 0 2px var(--theme-accent));opacity:1}.dynamic-logo.logo-high-contrast .logo-second-part{filter:drop-shadow(0 0 2px var(--theme-warning));opacity:1}.dynamic-logo.logo-high-contrast .logo-badge{filter:drop-shadow(0 0 2px var(--theme-primary));opacity:1}.dynamic-logo.logo-monochrome .logo-first-part,.dynamic-logo.logo-monochrome .logo-second-part{fill:#000;font-weight:900}.dynamic-logo.logo-monochrome .logo-badge{fill:#000;opacity:.8}html[data-theme=dark] .dynamic-logo.logo-monochrome .logo-badge,html[data-theme=dark] .dynamic-logo.logo-monochrome .logo-first-part,html[data-theme=dark] .dynamic-logo.logo-monochrome .logo-second-part{fill:#fff}.dynamic-logo.logo-on-primary .logo-first-part{fill:var(--theme-text-inverted,#fff);font-weight:700}.dynamic-logo.logo-on-primary .logo-second-part{fill:var(--theme-accent-light,#60a5fa);font-weight:700}.dynamic-logo.logo-on-primary .logo-badge{fill:var(--theme-warning,#ffb020);opacity:.9}.dynamic-logo.colorway-accent .logo-first-part{fill:var(--theme-accent,var(--theme-success))}.dynamic-logo.colorway-accent .logo-second-part{fill:var(--theme-info)}.dynamic-logo.colorway-accent .logo-badge{fill:var(--theme-error)}.dynamic-logo.colorway-vibrant .logo-first-part{fill:var(--theme-primary)}.dynamic-logo.colorway-vibrant .logo-second-part{fill:var(--theme-accent,var(--theme-success))}.dynamic-logo.colorway-vibrant .logo-badge{fill:var(--theme-warning)}.dynamic-logo.logo-default .logo-first-part{fill:var(--theme-primary,#3b82f6)}.dynamic-logo.logo-default .logo-second-part{fill:var(--theme-accent,var(--theme-secondary,#6366f1))}.dynamic-logo.logo-default .logo-badge{fill:var(--theme-warning,#f59e0b)}.custom-first-part{fill:#ff6b35!important;font-weight:900!important}.custom-second-part{fill:#004e89!important;font-weight:200!important}.custom-styling{filter:drop-shadow(0 0 3px rgba(255,107,53,.4));text-shadow:1px 1px 2px rgba(0,0,0,.3)}.gradient-text{fill:url(#textGradient);font-weight:600}.page{--page-padding-none:0;--page-padding-small:1rem;--page-padding-medium:1.5rem;--page-padding-large:2rem;min-height:100%;width:100%}.page-variant-centered{align-items:center;display:flex;flex-direction:column;text-align:center}.page-variant-narrow{margin:0 auto;max-width:600px}.page-variant-wide{margin:0 auto;max-width:1400px}.page-variant-fullwidth{max-width:none;width:100%}.page-padding-none{padding:var(--page-padding-none)}.page-padding-small{padding:var(--page-padding-small)}.page-padding-medium{padding:var(--page-padding-medium)}.page-padding-large{padding:var(--page-padding-large)}.page-background-default{background:transparent}.page-background-surface{background:var(--theme-surface)}.page-background-alternate{background:var(--theme-surface-variant)}.page-max-width-small{margin-left:auto;margin-right:auto;max-width:600px}.page-max-width-medium{margin-left:auto;margin-right:auto;max-width:800px}.page-max-width-large{margin-left:auto;margin-right:auto;max-width:1200px}.page-max-width-extra-large{margin-left:auto;margin-right:auto;max-width:1400px}.page-max-width-none{max-width:none}.page-header{margin-bottom:1.5rem}.page-footer{margin-top:1.5rem}.page-title{color:var(--theme-on-background);flex:1;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:600;line-height:1.2;margin:0;transition:font-size .3s ease,font-weight .3s ease,margin .3s ease}.page-title-collapsed .page-title{font-size:clamp(1.25rem,3vw,1.75rem);font-weight:500;margin-bottom:.5rem}.page-title-collapsed .page-header{margin-bottom:1rem}.page-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem}.page-content{color:var(--theme-on-background);line-height:1.6;max-height:calc(100vh - var(--page-header-height, 200px));overflow-y:auto}.page-loading{color:var(--theme-on-background);flex-direction:column;gap:1rem;min-height:200px;text-align:center}.loading-spinner,.page-loading{align-items:center;display:flex;justify-content:center}.spinner{animation:spin 1s linear infinite;border-top:3px solid var(--theme-outline-variant);border:3px solid var(--theme-outline-variant);border-radius:50%;border-top-color:var(--theme-primary);height:40px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.page-loading-bar{background:var(--theme-outline-variant);height:4px;overflow:hidden;position:relative;width:100%}.page-loading-bar-top{left:0;position:absolute;right:0;top:0}.page-loading-bar-bottom{bottom:0;left:0;position:absolute;right:0}.loading-bar-progress{animation:loading-bar-slide 2s ease-in-out infinite;background:linear-gradient(90deg,var(--theme-primary),var(--theme-secondary));height:100%;width:30%}@keyframes loading-bar-slide{0%{transform:translateX(-100%)}50%{transform:translateX(350%)}to{transform:translateX(-100%)}}.page-loading-dots{min-height:120px}.loading-dots{align-items:center;display:flex;gap:8px}.loading-dots span{animation:loading-dots-bounce 1.4s ease-in-out infinite both;background:var(--theme-primary);border-radius:50%;height:8px;width:8px}.loading-dots span:first-child{animation-delay:-.32s}.loading-dots span:nth-child(2){animation-delay:-.16s}@keyframes loading-dots-bounce{0%,80%,to{opacity:.5;transform:scale(0)}40%{opacity:1;transform:scale(1)}}.loading-message{font-size:.875rem;margin-top:1rem;opacity:.8}.loading-message,.page-message{color:var(--theme-on-background)}.page-message{align-items:flex-start;background:var(--theme-surface-variant);border-left:4px solid;border-radius:var(--theme-border-radius,8px);display:flex;gap:1rem;margin:1rem 0;padding:1rem 1.5rem}.page-message-error{background:rgba(220,38,38,.05);border-left-color:var(--theme-error,#dc2626);color:var(--theme-error,#dc2626)}.page-message-warning{background:rgba(245,158,11,.05);border-left-color:var(--theme-warning,#f59e0b);color:var(--theme-warning,#f59e0b)}.page-message-success{background:rgba(16,185,129,.05);border-left-color:var(--theme-success,#10b981);color:var(--theme-success,#10b981)}.page-message-info{background:rgba(59,130,246,.05);border-left-color:var(--theme-info,#3b82f6);color:var(--theme-info,#3b82f6)}.page-message-loading{background:rgba(var(--theme-primary-rgb,59,130,246),.05);border-left-color:var(--theme-primary);color:var(--theme-primary)}.message-icon{flex-shrink:0;font-size:1.5rem;margin-top:.125rem}.message-content{flex:1;min-width:0}.message-content p{font-size:.875rem;line-height:1.5;margin:0}.message-content h3{font-size:1rem;font-weight:600;margin:0 0 .5rem}.page-message.message-compact{margin:.5rem 0;padding:.75rem 1rem}.page-message.message-prominent{flex-direction:column;justify-content:center;margin:1.5rem 0;min-height:200px;padding:1.5rem 2rem;text-align:center}.page-message.message-prominent .message-icon{font-size:3rem;margin:0 auto 1rem}.page-message.message-prominent .message-content{text-align:center}@media (max-width:768px){.page-header{align-items:stretch;flex-direction:column;gap:1rem}.page-title{font-size:clamp(1.5rem,6vw,2rem)}.page-header-actions{justify-content:flex-start}.page-padding-medium{padding:var(--page-padding-small)}.page-padding-large{padding:var(--page-padding-medium)}.page-max-width-extra-large,.page-max-width-large,.page-max-width-medium,.page-max-width-small{margin-left:1rem;margin-right:1rem;max-width:calc(100% - 2rem)}}@media (max-width:480px){.page-header-actions{justify-content:stretch;width:100%;>*{flex:1;min-width:0}}.retry-button{max-width:300px;width:100%}}@media (prefers-contrast:high){.page-title{font-weight:700}.spinner{border-width:4px}.retry-button{border:2px solid var(--theme-on-primary)}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}.retry-button{transition:none}.retry-button:hover{transform:none}}@media print{.page-error,.page-header-actions,.page-loading{display:none}.page-title{color:#000;font-size:1.5rem}.page-content{color:#000}}.app-scaffold{--appbar-height:64px;--bottom-nav-height:80px;--rail-width-collapsed:80px;--rail-width-expanded:280px;--touch-target-size:48px;--scaffold-background:var(--theme-background);--scaffold-surface:var(--theme-surface);--scaffold-on-surface:var(--theme-on-surface);--scaffold-primary:var(--theme-primary);--scaffold-on-primary:var(--theme-on-primary);--scaffold-outline:var(--theme-border-main);--scaffold-shadow:var(--theme-elevation-2);background:var(--scaffold-background);font-family:var(--theme-font-family,"Segoe UI",sans-serif);min-height:100vh;position:relative}.app-scaffold-appbar{background:var(--scaffold-surface);border-bottom:1px solid var(--scaffold-outline);box-shadow:var(--scaffold-shadow);left:0;position:fixed;right:0;top:0;z-index:1100}.appbar-content{align-items:center;display:flex;height:100%;margin:0 auto;max-width:1200px;padding:0 16px}.appbar-center,.appbar-left,.appbar-right{align-items:center;display:flex;gap:8px}.appbar-left{flex:0 0 auto}.appbar-center{flex:1;justify-content:center;position:relative}.appbar-right{flex:0 0 auto}.appbar-logo{align-items:center;display:flex;height:40px}.appbar-navigation{align-items:center;display:flex;gap:4px}.appbar-actions,.appbar-page-actions{align-items:center;display:flex;gap:8px}.menu-button{align-items:center;background:transparent;border:none;border-radius:50%;color:var(--scaffold-on-surface);cursor:pointer;display:flex;height:var(--touch-target-size);justify-content:center;transition:background-color .2s ease;width:var(--touch-target-size);&:hover{background:rgba(0,0,0,.04)}&:active{background:rgba(0,0,0,.08)}}.hamburger-icon{span{background:currentColor;border-radius:1px;display:block;height:2px;transition:all .3s ease;width:100%}}.menu-item{border-radius:12px;color:var(--scaffold-on-surface);font-size:14px;font-weight:500;justify-content:center;min-height:var(--touch-target-size);min-width:var(--touch-target-size);padding:12px 16px;&:hover:not(.disabled){background:rgba(0,0,0,.04)}&:active:not(.disabled){background:rgba(0,0,0,.08)}&.active{background:var(--scaffold-primary);color:var(--scaffold-on-primary)}&.disabled{cursor:default;opacity:.38}}.menu-item-label{font-size:inherit;font-weight:inherit}.menu-item-badge{align-items:center;border-radius:10px;display:flex;font-size:11px;height:16px;justify-content:center;line-height:1;min-width:16px;padding:2px 6px;position:absolute;right:6px;top:6px}.menu-item-appbar{flex-direction:row;gap:8px;min-width:auto;padding:8px 16px}.menu-item-icon-appbar{height:20px;width:20px}.menu-item-label-appbar{font-size:14px}.bottom-navigation{background:var(--scaffold-surface);border-top:1px solid var(--scaffold-outline);bottom:0;box-shadow:0 -2px 8px rgba(0,0,0,.1);height:var(--bottom-nav-height);left:0;position:fixed;right:0;z-index:1000}.bottom-nav-items{align-items:center;display:flex;height:100%;justify-content:space-around;margin:0 auto;max-width:600px;padding:0 8px}.menu-item-bottom{flex:1;flex-direction:column;gap:4px;max-width:120px;min-width:64px;padding:8px 12px;text-align:center}.menu-item-icon-bottom{height:24px;margin:0 auto;width:24px}.menu-item-label-bottom{font-size:12px;font-weight:500;line-height:1}.navigation-rail{background:var(--scaffold-surface);border-right:1px solid var(--scaffold-outline);bottom:0;box-shadow:2px 0 8px rgba(0,0,0,.1);left:0;overflow:hidden;position:fixed;top:var(--appbar-height);transition:width .3s ease;z-index:1000;&.collapsed{width:var(--rail-width-collapsed)}&.expanded{width:var(--rail-width-expanded)}}.rail-items{display:flex;flex-direction:column;gap:4px;height:100%;overflow-y:auto;padding:12px}.menu-item-rail{flex-direction:row;gap:12px;justify-content:flex-start;min-width:var(--touch-target-size);padding:12px 16px;.collapsed &{justify-content:center;padding:12px;.menu-item-label{display:none}}}.menu-item-icon-rail{height:24px;width:24px}.menu-item-label-rail{font-size:14px;font-weight:500}.drawer-overlay{animation:fadeIn .2s ease;background:rgba(0,0,0,.5);left:0;z-index:1200}.drawer-overlay,.navigation-drawer{bottom:0;position:fixed;right:0;top:0}.navigation-drawer{animation:slideInRight .3s ease;background:var(--scaffold-surface,#fff);box-shadow:-5px 0 20px rgba(0,0,0,.2);display:flex;flex-direction:column;max-width:80vw;overflow:hidden;width:320px}.drawer-header{border-bottom:1px solid var(--scaffold-outline);justify-content:space-between;min-height:var(--appbar-height);padding:16px 24px;h3{color:var(--scaffold-on-surface);font-size:20px;font-weight:500;margin:0}}.drawer-close,.drawer-header{align-items:center;display:flex}.drawer-close{background:transparent;border:none;border-radius:50%;color:var(--scaffold-on-surface);cursor:pointer;font-size:24px;height:var(--touch-target-size);justify-content:center;width:var(--touch-target-size);&:hover{background:rgba(0,0,0,.04)}}.drawer-items{flex:1;overflow-y:auto;padding:8px}.drawer-section{margin-bottom:16px;h4{color:var(--scaffold-primary);font-size:14px;font-weight:600;letter-spacing:.5px;margin:0 0 8px;padding:8px 16px;text-transform:uppercase}}.menu-item-drawer{flex-direction:row;gap:16px;justify-content:flex-start;margin:2px 0;padding:12px 16px;width:100%}.menu-item-icon-drawer{height:24px;width:24px}.menu-item-label-drawer{flex:1;font-size:16px;font-weight:400;text-align:left}.app-scaffold-content{background:var(--scaffold-background);min-height:100vh;padding-bottom:var(--bottom-nav-height,80px);padding-top:var(--appbar-height,64px);transition:padding .3s ease}@media (max-width:599px){.appbar-content{padding:0 8px}.menu-button{height:40px;width:40px}.bottom-nav-items{padding:0 4px}.menu-item-bottom{min-width:56px}}@media (min-width:600px) and (max-width:1023px){.appbar-content{padding:0 12px}}@media (min-width:1024px){.appbar-content{padding:0 16px}}@media (prefers-contrast:high){.menu-item:hover:not(.disabled){background:rgba(0,0,0,.1);outline:2px solid var(--scaffold-on-surface)}.menu-item.active{outline:2px solid var(--scaffold-on-primary)}}@media (prefers-reduced-motion:reduce){.app-scaffold-content,.hamburger-icon span,.menu-item,.navigation-rail{transition:none}.drawer-overlay,.navigation-drawer{animation:none}}@media (prefers-color-scheme:dark){.app-scaffold{--scaffold-shadow:0 2px 8px rgba(0,0,0,.3)}.menu-item:hover:not(.disabled){background:hsla(0,0%,100%,.08)}.menu-item:active:not(.disabled){background:hsla(0,0%,100%,.12)}.menu-button:hover{background:hsla(0,0%,100%,.08)}.menu-button:active{background:hsla(0,0%,100%,.12)}}.responsive-menu{--menu-bg:var(--theme-surface);--menu-text:var(--theme-on-surface);--menu-hover:var(--theme-surface-variant);--menu-active:var(--theme-primary);--menu-active-text:var(--theme-on-primary);--menu-border:var(--theme-outline-variant);--menu-shadow:rgba(0,0,0,.1);font-family:var(--theme-font-family,"Segoe UI",sans-serif);font-size:var(--theme-font-size-body,14px);line-height:1.5}.menu-item{align-items:center;background:transparent;border:none;border-radius:var(--theme-border-radius,8px);color:var(--menu-text);cursor:pointer;display:flex;font-family:inherit;font-size:inherit;gap:.75rem;min-height:48px;padding:.75rem 1rem;position:relative;text-decoration:none;transition:all .2s ease}.menu-item:hover:not(.disabled){background:var(--menu-hover);transform:translateY(-1px)}.menu-item:active:not(.disabled){transform:translateY(0)}.menu-item.active{background:transparent;color:var(--menu-active);font-weight:600}.menu-item.disabled{cursor:not-allowed;opacity:.5}.menu-item-icon{align-items:center;display:flex;flex-shrink:0;height:24px;justify-content:center;width:24px}.menu-item-label{flex:1;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.menu-item-badge{background:var(--theme-error,#dc2626);border-radius:12px;color:var(--theme-on-error,#fff);font-size:.75rem;font-weight:600;min-width:20px;padding:.125rem .375rem;text-align:center}.hamburger-icon{cursor:pointer;display:flex;flex-direction:column;gap:3px;height:16px;width:20px;span{background:currentColor;border-radius:1px;display:block;height:2px;transition:all .3s ease;width:100%}}.mobile-bottom-nav{background:var(--menu-bg);border-top:1px solid var(--menu-border);bottom:0;box-shadow:0 -2px 10px var(--menu-shadow);left:0;position:fixed;right:0;z-index:1000;.mobile-nav-items{-ms-overflow-style:none;align-items:center;display:flex;justify-content:space-around;max-width:100%;overflow-x:auto;padding:.5rem 0;scrollbar-width:none}.mobile-nav-items::-webkit-scrollbar{display:none}.menu-item{flex:1;flex-direction:column;gap:.25rem;max-width:100px;min-width:0;padding:.5rem .75rem;text-align:center;.menu-item-icon{margin:0 auto}.menu-item-label{font-size:.75rem;text-align:center}}}.tablet-nav-rail{background:var(--menu-bg);border-right:1px solid var(--menu-border);box-shadow:2px 0 10px var(--menu-shadow);height:100vh;left:0;overflow:hidden;position:fixed;top:0;transition:width .3s ease;z-index:1000;&.collapsed{width:72px}&.expanded{width:280px}.nav-rail-header{align-items:center;border-bottom:1px solid var(--menu-border);display:flex;justify-content:space-between;min-height:72px;padding:1rem}.nav-rail-logo{flex:1;overflow:hidden;transition:opacity .3s ease}.nav-rail-toggle{background:transparent;border:none;border-radius:var(--theme-border-radius,8px);color:var(--menu-text);cursor:pointer;padding:.5rem}.nav-rail-toggle:hover{background:var(--menu-hover)}.nav-rail-items{display:flex;flex-direction:column;gap:.5rem;height:calc(100vh - 72px);overflow-y:auto;padding:1rem}&.collapsed{.nav-rail-logo{opacity:0}.menu-item{justify-content:center;.menu-item-label{display:none}}}}.desktop-top-nav{background:var(--menu-bg);border-bottom:1px solid var(--menu-border);box-shadow:0 2px 10px var(--menu-shadow);position:sticky;top:0;z-index:1000;.top-nav-content{align-items:center;display:flex;height:64px;margin:0 auto;max-width:1200px;padding:0 2rem}.top-nav-logo{&.logo-left{margin-right:2rem}&.logo-center{left:50%;position:absolute;transform:translateX(-50%)}&.logo-right{margin-left:2rem}}.top-nav-items{align-items:center;display:flex;flex:1;gap:.5rem;justify-content:center;.logo-left~&{justify-content:flex-start}.logo-right~&{justify-content:flex-end}}.menu-toggle{background:transparent;border:none;border-radius:var(--theme-border-radius,8px);color:var(--menu-text);cursor:pointer;padding:.75rem}.menu-toggle:hover{background:var(--menu-hover)}}.menu-drawer-overlay{animation:fadeIn .2s ease;background:rgba(0,0,0,.5);bottom:0;left:0;position:fixed;right:0;top:0;z-index:2000}.menu-drawer{animation:slideInRight .3s ease;background:var(--menu-bg);box-shadow:-5px 0 20px var(--menu-shadow);display:flex;flex-direction:column;height:100vh;max-width:90vw;position:fixed;right:0;top:0;width:320px;.drawer-header{align-items:center;border-bottom:1px solid var(--menu-border);display:flex;justify-content:space-between;padding:1.5rem 2rem;h3{color:var(--menu-text);font-size:1.25rem;font-weight:600;margin:0}}.drawer-close{background:transparent;border:none;border-radius:var(--theme-border-radius,8px);color:var(--menu-text);cursor:pointer;font-size:1.5rem;padding:.25rem}.drawer-close:hover{background:var(--menu-hover)}.drawer-items{display:flex;flex:1;flex-direction:column;gap:.5rem;overflow-y:auto;padding:1rem 2rem}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInRight{0%{transform:translateX(100%)}to{transform:translateX(0)}}@media (max-width:767px){body{padding-bottom:80px}}@media (min-width:768px) and (max-width:1024px){body{margin-left:72px}}@media (prefers-color-scheme:dark){.responsive-menu{--menu-shadow:rgba(0,0,0,.3)}}html[data-theme=dark] .responsive-menu{--menu-hover:var(--theme-surface-elevated,#353535);--menu-shadow:rgba(0,0,0,.4)}html[data-theme=dark] .menu-item{color:var(--theme-on-surface,#fff)}html[data-theme=dark] .menu-item:hover:not(.disabled){background:var(--theme-surface-elevated,#353535);color:var(--theme-on-surface,#fff)}html[data-theme=dark] .menu-item.active{background:transparent;color:var(--theme-primary-light,#87ceeb)}html[data-theme=dark] .menu-item-icon{color:inherit;opacity:.9}html[data-theme=dark] .menu-item-label{color:inherit;font-weight:500}@import "../palettes/index.css";:root{--theme-primary:var(--palette-primary-main);--theme-primary-light:var(--palette-primary-light);--theme-primary-dark:var(--palette-primary-dark);--theme-on-primary:var(--palette-on-primary);--theme-secondary:var(--palette-secondary-main);--theme-secondary-light:var(--palette-secondary-light);--theme-secondary-dark:var(--palette-secondary-dark);--theme-on-secondary:var(--palette-on-secondary);--theme-accent:var(--palette-accent-main);--theme-accent-light:var(--palette-accent-light);--theme-accent-dark:var(--palette-accent-dark);--theme-on-accent:var(--palette-on-accent);--theme-success:var(--palette-success-main);--theme-success-light:var(--palette-success-light);--theme-success-dark:var(--palette-success-dark);--theme-on-success:var(--palette-on-success);--theme-success-border:var(--palette-success-border);--theme-warning:var(--palette-warning-main);--theme-warning-light:var(--palette-warning-light);--theme-warning-dark:var(--palette-warning-dark);--theme-on-warning:var(--palette-on-warning);--theme-warning-border:var(--palette-warning-border);--theme-error:var(--palette-error-main);--theme-error-light:var(--palette-error-light);--theme-error-dark:var(--palette-error-dark);--theme-on-error:var(--palette-on-error);--theme-error-border:var(--palette-error-border);--theme-info:var(--palette-info-main);--theme-info-light:var(--palette-info-light);--theme-info-dark:var(--palette-info-dark);--theme-on-info:var(--palette-on-info);--theme-info-border:var(--palette-info-border);--theme-background:var(--palette-background-main);--theme-background-dark:var(--palette-background-dark);--theme-background-overlay:var(--palette-background-overlay);--theme-on-background:var(--palette-on-background);--theme-surface:var(--palette-surface-main);--theme-surface-variant:var(--palette-surface-variant);--theme-surface-elevated:var(--palette-surface-elevated);--theme-on-surface:var(--palette-on-surface);--theme-border-main:var(--palette-border-main);--theme-border-light:var(--palette-border-light);--theme-border-lighter:var(--palette-border-lighter);--theme-border-medium:var(--palette-border-medium);--theme-border-dark:var(--palette-border-medium);--theme-text-primary:var(--palette-text-primary);--theme-text-secondary:var(--palette-text-secondary);--theme-text-disabled:var(--palette-text-disabled);--theme-text-inverted:var(--palette-text-inverted);--theme-control-bg:var(--palette-control-main);--theme-control-text:var(--palette-control-text);--theme-control-border:var(--palette-control-border);--theme-control-hover-bg:var(--palette-control-light);--theme-control-hover-text:var(--palette-text-inverted);--theme-control-hover-border:var(--palette-control-border);--theme-panel-bg-start:var(--palette-control-main);--theme-panel-bg-end:var(--palette-surface-elevated);--theme-panel-border:var(--palette-control-border);--theme-panel-shadow:rgba(0,0,0,.6);--theme-floating-bg:var(--palette-background-overlay);--theme-floating-border:var(--palette-border-light);--theme-option-bg:var(--palette-surface-variant);--theme-option-text:var(--palette-text-primary);--theme-option-border:var(--palette-border-main);--theme-option-hover-bg:var(--palette-surface-variant);--theme-option-selected-bg:var(--palette-primary-light);--theme-option-selected-border:var(--palette-primary-main);--theme-option-selected-text:var(--palette-on-primary);--theme-option-correct-bg:var(--palette-success-light);--theme-option-correct-border:var(--palette-success-border);--theme-option-correct-text:var(--palette-success-dark);--theme-option-incorrect-bg:var(--palette-error-light);--theme-option-incorrect-border:var(--palette-error-border);--theme-option-incorrect-text:var(--palette-error-dark);--theme-explanation-bg:var(--palette-info-light);--theme-explanation-border:var(--palette-info-main);--theme-link-color:var(--palette-info-main);--theme-link-hover:var(--palette-info-dark);--theme-code-bg:var(--palette-surface-variant);--theme-code-text:var(--palette-text-primary);--theme-mui-label-bg:var(--palette-surface-main);--theme-outline:var(--palette-border-main);--theme-outline-variant:var(--palette-border-light);--theme-border-radius:12px;--theme-border-radius-small:8px;--theme-border-radius-large:16px;--theme-elevation-1:0 2px 4px rgba(0,0,0,.1);--theme-elevation-2:0 4px 8px rgba(0,0,0,.15);--theme-elevation-3:0 6px 12px rgba(0,0,0,.2);--theme-elevation-4:0 8px 16px rgba(0,0,0,.25)}html[data-theme=light]{--theme-header-bg-start:var(--palette-header-bg-start);--theme-header-bg-end:var(--palette-header-bg-end);--theme-header-collapsed-bg-start:var(--palette-header-collapsed-bg-start);--theme-header-collapsed-bg-end:var(--palette-header-collapsed-bg-end);--theme-control-hover-text:var(--palette-text-inverted);--theme-control-hover-border:#555;--theme-panel-bg-end:#252525;--theme-panel-shadow:rgba(0,0,0,.6);--theme-floating-border:hsla(0,0%,100%,.5);--theme-option-text:#222;--theme-option-hover-bg:#e0e0e0;--theme-option-selected-bg:#d0e0ff;--theme-option-selected-text:var(--palette-primary-dark);--theme-code-bg:rgba(0,0,0,.1)}html[data-theme=dark]{--theme-header-bg-start:var(--palette-header-bg-start);--theme-header-bg-end:var(--palette-header-bg-end);--theme-header-collapsed-bg-start:var(--palette-header-collapsed-bg-start);--theme-header-collapsed-bg-end:var(--palette-header-collapsed-bg-end);--theme-control-hover-text:var(--palette-text-primary);--theme-control-hover-border:#777;--theme-panel-bg-end:var(--palette-surface-elevated);--theme-panel-shadow:rgba(0,0,0,.8);--theme-floating-border:hsla(0,0%,100%,.2);--theme-option-text:var(--palette-text-secondary);--theme-option-hover-bg:var(--palette-surface-elevated);--theme-option-selected-bg:var(--palette-primary-dark);--theme-option-selected-text:var(--palette-primary-light);--theme-code-bg:hsla(0,0%,100%,.1);--theme-code-text:var(--palette-text-secondary);--theme-mui-label-bg:#292929;--theme-elevation-1:0 2px 4px rgba(0,0,0,.2);--theme-elevation-2:0 4px 8px rgba(0,0,0,.3);--theme-elevation-3:0 6px 12px rgba(0,0,0,.4);--theme-elevation-4:0 8px 16px rgba(0,0,0,.5)}*{transition:background-color .3s cubic-bezier(.4,0,.2,1),border-color .3s cubic-bezier(.4,0,.2,1),color .3s cubic-bezier(.4,0,.2,1),box-shadow .3s cubic-bezier(.4,0,.2,1)}.MuiButton-root:focus,.MuiFab-root:hover,.MuiIconButton-root:focus,.MuiMenuItem-root:hover,:active,:focus,:hover,button:focus,input:focus,select:focus,textarea:focus{transition:none}