cybercore-css 0.2.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 (381) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +479 -0
  3. package/dist/cybercore.css +3546 -0
  4. package/dist/cybercore.css.map +1 -0
  5. package/dist/cybercore.min.css +3 -0
  6. package/dist/cybercore.min.css.map +1 -0
  7. package/package.json +214 -0
  8. package/src/cybercore.d.ts +107 -0
  9. package/src/icons/README.md +378 -0
  10. package/src/icons/defs/_template.ts +27 -0
  11. package/src/icons/defs/actions/check.ts +36 -0
  12. package/src/icons/defs/actions/copy.ts +37 -0
  13. package/src/icons/defs/actions/cut.ts +44 -0
  14. package/src/icons/defs/actions/delete.ts +42 -0
  15. package/src/icons/defs/actions/download.ts +36 -0
  16. package/src/icons/defs/actions/drag.ts +60 -0
  17. package/src/icons/defs/actions/edit.ts +36 -0
  18. package/src/icons/defs/actions/filter.ts +33 -0
  19. package/src/icons/defs/actions/index.ts +28 -0
  20. package/src/icons/defs/actions/link.ts +40 -0
  21. package/src/icons/defs/actions/minus.ts +42 -0
  22. package/src/icons/defs/actions/paste.ts +39 -0
  23. package/src/icons/defs/actions/pin.ts +36 -0
  24. package/src/icons/defs/actions/plus.ts +46 -0
  25. package/src/icons/defs/actions/redo.ts +37 -0
  26. package/src/icons/defs/actions/refresh.ts +36 -0
  27. package/src/icons/defs/actions/save.ts +36 -0
  28. package/src/icons/defs/actions/search.ts +37 -0
  29. package/src/icons/defs/actions/share.ts +45 -0
  30. package/src/icons/defs/actions/sort.ts +39 -0
  31. package/src/icons/defs/actions/undo.ts +37 -0
  32. package/src/icons/defs/actions/unlink.ts +44 -0
  33. package/src/icons/defs/actions/upload.ts +36 -0
  34. package/src/icons/defs/actions/x.ts +40 -0
  35. package/src/icons/defs/communication/at-sign.ts +37 -0
  36. package/src/icons/defs/communication/bell-off.ts +44 -0
  37. package/src/icons/defs/communication/bell.ts +37 -0
  38. package/src/icons/defs/communication/inbox.ts +40 -0
  39. package/src/icons/defs/communication/index.ts +15 -0
  40. package/src/icons/defs/communication/mail.ts +40 -0
  41. package/src/icons/defs/communication/message.ts +42 -0
  42. package/src/icons/defs/communication/phone-off.ts +35 -0
  43. package/src/icons/defs/communication/phone.ts +36 -0
  44. package/src/icons/defs/communication/send.ts +37 -0
  45. package/src/icons/defs/communication/video-call.ts +44 -0
  46. package/src/icons/defs/data/calendar.ts +55 -0
  47. package/src/icons/defs/data/chart-bar.ts +48 -0
  48. package/src/icons/defs/data/chart-line.ts +41 -0
  49. package/src/icons/defs/data/chart-pie.ts +42 -0
  50. package/src/icons/defs/data/clock.ts +37 -0
  51. package/src/icons/defs/data/cloud-download.ts +41 -0
  52. package/src/icons/defs/data/cloud-upload.ts +41 -0
  53. package/src/icons/defs/data/cloud.ts +36 -0
  54. package/src/icons/defs/data/database.ts +50 -0
  55. package/src/icons/defs/data/hash.ts +43 -0
  56. package/src/icons/defs/data/index.ts +19 -0
  57. package/src/icons/defs/data/percent.ts +39 -0
  58. package/src/icons/defs/data/sync.ts +43 -0
  59. package/src/icons/defs/data/table.ts +50 -0
  60. package/src/icons/defs/data/timer.ts +47 -0
  61. package/src/icons/defs/files/archive.ts +39 -0
  62. package/src/icons/defs/files/attachment.ts +34 -0
  63. package/src/icons/defs/files/clipboard.ts +45 -0
  64. package/src/icons/defs/files/file-archive.ts +45 -0
  65. package/src/icons/defs/files/file-audio.ts +41 -0
  66. package/src/icons/defs/files/file-code.ts +41 -0
  67. package/src/icons/defs/files/file-image.ts +41 -0
  68. package/src/icons/defs/files/file-minus.ts +37 -0
  69. package/src/icons/defs/files/file-plus.ts +41 -0
  70. package/src/icons/defs/files/file-text.ts +41 -0
  71. package/src/icons/defs/files/file-video.ts +37 -0
  72. package/src/icons/defs/files/file.ts +34 -0
  73. package/src/icons/defs/files/folder-open.ts +34 -0
  74. package/src/icons/defs/files/folder-plus.ts +38 -0
  75. package/src/icons/defs/files/folder.ts +30 -0
  76. package/src/icons/defs/files/index.ts +20 -0
  77. package/src/icons/defs/index.ts +58 -0
  78. package/src/icons/defs/media/camera-off.ts +39 -0
  79. package/src/icons/defs/media/camera.ts +34 -0
  80. package/src/icons/defs/media/fast-forward.ts +34 -0
  81. package/src/icons/defs/media/image.ts +39 -0
  82. package/src/icons/defs/media/index.ts +22 -0
  83. package/src/icons/defs/media/mic-off.ts +44 -0
  84. package/src/icons/defs/media/mic.ts +39 -0
  85. package/src/icons/defs/media/music.ts +39 -0
  86. package/src/icons/defs/media/pause.ts +36 -0
  87. package/src/icons/defs/media/play.ts +34 -0
  88. package/src/icons/defs/media/rewind.ts +34 -0
  89. package/src/icons/defs/media/skip-back.ts +34 -0
  90. package/src/icons/defs/media/skip-forward.ts +34 -0
  91. package/src/icons/defs/media/stop.ts +34 -0
  92. package/src/icons/defs/media/video.ts +39 -0
  93. package/src/icons/defs/media/volume-high.ts +39 -0
  94. package/src/icons/defs/media/volume-low.ts +34 -0
  95. package/src/icons/defs/media/volume-off.ts +34 -0
  96. package/src/icons/defs/navigation/arrow-down.ts +34 -0
  97. package/src/icons/defs/navigation/arrow-left.ts +34 -0
  98. package/src/icons/defs/navigation/arrow-right.ts +34 -0
  99. package/src/icons/defs/navigation/arrow-up.ts +34 -0
  100. package/src/icons/defs/navigation/chevron-down.ts +31 -0
  101. package/src/icons/defs/navigation/chevron-left.ts +31 -0
  102. package/src/icons/defs/navigation/chevron-right.ts +31 -0
  103. package/src/icons/defs/navigation/chevron-up.ts +31 -0
  104. package/src/icons/defs/navigation/external-link.ts +37 -0
  105. package/src/icons/defs/navigation/home.ts +34 -0
  106. package/src/icons/defs/navigation/index.ts +19 -0
  107. package/src/icons/defs/navigation/maximize.ts +36 -0
  108. package/src/icons/defs/navigation/menu-dots.ts +42 -0
  109. package/src/icons/defs/navigation/menu.ts +42 -0
  110. package/src/icons/defs/navigation/minimize.ts +32 -0
  111. package/src/icons/defs/security/eye-off.ts +42 -0
  112. package/src/icons/defs/security/eye.ts +37 -0
  113. package/src/icons/defs/security/fingerprint.ts +51 -0
  114. package/src/icons/defs/security/index.ts +20 -0
  115. package/src/icons/defs/security/key.ts +43 -0
  116. package/src/icons/defs/security/lock.ts +40 -0
  117. package/src/icons/defs/security/log-in.ts +40 -0
  118. package/src/icons/defs/security/log-out.ts +40 -0
  119. package/src/icons/defs/security/shield-check.ts +34 -0
  120. package/src/icons/defs/security/shield-x.ts +38 -0
  121. package/src/icons/defs/security/shield.ts +36 -0
  122. package/src/icons/defs/security/unlock.ts +40 -0
  123. package/src/icons/defs/security/user-minus.ts +39 -0
  124. package/src/icons/defs/security/user-plus.ts +43 -0
  125. package/src/icons/defs/security/user.ts +41 -0
  126. package/src/icons/defs/security/users.ts +43 -0
  127. package/src/icons/defs/social/award.ts +41 -0
  128. package/src/icons/defs/social/bookmark-filled.ts +24 -0
  129. package/src/icons/defs/social/bookmark.ts +25 -0
  130. package/src/icons/defs/social/flag.ts +35 -0
  131. package/src/icons/defs/social/heart-filled.ts +24 -0
  132. package/src/icons/defs/social/heart.ts +25 -0
  133. package/src/icons/defs/social/index.ts +11 -0
  134. package/src/icons/defs/social/star-filled.ts +24 -0
  135. package/src/icons/defs/social/star.ts +25 -0
  136. package/src/icons/defs/social/thumbs-down.ts +42 -0
  137. package/src/icons/defs/social/thumbs-up.ts +42 -0
  138. package/src/icons/defs/social/trending.ts +36 -0
  139. package/src/icons/defs/status/battery-charging.ts +30 -0
  140. package/src/icons/defs/status/battery-full.ts +30 -0
  141. package/src/icons/defs/status/battery-low.ts +31 -0
  142. package/src/icons/defs/status/error.ts +31 -0
  143. package/src/icons/defs/status/help.ts +30 -0
  144. package/src/icons/defs/status/index.ts +12 -0
  145. package/src/icons/defs/status/info.ts +30 -0
  146. package/src/icons/defs/status/loading.ts +52 -0
  147. package/src/icons/defs/status/offline.ts +28 -0
  148. package/src/icons/defs/status/online.ts +30 -0
  149. package/src/icons/defs/status/progress.ts +31 -0
  150. package/src/icons/defs/status/success.ts +27 -0
  151. package/src/icons/defs/status/warning.ts +30 -0
  152. package/src/icons/defs/tech/api.ts +55 -0
  153. package/src/icons/defs/tech/bluetooth.ts +33 -0
  154. package/src/icons/defs/tech/bug.ts +58 -0
  155. package/src/icons/defs/tech/chip.ts +80 -0
  156. package/src/icons/defs/tech/circuit.ts +57 -0
  157. package/src/icons/defs/tech/code.ts +36 -0
  158. package/src/icons/defs/tech/cpu.ts +58 -0
  159. package/src/icons/defs/tech/git-branch.ts +41 -0
  160. package/src/icons/defs/tech/git-commit.ts +38 -0
  161. package/src/icons/defs/tech/git-merge.ts +46 -0
  162. package/src/icons/defs/tech/git-pull.ts +50 -0
  163. package/src/icons/defs/tech/globe.ts +36 -0
  164. package/src/icons/defs/tech/index.ts +27 -0
  165. package/src/icons/defs/tech/memory.ts +61 -0
  166. package/src/icons/defs/tech/qr-code.ts +81 -0
  167. package/src/icons/defs/tech/server.ts +45 -0
  168. package/src/icons/defs/tech/settings.ts +33 -0
  169. package/src/icons/defs/tech/signal.ts +43 -0
  170. package/src/icons/defs/tech/sliders.ts +63 -0
  171. package/src/icons/defs/tech/terminal.ts +36 -0
  172. package/src/icons/defs/tech/wifi-off.ts +43 -0
  173. package/src/icons/defs/tech/wifi.ts +38 -0
  174. package/src/icons/defs/tech/zap.ts +30 -0
  175. package/src/icons/icon-list.ts +305 -0
  176. package/src/icons/index.ts +95 -0
  177. package/src/icons/individual.ts +210 -0
  178. package/src/icons/registry.ts +2276 -0
  179. package/src/icons/svg/actions/check.svg +5 -0
  180. package/src/icons/svg/actions/copy.svg +6 -0
  181. package/src/icons/svg/actions/cut.svg +7 -0
  182. package/src/icons/svg/actions/delete.svg +7 -0
  183. package/src/icons/svg/actions/download.svg +5 -0
  184. package/src/icons/svg/actions/drag.svg +8 -0
  185. package/src/icons/svg/actions/edit.svg +5 -0
  186. package/src/icons/svg/actions/filter.svg +4 -0
  187. package/src/icons/svg/actions/link.svg +6 -0
  188. package/src/icons/svg/actions/minus.svg +7 -0
  189. package/src/icons/svg/actions/paste.svg +6 -0
  190. package/src/icons/svg/actions/pin.svg +5 -0
  191. package/src/icons/svg/actions/plus.svg +8 -0
  192. package/src/icons/svg/actions/redo.svg +5 -0
  193. package/src/icons/svg/actions/refresh.svg +5 -0
  194. package/src/icons/svg/actions/save.svg +5 -0
  195. package/src/icons/svg/actions/search.svg +5 -0
  196. package/src/icons/svg/actions/share.svg +7 -0
  197. package/src/icons/svg/actions/sort.svg +6 -0
  198. package/src/icons/svg/actions/undo.svg +5 -0
  199. package/src/icons/svg/actions/unlink.svg +7 -0
  200. package/src/icons/svg/actions/upload.svg +5 -0
  201. package/src/icons/svg/actions/x.svg +6 -0
  202. package/src/icons/svg/communication/at-sign.svg +5 -0
  203. package/src/icons/svg/communication/bell-off.svg +8 -0
  204. package/src/icons/svg/communication/bell.svg +5 -0
  205. package/src/icons/svg/communication/inbox.svg +6 -0
  206. package/src/icons/svg/communication/mail.svg +6 -0
  207. package/src/icons/svg/communication/message.svg +6 -0
  208. package/src/icons/svg/communication/phone-off.svg +4 -0
  209. package/src/icons/svg/communication/phone.svg +5 -0
  210. package/src/icons/svg/communication/send.svg +5 -0
  211. package/src/icons/svg/communication/video-call.svg +7 -0
  212. package/src/icons/svg/data/calendar.svg +11 -0
  213. package/src/icons/svg/data/chart-bar.svg +6 -0
  214. package/src/icons/svg/data/chart-line.svg +5 -0
  215. package/src/icons/svg/data/chart-pie.svg +6 -0
  216. package/src/icons/svg/data/clock.svg +5 -0
  217. package/src/icons/svg/data/cloud-download.svg +5 -0
  218. package/src/icons/svg/data/cloud-upload.svg +5 -0
  219. package/src/icons/svg/data/cloud.svg +4 -0
  220. package/src/icons/svg/data/database.svg +7 -0
  221. package/src/icons/svg/data/hash.svg +6 -0
  222. package/src/icons/svg/data/percent.svg +5 -0
  223. package/src/icons/svg/data/sync.svg +6 -0
  224. package/src/icons/svg/data/table.svg +7 -0
  225. package/src/icons/svg/data/timer.svg +7 -0
  226. package/src/icons/svg/files/archive.svg +5 -0
  227. package/src/icons/svg/files/attachment.svg +4 -0
  228. package/src/icons/svg/files/clipboard.svg +6 -0
  229. package/src/icons/svg/files/file-archive.svg +7 -0
  230. package/src/icons/svg/files/file-audio.svg +6 -0
  231. package/src/icons/svg/files/file-code.svg +6 -0
  232. package/src/icons/svg/files/file-image.svg +6 -0
  233. package/src/icons/svg/files/file-minus.svg +5 -0
  234. package/src/icons/svg/files/file-plus.svg +6 -0
  235. package/src/icons/svg/files/file-text.svg +6 -0
  236. package/src/icons/svg/files/file-video.svg +5 -0
  237. package/src/icons/svg/files/file.svg +4 -0
  238. package/src/icons/svg/files/folder-open.svg +4 -0
  239. package/src/icons/svg/files/folder-plus.svg +5 -0
  240. package/src/icons/svg/files/folder.svg +3 -0
  241. package/src/icons/svg/media/camera-off.svg +5 -0
  242. package/src/icons/svg/media/camera.svg +4 -0
  243. package/src/icons/svg/media/fast-forward.svg +4 -0
  244. package/src/icons/svg/media/image.svg +5 -0
  245. package/src/icons/svg/media/mic-off.svg +6 -0
  246. package/src/icons/svg/media/mic.svg +5 -0
  247. package/src/icons/svg/media/music.svg +5 -0
  248. package/src/icons/svg/media/pause.svg +4 -0
  249. package/src/icons/svg/media/play.svg +4 -0
  250. package/src/icons/svg/media/rewind.svg +4 -0
  251. package/src/icons/svg/media/skip-back.svg +4 -0
  252. package/src/icons/svg/media/skip-forward.svg +4 -0
  253. package/src/icons/svg/media/stop.svg +4 -0
  254. package/src/icons/svg/media/video.svg +5 -0
  255. package/src/icons/svg/media/volume-high.svg +5 -0
  256. package/src/icons/svg/media/volume-low.svg +4 -0
  257. package/src/icons/svg/media/volume-off.svg +4 -0
  258. package/src/icons/svg/navigation/arrow-down.svg +4 -0
  259. package/src/icons/svg/navigation/arrow-left.svg +4 -0
  260. package/src/icons/svg/navigation/arrow-right.svg +4 -0
  261. package/src/icons/svg/navigation/arrow-up.svg +4 -0
  262. package/src/icons/svg/navigation/chevron-down.svg +3 -0
  263. package/src/icons/svg/navigation/chevron-left.svg +3 -0
  264. package/src/icons/svg/navigation/chevron-right.svg +3 -0
  265. package/src/icons/svg/navigation/chevron-up.svg +3 -0
  266. package/src/icons/svg/navigation/external-link.svg +5 -0
  267. package/src/icons/svg/navigation/home.svg +4 -0
  268. package/src/icons/svg/navigation/maximize.svg +3 -0
  269. package/src/icons/svg/navigation/menu-dots.svg +5 -0
  270. package/src/icons/svg/navigation/menu.svg +5 -0
  271. package/src/icons/svg/navigation/minimize.svg +3 -0
  272. package/src/icons/svg/security/eye-off.svg +6 -0
  273. package/src/icons/svg/security/eye.svg +5 -0
  274. package/src/icons/svg/security/fingerprint.svg +9 -0
  275. package/src/icons/svg/security/key.svg +7 -0
  276. package/src/icons/svg/security/lock.svg +6 -0
  277. package/src/icons/svg/security/log-in.svg +6 -0
  278. package/src/icons/svg/security/log-out.svg +6 -0
  279. package/src/icons/svg/security/shield-check.svg +4 -0
  280. package/src/icons/svg/security/shield-x.svg +5 -0
  281. package/src/icons/svg/security/shield.svg +5 -0
  282. package/src/icons/svg/security/unlock.svg +6 -0
  283. package/src/icons/svg/security/user-minus.svg +5 -0
  284. package/src/icons/svg/security/user-plus.svg +6 -0
  285. package/src/icons/svg/security/user.svg +6 -0
  286. package/src/icons/svg/security/users.svg +6 -0
  287. package/src/icons/svg/social/award.svg +5 -0
  288. package/src/icons/svg/social/bookmark-filled.svg +3 -0
  289. package/src/icons/svg/social/bookmark.svg +3 -0
  290. package/src/icons/svg/social/flag.svg +4 -0
  291. package/src/icons/svg/social/heart-filled.svg +3 -0
  292. package/src/icons/svg/social/heart.svg +3 -0
  293. package/src/icons/svg/social/star-filled.svg +3 -0
  294. package/src/icons/svg/social/star.svg +3 -0
  295. package/src/icons/svg/social/thumbs-down.svg +5 -0
  296. package/src/icons/svg/social/thumbs-up.svg +5 -0
  297. package/src/icons/svg/social/trending.svg +4 -0
  298. package/src/icons/svg/status/battery-charging.svg +5 -0
  299. package/src/icons/svg/status/battery-full.svg +5 -0
  300. package/src/icons/svg/status/battery-low.svg +5 -0
  301. package/src/icons/svg/status/error.svg +5 -0
  302. package/src/icons/svg/status/help.svg +5 -0
  303. package/src/icons/svg/status/info.svg +5 -0
  304. package/src/icons/svg/status/loading.svg +10 -0
  305. package/src/icons/svg/status/offline.svg +4 -0
  306. package/src/icons/svg/status/online.svg +5 -0
  307. package/src/icons/svg/status/progress.svg +5 -0
  308. package/src/icons/svg/status/success.svg +4 -0
  309. package/src/icons/svg/status/warning.svg +5 -0
  310. package/src/icons/svg/tech/api.svg +10 -0
  311. package/src/icons/svg/tech/bluetooth.svg +4 -0
  312. package/src/icons/svg/tech/bug.svg +11 -0
  313. package/src/icons/svg/tech/chip.svg +16 -0
  314. package/src/icons/svg/tech/circuit.svg +15 -0
  315. package/src/icons/svg/tech/code.svg +5 -0
  316. package/src/icons/svg/tech/cpu.svg +12 -0
  317. package/src/icons/svg/tech/git-branch.svg +6 -0
  318. package/src/icons/svg/tech/git-commit.svg +5 -0
  319. package/src/icons/svg/tech/git-merge.svg +7 -0
  320. package/src/icons/svg/tech/git-pull.svg +8 -0
  321. package/src/icons/svg/tech/globe.svg +5 -0
  322. package/src/icons/svg/tech/memory.svg +12 -0
  323. package/src/icons/svg/tech/qr-code.svg +9 -0
  324. package/src/icons/svg/tech/server.svg +7 -0
  325. package/src/icons/svg/tech/settings.svg +4 -0
  326. package/src/icons/svg/tech/signal.svg +7 -0
  327. package/src/icons/svg/tech/sliders.svg +11 -0
  328. package/src/icons/svg/tech/terminal.svg +5 -0
  329. package/src/icons/svg/tech/wifi-off.svg +7 -0
  330. package/src/icons/svg/tech/wifi.svg +6 -0
  331. package/src/icons/svg/tech/zap.svg +3 -0
  332. package/src/icons/types.ts +73 -0
  333. package/src/icons/utils.ts +216 -0
  334. package/src/scss/components/_alerts.scss +76 -0
  335. package/src/scss/components/_badges.scss +198 -0
  336. package/src/scss/components/_buttons.scss +180 -0
  337. package/src/scss/components/_cards.scss +178 -0
  338. package/src/scss/components/_dropdown.scss +213 -0
  339. package/src/scss/components/_index.scss +19 -0
  340. package/src/scss/components/_inputs.scss +193 -0
  341. package/src/scss/components/_modal.scss +303 -0
  342. package/src/scss/components/_nav.scss +116 -0
  343. package/src/scss/components/_progress.scss +218 -0
  344. package/src/scss/components/_skeleton.scss +337 -0
  345. package/src/scss/components/_spinner.scss +300 -0
  346. package/src/scss/components/_tables.scss +244 -0
  347. package/src/scss/components/_tabs.scss +327 -0
  348. package/src/scss/components/_terminal.scss +259 -0
  349. package/src/scss/core/_base.scss +25 -0
  350. package/src/scss/core/_index.scss +6 -0
  351. package/src/scss/core/_layers.scss +5 -0
  352. package/src/scss/core/_mixins.scss +96 -0
  353. package/src/scss/core/_reset.scss +26 -0
  354. package/src/scss/core/_typography.scss +43 -0
  355. package/src/scss/core/_variables.scss +163 -0
  356. package/src/scss/cybercore.scss +46 -0
  357. package/src/scss/effects/_datastream.scss +43 -0
  358. package/src/scss/effects/_glitch.scss +389 -0
  359. package/src/scss/effects/_index.scss +9 -0
  360. package/src/scss/effects/_neon-border.scss +107 -0
  361. package/src/scss/effects/_noise.scss +75 -0
  362. package/src/scss/effects/_scanlines.scss +86 -0
  363. package/src/scss/utilities/_accessibility.scss +57 -0
  364. package/src/scss/utilities/_animation.scss +246 -0
  365. package/src/scss/utilities/_backgrounds.scss +201 -0
  366. package/src/scss/utilities/_borders.scss +198 -0
  367. package/src/scss/utilities/_display.scss +33 -0
  368. package/src/scss/utilities/_filters.scss +279 -0
  369. package/src/scss/utilities/_flex.scss +95 -0
  370. package/src/scss/utilities/_grid.scss +68 -0
  371. package/src/scss/utilities/_icons.scss +152 -0
  372. package/src/scss/utilities/_index.scss +35 -0
  373. package/src/scss/utilities/_interactivity.scss +186 -0
  374. package/src/scss/utilities/_layout.scss +202 -0
  375. package/src/scss/utilities/_position.scss +168 -0
  376. package/src/scss/utilities/_shadows.scss +164 -0
  377. package/src/scss/utilities/_sizing.scss +229 -0
  378. package/src/scss/utilities/_spacing.scss +185 -0
  379. package/src/scss/utilities/_text.scss +177 -0
  380. package/src/scss/utilities/_transforms.scss +212 -0
  381. package/src/scss/utilities/_transitions.scss +174 -0
