@dodlhuat/basix 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/README.md +482 -0
  2. package/css/accordion.css +109 -0
  3. package/css/accordion.css.map +1 -0
  4. package/css/accordion.scss +78 -0
  5. package/css/alert.css +57 -0
  6. package/css/alert.css.map +1 -0
  7. package/css/alert.scss +86 -0
  8. package/css/button.css +69 -0
  9. package/css/button.css.map +1 -0
  10. package/css/button.scss +102 -0
  11. package/css/card.css +144 -0
  12. package/css/card.css.map +1 -0
  13. package/css/card.scss +66 -0
  14. package/css/carousel.css +118 -0
  15. package/css/carousel.css.map +1 -0
  16. package/css/carousel.scss +87 -0
  17. package/css/chart.css +159 -0
  18. package/css/chart.css.map +1 -0
  19. package/css/chart.scss +159 -0
  20. package/css/chat-bubbles.css +97 -0
  21. package/css/chat-bubbles.css.map +1 -0
  22. package/css/chat-bubbles.scss +68 -0
  23. package/css/checkbox.css +77 -0
  24. package/css/checkbox.css.map +1 -0
  25. package/css/checkbox.scss +55 -0
  26. package/css/chips.css +72 -0
  27. package/css/chips.css.map +1 -0
  28. package/css/chips.scss +52 -0
  29. package/css/code-viewer.css +97 -0
  30. package/css/code-viewer.css.map +1 -0
  31. package/css/code-viewer.scss +98 -0
  32. package/css/colors.css +63 -0
  33. package/css/colors.css.map +1 -0
  34. package/css/colors.scss +33 -0
  35. package/css/datepicker.css +264 -0
  36. package/css/datepicker.css.map +1 -0
  37. package/css/datepicker.scss +317 -0
  38. package/css/defaults.css +118 -0
  39. package/css/defaults.css.map +1 -0
  40. package/css/defaults.scss +91 -0
  41. package/css/dropdown.css +146 -0
  42. package/css/dropdown.css.map +1 -0
  43. package/css/dropdown.scss +137 -0
  44. package/css/editor.css +413 -0
  45. package/css/editor.scss +458 -0
  46. package/css/file-uploader.css +194 -0
  47. package/css/file-uploader.css.map +1 -0
  48. package/css/file-uploader.scss +195 -0
  49. package/css/flyout-menu.css +345 -0
  50. package/css/flyout-menu.css.map +1 -0
  51. package/css/flyout-menu.scss +355 -0
  52. package/css/form-builder.css +9 -0
  53. package/css/form-builder.css.map +1 -0
  54. package/css/form-builder.scss +11 -0
  55. package/css/form.css +130 -0
  56. package/css/form.css.map +1 -0
  57. package/css/form.scss +115 -0
  58. package/css/gallery.css +91 -0
  59. package/css/gallery.css.map +1 -0
  60. package/css/gallery.scss +63 -0
  61. package/css/grid.css +44 -0
  62. package/css/grid.css.map +1 -0
  63. package/css/grid.scss +41 -0
  64. package/css/guitar-chords.css +251 -0
  65. package/css/icons.css +327 -0
  66. package/css/icons.css.map +1 -0
  67. package/css/icons.scss +331 -0
  68. package/css/modal.css +97 -0
  69. package/css/modal.css.map +1 -0
  70. package/css/modal.scss +72 -0
  71. package/css/parameters.css +1 -0
  72. package/css/parameters.css.map +1 -0
  73. package/css/parameters.scss +4 -0
  74. package/css/placeholder.css +50 -0
  75. package/css/placeholder.css.map +1 -0
  76. package/css/placeholder.scss +28 -0
  77. package/css/progress.css +51 -0
  78. package/css/progress.css.map +1 -0
  79. package/css/progress.scss +32 -0
  80. package/css/properties.css +31 -0
  81. package/css/properties.css.map +1 -0
  82. package/css/properties.scss +31 -0
  83. package/css/push-menu.css +145 -0
  84. package/css/push-menu.css.map +1 -0
  85. package/css/push-menu.scss +127 -0
  86. package/css/radiobutton.css +91 -0
  87. package/css/radiobutton.css.map +1 -0
  88. package/css/radiobutton.scss +64 -0
  89. package/css/reset.css +46 -0
  90. package/css/reset.css.map +1 -0
  91. package/css/reset.scss +40 -0
  92. package/css/scrollbar.css +91 -0
  93. package/css/scrollbar.css.map +1 -0
  94. package/css/scrollbar.scss +69 -0
  95. package/css/spinner.css +118 -0
  96. package/css/spinner.css.map +1 -0
  97. package/css/spinner.scss +91 -0
  98. package/css/style.css +3735 -0
  99. package/css/style.css.map +1 -0
  100. package/css/style.min.css +1 -0
  101. package/css/style.scss +38 -0
  102. package/css/switch.css +66 -0
  103. package/css/switch.css.map +1 -0
  104. package/css/switch.scss +42 -0
  105. package/css/table.css +201 -0
  106. package/css/table.css.map +1 -0
  107. package/css/table.scss +178 -0
  108. package/css/tabs.css +135 -0
  109. package/css/tabs.css.map +1 -0
  110. package/css/tabs.scss +118 -0
  111. package/css/timeline.css +69 -0
  112. package/css/timeline.css.map +1 -0
  113. package/css/timeline.scss +69 -0
  114. package/css/timepicker.scss +72 -0
  115. package/css/toast.css +98 -0
  116. package/css/toast.css.map +1 -0
  117. package/css/toast.scss +81 -0
  118. package/css/tooltip.css +151 -0
  119. package/css/tooltip.css.map +1 -0
  120. package/css/tooltip.scss +122 -0
  121. package/css/tree.css +199 -0
  122. package/css/tree.css.map +1 -0
  123. package/css/tree.scss +192 -0
  124. package/css/typography.css +137 -0
  125. package/css/typography.css.map +1 -0
  126. package/css/typography.scss +100 -0
  127. package/css/virtual-dropdown.css +149 -0
  128. package/css/virtual-dropdown.css.map +1 -0
  129. package/css/virtual-dropdown.scss +142 -0
  130. package/fonts/MaterialSymbolsOutlined.woff2 +0 -0
  131. package/fonts/Outfit-VariableFont_wght.woff +0 -0
  132. package/fonts/Outfit-VariableFont_wght.woff2 +0 -0
  133. package/fonts/material-icons.woff2 +0 -0
  134. package/icons/activity-outline.svg +1 -0
  135. package/icons/alert-circle-outline.svg +1 -0
  136. package/icons/alert-triangle-outline.svg +1 -0
  137. package/icons/archive-outline.svg +1 -0
  138. package/icons/arrow-back-outline.svg +1 -0
  139. package/icons/arrow-circle-down-outline.svg +1 -0
  140. package/icons/arrow-circle-left-outline.svg +1 -0
  141. package/icons/arrow-circle-right-outline.svg +1 -0
  142. package/icons/arrow-circle-up-outline.svg +1 -0
  143. package/icons/arrow-down-outline.svg +1 -0
  144. package/icons/arrow-downward-outline.svg +1 -0
  145. package/icons/arrow-forward-outline.svg +1 -0
  146. package/icons/arrow-ios-back-outline.svg +1 -0
  147. package/icons/arrow-ios-downward-outline.svg +1 -0
  148. package/icons/arrow-ios-forward-outline.svg +1 -0
  149. package/icons/arrow-ios-upward-outline.svg +1 -0
  150. package/icons/arrow-left-outline.svg +1 -0
  151. package/icons/arrow-right-outline.svg +1 -0
  152. package/icons/arrow-up-outline.svg +1 -0
  153. package/icons/arrow-upward-outline.svg +1 -0
  154. package/icons/arrowhead-down-outline.svg +1 -0
  155. package/icons/arrowhead-left-outline.svg +1 -0
  156. package/icons/arrowhead-right-outline.svg +1 -0
  157. package/icons/arrowhead-up-outline.svg +1 -0
  158. package/icons/at-outline.svg +1 -0
  159. package/icons/attach-2-outline.svg +1 -0
  160. package/icons/attach-outline.svg +1 -0
  161. package/icons/award-outline.svg +1 -0
  162. package/icons/backspace-outline.svg +1 -0
  163. package/icons/bar-chart-2-outline.svg +1 -0
  164. package/icons/bar-chart-outline.svg +1 -0
  165. package/icons/battery-outline.svg +1 -0
  166. package/icons/behance-outline.svg +1 -0
  167. package/icons/bell-off-outline.svg +1 -0
  168. package/icons/bell-outline.svg +1 -0
  169. package/icons/bluetooth-outline.svg +1 -0
  170. package/icons/book-open-outline.svg +1 -0
  171. package/icons/book-outline.svg +1 -0
  172. package/icons/bookmark-outline.svg +1 -0
  173. package/icons/briefcase-outline.svg +1 -0
  174. package/icons/browser-outline.svg +1 -0
  175. package/icons/brush-outline.svg +1 -0
  176. package/icons/bulb-outline.svg +1 -0
  177. package/icons/calendar-outline.svg +1 -0
  178. package/icons/camera-outline.svg +1 -0
  179. package/icons/car-outline.svg +1 -0
  180. package/icons/cast-outline.svg +1 -0
  181. package/icons/charging-outline.svg +1 -0
  182. package/icons/checkmark-circle-2-outline.svg +1 -0
  183. package/icons/checkmark-circle-outline.svg +1 -0
  184. package/icons/checkmark-outline.svg +1 -0
  185. package/icons/checkmark-square-2-outline.svg +1 -0
  186. package/icons/checkmark-square-outline.svg +1 -0
  187. package/icons/chevron-down-outline.svg +1 -0
  188. package/icons/chevron-left-outline.svg +1 -0
  189. package/icons/chevron-right-outline.svg +1 -0
  190. package/icons/chevron-up-outline.svg +1 -0
  191. package/icons/clipboard-outline.svg +1 -0
  192. package/icons/clock-outline.svg +1 -0
  193. package/icons/close-circle-outline.svg +1 -0
  194. package/icons/close-outline.svg +1 -0
  195. package/icons/close-square-outline.svg +1 -0
  196. package/icons/cloud-download-outline.svg +1 -0
  197. package/icons/cloud-upload-outline.svg +1 -0
  198. package/icons/code-download-outline.svg +1 -0
  199. package/icons/code-outline.svg +1 -0
  200. package/icons/collapse-outline.svg +1 -0
  201. package/icons/color-palette-outline.svg +1 -0
  202. package/icons/color-picker-outline.svg +1 -0
  203. package/icons/compass-outline.svg +1 -0
  204. package/icons/copy-outline.svg +1 -0
  205. package/icons/corner-down-left-outline.svg +1 -0
  206. package/icons/corner-down-right-outline.svg +1 -0
  207. package/icons/corner-left-down-outline.svg +1 -0
  208. package/icons/corner-left-up-outline.svg +1 -0
  209. package/icons/corner-right-down-outline.svg +1 -0
  210. package/icons/corner-right-up-outline.svg +1 -0
  211. package/icons/corner-up-left-outline.svg +1 -0
  212. package/icons/corner-up-right-outline.svg +1 -0
  213. package/icons/credit-card-outline.svg +1 -0
  214. package/icons/crop-outline.svg +1 -0
  215. package/icons/cube-outline.svg +1 -0
  216. package/icons/diagonal-arrow-left-down-outline.svg +1 -0
  217. package/icons/diagonal-arrow-left-up-outline.svg +1 -0
  218. package/icons/diagonal-arrow-right-down-outline.svg +1 -0
  219. package/icons/diagonal-arrow-right-up-outline.svg +1 -0
  220. package/icons/done-all-outline.svg +1 -0
  221. package/icons/download-outline.svg +1 -0
  222. package/icons/droplet-off-outline.svg +1 -0
  223. package/icons/droplet-outline.svg +1 -0
  224. package/icons/edit-2-outline.svg +1 -0
  225. package/icons/edit-outline.svg +1 -0
  226. package/icons/email-outline.svg +1 -0
  227. package/icons/expand-outline.svg +1 -0
  228. package/icons/external-link-outline.svg +1 -0
  229. package/icons/eye-off-2-outline.svg +1 -0
  230. package/icons/eye-off-outline.svg +1 -0
  231. package/icons/eye-outline.svg +1 -0
  232. package/icons/facebook-outline.svg +1 -0
  233. package/icons/file-add-outline.svg +1 -0
  234. package/icons/file-outline.svg +1 -0
  235. package/icons/file-remove-outline.svg +1 -0
  236. package/icons/file-text-outline.svg +1 -0
  237. package/icons/film-outline.svg +1 -0
  238. package/icons/flag-outline.svg +1 -0
  239. package/icons/flash-off-outline.svg +1 -0
  240. package/icons/flash-outline.svg +1 -0
  241. package/icons/flip-2-outline.svg +1 -0
  242. package/icons/flip-outline.svg +1 -0
  243. package/icons/folder-add-outline.svg +1 -0
  244. package/icons/folder-outline.svg +1 -0
  245. package/icons/folder-remove-outline.svg +1 -0
  246. package/icons/funnel-outline.svg +1 -0
  247. package/icons/gift-outline.svg +1 -0
  248. package/icons/github-outline.svg +1 -0
  249. package/icons/globe-2-outline.svg +1 -0
  250. package/icons/globe-outline.svg +1 -0
  251. package/icons/google-outline.svg +1 -0
  252. package/icons/grid-outline.svg +1 -0
  253. package/icons/hard-drive-outline.svg +1 -0
  254. package/icons/hash-outline.svg +1 -0
  255. package/icons/headphones-outline.svg +1 -0
  256. package/icons/heart-outline.svg +1 -0
  257. package/icons/home-outline.svg +1 -0
  258. package/icons/image-outline.svg +1 -0
  259. package/icons/inbox-outline.svg +1 -0
  260. package/icons/info-outline.svg +1 -0
  261. package/icons/keypad-outline.svg +1 -0
  262. package/icons/layers-outline.svg +1 -0
  263. package/icons/layout-outline.svg +1 -0
  264. package/icons/link-2-outline.svg +1 -0
  265. package/icons/link-outline.svg +1 -0
  266. package/icons/linkedin-outline.svg +1 -0
  267. package/icons/list-outline.svg +1 -0
  268. package/icons/loader-outline.svg +1 -0
  269. package/icons/lock-outline.svg +1 -0
  270. package/icons/log-in-outline.svg +1 -0
  271. package/icons/log-out-outline.svg +1 -0
  272. package/icons/map-outline.svg +1 -0
  273. package/icons/maximize-outline.svg +1 -0
  274. package/icons/menu-2-outline.svg +1 -0
  275. package/icons/menu-arrow-outline.svg +1 -0
  276. package/icons/menu-outline.svg +1 -0
  277. package/icons/message-circle-outline.svg +1 -0
  278. package/icons/message-square-outline.svg +1 -0
  279. package/icons/mic-off-outline.svg +1 -0
  280. package/icons/mic-outline.svg +1 -0
  281. package/icons/minimize-outline.svg +1 -0
  282. package/icons/minus-circle-outline.svg +1 -0
  283. package/icons/minus-outline.svg +1 -0
  284. package/icons/minus-square-outline.svg +1 -0
  285. package/icons/monitor-outline.svg +1 -0
  286. package/icons/moon-outline.svg +1 -0
  287. package/icons/more-horizontal-outline.svg +1 -0
  288. package/icons/more-vertical-outline.svg +1 -0
  289. package/icons/move-outline.svg +1 -0
  290. package/icons/music-outline.svg +1 -0
  291. package/icons/navigation-2-outline.svg +1 -0
  292. package/icons/navigation-outline.svg +1 -0
  293. package/icons/npm-outline.svg +1 -0
  294. package/icons/options-2-outline.svg +1 -0
  295. package/icons/options-outline.svg +1 -0
  296. package/icons/pantone-outline.svg +1 -0
  297. package/icons/paper-plane-outline.svg +1 -0
  298. package/icons/pause-circle-outline.svg +1 -0
  299. package/icons/people-outline.svg +1 -0
  300. package/icons/percent-outline.svg +1 -0
  301. package/icons/person-add-outline.svg +1 -0
  302. package/icons/person-delete-outline.svg +1 -0
  303. package/icons/person-done-outline.svg +1 -0
  304. package/icons/person-outline.svg +1 -0
  305. package/icons/person-remove-outline.svg +1 -0
  306. package/icons/phone-call-outline.svg +1 -0
  307. package/icons/phone-missed-outline.svg +1 -0
  308. package/icons/phone-off-outline.svg +1 -0
  309. package/icons/phone-outline.svg +1 -0
  310. package/icons/pie-chart-outline.svg +1 -0
  311. package/icons/pin-outline.svg +1 -0
  312. package/icons/play-circle-outline.svg +1 -0
  313. package/icons/plus-circle-outline.svg +1 -0
  314. package/icons/plus-outline.svg +1 -0
  315. package/icons/plus-square-outline.svg +1 -0
  316. package/icons/power-outline.svg +1 -0
  317. package/icons/pricetags-outline.svg +1 -0
  318. package/icons/printer-outline.svg +1 -0
  319. package/icons/question-mark-circle-outline.svg +1 -0
  320. package/icons/question-mark-outline.svg +1 -0
  321. package/icons/radio-button-off-outline.svg +1 -0
  322. package/icons/radio-button-on-outline.svg +1 -0
  323. package/icons/radio-outline.svg +1 -0
  324. package/icons/recording-outline.svg +1 -0
  325. package/icons/refresh-outline.svg +1 -0
  326. package/icons/repeat-outline.svg +1 -0
  327. package/icons/rewind-left-outline.svg +1 -0
  328. package/icons/rewind-right-outline.svg +1 -0
  329. package/icons/save-outline.svg +1 -0
  330. package/icons/scissors-outline.svg +1 -0
  331. package/icons/search-outline.svg +1 -0
  332. package/icons/settings-2-outline.svg +1 -0
  333. package/icons/settings-outline.svg +1 -0
  334. package/icons/shake-outline.svg +1 -0
  335. package/icons/share-outline.svg +1 -0
  336. package/icons/shield-off-outline.svg +1 -0
  337. package/icons/shield-outline.svg +1 -0
  338. package/icons/shopping-bag-outline.svg +1 -0
  339. package/icons/shopping-cart-outline.svg +1 -0
  340. package/icons/shuffle-2-outline.svg +1 -0
  341. package/icons/shuffle-outline.svg +1 -0
  342. package/icons/skip-back-outline.svg +1 -0
  343. package/icons/skip-forward-outline.svg +1 -0
  344. package/icons/slash-outline.svg +1 -0
  345. package/icons/smartphone-outline.svg +1 -0
  346. package/icons/smiling-face-outline.svg +1 -0
  347. package/icons/speaker-outline.svg +1 -0
  348. package/icons/square-outline.svg +1 -0
  349. package/icons/star-outline.svg +1 -0
  350. package/icons/stop-circle-outline.svg +1 -0
  351. package/icons/sun-outline.svg +1 -0
  352. package/icons/swap-outline.svg +1 -0
  353. package/icons/sync-outline.svg +1 -0
  354. package/icons/text-outline.svg +1 -0
  355. package/icons/thermometer-minus-outline.svg +1 -0
  356. package/icons/thermometer-outline.svg +1 -0
  357. package/icons/thermometer-plus-outline.svg +1 -0
  358. package/icons/toggle-left-outline.svg +1 -0
  359. package/icons/toggle-right-outline.svg +1 -0
  360. package/icons/trash-2-outline.svg +1 -0
  361. package/icons/trash-outline.svg +1 -0
  362. package/icons/trending-down-outline.svg +1 -0
  363. package/icons/trending-up-outline.svg +1 -0
  364. package/icons/tv-outline.svg +1 -0
  365. package/icons/twitter-outline.svg +1 -0
  366. package/icons/umbrella-outline.svg +1 -0
  367. package/icons/undo-outline.svg +1 -0
  368. package/icons/unlock-outline.svg +1 -0
  369. package/icons/upload-outline.svg +1 -0
  370. package/icons/video-off-outline.svg +1 -0
  371. package/icons/video-outline.svg +1 -0
  372. package/icons/volume-down-outline.svg +1 -0
  373. package/icons/volume-mute-outline.svg +1 -0
  374. package/icons/volume-off-outline.svg +1 -0
  375. package/icons/volume-up-outline.svg +1 -0
  376. package/icons/wifi-off-outline.svg +1 -0
  377. package/icons/wifi-outline.svg +1 -0
  378. package/js/carousel.js +133 -0
  379. package/js/carousel.ts +173 -0
  380. package/js/chart.js +257 -0
  381. package/js/code-viewer.js +148 -0
  382. package/js/code-viewer.ts +188 -0
  383. package/js/datepicker.js +497 -0
  384. package/js/datepicker.ts +619 -0
  385. package/js/dropdown.js +122 -0
  386. package/js/dropdown.ts +180 -0
  387. package/js/editor.js +421 -0
  388. package/js/editor.ts +426 -0
  389. package/js/file-uploader.js +268 -0
  390. package/js/file-uploader.ts +350 -0
  391. package/js/flyout-menu.js +195 -0
  392. package/js/flyout-menu.ts +250 -0
  393. package/js/form-builder.js +107 -0
  394. package/js/gallery.js +177 -0
  395. package/js/gallery.ts +231 -0
  396. package/js/guitar-chords.js +268 -0
  397. package/js/index.js +720 -0
  398. package/js/index.ts +874 -0
  399. package/js/lazy-loader.js +121 -0
  400. package/js/modal.js +113 -0
  401. package/js/modal.ts +167 -0
  402. package/js/push-menu.js +101 -0
  403. package/js/push-menu.ts +130 -0
  404. package/js/request.js +51 -0
  405. package/js/scroll.js +27 -0
  406. package/js/scroll.ts +47 -0
  407. package/js/scrollbar.js +219 -0
  408. package/js/scrollbar.ts +308 -0
  409. package/js/select.js +158 -0
  410. package/js/select.ts +217 -0
  411. package/js/table.js +359 -0
  412. package/js/table.ts +453 -0
  413. package/js/tabs.js +225 -0
  414. package/js/tabs.ts +280 -0
  415. package/js/theme.js +194 -0
  416. package/js/theme.ts +225 -0
  417. package/js/timepicker.js +98 -0
  418. package/js/timepicker.ts +131 -0
  419. package/js/toast.js +93 -0
  420. package/js/toast.ts +138 -0
  421. package/js/tooltip.js +193 -0
  422. package/js/tooltip.ts +252 -0
  423. package/js/tree.js +162 -0
  424. package/js/tree.ts +218 -0
  425. package/js/tsconfig.json +18 -0
  426. package/js/utils.js +69 -0
  427. package/js/utils.ts +84 -0
  428. package/js/virtual-dropdown.js +277 -0
  429. package/js/virtual-dropdown.ts +366 -0
  430. package/package.json +38 -0