@@ -0,0 +1,3546 @@
1
+ @charset "UTF-8";
2
+ @layer reset, base, theme, components, utilities;
3
+ @layer theme {
4
+ :root {
5
+ --cyber-cyan-300: #87eaf2;
6
+ --cyber-cyan-400: #54d1db;
7
+ --cyber-cyan-500: #00f0ff;
8
+ --cyber-cyan-600: #00c4cc;
9
+ --cyber-cyan-700: #0097a7;
10
+ --cyber-cyan-900: #005d6a;
11
+ --cyber-magenta-500: #ff2a6d;
12
+ --cyber-magenta-700: #b31248;
13
+ --cyber-yellow-500: #fcee0a;
14
+ --cyber-yellow-700: #aca406;
15
+ --cyber-green-400: #43ff83;
16
+ --cyber-green-500: #05ffa1;
17
+ --cyber-green-700: #03a969;
18
+ --cyber-green-900: #015331;
19
+ --cyber-void-100: #2a2d3a;
20
+ --cyber-void-200: #1f2230;
21
+ --cyber-void-300: #181a25;
22
+ --cyber-void-400: #12141d;
23
+ --cyber-void-500: #0d0e14;
24
+ --cyber-void-700: #07080c;
25
+ --cyber-void-800: #040508;
26
+ --cyber-void-900: #010204;
27
+ --cyber-chrome-100: #f0f1f5;
28
+ --cyber-chrome-200: #d1d4de;
29
+ --cyber-chrome-300: #b2b7c7;
30
+ --cyber-chrome-400: #939ab0;
31
+ --cyber-chrome-500: #747d99;
32
+ --cyber-chrome-600: #5c647a;
33
+ --color-bg-primary: var(--cyber-void-500);
34
+ --color-bg-secondary: var(--cyber-void-400);
35
+ --color-bg-tertiary: var(--cyber-void-300);
36
+ --color-bg-elevated: var(--cyber-void-200);
37
+ --color-text-primary: var(--cyber-chrome-100);
38
+ --color-text-secondary: var(--cyber-chrome-300);
39
+ --color-text-muted: var(--cyber-chrome-500);
40
+ --color-border-default: var(--cyber-void-100);
41
+ --glow-cyan:
42
+ 0 0 20px var(--cyber-cyan-500),
43
+ 0 0 40px color-mix(in srgb, var(--cyber-cyan-500) 50%, transparent),
44
+ 0 0 80px color-mix(in srgb, var(--cyber-cyan-500) 25%, transparent);
45
+ --glow-magenta:
46
+ 0 0 20px var(--cyber-magenta-500),
47
+ 0 0 40px color-mix(in srgb, var(--cyber-magenta-500) 50%, transparent);
48
+ --glow-yellow:
49
+ 0 0 20px var(--cyber-yellow-500),
50
+ 0 0 40px color-mix(in srgb, var(--cyber-yellow-500) 50%, transparent);
51
+ --glow-green:
52
+ 0 0 20px var(--cyber-green-500),
53
+ 0 0 40px color-mix(in srgb, var(--cyber-green-500) 50%, transparent);
54
+ --glow-text-cyan:
55
+ 0 0 10px var(--cyber-cyan-500),
56
+ 0 0 20px color-mix(in srgb, var(--cyber-cyan-500) 60%, transparent);
57
+ --font-display: "Rajdhani", "Orbitron", system-ui, sans-serif;
58
+ --font-body: "Exo 2", system-ui, sans-serif;
59
+ --font-mono: "JetBrains Mono", monospace;
60
+ --text-xs: clamp(0.64rem, 0.59rem + 0.24vw, 0.75rem);
61
+ --text-sm: clamp(0.8rem, 0.74rem + 0.32vw, 0.94rem);
62
+ --text-base: clamp(1rem, 0.93rem + 0.37vw, 1.18rem);
63
+ --text-lg: clamp(1.25rem, 1.16rem + 0.47vw, 1.47rem);
64
+ --text-xl: clamp(1.56rem, 1.45rem + 0.59vw, 1.84rem);
65
+ --text-2xl: clamp(1.95rem, 1.81rem + 0.74vw, 2.3rem);
66
+ --text-3xl: clamp(2.44rem, 2.26rem + 0.92vw, 2.87rem);
67
+ --text-4xl: clamp(3.05rem, 2.83rem + 1.15vw, 3.58rem);
68
+ --text-5xl: clamp(3.81rem, 3.54rem + 1.44vw, 4.48rem);
69
+ --tracking-wide: 0.05em;
70
+ --tracking-wider: 0.1em;
71
+ --space-3xs: clamp(0.25rem, 0.23rem + 0.09vw, 0.31rem);
72
+ --space-2xs: clamp(0.5rem, 0.46rem + 0.18vw, 0.63rem);
73
+ --space-xs: clamp(0.75rem, 0.7rem + 0.28vw, 0.94rem);
74
+ --space-sm: clamp(1rem, 0.93rem + 0.37vw, 1.25rem);
75
+ --space-md: clamp(1.5rem, 1.39rem + 0.56vw, 1.88rem);
76
+ --space-lg: clamp(2rem, 1.86rem + 0.74vw, 2.5rem);
77
+ --space-xl: clamp(3rem, 2.78rem + 1.11vw, 3.75rem);
78
+ --space-2xl: clamp(4rem, 3.71rem + 1.48vw, 5rem);
79
+ --space-3xl: clamp(6rem, 5.57rem + 2.22vw, 7.5rem);
80
+ --radius-sm: 2px;
81
+ --radius-md: 4px;
82
+ --radius-lg: 8px;
83
+ --radius-full: 9999px;
84
+ --radius-cyber: 0 12px 0 12px;
85
+ --border-thin: 1px;
86
+ --border-medium: 2px;
87
+ --border-thick: 3px;
88
+ --ease-cyber: cubic-bezier(0.77, 0, 0.175, 1);
89
+ --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
90
+ --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
91
+ --duration-fast: 150ms;
92
+ --duration-normal: 300ms;
93
+ --duration-slow: 500ms;
94
+ --transition-fast: var(--duration-fast) ease;
95
+ --transition-base: var(--duration-normal) ease;
96
+ --transition-slow: var(--duration-slow) ease;
97
+ --z-sticky: 100;
98
+ --z-modal: 1000;
99
+ --noise-opacity: 0.03;
100
+ --scanline-opacity: 0.04;
101
+ }
102
+ }
103
+ @layer reset {
104
+ *,
105
+ *::before,
106
+ *::after {
107
+ box-sizing: border-box;
108
+ margin: 0;
109
+ padding: 0;
110
+ }
111
+ html {
112
+ font-size: 16px;
113
+ color-scheme: dark;
114
+ -webkit-font-smoothing: antialiased;
115
+ scroll-behavior: smooth;
116
+ }
117
+ @media (prefers-reduced-motion: reduce) {
118
+ html {
119
+ scroll-behavior: auto;
120
+ }
121
+ }
122
+ }
123
+ @layer base {
124
+ body {
125
+ min-height: 100dvh;
126
+ overflow-x: hidden;
127
+ font-family: var(--font-body);
128
+ font-size: var(--text-base);
129
+ line-height: 1.6;
130
+ color: var(--color-text-primary);
131
+ background-color: var(--color-bg-primary);
132
+ }
133
+ code {
134
+ padding: 0.125em 0.375em;
135
+ border: 1px solid var(--color-border-default);
136
+ border-radius: var(--radius-sm);
137
+ font-family: var(--font-mono);
138
+ font-size: 0.9em;
139
+ color: var(--cyber-cyan-400);
140
+ background: var(--color-bg-tertiary);
141
+ }
142
+ }
143
+ @layer base {
144
+ h1,
145
+ h2,
146
+ h3,
147
+ h4,
148
+ h5,
149
+ h6 {
150
+ font-family: var(--font-display);
151
+ font-weight: 700;
152
+ line-height: 1.1;
153
+ letter-spacing: 0.02em;
154
+ text-transform: uppercase;
155
+ }
156
+ h1 {
157
+ font-size: var(--text-5xl);
158
+ }
159
+ h2 {
160
+ font-size: var(--text-4xl);
161
+ }
162
+ h3 {
163
+ font-size: var(--text-3xl);
164
+ }
165
+ h4 {
166
+ font-size: var(--text-2xl);
167
+ }
168
+ h5 {
169
+ font-size: var(--text-xl);
170
+ }
171
+ h6 {
172
+ font-size: var(--text-lg);
173
+ }
174
+ }
175
+ @layer components {
176
+ .cyber-btn {
177
+ --btn-color: var(--cyber-cyan-500);
178
+ --btn-bg: transparent;
179
+ --btn-glow: var(--glow-cyan);
180
+ position: relative;
181
+ display: inline-flex;
182
+ gap: var(--space-xs);
183
+ align-items: center;
184
+ justify-content: center;
185
+ padding: var(--space-xs) var(--space-md);
186
+ border: var(--border-medium) solid var(--btn-color);
187
+ border-radius: var(--radius-cyber);
188
+ overflow: hidden;
189
+ font-family: var(--font-display);
190
+ font-size: var(--text-sm);
191
+ font-weight: 700;
192
+ letter-spacing: 0.1em;
193
+ text-transform: uppercase;
194
+ color: var(--btn-color);
195
+ background: var(--btn-bg);
196
+ transition: color var(--duration-fast) var(--ease-cyber), background-color var(--duration-fast) var(--ease-cyber), border-color var(--duration-fast) var(--ease-cyber), box-shadow var(--duration-fast) var(--ease-cyber);
197
+ cursor: pointer;
198
+ isolation: isolate;
199
+ }
200
+ .cyber-btn::before {
201
+ content: "";
202
+ position: absolute;
203
+ z-index: -1;
204
+ background: var(--btn-color);
205
+ transform: translateX(-101%);
206
+ transition: transform var(--duration-normal) var(--ease-cyber);
207
+ inset: 0;
208
+ }
209
+ .cyber-btn:hover::before, .cyber-btn:focus-visible::before {
210
+ transform: translateX(0);
211
+ }
212
+ .cyber-btn:hover, .cyber-btn:focus-visible {
213
+ color: var(--cyber-void-500);
214
+ box-shadow: var(--btn-glow);
215
+ }
216
+ .cyber-btn::after {
217
+ content: "";
218
+ position: absolute;
219
+ right: -2px;
220
+ bottom: -2px;
221
+ width: 12px;
222
+ height: 12px;
223
+ border: var(--border-medium) solid var(--btn-color);
224
+ border-top: none;
225
+ border-left: none;
226
+ background: var(--color-bg-primary);
227
+ clip-path: polygon(100% 0, 100% 100%, 0 100%);
228
+ }
229
+ .cyber-btn:focus-visible {
230
+ outline: 2px solid var(--btn-color);
231
+ outline-offset: 4px;
232
+ }
233
+ .cyber-btn:disabled, .cyber-btn[disabled] {
234
+ opacity: 40%;
235
+ cursor: not-allowed;
236
+ pointer-events: none;
237
+ filter: grayscale(50%);
238
+ }
239
+ @media (hover: none) {
240
+ .cyber-btn::before {
241
+ display: none;
242
+ }
243
+ .cyber-btn:hover {
244
+ color: var(--btn-color);
245
+ box-shadow: none;
246
+ }
247
+ .cyber-btn:active {
248
+ color: var(--cyber-void-500);
249
+ background: var(--btn-color);
250
+ box-shadow: var(--btn-glow);
251
+ }
252
+ }
253
+ .cyber-btn--magenta {
254
+ --btn-color: var(--cyber-magenta-500);
255
+ --btn-glow: var(--glow-magenta);
256
+ }
257
+ .cyber-btn--yellow {
258
+ --btn-color: var(--cyber-yellow-500);
259
+ --btn-glow: var(--glow-yellow);
260
+ }
261
+ .cyber-btn--green {
262
+ --btn-color: var(--cyber-green-500);
263
+ --btn-glow: var(--glow-green);
264
+ }
265
+ .cyber-btn--ghost {
266
+ border-style: dashed;
267
+ }
268
+ .cyber-btn--filled {
269
+ color: var(--cyber-void-500);
270
+ background: var(--btn-color);
271
+ }
272
+ .cyber-btn--filled::before {
273
+ background: var(--cyber-void-500);
274
+ }
275
+ .cyber-btn--filled:hover {
276
+ color: var(--btn-color);
277
+ }
278
+ .cyber-btn--sm {
279
+ padding: var(--space-3xs) var(--space-sm);
280
+ font-size: var(--text-xs);
281
+ }
282
+ .cyber-btn--lg {
283
+ padding: var(--space-sm) var(--space-lg);
284
+ font-size: var(--text-lg);
285
+ }
286
+ @media (prefers-reduced-motion: reduce) {
287
+ .cyber-btn::before {
288
+ transition: none;
289
+ }
290
+ }
291
+ }
292
+ @layer components {
293
+ .cyber-card {
294
+ --card-accent: var(--cyber-cyan-500);
295
+ position: relative;
296
+ padding: var(--space-md);
297
+ border: 1px solid var(--color-border-default);
298
+ background: var(--color-bg-secondary);
299
+ clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 20px, 100% 100%, 20px 100%, 0 calc(100% - 20px));
300
+ }
301
+ .cyber-card::before, .cyber-card::after {
302
+ content: "";
303
+ position: absolute;
304
+ width: 30px;
305
+ height: 30px;
306
+ border: 2px solid var(--card-accent);
307
+ pointer-events: none;
308
+ }
309
+ .cyber-card::before {
310
+ top: -1px;
311
+ left: -1px;
312
+ border-right: none;
313
+ border-bottom: none;
314
+ }
315
+ .cyber-card::after {
316
+ right: -1px;
317
+ bottom: -1px;
318
+ border-top: none;
319
+ border-left: none;
320
+ }
321
+ .cyber-card__header {
322
+ display: flex;
323
+ gap: var(--space-sm);
324
+ align-items: center;
325
+ margin-bottom: var(--space-md);
326
+ padding-bottom: var(--space-sm);
327
+ border-bottom: 1px solid var(--color-border-default);
328
+ }
329
+ .cyber-card__icon {
330
+ display: flex;
331
+ align-items: center;
332
+ justify-content: center;
333
+ width: 40px;
334
+ height: 40px;
335
+ border: 1px solid var(--card-accent);
336
+ font-size: var(--text-lg);
337
+ color: var(--card-accent);
338
+ background: color-mix(in srgb, var(--card-accent) 15%, transparent);
339
+ }
340
+ .cyber-card__title {
341
+ font-family: var(--font-display);
342
+ font-size: var(--text-lg);
343
+ letter-spacing: 0.05em;
344
+ text-transform: uppercase;
345
+ color: var(--card-accent);
346
+ }
347
+ .cyber-card__badge {
348
+ margin-left: auto;
349
+ padding: var(--space-3xs) var(--space-xs);
350
+ font-family: var(--font-mono);
351
+ font-size: var(--text-xs);
352
+ font-weight: 700;
353
+ color: var(--cyber-void-500);
354
+ background: var(--card-accent);
355
+ }
356
+ .cyber-card--interactive {
357
+ transition: all var(--duration-normal);
358
+ cursor: pointer;
359
+ }
360
+ .cyber-card--interactive:hover {
361
+ box-shadow: inset 0 0 30px color-mix(in srgb, var(--card-accent) 10%, transparent), 0 0 30px color-mix(in srgb, var(--card-accent) 30%, transparent);
362
+ transform: translateY(-2px);
363
+ }
364
+ .cyber-card--holo {
365
+ background: linear-gradient(135deg, var(--color-bg-secondary) 0%, color-mix(in srgb, var(--cyber-cyan-500) 5%, var(--color-bg-secondary)) 25%, color-mix(in srgb, var(--cyber-magenta-500) 5%, var(--color-bg-secondary)) 50%, color-mix(in srgb, var(--cyber-green-500) 5%, var(--color-bg-secondary)) 75%, var(--color-bg-secondary) 100%);
366
+ background-size: 400% 400%;
367
+ animation: holo-shift 8s ease infinite;
368
+ }
369
+ .cyber-card--magenta {
370
+ --card-accent: var(--cyber-magenta-500);
371
+ }
372
+ .cyber-card--yellow {
373
+ --card-accent: var(--cyber-yellow-500);
374
+ }
375
+ .cyber-card--green {
376
+ --card-accent: var(--cyber-green-500);
377
+ }
378
+ @keyframes holo-shift {
379
+ 0%, 100% {
380
+ background-position: 0% 50%;
381
+ }
382
+ 25% {
383
+ background-position: 100% 50%;
384
+ }
385
+ 50% {
386
+ background-position: 100% 100%;
387
+ }
388
+ 75% {
389
+ background-position: 0% 100%;
390
+ }
391
+ }
392
+ @media (prefers-reduced-motion: reduce) {
393
+ .cyber-card--holo {
394
+ animation: none;
395
+ }
396
+ .cyber-card--interactive {
397
+ transition: none;
398
+ }
399
+ .cyber-card--interactive:hover {
400
+ transform: none;
401
+ }
402
+ }
403
+ }
404
+ @layer components {
405
+ .cyber-input {
406
+ --input-accent: var(--cyber-cyan-500);
407
+ display: block;
408
+ width: 100%;
409
+ padding: var(--space-xs) var(--space-sm);
410
+ border: 1px solid var(--color-border-default);
411
+ border-left: 3px solid var(--input-accent);
412
+ font-family: var(--font-mono);
413
+ font-size: var(--text-base);
414
+ color: var(--color-text-primary);
415
+ background: var(--color-bg-tertiary);
416
+ transition: all var(--duration-fast);
417
+ outline: none;
418
+ }
419
+ .cyber-input::placeholder {
420
+ color: var(--color-text-muted);
421
+ }
422
+ .cyber-input:focus {
423
+ border-color: var(--input-accent);
424
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--input-accent) 20%, transparent), inset 0 0 15px color-mix(in srgb, var(--input-accent) 10%, transparent);
425
+ }
426
+ .cyber-field {
427
+ margin-bottom: var(--space-md);
428
+ }
429
+ .cyber-field__label {
430
+ display: block;
431
+ margin-bottom: var(--space-2xs);
432
+ font-family: var(--font-display);
433
+ font-size: var(--text-xs);
434
+ font-weight: 700;
435
+ letter-spacing: 0.1em;
436
+ text-transform: uppercase;
437
+ color: var(--color-text-secondary);
438
+ }
439
+ .cyber-field__label::before {
440
+ content: "> ";
441
+ color: var(--cyber-cyan-500);
442
+ }
443
+ .cyber-textarea {
444
+ display: block;
445
+ width: 100%;
446
+ min-height: 120px;
447
+ padding: var(--space-sm);
448
+ border: 1px solid var(--color-border-default);
449
+ border-left: 3px solid var(--cyber-cyan-500);
450
+ border-radius: var(--radius-sm);
451
+ font-family: var(--font-mono);
452
+ font-size: var(--text-sm);
453
+ line-height: 1.6;
454
+ color: var(--color-text-primary);
455
+ background: var(--color-bg-tertiary);
456
+ transition: all var(--duration-fast);
457
+ outline: none;
458
+ resize: vertical;
459
+ }
460
+ .cyber-textarea::placeholder {
461
+ color: var(--color-text-muted);
462
+ }
463
+ .cyber-textarea:focus {
464
+ border-color: var(--cyber-cyan-500);
465
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--cyber-cyan-500) 20%, transparent), inset 0 0 15px color-mix(in srgb, var(--cyber-cyan-500) 10%, transparent);
466
+ }
467
+ .cyber-select {
468
+ display: block;
469
+ width: 100%;
470
+ padding: var(--space-xs) var(--space-lg) var(--space-xs) var(--space-sm);
471
+ border: 1px solid var(--color-border-default);
472
+ border-left: 3px solid var(--cyber-magenta-500);
473
+ font-family: var(--font-display);
474
+ font-size: var(--text-sm);
475
+ font-weight: 600;
476
+ letter-spacing: 0.05em;
477
+ text-transform: uppercase;
478
+ color: var(--color-text-primary);
479
+ background: var(--color-bg-tertiary);
480
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23ff2a6d' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");
481
+ background-repeat: no-repeat;
482
+ background-position: right var(--space-sm) center;
483
+ transition: all var(--duration-fast);
484
+ cursor: pointer;
485
+ appearance: none;
486
+ outline: none;
487
+ }
488
+ .cyber-select:focus {
489
+ border-color: var(--cyber-magenta-500);
490
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--cyber-magenta-500) 20%, transparent), inset 0 0 15px color-mix(in srgb, var(--cyber-magenta-500) 10%, transparent);
491
+ }
492
+ .cyber-select option {
493
+ padding: var(--space-xs);
494
+ color: var(--color-text-primary);
495
+ background: var(--color-bg-secondary);
496
+ }
497
+ .cyber-checkbox {
498
+ display: inline-flex;
499
+ gap: var(--space-xs);
500
+ align-items: center;
501
+ cursor: pointer;
502
+ user-select: none;
503
+ }
504
+ .cyber-checkbox input {
505
+ position: absolute;
506
+ width: 0;
507
+ height: 0;
508
+ opacity: 0%;
509
+ }
510
+ .cyber-checkbox__box {
511
+ position: relative;
512
+ display: flex;
513
+ align-items: center;
514
+ justify-content: center;
515
+ width: 20px;
516
+ height: 20px;
517
+ border: 2px solid var(--cyber-cyan-500);
518
+ background: var(--color-bg-tertiary);
519
+ transition: all var(--duration-fast);
520
+ }
521
+ .cyber-checkbox__box::before {
522
+ content: "";
523
+ width: 10px;
524
+ height: 10px;
525
+ background: var(--cyber-cyan-500);
526
+ transform: scale(0);
527
+ transition: transform var(--duration-fast) var(--ease-bounce);
528
+ }
529
+ input:checked ~ .cyber-checkbox__box {
530
+ box-shadow: 0 0 10px var(--cyber-cyan-500);
531
+ }
532
+ input:checked ~ .cyber-checkbox__box::before {
533
+ transform: scale(1);
534
+ }
535
+ .cyber-checkbox__label {
536
+ font-family: var(--font-display);
537
+ font-size: var(--text-sm);
538
+ letter-spacing: 0.05em;
539
+ text-transform: uppercase;
540
+ }
541
+ }
542
+ @layer components {
543
+ .cyber-progress {
544
+ --progress-value: 0%;
545
+ --progress-color: var(--cyber-cyan-500);
546
+ position: relative;
547
+ height: 10px;
548
+ border: 1px solid var(--color-border-default);
549
+ overflow: hidden;
550
+ background: var(--color-bg-tertiary);
551
+ }
552
+ .cyber-progress__bar {
553
+ position: relative;
554
+ width: var(--progress-value);
555
+ height: 100%;
556
+ background: linear-gradient(90deg, var(--progress-color), color-mix(in srgb, var(--progress-color) 70%, white));
557
+ box-shadow: 0 0 15px var(--progress-color);
558
+ transition: width var(--duration-slow) var(--ease-cyber);
559
+ }
560
+ .cyber-progress__bar::before {
561
+ content: "";
562
+ position: absolute;
563
+ background: repeating-linear-gradient(-45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.15) 5px, rgba(255, 255, 255, 0.15) 10px);
564
+ animation: progress-stripes 0.5s linear infinite;
565
+ inset: 0;
566
+ }
567
+ .cyber-progress__value {
568
+ position: absolute;
569
+ top: 50%;
570
+ right: var(--space-xs);
571
+ z-index: 1;
572
+ font-family: var(--font-mono);
573
+ font-size: var(--text-xs);
574
+ color: var(--color-text-primary);
575
+ transform: translateY(-50%);
576
+ text-shadow: 0 1px 2px var(--cyber-void-500);
577
+ }
578
+ .cyber-progress--magenta {
579
+ --progress-color: var(--cyber-magenta-500);
580
+ }
581
+ .cyber-progress--yellow {
582
+ --progress-color: var(--cyber-yellow-500);
583
+ }
584
+ .cyber-progress--green {
585
+ --progress-color: var(--cyber-green-500);
586
+ }
587
+ .cyber-progress--sm {
588
+ height: 6px;
589
+ }
590
+ .cyber-progress--sm .cyber-progress__value {
591
+ display: none;
592
+ }
593
+ .cyber-progress--lg {
594
+ height: 16px;
595
+ }
596
+ .cyber-progress--lg .cyber-progress__value {
597
+ font-size: var(--text-sm);
598
+ }
599
+ .cyber-progress--no-animation .cyber-progress__bar::before {
600
+ animation: none;
601
+ }
602
+ .cyber-progress--indeterminate .cyber-progress__bar {
603
+ position: absolute;
604
+ left: 0;
605
+ width: 30%;
606
+ animation: progress-indeterminate 1.5s ease-in-out infinite;
607
+ }
608
+ .cyber-progress--segmented {
609
+ display: flex;
610
+ gap: 2px;
611
+ border: none;
612
+ background: transparent;
613
+ }
614
+ .cyber-progress--segmented .cyber-progress__segment {
615
+ flex: 1;
616
+ height: 100%;
617
+ border: var(--border-thin) solid var(--color-border-default);
618
+ background: var(--color-bg-tertiary);
619
+ transition: background var(--transition-fast);
620
+ }
621
+ .cyber-progress--segmented .cyber-progress__segment--active {
622
+ border-color: var(--progress-color);
623
+ background: var(--progress-color);
624
+ }
625
+ @keyframes progress-stripes {
626
+ from {
627
+ background-position: 0 0;
628
+ }
629
+ to {
630
+ background-position: 20px 0;
631
+ }
632
+ }
633
+ @keyframes progress-indeterminate {
634
+ 0% {
635
+ transform: translateX(-100%);
636
+ }
637
+ 100% {
638
+ transform: translateX(433%);
639
+ }
640
+ }
641
+ .cyber-progress-circle {
642
+ --progress-value: 0;
643
+ --progress-size: 80px;
644
+ --progress-stroke: 6px;
645
+ --progress-color: var(--cyber-cyan-500);
646
+ position: relative;
647
+ width: var(--progress-size);
648
+ height: var(--progress-size);
649
+ }
650
+ .cyber-progress-circle__svg {
651
+ width: 100%;
652
+ height: 100%;
653
+ transform: rotate(-90deg);
654
+ }
655
+ .cyber-progress-circle__track {
656
+ fill: none;
657
+ stroke: var(--color-bg-tertiary);
658
+ stroke-width: var(--progress-stroke);
659
+ }
660
+ .cyber-progress-circle__bar {
661
+ transition: stroke-dashoffset var(--transition-slow) var(--ease-out-expo);
662
+ fill: none;
663
+ filter: drop-shadow(0 0 4px var(--progress-color));
664
+ stroke: var(--progress-color);
665
+ stroke-dasharray: 251.2;
666
+ stroke-dashoffset: calc(251.2 - 251.2 * var(--progress-value) / 100);
667
+ stroke-linecap: round;
668
+ stroke-width: var(--progress-stroke);
669
+ }
670
+ .cyber-progress-circle__value {
671
+ position: absolute;
672
+ top: 50%;
673
+ left: 50%;
674
+ font-family: var(--font-mono);
675
+ font-size: var(--text-sm);
676
+ font-weight: 700;
677
+ color: var(--color-text-primary);
678
+ transform: translate(-50%, -50%);
679
+ }
680
+ .cyber-progress-circle--magenta {
681
+ --progress-color: var(--cyber-magenta-500);
682
+ }
683
+ .cyber-progress-circle--yellow {
684
+ --progress-color: var(--cyber-yellow-500);
685
+ }
686
+ .cyber-progress-circle--green {
687
+ --progress-color: var(--cyber-green-500);
688
+ }
689
+ }
690
+ @layer components {
691
+ .cyber-badge {
692
+ display: inline-flex;
693
+ gap: var(--space-3xs);
694
+ align-items: center;
695
+ padding: var(--space-3xs) var(--space-sm);
696
+ border: var(--border-thin) solid var(--cyber-cyan-500);
697
+ border-radius: var(--radius-full);
698
+ font-family: var(--font-display);
699
+ font-size: var(--text-xs);
700
+ font-weight: 700;
701
+ letter-spacing: 0.05em;
702
+ text-transform: uppercase;
703
+ white-space: nowrap;
704
+ color: var(--cyber-cyan-500);
705
+ background: color-mix(in srgb, var(--cyber-cyan-500) 20%, transparent);
706
+ transition: background var(--transition-fast), box-shadow var(--transition-fast);
707
+ }
708
+ .cyber-badge svg, .cyber-badge__icon {
709
+ flex-shrink: 0;
710
+ width: 0.875em;
711
+ height: 0.875em;
712
+ }
713
+ .cyber-badge--magenta {
714
+ border-color: var(--cyber-magenta-500);
715
+ color: var(--cyber-magenta-500);
716
+ background: color-mix(in srgb, var(--cyber-magenta-500) 20%, transparent);
717
+ }
718
+ .cyber-badge--yellow {
719
+ border-color: var(--cyber-yellow-500);
720
+ color: var(--cyber-yellow-500);
721
+ background: color-mix(in srgb, var(--cyber-yellow-500) 20%, transparent);
722
+ }
723
+ .cyber-badge--green {
724
+ border-color: var(--cyber-green-500);
725
+ color: var(--cyber-green-500);
726
+ background: color-mix(in srgb, var(--cyber-green-500) 20%, transparent);
727
+ }
728
+ .cyber-badge--chrome {
729
+ border-color: var(--cyber-chrome-500);
730
+ color: var(--cyber-chrome-300);
731
+ background: color-mix(in srgb, var(--cyber-chrome-500) 20%, transparent);
732
+ }
733
+ .cyber-badge--filled {
734
+ border-color: var(--cyber-cyan-500);
735
+ color: var(--cyber-void-500);
736
+ background: var(--cyber-cyan-500);
737
+ }
738
+ .cyber-badge--filled.cyber-badge--magenta {
739
+ border-color: var(--cyber-magenta-500);
740
+ background: var(--cyber-magenta-500);
741
+ }
742
+ .cyber-badge--filled.cyber-badge--yellow {
743
+ border-color: var(--cyber-yellow-500);
744
+ background: var(--cyber-yellow-500);
745
+ }
746
+ .cyber-badge--filled.cyber-badge--green {
747
+ border-color: var(--cyber-green-500);
748
+ background: var(--cyber-green-500);
749
+ }
750
+ .cyber-badge--ghost {
751
+ border-color: transparent;
752
+ background: transparent;
753
+ }
754
+ .cyber-badge--ghost:hover {
755
+ background: color-mix(in srgb, currentcolor 10%, transparent);
756
+ }
757
+ .cyber-badge--pulse {
758
+ animation: badge-pulse 2s ease-in-out infinite;
759
+ }
760
+ .cyber-badge--sm {
761
+ padding: 2px var(--space-2xs);
762
+ font-size: 0.625rem;
763
+ }
764
+ .cyber-badge--lg {
765
+ padding: var(--space-2xs) var(--space-sm);
766
+ font-size: var(--text-sm);
767
+ }
768
+ .cyber-badge--counter {
769
+ justify-content: center;
770
+ min-width: 1.5rem;
771
+ height: 1.5rem;
772
+ padding: 0;
773
+ border-radius: 50%;
774
+ }
775
+ .cyber-badge--online {
776
+ border-color: var(--cyber-green-500);
777
+ color: var(--cyber-green-500);
778
+ background: color-mix(in srgb, var(--cyber-green-500) 20%, transparent);
779
+ }
780
+ .cyber-badge--online::before {
781
+ content: "";
782
+ width: 6px;
783
+ height: 6px;
784
+ border-radius: 50%;
785
+ background: var(--cyber-green-500);
786
+ animation: badge-pulse 2s ease-in-out infinite;
787
+ }
788
+ .cyber-badge--offline {
789
+ border-color: var(--cyber-chrome-500);
790
+ color: var(--cyber-chrome-500);
791
+ background: color-mix(in srgb, var(--cyber-chrome-500) 20%, transparent);
792
+ }
793
+ .cyber-badge--offline::before {
794
+ content: "";
795
+ width: 6px;
796
+ height: 6px;
797
+ border-radius: 50%;
798
+ background: var(--cyber-chrome-500);
799
+ }
800
+ .cyber-badge--busy {
801
+ border-color: var(--cyber-magenta-500);
802
+ color: var(--cyber-magenta-500);
803
+ background: color-mix(in srgb, var(--cyber-magenta-500) 20%, transparent);
804
+ }
805
+ .cyber-badge--busy::before {
806
+ content: "";
807
+ width: 6px;
808
+ height: 6px;
809
+ border-radius: 50%;
810
+ background: var(--cyber-magenta-500);
811
+ animation: badge-pulse 1s ease-in-out infinite;
812
+ }
813
+ @keyframes badge-pulse {
814
+ 0%, 100% {
815
+ box-shadow: 0 0 0 0 currentcolor;
816
+ }
817
+ 50% {
818
+ box-shadow: 0 0 0 6px transparent;
819
+ }
820
+ }
821
+ .cyber-badge-group {
822
+ display: inline-flex;
823
+ flex-wrap: wrap;
824
+ gap: var(--space-2xs);
825
+ }
826
+ }
827
+ @layer components {
828
+ .cyber-alert {
829
+ --alert-color: var(--cyber-cyan-500);
830
+ position: relative;
831
+ padding: var(--space-md);
832
+ padding-left: var(--space-xl);
833
+ border: var(--border-thin) solid var(--alert-color);
834
+ border-left: 4px solid var(--alert-color);
835
+ background: color-mix(in srgb, var(--alert-color) 10%, var(--color-bg-secondary));
836
+ }
837
+ .cyber-alert::before {
838
+ content: "!";
839
+ position: absolute;
840
+ top: 50%;
841
+ left: var(--space-sm);
842
+ display: flex;
843
+ align-items: center;
844
+ justify-content: center;
845
+ width: 24px;
846
+ height: 24px;
847
+ font-family: var(--font-display);
848
+ font-size: var(--text-sm);
849
+ font-weight: 700;
850
+ line-height: 1;
851
+ color: var(--cyber-void-500);
852
+ background: var(--alert-color);
853
+ transform: translateY(-50%);
854
+ }
855
+ .cyber-alert__title {
856
+ margin-bottom: var(--space-2xs);
857
+ font-family: var(--font-display);
858
+ font-size: var(--text-sm);
859
+ font-weight: 700;
860
+ letter-spacing: 0.05em;
861
+ text-transform: uppercase;
862
+ color: var(--alert-color);
863
+ }
864
+ .cyber-alert--warning {
865
+ --alert-color: var(--cyber-yellow-500);
866
+ }
867
+ .cyber-alert--warning::before {
868
+ content: "⚠";
869
+ }
870
+ .cyber-alert--error {
871
+ --alert-color: var(--cyber-magenta-500);
872
+ }
873
+ .cyber-alert--error::before {
874
+ content: "✕";
875
+ }
876
+ .cyber-alert--success {
877
+ --alert-color: var(--cyber-green-500);
878
+ }
879
+ .cyber-alert--success::before {
880
+ content: "✓";
881
+ }
882
+ }
883
+ @layer components {
884
+ .cyber-table {
885
+ width: 100%;
886
+ font-family: var(--font-mono);
887
+ font-size: var(--text-sm);
888
+ border-collapse: collapse;
889
+ }
890
+ .cyber-table thead {
891
+ background: var(--color-bg-tertiary);
892
+ }
893
+ .cyber-table thead th {
894
+ padding: var(--space-sm);
895
+ border-bottom: 2px solid var(--cyber-cyan-500);
896
+ font-family: var(--font-display);
897
+ font-weight: 700;
898
+ letter-spacing: 0.05em;
899
+ text-align: left;
900
+ text-transform: uppercase;
901
+ color: var(--cyber-cyan-500);
902
+ }
903
+ .cyber-table thead th[data-sortable] {
904
+ cursor: pointer;
905
+ user-select: none;
906
+ }
907
+ .cyber-table thead th[data-sortable]::after {
908
+ content: "";
909
+ display: inline-block;
910
+ width: 0;
911
+ height: 0;
912
+ margin-left: var(--space-xs);
913
+ border-top: 4px solid currentcolor;
914
+ border-right: 4px solid transparent;
915
+ border-left: 4px solid transparent;
916
+ opacity: 30%;
917
+ transition: opacity var(--transition-fast);
918
+ vertical-align: middle;
919
+ }
920
+ .cyber-table thead th[data-sortable]:hover::after {
921
+ opacity: 70%;
922
+ }
923
+ .cyber-table thead th[data-sortable][data-sort=asc]::after {
924
+ border-top: none;
925
+ border-bottom: 4px solid currentcolor;
926
+ opacity: 100%;
927
+ }
928
+ .cyber-table thead th[data-sortable][data-sort=desc]::after {
929
+ opacity: 100%;
930
+ }
931
+ .cyber-table tbody tr {
932
+ transition: background var(--duration-fast);
933
+ }
934
+ .cyber-table tbody tr:hover {
935
+ background: color-mix(in srgb, var(--cyber-cyan-500) 5%, transparent);
936
+ }
937
+ .cyber-table tbody td {
938
+ padding: var(--space-sm);
939
+ border-bottom: 1px solid var(--color-border-default);
940
+ }
941
+ .cyber-table tfoot {
942
+ background: var(--color-bg-tertiary);
943
+ }
944
+ .cyber-table tfoot td {
945
+ padding: var(--space-sm);
946
+ border-top: 1px solid var(--color-border-default);
947
+ font-weight: 600;
948
+ color: var(--color-text-primary);
949
+ }
950
+ .cyber-table--striped tbody tr:nth-child(even) {
951
+ background: color-mix(in srgb, var(--cyber-void-500) 50%, transparent);
952
+ }
953
+ .cyber-table--striped tbody tr:nth-child(even):hover {
954
+ background: color-mix(in srgb, var(--cyber-cyan-500) 8%, transparent);
955
+ }
956
+ .cyber-table--bordered th,
957
+ .cyber-table--bordered td {
958
+ border: var(--border-thin) solid var(--color-border-default);
959
+ }
960
+ .cyber-table--bordered thead th {
961
+ border-bottom-color: var(--cyber-cyan-500);
962
+ border-bottom-width: var(--border-medium);
963
+ }
964
+ .cyber-table--compact {
965
+ font-size: var(--text-xs);
966
+ }
967
+ .cyber-table--compact thead th,
968
+ .cyber-table--compact tbody td,
969
+ .cyber-table--compact tfoot td {
970
+ padding: var(--space-xs);
971
+ }
972
+ .cyber-table-wrapper {
973
+ overflow-x: auto;
974
+ -webkit-overflow-scrolling: touch;
975
+ }
976
+ .cyber-table-wrapper::before, .cyber-table-wrapper::after {
977
+ content: "";
978
+ position: absolute;
979
+ top: 0;
980
+ bottom: 0;
981
+ width: 20px;
982
+ opacity: 0%;
983
+ transition: opacity var(--transition-fast);
984
+ pointer-events: none;
985
+ }
986
+ .cyber-table-wrapper::before {
987
+ left: 0;
988
+ background: linear-gradient(90deg, var(--color-bg-primary), transparent);
989
+ }
990
+ .cyber-table-wrapper::after {
991
+ right: 0;
992
+ background: linear-gradient(-90deg, var(--color-bg-primary), transparent);
993
+ }
994
+ .cyber-table-wrapper[data-scroll-left]::before {
995
+ opacity: 100%;
996
+ }
997
+ .cyber-table-wrapper[data-scroll-right]::after {
998
+ opacity: 100%;
999
+ }
1000
+ .cyber-table .cell-number {
1001
+ font-family: var(--font-mono);
1002
+ text-align: right;
1003
+ }
1004
+ .cyber-table .cell-status {
1005
+ display: inline-flex;
1006
+ gap: var(--space-2xs);
1007
+ align-items: center;
1008
+ }
1009
+ .cyber-table .cell-status::before {
1010
+ content: "";
1011
+ width: 8px;
1012
+ height: 8px;
1013
+ border-radius: 50%;
1014
+ background: var(--cyber-chrome-500);
1015
+ }
1016
+ .cyber-table .cell-status--active::before {
1017
+ background: var(--cyber-green-500);
1018
+ box-shadow: 0 0 6px var(--cyber-green-500);
1019
+ }
1020
+ .cyber-table .cell-status--inactive::before {
1021
+ background: var(--cyber-chrome-600);
1022
+ }
1023
+ .cyber-table .cell-status--pending::before {
1024
+ background: var(--cyber-yellow-500);
1025
+ animation: status-pulse 1.5s ease-in-out infinite;
1026
+ }
1027
+ .cyber-table .cell-status--error::before {
1028
+ background: var(--cyber-magenta-500);
1029
+ }
1030
+ .cyber-table .cell-actions {
1031
+ display: flex;
1032
+ gap: var(--space-2xs);
1033
+ justify-content: flex-end;
1034
+ }
1035
+ .cyber-table tr.row-highlight {
1036
+ border-left: var(--border-thick) solid var(--cyber-cyan-500);
1037
+ background: color-mix(in srgb, var(--cyber-cyan-500) 10%, transparent);
1038
+ }
1039
+ .cyber-table tr.row-selected {
1040
+ background: color-mix(in srgb, var(--cyber-cyan-500) 15%, transparent);
1041
+ }
1042
+ @keyframes status-pulse {
1043
+ 0%, 100% {
1044
+ opacity: 100%;
1045
+ }
1046
+ 50% {
1047
+ opacity: 40%;
1048
+ }
1049
+ }
1050
+ }
1051
+ @layer components {
1052
+ .cyber-nav {
1053
+ position: sticky;
1054
+ top: 0;
1055
+ z-index: 100;
1056
+ display: flex;
1057
+ gap: var(--space-md);
1058
+ align-items: center;
1059
+ padding: var(--space-sm) var(--space-lg);
1060
+ border-bottom: 1px solid var(--color-border-default);
1061
+ background: var(--color-bg-secondary);
1062
+ backdrop-filter: blur(10px);
1063
+ }
1064
+ .cyber-nav__brand {
1065
+ display: flex;
1066
+ gap: var(--space-xs);
1067
+ align-items: center;
1068
+ font-family: Orbitron, var(--font-display);
1069
+ font-size: var(--text-xl);
1070
+ font-weight: 800;
1071
+ letter-spacing: 0.15em;
1072
+ text-decoration: none;
1073
+ text-transform: uppercase;
1074
+ color: var(--cyber-cyan-500);
1075
+ text-shadow: var(--glow-text-cyan);
1076
+ }
1077
+ .cyber-nav__brand::before {
1078
+ content: "//";
1079
+ color: var(--cyber-magenta-500);
1080
+ }
1081
+ .cyber-nav__links {
1082
+ display: flex;
1083
+ gap: var(--space-2xs);
1084
+ margin-left: auto;
1085
+ list-style: none;
1086
+ }
1087
+ .cyber-nav__link {
1088
+ position: relative;
1089
+ padding: var(--space-xs) var(--space-sm);
1090
+ overflow: hidden;
1091
+ font-family: var(--font-display);
1092
+ font-size: var(--text-sm);
1093
+ font-weight: 600;
1094
+ letter-spacing: 0.05em;
1095
+ text-decoration: none;
1096
+ text-transform: uppercase;
1097
+ color: var(--color-text-secondary);
1098
+ transition: color var(--duration-fast);
1099
+ }
1100
+ .cyber-nav__link::before {
1101
+ content: "";
1102
+ position: absolute;
1103
+ bottom: 0;
1104
+ left: 0;
1105
+ width: 100%;
1106
+ height: 2px;
1107
+ background: var(--cyber-cyan-500);
1108
+ transform: translateX(-101%);
1109
+ transition: transform var(--duration-normal) var(--ease-cyber);
1110
+ }
1111
+ .cyber-nav__link:hover, .cyber-nav__link--active {
1112
+ color: var(--cyber-cyan-500);
1113
+ }
1114
+ .cyber-nav__link:hover::before, .cyber-nav__link--active::before {
1115
+ transform: translateX(0);
1116
+ }
1117
+ .cyber-status {
1118
+ display: flex;
1119
+ gap: var(--space-2xs);
1120
+ align-items: center;
1121
+ padding: var(--space-3xs) var(--space-xs);
1122
+ border: 1px solid var(--cyber-green-500);
1123
+ font-family: var(--font-mono);
1124
+ font-size: var(--text-xs);
1125
+ color: var(--cyber-green-500);
1126
+ background: color-mix(in srgb, var(--cyber-green-500) 15%, transparent);
1127
+ }
1128
+ .cyber-status__dot {
1129
+ width: 8px;
1130
+ height: 8px;
1131
+ border-radius: 50%;
1132
+ background: var(--cyber-green-500);
1133
+ animation: pulse-glow 2s infinite;
1134
+ }
1135
+ @keyframes pulse-glow {
1136
+ 0%, 100% {
1137
+ box-shadow: 0 0 0 0 var(--cyber-green-500);
1138
+ }
1139
+ 50% {
1140
+ box-shadow: 0 0 10px 3px var(--cyber-green-500);
1141
+ }
1142
+ }
1143
+ }
1144
+ @layer components {
1145
+ .cyber-tabs {
1146
+ display: flex;
1147
+ flex-wrap: wrap;
1148
+ gap: 2px;
1149
+ padding: 2px;
1150
+ background: var(--color-border-default);
1151
+ }
1152
+ .cyber-tabs__list {
1153
+ display: flex;
1154
+ flex-wrap: wrap;
1155
+ gap: 2px;
1156
+ margin: 0;
1157
+ padding: 0;
1158
+ list-style: none;
1159
+ }
1160
+ .cyber-tabs--scrollable {
1161
+ scrollbar-width: thin;
1162
+ }
1163
+ .cyber-tabs--scrollable::-webkit-scrollbar {
1164
+ height: 4px;
1165
+ }
1166
+ .cyber-tabs--scrollable::-webkit-scrollbar-track {
1167
+ background: var(--color-bg-secondary);
1168
+ }
1169
+ .cyber-tabs--scrollable::-webkit-scrollbar-thumb {
1170
+ border-radius: 2px;
1171
+ background: var(--cyber-chrome-600);
1172
+ }
1173
+ .cyber-tabs--scrollable {
1174
+ flex-wrap: nowrap;
1175
+ overflow-x: auto;
1176
+ -webkit-overflow-scrolling: touch;
1177
+ }
1178
+ .cyber-tabs--scrollable .cyber-tabs__list {
1179
+ flex-wrap: nowrap;
1180
+ }
1181
+ .cyber-tabs--scrollable .cyber-tab {
1182
+ flex: none;
1183
+ white-space: nowrap;
1184
+ }
1185
+ @media (width <= 768px) {
1186
+ .cyber-tabs {
1187
+ scrollbar-width: thin;
1188
+ }
1189
+ .cyber-tabs::-webkit-scrollbar {
1190
+ height: 4px;
1191
+ }
1192
+ .cyber-tabs::-webkit-scrollbar-track {
1193
+ background: var(--color-bg-secondary);
1194
+ }
1195
+ .cyber-tabs::-webkit-scrollbar-thumb {
1196
+ border-radius: 2px;
1197
+ background: var(--cyber-chrome-600);
1198
+ }
1199
+ .cyber-tabs {
1200
+ flex-wrap: nowrap;
1201
+ overflow-x: auto;
1202
+ -webkit-overflow-scrolling: touch;
1203
+ }
1204
+ .cyber-tabs .cyber-tab {
1205
+ flex: none;
1206
+ white-space: nowrap;
1207
+ }
1208
+ }
1209
+ .cyber-tabs__panels {
1210
+ padding: var(--space-md) 0;
1211
+ }
1212
+ .cyber-tabs__panel {
1213
+ display: none;
1214
+ animation: tab-fade-in var(--transition-base) ease-out;
1215
+ }
1216
+ .cyber-tabs__panel--active {
1217
+ display: block;
1218
+ }
1219
+ .cyber-tabs--vertical {
1220
+ flex-direction: column;
1221
+ gap: var(--space-md);
1222
+ padding: 0;
1223
+ background: transparent;
1224
+ }
1225
+ .cyber-tabs--vertical .cyber-tabs__list {
1226
+ flex-direction: column;
1227
+ gap: 2px;
1228
+ padding: 2px;
1229
+ background: var(--color-border-default);
1230
+ }
1231
+ .cyber-tabs--vertical .cyber-tab {
1232
+ flex: none;
1233
+ }
1234
+ .cyber-tabs--vertical .cyber-tab--active::after {
1235
+ width: 3px;
1236
+ height: 100%;
1237
+ inset: 0 0 0 auto;
1238
+ }
1239
+ .cyber-tabs--vertical .cyber-tabs__panels {
1240
+ flex: 1;
1241
+ padding: 0;
1242
+ }
1243
+ .cyber-tabs--pills {
1244
+ gap: var(--space-xs);
1245
+ padding: 0;
1246
+ background: transparent;
1247
+ }
1248
+ .cyber-tabs--pills .cyber-tabs__list {
1249
+ gap: var(--space-xs);
1250
+ background: transparent;
1251
+ }
1252
+ .cyber-tabs--pills .cyber-tab {
1253
+ flex: none;
1254
+ border: var(--border-thin) solid var(--color-border-default);
1255
+ clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 8px 100%, 0 calc(100% - 8px));
1256
+ }
1257
+ .cyber-tabs--pills .cyber-tab--active {
1258
+ border-color: var(--cyber-cyan-500);
1259
+ background: color-mix(in srgb, var(--cyber-cyan-500) 20%, transparent);
1260
+ }
1261
+ .cyber-tabs--pills .cyber-tab--active::after {
1262
+ display: none;
1263
+ }
1264
+ .cyber-tabs--fullwidth .cyber-tabs__list {
1265
+ width: 100%;
1266
+ }
1267
+ .cyber-tabs--fullwidth .cyber-tab {
1268
+ flex: 1 1 auto;
1269
+ justify-content: center;
1270
+ min-width: fit-content;
1271
+ }
1272
+ @media (width <= 768px) {
1273
+ .cyber-tabs--fullwidth .cyber-tab {
1274
+ flex: none;
1275
+ }
1276
+ }
1277
+ .cyber-tab {
1278
+ position: relative;
1279
+ display: inline-flex;
1280
+ flex: none;
1281
+ gap: var(--space-xs);
1282
+ align-items: center;
1283
+ justify-content: center;
1284
+ padding: var(--space-sm) var(--space-md);
1285
+ border: none;
1286
+ font-family: var(--font-display);
1287
+ font-size: var(--text-sm);
1288
+ font-weight: 700;
1289
+ letter-spacing: 0.05em;
1290
+ text-decoration: none;
1291
+ text-transform: uppercase;
1292
+ white-space: nowrap;
1293
+ color: var(--color-text-secondary);
1294
+ background: var(--color-bg-secondary);
1295
+ transition: color var(--duration-fast), background-color var(--duration-fast);
1296
+ cursor: pointer;
1297
+ }
1298
+ .cyber-tab:hover {
1299
+ color: var(--color-text-primary);
1300
+ background: var(--color-bg-tertiary);
1301
+ }
1302
+ .cyber-tab:focus-visible {
1303
+ outline: 2px solid var(--cyber-cyan-500);
1304
+ outline-offset: -2px;
1305
+ }
1306
+ @media (hover: none) {
1307
+ .cyber-tab:hover {
1308
+ color: var(--color-text-secondary);
1309
+ background: var(--color-bg-secondary);
1310
+ }
1311
+ .cyber-tab:active {
1312
+ color: var(--color-text-primary);
1313
+ background: var(--color-bg-tertiary);
1314
+ }
1315
+ .cyber-tab--active:hover {
1316
+ color: var(--cyber-cyan-500);
1317
+ background: var(--color-bg-tertiary);
1318
+ }
1319
+ }
1320
+ .cyber-tab--active {
1321
+ color: var(--cyber-cyan-500);
1322
+ background: var(--color-bg-tertiary);
1323
+ }
1324
+ .cyber-tab--active::after {
1325
+ content: "";
1326
+ position: absolute;
1327
+ right: 0;
1328
+ bottom: 0;
1329
+ left: 0;
1330
+ height: 3px;
1331
+ background: var(--cyber-cyan-500);
1332
+ box-shadow: 0 0 10px var(--cyber-cyan-500);
1333
+ }
1334
+ .cyber-tab:disabled, .cyber-tab--disabled {
1335
+ opacity: 50%;
1336
+ cursor: not-allowed;
1337
+ pointer-events: none;
1338
+ }
1339
+ .cyber-tab svg, .cyber-tab__icon {
1340
+ flex-shrink: 0;
1341
+ width: 1em;
1342
+ height: 1em;
1343
+ }
1344
+ .cyber-tab__badge {
1345
+ padding: 2px 6px;
1346
+ border: var(--border-thin) solid var(--cyber-cyan-500);
1347
+ font-family: var(--font-mono);
1348
+ font-size: var(--text-xs);
1349
+ color: var(--cyber-cyan-500);
1350
+ background: color-mix(in srgb, var(--cyber-cyan-500) 20%, transparent);
1351
+ }
1352
+ .cyber-tab--magenta.cyber-tab--active {
1353
+ color: var(--cyber-magenta-500);
1354
+ }
1355
+ .cyber-tab--magenta.cyber-tab--active::after {
1356
+ background: var(--cyber-magenta-500);
1357
+ box-shadow: 0 0 10px var(--cyber-magenta-500);
1358
+ }
1359
+ .cyber-tab--magenta .cyber-tab__badge {
1360
+ border-color: var(--cyber-magenta-500);
1361
+ color: var(--cyber-magenta-500);
1362
+ background: color-mix(in srgb, var(--cyber-magenta-500) 20%, transparent);
1363
+ }
1364
+ .cyber-tab--yellow.cyber-tab--active {
1365
+ color: var(--cyber-yellow-500);
1366
+ }
1367
+ .cyber-tab--yellow.cyber-tab--active::after {
1368
+ background: var(--cyber-yellow-500);
1369
+ box-shadow: 0 0 10px var(--cyber-yellow-500);
1370
+ }
1371
+ .cyber-tab--green.cyber-tab--active {
1372
+ color: var(--cyber-green-500);
1373
+ }
1374
+ .cyber-tab--green.cyber-tab--active::after {
1375
+ background: var(--cyber-green-500);
1376
+ box-shadow: 0 0 10px var(--cyber-green-500);
1377
+ }
1378
+ @keyframes tab-fade-in {
1379
+ from {
1380
+ opacity: 0%;
1381
+ transform: translateY(4px);
1382
+ }
1383
+ to {
1384
+ opacity: 100%;
1385
+ transform: translateY(0);
1386
+ }
1387
+ }
1388
+ }
1389
+ @layer components {
1390
+ .cyber-modal {
1391
+ --modal-accent: var(--cyber-cyan-500);
1392
+ position: fixed;
1393
+ z-index: var(--z-modal, 9000);
1394
+ display: flex;
1395
+ align-items: center;
1396
+ justify-content: center;
1397
+ padding: var(--space-md);
1398
+ background: color-mix(in srgb, var(--cyber-void-500) 80%, transparent);
1399
+ opacity: 0%;
1400
+ visibility: hidden;
1401
+ transition: opacity var(--transition-base), visibility var(--transition-base);
1402
+ -webkit-backdrop-filter: blur(8px);
1403
+ backdrop-filter: blur(8px);
1404
+ inset: 0;
1405
+ }
1406
+ .cyber-modal--open {
1407
+ opacity: 100%;
1408
+ visibility: visible;
1409
+ }
1410
+ .cyber-modal--open .cyber-modal__dialog {
1411
+ opacity: 100%;
1412
+ transform: translateY(0) scale(1);
1413
+ }
1414
+ .cyber-modal__dialog {
1415
+ position: relative;
1416
+ display: flex;
1417
+ flex-direction: column;
1418
+ width: 100%;
1419
+ max-width: 500px;
1420
+ max-height: calc(100vh - var(--space-xl));
1421
+ border: var(--border-thin) solid var(--color-border-default);
1422
+ background: var(--color-bg-secondary);
1423
+ box-shadow: 0 25px 50px -12px color-mix(in srgb, var(--cyber-void-900) 80%, transparent), 0 0 20px color-mix(in srgb, var(--modal-accent) 30%, transparent), 0 0 40px color-mix(in srgb, var(--modal-accent) 15%, transparent);
1424
+ opacity: 0%;
1425
+ transform: translateY(-20px) scale(0.95);
1426
+ transition: opacity var(--transition-base) var(--ease-out-expo), transform var(--transition-base) var(--ease-out-expo);
1427
+ clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 20px, 100% 100%, 20px 100%, 0 calc(100% - 20px));
1428
+ }
1429
+ .cyber-modal__dialog::before, .cyber-modal__dialog::after {
1430
+ content: "";
1431
+ position: absolute;
1432
+ z-index: 1;
1433
+ width: 30px;
1434
+ height: 30px;
1435
+ border: 2px solid var(--modal-accent);
1436
+ pointer-events: none;
1437
+ }
1438
+ .cyber-modal__dialog::before {
1439
+ top: -1px;
1440
+ left: -1px;
1441
+ border-right: none;
1442
+ border-bottom: none;
1443
+ }
1444
+ .cyber-modal__dialog::after {
1445
+ right: -1px;
1446
+ bottom: -1px;
1447
+ border-top: none;
1448
+ border-left: none;
1449
+ }
1450
+ .cyber-modal__header {
1451
+ display: flex;
1452
+ gap: var(--space-sm);
1453
+ align-items: center;
1454
+ padding: var(--space-md);
1455
+ border-bottom: var(--border-thin) solid var(--color-border-default);
1456
+ }
1457
+ .cyber-modal__title {
1458
+ flex: 1;
1459
+ margin: 0;
1460
+ font-family: var(--font-display);
1461
+ font-size: var(--text-lg);
1462
+ font-weight: 700;
1463
+ letter-spacing: 0.05em;
1464
+ text-transform: uppercase;
1465
+ color: var(--modal-accent);
1466
+ text-shadow: 0 0 10px color-mix(in srgb, var(--modal-accent) 60%, transparent);
1467
+ }
1468
+ .cyber-modal__close {
1469
+ display: flex;
1470
+ align-items: center;
1471
+ justify-content: center;
1472
+ width: 2rem;
1473
+ height: 2rem;
1474
+ padding: 0;
1475
+ border: var(--border-thin) solid var(--color-border-default);
1476
+ color: var(--color-text-secondary);
1477
+ background: transparent;
1478
+ transition: color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);
1479
+ cursor: pointer;
1480
+ }
1481
+ .cyber-modal__close:hover {
1482
+ border-color: var(--cyber-magenta-500);
1483
+ color: var(--cyber-magenta-500);
1484
+ background: color-mix(in srgb, var(--cyber-magenta-500) 10%, transparent);
1485
+ }
1486
+ .cyber-modal__close:focus-visible {
1487
+ outline: 2px solid var(--cyber-cyan-500);
1488
+ outline-offset: 2px;
1489
+ }
1490
+ .cyber-modal__close svg {
1491
+ width: 1rem;
1492
+ height: 1rem;
1493
+ }
1494
+ .cyber-modal__body {
1495
+ flex: 1;
1496
+ padding: var(--space-md);
1497
+ overflow-y: auto;
1498
+ line-height: var(--leading-relaxed);
1499
+ color: var(--color-text-secondary);
1500
+ }
1501
+ .cyber-modal__footer {
1502
+ display: flex;
1503
+ gap: var(--space-sm);
1504
+ align-items: center;
1505
+ justify-content: flex-end;
1506
+ padding: var(--space-md);
1507
+ border-top: var(--border-thin) solid var(--color-border-default);
1508
+ }
1509
+ .cyber-modal--sm .cyber-modal__dialog {
1510
+ max-width: 360px;
1511
+ }
1512
+ .cyber-modal--lg .cyber-modal__dialog {
1513
+ max-width: 720px;
1514
+ }
1515
+ .cyber-modal--xl .cyber-modal__dialog {
1516
+ max-width: 960px;
1517
+ }
1518
+ .cyber-modal--fullscreen .cyber-modal__dialog {
1519
+ width: calc(100% - var(--space-lg));
1520
+ max-width: none;
1521
+ height: calc(100% - var(--space-lg));
1522
+ max-height: none;
1523
+ }
1524
+ .cyber-modal--magenta {
1525
+ --modal-accent: var(--cyber-magenta-500);
1526
+ }
1527
+ .cyber-modal--yellow {
1528
+ --modal-accent: var(--cyber-yellow-500);
1529
+ }
1530
+ .cyber-modal--green {
1531
+ --modal-accent: var(--cyber-green-500);
1532
+ }
1533
+ .cyber-modal--slide-up .cyber-modal__dialog {
1534
+ transform: translateY(40px) scale(1);
1535
+ }
1536
+ .cyber-modal--slide-up.cyber-modal--open .cyber-modal__dialog {
1537
+ transform: translateY(0) scale(1);
1538
+ }
1539
+ .cyber-modal--zoom .cyber-modal__dialog {
1540
+ transform: scale(0.8);
1541
+ }
1542
+ .cyber-modal--zoom.cyber-modal--open .cyber-modal__dialog {
1543
+ transform: scale(1);
1544
+ }
1545
+ .cyber-modal-confirm {
1546
+ text-align: center;
1547
+ }
1548
+ .cyber-modal-confirm .cyber-modal__body {
1549
+ padding: var(--space-lg) var(--space-md);
1550
+ }
1551
+ .cyber-modal-confirm__icon {
1552
+ display: flex;
1553
+ align-items: center;
1554
+ justify-content: center;
1555
+ width: 4rem;
1556
+ height: 4rem;
1557
+ margin: 0 auto var(--space-md);
1558
+ border: var(--border-medium) solid var(--cyber-cyan-500);
1559
+ color: var(--cyber-cyan-500);
1560
+ background: color-mix(in srgb, var(--cyber-cyan-500) 15%, transparent);
1561
+ box-shadow: 0 0 15px color-mix(in srgb, var(--cyber-cyan-500) 40%, transparent);
1562
+ }
1563
+ .cyber-modal-confirm__icon svg {
1564
+ width: 2rem;
1565
+ height: 2rem;
1566
+ }
1567
+ .cyber-modal-confirm__icon--warning {
1568
+ border-color: var(--cyber-yellow-500);
1569
+ color: var(--cyber-yellow-500);
1570
+ background: color-mix(in srgb, var(--cyber-yellow-500) 15%, transparent);
1571
+ box-shadow: 0 0 15px color-mix(in srgb, var(--cyber-yellow-500) 40%, transparent);
1572
+ }
1573
+ .cyber-modal-confirm__icon--error {
1574
+ border-color: var(--cyber-magenta-500);
1575
+ color: var(--cyber-magenta-500);
1576
+ background: color-mix(in srgb, var(--cyber-magenta-500) 15%, transparent);
1577
+ box-shadow: 0 0 15px color-mix(in srgb, var(--cyber-magenta-500) 40%, transparent);
1578
+ }
1579
+ .cyber-modal-confirm__icon--success {
1580
+ border-color: var(--cyber-green-500);
1581
+ color: var(--cyber-green-500);
1582
+ background: color-mix(in srgb, var(--cyber-green-500) 15%, transparent);
1583
+ box-shadow: 0 0 15px color-mix(in srgb, var(--cyber-green-500) 40%, transparent);
1584
+ }
1585
+ .cyber-modal-confirm__title {
1586
+ margin: 0 0 var(--space-xs);
1587
+ font-family: var(--font-display);
1588
+ font-size: var(--text-xl);
1589
+ font-weight: 700;
1590
+ letter-spacing: 0.05em;
1591
+ text-transform: uppercase;
1592
+ color: var(--color-text-primary);
1593
+ }
1594
+ .cyber-modal-confirm__message {
1595
+ margin: 0;
1596
+ color: var(--color-text-secondary);
1597
+ }
1598
+ @media (prefers-reduced-motion: reduce) {
1599
+ .cyber-modal {
1600
+ transition: none;
1601
+ }
1602
+ .cyber-modal__dialog {
1603
+ transition: none;
1604
+ }
1605
+ }
1606
+ }
1607
+ @layer components {
1608
+ .cyber-dropdown {
1609
+ position: relative;
1610
+ display: inline-block;
1611
+ }
1612
+ .cyber-dropdown__trigger {
1613
+ display: inline-flex;
1614
+ gap: var(--space-xs);
1615
+ align-items: center;
1616
+ padding: var(--space-xs) var(--space-sm);
1617
+ border: var(--border-thin) solid var(--color-border-default);
1618
+ border-radius: var(--radius-sm);
1619
+ font-family: var(--font-display);
1620
+ font-size: var(--text-sm);
1621
+ font-weight: 600;
1622
+ letter-spacing: 0.05em;
1623
+ text-transform: uppercase;
1624
+ color: var(--color-text-primary);
1625
+ background: var(--color-bg-tertiary);
1626
+ transition: color var(--duration-fast), background-color var(--duration-fast), border-color var(--duration-fast);
1627
+ cursor: pointer;
1628
+ }
1629
+ .cyber-dropdown__trigger:hover {
1630
+ border-color: var(--cyber-cyan-500);
1631
+ background: var(--color-bg-elevated);
1632
+ }
1633
+ .cyber-dropdown__trigger:focus-visible {
1634
+ outline: 2px solid var(--cyber-cyan-500);
1635
+ outline-offset: 2px;
1636
+ }
1637
+ .cyber-dropdown__trigger::after {
1638
+ content: "";
1639
+ width: 0;
1640
+ height: 0;
1641
+ border-top: 5px solid currentcolor;
1642
+ border-right: 4px solid transparent;
1643
+ border-left: 4px solid transparent;
1644
+ transition: transform var(--duration-fast);
1645
+ }
1646
+ .cyber-dropdown__menu {
1647
+ position: absolute;
1648
+ top: 100%;
1649
+ left: 0;
1650
+ z-index: 1050;
1651
+ min-width: 180px;
1652
+ margin: var(--space-2xs) 0 0;
1653
+ padding: var(--space-2xs) 0;
1654
+ padding-left: 0;
1655
+ border: var(--border-thin) solid var(--color-border-default);
1656
+ border-left: 3px solid var(--cyber-cyan-500);
1657
+ border-radius: var(--radius-sm);
1658
+ background: var(--color-bg-secondary);
1659
+ box-shadow: 0 10px 25px color-mix(in srgb, var(--cyber-void-900) 60%, transparent), 0 0 15px color-mix(in srgb, var(--cyber-cyan-500) 15%, transparent);
1660
+ opacity: 0%;
1661
+ visibility: hidden;
1662
+ transform: translateY(-10px);
1663
+ transition: opacity var(--duration-fast), visibility var(--duration-fast), transform var(--duration-fast);
1664
+ list-style: none;
1665
+ list-style-type: none;
1666
+ }
1667
+ .cyber-dropdown__menu > li {
1668
+ margin: 0;
1669
+ padding: 0;
1670
+ list-style: none;
1671
+ list-style-type: none;
1672
+ }
1673
+ .cyber-dropdown__item {
1674
+ display: block;
1675
+ width: 100%;
1676
+ padding: var(--space-xs) var(--space-sm);
1677
+ border: none;
1678
+ font-family: var(--font-mono);
1679
+ font-size: var(--text-sm);
1680
+ text-align: left;
1681
+ color: var(--color-text-secondary);
1682
+ background: transparent;
1683
+ transition: color var(--duration-fast), background-color var(--duration-fast);
1684
+ cursor: pointer;
1685
+ }
1686
+ .cyber-dropdown__item:hover {
1687
+ color: var(--cyber-cyan-500);
1688
+ background: color-mix(in srgb, var(--cyber-cyan-500) 10%, transparent);
1689
+ }
1690
+ .cyber-dropdown__item:focus-visible {
1691
+ color: var(--cyber-cyan-500);
1692
+ background: color-mix(in srgb, var(--cyber-cyan-500) 15%, transparent);
1693
+ outline: none;
1694
+ }
1695
+ .cyber-dropdown__item--active {
1696
+ color: var(--cyber-cyan-500);
1697
+ }
1698
+ .cyber-dropdown__item--active::before {
1699
+ content: "> ";
1700
+ }
1701
+ .cyber-dropdown__item--disabled {
1702
+ opacity: 50%;
1703
+ cursor: not-allowed;
1704
+ pointer-events: none;
1705
+ }
1706
+ .cyber-dropdown__divider {
1707
+ height: 1px;
1708
+ margin: var(--space-2xs) 0;
1709
+ background: var(--color-border-default);
1710
+ }
1711
+ .cyber-dropdown--open .cyber-dropdown__trigger::after {
1712
+ transform: rotate(180deg);
1713
+ }
1714
+ .cyber-dropdown--open .cyber-dropdown__menu {
1715
+ opacity: 100%;
1716
+ visibility: visible;
1717
+ transform: translateY(0);
1718
+ }
1719
+ .cyber-dropdown--css-only:focus-within .cyber-dropdown__trigger::after {
1720
+ transform: rotate(180deg);
1721
+ }
1722
+ .cyber-dropdown--css-only:focus-within .cyber-dropdown__menu {
1723
+ opacity: 100%;
1724
+ visibility: visible;
1725
+ transform: translateY(0);
1726
+ }
1727
+ .cyber-dropdown--right .cyber-dropdown__menu {
1728
+ right: 0;
1729
+ left: auto;
1730
+ border-right: 3px solid var(--cyber-cyan-500);
1731
+ border-left: var(--border-thin) solid var(--color-border-default);
1732
+ }
1733
+ .cyber-dropdown--right.cyber-dropdown--magenta .cyber-dropdown__menu {
1734
+ border-right-color: var(--cyber-magenta-500);
1735
+ }
1736
+ .cyber-dropdown--up .cyber-dropdown__menu {
1737
+ top: auto;
1738
+ bottom: 100%;
1739
+ margin-top: 0;
1740
+ margin-bottom: var(--space-2xs);
1741
+ transform: translateY(10px);
1742
+ }
1743
+ .cyber-dropdown--up.cyber-dropdown--open .cyber-dropdown__menu, .cyber-dropdown--up.cyber-dropdown--css-only:focus-within .cyber-dropdown__menu {
1744
+ transform: translateY(0);
1745
+ }
1746
+ .cyber-dropdown--magenta .cyber-dropdown__menu {
1747
+ box-shadow: 0 10px 25px color-mix(in srgb, var(--cyber-void-900) 60%, transparent), 0 0 15px color-mix(in srgb, var(--cyber-magenta-500) 15%, transparent);
1748
+ border-left-color: var(--cyber-magenta-500);
1749
+ }
1750
+ .cyber-dropdown--magenta .cyber-dropdown__item:hover,
1751
+ .cyber-dropdown--magenta .cyber-dropdown__item:focus-visible {
1752
+ color: var(--cyber-magenta-500);
1753
+ background: color-mix(in srgb, var(--cyber-magenta-500) 10%, transparent);
1754
+ }
1755
+ .cyber-dropdown--magenta .cyber-dropdown__item--active {
1756
+ color: var(--cyber-magenta-500);
1757
+ }
1758
+ }
1759
+ @layer components {
1760
+ .cyber-terminal {
1761
+ border: 1px solid var(--cyber-green-700);
1762
+ overflow: hidden;
1763
+ font-family: var(--font-mono);
1764
+ font-size: var(--text-sm);
1765
+ background: var(--color-bg-secondary);
1766
+ }
1767
+ .cyber-terminal__header {
1768
+ display: flex;
1769
+ gap: var(--space-xs);
1770
+ align-items: center;
1771
+ padding: var(--space-xs) var(--space-sm);
1772
+ border-bottom: 1px solid var(--cyber-green-700);
1773
+ background: var(--cyber-green-900);
1774
+ }
1775
+ .cyber-terminal__dot {
1776
+ width: 10px;
1777
+ height: 10px;
1778
+ border-radius: 50%;
1779
+ }
1780
+ .cyber-terminal__dot--red {
1781
+ background: var(--cyber-magenta-500);
1782
+ }
1783
+ .cyber-terminal__dot--yellow {
1784
+ background: var(--cyber-yellow-500);
1785
+ }
1786
+ .cyber-terminal__dot--green {
1787
+ background: var(--cyber-green-500);
1788
+ }
1789
+ .cyber-terminal__title {
1790
+ margin-left: auto;
1791
+ font-size: var(--text-xs);
1792
+ letter-spacing: 0.1em;
1793
+ text-transform: uppercase;
1794
+ color: var(--cyber-green-500);
1795
+ }
1796
+ .cyber-terminal__body {
1797
+ padding: var(--space-md);
1798
+ line-height: 1.8;
1799
+ color: var(--cyber-green-400);
1800
+ }
1801
+ .cyber-terminal__prompt {
1802
+ color: var(--cyber-cyan-500);
1803
+ }
1804
+ .cyber-terminal__cursor {
1805
+ display: inline-block;
1806
+ width: 8px;
1807
+ height: 1.1em;
1808
+ margin-left: 2px;
1809
+ background: var(--cyber-green-500);
1810
+ transform: translateY(0.1em);
1811
+ animation: blink 1s step-end infinite;
1812
+ vertical-align: middle;
1813
+ }
1814
+ .cyber-terminal__line {
1815
+ display: flex;
1816
+ gap: var(--space-xs);
1817
+ line-height: 1.8;
1818
+ white-space: pre-wrap;
1819
+ word-break: break-word;
1820
+ }
1821
+ .cyber-terminal__line--input {
1822
+ color: var(--color-text-primary);
1823
+ }
1824
+ .cyber-terminal__line--output {
1825
+ color: var(--color-text-secondary);
1826
+ }
1827
+ .cyber-terminal__line--error {
1828
+ color: var(--cyber-magenta-500);
1829
+ }
1830
+ .cyber-terminal__line--success {
1831
+ color: var(--cyber-green-500);
1832
+ }
1833
+ .cyber-terminal__line--warning {
1834
+ color: var(--cyber-yellow-500);
1835
+ }
1836
+ .cyber-terminal__line--info {
1837
+ color: var(--cyber-cyan-500);
1838
+ }
1839
+ .cyber-terminal__command {
1840
+ color: var(--color-text-primary);
1841
+ }
1842
+ .cyber-terminal__input {
1843
+ display: flex;
1844
+ gap: var(--space-xs);
1845
+ align-items: center;
1846
+ padding: var(--space-sm);
1847
+ border-top: 1px solid var(--cyber-green-700);
1848
+ background: var(--color-bg-tertiary);
1849
+ }
1850
+ .cyber-terminal__input-field {
1851
+ flex: 1;
1852
+ border: none;
1853
+ font-family: inherit;
1854
+ font-size: inherit;
1855
+ color: var(--color-text-primary);
1856
+ background: transparent;
1857
+ caret-color: var(--cyber-cyan-500);
1858
+ outline: none;
1859
+ }
1860
+ .cyber-terminal__input-field::placeholder {
1861
+ color: var(--color-text-muted);
1862
+ }
1863
+ .cyber-terminal .syntax-keyword {
1864
+ color: var(--cyber-magenta-500);
1865
+ }
1866
+ .cyber-terminal .syntax-string {
1867
+ color: var(--cyber-green-500);
1868
+ }
1869
+ .cyber-terminal .syntax-number {
1870
+ color: var(--cyber-yellow-500);
1871
+ }
1872
+ .cyber-terminal .syntax-comment {
1873
+ font-style: italic;
1874
+ color: var(--cyber-chrome-500);
1875
+ }
1876
+ .cyber-terminal .syntax-function {
1877
+ color: var(--cyber-cyan-500);
1878
+ }
1879
+ .cyber-terminal .syntax-variable {
1880
+ color: var(--cyber-chrome-200);
1881
+ }
1882
+ .cyber-terminal .syntax-operator {
1883
+ color: var(--cyber-chrome-400);
1884
+ }
1885
+ .cyber-terminal--sm {
1886
+ font-size: var(--text-xs);
1887
+ }
1888
+ .cyber-terminal--sm .cyber-terminal__body {
1889
+ min-height: 100px;
1890
+ max-height: 250px;
1891
+ }
1892
+ .cyber-terminal--lg {
1893
+ font-size: var(--text-base);
1894
+ }
1895
+ .cyber-terminal--lg .cyber-terminal__body {
1896
+ min-height: 300px;
1897
+ max-height: 700px;
1898
+ }
1899
+ .cyber-terminal--fullheight .cyber-terminal__body {
1900
+ max-height: none;
1901
+ }
1902
+ .cyber-terminal--no-header .cyber-terminal__header {
1903
+ display: none;
1904
+ }
1905
+ .cyber-terminal--rounded {
1906
+ border-radius: var(--radius-lg);
1907
+ }
1908
+ .cyber-terminal--rounded .cyber-terminal__header {
1909
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
1910
+ }
1911
+ .cyber-terminal--glow {
1912
+ box-shadow: 0 0 20px color-mix(in srgb, var(--cyber-green-500) 20%, transparent), inset 0 0 60px color-mix(in srgb, var(--cyber-green-500) 5%, transparent);
1913
+ }
1914
+ @keyframes blink {
1915
+ 50% {
1916
+ opacity: 0%;
1917
+ }
1918
+ }
1919
+ .cyber-terminal-typing {
1920
+ border-right: 2px solid var(--cyber-cyan-500);
1921
+ overflow: hidden;
1922
+ white-space: nowrap;
1923
+ animation: typing 2s steps(30, end), blink 1s step-end infinite;
1924
+ }
1925
+ @keyframes typing {
1926
+ from {
1927
+ width: 0;
1928
+ }
1929
+ to {
1930
+ width: 100%;
1931
+ }
1932
+ }
1933
+ .cyber-terminal-ascii {
1934
+ line-height: 1.2;
1935
+ white-space: pre;
1936
+ color: var(--cyber-cyan-500);
1937
+ text-shadow: 0 0 10px var(--cyber-cyan-500);
1938
+ }
1939
+ }
1940
+ @layer components {
1941
+ .cyber-spinner {
1942
+ --spinner-size: 48px;
1943
+ --spinner-color-primary: var(--cyber-cyan-500);
1944
+ --spinner-color-secondary: var(--cyber-magenta-500);
1945
+ --spinner-thickness: 3px;
1946
+ position: relative;
1947
+ display: inline-block;
1948
+ width: var(--spinner-size);
1949
+ height: var(--spinner-size);
1950
+ }
1951
+ .cyber-spinner::before, .cyber-spinner::after {
1952
+ content: "";
1953
+ position: absolute;
1954
+ border: var(--spinner-thickness) solid transparent;
1955
+ border-radius: 50%;
1956
+ inset: 0;
1957
+ will-change: transform;
1958
+ }
1959
+ .cyber-spinner::before {
1960
+ animation: spin 1s linear infinite;
1961
+ border-top-color: var(--spinner-color-primary);
1962
+ }
1963
+ .cyber-spinner::after {
1964
+ animation: spin 1s linear infinite reverse;
1965
+ animation-delay: -0.5s;
1966
+ border-bottom-color: var(--spinner-color-secondary);
1967
+ }
1968
+ .cyber-spinner--xs {
1969
+ --spinner-size: 16px;
1970
+ --spinner-thickness: 2px;
1971
+ }
1972
+ .cyber-spinner--sm {
1973
+ --spinner-size: 24px;
1974
+ --spinner-thickness: 2px;
1975
+ }
1976
+ .cyber-spinner--md {
1977
+ --spinner-size: 48px;
1978
+ --spinner-thickness: 3px;
1979
+ }
1980
+ .cyber-spinner--lg {
1981
+ --spinner-size: 64px;
1982
+ --spinner-thickness: 4px;
1983
+ }
1984
+ .cyber-spinner--xl {
1985
+ --spinner-size: 96px;
1986
+ --spinner-thickness: 5px;
1987
+ }
1988
+ .cyber-spinner--magenta {
1989
+ --spinner-color-primary: var(--cyber-magenta-500);
1990
+ --spinner-color-secondary: var(--cyber-cyan-500);
1991
+ }
1992
+ .cyber-spinner--yellow {
1993
+ --spinner-color-primary: var(--cyber-yellow-500);
1994
+ --spinner-color-secondary: var(--cyber-cyan-500);
1995
+ }
1996
+ .cyber-spinner--green {
1997
+ --spinner-color-primary: var(--cyber-green-500);
1998
+ --spinner-color-secondary: var(--cyber-cyan-500);
1999
+ }
2000
+ .cyber-spinner--chrome {
2001
+ --spinner-color-primary: var(--cyber-chrome-400);
2002
+ --spinner-color-secondary: var(--cyber-chrome-600);
2003
+ }
2004
+ .cyber-spinner--single::after {
2005
+ display: none;
2006
+ }
2007
+ .cyber-spinner--dotted::before {
2008
+ border-width: calc(var(--spinner-thickness) + 1px);
2009
+ border-style: dotted;
2010
+ }
2011
+ .cyber-spinner--dotted::after {
2012
+ border-width: calc(var(--spinner-thickness) + 1px);
2013
+ border-style: dotted;
2014
+ }
2015
+ .cyber-spinner--glow::before {
2016
+ filter: drop-shadow(0 0 4px var(--spinner-color-primary));
2017
+ }
2018
+ .cyber-spinner--glow::after {
2019
+ filter: drop-shadow(0 0 4px var(--spinner-color-secondary));
2020
+ }
2021
+ .cyber-spinner--pulse {
2022
+ animation: spinner-pulse 1.5s ease-in-out infinite;
2023
+ }
2024
+ @keyframes spin {
2025
+ to {
2026
+ transform: rotate(360deg);
2027
+ }
2028
+ }
2029
+ @keyframes spinner-pulse {
2030
+ 0%, 100% {
2031
+ opacity: 100%;
2032
+ transform: scale(1);
2033
+ }
2034
+ 50% {
2035
+ opacity: 60%;
2036
+ transform: scale(0.9);
2037
+ }
2038
+ }
2039
+ .cyber-spinner-dots {
2040
+ --dot-size: 8px;
2041
+ --dot-color: var(--cyber-cyan-500);
2042
+ display: inline-flex;
2043
+ gap: 4px;
2044
+ align-items: center;
2045
+ }
2046
+ .cyber-spinner-dots span {
2047
+ width: var(--dot-size);
2048
+ height: var(--dot-size);
2049
+ border-radius: 50%;
2050
+ background: var(--dot-color);
2051
+ animation: spinner-dots-bounce 1.4s ease-in-out infinite;
2052
+ }
2053
+ .cyber-spinner-dots span:nth-child(1) {
2054
+ animation-delay: 0s;
2055
+ }
2056
+ .cyber-spinner-dots span:nth-child(2) {
2057
+ animation-delay: 0.16s;
2058
+ }
2059
+ .cyber-spinner-dots span:nth-child(3) {
2060
+ animation-delay: 0.32s;
2061
+ }
2062
+ .cyber-spinner-dots--magenta {
2063
+ --dot-color: var(--cyber-magenta-500);
2064
+ }
2065
+ .cyber-spinner-dots--yellow {
2066
+ --dot-color: var(--cyber-yellow-500);
2067
+ }
2068
+ .cyber-spinner-dots--green {
2069
+ --dot-color: var(--cyber-green-500);
2070
+ }
2071
+ @keyframes spinner-dots-bounce {
2072
+ 0%, 80%, 100% {
2073
+ opacity: 50%;
2074
+ transform: scale(0.6);
2075
+ }
2076
+ 40% {
2077
+ opacity: 100%;
2078
+ transform: scale(1);
2079
+ }
2080
+ }
2081
+ .cyber-spinner-bars {
2082
+ --bar-width: 4px;
2083
+ --bar-height: 24px;
2084
+ --bar-color: var(--cyber-cyan-500);
2085
+ display: inline-flex;
2086
+ gap: 3px;
2087
+ align-items: center;
2088
+ }
2089
+ .cyber-spinner-bars span {
2090
+ width: var(--bar-width);
2091
+ height: var(--bar-height);
2092
+ background: var(--bar-color);
2093
+ animation: spinner-bars-scale 1.2s ease-in-out infinite;
2094
+ }
2095
+ .cyber-spinner-bars span:nth-child(1) {
2096
+ animation-delay: 0s;
2097
+ }
2098
+ .cyber-spinner-bars span:nth-child(2) {
2099
+ animation-delay: 0.1s;
2100
+ }
2101
+ .cyber-spinner-bars span:nth-child(3) {
2102
+ animation-delay: 0.2s;
2103
+ }
2104
+ .cyber-spinner-bars span:nth-child(4) {
2105
+ animation-delay: 0.3s;
2106
+ }
2107
+ .cyber-spinner-bars span:nth-child(5) {
2108
+ animation-delay: 0.4s;
2109
+ }
2110
+ .cyber-spinner-bars--magenta {
2111
+ --bar-color: var(--cyber-magenta-500);
2112
+ }
2113
+ .cyber-spinner-bars--yellow {
2114
+ --bar-color: var(--cyber-yellow-500);
2115
+ }
2116
+ .cyber-spinner-bars--green {
2117
+ --bar-color: var(--cyber-green-500);
2118
+ }
2119
+ @keyframes spinner-bars-scale {
2120
+ 0%, 40%, 100% {
2121
+ transform: scaleY(0.4);
2122
+ }
2123
+ 20% {
2124
+ transform: scaleY(1);
2125
+ }
2126
+ }
2127
+ @media (prefers-reduced-motion: reduce) {
2128
+ .cyber-spinner,
2129
+ .cyber-spinner::before,
2130
+ .cyber-spinner::after {
2131
+ animation: none;
2132
+ }
2133
+ .cyber-spinner-dots span,
2134
+ .cyber-spinner-bars span {
2135
+ animation: none;
2136
+ }
2137
+ }
2138
+ .cyber-spinner-overlay {
2139
+ position: absolute;
2140
+ z-index: var(--z-modal);
2141
+ display: flex;
2142
+ flex-direction: column;
2143
+ gap: var(--space-sm);
2144
+ align-items: center;
2145
+ justify-content: center;
2146
+ background: color-mix(in srgb, var(--cyber-void-500) 90%, transparent);
2147
+ backdrop-filter: blur(4px);
2148
+ inset: 0;
2149
+ }
2150
+ .cyber-spinner-overlay__text {
2151
+ font-family: var(--font-mono);
2152
+ font-size: var(--text-sm);
2153
+ letter-spacing: var(--tracking-wider);
2154
+ text-transform: uppercase;
2155
+ color: var(--color-text-secondary);
2156
+ }
2157
+ }
2158
+ @layer components {
2159
+ .cyber-skeleton {
2160
+ --skeleton-base: var(--cyber-void-400);
2161
+ --skeleton-shine: color-mix(in srgb, var(--cyber-cyan-500) 15%, var(--cyber-void-200));
2162
+ --skeleton-glow: color-mix(in srgb, var(--cyber-cyan-500) 8%, transparent);
2163
+ position: relative;
2164
+ display: block;
2165
+ border-radius: var(--radius-sm);
2166
+ overflow: hidden;
2167
+ background: var(--skeleton-base);
2168
+ }
2169
+ .cyber-skeleton::after {
2170
+ content: "";
2171
+ position: absolute;
2172
+ background: linear-gradient(90deg, transparent 0%, var(--skeleton-glow) 25%, var(--skeleton-shine) 50%, var(--skeleton-glow) 75%, transparent 100%);
2173
+ transform: translateX(-100%);
2174
+ animation: skeleton-shimmer 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;
2175
+ inset: 0;
2176
+ }
2177
+ .cyber-skeleton--text {
2178
+ width: 100%;
2179
+ height: 1em;
2180
+ border-radius: var(--radius-sm);
2181
+ }
2182
+ .cyber-skeleton--title {
2183
+ width: 60%;
2184
+ height: 1.5em;
2185
+ border-radius: var(--radius-sm);
2186
+ }
2187
+ .cyber-skeleton--avatar {
2188
+ flex-shrink: 0;
2189
+ width: 48px;
2190
+ height: 48px;
2191
+ border-radius: 50%;
2192
+ }
2193
+ .cyber-skeleton--avatar-sm {
2194
+ flex-shrink: 0;
2195
+ width: 32px;
2196
+ height: 32px;
2197
+ border-radius: 50%;
2198
+ }
2199
+ .cyber-skeleton--avatar-lg {
2200
+ flex-shrink: 0;
2201
+ width: 64px;
2202
+ height: 64px;
2203
+ border-radius: 50%;
2204
+ }
2205
+ .cyber-skeleton--thumbnail {
2206
+ width: 100%;
2207
+ border-radius: var(--radius-md);
2208
+ aspect-ratio: 16/9;
2209
+ }
2210
+ .cyber-skeleton--square {
2211
+ width: 100%;
2212
+ border-radius: var(--radius-md);
2213
+ aspect-ratio: 1;
2214
+ }
2215
+ .cyber-skeleton--button {
2216
+ width: 120px;
2217
+ height: 2.5rem;
2218
+ border-radius: 0;
2219
+ clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 8px 100%, 0 calc(100% - 8px));
2220
+ }
2221
+ .cyber-skeleton--badge {
2222
+ display: inline-block;
2223
+ width: 60px;
2224
+ height: 1.25rem;
2225
+ border-radius: 0;
2226
+ }
2227
+ .cyber-skeleton--cyan {
2228
+ --skeleton-base: color-mix(in srgb, var(--cyber-cyan-500) 8%, var(--cyber-void-400));
2229
+ --skeleton-shine: color-mix(in srgb, var(--cyber-cyan-500) 25%, var(--cyber-void-200));
2230
+ --skeleton-glow: color-mix(in srgb, var(--cyber-cyan-500) 12%, transparent);
2231
+ }
2232
+ .cyber-skeleton--magenta {
2233
+ --skeleton-base: color-mix(in srgb, var(--cyber-magenta-500) 8%, var(--cyber-void-400));
2234
+ --skeleton-shine: color-mix(in srgb, var(--cyber-magenta-500) 25%, var(--cyber-void-200));
2235
+ --skeleton-glow: color-mix(in srgb, var(--cyber-magenta-500) 12%, transparent);
2236
+ }
2237
+ .cyber-skeleton--yellow {
2238
+ --skeleton-base: color-mix(in srgb, var(--cyber-yellow-500) 8%, var(--cyber-void-400));
2239
+ --skeleton-shine: color-mix(in srgb, var(--cyber-yellow-500) 25%, var(--cyber-void-200));
2240
+ --skeleton-glow: color-mix(in srgb, var(--cyber-yellow-500) 12%, transparent);
2241
+ }
2242
+ .cyber-skeleton--green {
2243
+ --skeleton-base: color-mix(in srgb, var(--cyber-green-500) 8%, var(--cyber-void-400));
2244
+ --skeleton-shine: color-mix(in srgb, var(--cyber-green-500) 25%, var(--cyber-void-200));
2245
+ --skeleton-glow: color-mix(in srgb, var(--cyber-green-500) 12%, transparent);
2246
+ }
2247
+ .cyber-skeleton--pulse {
2248
+ animation: skeleton-pulse 2.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2249
+ }
2250
+ .cyber-skeleton--pulse::after {
2251
+ display: none;
2252
+ }
2253
+ .cyber-skeleton--wave::after {
2254
+ background: linear-gradient(90deg, transparent 0%, var(--skeleton-glow) 15%, color-mix(in srgb, var(--skeleton-shine) 70%, transparent) 35%, var(--skeleton-shine) 50%, color-mix(in srgb, var(--skeleton-shine) 70%, transparent) 65%, var(--skeleton-glow) 85%, transparent 100%);
2255
+ animation: skeleton-wave 2.5s cubic-bezier(0.4, 0, 0.2, 1) infinite;
2256
+ }
2257
+ .cyber-skeleton--glow {
2258
+ box-shadow: 0 0 8px var(--skeleton-glow);
2259
+ animation: skeleton-glow 2s ease-in-out infinite;
2260
+ }
2261
+ .cyber-skeleton--glow::after {
2262
+ background: linear-gradient(90deg, transparent 0%, var(--skeleton-shine) 50%, transparent 100%);
2263
+ animation: skeleton-shimmer 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;
2264
+ }
2265
+ .cyber-skeleton--no-animation::after {
2266
+ display: none;
2267
+ }
2268
+ @keyframes skeleton-shimmer {
2269
+ 0% {
2270
+ transform: translateX(-100%);
2271
+ }
2272
+ 100% {
2273
+ transform: translateX(100%);
2274
+ }
2275
+ }
2276
+ @keyframes skeleton-pulse {
2277
+ 0%, 100% {
2278
+ opacity: 100%;
2279
+ }
2280
+ 50% {
2281
+ opacity: 60%;
2282
+ }
2283
+ }
2284
+ @keyframes skeleton-wave {
2285
+ 0% {
2286
+ transform: translateX(-100%);
2287
+ }
2288
+ 100% {
2289
+ transform: translateX(100%);
2290
+ }
2291
+ }
2292
+ @keyframes skeleton-glow {
2293
+ 0%, 100% {
2294
+ box-shadow: 0 0 8px var(--skeleton-glow);
2295
+ }
2296
+ 50% {
2297
+ box-shadow: 0 0 16px var(--skeleton-glow), 0 0 24px var(--skeleton-glow);
2298
+ }
2299
+ }
2300
+ @media (prefers-reduced-motion: reduce) {
2301
+ .cyber-skeleton::after {
2302
+ background: var(--skeleton-shine);
2303
+ opacity: 50%;
2304
+ transform: none;
2305
+ animation: none;
2306
+ }
2307
+ .cyber-skeleton--pulse, .cyber-skeleton--glow {
2308
+ animation: none;
2309
+ }
2310
+ }
2311
+ .cyber-skeleton-card {
2312
+ display: flex;
2313
+ flex-direction: column;
2314
+ gap: var(--space-sm);
2315
+ padding: var(--space-md);
2316
+ border: var(--border-thin) solid var(--color-border-default);
2317
+ background: var(--color-bg-secondary);
2318
+ }
2319
+ .cyber-skeleton-card__header {
2320
+ display: flex;
2321
+ gap: var(--space-sm);
2322
+ align-items: center;
2323
+ }
2324
+ .cyber-skeleton-card__body {
2325
+ display: flex;
2326
+ flex-direction: column;
2327
+ gap: var(--space-xs);
2328
+ }
2329
+ .cyber-skeleton-list {
2330
+ display: flex;
2331
+ flex-direction: column;
2332
+ gap: var(--space-sm);
2333
+ }
2334
+ .cyber-skeleton-list__item {
2335
+ display: flex;
2336
+ gap: var(--space-sm);
2337
+ align-items: center;
2338
+ padding: var(--space-sm);
2339
+ border: var(--border-thin) solid var(--color-border-default);
2340
+ background: var(--color-bg-secondary);
2341
+ }
2342
+ .cyber-skeleton-list__content {
2343
+ display: flex;
2344
+ flex: 1;
2345
+ flex-direction: column;
2346
+ gap: var(--space-2xs);
2347
+ }
2348
+ .cyber-skeleton-table {
2349
+ width: 100%;
2350
+ border: var(--border-thin) solid var(--color-border-default);
2351
+ background: var(--color-bg-secondary);
2352
+ border-collapse: collapse;
2353
+ }
2354
+ .cyber-skeleton-table__row {
2355
+ display: flex;
2356
+ gap: var(--space-md);
2357
+ padding: var(--space-sm) var(--space-md);
2358
+ border-bottom: var(--border-thin) solid var(--color-border-default);
2359
+ }
2360
+ .cyber-skeleton-table__row:last-child {
2361
+ border-bottom: none;
2362
+ }
2363
+ .cyber-skeleton-table__row--header {
2364
+ background: var(--color-bg-tertiary);
2365
+ }
2366
+ .cyber-skeleton-table__cell {
2367
+ flex: 1;
2368
+ }
2369
+ .cyber-skeleton-profile {
2370
+ display: flex;
2371
+ gap: var(--space-md);
2372
+ align-items: flex-start;
2373
+ }
2374
+ .cyber-skeleton-profile__info {
2375
+ display: flex;
2376
+ flex: 1;
2377
+ flex-direction: column;
2378
+ gap: var(--space-xs);
2379
+ }
2380
+ }
2381
+ @layer components {
2382
+ .cyber-noise {
2383
+ position: relative;
2384
+ }
2385
+ .cyber-noise::before {
2386
+ content: "";
2387
+ position: absolute;
2388
+ z-index: 10;
2389
+ border-radius: inherit;
2390
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
2391
+ opacity: 15%;
2392
+ pointer-events: none;
2393
+ inset: 0;
2394
+ }
2395
+ .cyber-noise--animated::before {
2396
+ animation: cyber-noise-shift 0.5s steps(10) infinite;
2397
+ }
2398
+ @keyframes cyber-noise-shift {
2399
+ 0%, 100% {
2400
+ transform: translate(0, 0);
2401
+ }
2402
+ 10% {
2403
+ transform: translate(-5%, -10%);
2404
+ }
2405
+ 20% {
2406
+ transform: translate(-15%, 5%);
2407
+ }
2408
+ 30% {
2409
+ transform: translate(7%, -25%);
2410
+ }
2411
+ 40% {
2412
+ transform: translate(-5%, 25%);
2413
+ }
2414
+ 50% {
2415
+ transform: translate(-15%, 10%);
2416
+ }
2417
+ 60% {
2418
+ transform: translate(15%, 0%);
2419
+ }
2420
+ 70% {
2421
+ transform: translate(0%, 15%);
2422
+ }
2423
+ 80% {
2424
+ transform: translate(3%, 35%);
2425
+ }
2426
+ 90% {
2427
+ transform: translate(-10%, 10%);
2428
+ }
2429
+ }
2430
+ @media (prefers-reduced-motion: reduce) {
2431
+ .cyber-noise--animated {
2432
+ animation: none;
2433
+ }
2434
+ }
2435
+ }
2436
+ @layer components {
2437
+ .cyber-scanlines {
2438
+ position: relative;
2439
+ }
2440
+ .cyber-scanlines::after {
2441
+ content: "";
2442
+ position: absolute;
2443
+ z-index: 10;
2444
+ border-radius: inherit;
2445
+ background: repeating-linear-gradient(0deg, transparent 0, transparent 2px, rgba(0, 0, 0, 0.5) 2px, rgba(0, 0, 0, 0.5) 4px);
2446
+ pointer-events: none;
2447
+ inset: 0;
2448
+ }
2449
+ .cyber-scanlines--fine::after {
2450
+ background: repeating-linear-gradient(0deg, transparent, transparent 1px, rgba(0, 0, 0, 0.2) 1px, rgba(0, 0, 0, 0.2) 2px);
2451
+ }
2452
+ .cyber-scanlines--heavy::after {
2453
+ background: repeating-linear-gradient(0deg, transparent, transparent 3px, rgba(0, 0, 0, 0.4) 3px, rgba(0, 0, 0, 0.4) 6px);
2454
+ }
2455
+ .cyber-scanlines--flicker::after {
2456
+ animation: cyber-scanline-flicker 0.15s infinite;
2457
+ }
2458
+ .cyber-scanlines--scroll::after {
2459
+ animation: cyber-scanline-scroll 8s linear infinite;
2460
+ }
2461
+ @keyframes cyber-scanline-flicker {
2462
+ 0%, 100% {
2463
+ opacity: var(--scanline-opacity);
2464
+ }
2465
+ 50% {
2466
+ opacity: calc(var(--scanline-opacity) * 98%);
2467
+ }
2468
+ }
2469
+ @keyframes cyber-scanline-scroll {
2470
+ 0% {
2471
+ background-position: 0 0;
2472
+ }
2473
+ 100% {
2474
+ background-position: 0 100%;
2475
+ }
2476
+ }
2477
+ @media (prefers-reduced-motion: reduce) {
2478
+ .cyber-scanlines--flicker,
2479
+ .cyber-scanlines--scroll {
2480
+ animation: none;
2481
+ }
2482
+ }
2483
+ }
2484
+ @layer components {
2485
+ .cyber-heading {
2486
+ position: relative;
2487
+ display: inline-block;
2488
+ color: var(--cyber-cyan-500);
2489
+ text-shadow: 0 0 10px var(--cyber-cyan-500), 0 0 20px color-mix(in srgb, var(--cyber-cyan-500) 60%, transparent);
2490
+ }
2491
+ .cyber-heading::before, .cyber-heading::after {
2492
+ content: attr(data-text);
2493
+ position: absolute;
2494
+ top: 0;
2495
+ left: 0;
2496
+ width: 100%;
2497
+ height: 100%;
2498
+ opacity: 80%;
2499
+ will-change: transform, clip-path;
2500
+ }
2501
+ .cyber-heading::before {
2502
+ z-index: -1;
2503
+ color: var(--cyber-magenta-500);
2504
+ animation: glitch-1 8s infinite linear alternate-reverse;
2505
+ }
2506
+ .cyber-heading::after {
2507
+ z-index: -1;
2508
+ color: var(--cyber-cyan-300);
2509
+ animation: glitch-2 6s infinite linear alternate;
2510
+ }
2511
+ @keyframes glitch-1 {
2512
+ 0%, 100% {
2513
+ transform: translate(-2px, 0);
2514
+ clip-path: inset(0 0 95% 0);
2515
+ }
2516
+ 10% {
2517
+ transform: translate(2px, 0);
2518
+ clip-path: inset(30% 0 40% 0);
2519
+ }
2520
+ 20% {
2521
+ transform: translate(-1px, 0);
2522
+ clip-path: inset(70% 0 10% 0);
2523
+ }
2524
+ 30% {
2525
+ transform: translate(1px, 0);
2526
+ clip-path: inset(10% 0 60% 0);
2527
+ }
2528
+ 40% {
2529
+ transform: translate(-2px, 0);
2530
+ clip-path: inset(80% 0 5% 0);
2531
+ }
2532
+ 50% {
2533
+ transform: translate(2px, 0);
2534
+ clip-path: inset(20% 0 55% 0);
2535
+ }
2536
+ 60% {
2537
+ transform: translate(-1px, 0);
2538
+ clip-path: inset(50% 0 30% 0);
2539
+ }
2540
+ 70% {
2541
+ transform: translate(1px, 0);
2542
+ clip-path: inset(5% 0 85% 0);
2543
+ }
2544
+ 80% {
2545
+ transform: translate(-2px, 0);
2546
+ clip-path: inset(45% 0 35% 0);
2547
+ }
2548
+ 90% {
2549
+ transform: translate(2px, 0);
2550
+ clip-path: inset(85% 0 5% 0);
2551
+ }
2552
+ }
2553
+ @keyframes glitch-2 {
2554
+ 0%, 100% {
2555
+ transform: translate(2px, 0);
2556
+ clip-path: inset(95% 0 0 0);
2557
+ }
2558
+ 10% {
2559
+ transform: translate(-2px, 0);
2560
+ clip-path: inset(40% 0 30% 0);
2561
+ }
2562
+ 20% {
2563
+ transform: translate(1px, 0);
2564
+ clip-path: inset(10% 0 70% 0);
2565
+ }
2566
+ 30% {
2567
+ transform: translate(-1px, 0);
2568
+ clip-path: inset(60% 0 10% 0);
2569
+ }
2570
+ 40% {
2571
+ transform: translate(2px, 0);
2572
+ clip-path: inset(5% 0 80% 0);
2573
+ }
2574
+ 50% {
2575
+ transform: translate(-2px, 0);
2576
+ clip-path: inset(55% 0 20% 0);
2577
+ }
2578
+ 60% {
2579
+ transform: translate(1px, 0);
2580
+ clip-path: inset(30% 0 50% 0);
2581
+ }
2582
+ 70% {
2583
+ transform: translate(-1px, 0);
2584
+ clip-path: inset(85% 0 5% 0);
2585
+ }
2586
+ 80% {
2587
+ transform: translate(2px, 0);
2588
+ clip-path: inset(35% 0 45% 0);
2589
+ }
2590
+ 90% {
2591
+ transform: translate(-2px, 0);
2592
+ clip-path: inset(5% 0 85% 0);
2593
+ }
2594
+ }
2595
+ @media (prefers-reduced-motion: reduce) {
2596
+ .cyber-heading::before, .cyber-heading::after {
2597
+ opacity: 0%;
2598
+ transform: none;
2599
+ animation: none;
2600
+ clip-path: none;
2601
+ }
2602
+ }
2603
+ .cyber-glitch {
2604
+ --glitch-color-1: var(--cyber-cyan-500, #00f0ff);
2605
+ --glitch-color-2: var(--cyber-magenta-500, #ff2a6d);
2606
+ --glitch-offset: 2px;
2607
+ --glitch-duration: 3s;
2608
+ position: relative;
2609
+ }
2610
+ .cyber-glitch::before, .cyber-glitch::after {
2611
+ content: attr(data-text);
2612
+ position: absolute;
2613
+ overflow: hidden;
2614
+ color: inherit;
2615
+ background: inherit;
2616
+ pointer-events: none;
2617
+ inset: 0;
2618
+ will-change: transform, clip-path;
2619
+ }
2620
+ .cyber-glitch::before {
2621
+ color: var(--glitch-color-1);
2622
+ animation: cyber-glitch-1 var(--glitch-duration) infinite linear alternate-reverse;
2623
+ clip-path: polygon(0 0, 100% 0, 100% 45%, 0 45%);
2624
+ mix-blend-mode: screen;
2625
+ }
2626
+ .cyber-glitch::after {
2627
+ color: var(--glitch-color-2);
2628
+ animation: cyber-glitch-2 var(--glitch-duration) infinite linear alternate-reverse;
2629
+ clip-path: polygon(0 55%, 100% 55%, 100% 100%, 0 100%);
2630
+ mix-blend-mode: screen;
2631
+ }
2632
+ .cyber-glitch--intense {
2633
+ --glitch-offset: 4px;
2634
+ --glitch-duration: 1.5s;
2635
+ }
2636
+ .cyber-glitch--intense::before {
2637
+ animation: cyber-glitch-intense-1 var(--glitch-duration) infinite;
2638
+ }
2639
+ .cyber-glitch--intense::after {
2640
+ animation: cyber-glitch-intense-2 var(--glitch-duration) infinite;
2641
+ }
2642
+ .cyber-glitch--hover::before, .cyber-glitch--hover::after {
2643
+ opacity: 0%;
2644
+ animation: none;
2645
+ }
2646
+ .cyber-glitch--hover:hover::before, .cyber-glitch--hover:hover::after {
2647
+ opacity: 100%;
2648
+ }
2649
+ .cyber-glitch--hover:hover::before {
2650
+ animation: cyber-glitch-1 0.3s infinite linear alternate-reverse;
2651
+ }
2652
+ .cyber-glitch--hover:hover::after {
2653
+ animation: cyber-glitch-2 0.3s infinite linear alternate-reverse;
2654
+ }
2655
+ .cyber-glitch--subtle {
2656
+ --glitch-offset: 1px;
2657
+ }
2658
+ .cyber-glitch--subtle::before, .cyber-glitch--subtle::after {
2659
+ opacity: 70%;
2660
+ }
2661
+ @keyframes cyber-glitch-1 {
2662
+ 0%, 100% {
2663
+ transform: translate(0);
2664
+ clip-path: polygon(0 0, 100% 0, 100% 45%, 0 45%);
2665
+ }
2666
+ 20% {
2667
+ transform: translate(calc(var(--glitch-offset) * -1), 0);
2668
+ clip-path: polygon(0 15%, 100% 15%, 100% 30%, 0 30%);
2669
+ }
2670
+ 40% {
2671
+ transform: translate(var(--glitch-offset), 0);
2672
+ clip-path: polygon(0 5%, 100% 5%, 100% 20%, 0 20%);
2673
+ }
2674
+ 60% {
2675
+ transform: translate(calc(var(--glitch-offset) * -0.5), 0);
2676
+ clip-path: polygon(0 35%, 100% 35%, 100% 50%, 0 50%);
2677
+ }
2678
+ 80% {
2679
+ transform: translate(var(--glitch-offset), 0);
2680
+ clip-path: polygon(0 0, 100% 0, 100% 10%, 0 10%);
2681
+ }
2682
+ }
2683
+ @keyframes cyber-glitch-2 {
2684
+ 0%, 100% {
2685
+ transform: translate(0);
2686
+ clip-path: polygon(0 55%, 100% 55%, 100% 100%, 0 100%);
2687
+ }
2688
+ 20% {
2689
+ transform: translate(var(--glitch-offset), 0);
2690
+ clip-path: polygon(0 70%, 100% 70%, 100% 85%, 0 85%);
2691
+ }
2692
+ 40% {
2693
+ transform: translate(calc(var(--glitch-offset) * -1), 0);
2694
+ clip-path: polygon(0 80%, 100% 80%, 100% 95%, 0 95%);
2695
+ }
2696
+ 60% {
2697
+ transform: translate(calc(var(--glitch-offset) * 0.5), 0);
2698
+ clip-path: polygon(0 60%, 100% 60%, 100% 75%, 0 75%);
2699
+ }
2700
+ 80% {
2701
+ transform: translate(calc(var(--glitch-offset) * -1), 0);
2702
+ clip-path: polygon(0 90%, 100% 90%, 100% 100%, 0 100%);
2703
+ }
2704
+ }
2705
+ @keyframes cyber-glitch-intense-1 {
2706
+ 0% {
2707
+ transform: translate(0);
2708
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
2709
+ }
2710
+ 5% {
2711
+ transform: translate(var(--glitch-offset), calc(var(--glitch-offset) * -1));
2712
+ clip-path: polygon(0 5%, 100% 5%, 100% 10%, 0 10%);
2713
+ }
2714
+ 10% {
2715
+ transform: translate(calc(var(--glitch-offset) * -2), 0);
2716
+ clip-path: polygon(0 20%, 100% 20%, 100% 25%, 0 25%);
2717
+ }
2718
+ 15% {
2719
+ transform: translate(0);
2720
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
2721
+ }
2722
+ 50% {
2723
+ transform: translate(calc(var(--glitch-offset) * -1), var(--glitch-offset));
2724
+ clip-path: polygon(0 40%, 100% 40%, 100% 50%, 0 50%);
2725
+ }
2726
+ 55% {
2727
+ transform: translate(var(--glitch-offset), 0);
2728
+ clip-path: polygon(0 60%, 100% 60%, 100% 70%, 0 70%);
2729
+ }
2730
+ 60%, 100% {
2731
+ transform: translate(0);
2732
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
2733
+ }
2734
+ }
2735
+ @keyframes cyber-glitch-intense-2 {
2736
+ 0% {
2737
+ transform: translate(0);
2738
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
2739
+ }
2740
+ 7% {
2741
+ transform: translate(calc(var(--glitch-offset) * -1), var(--glitch-offset));
2742
+ clip-path: polygon(0 75%, 100% 75%, 100% 80%, 0 80%);
2743
+ }
2744
+ 12% {
2745
+ transform: translate(var(--glitch-offset), 0);
2746
+ clip-path: polygon(0 85%, 100% 85%, 100% 95%, 0 95%);
2747
+ }
2748
+ 17% {
2749
+ transform: translate(0);
2750
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
2751
+ }
2752
+ 45% {
2753
+ transform: translate(var(--glitch-offset), calc(var(--glitch-offset) * -1));
2754
+ clip-path: polygon(0 30%, 100% 30%, 100% 35%, 0 35%);
2755
+ }
2756
+ 52% {
2757
+ transform: translate(calc(var(--glitch-offset) * -2), 0);
2758
+ clip-path: polygon(0 15%, 100% 15%, 100% 25%, 0 25%);
2759
+ }
2760
+ 58%, 100% {
2761
+ transform: translate(0);
2762
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
2763
+ }
2764
+ }
2765
+ @media (prefers-reduced-motion: reduce) {
2766
+ .cyber-glitch::before, .cyber-glitch::after {
2767
+ opacity: 0%;
2768
+ transform: none;
2769
+ animation: none;
2770
+ clip-path: none;
2771
+ }
2772
+ }
2773
+ }
2774
+ @layer components {
2775
+ .cyber-neon-border {
2776
+ position: relative;
2777
+ isolation: isolate;
2778
+ }
2779
+ .cyber-neon-border::before {
2780
+ content: "";
2781
+ position: absolute;
2782
+ z-index: -1;
2783
+ border-radius: inherit;
2784
+ background: linear-gradient(90deg, var(--cyber-cyan-500, #00f0ff), var(--cyber-magenta-500, #ff2a6d), var(--cyber-yellow-500, #fcee0a), var(--cyber-green-500, #05ffa1), var(--cyber-cyan-500, #00f0ff));
2785
+ background-size: 400% 100%;
2786
+ animation: neon-flow 4s linear infinite;
2787
+ filter: blur(15px);
2788
+ inset: 0;
2789
+ }
2790
+ .cyber-neon-border::after {
2791
+ content: "";
2792
+ position: absolute;
2793
+ z-index: -1;
2794
+ border-radius: inherit;
2795
+ background: var(--color-bg-secondary, #0d1117);
2796
+ inset: 0;
2797
+ }
2798
+ .cyber-neon-border--magenta::before {
2799
+ background: linear-gradient(90deg, var(--cyber-magenta-500, #ff2a6d), var(--cyber-cyan-500, #00f0ff), var(--cyber-magenta-500, #ff2a6d), var(--cyber-yellow-500, #fcee0a), var(--cyber-magenta-500, #ff2a6d));
2800
+ }
2801
+ .cyber-neon-border--cyan::before {
2802
+ background: linear-gradient(90deg, var(--cyber-cyan-400, #33f3ff), var(--cyber-cyan-600, #00c4cc), var(--cyber-cyan-500, #00f0ff), var(--cyber-cyan-400, #33f3ff));
2803
+ }
2804
+ .cyber-neon-border--yellow::before {
2805
+ background: linear-gradient(90deg, var(--cyber-yellow-500, #fcee0a), var(--cyber-green-500, #05ffa1), var(--cyber-yellow-500, #fcee0a), var(--cyber-cyan-500, #00f0ff), var(--cyber-yellow-500, #fcee0a));
2806
+ }
2807
+ .cyber-neon-border--green::before {
2808
+ background: linear-gradient(90deg, var(--cyber-green-500, #05ffa1), var(--cyber-cyan-500, #00f0ff), var(--cyber-green-500, #05ffa1), var(--cyber-yellow-500, #fcee0a), var(--cyber-green-500, #05ffa1));
2809
+ }
2810
+ @keyframes neon-flow {
2811
+ 0% {
2812
+ background-position: 0% 50%;
2813
+ }
2814
+ 100% {
2815
+ background-position: 400% 50%;
2816
+ }
2817
+ }
2818
+ @media (prefers-reduced-motion: reduce) {
2819
+ .cyber-neon-border::before {
2820
+ background-position: 0% 50%;
2821
+ animation: none;
2822
+ }
2823
+ }
2824
+ }
2825
+ @layer components {
2826
+ .cyber-datastream {
2827
+ position: relative;
2828
+ }
2829
+ .cyber-datastream::before {
2830
+ content: "";
2831
+ position: absolute;
2832
+ z-index: 1;
2833
+ border-radius: inherit;
2834
+ background: linear-gradient(180deg, transparent 0%, color-mix(in srgb, var(--cyber-cyan-500) 30%, transparent) 50%, transparent 100%);
2835
+ background-size: 100% 200%;
2836
+ animation: datastream 3s linear infinite;
2837
+ pointer-events: none;
2838
+ inset: 0;
2839
+ }
2840
+ @keyframes datastream {
2841
+ 0% {
2842
+ background-position: 0% 0%;
2843
+ }
2844
+ 100% {
2845
+ background-position: 0% 200%;
2846
+ }
2847
+ }
2848
+ @media (prefers-reduced-motion: reduce) {
2849
+ .cyber-datastream::before {
2850
+ animation: none;
2851
+ }
2852
+ }
2853
+ }
2854
+ @layer utilities {
2855
+ .cyber-hidden {
2856
+ display: none;
2857
+ }
2858
+ .cyber-block {
2859
+ display: block;
2860
+ }
2861
+ .cyber-inline {
2862
+ display: inline;
2863
+ }
2864
+ .cyber-inline-block {
2865
+ display: inline-block;
2866
+ }
2867
+ .cyber-flex {
2868
+ display: flex;
2869
+ }
2870
+ .cyber-inline-flex {
2871
+ display: inline-flex;
2872
+ }
2873
+ .cyber-grid {
2874
+ display: grid;
2875
+ }
2876
+ }
2877
+ @layer utilities {
2878
+ .cyber-flex-col {
2879
+ flex-direction: column;
2880
+ }
2881
+ .cyber-flex-row {
2882
+ flex-direction: row;
2883
+ }
2884
+ .cyber-flex-wrap {
2885
+ flex-wrap: wrap;
2886
+ }
2887
+ .cyber-flex-nowrap {
2888
+ flex-wrap: nowrap;
2889
+ }
2890
+ .cyber-items-start {
2891
+ align-items: flex-start;
2892
+ }
2893
+ .cyber-items-center {
2894
+ align-items: center;
2895
+ }
2896
+ .cyber-items-end {
2897
+ align-items: flex-end;
2898
+ }
2899
+ .cyber-items-stretch {
2900
+ align-items: stretch;
2901
+ }
2902
+ .cyber-justify-start {
2903
+ justify-content: flex-start;
2904
+ }
2905
+ .cyber-justify-center {
2906
+ justify-content: center;
2907
+ }
2908
+ .cyber-justify-end {
2909
+ justify-content: flex-end;
2910
+ }
2911
+ .cyber-justify-between {
2912
+ justify-content: space-between;
2913
+ }
2914
+ .cyber-justify-around {
2915
+ justify-content: space-around;
2916
+ }
2917
+ .cyber-gap-xs {
2918
+ gap: var(--space-xs);
2919
+ }
2920
+ .cyber-gap-sm {
2921
+ gap: var(--space-sm);
2922
+ }
2923
+ .cyber-gap-md {
2924
+ gap: var(--space-md);
2925
+ }
2926
+ .cyber-gap-lg {
2927
+ gap: var(--space-lg);
2928
+ }
2929
+ .cyber-gap-xl {
2930
+ gap: var(--space-xl);
2931
+ }
2932
+ .cyber-flex-1 {
2933
+ flex: 1 1 0%;
2934
+ }
2935
+ .cyber-flex-auto {
2936
+ flex: 1 1 auto;
2937
+ }
2938
+ .cyber-flex-none {
2939
+ flex: none;
2940
+ }
2941
+ }
2942
+ @layer utilities {
2943
+ .cyber-grid--2 {
2944
+ display: grid;
2945
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
2946
+ gap: var(--space-md);
2947
+ }
2948
+ @media (width >= 640px) {
2949
+ .cyber-grid--2 {
2950
+ grid-template-columns: repeat(2, 1fr);
2951
+ }
2952
+ }
2953
+ .cyber-grid--3 {
2954
+ display: grid;
2955
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr));
2956
+ gap: var(--space-md);
2957
+ }
2958
+ @media (width >= 768px) {
2959
+ .cyber-grid--3 {
2960
+ grid-template-columns: repeat(3, 1fr);
2961
+ }
2962
+ }
2963
+ .cyber-grid--4 {
2964
+ display: grid;
2965
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
2966
+ gap: var(--space-md);
2967
+ }
2968
+ @media (width >= 1024px) {
2969
+ .cyber-grid--4 {
2970
+ grid-template-columns: repeat(4, 1fr);
2971
+ }
2972
+ }
2973
+ .cyber-grid--auto-sm {
2974
+ display: grid;
2975
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));
2976
+ gap: var(--space-md);
2977
+ }
2978
+ .cyber-grid--auto-md {
2979
+ display: grid;
2980
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr));
2981
+ gap: var(--space-md);
2982
+ }
2983
+ .cyber-grid--auto-lg {
2984
+ display: grid;
2985
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 350px), 1fr));
2986
+ gap: var(--space-md);
2987
+ }
2988
+ .cyber-col-span-2 {
2989
+ grid-column: span 2;
2990
+ }
2991
+ .cyber-col-span-3 {
2992
+ grid-column: span 3;
2993
+ }
2994
+ .cyber-col-span-full {
2995
+ grid-column: 1/-1;
2996
+ }
2997
+ }
2998
+ @layer utilities {
2999
+ .cyber-m-0 {
3000
+ margin: 0;
3001
+ }
3002
+ .cyber-m-auto {
3003
+ margin: auto;
3004
+ }
3005
+ .cyber-m-xs {
3006
+ margin: var(--space-xs);
3007
+ }
3008
+ .cyber-m-sm {
3009
+ margin: var(--space-sm);
3010
+ }
3011
+ .cyber-m-md {
3012
+ margin: var(--space-md);
3013
+ }
3014
+ .cyber-m-lg {
3015
+ margin: var(--space-lg);
3016
+ }
3017
+ .cyber-mx-auto {
3018
+ margin-inline: auto;
3019
+ }
3020
+ .cyber-mx-sm {
3021
+ margin-inline: var(--space-sm);
3022
+ }
3023
+ .cyber-mx-md {
3024
+ margin-inline: var(--space-md);
3025
+ }
3026
+ .cyber-mx-lg {
3027
+ margin-inline: var(--space-lg);
3028
+ }
3029
+ .cyber-my-sm {
3030
+ margin-block: var(--space-sm);
3031
+ }
3032
+ .cyber-my-md {
3033
+ margin-block: var(--space-md);
3034
+ }
3035
+ .cyber-my-lg {
3036
+ margin-block: var(--space-lg);
3037
+ }
3038
+ .cyber-my-xl {
3039
+ margin-block: var(--space-xl);
3040
+ }
3041
+ .cyber-mt-0 {
3042
+ margin-top: 0;
3043
+ }
3044
+ .cyber-mt-xs {
3045
+ margin-top: var(--space-xs);
3046
+ }
3047
+ .cyber-mt-sm {
3048
+ margin-top: var(--space-sm);
3049
+ }
3050
+ .cyber-mt-md {
3051
+ margin-top: var(--space-md);
3052
+ }
3053
+ .cyber-mt-lg {
3054
+ margin-top: var(--space-lg);
3055
+ }
3056
+ .cyber-mt-xl {
3057
+ margin-top: var(--space-xl);
3058
+ }
3059
+ .cyber-mb-0 {
3060
+ margin-bottom: 0;
3061
+ }
3062
+ .cyber-mb-xs {
3063
+ margin-bottom: var(--space-xs);
3064
+ }
3065
+ .cyber-mb-sm {
3066
+ margin-bottom: var(--space-sm);
3067
+ }
3068
+ .cyber-mb-md {
3069
+ margin-bottom: var(--space-md);
3070
+ }
3071
+ .cyber-mb-lg {
3072
+ margin-bottom: var(--space-lg);
3073
+ }
3074
+ .cyber-mb-xl {
3075
+ margin-bottom: var(--space-xl);
3076
+ }
3077
+ .cyber-p-0 {
3078
+ padding: 0;
3079
+ }
3080
+ .cyber-p-xs {
3081
+ padding: var(--space-xs);
3082
+ }
3083
+ .cyber-p-sm {
3084
+ padding: var(--space-sm);
3085
+ }
3086
+ .cyber-p-md {
3087
+ padding: var(--space-md);
3088
+ }
3089
+ .cyber-p-lg {
3090
+ padding: var(--space-lg);
3091
+ }
3092
+ .cyber-p-xl {
3093
+ padding: var(--space-xl);
3094
+ }
3095
+ .cyber-px-0 {
3096
+ padding-inline: 0;
3097
+ }
3098
+ .cyber-px-sm {
3099
+ padding-inline: var(--space-sm);
3100
+ }
3101
+ .cyber-px-md {
3102
+ padding-inline: var(--space-md);
3103
+ }
3104
+ .cyber-px-lg {
3105
+ padding-inline: var(--space-lg);
3106
+ }
3107
+ .cyber-py-0 {
3108
+ padding-block: 0;
3109
+ }
3110
+ .cyber-py-sm {
3111
+ padding-block: var(--space-sm);
3112
+ }
3113
+ .cyber-py-md {
3114
+ padding-block: var(--space-md);
3115
+ }
3116
+ .cyber-py-lg {
3117
+ padding-block: var(--space-lg);
3118
+ }
3119
+ .cyber-py-xl {
3120
+ padding-block: var(--space-xl);
3121
+ }
3122
+ }
3123
+ @layer utilities {
3124
+ .cyber-text-left {
3125
+ text-align: left;
3126
+ }
3127
+ .cyber-text-center {
3128
+ text-align: center;
3129
+ }
3130
+ .cyber-text-right {
3131
+ text-align: right;
3132
+ }
3133
+ .cyber-text-primary {
3134
+ color: var(--color-text-primary);
3135
+ }
3136
+ .cyber-text-secondary {
3137
+ color: var(--color-text-secondary);
3138
+ }
3139
+ .cyber-text-muted {
3140
+ color: var(--color-text-muted);
3141
+ }
3142
+ .cyber-text-cyan {
3143
+ color: var(--cyber-cyan-500);
3144
+ }
3145
+ .cyber-text-magenta {
3146
+ color: var(--cyber-magenta-500);
3147
+ }
3148
+ .cyber-text-yellow {
3149
+ color: var(--cyber-yellow-500);
3150
+ }
3151
+ .cyber-text-green {
3152
+ color: var(--cyber-green-500);
3153
+ }
3154
+ .cyber-text-glow {
3155
+ color: var(--cyber-cyan-500);
3156
+ text-shadow: var(--glow-text-cyan);
3157
+ }
3158
+ .cyber-text-glow--magenta {
3159
+ color: var(--cyber-magenta-500);
3160
+ text-shadow: var(--glow-text-magenta);
3161
+ }
3162
+ .cyber-text-glow--yellow {
3163
+ color: var(--cyber-yellow-500);
3164
+ text-shadow: var(--glow-text-yellow);
3165
+ }
3166
+ .cyber-text-glow--green {
3167
+ color: var(--cyber-green-500);
3168
+ text-shadow: var(--glow-text-green);
3169
+ }
3170
+ .cyber-text-glow-cyan {
3171
+ color: var(--cyber-cyan-500);
3172
+ text-shadow: var(--glow-text-cyan);
3173
+ }
3174
+ .cyber-text-glow-magenta {
3175
+ color: var(--cyber-magenta-500);
3176
+ text-shadow: var(--glow-text-magenta);
3177
+ }
3178
+ .cyber-text-glow-yellow {
3179
+ color: var(--cyber-yellow-500);
3180
+ text-shadow: var(--glow-text-yellow);
3181
+ }
3182
+ .cyber-text-glow-green {
3183
+ color: var(--cyber-green-500);
3184
+ text-shadow: var(--glow-text-green);
3185
+ }
3186
+ .cyber-font-normal {
3187
+ font-weight: 400;
3188
+ }
3189
+ .cyber-font-medium {
3190
+ font-weight: 500;
3191
+ }
3192
+ .cyber-font-semibold {
3193
+ font-weight: 600;
3194
+ }
3195
+ .cyber-font-bold {
3196
+ font-weight: 700;
3197
+ }
3198
+ .cyber-font-display {
3199
+ font-family: var(--font-display);
3200
+ }
3201
+ .cyber-font-body {
3202
+ font-family: var(--font-body);
3203
+ }
3204
+ .cyber-font-mono {
3205
+ font-family: var(--font-mono);
3206
+ }
3207
+ .cyber-uppercase {
3208
+ letter-spacing: var(--tracking-wider);
3209
+ text-transform: uppercase;
3210
+ }
3211
+ .cyber-lowercase {
3212
+ text-transform: lowercase;
3213
+ }
3214
+ .cyber-capitalize {
3215
+ text-transform: capitalize;
3216
+ }
3217
+ .cyber-truncate {
3218
+ overflow: hidden;
3219
+ white-space: nowrap;
3220
+ text-overflow: ellipsis;
3221
+ }
3222
+ .cyber-line-clamp-2 {
3223
+ display: -webkit-box;
3224
+ overflow: hidden;
3225
+ -webkit-box-orient: vertical;
3226
+ -webkit-line-clamp: 2;
3227
+ }
3228
+ .cyber-line-clamp-3 {
3229
+ display: -webkit-box;
3230
+ overflow: hidden;
3231
+ -webkit-box-orient: vertical;
3232
+ -webkit-line-clamp: 3;
3233
+ }
3234
+ }
3235
+ @layer utilities {
3236
+ .cyber-sr-only {
3237
+ position: absolute;
3238
+ width: 1px;
3239
+ height: 1px;
3240
+ margin: -1px;
3241
+ padding: 0;
3242
+ border: 0;
3243
+ overflow: hidden;
3244
+ white-space: nowrap;
3245
+ clip: rect(0, 0, 0, 0);
3246
+ }
3247
+ .cyber-sr-only-focusable:focus,
3248
+ .cyber-sr-only-focusable:focus-within {
3249
+ position: static;
3250
+ width: auto;
3251
+ height: auto;
3252
+ margin: inherit;
3253
+ padding: inherit;
3254
+ overflow: visible;
3255
+ white-space: normal;
3256
+ clip: auto;
3257
+ }
3258
+ .cyber-not-sr {
3259
+ speak: none;
3260
+ }
3261
+ .cyber-focus-visible:focus-visible {
3262
+ outline: 2px solid var(--cyber-cyan-500);
3263
+ outline-offset: 2px;
3264
+ }
3265
+ @media (prefers-reduced-motion: reduce) {
3266
+ .cyber-motion-safe {
3267
+ transition: none !important;
3268
+ animation: none !important;
3269
+ }
3270
+ }
3271
+ @media (prefers-reduced-motion: no-preference) {
3272
+ .cyber-motion-reduce {
3273
+ transition: none !important;
3274
+ animation: none !important;
3275
+ }
3276
+ }
3277
+ }
3278
+ @layer utilities {
3279
+ @keyframes cyber-pulse {
3280
+ 0%, 100% {
3281
+ opacity: 100%;
3282
+ }
3283
+ 50% {
3284
+ opacity: 50%;
3285
+ }
3286
+ }
3287
+ @keyframes cyber-float {
3288
+ 0%, 100% {
3289
+ transform: translateY(0);
3290
+ }
3291
+ 50% {
3292
+ transform: translateY(-10px);
3293
+ }
3294
+ }
3295
+ @keyframes cyber-flicker-in {
3296
+ 0% {
3297
+ opacity: 0%;
3298
+ }
3299
+ 10% {
3300
+ opacity: 60%;
3301
+ }
3302
+ 20% {
3303
+ opacity: 20%;
3304
+ }
3305
+ 30% {
3306
+ opacity: 80%;
3307
+ }
3308
+ 40% {
3309
+ opacity: 40%;
3310
+ }
3311
+ 50% {
3312
+ opacity: 100%;
3313
+ }
3314
+ 60% {
3315
+ opacity: 70%;
3316
+ }
3317
+ 70% {
3318
+ opacity: 100%;
3319
+ }
3320
+ 80% {
3321
+ opacity: 90%;
3322
+ }
3323
+ 100% {
3324
+ opacity: 100%;
3325
+ }
3326
+ }
3327
+ @keyframes cyber-glow-pulse {
3328
+ 0%, 100% {
3329
+ box-shadow: 0 0 5px currentcolor;
3330
+ filter: brightness(1);
3331
+ }
3332
+ 50% {
3333
+ box-shadow: 0 0 20px currentcolor, 0 0 40px currentcolor;
3334
+ filter: brightness(1.2);
3335
+ }
3336
+ }
3337
+ @keyframes cyber-spin {
3338
+ from {
3339
+ transform: rotate(0deg);
3340
+ }
3341
+ to {
3342
+ transform: rotate(360deg);
3343
+ }
3344
+ }
3345
+ @keyframes cyber-ping {
3346
+ 75%, 100% {
3347
+ opacity: 0%;
3348
+ transform: scale(2);
3349
+ }
3350
+ }
3351
+ @keyframes cyber-bounce {
3352
+ 0%, 100% {
3353
+ transform: translateY(-25%);
3354
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
3355
+ }
3356
+ 50% {
3357
+ transform: translateY(0);
3358
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
3359
+ }
3360
+ }
3361
+ .cyber-animate-pulse {
3362
+ animation: cyber-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
3363
+ }
3364
+ .cyber-animate-float {
3365
+ animation: cyber-float 3s ease-in-out infinite;
3366
+ }
3367
+ .cyber-boot {
3368
+ animation: cyber-flicker-in 0.8s ease-out forwards;
3369
+ }
3370
+ .cyber-animate-glow {
3371
+ animation: cyber-glow-pulse 2s ease-in-out infinite;
3372
+ }
3373
+ .cyber-animate-spin {
3374
+ animation: cyber-spin 1s linear infinite;
3375
+ }
3376
+ .cyber-animate-ping {
3377
+ animation: cyber-ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
3378
+ }
3379
+ .cyber-animate-bounce {
3380
+ animation: cyber-bounce 1s infinite;
3381
+ }
3382
+ .cyber-animate-none {
3383
+ animation: none;
3384
+ }
3385
+ .cyber-animate-paused {
3386
+ animation-play-state: paused;
3387
+ }
3388
+ .cyber-animate-running {
3389
+ animation-play-state: running;
3390
+ }
3391
+ .cyber-delay-100 {
3392
+ animation-delay: 100ms;
3393
+ }
3394
+ .cyber-delay-200 {
3395
+ animation-delay: 200ms;
3396
+ }
3397
+ .cyber-delay-300 {
3398
+ animation-delay: 300ms;
3399
+ }
3400
+ .cyber-delay-500 {
3401
+ animation-delay: 500ms;
3402
+ }
3403
+ .cyber-delay-1000 {
3404
+ animation-delay: 1000ms;
3405
+ }
3406
+ .cyber-duration-fast {
3407
+ animation-duration: 150ms;
3408
+ }
3409
+ .cyber-duration-normal {
3410
+ animation-duration: 300ms;
3411
+ }
3412
+ .cyber-duration-slow {
3413
+ animation-duration: 500ms;
3414
+ }
3415
+ .cyber-duration-slower {
3416
+ animation-duration: 1000ms;
3417
+ }
3418
+ .cyber-transition {
3419
+ transition-duration: var(--transition-base);
3420
+ transition-property: color, background-color, border-color, box-shadow, transform, opacity;
3421
+ }
3422
+ .cyber-transition-fast {
3423
+ transition-duration: var(--transition-fast);
3424
+ }
3425
+ .cyber-transition-slow {
3426
+ transition-duration: var(--transition-slow);
3427
+ }
3428
+ .cyber-transition-none {
3429
+ transition: none;
3430
+ }
3431
+ @media (prefers-reduced-motion: reduce) {
3432
+ .cyber-animate-pulse,
3433
+ .cyber-animate-float,
3434
+ .cyber-boot,
3435
+ .cyber-animate-glow,
3436
+ .cyber-animate-spin,
3437
+ .cyber-animate-ping,
3438
+ .cyber-animate-bounce {
3439
+ animation: none;
3440
+ }
3441
+ .cyber-transition {
3442
+ transition: none;
3443
+ }
3444
+ }
3445
+ }
3446
+ @layer utilities {
3447
+ @keyframes cyber-icon-spin {
3448
+ from {
3449
+ transform: rotate(0deg);
3450
+ }
3451
+ to {
3452
+ transform: rotate(360deg);
3453
+ }
3454
+ }
3455
+ @keyframes cyber-icon-pulse {
3456
+ 0%, 100% {
3457
+ opacity: 100%;
3458
+ transform: scale(1);
3459
+ }
3460
+ 50% {
3461
+ opacity: 60%;
3462
+ transform: scale(0.95);
3463
+ }
3464
+ }
3465
+ @keyframes cyber-icon-glitch {
3466
+ 0%, 100% {
3467
+ transform: translate(0);
3468
+ filter: none;
3469
+ }
3470
+ 10% {
3471
+ transform: translate(-2px, 1px);
3472
+ filter: drop-shadow(2px 0 var(--cyber-cyan-500)) drop-shadow(-2px 0 var(--cyber-magenta-500));
3473
+ }
3474
+ 20% {
3475
+ transform: translate(2px, -1px);
3476
+ filter: drop-shadow(-1px 0 var(--cyber-cyan-500)) drop-shadow(1px 0 var(--cyber-magenta-500));
3477
+ }
3478
+ 30% {
3479
+ transform: translate(0);
3480
+ filter: none;
3481
+ }
3482
+ 70% {
3483
+ transform: translate(1px, 1px);
3484
+ filter: drop-shadow(-2px 0 var(--cyber-cyan-500)) drop-shadow(2px 0 var(--cyber-magenta-500));
3485
+ }
3486
+ 80% {
3487
+ transform: translate(-1px, -1px);
3488
+ filter: drop-shadow(1px 0 var(--cyber-cyan-500)) drop-shadow(-1px 0 var(--cyber-magenta-500));
3489
+ }
3490
+ 90% {
3491
+ transform: translate(0);
3492
+ filter: none;
3493
+ }
3494
+ }
3495
+ .cyber-icon--sm {
3496
+ width: 1rem;
3497
+ height: 1rem;
3498
+ }
3499
+ .cyber-icon--md {
3500
+ width: 1.5rem;
3501
+ height: 1.5rem;
3502
+ }
3503
+ .cyber-icon--lg {
3504
+ width: 2rem;
3505
+ height: 2rem;
3506
+ }
3507
+ .cyber-icon--xl {
3508
+ width: 3rem;
3509
+ height: 3rem;
3510
+ }
3511
+ .cyber-icon--cyan {
3512
+ color: var(--cyber-cyan-500);
3513
+ }
3514
+ .cyber-icon--magenta {
3515
+ color: var(--cyber-magenta-500);
3516
+ }
3517
+ .cyber-icon--yellow {
3518
+ color: var(--cyber-yellow-500);
3519
+ }
3520
+ .cyber-icon--green {
3521
+ color: var(--cyber-green-500);
3522
+ }
3523
+ .cyber-icon--spin {
3524
+ animation: cyber-icon-spin 1s linear infinite;
3525
+ }
3526
+ .cyber-icon--pulse {
3527
+ animation: cyber-icon-pulse 2s ease-in-out infinite;
3528
+ }
3529
+ .cyber-icon--glitch {
3530
+ animation: cyber-icon-glitch 3s infinite;
3531
+ }
3532
+ .cyber-icon--inline {
3533
+ display: inline-flex;
3534
+ align-items: center;
3535
+ vertical-align: middle;
3536
+ }
3537
+ @media (prefers-reduced-motion: reduce) {
3538
+ .cyber-icon--spin,
3539
+ .cyber-icon--pulse,
3540
+ .cyber-icon--glitch {
3541
+ animation: none;
3542
+ }
3543
+ }
3544
+ }
3545
+
3546
+ /*# sourceMappingURL=cybercore.css.map */