package/css/style.css ADDED
@@ -0,0 +1,3735 @@
1
+ @charset "UTF-8";
2
+ html, body, div, span, applet, object, iframe,
3
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
4
+ a, abbr, acronym, address, big, cite, code,
5
+ del, dfn, em, img, ins, kbd, q, s, samp,
6
+ small, strike, strong, sub, sup, tt, var,
7
+ b, u, i, center,
8
+ dl, dt, dd, ol, ul, li,
9
+ fieldset, form, label, legend,
10
+ table, caption, tbody, tfoot, thead, tr, th, td,
11
+ article, aside, canvas, details, embed,
12
+ figure, figcaption, footer, header, hgroup,
13
+ menu, nav, output, ruby, section, summary,
14
+ time, mark, audio, video {
15
+ margin: 0;
16
+ padding: 0;
17
+ border: 0;
18
+ font: inherit;
19
+ vertical-align: baseline;
20
+ }
21
+
22
+ article, aside, details, figcaption, figure,
23
+ footer, header, hgroup, menu, nav, section {
24
+ display: block;
25
+ }
26
+
27
+ body {
28
+ line-height: 1;
29
+ }
30
+
31
+ ol, ul {
32
+ list-style: none;
33
+ }
34
+
35
+ blockquote, q {
36
+ quotes: none;
37
+ }
38
+
39
+ blockquote::before, blockquote::after,
40
+ q::before, q::after {
41
+ content: none;
42
+ }
43
+
44
+ table {
45
+ border-collapse: collapse;
46
+ border-spacing: 0;
47
+ }
48
+
49
+ :root {
50
+ --primary-text: #1E1F24;
51
+ --secondary-text: #62636C;
52
+ --divider: #D8D9E0;
53
+ --accent-text: #3D63DD;
54
+ --error: #D64545;
55
+ --warning: #C28A00;
56
+ --success: #2E8B57;
57
+ --secondary-background: #E7E8EC;
58
+ --background: #F9F9FB;
59
+ --accent-color: #3D63DD;
60
+ --accent-color-lighten: #87A5EF;
61
+ --accent-color-text: #D8D9E0;
62
+ --disabled: #D8D9E0;
63
+ }
64
+
65
+ [data-theme=dark] {
66
+ --primary-text: #EEEEF0;
67
+ --secondary-text: #B2B3BD;
68
+ --divider: #393A40;
69
+ --accent-text: #0E496D;
70
+ --error: #FF6B6B;
71
+ --warning: #F7B500;
72
+ --success: #5CC689;
73
+ --background: #111113;
74
+ --secondary-background: #19191B;
75
+ --accent-color: #1B7BB4;
76
+ --accent-color-lighten: #175982;
77
+ --accent-color-text: #B2B3BD;
78
+ --disabled: #303136;
79
+ }
80
+
81
+ body {
82
+ background: var(--background);
83
+ }
84
+
85
+ .warning {
86
+ color: var(--warning);
87
+ }
88
+
89
+ .warning-bg {
90
+ background: var(--warning);
91
+ }
92
+
93
+ .error {
94
+ color: var(--error);
95
+ }
96
+
97
+ .error-bg {
98
+ background: var(--error);
99
+ }
100
+
101
+ .success {
102
+ color: var(--success);
103
+ }
104
+
105
+ .success-bg {
106
+ background: var(--success);
107
+ }
108
+
109
+ .default-bg {
110
+ background: var(--divider);
111
+ }
112
+
113
+ html, body {
114
+ overflow: auto;
115
+ }
116
+
117
+ body {
118
+ position: relative;
119
+ height: 100%;
120
+ width: 100%;
121
+ min-height: 100vh;
122
+ }
123
+
124
+ a {
125
+ cursor: pointer;
126
+ }
127
+
128
+ .content {
129
+ margin-left: 2rem;
130
+ margin-right: 2rem;
131
+ margin-top: 4rem;
132
+ }
133
+
134
+ .hidden {
135
+ display: none;
136
+ }
137
+
138
+ .float-right {
139
+ float: right;
140
+ }
141
+
142
+ .float-left {
143
+ float: left;
144
+ }
145
+
146
+ .block {
147
+ display: block;
148
+ width: 100%;
149
+ }
150
+
151
+ .vertical-align-center {
152
+ align-items: center;
153
+ display: flex;
154
+ }
155
+
156
+ .horizontal-align-center {
157
+ text-align: center;
158
+ }
159
+
160
+ .center {
161
+ align-items: center;
162
+ justify-content: center;
163
+ display: flex;
164
+ }
165
+
166
+ code.code {
167
+ background: var(--divider);
168
+ display: block;
169
+ font-family: monospace;
170
+ border-radius: 0.4rem;
171
+ font-size: 1.3rem;
172
+ margin: 1rem 0;
173
+ }
174
+ code.code .code-header {
175
+ display: block;
176
+ background: var(--disabled);
177
+ border-top-left-radius: 0.4rem;
178
+ border-top-right-radius: 0.4rem;
179
+ padding: 0.5rem 2rem;
180
+ color: var(--primary-text);
181
+ font-weight: bold;
182
+ }
183
+ code.code .code-content {
184
+ padding: 2rem;
185
+ white-space: break-spaces;
186
+ }
187
+
188
+ .cursor-pointer {
189
+ cursor: pointer;
190
+ }
191
+
192
+ .spacing-right {
193
+ margin-right: 1rem;
194
+ }
195
+
196
+ .flex {
197
+ display: flex;
198
+ }
199
+
200
+ .row {
201
+ display: flex;
202
+ flex-direction: row;
203
+ gap: 1rem;
204
+ margin-bottom: 1rem;
205
+ }
206
+ .row.spacing-top {
207
+ padding-top: 0.5rem;
208
+ }
209
+ .row .column {
210
+ flex: 1;
211
+ padding: 1rem;
212
+ }
213
+ .row .column.grow-2 {
214
+ flex-grow: 2;
215
+ }
216
+ .row .column.grow-3 {
217
+ flex-grow: 3;
218
+ }
219
+ .row .column.grow-4 {
220
+ flex-grow: 4;
221
+ }
222
+ .row .column.grow-5 {
223
+ flex-grow: 5;
224
+ }
225
+ .row .column.grow-6 {
226
+ flex-grow: 6;
227
+ }
228
+ .row .column .column {
229
+ padding: 0;
230
+ }
231
+ .row .column .row {
232
+ margin-bottom: 0;
233
+ }
234
+
235
+ @media screen and (max-width: 768px) {
236
+ .row {
237
+ flex-wrap: wrap;
238
+ }
239
+ .row .column {
240
+ flex-basis: 100%;
241
+ overflow: hidden;
242
+ }
243
+ }
244
+ @font-face {
245
+ font-family: "Outfit";
246
+ src: url("../fonts/Outfit-VariableFont_wght.woff2") format("woff2");
247
+ }
248
+ body {
249
+ font-family: "Outfit", helvetica, arial, sans-serif;
250
+ }
251
+
252
+ p, li, td, th, div {
253
+ font-size: 1rem;
254
+ line-height: 1.5;
255
+ color: var(--primary-text);
256
+ }
257
+
258
+ p {
259
+ padding-bottom: 0.5rem;
260
+ }
261
+
262
+ code {
263
+ font-family: "Courier New", Courier, monospace;
264
+ }
265
+
266
+ strong {
267
+ font-weight: bold;
268
+ }
269
+
270
+ em {
271
+ font-style: italic;
272
+ }
273
+
274
+ h1, .h1,
275
+ h2, .h2,
276
+ h3, .h3,
277
+ h4, .h4,
278
+ h5 {
279
+ margin: 0.5rem 0 0.6666666667rem 0;
280
+ line-height: 1.2;
281
+ font-weight: bold;
282
+ color: var(--primary-text);
283
+ }
284
+
285
+ h1, .h1 {
286
+ font-size: 2.5rem;
287
+ }
288
+
289
+ h2, .h2 {
290
+ font-size: 2rem;
291
+ }
292
+
293
+ h3, .h3 {
294
+ font-size: 1.75rem;
295
+ }
296
+
297
+ h4, .h4 {
298
+ font-size: 1.5rem;
299
+ }
300
+
301
+ ul, ol {
302
+ list-style-position: inside;
303
+ margin-bottom: 0.6666666667rem;
304
+ }
305
+
306
+ ul li {
307
+ list-style-type: disc;
308
+ }
309
+ ul li li {
310
+ list-style-type: circle;
311
+ }
312
+
313
+ ol li {
314
+ list-style-type: decimal;
315
+ }
316
+ ol li li {
317
+ list-style-type: lower-latin;
318
+ }
319
+
320
+ hr {
321
+ border: 1px solid var(--divider);
322
+ margin-block: 1.5rem;
323
+ }
324
+
325
+ a {
326
+ color: var(--accent-color);
327
+ text-decoration: none;
328
+ font-weight: 500;
329
+ transition: color 0.2s ease;
330
+ }
331
+ a:hover, a:focus-visible {
332
+ color: var(--accent-color-lighten);
333
+ }
334
+ a:active {
335
+ color: var(--accent-color);
336
+ }
337
+ a:focus-visible {
338
+ outline: 2px solid var(--accent-color);
339
+ outline-offset: 2px;
340
+ }
341
+
342
+ .text-center {
343
+ text-align: center;
344
+ }
345
+
346
+ .card {
347
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
348
+ background: var(--secondary-background);
349
+ border-radius: 0.4rem;
350
+ padding: 1rem;
351
+ position: relative;
352
+ overflow: hidden;
353
+ }
354
+ .card .header {
355
+ border-bottom: 1px solid var(--divider);
356
+ margin: -2rem 0rem;
357
+ padding: 1rem;
358
+ }
359
+ .card .footer {
360
+ border-top: 1px solid var(--divider);
361
+ margin: -2rem;
362
+ padding: 1rem;
363
+ }
364
+ .card .body,
365
+ .card .content {
366
+ padding: 0;
367
+ }
368
+
369
+ .card-flat {
370
+ box-shadow: none;
371
+ border: 1px solid var(--divider);
372
+ }
373
+
374
+ .card-bordered {
375
+ border: 1px solid var(--divider);
376
+ }
377
+
378
+ .card-hover {
379
+ transition: box-shadow 0.3s ease, transform 0.3s ease;
380
+ }
381
+ .card-hover:hover {
382
+ box-shadow: 0 4px 8px rgba(56, 65, 74, 0.2);
383
+ transform: translateY(-2px);
384
+ }
385
+
386
+ .card-padding-none {
387
+ padding: 0;
388
+ }
389
+
390
+ .card-padding-sm {
391
+ padding: 0.5rem;
392
+ }
393
+
394
+ .card-padding-lg {
395
+ padding: 2rem;
396
+ }
397
+
398
+ /* Controls */
399
+ .table-controls {
400
+ display: flex;
401
+ justify-content: space-between;
402
+ align-items: center;
403
+ margin-bottom: 16px;
404
+ flex-wrap: wrap;
405
+ gap: 12px;
406
+ }
407
+
408
+ /* Table Styles */
409
+ .table-wrapper {
410
+ overflow-x: auto;
411
+ border: 1px solid var(--divider);
412
+ border-radius: 8px;
413
+ }
414
+
415
+ table {
416
+ width: 100%;
417
+ border-collapse: collapse;
418
+ text-align: left;
419
+ font-size: 0.875rem;
420
+ }
421
+
422
+ thead {
423
+ background-color: var(--primary-light);
424
+ border-bottom: 1px solid var(--divider);
425
+ }
426
+
427
+ th {
428
+ padding: 12px 16px;
429
+ font-weight: 500;
430
+ color: var(--secondary-text);
431
+ cursor: pointer;
432
+ user-select: none;
433
+ white-space: nowrap;
434
+ }
435
+
436
+ th:hover {
437
+ background-color: #f3f4f6;
438
+ }
439
+
440
+ th.sort-asc::after {
441
+ content: " ▲";
442
+ font-size: 0.7em;
443
+ }
444
+
445
+ th.sort-desc::after {
446
+ content: " ▼";
447
+ font-size: 0.7em;
448
+ }
449
+
450
+ td {
451
+ padding: 12px 16px;
452
+ border-bottom: 1px solid var(--divider);
453
+ color: var(--primary-text);
454
+ }
455
+
456
+ tr:last-child td {
457
+ border-bottom: none;
458
+ }
459
+
460
+ tr:hover {
461
+ background-color: var(--primary-dark);
462
+ }
463
+
464
+ /* Pagination */
465
+ .pagination {
466
+ display: flex;
467
+ justify-content: space-between;
468
+ align-items: center;
469
+ margin-top: 16px;
470
+ padding-top: 16px;
471
+ border-top: 1px solid var(--divider);
472
+ flex-wrap: wrap;
473
+ gap: 12px;
474
+ }
475
+
476
+ .pagination-info {
477
+ font-size: 0.875rem;
478
+ color: var(--secondary-text);
479
+ }
480
+
481
+ .pagination-buttons {
482
+ display: flex;
483
+ gap: 4px;
484
+ }
485
+
486
+ .page-btn {
487
+ padding: 6px 12px;
488
+ border: 1px solid var(--divider);
489
+ background: var(--divider);
490
+ color: var(--primary-text);
491
+ border-radius: 4px;
492
+ cursor: pointer;
493
+ font-size: 0.875rem;
494
+ }
495
+
496
+ .page-btn:hover:not(:disabled) {
497
+ filter: brightness(105%);
498
+ }
499
+
500
+ .page-btn.active {
501
+ background-color: var(--accent-color);
502
+ color: white;
503
+ border-color: var(--accent-color-lighten);
504
+ }
505
+ .page-btn.active:hover:not(:disabled) {
506
+ filter: brightness(115%);
507
+ }
508
+
509
+ .page-btn:disabled {
510
+ opacity: 0.5;
511
+ cursor: not-allowed;
512
+ }
513
+ .page-btn:disabled:hover {
514
+ filter: none;
515
+ }
516
+
517
+ /* Mobile Responsive Styles */
518
+ @media (max-width: 768px) {
519
+ .table-controls {
520
+ flex-direction: column;
521
+ align-items: stretch;
522
+ }
523
+ table,
524
+ thead,
525
+ tbody,
526
+ th,
527
+ td,
528
+ tr {
529
+ display: block;
530
+ }
531
+ thead {
532
+ display: none;
533
+ /* Hide headers on mobile */
534
+ }
535
+ tr {
536
+ border: 1px solid var(--divider);
537
+ border-radius: 8px;
538
+ margin-bottom: 12px;
539
+ padding: 12px;
540
+ }
541
+ td {
542
+ border: none;
543
+ padding: 8px 0;
544
+ display: flex;
545
+ justify-content: space-between;
546
+ align-items: center;
547
+ text-align: right;
548
+ border-bottom: 1px solid #f3f4f6;
549
+ }
550
+ td:last-child {
551
+ border-bottom: none;
552
+ }
553
+ td::before {
554
+ content: attr(data-label);
555
+ font-weight: 600;
556
+ color: var(--secondary-text);
557
+ text-align: left;
558
+ margin-right: 12px;
559
+ }
560
+ .table-wrapper {
561
+ border: none;
562
+ }
563
+ }
564
+ .alert {
565
+ position: relative;
566
+ border-radius: 0.4rem;
567
+ padding: 1rem 1rem 1rem 1.5rem;
568
+ border-left: 0.5rem solid;
569
+ color: var(--primary-text);
570
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
571
+ line-height: 1.5;
572
+ }
573
+ .alert-default {
574
+ background: var(--secondary-background);
575
+ border-left-color: var(--divider);
576
+ color: var(--primary-text);
577
+ }
578
+ .alert-info {
579
+ background: var(--accent-color);
580
+ border-left-color: color-mix(in srgb, var(--accent-color) 80%, black);
581
+ color: var(--divider);
582
+ }
583
+ .alert-success {
584
+ background: var(--success);
585
+ border-left-color: color-mix(in srgb, var(--success) 80%, black);
586
+ color: var(--divider);
587
+ }
588
+ .alert-warning {
589
+ background: var(--warning);
590
+ border-left-color: color-mix(in srgb, var(--warning) 80%, black);
591
+ color: var(--divider);
592
+ }
593
+ .alert-error {
594
+ background: var(--error);
595
+ border-left-color: color-mix(in srgb, var(--error) 80%, black);
596
+ color: var(--divider);
597
+ }
598
+ .alert-dismissible {
599
+ padding-right: 5rem;
600
+ }
601
+ .alert-dismissible .alert-close {
602
+ position: absolute;
603
+ top: 50%;
604
+ right: 1.5rem;
605
+ transform: translateY(-50%);
606
+ background: transparent;
607
+ border: none;
608
+ cursor: pointer;
609
+ padding: 1rem 1.5rem 1rem 2rem;
610
+ color: inherit;
611
+ opacity: 0.7;
612
+ transition: opacity 0.2s ease;
613
+ }
614
+ .alert-dismissible .alert-close:hover {
615
+ opacity: 1;
616
+ }
617
+ .alert .alert-icon {
618
+ margin-right: 0.5rem;
619
+ vertical-align: middle;
620
+ }
621
+
622
+ [data-theme=dark] .alert-default {
623
+ background: var(--secondary-background);
624
+ border-left-color: var(--divider);
625
+ }
626
+ [data-theme=dark] .alert-info, [data-theme=dark] .alert-success, [data-theme=dark] .alert-warning, [data-theme=dark] .alert-error {
627
+ filter: brightness(0.9);
628
+ }
629
+
630
+ textarea, select, .select .dropdown, input {
631
+ width: 100%;
632
+ border: 1px solid var(--divider);
633
+ border-radius: 0.2rem;
634
+ padding: 0.5rem;
635
+ box-sizing: border-box;
636
+ background-color: var(--background);
637
+ min-height: 2rem;
638
+ font-size: 1rem;
639
+ color: var(--primary-text);
640
+ }
641
+
642
+ select {
643
+ padding: 0.2rem;
644
+ }
645
+
646
+ .select-group .dropdown {
647
+ position: relative;
648
+ background-color: var(--background);
649
+ }
650
+ .select-group .dropdown-selected {
651
+ border: 1px solid var(--divider);
652
+ padding: 0 0.8rem;
653
+ border-radius: 0.2rem;
654
+ cursor: pointer;
655
+ background: var(--background);
656
+ height: 2rem;
657
+ line-height: 2rem;
658
+ }
659
+ .select-group .dropdown-selected::after {
660
+ font-family: "Material Symbols Outlined 24pt", serif;
661
+ content: "\e5cf";
662
+ float: right;
663
+ color: var(--primary-text);
664
+ }
665
+ .select-group .dropdown-options {
666
+ position: absolute;
667
+ top: calc(100% + 5px);
668
+ left: 0;
669
+ right: 0;
670
+ border: 1px solid var(--divider);
671
+ border-radius: 0.2rem;
672
+ display: none;
673
+ flex-direction: column;
674
+ z-index: 10;
675
+ max-height: 250px;
676
+ overflow-y: auto;
677
+ background-color: var(--background);
678
+ }
679
+ .select-group .dropdown-option {
680
+ padding: 10px;
681
+ cursor: pointer;
682
+ }
683
+ .select-group .dropdown-option:hover {
684
+ background: var(--divider);
685
+ }
686
+ .select-group .dropdown-option.selected {
687
+ background: var(--secondary-background);
688
+ color: var(--secondary-text);
689
+ }
690
+ .select-group .dropdown.open .dropdown-options {
691
+ display: flex;
692
+ }
693
+ .select-group .hidden {
694
+ display: none;
695
+ }
696
+ @media (max-width: 768px) {
697
+ .select-group .dropdown-options-menu {
698
+ position: fixed;
699
+ top: 0;
700
+ left: 0;
701
+ width: 100%;
702
+ background: #333;
703
+ color: white;
704
+ text-align: center;
705
+ padding: 15px;
706
+ font-weight: bold;
707
+ }
708
+ .select-group .dropdown-options-menu.hidden {
709
+ display: block;
710
+ }
711
+ .select-group .dropdown-options-menu .dropdown-options-icon {
712
+ position: absolute;
713
+ right: 45px;
714
+ cursor: pointer;
715
+ }
716
+ .select-group .dropdown-options {
717
+ position: fixed;
718
+ top: 0;
719
+ left: 0;
720
+ right: 0;
721
+ bottom: 0;
722
+ border: none;
723
+ border-radius: 0;
724
+ padding-top: 60px;
725
+ font-size: 1.2rem;
726
+ }
727
+ }
728
+
729
+ @font-face {
730
+ font-family: "Material Symbols Outlined 24pt";
731
+ src: url("../fonts/MaterialSymbolsOutlined.woff2") format("woff2");
732
+ }
733
+ .icon {
734
+ font-family: "Material Symbols Outlined 24pt", serif;
735
+ font-style: normal;
736
+ font-weight: normal;
737
+ font-variant: normal;
738
+ text-transform: none;
739
+ line-height: 1;
740
+ font-size: 24px;
741
+ -webkit-font-smoothing: antialiased;
742
+ -moz-osx-font-smoothing: grayscale;
743
+ }
744
+
745
+ .icon-delete::before {
746
+ content: "\e872";
747
+ }
748
+
749
+ .icon-search::before {
750
+ content: "\e8b6";
751
+ }
752
+
753
+ .icon-splitscreen_vertical_add::before {
754
+ content: "\f4fc";
755
+ }
756
+
757
+ .icon-splitscreen_add::before {
758
+ content: "\f4fd";
759
+ }
760
+
761
+ .icon-push_pin::before {
762
+ content: "\f10d";
763
+ }
764
+
765
+ .icon-block::before {
766
+ content: "\e033";
767
+ }
768
+
769
+ .icon-check_circle::before {
770
+ content: "\e86c";
771
+ }
772
+
773
+ .icon-stars::before {
774
+ content: "\e8d0";
775
+ }
776
+
777
+ .icon-support::before {
778
+ content: "\ef73";
779
+ }
780
+
781
+ .icon-refresh::before {
782
+ content: "\e5d5";
783
+ }
784
+
785
+ .icon-sync::before {
786
+ content: "\e627";
787
+ }
788
+
789
+ .icon-language::before {
790
+ content: "\e894";
791
+ }
792
+
793
+ .icon-article::before {
794
+ content: "\ef42";
795
+ }
796
+
797
+ .icon-list_alt::before {
798
+ content: "\e0ee";
799
+ }
800
+
801
+ .icon-add_box::before {
802
+ content: "\e146";
803
+ }
804
+
805
+ .icon-disabled_by_default::before {
806
+ content: "\f230";
807
+ }
808
+
809
+ .icon-help_center::before {
810
+ content: "\f1c0";
811
+ }
812
+
813
+ .icon-pages::before {
814
+ content: "\e7f9";
815
+ }
816
+
817
+ .icon-add_photo_alternate::before {
818
+ content: "\e43e";
819
+ }
820
+
821
+ .icon-calendar_today::before {
822
+ content: "\e935";
823
+ }
824
+
825
+ .icon-assignment_turned_in::before {
826
+ content: "\e862";
827
+ }
828
+
829
+ .icon-finance::before {
830
+ content: "\e6bf";
831
+ }
832
+
833
+ .icon-save::before {
834
+ content: "\e161";
835
+ }
836
+
837
+ .icon-folder::before {
838
+ content: "\e2c7";
839
+ }
840
+
841
+ .icon-folder_off::before {
842
+ content: "\eb83";
843
+ }
844
+
845
+ .icon-folder_open::before {
846
+ content: "\e2c8";
847
+ }
848
+
849
+ .icon-mail::before {
850
+ content: "\e0be";
851
+ }
852
+
853
+ .icon-attach_file::before {
854
+ content: "\e226";
855
+ }
856
+
857
+ .icon-chat_bubble::before {
858
+ content: "\e0ca";
859
+ }
860
+
861
+ .icon-cases::before {
862
+ content: "\e992";
863
+ }
864
+
865
+ .icon-send::before {
866
+ content: "\e163";
867
+ }
868
+
869
+ .icon-bookmark::before {
870
+ content: "\e866";
871
+ }
872
+
873
+ .icon-label::before {
874
+ content: "\e892";
875
+ }
876
+
877
+ .icon-filter_alt::before {
878
+ content: "\ef4f";
879
+ }
880
+
881
+ .icon-filter_alt_off::before {
882
+ content: "\eb32";
883
+ }
884
+
885
+ .icon-notifications_active::before {
886
+ content: "\e7f7";
887
+ }
888
+
889
+ .icon-more_horiz::before {
890
+ content: "\e5d3";
891
+ }
892
+
893
+ .icon-more_vert::before {
894
+ content: "\e5d4";
895
+ }
896
+
897
+ .icon-navigate_before::before {
898
+ content: "\e408";
899
+ }
900
+
901
+ .icon-navigate_next::before {
902
+ content: "\e409";
903
+ }
904
+
905
+ .icon-keyboard_double_arrow_left::before {
906
+ content: "\eac3";
907
+ }
908
+
909
+ .icon-keyboard_double_arrow_right::before {
910
+ content: "\eac9";
911
+ }
912
+
913
+ .icon-first_page::before {
914
+ content: "\e5dc";
915
+ }
916
+
917
+ .icon-last_page::before {
918
+ content: "\e5dd";
919
+ }
920
+
921
+ .icon-expand_less::before {
922
+ content: "\e5ce";
923
+ }
924
+
925
+ .icon-expand_more::before {
926
+ content: "\e5cf";
927
+ }
928
+
929
+ .icon-zoom_in_map::before {
930
+ content: "\eb2d";
931
+ }
932
+
933
+ .icon-zoom_out_map::before {
934
+ content: "\e56b";
935
+ }
936
+
937
+ .icon-drag_pan::before {
938
+ content: "\f71e";
939
+ }
940
+
941
+ .icon-format_list_bulleted::before {
942
+ content: "\e241";
943
+ }
944
+
945
+ .icon-format_list_numbered::before {
946
+ content: "\e242";
947
+ }
948
+
949
+ .icon-check::before {
950
+ content: "\e5ca";
951
+ }
952
+
953
+ .icon-remove::before {
954
+ content: "\e15b";
955
+ }
956
+
957
+ .icon-add::before {
958
+ content: "\e145";
959
+ }
960
+
961
+ .icon-close::before {
962
+ content: "\e14c";
963
+ }
964
+
965
+ .icon-format_bold::before {
966
+ content: "\e238";
967
+ }
968
+
969
+ .icon-format_italic::before {
970
+ content: "\e23f";
971
+ }
972
+
973
+ .icon-format_underlined::before {
974
+ content: "\e249";
975
+ }
976
+
977
+ .icon-home::before {
978
+ content: "\e88a";
979
+ }
980
+
981
+ .icon-favorite::before {
982
+ content: "\e87d";
983
+ }
984
+
985
+ .icon-edit::before {
986
+ content: "\e150";
987
+ }
988
+
989
+ .icon-layers::before {
990
+ content: "\e53b";
991
+ }
992
+
993
+ .icon-cloud::before {
994
+ content: "\e2bd";
995
+ }
996
+
997
+ .icon-print::before {
998
+ content: "\e555";
999
+ }
1000
+
1001
+ .icon-share::before {
1002
+ content: "\e80d";
1003
+ }
1004
+
1005
+ .icon-tune::before {
1006
+ content: "\e429";
1007
+ }
1008
+
1009
+ .icon-power_settings_new::before {
1010
+ content: "\e8ac";
1011
+ }
1012
+
1013
+ .icon-timeline::before {
1014
+ content: "\e922";
1015
+ }
1016
+
1017
+ .icon-bar_chart::before {
1018
+ content: "\e26b";
1019
+ }
1020
+
1021
+ .icon-bar_chart_4_bars::before {
1022
+ content: "\f681";
1023
+ }
1024
+
1025
+ .icon-finance_mode::before {
1026
+ content: "\ef92";
1027
+ }
1028
+
1029
+ .icon-database::before {
1030
+ content: "\f20e";
1031
+ }
1032
+
1033
+ .icon-settings::before {
1034
+ content: "\e8b8";
1035
+ }
1036
+
1037
+ .icon-person::before {
1038
+ content: "\e7fd";
1039
+ }
1040
+
1041
+ .icon-menu_open::before {
1042
+ content: "\e7ad";
1043
+ }
1044
+
1045
+ .icon-menu::before {
1046
+ content: "\e7ac";
1047
+ }
1048
+
1049
+ .icon-light::before {
1050
+ content: "\e81a";
1051
+ }
1052
+
1053
+ .icon-dark::before {
1054
+ content: "\ef44";
1055
+ }
1056
+
1057
+ :root {
1058
+ --track-width: 12px;
1059
+ --track-radius: 8px;
1060
+ --thumb-min: 28px;
1061
+ --track-gap: 8px;
1062
+ }
1063
+
1064
+ .scroll-container {
1065
+ position: relative;
1066
+ background: var(--secondary-background);
1067
+ border-radius: 8px;
1068
+ box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06);
1069
+ overflow: hidden;
1070
+ }
1071
+ .scroll-container .viewport {
1072
+ height: 100%;
1073
+ width: 100%;
1074
+ overflow: auto;
1075
+ padding-right: calc(var(--track-width) + var(--track-gap));
1076
+ box-sizing: content-box;
1077
+ }
1078
+ .scroll-container .viewport .content {
1079
+ margin: 0;
1080
+ }
1081
+ .scroll-container .viewport::-webkit-scrollbar {
1082
+ width: 0;
1083
+ height: 0;
1084
+ }
1085
+ .scroll-container .viewport {
1086
+ scrollbar-width: none;
1087
+ -ms-overflow-style: none;
1088
+ }
1089
+ .scroll-container .scrollbar {
1090
+ position: absolute;
1091
+ top: 8px;
1092
+ right: 8px;
1093
+ bottom: 8px;
1094
+ width: var(--track-width);
1095
+ pointer-events: none;
1096
+ }
1097
+ .scroll-container .track {
1098
+ position: relative;
1099
+ height: 100%;
1100
+ border-radius: var(--track-radius);
1101
+ width: 100%;
1102
+ pointer-events: auto;
1103
+ }
1104
+ .scroll-container .thumb {
1105
+ position: absolute;
1106
+ left: 2px;
1107
+ right: 2px;
1108
+ top: 0px;
1109
+ height: 40px;
1110
+ border-radius: calc(var(--track-radius) - 2px);
1111
+ background: var(--secondary-text);
1112
+ cursor: pointer;
1113
+ pointer-events: auto;
1114
+ touch-action: none;
1115
+ }
1116
+
1117
+ button,
1118
+ .button {
1119
+ padding: 1rem 2rem;
1120
+ border-radius: 0.4rem;
1121
+ background: var(--divider);
1122
+ color: var(--primary-text);
1123
+ border: none;
1124
+ cursor: pointer;
1125
+ font-family: inherit;
1126
+ font-size: inherit;
1127
+ line-height: 1;
1128
+ transition: filter 0.2s ease;
1129
+ }
1130
+ button:hover:not(:disabled),
1131
+ .button:hover:not(:disabled) {
1132
+ filter: brightness(115%);
1133
+ }
1134
+ button:focus-visible,
1135
+ .button:focus-visible {
1136
+ outline: 2px solid var(--accent-color);
1137
+ outline-offset: 2px;
1138
+ }
1139
+ button.active,
1140
+ .button.active {
1141
+ background: var(--accent-color-lighten);
1142
+ }
1143
+ button:disabled,
1144
+ .button:disabled {
1145
+ opacity: 0.5;
1146
+ cursor: not-allowed;
1147
+ }
1148
+
1149
+ .button-primary,
1150
+ button.button-primary {
1151
+ background: var(--accent-color);
1152
+ color: var(--divider);
1153
+ }
1154
+
1155
+ .button-success,
1156
+ button.button-success {
1157
+ background: var(--success);
1158
+ color: var(--divider);
1159
+ }
1160
+
1161
+ .button-warning,
1162
+ button.button-warning {
1163
+ background: var(--warning);
1164
+ color: var(--divider);
1165
+ }
1166
+
1167
+ .button-error,
1168
+ button.button-error {
1169
+ background: var(--error);
1170
+ color: var(--divider);
1171
+ }
1172
+
1173
+ .button-group {
1174
+ display: inline-flex;
1175
+ gap: 0;
1176
+ }
1177
+ .button-group button,
1178
+ .button-group .button {
1179
+ border-radius: 0;
1180
+ }
1181
+ .button-group button:first-child,
1182
+ .button-group .button:first-child {
1183
+ border-radius: 0.4rem 0 0 0.4rem;
1184
+ }
1185
+ .button-group button:last-child,
1186
+ .button-group .button:last-child {
1187
+ border-radius: 0 0.4rem 0.4rem 0;
1188
+ }
1189
+ .button-group button:only-child,
1190
+ .button-group .button:only-child {
1191
+ border-radius: 0.4rem;
1192
+ }
1193
+
1194
+ [data-theme=dark] button:hover:not(:disabled),
1195
+ [data-theme=dark] .button:hover:not(:disabled) {
1196
+ filter: brightness(85%);
1197
+ }
1198
+ [data-theme=dark] .button-primary,
1199
+ [data-theme=dark] button.button-primary {
1200
+ color: var(--primary-text);
1201
+ }
1202
+
1203
+ .modal-wrapper {
1204
+ position: absolute;
1205
+ left: 0;
1206
+ top: 0;
1207
+ width: 100%;
1208
+ height: 100%;
1209
+ }
1210
+
1211
+ .modal-background {
1212
+ display: block;
1213
+ width: 100%;
1214
+ height: 100%;
1215
+ background: black;
1216
+ opacity: 0.5;
1217
+ position: relative;
1218
+ z-index: 999;
1219
+ }
1220
+
1221
+ .modal {
1222
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
1223
+ background: var(--secondary-background);
1224
+ border-radius: 0.4rem;
1225
+ padding: 1rem;
1226
+ position: fixed;
1227
+ top: 50%;
1228
+ left: 50%;
1229
+ transform: translate(-50%, -50%);
1230
+ z-index: 1000;
1231
+ min-width: 50%;
1232
+ }
1233
+ .modal .header {
1234
+ position: relative;
1235
+ width: 100%;
1236
+ left: -1rem;
1237
+ top: -1rem;
1238
+ padding: 1rem;
1239
+ border-radius: 0.4rem 0.4rem 0 0;
1240
+ box-sizing: content-box;
1241
+ }
1242
+ .modal .footer {
1243
+ position: relative;
1244
+ width: 100%;
1245
+ left: -1rem;
1246
+ display: flex;
1247
+ bottom: -1rem;
1248
+ padding: 1rem;
1249
+ border-radius: 0 0 0.4rem 0.4rem;
1250
+ box-sizing: content-box;
1251
+ }
1252
+ .modal .footer .buttons {
1253
+ margin-left: auto;
1254
+ order: 2;
1255
+ }
1256
+ .modal .close {
1257
+ cursor: pointer;
1258
+ float: right;
1259
+ z-index: 999;
1260
+ position: relative;
1261
+ }
1262
+
1263
+ @media screen and (max-width: 768px) {
1264
+ .modal {
1265
+ width: 90%;
1266
+ }
1267
+ }
1268
+ .placeholder {
1269
+ animation: placeholder-fade 2s ease-in-out infinite;
1270
+ display: inline-block;
1271
+ cursor: wait;
1272
+ background-color: currentcolor;
1273
+ opacity: 0.5;
1274
+ min-height: 0.5rem;
1275
+ margin-right: 0.5rem;
1276
+ }
1277
+ .placeholder.w-1 {
1278
+ width: 8.3333333333%;
1279
+ }
1280
+ .placeholder.w-2 {
1281
+ width: 16.6666666667%;
1282
+ }
1283
+ .placeholder.w-3 {
1284
+ width: 25%;
1285
+ }
1286
+ .placeholder.w-4 {
1287
+ width: 33.3333333333%;
1288
+ }
1289
+ .placeholder.w-5 {
1290
+ width: 41.6666666667%;
1291
+ }
1292
+ .placeholder.w-6 {
1293
+ width: 50%;
1294
+ }
1295
+ .placeholder.w-7 {
1296
+ width: 58.3333333333%;
1297
+ }
1298
+ .placeholder.w-8 {
1299
+ width: 66.6666666667%;
1300
+ }
1301
+ .placeholder.w-9 {
1302
+ width: 75%;
1303
+ }
1304
+ .placeholder.w-10 {
1305
+ width: 83.3333333333%;
1306
+ }
1307
+ .placeholder.w-11 {
1308
+ width: 91.6666666667%;
1309
+ }
1310
+ .placeholder.w-12 {
1311
+ width: 100%;
1312
+ }
1313
+
1314
+ @-webkit-keyframes placeholder-fade {
1315
+ 50% {
1316
+ opacity: 0.2;
1317
+ }
1318
+ }
1319
+ @keyframes placeholder-fade {
1320
+ 50% {
1321
+ opacity: 0.2;
1322
+ }
1323
+ }
1324
+ .progress-bar {
1325
+ background: var(--background);
1326
+ border-radius: 0.4rem;
1327
+ }
1328
+ .progress-bar .progress {
1329
+ border-radius: 0.4rem;
1330
+ background: linear-gradient(45deg, rgba(255, 255, 255, 0.25) 25%, rgba(255, 255, 255, 0.15) 25%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.25) 50%, rgba(255, 255, 255, 0.25) 75%, rgba(255, 255, 255, 0.15) 75%), var(--accent-color);
1331
+ background-size: 40px 40px;
1332
+ animation: stripes 2.5s linear infinite;
1333
+ }
1334
+
1335
+ @keyframes stripes {
1336
+ from {
1337
+ background-position: 0 0;
1338
+ }
1339
+ to {
1340
+ background-position: 40px 0;
1341
+ }
1342
+ }
1343
+ .spinner {
1344
+ width: 48px;
1345
+ height: 48px;
1346
+ border: 5px solid var(--accent-color);
1347
+ border-bottom-color: transparent;
1348
+ border-radius: 50%;
1349
+ display: inline-block;
1350
+ box-sizing: border-box;
1351
+ animation: rotation 1s linear infinite;
1352
+ }
1353
+
1354
+ @keyframes rotation {
1355
+ 0% {
1356
+ transform: rotate(0deg);
1357
+ }
1358
+ 100% {
1359
+ transform: rotate(360deg);
1360
+ }
1361
+ }
1362
+ .loading, .loading::before, .loading::after {
1363
+ border-radius: 50%;
1364
+ background-color: var(--accent-color);
1365
+ width: 18px;
1366
+ height: 18px;
1367
+ display: inline-block;
1368
+ }
1369
+
1370
+ .loading {
1371
+ position: relative;
1372
+ background-color: rgba(var(--accent-color), 1);
1373
+ opacity: 1;
1374
+ animation: spScaleAlpha 1s infinite linear;
1375
+ }
1376
+
1377
+ .loading::before, .loading::after {
1378
+ content: "";
1379
+ position: absolute;
1380
+ opacity: 0.25;
1381
+ }
1382
+
1383
+ .loading::before {
1384
+ left: 30px;
1385
+ animation: spScaleAlphaBefore 1s infinite linear;
1386
+ }
1387
+
1388
+ .loading::after {
1389
+ left: -30px;
1390
+ animation: spScaleAlphaAfter 1s infinite linear;
1391
+ }
1392
+
1393
+ @keyframes spScaleAlpha {
1394
+ 0% {
1395
+ opacity: 1;
1396
+ }
1397
+ 33% {
1398
+ opacity: 0.25;
1399
+ }
1400
+ 66% {
1401
+ opacity: 0.25;
1402
+ }
1403
+ 100% {
1404
+ opacity: 1;
1405
+ }
1406
+ }
1407
+ @keyframes spScaleAlphaBefore {
1408
+ 0% {
1409
+ opacity: 0.25;
1410
+ }
1411
+ 33% {
1412
+ opacity: 1;
1413
+ }
1414
+ 66% {
1415
+ opacity: 0.25;
1416
+ }
1417
+ }
1418
+ @keyframes spScaleAlphaAfter {
1419
+ 33% {
1420
+ opacity: 0.25;
1421
+ }
1422
+ 66% {
1423
+ opacity: 1;
1424
+ }
1425
+ 100% {
1426
+ opacity: 0.25;
1427
+ }
1428
+ }
1429
+ .toast {
1430
+ display: inline-block;
1431
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
1432
+ background: var(--background);
1433
+ border-radius: 0.4rem;
1434
+ padding: 0.5rem;
1435
+ min-width: 250px;
1436
+ position: fixed;
1437
+ left: -200px;
1438
+ bottom: 1rem;
1439
+ z-index: 1;
1440
+ transition: all 150ms ease-in;
1441
+ }
1442
+ .toast .bar {
1443
+ display: block;
1444
+ height: 4px;
1445
+ width: 100%;
1446
+ background: var(--accent-color);
1447
+ position: absolute;
1448
+ left: 0;
1449
+ top: 0;
1450
+ border-top-left-radius: 0.4rem;
1451
+ border-top-right-radius: 0.4rem;
1452
+ transition: width 250ms linear;
1453
+ }
1454
+ .toast.show {
1455
+ left: 1rem;
1456
+ }
1457
+ .toast.success {
1458
+ color: inherit;
1459
+ }
1460
+ .toast.success .bar {
1461
+ background: var(--success);
1462
+ }
1463
+ .toast.warning {
1464
+ color: inherit;
1465
+ }
1466
+ .toast.warning .bar {
1467
+ background: var(--warning);
1468
+ }
1469
+ .toast.error {
1470
+ color: inherit;
1471
+ }
1472
+ .toast.error .bar {
1473
+ background: var(--error);
1474
+ }
1475
+ .toast .close {
1476
+ cursor: pointer;
1477
+ float: right;
1478
+ z-index: 999;
1479
+ position: relative;
1480
+ }
1481
+ .toast .header {
1482
+ position: relative;
1483
+ width: 100%;
1484
+ padding-right: 0.5rem;
1485
+ left: -0.5rem;
1486
+ padding-left: 0.5rem;
1487
+ padding-bottom: 0.5rem;
1488
+ border-bottom: 1px solid var(--divider);
1489
+ font-weight: bold;
1490
+ }
1491
+ .toast .content {
1492
+ padding-top: 0.5rem;
1493
+ margin: 0;
1494
+ }
1495
+
1496
+ .push-content {
1497
+ transition: all 200ms ease-in;
1498
+ }
1499
+
1500
+ nav {
1501
+ position: fixed;
1502
+ top: 0;
1503
+ left: 0;
1504
+ width: 250px;
1505
+ height: 100%;
1506
+ margin: 0 0 0 -250px;
1507
+ transition: all 200ms ease-in;
1508
+ }
1509
+
1510
+ nav ul {
1511
+ width: 250px;
1512
+ height: 100%;
1513
+ padding: 0;
1514
+ margin: 0;
1515
+ list-style: none;
1516
+ background: var(--primary-dark);
1517
+ overflow: hidden;
1518
+ }
1519
+
1520
+ nav li {
1521
+ margin: 0;
1522
+ }
1523
+
1524
+ nav a {
1525
+ color: var(--primary-text);
1526
+ font-size: 1.8em;
1527
+ text-decoration: none;
1528
+ display: block;
1529
+ padding: 1rem 1.5rem;
1530
+ letter-spacing: 2px;
1531
+ border-bottom: 1px solid var(--primary);
1532
+ }
1533
+ nav a:hover {
1534
+ color: var(--accent-text);
1535
+ }
1536
+
1537
+ .navigation-controls {
1538
+ line-height: inherit;
1539
+ }
1540
+ .navigation-controls label {
1541
+ display: block;
1542
+ width: 1.5rem;
1543
+ height: 100%;
1544
+ color: var(--primary-text);
1545
+ text-align: center;
1546
+ top: 0;
1547
+ left: 0;
1548
+ transition: all 200ms ease-in;
1549
+ z-index: 500;
1550
+ }
1551
+ .navigation-controls input[type=checkbox] {
1552
+ display: none;
1553
+ }
1554
+ .navigation-controls input[type=checkbox]:checked ~ label {
1555
+ left: 250px;
1556
+ }
1557
+
1558
+ nav.pushed {
1559
+ margin: 0;
1560
+ }
1561
+
1562
+ .push-content.pushed {
1563
+ transform: translate3d(250px, 0, 0);
1564
+ }
1565
+
1566
+ .main-header {
1567
+ position: fixed;
1568
+ background: var(--secondary-background);
1569
+ width: 100%;
1570
+ right: 0;
1571
+ transition: width 200ms ease-in;
1572
+ height: 3rem;
1573
+ display: flex;
1574
+ z-index: 2;
1575
+ gap: 1rem;
1576
+ border-bottom: 3px solid var(--secondary-text);
1577
+ top: 0;
1578
+ }
1579
+ .main-header > div:first-child {
1580
+ margin-left: 1rem;
1581
+ }
1582
+ .main-header > div:last-child {
1583
+ margin-right: 1rem;
1584
+ }
1585
+ .main-header > div {
1586
+ display: flex;
1587
+ align-items: center;
1588
+ line-height: 3rem;
1589
+ }
1590
+ .main-header .last {
1591
+ margin-left: auto;
1592
+ }
1593
+ .main-header.pushed {
1594
+ width: calc(100% - 250px);
1595
+ }
1596
+ .main-header .navigation-controls {
1597
+ height: 2.5rem;
1598
+ }
1599
+ .main-header .navigation-controls label {
1600
+ display: block;
1601
+ position: relative;
1602
+ background: initial;
1603
+ width: inherit;
1604
+ height: inherit;
1605
+ }
1606
+ .main-header .navigation-controls input[type=checkbox]:checked ~ label {
1607
+ left: 0;
1608
+ }
1609
+
1610
+ .styled-checkbox {
1611
+ position: absolute;
1612
+ opacity: 0;
1613
+ width: auto;
1614
+ }
1615
+ .styled-checkbox + label {
1616
+ position: relative;
1617
+ cursor: pointer;
1618
+ padding: 0;
1619
+ display: flex;
1620
+ margin-bottom: 0.5rem;
1621
+ }
1622
+ .styled-checkbox + label::before {
1623
+ content: "";
1624
+ margin-right: 10px;
1625
+ display: inline-block;
1626
+ width: 1rem;
1627
+ height: 1rem;
1628
+ transition: border 0.3s;
1629
+ border: 2px solid rgba(0, 0, 0, 0.25);
1630
+ margin-top: 2px;
1631
+ }
1632
+ .styled-checkbox:hover + label::before {
1633
+ border-color: rgba(0, 0, 0, 0.5);
1634
+ }
1635
+ .styled-checkbox:checked + label::before {
1636
+ background: var(--accent-color);
1637
+ }
1638
+ .styled-checkbox:disabled + label {
1639
+ color: var(--disabled);
1640
+ cursor: auto;
1641
+ }
1642
+ .styled-checkbox:disabled + label::before {
1643
+ box-shadow: none;
1644
+ background: var(--disabled);
1645
+ }
1646
+ .styled-checkbox:checked + label::after {
1647
+ content: url("../icons/checkmark-outline.svg");
1648
+ filter: invert(100%) sepia(100%) saturate(2%) hue-rotate(180deg) brightness(101%) contrast(101%);
1649
+ position: absolute;
1650
+ left: 2px;
1651
+ top: 2px;
1652
+ width: 1rem;
1653
+ height: 1rem;
1654
+ }
1655
+
1656
+ .radio-button-container {
1657
+ display: block;
1658
+ position: relative;
1659
+ padding-left: 2rem;
1660
+ line-height: 1.6rem;
1661
+ margin-bottom: 0.5rem;
1662
+ cursor: pointer;
1663
+ font-size: 1rem;
1664
+ user-select: none;
1665
+ }
1666
+ .radio-button-container input {
1667
+ position: absolute;
1668
+ opacity: 0;
1669
+ cursor: pointer;
1670
+ }
1671
+ .radio-button-container input:checked ~ .checkmark {
1672
+ border-color: var(--accent-color);
1673
+ }
1674
+ .radio-button-container input:checked ~ .checkmark::after {
1675
+ display: block;
1676
+ }
1677
+ .radio-button-container input:focus-visible ~ .checkmark {
1678
+ outline: 2px solid var(--accent-color);
1679
+ outline-offset: 2px;
1680
+ }
1681
+ .radio-button-container:hover input ~ .checkmark {
1682
+ border-color: var(--secondary-text);
1683
+ }
1684
+ .radio-button-container .checkmark {
1685
+ position: absolute;
1686
+ top: 0;
1687
+ left: 0;
1688
+ height: 1.15rem;
1689
+ width: 1.15rem;
1690
+ background-color: transparent;
1691
+ border-radius: 50%;
1692
+ border: 2px solid var(--divider);
1693
+ transition: border-color 0.2s ease;
1694
+ }
1695
+ .radio-button-container .checkmark::after {
1696
+ content: "";
1697
+ position: absolute;
1698
+ display: none;
1699
+ top: 50%;
1700
+ left: 50%;
1701
+ transform: translate(-50%, -50%);
1702
+ width: 0.6rem;
1703
+ height: 0.6rem;
1704
+ border-radius: 50%;
1705
+ background: var(--accent-color);
1706
+ }
1707
+
1708
+ .switch input[type=checkbox] {
1709
+ position: absolute;
1710
+ opacity: 0;
1711
+ width: auto;
1712
+ }
1713
+ .switch label {
1714
+ cursor: pointer;
1715
+ width: 3rem;
1716
+ height: 1.5rem;
1717
+ background: var(--secondary-text);
1718
+ display: block;
1719
+ border-radius: 1.5rem;
1720
+ position: relative;
1721
+ text-indent: 3.5rem;
1722
+ white-space: nowrap;
1723
+ }
1724
+ .switch label::after {
1725
+ content: "";
1726
+ position: absolute;
1727
+ top: 0.25rem;
1728
+ left: 5px;
1729
+ width: 1rem;
1730
+ height: 1rem;
1731
+ background: var(--secondary-background);
1732
+ border-radius: 90px;
1733
+ transition: 0.3s;
1734
+ }
1735
+ .switch input:checked + label {
1736
+ background: var(--accent-color);
1737
+ }
1738
+ .switch input:checked + label::after {
1739
+ left: calc(100% - 5px);
1740
+ transform: translateX(-100%);
1741
+ }
1742
+
1743
+ .tooltip {
1744
+ position: fixed;
1745
+ z-index: 10000;
1746
+ background: var(--disabled);
1747
+ color: var(--secondary-text);
1748
+ border-radius: 0.4rem;
1749
+ padding: 1rem 1.5rem;
1750
+ max-width: 300px;
1751
+ opacity: 0;
1752
+ pointer-events: none;
1753
+ transition: opacity 0.2s ease;
1754
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
1755
+ }
1756
+
1757
+ .tooltip.visible {
1758
+ opacity: 1;
1759
+ }
1760
+
1761
+ .tooltip-content {
1762
+ position: relative;
1763
+ }
1764
+
1765
+ /* Arrow styles */
1766
+ .tooltip::before {
1767
+ content: "";
1768
+ position: absolute;
1769
+ width: 0;
1770
+ height: 0;
1771
+ border: 0.5rem solid transparent;
1772
+ }
1773
+
1774
+ .tooltip[data-position=top]::before {
1775
+ bottom: -0.5rem;
1776
+ left: 50%;
1777
+ transform: translateX(-50%);
1778
+ border-top-color: var(--disabled);
1779
+ border-bottom: 0;
1780
+ }
1781
+
1782
+ .tooltip[data-position=bottom]::before {
1783
+ top: -0.5rem;
1784
+ left: 50%;
1785
+ transform: translateX(-50%);
1786
+ border-bottom-color: var(--disabled);
1787
+ border-top: 0;
1788
+ }
1789
+
1790
+ .tooltip[data-position=left]::before {
1791
+ right: -0.5rem;
1792
+ top: 50%;
1793
+ transform: translateY(-50%);
1794
+ border-left-color: var(--disabled);
1795
+ border-right: 0;
1796
+ }
1797
+
1798
+ .tooltip[data-position=right]::before {
1799
+ left: -0.5rem;
1800
+ top: 50%;
1801
+ transform: translateY(-50%);
1802
+ border-right-color: var(--disabled);
1803
+ border-left: 0;
1804
+ }
1805
+
1806
+ .tooltip-content code {
1807
+ padding: 2px 6px;
1808
+ font-family: "Courier New", monospace;
1809
+ font-size: 0.9em;
1810
+ }
1811
+
1812
+ .tooltip.tooltip-info {
1813
+ background: var(--accent-color);
1814
+ }
1815
+
1816
+ .tooltip.tooltip-info::before {
1817
+ border-top-color: var(--accent-color);
1818
+ border-bottom-color: var(--accent-color);
1819
+ border-left-color: var(--accent-color);
1820
+ border-right-color: var(--accent-color);
1821
+ }
1822
+
1823
+ .tooltip.tooltip-success {
1824
+ background: var(--success);
1825
+ }
1826
+
1827
+ .tooltip.tooltip-success::before {
1828
+ border-top-color: var(--success);
1829
+ border-bottom-color: var(--success);
1830
+ border-left-color: var(--success);
1831
+ border-right-color: var(--success);
1832
+ }
1833
+
1834
+ .tooltip.tooltip-warning {
1835
+ background: var(--warning);
1836
+ color: var(--disabled);
1837
+ }
1838
+
1839
+ .tooltip.tooltip-warning::before {
1840
+ border-top-color: var(--warning);
1841
+ border-bottom-color: var(--warning);
1842
+ border-left-color: var(--warning);
1843
+ border-right-color: var(--warning);
1844
+ }
1845
+
1846
+ .tooltip.tooltip-error {
1847
+ background: var(--error);
1848
+ }
1849
+
1850
+ .tooltip.tooltip-error::before {
1851
+ border-top-color: var(--error);
1852
+ border-bottom-color: var(--error);
1853
+ border-left-color: var(--error);
1854
+ border-right-color: var(--error);
1855
+ }
1856
+
1857
+ /* Large tooltip variant */
1858
+ .tooltip.tooltip-large {
1859
+ max-width: 500px;
1860
+ padding: 1rem 1.5rem;
1861
+ }
1862
+
1863
+ .chips .chip {
1864
+ margin: 0 5px 3px 0;
1865
+ display: inline-block;
1866
+ background: var(--divider);
1867
+ padding: 5px 13px;
1868
+ border-radius: 32px;
1869
+ font-size: 13px;
1870
+ position: relative;
1871
+ }
1872
+ .chips .chip.clickable {
1873
+ cursor: pointer;
1874
+ }
1875
+ .chips .chip.clickable:hover {
1876
+ filter: brightness(105%);
1877
+ }
1878
+ .chips .chip.closeable {
1879
+ padding-right: 33px;
1880
+ }
1881
+ .chips .chip.closeable button {
1882
+ padding: 0;
1883
+ background: var(--divider);
1884
+ color: var(--secondary-text);
1885
+ display: inline-block;
1886
+ border: 0;
1887
+ height: 20px;
1888
+ width: 20px;
1889
+ border-radius: 50%;
1890
+ margin: 0 -4px 0 4px;
1891
+ cursor: pointer;
1892
+ position: absolute;
1893
+ right: 13px;
1894
+ }
1895
+ .chips .chip.closeable button:hover {
1896
+ filter: brightness(105%);
1897
+ }
1898
+ .chips .chip.closeable button .icon {
1899
+ font-size: 15px;
1900
+ top: 1px;
1901
+ position: relative;
1902
+ }
1903
+
1904
+ @keyframes fadeInUp {
1905
+ from {
1906
+ opacity: 0;
1907
+ transform: translateY(20px);
1908
+ }
1909
+ to {
1910
+ opacity: 1;
1911
+ transform: translateY(0);
1912
+ }
1913
+ }
1914
+ @keyframes slideIn {
1915
+ from {
1916
+ opacity: 0;
1917
+ transform: translateX(-10px);
1918
+ }
1919
+ to {
1920
+ opacity: 1;
1921
+ transform: translateX(0);
1922
+ }
1923
+ }
1924
+ ul.tree {
1925
+ list-style: none;
1926
+ }
1927
+ ul.tree li {
1928
+ list-style: none;
1929
+ }
1930
+
1931
+ .tree-node {
1932
+ position: relative;
1933
+ margin: 4px 0;
1934
+ }
1935
+
1936
+ .tree-item {
1937
+ position: relative;
1938
+ display: flex;
1939
+ align-items: center;
1940
+ min-height: 52px;
1941
+ padding: 14px 16px;
1942
+ cursor: pointer;
1943
+ user-select: none;
1944
+ overflow: hidden;
1945
+ border: 1px solid transparent;
1946
+ border-radius: 10px;
1947
+ transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
1948
+ -webkit-tap-highlight-color: transparent;
1949
+ }
1950
+ .tree-item::before {
1951
+ content: "";
1952
+ position: absolute;
1953
+ inset: 0;
1954
+ background: var(--accent-color-lighten);
1955
+ opacity: 0;
1956
+ transition: opacity 0.3s ease;
1957
+ }
1958
+ .tree-item:hover::before {
1959
+ opacity: 1;
1960
+ }
1961
+ .tree-item.selected {
1962
+ background: var(--accent-color);
1963
+ }
1964
+ .tree-item.expanded > .tree-icon svg.chevron {
1965
+ transform: rotate(90deg);
1966
+ }
1967
+ .tree-item.file .tree-label {
1968
+ color: var(--secondary-text);
1969
+ font-weight: 400;
1970
+ }
1971
+ .tree-item.file.selected .tree-label {
1972
+ color: var(--accent-color-text);
1973
+ }
1974
+ .tree-item.folder > .tree-icon svg {
1975
+ fill: none;
1976
+ }
1977
+
1978
+ .tree-icon {
1979
+ position: relative;
1980
+ z-index: 1;
1981
+ width: 24px;
1982
+ height: 24px;
1983
+ margin-right: 12px;
1984
+ display: flex;
1985
+ align-items: center;
1986
+ justify-content: center;
1987
+ flex-shrink: 0;
1988
+ }
1989
+ .tree-icon svg {
1990
+ width: 100%;
1991
+ height: 100%;
1992
+ stroke: var(--primary-text);
1993
+ stroke-width: 2;
1994
+ fill: none;
1995
+ transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
1996
+ }
1997
+
1998
+ .tree-label {
1999
+ position: relative;
2000
+ z-index: 1;
2001
+ flex: 1;
2002
+ font-family: "JetBrains Mono", monospace;
2003
+ font-size: 15px;
2004
+ font-weight: 500;
2005
+ letter-spacing: -0.3px;
2006
+ color: var(--primary-text);
2007
+ }
2008
+
2009
+ .tree-children {
2010
+ list-style: none;
2011
+ margin-left: 24px;
2012
+ padding-left: 16px;
2013
+ border-left: 2px solid var(--primary-text);
2014
+ max-height: 0;
2015
+ overflow: hidden;
2016
+ opacity: 0;
2017
+ transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
2018
+ }
2019
+ .tree-children.expanded {
2020
+ max-height: 2000px;
2021
+ opacity: 1;
2022
+ margin: 8px 0;
2023
+ }
2024
+ .tree-children .tree-node {
2025
+ animation: slideIn 0.3s cubic-bezier(0.16, 1, 0.3, 1) backwards;
2026
+ }
2027
+ .tree-children .tree-node:nth-child(1) {
2028
+ animation-delay: 0.05s;
2029
+ }
2030
+ .tree-children .tree-node:nth-child(2) {
2031
+ animation-delay: 0.1s;
2032
+ }
2033
+ .tree-children .tree-node:nth-child(3) {
2034
+ animation-delay: 0.15s;
2035
+ }
2036
+ .tree-children .tree-node:nth-child(4) {
2037
+ animation-delay: 0.2s;
2038
+ }
2039
+ .tree-children .tree-node:nth-child(5) {
2040
+ animation-delay: 0.25s;
2041
+ }
2042
+
2043
+ @media (max-width: 768px) {
2044
+ .tree-item {
2045
+ min-height: 56px;
2046
+ padding: 16px;
2047
+ }
2048
+ .tree-icon {
2049
+ width: 28px;
2050
+ height: 28px;
2051
+ }
2052
+ .tree-label {
2053
+ font-size: 16px;
2054
+ }
2055
+ .tree-children {
2056
+ margin-left: 20px;
2057
+ padding-left: 12px;
2058
+ }
2059
+ }
2060
+ @media (max-width: 480px) {
2061
+ .tree-item {
2062
+ min-height: 60px;
2063
+ padding: 18px 14px;
2064
+ }
2065
+ .tree-label {
2066
+ font-size: 15px;
2067
+ }
2068
+ }
2069
+ .container {
2070
+ max-width: 800px;
2071
+ margin: 0 auto;
2072
+ }
2073
+
2074
+ .datepicker {
2075
+ background: var(--background);
2076
+ border: 1px solid var(--divider);
2077
+ border-radius: 0.4rem;
2078
+ width: 320px;
2079
+ padding: 1rem;
2080
+ user-select: none;
2081
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
2082
+ display: none;
2083
+ position: absolute;
2084
+ z-index: 1000;
2085
+ box-sizing: border-box;
2086
+ }
2087
+
2088
+ .datepicker.visible {
2089
+ display: block;
2090
+ }
2091
+
2092
+ .datepicker-header {
2093
+ display: flex;
2094
+ justify-content: space-between;
2095
+ align-items: center;
2096
+ margin-bottom: 1rem;
2097
+ }
2098
+
2099
+ .datepicker-nav {
2100
+ background: none;
2101
+ border: none;
2102
+ cursor: pointer;
2103
+ padding: 0.5rem;
2104
+ border-radius: 0.4rem;
2105
+ color: var(--primary-text);
2106
+ transition: background-color 0.2s;
2107
+ }
2108
+
2109
+ .datepicker-nav:hover {
2110
+ background-color: var(--accent-color-lighten);
2111
+ color: var(--accent-color-text);
2112
+ }
2113
+
2114
+ .datepicker-title {
2115
+ display: flex;
2116
+ gap: 0.5rem;
2117
+ font-weight: 600;
2118
+ }
2119
+
2120
+ .datepicker-select {
2121
+ border: none;
2122
+ background: none;
2123
+ font-family: inherit;
2124
+ font-weight: 600;
2125
+ font-size: 1rem;
2126
+ cursor: pointer;
2127
+ padding: 0.25rem;
2128
+ border-radius: 0.25rem;
2129
+ }
2130
+
2131
+ .datepicker-select:hover {
2132
+ background-color: var(--accent-color-lighten);
2133
+ }
2134
+
2135
+ .datepicker-grid {
2136
+ display: grid;
2137
+ grid-template-columns: repeat(7, 1fr);
2138
+ gap: 0.25rem;
2139
+ text-align: center;
2140
+ }
2141
+
2142
+ .datepicker-day-header {
2143
+ font-size: 0.875rem;
2144
+ color: var(--text-muted);
2145
+ font-weight: 500;
2146
+ padding: 0.5rem 0;
2147
+ }
2148
+
2149
+ .datepicker-day {
2150
+ padding: 0.5rem 0;
2151
+ font-size: 1rem;
2152
+ cursor: pointer;
2153
+ border-radius: 0.4rem;
2154
+ transition: all 0.2s;
2155
+ }
2156
+
2157
+ .datepicker-day:hover:not(.disabled) {
2158
+ background-color: var(--accent-color-lighten);
2159
+ }
2160
+
2161
+ .datepicker-day.other-month {
2162
+ color: var(--disabled);
2163
+ }
2164
+
2165
+ .datepicker-day.selected {
2166
+ background-color: var(--accent-color);
2167
+ color: var(--accent-color-text);
2168
+ }
2169
+
2170
+ .datepicker-day.in-range {
2171
+ background-color: var(--accent-color-lighten);
2172
+ color: var(--accent-color-text);
2173
+ border-radius: 0;
2174
+ }
2175
+
2176
+ .datepicker-day.range-start {
2177
+ background-color: var(--accent-color);
2178
+ color: var(--accent-color-text);
2179
+ border-top-left-radius: 0.4rem;
2180
+ border-bottom-left-radius: 0.4rem;
2181
+ }
2182
+
2183
+ .datepicker-day.range-end {
2184
+ background-color: var(--accent-color);
2185
+ color: var(--accent-color-text);
2186
+ border-top-right-radius: 0.4rem;
2187
+ border-bottom-right-radius: 0.4rem;
2188
+ }
2189
+
2190
+ .datepicker-day.today {
2191
+ font-weight: bold;
2192
+ color: var(--accent-color);
2193
+ }
2194
+
2195
+ .datepicker-day.selected.today {
2196
+ color: var(--accent-color-text);
2197
+ }
2198
+
2199
+ .datepicker-grid-months,
2200
+ .datepicker-grid-years {
2201
+ display: grid;
2202
+ grid-template-columns: repeat(3, 1fr);
2203
+ gap: 0.5rem;
2204
+ text-align: center;
2205
+ padding: 0.5rem 0;
2206
+ }
2207
+
2208
+ .datepicker-month,
2209
+ .datepicker-year {
2210
+ padding: 0.75rem 0.25rem;
2211
+ font-size: 0.9rem;
2212
+ cursor: pointer;
2213
+ border-radius: 0.4rem;
2214
+ transition: all 0.2s;
2215
+ }
2216
+
2217
+ .datepicker-month:hover,
2218
+ .datepicker-year:hover {
2219
+ background-color: var(--accent-color-lighten);
2220
+ }
2221
+
2222
+ .datepicker-month.selected,
2223
+ .datepicker-year.selected {
2224
+ background-color: var(--accent-color);
2225
+ color: var(--accent-color-text);
2226
+ }
2227
+
2228
+ .datepicker-month.current,
2229
+ .datepicker-year.current {
2230
+ font-weight: bold;
2231
+ color: var(--accent-color);
2232
+ }
2233
+
2234
+ .datepicker-month.selected.current,
2235
+ .datepicker-year.selected.current {
2236
+ color: var(--accent-color-text);
2237
+ }
2238
+
2239
+ .datepicker-title-btn {
2240
+ background: none;
2241
+ border: none;
2242
+ font-family: inherit;
2243
+ font-weight: 600;
2244
+ font-size: 1rem;
2245
+ cursor: pointer;
2246
+ padding: 0.25rem 0.5rem;
2247
+ border-radius: 0.4rem;
2248
+ color: var(--primary-text);
2249
+ transition: background-color 0.2s;
2250
+ }
2251
+
2252
+ .datepicker-title-btn:hover {
2253
+ background-color: var(--accent-color-lighten);
2254
+ }
2255
+
2256
+ /* Time Picker */
2257
+ .datepicker-time {
2258
+ display: flex;
2259
+ align-items: center;
2260
+ justify-content: space-between;
2261
+ border-top: 1px solid var(--divider);
2262
+ margin-top: 1rem;
2263
+ padding-top: 1rem;
2264
+ }
2265
+
2266
+ .datepicker-time-label {
2267
+ font-size: 0.875rem;
2268
+ font-weight: 600;
2269
+ color: var(--primary-text);
2270
+ }
2271
+
2272
+ .datepicker-time-controls {
2273
+ display: flex;
2274
+ align-items: center;
2275
+ gap: 0.25rem;
2276
+ }
2277
+
2278
+ .datepicker-time-separator {
2279
+ font-size: 1.1rem;
2280
+ font-weight: 600;
2281
+ color: var(--primary-text);
2282
+ padding: 0 0.125rem;
2283
+ }
2284
+
2285
+ .datepicker-time-spinner {
2286
+ display: flex;
2287
+ flex-direction: column;
2288
+ align-items: center;
2289
+ gap: 0.125rem;
2290
+ }
2291
+
2292
+ .datepicker-time-btn {
2293
+ background: none;
2294
+ border: 1px solid var(--divider);
2295
+ border-radius: 0.4rem;
2296
+ cursor: pointer;
2297
+ padding: 0.125rem 0.5rem;
2298
+ font-size: 0.6rem;
2299
+ line-height: 1;
2300
+ color: var(--primary-text);
2301
+ transition: background-color 0.2s;
2302
+ }
2303
+ .datepicker-time-btn:hover {
2304
+ background-color: var(--accent-color-lighten);
2305
+ color: var(--accent-color-text);
2306
+ }
2307
+
2308
+ .datepicker-time-display {
2309
+ width: 2.5rem;
2310
+ text-align: center;
2311
+ font-size: 1rem;
2312
+ font-weight: 600;
2313
+ font-family: inherit;
2314
+ border: 1px solid var(--divider);
2315
+ border-radius: 0.4rem;
2316
+ padding: 0.25rem 0;
2317
+ background: var(--background);
2318
+ color: var(--primary-text);
2319
+ -moz-appearance: textfield;
2320
+ }
2321
+ .datepicker-time-display::-webkit-inner-spin-button, .datepicker-time-display::-webkit-outer-spin-button {
2322
+ -webkit-appearance: none;
2323
+ margin: 0;
2324
+ }
2325
+ .datepicker-time-display:focus {
2326
+ outline: 2px solid var(--accent-color);
2327
+ outline-offset: -1px;
2328
+ }
2329
+
2330
+ /* Mobile Responsiveness */
2331
+ @media (max-width: 640px) {
2332
+ .datepicker-backdrop {
2333
+ position: fixed;
2334
+ top: 0;
2335
+ left: 0;
2336
+ width: 100%;
2337
+ height: 100%;
2338
+ background: rgba(0, 0, 0, 0.5);
2339
+ z-index: 999;
2340
+ display: none;
2341
+ }
2342
+ .datepicker-backdrop.visible {
2343
+ display: block;
2344
+ }
2345
+ .datepicker.mobile {
2346
+ position: fixed;
2347
+ top: auto;
2348
+ bottom: 0;
2349
+ left: 0;
2350
+ width: 100%;
2351
+ max-width: 100%;
2352
+ border-radius: 0.4rem 0.4rem 0 0;
2353
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
2354
+ animation: slideUp 0.3s ease-out;
2355
+ transform: none !important;
2356
+ }
2357
+ @keyframes slideUp {
2358
+ from {
2359
+ transform: translateY(100%);
2360
+ }
2361
+ to {
2362
+ transform: translateY(0);
2363
+ }
2364
+ }
2365
+ .datepicker {
2366
+ width: 100%;
2367
+ max-width: 320px;
2368
+ }
2369
+ .datepicker-day {
2370
+ padding: 0.75rem 0;
2371
+ }
2372
+ }
2373
+ :root {
2374
+ --bg-color: #0f172a;
2375
+ --text-color: #f8fafc;
2376
+ --glass-bg: rgba(15, 23, 42, 0.7);
2377
+ --glass-border: rgba(255, 255, 255, 0.1);
2378
+ --menu-width: 320px;
2379
+ --transition-speed: 0.4s;
2380
+ --font-family: 'Outfit', sans-serif;
2381
+ }
2382
+
2383
+ * {
2384
+ box-sizing: border-box;
2385
+ margin: 0;
2386
+ padding: 0;
2387
+ }
2388
+
2389
+ body {
2390
+ overflow-x: hidden;
2391
+ min-height: 100vh;
2392
+ }
2393
+
2394
+ /* Header */
2395
+ .site-header {
2396
+ display: flex;
2397
+ justify-content: space-between;
2398
+ align-items: center;
2399
+ padding: 1.5rem 2rem;
2400
+ position: relative;
2401
+ z-index: 10;
2402
+ }
2403
+
2404
+ .logo {
2405
+ font-size: 1.5rem;
2406
+ font-weight: 700;
2407
+ letter-spacing: -0.02em;
2408
+ }
2409
+
2410
+ .menu-trigger {
2411
+ background: none;
2412
+ border: none;
2413
+ color: var(--text-color);
2414
+ cursor: pointer;
2415
+ padding: 0.5rem;
2416
+ transition: transform 0.2s;
2417
+ }
2418
+
2419
+ .menu-trigger:hover {
2420
+ transform: scale(1.1);
2421
+ color: var(--accent-color);
2422
+ }
2423
+
2424
+ .main-content {
2425
+ display: flex;
2426
+ flex-direction: column;
2427
+ align-items: center;
2428
+ justify-content: center;
2429
+ height: 80vh;
2430
+ text-align: center;
2431
+ padding: 2rem;
2432
+ }
2433
+
2434
+ .main-content h1 {
2435
+ font-size: 3rem;
2436
+ margin-bottom: 1rem;
2437
+ background: linear-gradient(to right, #c084fc, #6366f1);
2438
+ background-clip: text;
2439
+ -webkit-background-clip: text;
2440
+ -webkit-text-fill-color: transparent;
2441
+ }
2442
+
2443
+ .main-content p {
2444
+ color: #94a3b8;
2445
+ font-size: 1.2rem;
2446
+ }
2447
+
2448
+ /* Flyout Overlay */
2449
+ .flyout-overlay {
2450
+ position: fixed;
2451
+ top: 0;
2452
+ left: 0;
2453
+ width: 100%;
2454
+ height: 100%;
2455
+ background: rgba(0, 0, 0, 0.5);
2456
+ backdrop-filter: blur(4px);
2457
+ opacity: 0;
2458
+ visibility: hidden;
2459
+ transition: opacity var(--transition-speed), visibility var(--transition-speed);
2460
+ z-index: 40;
2461
+ }
2462
+
2463
+ .flyout-overlay.is-visible {
2464
+ opacity: 1;
2465
+ visibility: visible;
2466
+ }
2467
+
2468
+ /* Flyout Menu Base */
2469
+ .flyout-menu {
2470
+ position: fixed;
2471
+ background: var(--glass-bg);
2472
+ backdrop-filter: blur(20px);
2473
+ -webkit-backdrop-filter: blur(20px);
2474
+ z-index: 50;
2475
+ display: flex;
2476
+ flex-direction: column;
2477
+ padding: 2rem;
2478
+ box-shadow: 0 0 30px rgba(0, 0, 0, 0.5);
2479
+ transition: transform var(--transition-speed) cubic-bezier(0.25, 1, 0.5, 1);
2480
+ /* Smoother rollout */
2481
+ }
2482
+
2483
+ /* Directional Variants */
2484
+ .flyout-from-right {
2485
+ top: 0;
2486
+ right: 0;
2487
+ width: var(--menu-width);
2488
+ height: 100%;
2489
+ border-left: 1px solid var(--glass-border);
2490
+ transform: translateX(100%);
2491
+ }
2492
+
2493
+ .flyout-from-left {
2494
+ top: 0;
2495
+ left: 0;
2496
+ width: var(--menu-width);
2497
+ height: 100%;
2498
+ border-right: 1px solid var(--glass-border);
2499
+ transform: translateX(-100%);
2500
+ }
2501
+
2502
+ .flyout-menu.is-open {
2503
+ transform: translate(0, 0);
2504
+ }
2505
+
2506
+ /* Flyout Header */
2507
+ .flyout-header {
2508
+ display: flex;
2509
+ justify-content: space-between;
2510
+ align-items: center;
2511
+ margin-bottom: 3rem;
2512
+ }
2513
+
2514
+ .flyout-title {
2515
+ font-size: 1.25rem;
2516
+ font-weight: 600;
2517
+ color: #94a3b8;
2518
+ text-transform: uppercase;
2519
+ letter-spacing: 0.1em;
2520
+ }
2521
+
2522
+ .close-menu {
2523
+ background: none;
2524
+ border: none;
2525
+ color: var(--text-color);
2526
+ cursor: pointer;
2527
+ padding: 0.5rem;
2528
+ transition: transform 0.2s, color 0.2s;
2529
+ }
2530
+
2531
+ .close-menu:hover {
2532
+ transform: rotate(90deg);
2533
+ color: var(--accent-color);
2534
+ }
2535
+
2536
+ /* Flyout Links */
2537
+ .flyout-links {
2538
+ list-style: none;
2539
+ flex-grow: 1;
2540
+ }
2541
+
2542
+ .flyout-links li {
2543
+ margin-bottom: 1.5rem;
2544
+ overflow: hidden;
2545
+ }
2546
+
2547
+ .flyout-links a,
2548
+ .submenu-toggle {
2549
+ display: flex;
2550
+ align-items: center;
2551
+ justify-content: space-between;
2552
+ width: 100%;
2553
+ background: none;
2554
+ border: none;
2555
+ font-size: 2rem;
2556
+ font-weight: 600;
2557
+ color: var(--text-color);
2558
+ text-decoration: none;
2559
+ cursor: pointer;
2560
+ font-family: inherit;
2561
+ padding: 0;
2562
+ transform: translateY(100%);
2563
+ transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), color 0.2s;
2564
+ transition-delay: var(--delay);
2565
+ text-align: left;
2566
+ }
2567
+
2568
+ .flyout-menu.is-open .flyout-links a,
2569
+ .flyout-menu.is-open .submenu-toggle {
2570
+ transform: translateY(0);
2571
+ }
2572
+
2573
+ .flyout-links a:hover,
2574
+ .submenu-toggle:hover {
2575
+ color: var(--accent-color);
2576
+ }
2577
+
2578
+ .chevron {
2579
+ transition: transform 0.3s;
2580
+ opacity: 0.7;
2581
+ }
2582
+
2583
+ .submenu-toggle.active .chevron {
2584
+ transform: rotate(180deg);
2585
+ }
2586
+
2587
+ /* Submenu */
2588
+ .submenu {
2589
+ list-style: none;
2590
+ max-height: 0;
2591
+ overflow: hidden;
2592
+ transition: max-height 0.3s ease-out;
2593
+ padding-left: 1rem;
2594
+ border-left: 1px solid rgba(255, 255, 255, 0.1);
2595
+ margin-top: 0;
2596
+ }
2597
+
2598
+ .submenu.is-open {
2599
+ max-height: 500px;
2600
+ /* Reduced from 2000px for tighter animation */
2601
+ /* Arbitrary large height, increased for nesting */
2602
+ margin-top: 1rem;
2603
+ transition: max-height 0.4s cubic-bezier(0.16, 1, 0.3, 1);
2604
+ /* Smoother easing */
2605
+ }
2606
+
2607
+ .submenu li {
2608
+ margin-bottom: 0.5rem;
2609
+ }
2610
+
2611
+ .submenu a {
2612
+ font-size: 1.25rem;
2613
+ font-weight: 400;
2614
+ color: #cbd5e1;
2615
+ transform: none !important;
2616
+ /* Override slide-in for submenu items */
2617
+ transition-delay: 0s !important;
2618
+ }
2619
+
2620
+ .submenu .submenu-toggle {
2621
+ font-size: 1.25rem;
2622
+ font-weight: 400;
2623
+ color: #cbd5e1;
2624
+ transform: none !important;
2625
+ transition-delay: 0s !important;
2626
+ padding: 0;
2627
+ margin: 0;
2628
+ }
2629
+
2630
+ /* Flyout Footer */
2631
+ .flyout-footer {
2632
+ padding-top: 2rem;
2633
+ border-top: 1px solid var(--glass-border);
2634
+ color: #64748b;
2635
+ font-size: 0.9rem;
2636
+ opacity: 0;
2637
+ transform: translateY(20px);
2638
+ transition: opacity 0.4s, transform 0.4s;
2639
+ transition-delay: var(--delay);
2640
+ }
2641
+
2642
+ .flyout-menu.is-open .flyout-footer {
2643
+ opacity: 1;
2644
+ transform: translateY(0);
2645
+ }
2646
+
2647
+ /* Mobile Responsiveness */
2648
+ @media (max-width: 480px) {
2649
+ :root {
2650
+ --menu-width: 100%;
2651
+ }
2652
+ .main-content h1 {
2653
+ font-size: 2rem;
2654
+ }
2655
+ /* Force Fullscreen for all directions */
2656
+ .flyout-from-right,
2657
+ .flyout-from-left,
2658
+ .flyout-from-top {
2659
+ width: 100% !important;
2660
+ height: 100% !important;
2661
+ top: 0 !important;
2662
+ left: 0 !important;
2663
+ right: auto !important;
2664
+ bottom: auto !important;
2665
+ border: none !important;
2666
+ /* Remove borders for cleaner fullscreen look */
2667
+ border-right: 1px solid var(--glass-border) !important;
2668
+ /* Add consistent right border */
2669
+ transform: translateX(-100%) !important;
2670
+ /* Force ALL to slide from LEFT with !important */
2671
+ }
2672
+ /* Remove specific transforms and force left slide */
2673
+ .flyout-from-right,
2674
+ .flyout-from-left,
2675
+ .flyout-from-top {
2676
+ transform: translateX(-100%) !important;
2677
+ }
2678
+ .flyout-menu.is-open {
2679
+ transform: translate(0, 0) !important;
2680
+ }
2681
+ /* Reset Top Menu Horizontal Layout to Vertical for Mobile */
2682
+ .flyout-from-top .flyout-links {
2683
+ flex-direction: column;
2684
+ align-items: stretch;
2685
+ gap: 0;
2686
+ }
2687
+ .flyout-from-top .flyout-links > li {
2688
+ margin-bottom: 1.5rem;
2689
+ }
2690
+ .flyout-from-top .flyout-links > li > a,
2691
+ .flyout-from-top .flyout-links > li > .submenu-toggle {
2692
+ font-size: 2rem;
2693
+ /* Restore larger size */
2694
+ justify-content: space-between;
2695
+ }
2696
+ .flyout-from-top .submenu {
2697
+ position: static;
2698
+ transform: none;
2699
+ margin-top: 0;
2700
+ min-width: 100%;
2701
+ box-shadow: none;
2702
+ border: none;
2703
+ background: transparent;
2704
+ padding-left: 1rem;
2705
+ border-left: 1px solid rgba(255, 255, 255, 0.1);
2706
+ text-align: left;
2707
+ }
2708
+ .flyout-from-top .submenu.is-open {
2709
+ transform: none;
2710
+ margin-top: 1rem;
2711
+ }
2712
+ .flyout-from-top .submenu a {
2713
+ font-size: 1.25rem;
2714
+ justify-content: space-between;
2715
+ /* Match default behavior */
2716
+ }
2717
+ }
2718
+ .tabs-container {
2719
+ display: flex;
2720
+ flex-direction: column;
2721
+ overflow: hidden;
2722
+ }
2723
+ .tabs-container li {
2724
+ list-style: none;
2725
+ }
2726
+ .tabs-container.tabs-vertical {
2727
+ flex-direction: row;
2728
+ min-height: 300px;
2729
+ }
2730
+
2731
+ .tabs-header {
2732
+ border-bottom: 1px solid var(--divider);
2733
+ }
2734
+
2735
+ .tabs-list {
2736
+ display: flex;
2737
+ margin: 0;
2738
+ padding: 0;
2739
+ overflow-x: auto;
2740
+ }
2741
+
2742
+ .tab-item {
2743
+ padding: 12px 20px;
2744
+ cursor: pointer;
2745
+ font-size: 14px;
2746
+ font-weight: 500;
2747
+ color: var(--secondary-text);
2748
+ white-space: nowrap;
2749
+ user-select: none;
2750
+ transition: all 0.2s ease;
2751
+ border-bottom: 2px solid transparent;
2752
+ }
2753
+ .tab-item:hover {
2754
+ color: var(--accent-color);
2755
+ background-color: rgba(0, 0, 0, 0.02);
2756
+ }
2757
+ .tab-item.active {
2758
+ color: var(--accent-color);
2759
+ background-color: var(--divider);
2760
+ border-bottom-color: var(--accent-color);
2761
+ }
2762
+
2763
+ .tabs-content {
2764
+ padding: 24px;
2765
+ }
2766
+
2767
+ .tab-panel {
2768
+ display: none;
2769
+ }
2770
+ .tab-panel.active {
2771
+ display: block;
2772
+ }
2773
+
2774
+ .tabs-container.tabs-vertical .tabs-header {
2775
+ border-bottom: none;
2776
+ border-right: 1px solid var(--divider);
2777
+ min-width: 200px;
2778
+ }
2779
+ .tabs-container.tabs-vertical .tabs-list {
2780
+ flex-direction: column;
2781
+ }
2782
+ .tabs-container.tabs-vertical .tab-item {
2783
+ width: 100%;
2784
+ box-sizing: border-box;
2785
+ border-bottom: none;
2786
+ border-left: 3px solid transparent;
2787
+ }
2788
+ .tabs-container.tabs-vertical .tab-item.active {
2789
+ border-left-color: var(--accent-color);
2790
+ font-weight: 600;
2791
+ }
2792
+ .tabs-container.tabs-vertical .tabs-content {
2793
+ flex: 1;
2794
+ }
2795
+
2796
+ @media (max-width: 768px) {
2797
+ .tabs-container.tabs-vertical {
2798
+ flex-direction: column;
2799
+ }
2800
+ .tabs-container.tabs-vertical .tabs-header {
2801
+ width: 100%;
2802
+ border-right: none;
2803
+ border-bottom: 1px solid var(--divider);
2804
+ }
2805
+ .tabs-container.tabs-vertical .tabs-list {
2806
+ flex-direction: row;
2807
+ overflow-x: auto;
2808
+ }
2809
+ .tabs-container.tabs-vertical .tab-item {
2810
+ width: auto;
2811
+ flex-shrink: 0;
2812
+ border-left: none;
2813
+ border-bottom: 2px solid transparent;
2814
+ }
2815
+ .tabs-container.tabs-vertical .tab-item.active {
2816
+ border-bottom-color: var(--accent-color);
2817
+ }
2818
+ }
2819
+ .accordion {
2820
+ margin: 0 auto;
2821
+ border: 1px solid var(--divider);
2822
+ border-radius: 0.4rem;
2823
+ overflow: hidden;
2824
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
2825
+ }
2826
+
2827
+ .accordion-item {
2828
+ border-bottom: 1px solid var(--divider);
2829
+ }
2830
+
2831
+ .accordion-item:last-child {
2832
+ border-bottom: none;
2833
+ }
2834
+
2835
+ .accordion-input {
2836
+ display: none;
2837
+ }
2838
+
2839
+ .accordion-label {
2840
+ display: flex;
2841
+ justify-content: space-between;
2842
+ align-items: center;
2843
+ padding: 1rem 1.5rem;
2844
+ background: var(--divider);
2845
+ font-weight: 600;
2846
+ cursor: pointer;
2847
+ transition: background-color 0.2s ease;
2848
+ user-select: none;
2849
+ }
2850
+
2851
+ .accordion-label:hover {
2852
+ background: var(--accent-color-lighten);
2853
+ }
2854
+
2855
+ .accordion-label::after {
2856
+ content: "";
2857
+ width: 10px;
2858
+ height: 10px;
2859
+ border-right: 2px solid currentColor;
2860
+ border-bottom: 2px solid currentColor;
2861
+ transform: rotate(45deg);
2862
+ transition: transform 0.3s ease;
2863
+ margin-left: 1rem;
2864
+ }
2865
+
2866
+ .accordion-input:checked + .accordion-label {
2867
+ background: var(--accent-color);
2868
+ color: var(--acc-accent);
2869
+ }
2870
+
2871
+ .accordion-input:checked + .accordion-label::after {
2872
+ transform: rotate(-135deg);
2873
+ }
2874
+
2875
+ .accordion-content {
2876
+ display: grid;
2877
+ grid-template-rows: 0fr;
2878
+ transition: grid-template-rows 0.3s ease-out;
2879
+ overflow: hidden;
2880
+ }
2881
+
2882
+ .accordion-body {
2883
+ min-height: 0;
2884
+ }
2885
+
2886
+ .accordion-body > div {
2887
+ padding: 1.5rem;
2888
+ border-top: 1px solid transparent;
2889
+ }
2890
+
2891
+ .accordion-input:checked ~ .accordion-content {
2892
+ grid-template-rows: 1fr;
2893
+ }
2894
+
2895
+ .timeline {
2896
+ position: relative;
2897
+ max-width: 800px;
2898
+ padding: 20px 0;
2899
+ list-style: none;
2900
+ }
2901
+
2902
+ .timeline::before {
2903
+ content: "";
2904
+ position: absolute;
2905
+ top: 0;
2906
+ bottom: 0;
2907
+ left: 20px;
2908
+ width: 2px;
2909
+ background: var(--divider);
2910
+ }
2911
+
2912
+ .timeline-item {
2913
+ position: relative;
2914
+ margin-bottom: 2rem;
2915
+ padding-left: 50px;
2916
+ }
2917
+
2918
+ .timeline-item::before {
2919
+ content: "";
2920
+ position: absolute;
2921
+ left: 8px;
2922
+ top: 5px;
2923
+ width: 20px;
2924
+ height: 20px;
2925
+ border-radius: 50%;
2926
+ border: 3px solid var(--divider);
2927
+ z-index: 1;
2928
+ background: var(--background);
2929
+ }
2930
+
2931
+ .timeline-item.active::before {
2932
+ border-color: var(--accent-color);
2933
+ background-color: #e7f1ff;
2934
+ }
2935
+
2936
+ .timeline-content {
2937
+ padding: 1.5rem;
2938
+ border-radius: 8px;
2939
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
2940
+ border: 1px solid var(--divider);
2941
+ }
2942
+
2943
+ .timeline-date {
2944
+ font-size: 0.85rem;
2945
+ color: var(--secondary-text);
2946
+ font-weight: 600;
2947
+ margin-bottom: 0.5rem;
2948
+ display: block;
2949
+ }
2950
+
2951
+ .timeline-title {
2952
+ font-size: 1.1rem;
2953
+ font-weight: 700;
2954
+ margin: 0 0 0.5rem 0;
2955
+ color: var(--primary-text);
2956
+ }
2957
+
2958
+ .timeline-body {
2959
+ font-size: 0.95rem;
2960
+ line-height: 1.6;
2961
+ color: var(--secondary-text);
2962
+ margin: 0;
2963
+ }
2964
+
2965
+ .chat-container {
2966
+ width: 100%;
2967
+ display: flex;
2968
+ flex-direction: column;
2969
+ padding: 1rem;
2970
+ gap: 10px;
2971
+ }
2972
+
2973
+ .message {
2974
+ max-width: 75%;
2975
+ padding: 1rem 1.5rem;
2976
+ border-radius: 8px;
2977
+ position: relative;
2978
+ line-height: 1.2rem;
2979
+ color: var(--primary-text);
2980
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
2981
+ word-wrap: break-word;
2982
+ }
2983
+
2984
+ /* Metadata (time) */
2985
+ .message-meta {
2986
+ display: block;
2987
+ font-size: 0.8rem;
2988
+ color: var(--primary-text);
2989
+ text-align: right;
2990
+ margin-top: 4px;
2991
+ }
2992
+
2993
+ /* Incoming Message */
2994
+ .message-incoming {
2995
+ align-self: flex-start;
2996
+ background-color: var(--background);
2997
+ border-top-left-radius: 0;
2998
+ }
2999
+
3000
+ .message-incoming::before {
3001
+ content: "";
3002
+ position: absolute;
3003
+ top: 0;
3004
+ left: -8px;
3005
+ width: 0;
3006
+ height: 0;
3007
+ border: 8px solid transparent;
3008
+ border-top-color: var(--secondary-background);
3009
+ border-right: 0;
3010
+ margin-top: 0px;
3011
+ }
3012
+
3013
+ .message-outgoing {
3014
+ align-self: flex-end;
3015
+ background-color: var(--accent-color-lighten);
3016
+ border-top-right-radius: 0;
3017
+ }
3018
+
3019
+ .message-outgoing::after {
3020
+ content: "";
3021
+ position: absolute;
3022
+ top: 0;
3023
+ right: -8px;
3024
+ width: 0;
3025
+ height: 0;
3026
+ border: 8px solid transparent;
3027
+ border-top-color: var(--accent-color-lighten);
3028
+ border-left: 0;
3029
+ }
3030
+
3031
+ .carousel {
3032
+ position: relative;
3033
+ width: 100%;
3034
+ margin: 0 auto;
3035
+ overflow: hidden;
3036
+ border-radius: 8px;
3037
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
3038
+ }
3039
+
3040
+ .carousel-track-container {
3041
+ overflow: hidden;
3042
+ width: 100%;
3043
+ }
3044
+
3045
+ .carousel-track {
3046
+ display: flex;
3047
+ transition: transform 0.4s ease-in-out;
3048
+ width: 100%;
3049
+ padding: 0;
3050
+ margin: 0;
3051
+ list-style: none;
3052
+ }
3053
+
3054
+ .carousel-slide {
3055
+ min-width: 100%;
3056
+ box-sizing: border-box;
3057
+ min-height: 400px;
3058
+ display: flex;
3059
+ align-items: center;
3060
+ justify-content: center;
3061
+ font-size: 2rem;
3062
+ user-select: none;
3063
+ }
3064
+
3065
+ .carousel-button {
3066
+ position: absolute;
3067
+ top: 50%;
3068
+ transform: translateY(-50%);
3069
+ cursor: pointer;
3070
+ display: flex;
3071
+ align-items: center;
3072
+ justify-content: center;
3073
+ z-index: 10;
3074
+ transition: background 0.3s;
3075
+ padding: 10px;
3076
+ }
3077
+
3078
+ .carousel-button:hover {
3079
+ background: var(--secondary-background);
3080
+ }
3081
+
3082
+ .carousel-button--left {
3083
+ left: 10px;
3084
+ }
3085
+
3086
+ .carousel-button--right {
3087
+ right: 10px;
3088
+ }
3089
+
3090
+ .carousel-nav {
3091
+ display: flex;
3092
+ justify-content: center;
3093
+ padding: 10px 0;
3094
+ position: absolute;
3095
+ bottom: 10px;
3096
+ width: 100%;
3097
+ z-index: 10;
3098
+ }
3099
+
3100
+ .carousel-indicator {
3101
+ padding: 0;
3102
+ border: none;
3103
+ width: 20px;
3104
+ height: 5px;
3105
+ background: var(--disabled);
3106
+ margin: 0 5px;
3107
+ border-radius: 4px;
3108
+ cursor: pointer;
3109
+ transition: background 0.3s;
3110
+ }
3111
+
3112
+ .carousel-indicator.current-slide {
3113
+ background: var(--accent-color);
3114
+ }
3115
+
3116
+ .code-display {
3117
+ background: #1e1e1e;
3118
+ border-radius: 8px;
3119
+ overflow: hidden;
3120
+ margin: 20px 0;
3121
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
3122
+ }
3123
+
3124
+ .code-header {
3125
+ background: #2d2d2d;
3126
+ padding: 10px 15px;
3127
+ display: flex;
3128
+ justify-content: space-between;
3129
+ align-items: center;
3130
+ border-bottom: 1px solid #3d3d3d;
3131
+ }
3132
+
3133
+ .code-language {
3134
+ color: #888;
3135
+ font-size: 12px;
3136
+ text-transform: uppercase;
3137
+ font-weight: 600;
3138
+ }
3139
+
3140
+ .copy-button {
3141
+ background: #4a4a4a;
3142
+ color: #fff;
3143
+ border: none;
3144
+ padding: 6px 12px;
3145
+ border-radius: 4px;
3146
+ cursor: pointer;
3147
+ font-size: 12px;
3148
+ transition: background 0.2s;
3149
+ }
3150
+
3151
+ .copy-button:hover {
3152
+ background: #5a5a5a;
3153
+ }
3154
+
3155
+ .copy-button.copied {
3156
+ background: #28a745;
3157
+ }
3158
+
3159
+ .code-content {
3160
+ padding: 15px;
3161
+ overflow-x: auto;
3162
+ }
3163
+
3164
+ .code-content pre {
3165
+ margin: 0;
3166
+ font-family: "Courier New", Courier, monospace;
3167
+ font-size: 14px;
3168
+ line-height: 1.5;
3169
+ color: #d4d4d4;
3170
+ }
3171
+
3172
+ /* Syntax Highlighting */
3173
+ .keyword {
3174
+ color: #569cd6;
3175
+ }
3176
+
3177
+ .string {
3178
+ color: #ce9178;
3179
+ }
3180
+
3181
+ .comment {
3182
+ color: #6a9955;
3183
+ font-style: italic;
3184
+ }
3185
+
3186
+ .function {
3187
+ color: #dcdcaa;
3188
+ }
3189
+
3190
+ .number {
3191
+ color: #b5cea8;
3192
+ }
3193
+
3194
+ .property {
3195
+ color: #9cdcfe;
3196
+ }
3197
+
3198
+ .tag {
3199
+ color: #4ec9b0;
3200
+ }
3201
+
3202
+ .attribute {
3203
+ color: #9cdcfe;
3204
+ }
3205
+
3206
+ .selector {
3207
+ color: #d7ba7d;
3208
+ }
3209
+
3210
+ .punctuation {
3211
+ color: #d4d4d4;
3212
+ }
3213
+
3214
+ .uploader-content .app-container {
3215
+ width: 100%;
3216
+ max-width: 480px;
3217
+ }
3218
+ .uploader-content .header h2 {
3219
+ font-size: 1.25rem;
3220
+ font-weight: 600;
3221
+ margin-bottom: 0.25rem;
3222
+ }
3223
+ .uploader-content .header p {
3224
+ color: var(--secondary-text);
3225
+ font-size: 0.875rem;
3226
+ }
3227
+ .uploader-content .drop-zone {
3228
+ border: 2px dashed var(--divider);
3229
+ border-radius: 0.4rem;
3230
+ padding: 2rem 1rem;
3231
+ text-align: center;
3232
+ cursor: pointer;
3233
+ transition: all 0.2s ease;
3234
+ background-color: #f9fafb;
3235
+ }
3236
+ .uploader-content .drop-zone:hover,
3237
+ .uploader-content .drop-zone.drag-over {
3238
+ border-color: var(--accent-color-lighten);
3239
+ background-color: #eef2ff;
3240
+ }
3241
+ .uploader-content .drop-zone-content {
3242
+ display: flex;
3243
+ flex-direction: column;
3244
+ align-items: center;
3245
+ gap: 0.5rem;
3246
+ pointer-events: none;
3247
+ /* Let clicks pass through to container */
3248
+ }
3249
+ .uploader-content .icon-container {
3250
+ width: 40px;
3251
+ height: 40px;
3252
+ border-radius: 50%;
3253
+ background-color: #e0e7ff;
3254
+ color: var(--accent-color);
3255
+ display: flex;
3256
+ align-items: center;
3257
+ justify-content: center;
3258
+ margin-bottom: 0.5rem;
3259
+ }
3260
+ .uploader-content .primary-text {
3261
+ font-weight: 500;
3262
+ color: var(--accent-color);
3263
+ font-size: 0.875rem;
3264
+ }
3265
+ .uploader-content .secondary-text {
3266
+ color: var(--secondary-text);
3267
+ font-size: 0.75rem;
3268
+ }
3269
+ .uploader-content .file-list {
3270
+ display: flex;
3271
+ flex-direction: column;
3272
+ gap: 0.75rem;
3273
+ max-height: 300px;
3274
+ overflow-y: auto;
3275
+ }
3276
+ .uploader-content .file-item {
3277
+ display: flex;
3278
+ flex-direction: column;
3279
+ /* Changed to column to accommodate progress bar */
3280
+ padding: 0.75rem;
3281
+ background-color: #f9fafb;
3282
+ border: 1px solid var(--divider);
3283
+ border-radius: 0.4rem;
3284
+ animation: slideIn 0.2s ease-out;
3285
+ gap: 0.75rem;
3286
+ }
3287
+ .uploader-content .file-item-header {
3288
+ display: flex;
3289
+ align-items: center;
3290
+ justify-content: space-between;
3291
+ width: 100%;
3292
+ }
3293
+ @keyframes slideIn {
3294
+ from {
3295
+ opacity: 0;
3296
+ transform: translateY(10px);
3297
+ }
3298
+ to {
3299
+ opacity: 1;
3300
+ transform: translateY(0);
3301
+ }
3302
+ }
3303
+ .uploader-content .file-info {
3304
+ display: flex;
3305
+ align-items: center;
3306
+ gap: 0.75rem;
3307
+ overflow: hidden;
3308
+ }
3309
+ .uploader-content .file-icon {
3310
+ color: var(--secondary-text);
3311
+ }
3312
+ .uploader-content .file-details {
3313
+ display: flex;
3314
+ flex-direction: column;
3315
+ overflow: hidden;
3316
+ }
3317
+ .uploader-content .file-name {
3318
+ font-size: 0.875rem;
3319
+ font-weight: 500;
3320
+ white-space: nowrap;
3321
+ overflow: hidden;
3322
+ text-overflow: ellipsis;
3323
+ }
3324
+ .uploader-content .file-size {
3325
+ font-size: 0.75rem;
3326
+ color: var(--secondary-text);
3327
+ }
3328
+ .uploader-content .remove-btn {
3329
+ background: none;
3330
+ border: none;
3331
+ color: var(--secondary-text);
3332
+ cursor: pointer;
3333
+ padding: 0.25rem;
3334
+ border-radius: 4px;
3335
+ transition: color 0.2s, background-color 0.2s;
3336
+ display: flex;
3337
+ align-items: center;
3338
+ justify-content: center;
3339
+ }
3340
+ .uploader-content .remove-btn:hover {
3341
+ color: var(--erro);
3342
+ background-color: #fee2e2;
3343
+ }
3344
+ .uploader-content .progress-container {
3345
+ width: 100%;
3346
+ height: 6px;
3347
+ background-color: #e5e7eb;
3348
+ border-radius: 3px;
3349
+ overflow: hidden;
3350
+ display: none;
3351
+ /* Hidden by default */
3352
+ }
3353
+ .uploader-content .progress-bar {
3354
+ height: 100%;
3355
+ background-color: var(--accent-color);
3356
+ width: 0%;
3357
+ transition: width 0.1s linear;
3358
+ }
3359
+ .uploader-content .status-text {
3360
+ font-size: 0.75rem;
3361
+ color: var(--secondary-text);
3362
+ text-align: right;
3363
+ display: none;
3364
+ }
3365
+ .uploader-content .status-text.error {
3366
+ color: var(--error);
3367
+ }
3368
+ .uploader-content .status-text.success {
3369
+ color: var(--success);
3370
+ }
3371
+ @media (max-width: 480px) {
3372
+ .uploader-content .drop-zone {
3373
+ padding: 1.5rem 1rem;
3374
+ }
3375
+ }
3376
+
3377
+ .masonry-container {
3378
+ display: flex;
3379
+ gap: 1rem;
3380
+ justify-content: center;
3381
+ margin: 0 auto;
3382
+ align-items: flex-start;
3383
+ }
3384
+
3385
+ .masonry-column {
3386
+ display: flex;
3387
+ flex-direction: column;
3388
+ gap: 1rem;
3389
+ flex: 1;
3390
+ min-width: 0;
3391
+ }
3392
+
3393
+ .masonry-item {
3394
+ background-color: var(--card-bg);
3395
+ border-radius: 8px;
3396
+ overflow: hidden;
3397
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
3398
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
3399
+ position: relative;
3400
+ }
3401
+
3402
+ .masonry-item img {
3403
+ width: 100%;
3404
+ height: auto;
3405
+ display: block;
3406
+ object-fit: cover;
3407
+ opacity: 0;
3408
+ transition: opacity 0.5s ease-in;
3409
+ }
3410
+
3411
+ .masonry-item img.loaded {
3412
+ opacity: 1;
3413
+ }
3414
+
3415
+ .masonry-item-info {
3416
+ padding: 15px;
3417
+ }
3418
+
3419
+ .masonry-item-title {
3420
+ margin: 0 0 5px;
3421
+ font-size: 1rem;
3422
+ font-weight: 600;
3423
+ }
3424
+
3425
+ .masonry-item-desc {
3426
+ margin: 0;
3427
+ font-size: 0.9rem;
3428
+ color: #666;
3429
+ }
3430
+
3431
+ .loader {
3432
+ text-align: center;
3433
+ padding: 40px;
3434
+ }
3435
+
3436
+ .dropdown-container {
3437
+ position: relative;
3438
+ display: inline-block;
3439
+ }
3440
+ .dropdown-container.active > .dropdown-menu {
3441
+ opacity: 1;
3442
+ display: block;
3443
+ transform: translateY(0);
3444
+ }
3445
+ .dropdown-container .dropdown-menu {
3446
+ position: absolute;
3447
+ top: 100%;
3448
+ left: 0;
3449
+ margin-top: 8px;
3450
+ background: var(--background);
3451
+ border-radius: 8px;
3452
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
3453
+ min-width: 220px;
3454
+ padding: 8px 0;
3455
+ list-style: none;
3456
+ opacity: 0;
3457
+ display: none;
3458
+ transform: translateY(-10px);
3459
+ transition: opacity 0.2s, transform 0.2s;
3460
+ z-index: 100;
3461
+ }
3462
+ .dropdown-container .dropdown-menu li {
3463
+ position: relative;
3464
+ list-style: none;
3465
+ }
3466
+ .dropdown-container .dropdown-menu li.open > .dropdown-item {
3467
+ background-color: var(--background);
3468
+ color: var(--accent-color);
3469
+ }
3470
+ .dropdown-container .dropdown-menu li.open > .dropdown-item.has-children::after {
3471
+ transform: rotate(90deg);
3472
+ }
3473
+ .dropdown-container .dropdown-menu li.open > ul {
3474
+ opacity: 1;
3475
+ display: block;
3476
+ transform: translateX(0);
3477
+ }
3478
+ .dropdown-container .dropdown-menu ul {
3479
+ position: absolute;
3480
+ top: 0;
3481
+ left: 100%;
3482
+ margin-left: 4px;
3483
+ background-color: var(--background);
3484
+ border-radius: 8px;
3485
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
3486
+ min-width: 220px;
3487
+ padding: 8px 0;
3488
+ list-style: none;
3489
+ opacity: 0;
3490
+ display: none;
3491
+ transform: translateX(-10px);
3492
+ transition: opacity 0.2s, transform 0.2s;
3493
+ }
3494
+ .dropdown-container .dropdown-item {
3495
+ display: flex;
3496
+ justify-content: space-between;
3497
+ align-items: center;
3498
+ padding: 10px 16px;
3499
+ color: var(--primary-text);
3500
+ text-decoration: none;
3501
+ font-size: 14px;
3502
+ cursor: pointer;
3503
+ transition: background-color 0.2s;
3504
+ user-select: none;
3505
+ }
3506
+ .dropdown-container .dropdown-item:hover {
3507
+ background-color: var(--background);
3508
+ color: var(--accent-color);
3509
+ }
3510
+ .dropdown-container .dropdown-item.has-children::after {
3511
+ content: "›";
3512
+ font-size: 16px;
3513
+ font-weight: bold;
3514
+ margin-left: 10px;
3515
+ transition: transform 0.2s;
3516
+ }
3517
+ @media (max-width: 768px) {
3518
+ .dropdown-container .dropdown-menu {
3519
+ width: 100%;
3520
+ min-width: 250px;
3521
+ }
3522
+ .dropdown-container .dropdown-menu ul {
3523
+ position: static;
3524
+ box-shadow: none;
3525
+ background-color: transparent;
3526
+ transform: none;
3527
+ margin-left: 0;
3528
+ padding-left: 15px;
3529
+ border-left: 2px solid var(--secondary-text);
3530
+ border-radius: 0;
3531
+ opacity: 0;
3532
+ display: none;
3533
+ transition: none;
3534
+ }
3535
+ .dropdown-container .dropdown-menu li.open > ul {
3536
+ display: block;
3537
+ opacity: 1;
3538
+ transform: none;
3539
+ }
3540
+ .dropdown-container .dropdown-item.has-children::after {
3541
+ transform: rotate(90deg);
3542
+ }
3543
+ .dropdown-container .dropdown-menu li.open > .dropdown-item.has-children::after {
3544
+ transform: rotate(-90deg);
3545
+ }
3546
+ }
3547
+
3548
+ .virtual-dropdown .custom-dropdown {
3549
+ position: relative;
3550
+ width: 100%;
3551
+ max-width: 300px;
3552
+ font-family: system-ui, -apple-system, sans-serif;
3553
+ user-select: none;
3554
+ display: inline-block;
3555
+ }
3556
+ .virtual-dropdown .dropdown-trigger {
3557
+ background: #fff;
3558
+ border: 1px solid #ccc;
3559
+ border-radius: 4px;
3560
+ padding: 10px 12px;
3561
+ cursor: pointer;
3562
+ display: flex;
3563
+ justify-content: space-between;
3564
+ align-items: center;
3565
+ transition: border-color 0.2s;
3566
+ }
3567
+ .virtual-dropdown .dropdown-trigger:focus,
3568
+ .virtual-dropdown .custom-dropdown.open .dropdown-trigger {
3569
+ border-color: #3498db;
3570
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
3571
+ outline: none;
3572
+ }
3573
+ .virtual-dropdown .trigger-text {
3574
+ color: #333;
3575
+ white-space: nowrap;
3576
+ overflow: hidden;
3577
+ text-overflow: ellipsis;
3578
+ }
3579
+ .virtual-dropdown .trigger-text:not(.has-value) {
3580
+ color: #999;
3581
+ }
3582
+ .virtual-dropdown .trigger-arrow {
3583
+ font-size: 0.8em;
3584
+ color: #666;
3585
+ margin-left: 8px;
3586
+ }
3587
+ .virtual-dropdown .dropdown-menu {
3588
+ position: absolute;
3589
+ top: 100%;
3590
+ left: 0;
3591
+ width: 100%;
3592
+ background: #fff;
3593
+ border: 1px solid #ccc;
3594
+ border-top: none;
3595
+ border-radius: 0 0 4px 4px;
3596
+ box-shadow: 0 1px 2px rgba(56, 65, 74, 0.15);
3597
+ z-index: 1000;
3598
+ display: none;
3599
+ opacity: 0;
3600
+ transform: translateY(-10px);
3601
+ transition: opacity 0.2s, transform 0.2s;
3602
+ }
3603
+ .virtual-dropdown .dropdown-menu.open {
3604
+ display: block;
3605
+ opacity: 1;
3606
+ transform: translateY(0);
3607
+ }
3608
+ .virtual-dropdown .dropdown-search {
3609
+ padding: 8px;
3610
+ border-bottom: 1px solid #eee;
3611
+ }
3612
+ .virtual-dropdown .dropdown-search input {
3613
+ width: 100%;
3614
+ padding: 8px;
3615
+ border: 1px solid #ddd;
3616
+ border-radius: 3px;
3617
+ box-sizing: border-box;
3618
+ }
3619
+ .virtual-dropdown .dropdown-list-wrapper {
3620
+ max-height: 250px;
3621
+ overflow-y: auto;
3622
+ position: relative;
3623
+ -webkit-overflow-scrolling: touch;
3624
+ }
3625
+ .virtual-dropdown .dropdown-list-scroller {
3626
+ position: relative;
3627
+ }
3628
+ .virtual-dropdown .virtual-content {
3629
+ position: absolute;
3630
+ top: 0;
3631
+ left: 0;
3632
+ width: 100%;
3633
+ }
3634
+ .virtual-dropdown .dropdown-item {
3635
+ padding: 0 12px;
3636
+ cursor: pointer;
3637
+ box-sizing: border-box;
3638
+ display: flex;
3639
+ align-items: center;
3640
+ white-space: nowrap;
3641
+ overflow: hidden;
3642
+ text-overflow: ellipsis;
3643
+ }
3644
+ .virtual-dropdown .dropdown-item:hover {
3645
+ background-color: #f5f9ff;
3646
+ color: #3498db;
3647
+ }
3648
+ .virtual-dropdown .dropdown-item.selected {
3649
+ background-color: #e6f3ff;
3650
+ color: #2980b9;
3651
+ font-weight: 500;
3652
+ }
3653
+ .virtual-dropdown .dropdown-item input[type=checkbox] {
3654
+ margin-right: 10px;
3655
+ pointer-events: none;
3656
+ width: auto;
3657
+ }
3658
+ @media (max-width: 600px) {
3659
+ .virtual-dropdown .custom-dropdown {
3660
+ max-width: 100%;
3661
+ }
3662
+ }
3663
+
3664
+ .timespan-picker {
3665
+ display: flex;
3666
+ align-items: flex-end;
3667
+ gap: 1rem;
3668
+ padding: 1rem;
3669
+ background: #f8f9fa;
3670
+ border-radius: 8px;
3671
+ max-width: 400px;
3672
+ }
3673
+
3674
+ .timespan-field {
3675
+ flex: 1;
3676
+ display: flex;
3677
+ flex-direction: column;
3678
+ gap: 0.5rem;
3679
+ }
3680
+
3681
+ .timespan-field label {
3682
+ font-size: 0.875rem;
3683
+ font-weight: 500;
3684
+ color: #495057;
3685
+ }
3686
+
3687
+ .timespan-field input[type=time] {
3688
+ padding: 0.75rem;
3689
+ font-size: 1rem;
3690
+ border: 1px solid #ced4da;
3691
+ border-radius: 6px;
3692
+ background: white;
3693
+ transition: border-color 0.2s ease;
3694
+ -webkit-appearance: none;
3695
+ -moz-appearance: none;
3696
+ appearance: none;
3697
+ }
3698
+
3699
+ .timespan-field input[type=time]:focus {
3700
+ outline: none;
3701
+ border-color: #0066cc;
3702
+ box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.1);
3703
+ }
3704
+
3705
+ .timespan-field input[type=time]:invalid {
3706
+ border-color: #dc3545;
3707
+ }
3708
+
3709
+ .timespan-separator {
3710
+ font-size: 1.5rem;
3711
+ color: #6c757d;
3712
+ padding-bottom: 0.75rem;
3713
+ user-select: none;
3714
+ }
3715
+
3716
+ @media (max-width: 480px) {
3717
+ .timespan-picker {
3718
+ flex-direction: column;
3719
+ align-items: stretch;
3720
+ gap: 1rem;
3721
+ padding: 1rem 0.75rem;
3722
+ }
3723
+ .timespan-separator {
3724
+ text-align: center;
3725
+ padding: 0;
3726
+ transform: rotate(90deg);
3727
+ }
3728
+ .timespan-field input[type=time] {
3729
+ font-size: 1.125rem;
3730
+ padding: 1rem;
3731
+ min-height: 48px;
3732
+ }
3733
+ }
3734
+
3735
+ /*# sourceMappingURL=style.css.map */