@nexus-cross/design-system 1.0.4-beta.1 → 1.0.4

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 (327) hide show
  1. package/cursor-rules/nexus-project-setup.mdc +167 -145
  2. package/cursor-rules/nexus-ui-api.mdc +894 -311
  3. package/cursor-rules/nexus-ui-components.mdc +179 -91
  4. package/dist/accordion.js +7 -7
  5. package/dist/accordion.mjs +2 -2
  6. package/dist/alert.d.mts +17 -0
  7. package/dist/alert.d.ts +17 -0
  8. package/dist/alert.js +16 -0
  9. package/dist/alert.mjs +3 -0
  10. package/dist/avatar.js +4 -4
  11. package/dist/avatar.mjs +2 -2
  12. package/dist/badge.d.mts +18 -0
  13. package/dist/badge.d.ts +18 -0
  14. package/dist/badge.js +16 -0
  15. package/dist/badge.mjs +3 -0
  16. package/dist/breadcrumb.d.mts +15 -0
  17. package/dist/breadcrumb.d.ts +15 -0
  18. package/dist/breadcrumb.js +12 -0
  19. package/dist/breadcrumb.mjs +3 -0
  20. package/dist/button.js +4 -4
  21. package/dist/button.mjs +2 -2
  22. package/dist/carousel.js +8 -8
  23. package/dist/carousel.mjs +2 -2
  24. package/dist/checkbox.js +5 -5
  25. package/dist/checkbox.mjs +2 -2
  26. package/dist/chip.d.mts +1 -1
  27. package/dist/chip.d.ts +1 -1
  28. package/dist/chip.js +4 -4
  29. package/dist/chip.mjs +2 -2
  30. package/dist/chunks/{chunk-5TBXVD56.js → chunk-2MC7XJSE.js} +16 -6
  31. package/dist/chunks/chunk-2N2EPBO4.js +120 -0
  32. package/dist/chunks/{chunk-BEA727LO.mjs → chunk-2RPRCWKV.mjs} +57 -26
  33. package/dist/chunks/chunk-2UPGFY6E.mjs +76 -0
  34. package/dist/chunks/{chunk-5I2VRWWU.js → chunk-2ZXDXO4I.js} +32 -38
  35. package/dist/chunks/{chunk-RLP3U52D.mjs → chunk-33UFQJIO.mjs} +22 -40
  36. package/dist/chunks/{chunk-AOVU67NI.mjs → chunk-3HHJORN7.mjs} +23 -25
  37. package/dist/chunks/{chunk-TWHDXCKR.js → chunk-3PCNRCTB.js} +8 -8
  38. package/dist/chunks/chunk-3ZWN66YH.js +53 -0
  39. package/dist/chunks/chunk-4ENXP7WH.js +224 -0
  40. package/dist/chunks/{chunk-YEGPB7A7.js → chunk-5JHJNN2K.js} +4 -4
  41. package/dist/chunks/chunk-5PQ3UCKF.js +99 -0
  42. package/dist/chunks/chunk-6BWOKTVQ.mjs +87 -0
  43. package/dist/chunks/chunk-6DBRL6NA.mjs +81 -0
  44. package/dist/chunks/{chunk-C3E7CSKG.mjs → chunk-6FMDO6TT.mjs} +7 -8
  45. package/dist/chunks/{chunk-76CY4STF.js → chunk-7G65JBTN.js} +34 -66
  46. package/dist/chunks/{chunk-GMIGQ5VP.mjs → chunk-ADO7PDLY.mjs} +15 -35
  47. package/dist/chunks/{chunk-ZINDMFOI.js → chunk-AFSEYJZT.js} +24 -32
  48. package/dist/chunks/chunk-B5O6W3Z4.mjs +73 -0
  49. package/dist/chunks/{chunk-6FHK6CBR.js → chunk-B6G5TJRO.js} +7 -8
  50. package/dist/chunks/chunk-BBLBTOP4.js +205 -0
  51. package/dist/chunks/{chunk-5XVEYVYA.js → chunk-BLGQHR3M.js} +5 -8
  52. package/dist/chunks/{chunk-LVTD2UQN.mjs → chunk-BPUQ2CO2.mjs} +2 -2
  53. package/dist/chunks/{chunk-AWBGWBFS.js → chunk-BSZ2LN6E.js} +21 -27
  54. package/dist/chunks/chunk-C2DSAJTL.js +109 -0
  55. package/dist/chunks/{chunk-KWPIEHD2.mjs → chunk-CA3SOLI3.mjs} +1 -1
  56. package/dist/chunks/{chunk-MPKRXMCJ.js → chunk-CSJDDREF.js} +7 -10
  57. package/dist/chunks/chunk-CUTMLBC3.mjs +86 -0
  58. package/dist/chunks/chunk-CV4GMFWP.js +174 -0
  59. package/dist/chunks/{chunk-SXLMI7CZ.mjs → chunk-CWMLTXOH.mjs} +162 -234
  60. package/dist/chunks/chunk-CZC76ZD5.js +10 -0
  61. package/dist/chunks/chunk-DICN6GKE.js +99 -0
  62. package/dist/chunks/{chunk-TLTEUIBY.js → chunk-DLFV7ZZV.js} +4 -4
  63. package/dist/chunks/chunk-DO6VK2QQ.mjs +108 -0
  64. package/dist/chunks/chunk-DYPPVXQF.js +143 -0
  65. package/dist/chunks/{chunk-GQP7IXH2.mjs → chunk-ECVAVQUY.mjs} +23 -31
  66. package/dist/chunks/{chunk-3CHRUKSJ.mjs → chunk-EHAUUUWB.mjs} +3 -3
  67. package/dist/chunks/chunk-EJY7IVSK.mjs +31 -0
  68. package/dist/chunks/{chunk-G4XJG7XI.js → chunk-EVOOTSY5.js} +3 -10
  69. package/dist/chunks/chunk-FUIBYZZ4.mjs +98 -0
  70. package/dist/chunks/{chunk-VH5FF6DZ.mjs → chunk-GX6GSWX3.mjs} +7 -7
  71. package/dist/chunks/chunk-H2G5FMRN.mjs +75 -0
  72. package/dist/chunks/chunk-H2V7RHYV.mjs +120 -0
  73. package/dist/chunks/{chunk-DDMZSNTG.js → chunk-HFBTS42N.js} +168 -240
  74. package/dist/chunks/{chunk-OGUTGD4J.mjs → chunk-HNLI646G.mjs} +71 -39
  75. package/dist/chunks/{chunk-C6H2UNOX.js → chunk-IE4DGLMH.js} +13 -21
  76. package/dist/chunks/{chunk-U76LT5GE.js → chunk-IOSIQLZL.js} +2 -2
  77. package/dist/chunks/{chunk-ZCMKIB5U.js → chunk-J5ZKGPBY.js} +33 -41
  78. package/dist/chunks/{chunk-JUZHWKGS.mjs → chunk-K2TBLM3F.mjs} +6 -12
  79. package/dist/chunks/chunk-KZ7S5VN2.js +7 -0
  80. package/dist/chunks/{chunk-FHPHDK3O.mjs → chunk-LI7SFBUQ.mjs} +4 -4
  81. package/dist/chunks/{chunk-7OEK2KX3.mjs → chunk-LMMON5AU.mjs} +4 -4
  82. package/dist/chunks/{chunk-6DZVNFVY.js → chunk-LOQXCHKL.js} +4 -12
  83. package/dist/chunks/{chunk-377KBJQG.js → chunk-MA2VCCIY.js} +19 -22
  84. package/dist/chunks/chunk-MCKOWMLS.mjs +8 -0
  85. package/dist/chunks/chunk-MMCA33FW.mjs +85 -0
  86. package/dist/chunks/{chunk-TR5JBBEA.mjs → chunk-MRRKW5QN.mjs} +31 -39
  87. package/dist/chunks/{chunk-76K6KXCT.js → chunk-NFIPQZ4O.js} +1 -1
  88. package/dist/chunks/chunk-NZHK76R3.js +109 -0
  89. package/dist/chunks/{chunk-I7YJB2F5.js → chunk-OMN5YQCE.js} +3 -3
  90. package/dist/chunks/{chunk-B7UU3FSS.mjs → chunk-P2T72N62.mjs} +4 -7
  91. package/dist/chunks/chunk-P3DZKXG4.js +116 -0
  92. package/dist/chunks/chunk-P73MEU7N.mjs +150 -0
  93. package/dist/chunks/chunk-PDJTSQOC.js +59 -0
  94. package/dist/chunks/{chunk-RXVYL4AU.js → chunk-PEIEVKD5.js} +7 -13
  95. package/dist/chunks/chunk-PI464222.mjs +5 -0
  96. package/dist/chunks/{chunk-IJG7J2VU.mjs → chunk-QZ4QR3XV.mjs} +30 -36
  97. package/dist/chunks/{chunk-6NTASYZO.js → chunk-RS3SBY3I.js} +61 -30
  98. package/dist/chunks/{chunk-AKIBUO5A.mjs → chunk-RX5UKRYK.mjs} +19 -26
  99. package/dist/chunks/chunk-S2GMEC43.js +109 -0
  100. package/dist/chunks/{chunk-WJ2OVQD3.mjs → chunk-SGNRVYYQ.mjs} +19 -25
  101. package/dist/chunks/{chunk-IB5UCYQY.mjs → chunk-SJMCPSVH.mjs} +15 -5
  102. package/dist/chunks/chunk-UKRU46PH.mjs +182 -0
  103. package/dist/chunks/{chunk-WNFJ4NJN.mjs → chunk-ULGYTBCT.mjs} +3 -11
  104. package/dist/chunks/{chunk-TXYYBJBQ.js → chunk-VGO4Z2WH.js} +73 -41
  105. package/dist/chunks/{chunk-LBKBCI2K.mjs → chunk-VIGRCJAE.mjs} +3 -10
  106. package/dist/chunks/chunk-VVXQZ4XH.mjs +93 -0
  107. package/dist/chunks/{chunk-Z7OKV6NW.mjs → chunk-W4GG5A7K.mjs} +12 -20
  108. package/dist/chunks/chunk-WGGBE4ZD.mjs +201 -0
  109. package/dist/chunks/{chunk-WSWD5ZUJ.js → chunk-WKCXACMZ.js} +20 -27
  110. package/dist/chunks/{chunk-GSLIY6WW.js → chunk-X2SHTVZQ.js} +17 -37
  111. package/dist/chunks/chunk-X3CTJ7TD.js +108 -0
  112. package/dist/chunks/{chunk-U6KOUYWX.mjs → chunk-XG6QG65W.mjs} +7 -10
  113. package/dist/chunks/chunk-XGIJZ3NZ.js +160 -0
  114. package/dist/chunks/chunk-YB5ZKHVB.js +64 -0
  115. package/dist/chunks/{chunk-Q7H6LCNN.js → chunk-YCG4FZC3.js} +23 -25
  116. package/dist/chunks/{chunk-JZ3PWHKS.mjs → chunk-YLO4UKSC.mjs} +18 -21
  117. package/dist/chunks/chunk-YO5MSDPX.mjs +36 -0
  118. package/dist/chunks/{chunk-Q2TMXHPK.js → chunk-YZV6FWE7.js} +25 -43
  119. package/dist/chunks/chunk-ZI4LN2B2.js +96 -0
  120. package/dist/chunks/chunk-ZU4AWAFT.mjs +137 -0
  121. package/dist/chunks/chunk-ZWSIIGA3.mjs +58 -0
  122. package/dist/countdown.js +4 -4
  123. package/dist/countdown.mjs +2 -2
  124. package/dist/counter.js +2 -2
  125. package/dist/counter.mjs +1 -1
  126. package/dist/data-list.js +5 -5
  127. package/dist/data-list.mjs +4 -4
  128. package/dist/date-picker.d.mts +17 -0
  129. package/dist/date-picker.d.ts +17 -0
  130. package/dist/date-picker.js +12 -0
  131. package/dist/date-picker.mjs +3 -0
  132. package/dist/divider.js +4 -4
  133. package/dist/divider.mjs +2 -2
  134. package/dist/drawer.d.mts +1 -1
  135. package/dist/drawer.d.ts +1 -1
  136. package/dist/drawer.js +11 -11
  137. package/dist/drawer.mjs +2 -2
  138. package/dist/dropdown-menu.d.mts +30 -0
  139. package/dist/dropdown-menu.d.ts +30 -0
  140. package/dist/dropdown-menu.js +32 -0
  141. package/dist/dropdown-menu.mjs +3 -0
  142. package/dist/ellipsis.js +3 -3
  143. package/dist/ellipsis.mjs +2 -2
  144. package/dist/empty-state.d.mts +16 -0
  145. package/dist/empty-state.d.ts +16 -0
  146. package/dist/empty-state.js +16 -0
  147. package/dist/empty-state.mjs +3 -0
  148. package/dist/error-boundary.d.mts +1 -1
  149. package/dist/error-boundary.d.ts +1 -1
  150. package/dist/error-boundary.js +2 -2
  151. package/dist/error-boundary.mjs +1 -1
  152. package/dist/index.d.mts +15 -0
  153. package/dist/index.d.ts +15 -0
  154. package/dist/index.js +322 -200
  155. package/dist/index.mjs +49 -35
  156. package/dist/infinite-scroll.js +3 -3
  157. package/dist/infinite-scroll.mjs +2 -2
  158. package/dist/marquee.js +3 -3
  159. package/dist/marquee.mjs +2 -2
  160. package/dist/modal/index.js +13 -13
  161. package/dist/modal/index.mjs +4 -4
  162. package/dist/number-input.d.mts +1 -1
  163. package/dist/number-input.d.ts +1 -1
  164. package/dist/number-input.js +5 -5
  165. package/dist/number-input.mjs +2 -2
  166. package/dist/nx-image.d.mts +13 -0
  167. package/dist/nx-image.d.ts +13 -0
  168. package/dist/nx-image.js +12 -0
  169. package/dist/nx-image.mjs +3 -0
  170. package/dist/pagination.d.mts +1 -0
  171. package/dist/pagination.d.ts +1 -0
  172. package/dist/pagination.js +5 -5
  173. package/dist/pagination.mjs +2 -2
  174. package/dist/popover.d.mts +1 -1
  175. package/dist/popover.d.ts +1 -1
  176. package/dist/popover.js +8 -8
  177. package/dist/popover.mjs +2 -2
  178. package/dist/price-input.d.mts +36 -0
  179. package/dist/price-input.d.ts +36 -0
  180. package/dist/price-input.js +16 -0
  181. package/dist/price-input.mjs +3 -0
  182. package/dist/progress.d.mts +18 -0
  183. package/dist/progress.d.ts +18 -0
  184. package/dist/progress.js +16 -0
  185. package/dist/progress.mjs +3 -0
  186. package/dist/radio-group.js +6 -6
  187. package/dist/radio-group.mjs +2 -2
  188. package/dist/schemas/_all.json +2356 -404
  189. package/dist/schemas/accordion.json +14 -11
  190. package/dist/schemas/alert.json +49 -0
  191. package/dist/schemas/avatar.json +13 -7
  192. package/dist/schemas/badge.json +76 -0
  193. package/dist/schemas/breadcrumb.json +47 -0
  194. package/dist/schemas/button.json +27 -9
  195. package/dist/schemas/carousel.json +10 -4
  196. package/dist/schemas/carouselButton.json +20 -0
  197. package/dist/schemas/carouselDots.json +17 -0
  198. package/dist/schemas/carouselSlide.json +20 -0
  199. package/dist/schemas/checkBox.json +33 -8
  200. package/dist/schemas/chip.json +15 -6
  201. package/dist/schemas/clientOnly.json +19 -0
  202. package/dist/schemas/countdown.json +10 -7
  203. package/dist/schemas/counter.json +15 -9
  204. package/dist/schemas/dataList.json +10 -10
  205. package/dist/schemas/datePicker.json +56 -0
  206. package/dist/schemas/divider.json +8 -5
  207. package/dist/schemas/drawer.json +24 -2
  208. package/dist/schemas/drawerClose.json +24 -0
  209. package/dist/schemas/drawerContent.json +9 -6
  210. package/dist/schemas/drawerDescription.json +20 -0
  211. package/dist/schemas/drawerTitle.json +20 -0
  212. package/dist/schemas/drawerTrigger.json +24 -0
  213. package/dist/schemas/dropdownMenu.json +83 -0
  214. package/dist/schemas/ellipsis.json +17 -7
  215. package/dist/schemas/emptyState.json +44 -0
  216. package/dist/schemas/errorBoundary.json +22 -0
  217. package/dist/schemas/infiniteScroll.json +18 -9
  218. package/dist/schemas/marquee.json +12 -6
  219. package/dist/schemas/modalCall.json +81 -3
  220. package/dist/schemas/modalTemplate.json +67 -14
  221. package/dist/schemas/numberInput.json +42 -12
  222. package/dist/schemas/nxImage.json +56 -0
  223. package/dist/schemas/pagination.json +13 -6
  224. package/dist/schemas/popover.json +18 -9
  225. package/dist/schemas/priceInput.json +104 -0
  226. package/dist/schemas/progress.json +63 -0
  227. package/dist/schemas/radioGroup.json +19 -9
  228. package/dist/schemas/radioItem.json +12 -5
  229. package/dist/schemas/select.json +15 -9
  230. package/dist/schemas/selectItem.json +7 -4
  231. package/dist/schemas/skeleton.json +12 -6
  232. package/dist/schemas/slider.json +78 -0
  233. package/dist/schemas/spinner.json +11 -4
  234. package/dist/schemas/stepper.json +73 -0
  235. package/dist/schemas/switch.json +23 -5
  236. package/dist/schemas/tab.json +17 -14
  237. package/dist/schemas/table.json +75 -0
  238. package/dist/schemas/tableRow.json +32 -0
  239. package/dist/schemas/tagInput.json +70 -0
  240. package/dist/schemas/tdColumn.json +107 -0
  241. package/dist/schemas/textArea.json +72 -7
  242. package/dist/schemas/textInput.json +72 -10
  243. package/dist/schemas/themeProvider.json +65 -0
  244. package/dist/schemas/toastOptions.json +81 -0
  245. package/dist/schemas/toaster.json +76 -0
  246. package/dist/schemas/toggleGroup.json +88 -0
  247. package/dist/schemas/tooltip.json +12 -9
  248. package/dist/schemas/virtualGrid.json +22 -11
  249. package/dist/schemas/virtualList.json +14 -8
  250. package/dist/schemas.d.mts +1360 -81
  251. package/dist/schemas.d.ts +1360 -81
  252. package/dist/schemas.js +725 -273
  253. package/dist/schemas.mjs +698 -273
  254. package/dist/select.js +6 -6
  255. package/dist/select.mjs +2 -2
  256. package/dist/skeleton.js +3 -3
  257. package/dist/skeleton.mjs +2 -2
  258. package/dist/slider.d.mts +20 -0
  259. package/dist/slider.d.ts +20 -0
  260. package/dist/slider.js +16 -0
  261. package/dist/slider.mjs +3 -0
  262. package/dist/spinner.js +3 -3
  263. package/dist/spinner.mjs +2 -2
  264. package/dist/stepper.d.mts +20 -0
  265. package/dist/stepper.d.ts +20 -0
  266. package/dist/stepper.js +16 -0
  267. package/dist/stepper.mjs +3 -0
  268. package/dist/styles/layer.d.mts +3 -0
  269. package/dist/styles/layer.d.ts +3 -0
  270. package/dist/styles/layer.js +18 -0
  271. package/dist/styles/layer.mjs +16 -0
  272. package/dist/styles.css +3872 -2
  273. package/dist/styles.js +2 -5
  274. package/dist/styles.layered.css +3875 -0
  275. package/dist/styles.mjs +1 -4
  276. package/dist/switch.js +4 -4
  277. package/dist/switch.mjs +2 -2
  278. package/dist/tab.js +5 -5
  279. package/dist/tab.mjs +2 -2
  280. package/dist/table.d.mts +2 -2
  281. package/dist/table.d.ts +2 -2
  282. package/dist/table.js +9 -9
  283. package/dist/table.mjs +3 -3
  284. package/dist/tag-input.d.mts +21 -0
  285. package/dist/tag-input.d.ts +21 -0
  286. package/dist/tag-input.js +16 -0
  287. package/dist/tag-input.mjs +3 -0
  288. package/dist/text-area.d.mts +5 -1
  289. package/dist/text-area.d.ts +5 -1
  290. package/dist/text-area.js +4 -4
  291. package/dist/text-area.mjs +2 -2
  292. package/dist/text-input.d.mts +5 -1
  293. package/dist/text-input.d.ts +5 -1
  294. package/dist/text-input.js +4 -4
  295. package/dist/text-input.mjs +2 -2
  296. package/dist/toast.js +5 -5
  297. package/dist/toast.mjs +2 -2
  298. package/dist/toggle-group.d.mts +36 -0
  299. package/dist/toggle-group.d.ts +36 -0
  300. package/dist/toggle-group.js +16 -0
  301. package/dist/toggle-group.mjs +3 -0
  302. package/dist/tooltip.js +5 -5
  303. package/dist/tooltip.mjs +2 -2
  304. package/dist/utils/cn.d.mts +0 -10
  305. package/dist/utils/cn.d.ts +0 -10
  306. package/dist/utils/cn.js +2 -2
  307. package/dist/utils/cn.mjs +1 -1
  308. package/dist/virtual-scroll.js +4 -4
  309. package/dist/virtual-scroll.mjs +2 -2
  310. package/package.json +90 -17
  311. package/scripts/setup-cursor-rules.cjs +6 -6
  312. package/dist/chunks/chunk-7MT3QYE6.js +0 -92
  313. package/dist/chunks/chunk-FA2OPP3U.mjs +0 -140
  314. package/dist/chunks/chunk-FKZI2HTI.js +0 -104
  315. package/dist/chunks/chunk-NCQDOPBR.mjs +0 -86
  316. package/dist/chunks/chunk-NTN55ZIX.mjs +0 -113
  317. package/dist/chunks/chunk-Q7GQVAYY.js +0 -88
  318. package/dist/chunks/chunk-QJNQCLMV.js +0 -25
  319. package/dist/chunks/chunk-UDQXLI5Y.mjs +0 -81
  320. package/dist/chunks/chunk-UR6JOKVB.mjs +0 -65
  321. package/dist/chunks/chunk-WVIEIRK2.js +0 -136
  322. package/dist/chunks/chunk-XALPBGSC.mjs +0 -23
  323. package/dist/schemas/typography.json +0 -70
  324. package/dist/typography.d.mts +0 -19
  325. package/dist/typography.d.ts +0 -19
  326. package/dist/typography.js +0 -102
  327. package/dist/typography.mjs +0 -79
package/dist/styles.css CHANGED
@@ -1,2 +1,3872 @@
1
- /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--nx-font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--nx-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--nx-color-white:#fff;--nx-spacing:.25rem;--nx-container-sm:24rem;--nx-text-xs:.75rem;--nx-text-xs--line-height:calc(1 / .75);--nx-text-sm:.875rem;--nx-text-sm--line-height:calc(1.25 / .875);--nx-text-base:1rem;--nx-text-base--line-height:calc(1.5 / 1);--nx-text-lg:1.125rem;--nx-text-lg--line-height:calc(1.75 / 1.125);--nx-text-xl:1.25rem;--nx-text-xl--line-height:calc(1.75 / 1.25);--nx-text-2xl:1.5rem;--nx-text-2xl--line-height:calc(2 / 1.5);--nx-text-3xl:1.875rem;--nx-text-3xl--line-height:calc(2.25 / 1.875);--nx-text-4xl:2.25rem;--nx-text-4xl--line-height:calc(2.5 / 2.25);--nx-font-weight-normal:400;--nx-font-weight-medium:500;--nx-font-weight-semibold:600;--nx-font-weight-bold:700;--nx-tracking-tight:-.025em;--nx-tracking-widest:.1em;--nx-leading-relaxed:1.625;--nx-radius-md:.375rem;--nx-radius-lg:.5rem;--nx-radius-2xl:1rem;--nx-animate-spin:spin 1s linear infinite;--nx-blur-sm:8px;--nx-blur-md:12px;--nx-default-transition-duration:.15s;--nx-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--nx-default-font-family:var(--nx-font-sans);--nx-default-mono-font-family:var(--nx-font-mono);--nx-animate-in:nexus-enter .2s ease-out;--nx-animate-out:nexus-exit .15s ease-in forwards;--nx-animate-accordion-down:nexus-accordion-down .2s ease-out;--nx-animate-accordion-up:nexus-accordion-up .2s ease-in;--nx-animate-skeleton:nexus-skeleton-shimmer 2.5s ease-in-out infinite;--nx-color-surface-default:var(--color-surface-default);--nx-color-surface-hover:var(--color-surface-hover,var(--color-surface-subtle));--nx-color-surface-pressed:var(--color-surface-pressed,var(--color-surface-strong));--nx-color-text-primary:var(--color-text-primary);--nx-color-text-secondary:var(--color-text-secondary);--nx-color-text-tertiary:var(--color-text-tertiary);--nx-color-text-muted:var(--color-text-muted);--nx-color-border-default:var(--color-border-default);--nx-color-border-strong:var(--color-border-strong);--nx-color-accent-primary:var(--color-accent-primary);--nx-color-accent-on-primary:var(--color-accent-on-primary);--nx-color-accent-primary-focus:var(--color-accent-primary-focus,var(--color-accent-primary));--nx-color-accent-secondary-focus:var(--color-accent-secondary-focus,var(--color-accent-secondary));--nx-color-static-black:var(--color-static-black,#000);--nx-color-static-white:var(--color-static-white,#fff);--nx-color-status-danger-focus:var(--color-status-danger-focus,var(--color-status-danger));--nx-color-status-positive:var(--color-status-positive,var(--color-status-success));--nx-color-status-negative:var(--color-status-negative,var(--color-status-danger));--nx-color-status-caution:var(--color-status-caution,var(--color-status-warning));--nx-radius-corner-lg:var(--radius-corner-lg,12px);--nx-text-text-lg:var(--text-text-lg,1.125rem);--nx-color-comp-btn-focus-ring:var(--color-comp-btn-focus-ring,var(--color-accent-primary));--nx-color-comp-btn-primary-base:var(--color-comp-btn-primary-base,var(--color-accent-primary));--nx-color-comp-btn-primary-hover:var(--color-comp-btn-primary-hover,var(--color-accent-primary-hover));--nx-color-comp-btn-primary-pressed:var(--color-comp-btn-primary-pressed,var(--color-accent-primary-pressed));--nx-color-comp-btn-primary-on:var(--color-comp-btn-primary-on,var(--color-accent-on-primary));--nx-color-comp-btn-primary-text:var(--color-comp-btn-primary-text,var(--color-accent-primary-intense));--nx-color-comp-btn-primary-subtle-fill:var(--color-comp-btn-primary-subtle-fill,var(--color-accent-primary-disabled));--nx-color-comp-btn-primary-subtle-bg:var(--color-comp-btn-primary-subtle-bg,var(--color-accent-primary-bg));--nx-color-comp-btn-secondary-base:var(--color-comp-btn-secondary-base,var(--color-accent-secondary));--nx-color-comp-btn-secondary-hover:var(--color-comp-btn-secondary-hover,var(--color-accent-secondary-hover));--nx-color-comp-btn-secondary-pressed:var(--color-comp-btn-secondary-pressed,var(--color-accent-secondary-pressed));--nx-color-comp-btn-secondary-on:var(--color-comp-btn-secondary-on,var(--color-accent-on-secondary));--nx-color-comp-btn-secondary-text:var(--color-comp-btn-secondary-text,var(--color-accent-secondary-intense));--nx-color-comp-btn-secondary-subtle-fill:var(--color-comp-btn-secondary-subtle-fill,var(--color-accent-secondary-disabled));--nx-color-comp-btn-secondary-subtle-bg:var(--color-comp-btn-secondary-subtle-bg,var(--color-accent-secondary-bg));--nx-color-comp-btn-normal-base:var(--color-comp-btn-normal-base,var(--color-surface-subtle));--nx-color-comp-btn-normal-hover:var(--color-comp-btn-normal-hover,var(--color-surface-subtle-hover));--nx-color-comp-btn-normal-pressed:var(--color-comp-btn-normal-pressed,var(--color-surface-subtle-hover));--nx-color-comp-btn-normal-on:var(--color-comp-btn-normal-on,var(--color-text-primary));--nx-color-comp-btn-normal-text:var(--color-comp-btn-normal-text,var(--color-text-primary));--nx-color-comp-btn-normal-subtle-fill:var(--color-comp-btn-normal-subtle-fill,var(--color-surface-subtle));--nx-color-comp-btn-normal-subtle-bg:var(--color-comp-btn-normal-subtle-bg,var(--color-surface-subtle-hover));--nx-color-comp-btn-normal-border:var(--color-comp-btn-normal-border,var(--color-border-default));--nx-color-comp-btn-normal-border-hover:var(--color-comp-btn-normal-border-hover,var(--color-border-default-hover));--nx-color-comp-btn-danger-base:var(--color-comp-btn-danger-base,var(--color-status-danger));--nx-color-comp-btn-danger-hover:var(--color-comp-btn-danger-hover,var(--color-status-danger-hover));--nx-color-comp-btn-danger-pressed:var(--color-comp-btn-danger-pressed,var(--color-status-danger-pressed));--nx-color-comp-btn-danger-on:var(--color-comp-btn-danger-on,var(--color-static-white));--nx-color-comp-btn-danger-text:var(--color-comp-btn-danger-text,var(--color-status-danger-intense));--nx-color-comp-btn-danger-subtle-fill:var(--color-comp-btn-danger-subtle-fill,var(--color-status-danger-disabled));--nx-color-comp-btn-danger-subtle-bg:var(--color-comp-btn-danger-subtle-bg,var(--color-status-danger-bg));--nx-radius-comp-btn-xl:var(--radius-comp-btn-xl,.75rem);--nx-radius-comp-btn-lg:var(--radius-comp-btn-lg,.5rem);--nx-radius-comp-btn-md:var(--radius-comp-btn-md,.5rem);--nx-radius-comp-btn-sm:var(--radius-comp-btn-sm,.25rem);--nx-spacing-comp-btn-gap:var(--spacing-comp-btn-gap,.5rem);--nx-spacing-comp-btn-xl-h:var(--spacing-comp-btn-xl-h,3rem);--nx-spacing-comp-btn-xl-px:var(--spacing-comp-btn-xl-px,1.5rem);--nx-spacing-comp-btn-lg-h:var(--spacing-comp-btn-lg-h,2.5rem);--nx-spacing-comp-btn-lg-px:var(--spacing-comp-btn-lg-px,1.5rem);--nx-spacing-comp-btn-md-h:var(--spacing-comp-btn-md-h,1.875rem);--nx-spacing-comp-btn-md-px:var(--spacing-comp-btn-md-px,.75rem);--nx-spacing-comp-btn-sm-px:var(--spacing-comp-btn-sm-px,.5rem);--nx-spacing-comp-btn-sm-py:var(--spacing-comp-btn-sm-py,.25rem);--nx-text-comp-btn-xl:var(--text-comp-btn-xl,1rem);--nx-text-comp-btn-lg:var(--text-comp-btn-lg,1rem);--nx-text-comp-btn-md:var(--text-comp-btn-md,.875rem);--nx-text-comp-btn-sm:var(--text-comp-btn-sm,.75rem);--nx-opacity-comp-btn-disabled:var(--opacity-comp-btn-disabled,.5)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--nx-default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--nx-default-font-feature-settings,normal);font-variation-settings:var(--nx-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--nx-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--nx-default-mono-font-feature-settings,normal);font-variation-settings:var(--nx-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.nx\:pointer-events-auto{pointer-events:auto}.nx\:pointer-events-none{pointer-events:none}.nx\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.nx\:absolute{position:absolute}.nx\:fixed{position:fixed}.nx\:relative{position:relative}.nx\:inset-0{inset:calc(var(--nx-spacing) * 0)}.nx\:inset-x-0{inset-inline:calc(var(--nx-spacing) * 0)}.nx\:inset-y-0{inset-block:calc(var(--nx-spacing) * 0)}.nx\:top-0{top:calc(var(--nx-spacing) * 0)}.nx\:top-1\/2{top:50%}.nx\:top-6{top:calc(var(--nx-spacing) * 6)}.nx\:right-0{right:calc(var(--nx-spacing) * 0)}.nx\:right-2{right:calc(var(--nx-spacing) * 2)}.nx\:right-5{right:calc(var(--nx-spacing) * 5)}.nx\:bottom-0{bottom:calc(var(--nx-spacing) * 0)}.nx\:left-0{left:calc(var(--nx-spacing) * 0)}.nx\:left-2{left:calc(var(--nx-spacing) * 2)}.nx\:z-10{z-index:10}.nx\:z-50{z-index:50}.nx\:z-\[1\]{z-index:1}.nx\:z-\[2\]{z-index:2}.nx\:z-\[9999\]{z-index:9999}.nx\:z-\[99999\]{z-index:99999}.nx\:m-0{margin:calc(var(--nx-spacing) * 0)}.nx\:mx-0{margin-inline:calc(var(--nx-spacing) * 0)}.nx\:mx-0\.5{margin-inline:calc(var(--nx-spacing) * .5)}.nx\:my-0{margin-block:calc(var(--nx-spacing) * 0)}.nx\:mt-1{margin-top:calc(var(--nx-spacing) * 1)}.nx\:mt-3{margin-top:calc(var(--nx-spacing) * 3)}.nx\:mt-6{margin-top:calc(var(--nx-spacing) * 6)}.nx\:mt-24{margin-top:calc(var(--nx-spacing) * 24)}.nx\:mr-24{margin-right:calc(var(--nx-spacing) * 24)}.nx\:-mb-px{margin-bottom:-1px}.nx\:mb-24{margin-bottom:calc(var(--nx-spacing) * 24)}.nx\:ml-0\.5{margin-left:calc(var(--nx-spacing) * .5)}.nx\:ml-24{margin-left:calc(var(--nx-spacing) * 24)}.nx\:ml-auto{margin-left:auto}.nx\:block{display:block}.nx\:contents{display:contents}.nx\:flex{display:flex}.nx\:hidden{display:none}.nx\:inline-flex{display:inline-flex}.nx\:size-1\.5{width:calc(var(--nx-spacing) * 1.5);height:calc(var(--nx-spacing) * 1.5)}.nx\:size-2{width:calc(var(--nx-spacing) * 2);height:calc(var(--nx-spacing) * 2)}.nx\:size-3{width:calc(var(--nx-spacing) * 3);height:calc(var(--nx-spacing) * 3)}.nx\:size-3\.5{width:calc(var(--nx-spacing) * 3.5);height:calc(var(--nx-spacing) * 3.5)}.nx\:size-4{width:calc(var(--nx-spacing) * 4);height:calc(var(--nx-spacing) * 4)}.nx\:size-5{width:calc(var(--nx-spacing) * 5);height:calc(var(--nx-spacing) * 5)}.nx\:size-6{width:calc(var(--nx-spacing) * 6);height:calc(var(--nx-spacing) * 6)}.nx\:size-7{width:calc(var(--nx-spacing) * 7);height:calc(var(--nx-spacing) * 7)}.nx\:size-8{width:calc(var(--nx-spacing) * 8);height:calc(var(--nx-spacing) * 8)}.nx\:size-9{width:calc(var(--nx-spacing) * 9);height:calc(var(--nx-spacing) * 9)}.nx\:size-10{width:calc(var(--nx-spacing) * 10);height:calc(var(--nx-spacing) * 10)}.nx\:size-12{width:calc(var(--nx-spacing) * 12);height:calc(var(--nx-spacing) * 12)}.nx\:size-16{width:calc(var(--nx-spacing) * 16);height:calc(var(--nx-spacing) * 16)}.nx\:size-full{width:100%;height:100%}.nx\:h-1\.5{height:calc(var(--nx-spacing) * 1.5)}.nx\:h-3{height:calc(var(--nx-spacing) * 3)}.nx\:h-3\.5{height:calc(var(--nx-spacing) * 3.5)}.nx\:h-4{height:calc(var(--nx-spacing) * 4)}.nx\:h-5{height:calc(var(--nx-spacing) * 5)}.nx\:h-6{height:calc(var(--nx-spacing) * 6)}.nx\:h-7{height:calc(var(--nx-spacing) * 7)}.nx\:h-8{height:calc(var(--nx-spacing) * 8)}.nx\:h-10{height:calc(var(--nx-spacing) * 10)}.nx\:h-12{height:calc(var(--nx-spacing) * 12)}.nx\:h-comp-btn-lg-h{height:var(--nx-spacing-comp-btn-lg-h)}.nx\:h-comp-btn-md-h{height:var(--nx-spacing-comp-btn-md-h)}.nx\:h-comp-btn-xl-h{height:var(--nx-spacing-comp-btn-xl-h)}.nx\:h-full{height:100%}.nx\:h-px{height:1px}.nx\:h-screen{height:100vh}.nx\:max-h-96{max-height:calc(var(--nx-spacing) * 96)}.nx\:max-h-\[calc\(90vh-var\(--ft-height\,88px\)\)\]{max-height:calc(90vh - var(--ft-height,88px))}.nx\:max-h-\[calc\(90vh-var\(--ft-height\,88px\)-var\(--hd-height\,60px\)\)\]{max-height:calc(90vh - var(--ft-height,88px) - var(--hd-height,60px))}.nx\:max-h-\[calc\(90vh-var\(--hd-height\,60px\)\)\]{max-height:calc(90vh - var(--hd-height,60px))}.nx\:max-h-\[calc\(100\%-var\(--hd-height\,60px\)\)\]{max-height:calc(100% - var(--hd-height,60px))}.nx\:max-h-\[calc\(100vh-108px\)\]{max-height:calc(100vh - 108px)}.nx\:max-h-\[calc\(100vh-var\(--ft-height\,88px\)-var\(--hd-height\,60px\)\)\]{max-height:calc(100vh - var(--ft-height,88px) - var(--hd-height,60px))}.nx\:max-h-\[calc\(100vh-var\(--ft-height\,88px\)-var\(--hd-height\,60px\)-100px\)\]{max-height:calc(100vh - var(--ft-height,88px) - var(--hd-height,60px) - 100px)}.nx\:max-h-\[calc\(100vh-var\(--hd-height\,60px\)\)\]{max-height:calc(100vh - var(--hd-height,60px))}.nx\:max-h-\[calc\(100vh-var\(--hd-height\,60px\)-124px\)\]{max-height:calc(100vh - var(--hd-height,60px) - 124px)}.nx\:max-h-full{max-height:100%}.nx\:min-h-\[200px\]{min-height:200px}.nx\:w-3{width:calc(var(--nx-spacing) * 3)}.nx\:w-3\.5{width:calc(var(--nx-spacing) * 3.5)}.nx\:w-5{width:calc(var(--nx-spacing) * 5)}.nx\:w-6{width:calc(var(--nx-spacing) * 6)}.nx\:w-8{width:calc(var(--nx-spacing) * 8)}.nx\:w-9{width:calc(var(--nx-spacing) * 9)}.nx\:w-11{width:calc(var(--nx-spacing) * 11)}.nx\:w-12{width:calc(var(--nx-spacing) * 12)}.nx\:w-16{width:calc(var(--nx-spacing) * 16)}.nx\:w-32{width:calc(var(--nx-spacing) * 32)}.nx\:w-48{width:calc(var(--nx-spacing) * 48)}.nx\:w-\[85vw\]{width:85vw}.nx\:w-\[calc\(100\%-30px\)\]{width:calc(100% - 30px)}.nx\:w-\[var\(--radix-popper-anchor-width\)\]{width:var(--radix-popper-anchor-width)}.nx\:w-full{width:100%}.nx\:w-screen{width:100vw}.nx\:max-w-sm{max-width:var(--nx-container-sm)}.nx\:min-w-0{min-width:calc(var(--nx-spacing) * 0)}.nx\:min-w-\[320px\]{min-width:320px}.nx\:flex-1{flex:1}.nx\:shrink-0{flex-shrink:0}.nx\:grow-0{flex-grow:0}.nx\:basis-full{flex-basis:100%}.nx\:translate-x-0{--tw-translate-x:calc(var(--nx-spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.nx\:translate-x-4{--tw-translate-x:calc(var(--nx-spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.nx\:translate-x-5{--tw-translate-x:calc(var(--nx-spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.nx\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.nx\:rotate-180{rotate:180deg}.nx\:animate-skeleton{animation:var(--nx-animate-skeleton)}.nx\:animate-spin{animation:var(--nx-animate-spin)}.nx\:cursor-default{cursor:default}.nx\:cursor-grab{cursor:grab}.nx\:cursor-not-allowed{cursor:not-allowed}.nx\:cursor-pointer{cursor:pointer}.nx\:resize-none{resize:none}.nx\:flex-col{flex-direction:column}.nx\:flex-row{flex-direction:row}.nx\:flex-row-reverse{flex-direction:row-reverse}.nx\:items-center{align-items:center}.nx\:items-end{align-items:flex-end}.nx\:justify-between{justify-content:space-between}.nx\:justify-center{justify-content:center}.nx\:justify-end{justify-content:flex-end}.nx\:justify-start{justify-content:flex-start}.nx\:gap-1{gap:calc(var(--nx-spacing) * 1)}.nx\:gap-1\.5{gap:calc(var(--nx-spacing) * 1.5)}.nx\:gap-2{gap:calc(var(--nx-spacing) * 2)}.nx\:gap-3{gap:calc(var(--nx-spacing) * 3)}.nx\:gap-4{gap:calc(var(--nx-spacing) * 4)}.nx\:gap-comp-btn-gap{gap:var(--nx-spacing-comp-btn-gap)}.nx\:self-stretch{align-self:stretch}.nx\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.nx\:overflow-auto{overflow:auto}.nx\:overflow-hidden{overflow:hidden}.nx\:overflow-visible{overflow:visible}.nx\:overflow-x-auto{overflow-x:auto}.nx\:overflow-y-auto{overflow-y:auto}.nx\:\!rounded-full{border-radius:3.40282e38px!important}.nx\:rounded{border-radius:.25rem}.nx\:rounded-comp-btn-lg{border-radius:var(--nx-radius-comp-btn-lg)}.nx\:rounded-comp-btn-md{border-radius:var(--nx-radius-comp-btn-md)}.nx\:rounded-comp-btn-sm{border-radius:var(--nx-radius-comp-btn-sm)}.nx\:rounded-comp-btn-xl{border-radius:var(--nx-radius-comp-btn-xl)}.nx\:rounded-corner-lg{border-radius:var(--nx-radius-corner-lg)}.nx\:rounded-full{border-radius:3.40282e38px}.nx\:rounded-lg{border-radius:var(--nx-radius-lg)}.nx\:rounded-md{border-radius:var(--nx-radius-md)}.nx\:rounded-none{border-radius:0}.nx\:rounded-t-2xl{border-top-left-radius:var(--nx-radius-2xl);border-top-right-radius:var(--nx-radius-2xl)}.nx\:rounded-l-2xl{border-top-left-radius:var(--nx-radius-2xl);border-bottom-left-radius:var(--nx-radius-2xl)}.nx\:rounded-r-2xl{border-top-right-radius:var(--nx-radius-2xl);border-bottom-right-radius:var(--nx-radius-2xl)}.nx\:rounded-tr-md{border-top-right-radius:var(--nx-radius-md)}.nx\:rounded-b-2xl{border-bottom-right-radius:var(--nx-radius-2xl);border-bottom-left-radius:var(--nx-radius-2xl)}.nx\:rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.nx\:rounded-br-md{border-bottom-right-radius:var(--nx-radius-md)}.nx\:border{border-style:var(--tw-border-style);border-width:1px}.nx\:border-2{border-style:var(--tw-border-style);border-width:2px}.nx\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.nx\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.nx\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.nx\:border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.nx\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.nx\:border-dashed{--tw-border-style:dashed;border-style:dashed}.nx\:border-dotted{--tw-border-style:dotted;border-style:dotted}.nx\:border-none{--tw-border-style:none;border-style:none}.nx\:border-solid{--tw-border-style:solid;border-style:solid}.nx\:border-\[var\(--_btn-border\)\]{border-color:var(--_btn-border)}.nx\:border-accent-primary,.nx\:border-accent-primary\/30{border-color:var(--nx-color-accent-primary)}@supports (color:color-mix(in lab, red, red)){.nx\:border-accent-primary\/30{border-color:color-mix(in oklab, var(--nx-color-accent-primary) 30%, transparent)}}.nx\:border-border-default{border-color:var(--nx-color-border-default)}.nx\:border-status-caution\/30{border-color:var(--nx-color-status-caution)}@supports (color:color-mix(in lab, red, red)){.nx\:border-status-caution\/30{border-color:color-mix(in oklab, var(--nx-color-status-caution) 30%, transparent)}}.nx\:border-status-negative,.nx\:border-status-negative\/30{border-color:var(--nx-color-status-negative)}@supports (color:color-mix(in lab, red, red)){.nx\:border-status-negative\/30{border-color:color-mix(in oklab, var(--nx-color-status-negative) 30%, transparent)}}.nx\:border-status-positive\/30{border-color:var(--nx-color-status-positive)}@supports (color:color-mix(in lab, red, red)){.nx\:border-status-positive\/30{border-color:color-mix(in oklab, var(--nx-color-status-positive) 30%, transparent)}}.nx\:border-transparent{border-color:#0000}.nx\:border-t-accent-primary{border-top-color:var(--nx-color-accent-primary)}.nx\:bg-\[var\(--_btn-base\)\]{background-color:var(--_btn-base)}.nx\:bg-\[var\(--_btn-outlined-bg\)\]{background-color:var(--_btn-outlined-bg)}.nx\:bg-\[var\(--_btn-subtle-fill\)\]{background-color:var(--_btn-subtle-fill)}.nx\:bg-accent-primary,.nx\:bg-accent-primary\/10{background-color:var(--nx-color-accent-primary)}@supports (color:color-mix(in lab, red, red)){.nx\:bg-accent-primary\/10{background-color:color-mix(in oklab, var(--nx-color-accent-primary) 10%, transparent)}}.nx\:bg-border-default{background-color:var(--nx-color-border-default)}.nx\:bg-border-strong{background-color:var(--nx-color-border-strong)}.nx\:bg-current{background-color:currentColor}.nx\:bg-static-black,.nx\:bg-static-black\/30{background-color:var(--nx-color-static-black)}@supports (color:color-mix(in lab, red, red)){.nx\:bg-static-black\/30{background-color:color-mix(in oklab, var(--nx-color-static-black) 30%, transparent)}}.nx\:bg-static-black\/60{background-color:var(--nx-color-static-black)}@supports (color:color-mix(in lab, red, red)){.nx\:bg-static-black\/60{background-color:color-mix(in oklab, var(--nx-color-static-black) 60%, transparent)}}.nx\:bg-static-black\/75{background-color:var(--nx-color-static-black)}@supports (color:color-mix(in lab, red, red)){.nx\:bg-static-black\/75{background-color:color-mix(in oklab, var(--nx-color-static-black) 75%, transparent)}}.nx\:bg-static-white{background-color:var(--nx-color-static-white)}.nx\:bg-status-caution\/10{background-color:var(--nx-color-status-caution)}@supports (color:color-mix(in lab, red, red)){.nx\:bg-status-caution\/10{background-color:color-mix(in oklab, var(--nx-color-status-caution) 10%, transparent)}}.nx\:bg-status-negative\/10{background-color:var(--nx-color-status-negative)}@supports (color:color-mix(in lab, red, red)){.nx\:bg-status-negative\/10{background-color:color-mix(in oklab, var(--nx-color-status-negative) 10%, transparent)}}.nx\:bg-status-positive\/10{background-color:var(--nx-color-status-positive)}@supports (color:color-mix(in lab, red, red)){.nx\:bg-status-positive\/10{background-color:color-mix(in oklab, var(--nx-color-status-positive) 10%, transparent)}}.nx\:bg-surface-default{background-color:var(--nx-color-surface-default)}.nx\:bg-surface-hover{background-color:var(--nx-color-surface-hover)}.nx\:bg-transparent{background-color:#0000}.nx\:bg-white{background-color:var(--nx-color-white)}.nx\:bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.nx\:from-surface-hover{--tw-gradient-from:var(--nx-color-surface-hover);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.nx\:via-surface-default{--tw-gradient-via:var(--nx-color-surface-default);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.nx\:to-surface-hover{--tw-gradient-to:var(--nx-color-surface-hover);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.nx\:bg-\[length\:300\%_100\%\]{background-size:300% 100%}.nx\:fill-surface-default{fill:var(--nx-color-surface-default)}.nx\:object-cover{object-fit:cover}.nx\:p-0{padding:calc(var(--nx-spacing) * 0)}.nx\:p-0\.5{padding:calc(var(--nx-spacing) * .5)}.nx\:p-1{padding:calc(var(--nx-spacing) * 1)}.nx\:p-4{padding:calc(var(--nx-spacing) * 4)}.nx\:px-1{padding-inline:calc(var(--nx-spacing) * 1)}.nx\:px-1\.5{padding-inline:calc(var(--nx-spacing) * 1.5)}.nx\:px-2{padding-inline:calc(var(--nx-spacing) * 2)}.nx\:px-2\.5{padding-inline:calc(var(--nx-spacing) * 2.5)}.nx\:px-3{padding-inline:calc(var(--nx-spacing) * 3)}.nx\:px-3\.5{padding-inline:calc(var(--nx-spacing) * 3.5)}.nx\:px-4{padding-inline:calc(var(--nx-spacing) * 4)}.nx\:px-5{padding-inline:calc(var(--nx-spacing) * 5)}.nx\:px-comp-btn-lg-px{padding-inline:var(--nx-spacing-comp-btn-lg-px)}.nx\:px-comp-btn-md-px{padding-inline:var(--nx-spacing-comp-btn-md-px)}.nx\:px-comp-btn-sm-px{padding-inline:var(--nx-spacing-comp-btn-sm-px)}.nx\:px-comp-btn-xl-px{padding-inline:var(--nx-spacing-comp-btn-xl-px)}.nx\:py-1\.5{padding-block:calc(var(--nx-spacing) * 1.5)}.nx\:py-2{padding-block:calc(var(--nx-spacing) * 2)}.nx\:py-2\.5{padding-block:calc(var(--nx-spacing) * 2.5)}.nx\:py-3{padding-block:calc(var(--nx-spacing) * 3)}.nx\:py-4{padding-block:calc(var(--nx-spacing) * 4)}.nx\:py-6{padding-block:calc(var(--nx-spacing) * 6)}.nx\:py-8{padding-block:calc(var(--nx-spacing) * 8)}.nx\:py-12{padding-block:calc(var(--nx-spacing) * 12)}.nx\:py-\[2px\]{padding-block:2px}.nx\:py-comp-btn-sm-py{padding-block:var(--nx-spacing-comp-btn-sm-py)}.nx\:pt-0{padding-top:calc(var(--nx-spacing) * 0)}.nx\:pt-1\.5{padding-top:calc(var(--nx-spacing) * 1.5)}.nx\:pt-3{padding-top:calc(var(--nx-spacing) * 3)}.nx\:pt-4{padding-top:calc(var(--nx-spacing) * 4)}.nx\:pt-6{padding-top:calc(var(--nx-spacing) * 6)}.nx\:pr-\[42px\]{padding-right:42px}.nx\:pb-0{padding-bottom:calc(var(--nx-spacing) * 0)}.nx\:pb-2{padding-bottom:calc(var(--nx-spacing) * 2)}.nx\:pb-4{padding-bottom:calc(var(--nx-spacing) * 4)}.nx\:pb-5{padding-bottom:calc(var(--nx-spacing) * 5)}.nx\:pb-6{padding-bottom:calc(var(--nx-spacing) * 6)}.nx\:pb-20{padding-bottom:calc(var(--nx-spacing) * 20)}.nx\:pb-\[88px\]{padding-bottom:88px}.nx\:text-center{text-align:center}.nx\:text-left{text-align:left}.nx\:text-right{text-align:right}.nx\:font-mono{font-family:var(--nx-font-mono)}.nx\:text-2xl{font-size:var(--nx-text-2xl);line-height:var(--tw-leading,var(--nx-text-2xl--line-height))}.nx\:text-3xl{font-size:var(--nx-text-3xl);line-height:var(--tw-leading,var(--nx-text-3xl--line-height))}.nx\:text-4xl{font-size:var(--nx-text-4xl);line-height:var(--tw-leading,var(--nx-text-4xl--line-height))}.nx\:text-base{font-size:var(--nx-text-base);line-height:var(--tw-leading,var(--nx-text-base--line-height))}.nx\:text-lg{font-size:var(--nx-text-lg);line-height:var(--tw-leading,var(--nx-text-lg--line-height))}.nx\:text-sm{font-size:var(--nx-text-sm);line-height:var(--tw-leading,var(--nx-text-sm--line-height))}.nx\:text-xl{font-size:var(--nx-text-xl);line-height:var(--tw-leading,var(--nx-text-xl--line-height))}.nx\:text-xs{font-size:var(--nx-text-xs);line-height:var(--tw-leading,var(--nx-text-xs--line-height))}.nx\:text-\[10px\]{font-size:10px}.nx\:text-comp-btn-lg{font-size:var(--nx-text-comp-btn-lg)}.nx\:text-comp-btn-md{font-size:var(--nx-text-comp-btn-md)}.nx\:text-comp-btn-sm{font-size:var(--nx-text-comp-btn-sm)}.nx\:text-comp-btn-xl{font-size:var(--nx-text-comp-btn-xl)}.nx\:text-text-lg{font-size:var(--nx-text-text-lg)}.nx\:leading-7{--tw-leading:calc(var(--nx-spacing) * 7);line-height:calc(var(--nx-spacing) * 7)}.nx\:leading-\[26px\]{--tw-leading:26px;line-height:26px}.nx\:leading-relaxed{--tw-leading:var(--nx-leading-relaxed);line-height:var(--nx-leading-relaxed)}.nx\:font-bold{--tw-font-weight:var(--nx-font-weight-bold);font-weight:var(--nx-font-weight-bold)}.nx\:font-medium{--tw-font-weight:var(--nx-font-weight-medium);font-weight:var(--nx-font-weight-medium)}.nx\:font-normal{--tw-font-weight:var(--nx-font-weight-normal);font-weight:var(--nx-font-weight-normal)}.nx\:font-semibold{--tw-font-weight:var(--nx-font-weight-semibold);font-weight:var(--nx-font-weight-semibold)}.nx\:tracking-\[-0\.002em\]{--tw-tracking:-.002em;letter-spacing:-.002em}.nx\:tracking-\[-0\.012em\]{--tw-tracking:-.012em;letter-spacing:-.012em}.nx\:tracking-tight{--tw-tracking:var(--nx-tracking-tight);letter-spacing:var(--nx-tracking-tight)}.nx\:tracking-widest{--tw-tracking:var(--nx-tracking-widest);letter-spacing:var(--nx-tracking-widest)}.nx\:break-words{overflow-wrap:break-word}.nx\:break-all{word-break:break-all}.nx\:whitespace-normal{white-space:normal}.nx\:whitespace-nowrap{white-space:nowrap}.nx\:text-\[var\(--_btn-on\)\]{color:var(--_btn-on)}.nx\:text-\[var\(--_btn-text\)\]{color:var(--_btn-text)}.nx\:text-accent-on-primary{color:var(--nx-color-accent-on-primary)}.nx\:text-accent-primary{color:var(--nx-color-accent-primary)}.nx\:text-current{color:currentColor}.nx\:text-inherit{color:inherit}.nx\:text-static-black{color:var(--nx-color-static-black)}.nx\:text-static-white{color:var(--nx-color-static-white)}.nx\:text-status-caution{color:var(--nx-color-status-caution)}.nx\:text-status-negative{color:var(--nx-color-status-negative)}.nx\:text-status-positive{color:var(--nx-color-status-positive)}.nx\:text-text-muted{color:var(--nx-color-text-muted)}.nx\:text-text-primary{color:var(--nx-color-text-primary)}.nx\:text-text-secondary{color:var(--nx-color-text-secondary)}.nx\:text-text-tertiary{color:var(--nx-color-text-tertiary)}.nx\:text-white{color:var(--nx-color-white)}.nx\:uppercase{text-transform:uppercase}.nx\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.nx\:opacity-0{opacity:0}.nx\:opacity-40{opacity:.4}.nx\:opacity-50{opacity:.5}.nx\:opacity-60{opacity:.6}.nx\:opacity-100{opacity:1}.nx\:shadow-comp-btn{--tw-shadow:var(--shadow-comp-btn,none);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.nx\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.nx\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.nx\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.nx\:outline{outline-style:var(--tw-outline-style);outline-width:1px}.nx\:-outline-offset-1{outline-offset:calc(1px * -1)}.nx\:outline-accent-primary{outline-color:var(--nx-color-accent-primary)}.nx\:backdrop-blur-md{--tw-backdrop-blur:blur(var(--nx-blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.nx\:backdrop-blur-sm{--tw-backdrop-blur:blur(var(--nx-blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.nx\:transition-\[height\]{transition-property:height;transition-timing-function:var(--tw-ease,var(--nx-default-transition-timing-function));transition-duration:var(--tw-duration,var(--nx-default-transition-duration))}.nx\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--nx-default-transition-timing-function));transition-duration:var(--tw-duration,var(--nx-default-transition-duration))}.nx\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--nx-default-transition-timing-function));transition-duration:var(--tw-duration,var(--nx-default-transition-duration))}.nx\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--nx-default-transition-timing-function));transition-duration:var(--tw-duration,var(--nx-default-transition-duration))}.nx\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--nx-default-transition-timing-function));transition-duration:var(--tw-duration,var(--nx-default-transition-duration))}.nx\:duration-150{--tw-duration:.15s;transition-duration:.15s}.nx\:duration-200{--tw-duration:.2s;transition-duration:.2s}.nx\:duration-300{--tw-duration:.3s;transition-duration:.3s}.nx\:outline-dashed{--tw-outline-style:dashed;outline-style:dashed}.nx\:outline-none{--tw-outline-style:none;outline-style:none}.nx\:select-none{-webkit-user-select:none;user-select:none}.nx\:peer-disabled\:cursor-not-allowed:is(:where(.nx\:peer):disabled~*){cursor:not-allowed}.nx\:peer-disabled\:opacity-50:is(:where(.nx\:peer):disabled~*){opacity:.5}.nx\:placeholder\:text-text-tertiary::placeholder{color:var(--nx-color-text-tertiary)}.nx\:focus-within\:border-status-negative:focus-within{border-color:var(--nx-color-status-negative)}.nx\:focus-within\:border-text-primary:focus-within{border-color:var(--nx-color-text-primary)}@media (hover:hover){.nx\:hover\:border-\[var\(--_btn-border-hover\)\]:hover{border-color:var(--_btn-border-hover)}.nx\:hover\:border-border-strong:hover{border-color:var(--nx-color-border-strong)}.nx\:hover\:bg-\[var\(--_btn-ghost-hover-bg\)\]:hover{background-color:var(--_btn-ghost-hover-bg)}.nx\:hover\:bg-\[var\(--_btn-hover\)\]:hover{background-color:var(--_btn-hover)}.nx\:hover\:bg-\[var\(--_btn-light-bg\)\]:hover{background-color:var(--_btn-light-bg)}.nx\:hover\:bg-\[var\(--_btn-outlined-hover-bg\)\]:hover{background-color:var(--_btn-outlined-hover-bg)}.nx\:hover\:bg-accent-primary\/5:hover{background-color:var(--nx-color-accent-primary)}@supports (color:color-mix(in lab, red, red)){.nx\:hover\:bg-accent-primary\/5:hover{background-color:color-mix(in oklab, var(--nx-color-accent-primary) 5%, transparent)}}.nx\:hover\:bg-surface-hover:hover{background-color:var(--nx-color-surface-hover)}.nx\:hover\:bg-text-tertiary:hover{background-color:var(--nx-color-text-tertiary)}.nx\:hover\:text-text-primary:hover{color:var(--nx-color-text-primary)}.nx\:hover\:opacity-100:hover{opacity:1}}.nx\:focus\:border-status-negative:focus{border-color:var(--nx-color-status-negative)}.nx\:focus\:border-text-primary:focus{border-color:var(--nx-color-text-primary)}.nx\:focus\:bg-surface-hover:focus{background-color:var(--nx-color-surface-hover)}.nx\:focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.nx\:focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.nx\:focus-visible\:ring-comp-btn-focus-ring\/50:focus-visible{--tw-ring-color:var(--nx-color-comp-btn-focus-ring)}@supports (color:color-mix(in lab, red, red)){.nx\:focus-visible\:ring-comp-btn-focus-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--nx-color-comp-btn-focus-ring) 50%, transparent)}}.nx\:focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.nx\:active\:cursor-grabbing:active{cursor:grabbing}.nx\:active\:border-\[var\(--_btn-border-hover\)\]:active{border-color:var(--_btn-border-hover)}.nx\:active\:bg-\[var\(--_btn-ghost-pressed-bg\)\]:active{background-color:var(--_btn-ghost-pressed-bg)}.nx\:active\:bg-\[var\(--_btn-light-bg\)\]:active{background-color:var(--_btn-light-bg)}.nx\:active\:bg-\[var\(--_btn-outlined-pressed-bg\)\]:active{background-color:var(--_btn-outlined-pressed-bg)}.nx\:active\:bg-\[var\(--_btn-pressed\)\]:active{background-color:var(--_btn-pressed)}.nx\:disabled\:pointer-events-none:disabled{pointer-events:none}.nx\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.nx\:disabled\:opacity-40:disabled{opacity:.4}.nx\:disabled\:opacity-50:disabled{opacity:.5}.nx\:disabled\:opacity-comp-btn-disabled:disabled{opacity:var(--nx-opacity-comp-btn-disabled)}.nx\:aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.nx\:aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.nx\:aria-disabled\:opacity-comp-btn-disabled[aria-disabled=true]{opacity:var(--nx-opacity-comp-btn-disabled)}.nx\:data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.nx\:data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.nx\:data-\[highlighted\]\:bg-surface-hover[data-highlighted]{background-color:var(--nx-color-surface-hover)}.nx\:data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2 * -.25rem)}.nx\:data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2 * .25rem)}.nx\:data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2 * -.25rem)}.nx\:data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2 * .25rem)}.nx\:data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:1;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;animation:.15s ease-in forwards nexus-exit}.nx\:data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:var(--nx-animate-accordion-up)}.nx\:data-\[state\=closed\]\:animate-out[data-state=closed]{animation:var(--nx-animate-out)}.nx\:data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:calc(1 - 0 / 100)}.nx\:data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:calc(95 / 100)}.nx\:data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:1;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;animation:.2s ease-out nexus-enter}.nx\:data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:var(--nx-animate-accordion-down)}.nx\:data-\[state\=open\]\:animate-in[data-state=open]{animation:var(--nx-animate-in)}.nx\:data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:calc(1 - 0 / 100)}.nx\:data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:calc(95 / 100)}@media (min-width:40rem){.nx\:sm\:min-h-auto{min-height:auto}.nx\:sm\:w-\[480px\]{width:480px}.nx\:sm\:w-full{width:100%}}.nx\:\[\&_\.modal-inner\]\:\[animation-direction\:reverse\] .modal-inner{animation-direction:reverse}.nx\:\[\&_\.modal-inner\]\:\[animation-direction\:var\(--modal-animation-direction\)\] .modal-inner{animation-direction:var(--modal-animation-direction)}.nx\:\[\&_\.modal-inner\]\:\[animation-duration\:var\(--modal-animation-duration\)\] .modal-inner{animation-duration:var(--modal-animation-duration)}.nx\:\[\&_\.modal-inner\]\:\[animation-fill-mode\:var\(--modal-animation-fill-mode\)\] .modal-inner{animation-fill-mode:var(--modal-animation-fill-mode)}.nx\:\[\&_\.modal-inner\]\:\[animation-name\:var\(--modal-animation-name\)\] .modal-inner{animation-name:var(--modal-animation-name)}.nx\:\[\&_\.modal-inner\]\:\[animation-timing-function\:var\(--modal-animation-timing-function\)\] .modal-inner{animation-timing-function:var(--modal-animation-timing-function)}.nx\:\[\&_button\]\:h-12 button{height:calc(var(--nx-spacing) * 12)}.nx\:\[\&_button\]\:flex-1 button{flex:1}.nx\:\[\&\:hover_\>_div\]\:\!\[animation-play-state\:paused\]:hover>div{animation-play-state:paused!important}.nx\:\[\&\>div\]\:contents>div{display:contents}.nx\:\[\&\>svg\]\:rotate-180>svg,.nx\:\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}}.btn-palette-primary{--_btn-base:var(--nx-color-comp-btn-primary-base);--_btn-hover:var(--nx-color-comp-btn-primary-hover);--_btn-pressed:var(--nx-color-comp-btn-primary-pressed);--_btn-on:var(--nx-color-comp-btn-primary-on,var(--nx-color-static-white));--_btn-text:var(--nx-color-comp-btn-primary-text);--_btn-subtle-fill:var(--nx-color-comp-btn-primary-subtle-fill);--_btn-light-bg:var(--nx-color-comp-btn-primary-subtle-bg);--_btn-border:var(--nx-color-accent-primary-focus);--_btn-border-hover:var(--nx-color-accent-primary-focus);--_btn-outlined-bg:var(--nx-color-surface-default);--_btn-outlined-hover-bg:var(--nx-color-comp-btn-primary-subtle-bg);--_btn-outlined-pressed-bg:var(--nx-color-surface-default);--_btn-ghost-hover-bg:var(--nx-color-comp-btn-primary-subtle-bg);--_btn-ghost-pressed-bg:var(--nx-color-comp-btn-primary-subtle-fill)}.btn-palette-secondary{--_btn-base:var(--nx-color-comp-btn-secondary-base);--_btn-hover:var(--nx-color-comp-btn-secondary-hover);--_btn-pressed:var(--nx-color-comp-btn-secondary-pressed);--_btn-on:var(--nx-color-comp-btn-secondary-on,var(--nx-color-static-white));--_btn-text:var(--nx-color-comp-btn-secondary-text);--_btn-subtle-fill:var(--nx-color-comp-btn-secondary-subtle-fill);--_btn-light-bg:var(--nx-color-comp-btn-secondary-subtle-bg);--_btn-border:var(--nx-color-accent-secondary-focus);--_btn-border-hover:var(--nx-color-accent-secondary-focus);--_btn-outlined-bg:var(--nx-color-surface-default);--_btn-outlined-hover-bg:var(--nx-color-comp-btn-secondary-subtle-bg);--_btn-outlined-pressed-bg:var(--nx-color-surface-default);--_btn-ghost-hover-bg:var(--nx-color-comp-btn-secondary-subtle-bg);--_btn-ghost-pressed-bg:var(--nx-color-comp-btn-secondary-subtle-fill)}.btn-palette-normal{--_btn-base:var(--nx-color-comp-btn-normal-base);--_btn-hover:var(--nx-color-comp-btn-normal-hover);--_btn-pressed:var(--nx-color-comp-btn-normal-pressed);--_btn-on:var(--nx-color-comp-btn-normal-on,var(--nx-color-text-primary));--_btn-text:var(--nx-color-comp-btn-normal-text);--_btn-subtle-fill:var(--nx-color-comp-btn-normal-subtle-fill);--_btn-light-bg:var(--nx-color-comp-btn-normal-subtle-bg);--_btn-border:var(--nx-color-comp-btn-normal-border);--_btn-border-hover:var(--nx-color-comp-btn-normal-border-hover);--_btn-outlined-bg:var(--nx-color-surface-default);--_btn-outlined-hover-bg:var(--nx-color-comp-btn-normal-subtle-bg);--_btn-outlined-pressed-bg:var(--nx-color-surface-pressed);--_btn-ghost-hover-bg:var(--nx-color-comp-btn-normal-subtle-bg);--_btn-ghost-pressed-bg:var(--nx-color-surface-pressed)}.btn-palette-danger{--_btn-base:var(--nx-color-comp-btn-danger-base);--_btn-hover:var(--nx-color-comp-btn-danger-hover);--_btn-pressed:var(--nx-color-comp-btn-danger-pressed);--_btn-on:var(--nx-color-comp-btn-danger-on,var(--nx-color-static-white));--_btn-text:var(--nx-color-comp-btn-danger-text);--_btn-subtle-fill:var(--nx-color-comp-btn-danger-subtle-fill);--_btn-light-bg:var(--nx-color-comp-btn-danger-subtle-bg);--_btn-border:var(--nx-color-status-danger-focus);--_btn-border-hover:var(--nx-color-status-danger-focus);--_btn-outlined-bg:var(--nx-color-surface-default);--_btn-outlined-hover-bg:var(--nx-color-comp-btn-danger-subtle-bg);--_btn-outlined-pressed-bg:var(--nx-color-surface-default);--_btn-ghost-hover-bg:var(--nx-color-comp-btn-danger-subtle-bg);--_btn-ghost-pressed-bg:var(--nx-color-comp-btn-danger-subtle-fill)}@keyframes nexus-enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1))}}@keyframes nexus-exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1))}}@keyframes nexus-accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes nexus-accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-scale{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes modal-small-scale{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes modal-pop-fade{0%{opacity:0;transform:scale(.95)}60%{opacity:1;transform:scale(1.03)}to{opacity:1;transform:scale(1)}}@keyframes modal-bottom-sheet{0%{transform:translateY(calc(100% + 60px))}to{transform:translateY(0)}}@keyframes modal-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes modal-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes modal-full-page{0%{opacity:.5;transform:translateY(60%)}to{opacity:1;transform:translateY(0)}}@keyframes modal-full-page-reverse{0%{opacity:.5;transform:translateY(-60%)}to{opacity:1;transform:translateY(0)}}@keyframes nexus-skeleton-shimmer{0%{background-position:300% 0}to{background-position:-300% 0}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
1
+ /*
2
+ * @nexus-cross/design-system — Pure CSS
3
+ *
4
+ * BEM 클래스 네이밍(.nexus-*)으로 CSS specificity 기반 동작.
5
+ * 소비자 CSS는 디자인 시스템 이후에 로드되므로 className으로 오버라이드 가능.
6
+ */
7
+
8
+ /* ═══════════════════════════════════════════
9
+ Component Tokens (:root)
10
+ 소비자가 :root에서 오버라이드 가능
11
+ ═══════════════════════════════════════════ */
12
+
13
+ :root {
14
+ /* ── Button: Color ── */
15
+ --color-comp-btn-focus-ring: var(--color-accent-primary);
16
+
17
+ --color-comp-btn-primary-base: var(--color-accent-primary);
18
+ --color-comp-btn-primary-hover: var(--color-accent-primary-hover);
19
+ --color-comp-btn-primary-pressed: var(--color-accent-primary-pressed);
20
+ --color-comp-btn-primary-on: var(--color-accent-on-primary);
21
+ --color-comp-btn-primary-text: var(
22
+ --color-accent-primary-intense,
23
+ var(--color-accent-primary)
24
+ );
25
+ --color-comp-btn-primary-subtle-fill: var(--color-accent-primary-disabled);
26
+ --color-comp-btn-primary-subtle-bg: var(--color-accent-primary-bg);
27
+
28
+ --color-comp-btn-secondary-base: var(--color-accent-secondary);
29
+ --color-comp-btn-secondary-hover: var(--color-accent-secondary-hover);
30
+ --color-comp-btn-secondary-pressed: var(--color-accent-secondary-pressed);
31
+ --color-comp-btn-secondary-on: var(--color-accent-on-secondary);
32
+ --color-comp-btn-secondary-text: var(
33
+ --color-accent-secondary-intense,
34
+ var(--color-accent-secondary)
35
+ );
36
+ --color-comp-btn-secondary-subtle-fill: var(
37
+ --color-accent-secondary-disabled
38
+ );
39
+ --color-comp-btn-secondary-subtle-bg: var(--color-accent-secondary-bg);
40
+
41
+ --color-comp-btn-normal-base: var(--color-surface-subtle);
42
+ --color-comp-btn-normal-hover: var(--color-surface-subtle-hover);
43
+ --color-comp-btn-normal-pressed: var(--color-surface-subtle-hover);
44
+ --color-comp-btn-normal-on: var(--color-text-primary);
45
+ --color-comp-btn-normal-text: var(--color-text-primary);
46
+ --color-comp-btn-normal-subtle-fill: var(--color-surface-subtle);
47
+ --color-comp-btn-normal-subtle-bg: var(--color-surface-subtle-hover);
48
+ --color-comp-btn-normal-border: var(--color-border-default);
49
+ --color-comp-btn-normal-border-hover: var(
50
+ --color-border-default-hover,
51
+ var(--color-border-default)
52
+ );
53
+
54
+ --color-comp-btn-danger-base: var(--color-status-danger);
55
+ --color-comp-btn-danger-hover: var(--color-status-danger-hover);
56
+ --color-comp-btn-danger-pressed: var(--color-status-danger-pressed);
57
+ --color-comp-btn-danger-on: var(--color-static-white);
58
+ --color-comp-btn-danger-text: var(
59
+ --color-status-danger-intense,
60
+ var(--color-status-danger)
61
+ );
62
+ --color-comp-btn-danger-subtle-fill: var(--color-status-danger-disabled);
63
+ --color-comp-btn-danger-subtle-bg: var(--color-status-danger-bg);
64
+
65
+ /* ── Button: Radius ── */
66
+ --radius-comp-btn-xl: 0.75rem;
67
+ --radius-comp-btn-lg: 0.5rem;
68
+ --radius-comp-btn-md: 0.5rem;
69
+ --radius-comp-btn-sm: 0.25rem;
70
+
71
+ /* ── Button: Spacing ── */
72
+ --spacing-comp-btn-gap: var(--spacing-gap-sm, 0.5rem);
73
+ --spacing-comp-btn-xl-h: 3rem;
74
+ --spacing-comp-btn-xl-px: var(--spacing-padding-lg, 1.5rem);
75
+ --spacing-comp-btn-lg-h: 2.5rem;
76
+ --spacing-comp-btn-lg-px: var(--spacing-padding-lg, 1.5rem);
77
+ --spacing-comp-btn-md-h: 1.875rem;
78
+ --spacing-comp-btn-md-px: var(--spacing-padding-sm, 0.75rem);
79
+ --spacing-comp-btn-sm-px: var(--spacing-padding-xs, 0.5rem);
80
+ --spacing-comp-btn-sm-py: var(--spacing-padding-2xs, 0.25rem);
81
+
82
+ /* ── Button: Font ── */
83
+ --text-comp-btn-xl: var(--text-text-base, 1rem);
84
+ --text-comp-btn-lg: var(--text-text-base, 1rem);
85
+ --text-comp-btn-md: var(--text-text-sm, 0.875rem);
86
+ --text-comp-btn-sm: var(--text-text-xs, 0.75rem);
87
+
88
+ /* ── Button: Misc ── */
89
+ --shadow-comp-btn: none;
90
+ --opacity-comp-btn-disabled: 0.5;
91
+
92
+ /* ── Shared: Shadow ── */
93
+ --shadow-comp-sm: var(--shadow-elevation-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
94
+ --shadow-comp-md: var(--shadow-elevation-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));
95
+ --shadow-comp-lg: var(
96
+ --shadow-elevation-lg,
97
+ 0 10px 15px -3px rgb(0 0 0 / 0.1)
98
+ );
99
+
100
+ /* ── Shared: Overlay ── */
101
+ --color-comp-overlay: var(--color-overlay-dim, rgba(0, 0, 0, 0.6));
102
+
103
+ /* ── ErrorBoundary ── */
104
+ --color-comp-error-border: var(--color-status-danger);
105
+ --color-comp-error-bg: var(--color-status-danger-bg, #fef2f2);
106
+ --color-comp-error-text: var(--color-status-danger-intense, #991b1b);
107
+ }
108
+
109
+ /* ═══════════════════════════════════════════
110
+ 컴포넌트 스타일
111
+ ═══════════════════════════════════════════ */
112
+
113
+ /* ─── Shared: sr-only ─── */
114
+ .nexus-sr-only {
115
+ position: absolute;
116
+ width: 1px;
117
+ height: 1px;
118
+ padding: 0;
119
+ margin: -1px;
120
+ overflow: hidden;
121
+ clip: rect(0, 0, 0, 0);
122
+ white-space: nowrap;
123
+ border-width: 0;
124
+ }
125
+
126
+ /* ═══════════════════════════════════════════
127
+ Button
128
+ ═══════════════════════════════════════════ */
129
+
130
+ .nexus-btn {
131
+ display: inline-flex;
132
+ align-items: center;
133
+ justify-content: center;
134
+ gap: var(--spacing-comp-btn-gap);
135
+ white-space: nowrap;
136
+ user-select: none;
137
+ box-shadow: var(--shadow-comp-btn);
138
+ transition-property: color, background-color, border-color;
139
+ transition-duration: 200ms;
140
+ border: none;
141
+ background: none;
142
+ cursor: pointer;
143
+ font: inherit;
144
+ color: inherit;
145
+ padding: 0;
146
+ margin: 0;
147
+ text-decoration: none;
148
+ }
149
+ .nexus-btn:disabled,
150
+ .nexus-btn[aria-disabled='true'] {
151
+ pointer-events: none;
152
+ opacity: var(--opacity-comp-btn-disabled);
153
+ }
154
+ .nexus-btn:focus-visible {
155
+ outline: 2px solid
156
+ color-mix(in srgb, var(--color-comp-btn-focus-ring) 50%, transparent);
157
+ outline-offset: 2px;
158
+ }
159
+
160
+ /* Variant: contained */
161
+ .nexus-btn--contained {
162
+ background: var(--_btn-base);
163
+ color: var(--_btn-on);
164
+ }
165
+ .nexus-btn--contained:hover {
166
+ background: var(--_btn-hover);
167
+ }
168
+ .nexus-btn--contained:active {
169
+ background: var(--_btn-pressed);
170
+ }
171
+
172
+ /* Variant: outlined */
173
+ .nexus-btn--outlined {
174
+ border: 1px solid var(--_btn-border);
175
+ color: var(--_btn-text);
176
+ background: var(--_btn-outlined-bg);
177
+ }
178
+ .nexus-btn--outlined:hover {
179
+ background: var(--_btn-outlined-hover-bg);
180
+ border-color: var(--_btn-border-hover);
181
+ }
182
+ .nexus-btn--outlined:active {
183
+ background: var(--_btn-outlined-pressed-bg);
184
+ border-color: var(--_btn-border-hover);
185
+ }
186
+
187
+ /* Variant: subtle */
188
+ .nexus-btn--subtle {
189
+ background: var(--_btn-subtle-fill);
190
+ color: var(--_btn-text);
191
+ }
192
+ .nexus-btn--subtle:hover {
193
+ background: var(--_btn-light-bg);
194
+ }
195
+ .nexus-btn--subtle:active {
196
+ background: var(--_btn-light-bg);
197
+ }
198
+
199
+ /* Variant: ghost */
200
+ .nexus-btn--ghost {
201
+ background: transparent;
202
+ color: var(--_btn-text);
203
+ }
204
+ .nexus-btn--ghost:hover {
205
+ background: var(--_btn-ghost-hover-bg);
206
+ }
207
+ .nexus-btn--ghost:active {
208
+ background: var(--_btn-ghost-pressed-bg);
209
+ }
210
+
211
+ /* Sizes */
212
+ .nexus-btn--xl {
213
+ height: var(--spacing-comp-btn-xl-h);
214
+ padding-inline: var(--spacing-comp-btn-xl-px);
215
+ font-size: var(--text-comp-btn-xl);
216
+ font-weight: 600;
217
+ border-radius: var(--radius-comp-btn-xl);
218
+ }
219
+ .nexus-btn--lg {
220
+ height: var(--spacing-comp-btn-lg-h);
221
+ padding-inline: var(--spacing-comp-btn-lg-px);
222
+ font-size: var(--text-comp-btn-lg);
223
+ font-weight: 600;
224
+ border-radius: var(--radius-comp-btn-lg);
225
+ }
226
+ .nexus-btn--md {
227
+ height: var(--spacing-comp-btn-md-h);
228
+ padding-inline: var(--spacing-comp-btn-md-px);
229
+ font-size: var(--text-comp-btn-md);
230
+ font-weight: 500;
231
+ border-radius: var(--radius-comp-btn-md);
232
+ }
233
+ .nexus-btn--sm {
234
+ padding-inline: var(--spacing-comp-btn-sm-px);
235
+ padding-block: var(--spacing-comp-btn-sm-py);
236
+ font-size: var(--text-comp-btn-sm);
237
+ font-weight: 500;
238
+ border-radius: var(--radius-comp-btn-sm);
239
+ }
240
+
241
+ /* Radius override */
242
+ .nexus-btn--circle {
243
+ border-radius: 9999px !important;
244
+ }
245
+
246
+ /* Semantic palette — compound selectors (cascade 방지) */
247
+ .nexus-btn--primary {
248
+ --_btn-base: var(--color-comp-btn-primary-base);
249
+ --_btn-hover: var(--color-comp-btn-primary-hover);
250
+ --_btn-pressed: var(--color-comp-btn-primary-pressed);
251
+ --_btn-on: var(--color-comp-btn-primary-on);
252
+ --_btn-text: var(--color-comp-btn-primary-text);
253
+ --_btn-subtle-fill: var(--color-comp-btn-primary-subtle-fill);
254
+ --_btn-light-bg: var(--color-comp-btn-primary-subtle-bg);
255
+ --_btn-border: var(--color-accent-primary-focus, var(--color-accent-primary));
256
+ --_btn-border-hover: var(
257
+ --color-accent-primary-focus,
258
+ var(--color-accent-primary)
259
+ );
260
+ --_btn-outlined-bg: var(--color-surface-default);
261
+ --_btn-outlined-hover-bg: var(--color-comp-btn-primary-subtle-bg);
262
+ --_btn-outlined-pressed-bg: var(--color-surface-default);
263
+ --_btn-ghost-hover-bg: var(--color-comp-btn-primary-subtle-bg);
264
+ --_btn-ghost-pressed-bg: var(--color-comp-btn-primary-subtle-fill);
265
+ }
266
+ .nexus-btn--secondary {
267
+ --_btn-base: var(--color-comp-btn-secondary-base);
268
+ --_btn-hover: var(--color-comp-btn-secondary-hover);
269
+ --_btn-pressed: var(--color-comp-btn-secondary-pressed);
270
+ --_btn-on: var(--color-comp-btn-secondary-on);
271
+ --_btn-text: var(--color-comp-btn-secondary-text);
272
+ --_btn-subtle-fill: var(--color-comp-btn-secondary-subtle-fill);
273
+ --_btn-light-bg: var(--color-comp-btn-secondary-subtle-bg);
274
+ --_btn-border: var(
275
+ --color-accent-secondary-focus,
276
+ var(--color-accent-secondary)
277
+ );
278
+ --_btn-border-hover: var(
279
+ --color-accent-secondary-focus,
280
+ var(--color-accent-secondary)
281
+ );
282
+ --_btn-outlined-bg: var(--color-surface-default);
283
+ --_btn-outlined-hover-bg: var(--color-comp-btn-secondary-subtle-bg);
284
+ --_btn-outlined-pressed-bg: var(--color-surface-default);
285
+ --_btn-ghost-hover-bg: var(--color-comp-btn-secondary-subtle-bg);
286
+ --_btn-ghost-pressed-bg: var(--color-comp-btn-secondary-subtle-fill);
287
+ }
288
+ .nexus-btn--normal {
289
+ --_btn-base: var(--color-comp-btn-normal-base);
290
+ --_btn-hover: var(--color-comp-btn-normal-hover);
291
+ --_btn-pressed: var(--color-comp-btn-normal-pressed);
292
+ --_btn-on: var(--color-comp-btn-normal-on);
293
+ --_btn-text: var(--color-comp-btn-normal-text);
294
+ --_btn-subtle-fill: var(--color-comp-btn-normal-subtle-fill);
295
+ --_btn-light-bg: var(--color-comp-btn-normal-subtle-bg);
296
+ --_btn-border: var(--color-comp-btn-normal-border);
297
+ --_btn-border-hover: var(--color-comp-btn-normal-border-hover);
298
+ --_btn-outlined-bg: var(--color-surface-default);
299
+ --_btn-outlined-hover-bg: var(--color-comp-btn-normal-subtle-bg);
300
+ --_btn-outlined-pressed-bg: var(
301
+ --color-surface-pressed,
302
+ var(--color-surface-strong)
303
+ );
304
+ --_btn-ghost-hover-bg: var(--color-comp-btn-normal-subtle-bg);
305
+ --_btn-ghost-pressed-bg: var(
306
+ --color-surface-pressed,
307
+ var(--color-surface-strong)
308
+ );
309
+ }
310
+ .nexus-btn--danger {
311
+ --_btn-base: var(--color-comp-btn-danger-base);
312
+ --_btn-hover: var(--color-comp-btn-danger-hover);
313
+ --_btn-pressed: var(--color-comp-btn-danger-pressed);
314
+ --_btn-on: var(--color-comp-btn-danger-on);
315
+ --_btn-text: var(--color-comp-btn-danger-text);
316
+ --_btn-subtle-fill: var(--color-comp-btn-danger-subtle-fill);
317
+ --_btn-light-bg: var(--color-comp-btn-danger-subtle-bg);
318
+ --_btn-border: var(--color-status-danger-focus, var(--color-status-danger));
319
+ --_btn-border-hover: var(
320
+ --color-status-danger-focus,
321
+ var(--color-status-danger)
322
+ );
323
+ --_btn-outlined-bg: var(--color-surface-default);
324
+ --_btn-outlined-hover-bg: var(--color-comp-btn-danger-subtle-bg);
325
+ --_btn-outlined-pressed-bg: var(--color-surface-default);
326
+ --_btn-ghost-hover-bg: var(--color-comp-btn-danger-subtle-bg);
327
+ --_btn-ghost-pressed-bg: var(--color-comp-btn-danger-subtle-fill);
328
+ }
329
+
330
+ /* ═══════════════════════════════════════════
331
+ TextInput
332
+ ═══════════════════════════════════════════ */
333
+
334
+ /* ── Field wrapper ── */
335
+ .nexus-text-input-field {
336
+ display: flex;
337
+ flex-direction: column;
338
+ gap: 0.25rem;
339
+ }
340
+ .nexus-text-input-field__label {
341
+ font-size: var(--text-text-sm, 0.875rem);
342
+ font-weight: 600;
343
+ color: var(--color-text-muted);
344
+ line-height: 1;
345
+ }
346
+ .nexus-text-input-field__footer {
347
+ display: flex;
348
+ align-items: center;
349
+ gap: 0.5rem;
350
+ }
351
+ .nexus-text-input-field__description {
352
+ font-size: var(--text-text-xs, 0.75rem);
353
+ color: var(--color-text-muted);
354
+ line-height: 1.5;
355
+ letter-spacing: -0.12px;
356
+ }
357
+ .nexus-text-input-field__description--error {
358
+ color: var(--color-status-danger);
359
+ }
360
+ .nexus-text-input-field__count {
361
+ font-size: var(--text-text-xs, 0.75rem);
362
+ color: var(--color-text-muted);
363
+ margin-left: auto;
364
+ flex-shrink: 0;
365
+ }
366
+ .nexus-text-input-field__count--error {
367
+ color: var(--color-status-danger);
368
+ }
369
+
370
+ /* ── Input box ── */
371
+ .nexus-text-input {
372
+ display: flex;
373
+ align-items: center;
374
+ gap: 0.5rem;
375
+ border-radius: var(--radius-corner-md, 0.5rem);
376
+ border: 1px solid var(--color-border-default);
377
+ background: var(--color-surface-default);
378
+ font-size: var(--text-text-sm, 0.875rem);
379
+ font-weight: 500;
380
+ line-height: 1;
381
+ color: var(--color-text-primary);
382
+ transition:
383
+ border-color 200ms,
384
+ box-shadow 200ms;
385
+ }
386
+ :where(.nexus-text-input) {
387
+ width: 100%;
388
+ }
389
+ .nexus-text-input:hover:not(.nexus-text-input--disabled):not(:focus-within) {
390
+ border-color: var(--color-border-default-hover);
391
+ box-shadow: 0 0 0 0.5px var(--color-border-default-hover);
392
+ }
393
+ .nexus-text-input--default:focus-within {
394
+ border-color: var(--color-accent-primary);
395
+ box-shadow: 0 0 0 0.5px var(--color-accent-primary);
396
+ }
397
+ .nexus-text-input--error {
398
+ border-color: var(--color-status-danger);
399
+ }
400
+ .nexus-text-input--error:focus-within {
401
+ border-color: var(--color-status-danger);
402
+ box-shadow: 0 0 0 0.5px var(--color-status-danger);
403
+ }
404
+ .nexus-text-input--disabled {
405
+ cursor: not-allowed;
406
+ background: var(--color-surface-strong);
407
+ border-color: var(--color-border-medium);
408
+ color: var(--color-text-muted);
409
+ }
410
+
411
+ /* ── Sizes ── */
412
+ .nexus-text-input--xl {
413
+ padding: calc(var(--spacing-padding-md, 1rem) - 1px)
414
+ var(--spacing-padding-md, 1rem);
415
+ font-size: var(--text-text-base, 1rem);
416
+ }
417
+ .nexus-text-input--lg {
418
+ padding: calc(var(--spacing-padding-sm, 0.75rem) - 1px)
419
+ var(--spacing-padding-sm, 0.75rem);
420
+ font-size: var(--text-text-base, 1rem);
421
+ }
422
+ .nexus-text-input--md {
423
+ padding: calc(var(--spacing-padding-xs, 0.5rem) - 1px)
424
+ var(--spacing-padding-sm, 0.75rem);
425
+ font-size: var(--text-text-sm, 0.875rem);
426
+ }
427
+
428
+ /* ── Inner elements ── */
429
+ .nexus-text-input__inner {
430
+ flex: 1;
431
+ min-width: 0;
432
+ padding: 0;
433
+ background: transparent;
434
+ border: none;
435
+ outline: none;
436
+ color: inherit;
437
+ font: inherit;
438
+ }
439
+ .nexus-text-input__inner:focus-visible {
440
+ outline: none;
441
+ }
442
+ .nexus-text-input__inner::placeholder {
443
+ color: var(--color-text-muted);
444
+ }
445
+ .nexus-text-input__icon {
446
+ display: flex;
447
+ flex-shrink: 0;
448
+ color: var(--color-text-muted);
449
+ }
450
+ .nexus-text-input__clear {
451
+ display: flex;
452
+ align-items: center;
453
+ justify-content: center;
454
+ flex-shrink: 0;
455
+ width: 1rem;
456
+ height: 1rem;
457
+ border: none;
458
+ background: transparent;
459
+ color: var(--color-text-muted);
460
+ cursor: pointer;
461
+ padding: 0;
462
+ transition: color 150ms;
463
+ }
464
+ .nexus-text-input__clear:hover {
465
+ color: var(--color-icon-tertiary-hover);
466
+ background: transparent;
467
+ }
468
+
469
+ /* ═══════════════════════════════════════════
470
+ PriceInput
471
+ ═══════════════════════════════════════════ */
472
+
473
+ /* ── Field wrapper ── */
474
+ .nexus-price-input-field {
475
+ display: flex;
476
+ flex-direction: column;
477
+ gap: 0.25rem;
478
+ }
479
+ .nexus-price-input-field__header {
480
+ display: flex;
481
+ align-items: baseline;
482
+ justify-content: space-between;
483
+ gap: 0.5rem;
484
+ }
485
+ .nexus-price-input-field__label {
486
+ font-size: var(--text-text-sm, 0.875rem);
487
+ font-weight: 600;
488
+ color: var(--color-text-tertiary);
489
+ line-height: 1;
490
+ }
491
+ .nexus-price-input-field__balance {
492
+ display: inline-flex;
493
+ align-items: baseline;
494
+ gap: 0.375rem;
495
+ margin-left: auto;
496
+ padding: 0;
497
+ border: none;
498
+ background: transparent;
499
+ font-size: var(--text-text-xs, 0.75rem);
500
+ font-weight: 400;
501
+ color: var(--color-text-tertiary);
502
+ cursor: pointer;
503
+ line-height: 1.5;
504
+ letter-spacing: -0.12px;
505
+ transition: color 150ms;
506
+ }
507
+ .nexus-price-input-field__balance:hover {
508
+ color: var(--color-text-tertiary);
509
+ }
510
+ .nexus-price-input-field__balance:disabled {
511
+ cursor: not-allowed;
512
+ opacity: var(--opacity-disabled-text, 0.5);
513
+ }
514
+ .nexus-price-input-field__balance-value {
515
+ font-weight: 400;
516
+ color: var(--color-text-secondary);
517
+ text-decoration: underline;
518
+ transition: color 150ms;
519
+ }
520
+ .nexus-price-input-field__balance:hover
521
+ .nexus-price-input-field__balance-value {
522
+ color: var(--color-text-primary);
523
+ }
524
+ .nexus-price-input-field__balance-value--exceeded {
525
+ color: var(--color-status-danger);
526
+ }
527
+ .nexus-price-input-field__balance:hover
528
+ .nexus-price-input-field__balance-value--exceeded {
529
+ color: var(--color-status-danger);
530
+ }
531
+ .nexus-price-input-field__description {
532
+ font-size: var(--text-text-xs, 0.75rem);
533
+ color: var(--color-text-tertiary);
534
+ line-height: 1.5;
535
+ letter-spacing: -0.12px;
536
+ }
537
+ .nexus-price-input-field__description--error {
538
+ color: var(--color-status-danger);
539
+ }
540
+
541
+ /* ── Input box ── */
542
+ .nexus-price-input {
543
+ display: flex;
544
+ align-items: center;
545
+ gap: 0.5rem;
546
+ border-radius: var(--radius-corner-md, 0.5rem);
547
+ border: 1px solid var(--color-border-default);
548
+ background: var(--color-surface-default);
549
+ font-size: var(--text-text-sm, 0.875rem);
550
+ font-weight: 500;
551
+ line-height: 1;
552
+ color: var(--color-text-primary);
553
+ transition:
554
+ border-color 200ms,
555
+ box-shadow 200ms;
556
+ }
557
+ :where(.nexus-price-input) {
558
+ width: 100%;
559
+ }
560
+ .nexus-price-input:hover:not(.nexus-price-input--disabled):not(:focus-within) {
561
+ border-color: var(--color-border-default-hover);
562
+ box-shadow: 0 0 0 0.5px var(--color-border-default-hover);
563
+ }
564
+ .nexus-price-input--default:focus-within {
565
+ border-color: var(--color-accent-primary);
566
+ box-shadow: 0 0 0 0.5px var(--color-accent-primary);
567
+ }
568
+ .nexus-price-input--error {
569
+ border-color: var(--color-status-danger);
570
+ }
571
+ .nexus-price-input--error:focus-within {
572
+ border-color: var(--color-status-danger);
573
+ box-shadow: 0 0 0 0.5px var(--color-status-danger);
574
+ }
575
+ .nexus-price-input--disabled {
576
+ cursor: not-allowed;
577
+ background: var(--color-surface-strong);
578
+ border-color: var(--color-border-medium);
579
+ color: var(--color-text-muted);
580
+ }
581
+
582
+ /* ── Sizes ── */
583
+ .nexus-price-input--xl {
584
+ padding: calc(var(--spacing-padding-md, 1rem) - 1px)
585
+ var(--spacing-padding-md, 1rem);
586
+ font-size: var(--text-text-base, 1rem);
587
+ }
588
+ .nexus-price-input--lg {
589
+ padding: calc(var(--spacing-padding-sm, 0.75rem) - 1px)
590
+ var(--spacing-padding-sm, 0.75rem);
591
+ font-size: var(--text-text-base, 1rem);
592
+ }
593
+ .nexus-price-input--md {
594
+ padding: calc(var(--spacing-padding-xs, 0.5rem) - 1px)
595
+ var(--spacing-padding-sm, 0.75rem);
596
+ font-size: var(--text-text-sm, 0.875rem);
597
+ }
598
+
599
+ /* ── Inner elements ── */
600
+ .nexus-price-input__prefix {
601
+ flex-shrink: 0;
602
+ color: var(--color-text-secondary);
603
+ font: inherit;
604
+ user-select: none;
605
+ }
606
+ .nexus-price-input__suffix {
607
+ flex-shrink: 0;
608
+ color: var(--color-text-secondary);
609
+ font: inherit;
610
+ white-space: nowrap;
611
+ user-select: none;
612
+ }
613
+ .nexus-price-input__inner {
614
+ flex: 1;
615
+ min-width: 0;
616
+ padding: 0;
617
+ background: transparent;
618
+ border: none;
619
+ outline: none;
620
+ color: inherit;
621
+ font: inherit;
622
+ }
623
+ .nexus-price-input__inner:focus-visible {
624
+ outline: none;
625
+ }
626
+ .nexus-price-input__inner::placeholder {
627
+ color: var(--color-text-muted);
628
+ }
629
+ .nexus-price-input__inner--right {
630
+ text-align: right;
631
+ }
632
+
633
+ /* ═══════════════════════════════════════════
634
+ TextArea
635
+ ═══════════════════════════════════════════ */
636
+
637
+ /* ── Field wrapper ── */
638
+ .nexus-textarea-field {
639
+ display: flex;
640
+ flex-direction: column;
641
+ gap: 0.25rem;
642
+ }
643
+ .nexus-textarea-field__label {
644
+ font-size: var(--text-label-semibold-md, 0.875rem);
645
+ font-weight: 600;
646
+ color: var(--color-text-tertiary);
647
+ line-height: 1;
648
+ }
649
+ .nexus-textarea-field__footer {
650
+ display: flex;
651
+ align-items: center;
652
+ gap: 0.5rem;
653
+ }
654
+ .nexus-textarea-field__description {
655
+ flex: 1;
656
+ min-width: 0;
657
+ font-size: var(--text-text-xs, 0.75rem);
658
+ color: var(--color-text-tertiary);
659
+ line-height: 1.5;
660
+ letter-spacing: -0.12px;
661
+ }
662
+ .nexus-textarea-field__description--error {
663
+ color: var(--color-status-danger-intense, #d20625);
664
+ }
665
+ .nexus-textarea-field__count {
666
+ font-size: var(--text-text-xs, 0.75rem);
667
+ color: var(--color-text-tertiary);
668
+ line-height: 1.5;
669
+ letter-spacing: -0.12px;
670
+ text-align: right;
671
+ flex-shrink: 0;
672
+ margin-left: auto;
673
+ }
674
+ .nexus-textarea-field__count--error {
675
+ color: var(--color-status-danger-intense, #d20625);
676
+ }
677
+
678
+ /* ── Textarea box ── */
679
+ .nexus-textarea {
680
+ border-radius: var(--radius-corner-md, 0.5rem);
681
+ border: 1px solid var(--color-border-default);
682
+ background: var(--color-surface-default);
683
+ color: var(--color-text-primary);
684
+ font-weight: 500;
685
+ line-height: 1.5;
686
+ transition:
687
+ border-color 200ms,
688
+ box-shadow 200ms;
689
+ resize: none;
690
+ min-height: 100px;
691
+ padding: var(--spacing-padding-sm, 0.75rem);
692
+ }
693
+ :where(.nexus-textarea) {
694
+ width: 100%;
695
+ }
696
+ .nexus-textarea::placeholder {
697
+ color: var(--color-text-muted);
698
+ }
699
+ .nexus-textarea:focus-visible {
700
+ outline: none;
701
+ }
702
+
703
+ /* Hover */
704
+ .nexus-textarea:hover:not(.nexus-textarea--disabled):not(:focus) {
705
+ border-color: var(--color-border-default-hover);
706
+ box-shadow: 0 0 0 0.5px var(--color-border-default-hover);
707
+ }
708
+
709
+ /* Focus — default */
710
+ .nexus-textarea--default:focus {
711
+ border-color: var(--color-accent-primary);
712
+ box-shadow: 0 0 0 0.5px var(--color-accent-primary);
713
+ }
714
+
715
+ /* Error */
716
+ .nexus-textarea--error {
717
+ border-color: var(--color-status-danger-focus, #e62848);
718
+ box-shadow: 0 0 0 0.5px var(--color-status-danger-focus, #e62848);
719
+ }
720
+ .nexus-textarea--error:focus {
721
+ border-color: var(--color-status-danger-focus, #e62848);
722
+ box-shadow: 0 0 0 0.5px var(--color-status-danger-focus, #e62848);
723
+ }
724
+
725
+ /* Disabled */
726
+ .nexus-textarea--disabled {
727
+ cursor: not-allowed;
728
+ background: var(
729
+ --color-surface-default-disabled,
730
+ var(--color-surface-strong)
731
+ );
732
+ border-color: var(--color-border-medium);
733
+ color: var(--color-text-muted);
734
+ }
735
+
736
+ /* ── Sizes ── */
737
+ .nexus-textarea--lg {
738
+ font-size: var(--text-text-medium-base, 1rem);
739
+ letter-spacing: -0.16px;
740
+ }
741
+ .nexus-textarea--md {
742
+ font-size: var(--text-text-medium-sm, 0.875rem);
743
+ letter-spacing: -0.14px;
744
+ }
745
+
746
+ /* ── Resize modes ── */
747
+ .nexus-textarea--resize-default {
748
+ resize: vertical;
749
+ }
750
+ .nexus-textarea--resize-auto {
751
+ resize: none;
752
+ overflow: hidden;
753
+ }
754
+
755
+ /* ── Custom scrollbar ── */
756
+ .nexus-textarea:not(.nexus-textarea--resize-auto) {
757
+ overflow-y: auto;
758
+ }
759
+ .nexus-textarea::-webkit-scrollbar {
760
+ width: 5px;
761
+ }
762
+ .nexus-textarea::-webkit-scrollbar-track {
763
+ background: transparent;
764
+ }
765
+ .nexus-textarea::-webkit-scrollbar-thumb {
766
+ background: var(--color-icon-muted, #c6d0da);
767
+ border-radius: var(--radius-corner-full, 9999px);
768
+ }
769
+
770
+ /* ═══════════════════════════════════════════
771
+ NumberInput
772
+ ═══════════════════════════════════════════ */
773
+
774
+ .nexus-number-input {
775
+ display: flex;
776
+ align-items: center;
777
+ border-radius: var(--radius-corner-md, 0.375rem);
778
+ border: 1px solid var(--color-border-default);
779
+ background: var(--color-surface-default);
780
+ color: var(--color-text-primary);
781
+ transition:
782
+ border-color 200ms,
783
+ box-shadow 200ms;
784
+ }
785
+ :where(.nexus-number-input) {
786
+ width: 100%;
787
+ }
788
+ .nexus-number-input:hover:not(.nexus-number-input--disabled):not(
789
+ :focus-within
790
+ ) {
791
+ box-shadow: 0 0 0 0.5px var(--color-border-default);
792
+ }
793
+ .nexus-number-input--default:focus-within {
794
+ border-color: var(--color-accent-primary);
795
+ box-shadow: 0 0 0 0.5px var(--color-accent-primary);
796
+ }
797
+ .nexus-number-input--error {
798
+ border-color: var(--color-status-danger);
799
+ }
800
+ .nexus-number-input--error:focus-within {
801
+ border-color: var(--color-status-danger);
802
+ box-shadow: 0 0 0 0.5px var(--color-status-danger);
803
+ }
804
+ .nexus-number-input--xl {
805
+ height: 3.5rem;
806
+ font-size: var(--text-text-base, 1rem);
807
+ }
808
+ .nexus-number-input--lg {
809
+ height: 3rem;
810
+ font-size: var(--text-text-base, 1rem);
811
+ }
812
+ .nexus-number-input--md {
813
+ height: 2.5rem;
814
+ font-size: var(--text-text-sm, 0.875rem);
815
+ }
816
+ .nexus-number-input--sm {
817
+ height: 2rem;
818
+ font-size: var(--text-text-xs, 0.75rem);
819
+ }
820
+ .nexus-number-input--disabled {
821
+ opacity: 0.5;
822
+ cursor: not-allowed;
823
+ }
824
+ .nexus-number-input__field {
825
+ height: 100%;
826
+ width: 100%;
827
+ min-width: 0;
828
+ flex: 1;
829
+ padding: 0;
830
+ border: none;
831
+ background: transparent;
832
+ outline: none;
833
+ font: inherit;
834
+ color: inherit;
835
+ }
836
+ .nexus-number-input__field::placeholder {
837
+ color: var(--color-text-tertiary);
838
+ }
839
+ .nexus-number-input__field:focus-visible {
840
+ outline: none;
841
+ }
842
+ .nexus-number-input__field--xl {
843
+ padding-inline: var(--spacing-padding-lg, 1.25rem);
844
+ }
845
+ .nexus-number-input__field--lg {
846
+ padding-inline: var(--spacing-padding-md, 1rem);
847
+ }
848
+ .nexus-number-input__field--md {
849
+ padding-inline: var(--spacing-padding-sm, 0.75rem);
850
+ }
851
+ .nexus-number-input__field--sm {
852
+ padding-inline: 0.625rem;
853
+ }
854
+ .nexus-number-input__buttons {
855
+ display: flex;
856
+ flex-direction: column;
857
+ border-left: 1px solid var(--color-border-default);
858
+ height: 100%;
859
+ flex-shrink: 0;
860
+ }
861
+ .nexus-number-input__step {
862
+ display: flex;
863
+ flex: 1;
864
+ align-items: center;
865
+ justify-content: center;
866
+ padding: 0;
867
+ padding-inline: 0.375rem;
868
+ margin: 0;
869
+ border: none;
870
+ background: transparent;
871
+ cursor: pointer;
872
+ font: inherit;
873
+ color: var(--color-text-tertiary);
874
+ transition-property: color, background-color;
875
+ transition-duration: 150ms;
876
+ }
877
+ .nexus-number-input__step:hover {
878
+ color: var(--color-text-primary);
879
+ background: var(--color-surface-hover);
880
+ }
881
+ .nexus-number-input__step:disabled {
882
+ opacity: 0.4;
883
+ pointer-events: none;
884
+ }
885
+ .nexus-number-input__step--up {
886
+ border-top-right-radius: var(--radius-corner-md, 0.375rem);
887
+ border-bottom: 1px solid var(--color-border-default);
888
+ }
889
+ .nexus-number-input__step--down {
890
+ border-bottom-right-radius: var(--radius-corner-md, 0.375rem);
891
+ }
892
+ .nexus-number-input__step-icon {
893
+ width: 0.75rem;
894
+ height: 0.75rem;
895
+ }
896
+
897
+ /* ═══════════════════════════════════════════
898
+ Divider
899
+ ═══════════════════════════════════════════ */
900
+
901
+ .nexus-divider {
902
+ flex-shrink: 0;
903
+ border-color: var(--color-border-default);
904
+ }
905
+ .nexus-divider--horizontal {
906
+ width: 100%;
907
+ border-top-width: 1px;
908
+ }
909
+ .nexus-divider--vertical {
910
+ align-self: stretch;
911
+ border-left-width: 1px;
912
+ }
913
+ .nexus-divider--solid {
914
+ border-style: solid;
915
+ }
916
+ .nexus-divider--dashed {
917
+ border-style: dashed;
918
+ }
919
+ .nexus-divider--dotted {
920
+ border-style: dotted;
921
+ }
922
+
923
+ /* ═══════════════════════════════════════════
924
+ Avatar
925
+ ═══════════════════════════════════════════ */
926
+
927
+ .nexus-avatar {
928
+ position: relative;
929
+ display: inline-flex;
930
+ flex-shrink: 0;
931
+ align-items: center;
932
+ justify-content: center;
933
+ overflow: hidden;
934
+ background: var(--color-surface-hover);
935
+ color: var(--color-text-tertiary);
936
+ }
937
+ .nexus-avatar--xs {
938
+ width: 1.5rem;
939
+ height: 1.5rem;
940
+ font-size: 10px;
941
+ }
942
+ .nexus-avatar--sm {
943
+ width: 2rem;
944
+ height: 2rem;
945
+ font-size: var(--text-text-xs, 0.75rem);
946
+ }
947
+ .nexus-avatar--md {
948
+ width: 2.5rem;
949
+ height: 2.5rem;
950
+ font-size: var(--text-text-sm, 0.875rem);
951
+ }
952
+ .nexus-avatar--lg {
953
+ width: 3rem;
954
+ height: 3rem;
955
+ font-size: var(--text-text-base, 1rem);
956
+ }
957
+ .nexus-avatar--xl {
958
+ width: 4rem;
959
+ height: 4rem;
960
+ font-size: var(--text-text-lg, 1.125rem);
961
+ }
962
+ .nexus-avatar--circle {
963
+ border-radius: 9999px;
964
+ }
965
+ .nexus-avatar--square {
966
+ border-radius: var(--radius-corner-md, 0.375rem);
967
+ }
968
+ .nexus-avatar__icon--xs {
969
+ width: 1rem;
970
+ height: 1rem;
971
+ }
972
+ .nexus-avatar__icon--sm {
973
+ width: 1.25rem;
974
+ height: 1.25rem;
975
+ }
976
+ .nexus-avatar__icon--md {
977
+ width: 1.5rem;
978
+ height: 1.5rem;
979
+ }
980
+ .nexus-avatar__icon--lg {
981
+ width: 2rem;
982
+ height: 2rem;
983
+ }
984
+ .nexus-avatar__icon--xl {
985
+ width: 2.5rem;
986
+ height: 2.5rem;
987
+ }
988
+ .nexus-avatar__img {
989
+ width: 100%;
990
+ height: 100%;
991
+ object-fit: cover;
992
+ }
993
+
994
+ /* ═══════════════════════════════════════════
995
+ Switch
996
+ ═══════════════════════════════════════════ */
997
+
998
+ .nexus-switch {
999
+ position: relative;
1000
+ display: inline-flex;
1001
+ flex-shrink: 0;
1002
+ cursor: pointer;
1003
+ border-radius: 9999px;
1004
+ transition-property: background-color;
1005
+ transition-duration: 200ms;
1006
+ border: 2px solid transparent;
1007
+ }
1008
+ .nexus-switch:has(input:disabled) {
1009
+ cursor: not-allowed;
1010
+ opacity: 0.5;
1011
+ }
1012
+ .nexus-switch--sm {
1013
+ height: 1.25rem;
1014
+ width: 2.25rem;
1015
+ }
1016
+ .nexus-switch--md {
1017
+ height: 1.5rem;
1018
+ width: 2.75rem;
1019
+ }
1020
+ .nexus-switch--checked {
1021
+ background: var(--color-accent-primary);
1022
+ }
1023
+ .nexus-switch--unchecked {
1024
+ background: var(--color-border-default);
1025
+ }
1026
+ .nexus-switch__thumb {
1027
+ pointer-events: none;
1028
+ display: block;
1029
+ border-radius: 9999px;
1030
+ background: var(--color-static-white);
1031
+ box-shadow: var(--shadow-comp-sm);
1032
+ transition-property: transform;
1033
+ transition-duration: 200ms;
1034
+ }
1035
+ .nexus-switch__thumb--sm {
1036
+ width: 1rem;
1037
+ height: 1rem;
1038
+ }
1039
+ .nexus-switch__thumb--md {
1040
+ width: 1.25rem;
1041
+ height: 1.25rem;
1042
+ }
1043
+ .nexus-switch__thumb--sm-on {
1044
+ transform: translateX(1rem);
1045
+ }
1046
+ .nexus-switch__thumb--md-on {
1047
+ transform: translateX(1.25rem);
1048
+ }
1049
+ .nexus-switch__thumb--off {
1050
+ transform: translateX(0);
1051
+ }
1052
+
1053
+ /* ═══════════════════════════════════════════
1054
+ CheckBox
1055
+ ═══════════════════════════════════════════ */
1056
+
1057
+ .nexus-checkbox {
1058
+ display: inline-flex;
1059
+ align-items: center;
1060
+ gap: var(--spacing-gap-sm, 0.5rem);
1061
+ user-select: none;
1062
+ }
1063
+ .nexus-checkbox--sm {
1064
+ font-size: var(--text-text-xs, 0.75rem);
1065
+ }
1066
+ .nexus-checkbox--md {
1067
+ font-size: var(--text-text-sm, 0.875rem);
1068
+ }
1069
+ .nexus-checkbox--pointer {
1070
+ cursor: pointer;
1071
+ }
1072
+ .nexus-checkbox--disabled {
1073
+ cursor: not-allowed;
1074
+ opacity: 0.5;
1075
+ }
1076
+ .nexus-checkbox__box {
1077
+ display: inline-flex;
1078
+ flex-shrink: 0;
1079
+ align-items: center;
1080
+ justify-content: center;
1081
+ border: 1px solid var(--color-border-default);
1082
+ transition-property: border-color, background-color;
1083
+ transition-duration: 150ms;
1084
+ }
1085
+ .nexus-checkbox__box:has(~ .nexus-sr-only:disabled) {
1086
+ opacity: 0.5;
1087
+ cursor: not-allowed;
1088
+ }
1089
+ .nexus-checkbox__box--sm {
1090
+ width: 1rem;
1091
+ height: 1rem;
1092
+ }
1093
+ .nexus-checkbox__box--md {
1094
+ width: 1.25rem;
1095
+ height: 1.25rem;
1096
+ }
1097
+ .nexus-checkbox__box--square {
1098
+ border-radius: var(--radius-corner-sm, 0.25rem);
1099
+ }
1100
+ .nexus-checkbox__box--round {
1101
+ border-radius: 9999px;
1102
+ }
1103
+ .nexus-checkbox__box--checked {
1104
+ border-color: var(--color-accent-primary);
1105
+ background: var(--color-accent-primary);
1106
+ color: var(--color-static-white);
1107
+ }
1108
+ .nexus-checkbox__box--unchecked {
1109
+ border-color: var(--color-border-default);
1110
+ background: var(--color-surface-default);
1111
+ }
1112
+ .nexus-checkbox__icon--sm {
1113
+ width: 0.75rem;
1114
+ height: 0.75rem;
1115
+ }
1116
+ .nexus-checkbox__icon--md {
1117
+ width: 0.875rem;
1118
+ height: 0.875rem;
1119
+ }
1120
+ .nexus-checkbox__label {
1121
+ color: var(--color-text-primary);
1122
+ }
1123
+
1124
+ /* ═══════════════════════════════════════════
1125
+ RadioGroup
1126
+ ═══════════════════════════════════════════ */
1127
+
1128
+ .nexus-radio-group {
1129
+ display: flex;
1130
+ }
1131
+ .nexus-radio-group--horizontal {
1132
+ flex-direction: row;
1133
+ gap: var(--spacing-gap-lg, 1rem);
1134
+ }
1135
+ .nexus-radio-group--vertical {
1136
+ flex-direction: column;
1137
+ gap: var(--spacing-gap-sm, 0.5rem);
1138
+ }
1139
+ .nexus-radio-item {
1140
+ display: inline-flex;
1141
+ align-items: center;
1142
+ gap: var(--spacing-gap-sm, 0.5rem);
1143
+ user-select: none;
1144
+ }
1145
+ .nexus-radio-item--sm {
1146
+ font-size: var(--text-text-xs, 0.75rem);
1147
+ }
1148
+ .nexus-radio-item--md {
1149
+ font-size: var(--text-text-sm, 0.875rem);
1150
+ }
1151
+ .nexus-radio-item--pointer {
1152
+ cursor: pointer;
1153
+ }
1154
+ .nexus-radio-item--disabled {
1155
+ cursor: not-allowed;
1156
+ opacity: 0.5;
1157
+ }
1158
+ .nexus-radio__circle {
1159
+ display: inline-flex;
1160
+ flex-shrink: 0;
1161
+ align-items: center;
1162
+ justify-content: center;
1163
+ border-radius: 9999px;
1164
+ border: 1px solid var(--color-border-default);
1165
+ transition-property: border-color;
1166
+ transition-duration: 150ms;
1167
+ }
1168
+ .nexus-radio__circle:has(~ .nexus-sr-only:disabled) {
1169
+ opacity: 0.5;
1170
+ cursor: not-allowed;
1171
+ }
1172
+ .nexus-radio__circle--sm {
1173
+ width: 1rem;
1174
+ height: 1rem;
1175
+ }
1176
+ .nexus-radio__circle--md {
1177
+ width: 1.25rem;
1178
+ height: 1.25rem;
1179
+ }
1180
+ .nexus-radio__circle--checked {
1181
+ border-color: var(--color-accent-primary);
1182
+ color: var(--color-accent-primary);
1183
+ }
1184
+ .nexus-radio__circle--unchecked {
1185
+ border-color: var(--color-border-default);
1186
+ background: var(--color-surface-default);
1187
+ }
1188
+ .nexus-radio__dot {
1189
+ border-radius: 9999px;
1190
+ background: currentColor;
1191
+ }
1192
+ .nexus-radio__dot--sm {
1193
+ width: 0.375rem;
1194
+ height: 0.375rem;
1195
+ }
1196
+ .nexus-radio__dot--md {
1197
+ width: 0.5rem;
1198
+ height: 0.5rem;
1199
+ }
1200
+ .nexus-radio__label {
1201
+ color: var(--color-text-primary);
1202
+ }
1203
+
1204
+ /* ═══════════════════════════════════════════
1205
+ Chip
1206
+ ═══════════════════════════════════════════ */
1207
+
1208
+ .nexus-chip {
1209
+ display: inline-flex;
1210
+ align-items: center;
1211
+ gap: 0.375rem;
1212
+ white-space: nowrap;
1213
+ font-weight: 500;
1214
+ transition-property: color, background-color, border-color;
1215
+ transition-duration: 150ms;
1216
+ user-select: none;
1217
+ border-radius: 9999px;
1218
+ border: 1px solid transparent;
1219
+ background: transparent;
1220
+ cursor: pointer;
1221
+ font-family: inherit;
1222
+ padding: 0;
1223
+ margin: 0;
1224
+ text-decoration: none;
1225
+ }
1226
+ .nexus-chip[aria-disabled='true'] {
1227
+ opacity: 0.5;
1228
+ pointer-events: none;
1229
+ }
1230
+ .nexus-chip--default {
1231
+ border-color: var(--color-border-default);
1232
+ background: var(--color-surface-default);
1233
+ color: var(--color-text-primary);
1234
+ }
1235
+ .nexus-chip--filled {
1236
+ border-color: transparent;
1237
+ background: var(--color-surface-hover);
1238
+ color: var(--color-text-primary);
1239
+ }
1240
+ .nexus-chip--outline {
1241
+ border-color: var(--color-border-default);
1242
+ background: transparent;
1243
+ color: var(--color-text-primary);
1244
+ }
1245
+ .nexus-chip--accent {
1246
+ border-color: transparent;
1247
+ background: color-mix(in srgb, var(--color-accent-primary) 10%, transparent);
1248
+ color: var(--color-accent-primary);
1249
+ }
1250
+ .nexus-chip--sm {
1251
+ height: 1.5rem;
1252
+ padding-inline: var(--spacing-padding-xs, 0.5rem);
1253
+ font-size: var(--text-text-xs, 0.75rem);
1254
+ }
1255
+ .nexus-chip--md {
1256
+ height: 1.75rem;
1257
+ padding-inline: 0.625rem;
1258
+ font-size: var(--text-text-xs, 0.75rem);
1259
+ }
1260
+ .nexus-chip--lg {
1261
+ height: 2rem;
1262
+ padding-inline: var(--spacing-padding-sm, 0.75rem);
1263
+ font-size: var(--text-text-sm, 0.875rem);
1264
+ }
1265
+ .nexus-chip__close {
1266
+ display: inline-flex;
1267
+ flex-shrink: 0;
1268
+ align-items: center;
1269
+ justify-content: center;
1270
+ border-radius: 9999px;
1271
+ padding: 0.125rem;
1272
+ opacity: 0.6;
1273
+ transition-property: opacity;
1274
+ transition-duration: 150ms;
1275
+ }
1276
+ .nexus-chip__close:hover {
1277
+ opacity: 1;
1278
+ }
1279
+ .nexus-chip__close-icon {
1280
+ width: 0.75rem;
1281
+ height: 0.75rem;
1282
+ }
1283
+
1284
+ /* ═══════════════════════════════════════════
1285
+ Badge
1286
+ ═══════════════════════════════════════════ */
1287
+
1288
+ .nexus-badge-wrapper {
1289
+ position: relative;
1290
+ }
1291
+ .nexus-badge {
1292
+ --nexus-badge-offset-x: 0px;
1293
+ --nexus-badge-offset-y: 0px;
1294
+ box-sizing: border-box;
1295
+ display: inline-flex;
1296
+ align-items: center;
1297
+ justify-content: center;
1298
+ min-width: 1.25rem;
1299
+ height: 1.25rem;
1300
+ padding: 0 0.35rem;
1301
+ border-radius: var(--radius-corner-full, 9999px);
1302
+ font-size: var(--text-text-xs, 0.75rem);
1303
+ font-weight: var(--font-weight-label-semibold-sm, 600);
1304
+ line-height: 1;
1305
+ color: var(--color-text-inverted);
1306
+ }
1307
+ .nexus-badge--positioned {
1308
+ position: absolute;
1309
+ top: 0;
1310
+ right: 0;
1311
+ z-index: 1;
1312
+ transform: translate(
1313
+ calc(50% + var(--nexus-badge-offset-x)),
1314
+ calc(-50% + var(--nexus-badge-offset-y))
1315
+ );
1316
+ }
1317
+ .nexus-badge--dot {
1318
+ min-width: 0;
1319
+ padding: 0;
1320
+ }
1321
+ .nexus-badge--dot.nexus-badge--sm {
1322
+ width: 0.375rem;
1323
+ height: 0.375rem;
1324
+ }
1325
+ .nexus-badge--dot.nexus-badge--md {
1326
+ width: 0.5rem;
1327
+ height: 0.5rem;
1328
+ }
1329
+ .nexus-badge--dot.nexus-badge--lg {
1330
+ width: 0.625rem;
1331
+ height: 0.625rem;
1332
+ }
1333
+ .nexus-badge--danger {
1334
+ background: var(--color-status-danger);
1335
+ color: var(--color-static-white);
1336
+ }
1337
+ .nexus-badge--primary {
1338
+ background: var(--color-accent-primary);
1339
+ color: var(--color-accent-on-primary);
1340
+ }
1341
+ .nexus-badge--secondary {
1342
+ background: var(--color-accent-secondary);
1343
+ color: var(--color-accent-on-secondary);
1344
+ }
1345
+ .nexus-badge--info {
1346
+ background: var(--color-status-info);
1347
+ color: var(--color-static-white);
1348
+ }
1349
+ .nexus-badge--success {
1350
+ background: var(--color-status-success);
1351
+ color: var(--color-static-white);
1352
+ }
1353
+ .nexus-badge--warning {
1354
+ background: var(--color-status-warning);
1355
+ color: var(--color-static-black);
1356
+ }
1357
+ .nexus-badge--sm:not(.nexus-badge--dot) {
1358
+ min-width: 1rem;
1359
+ height: 1rem;
1360
+ padding: 0 0.25rem;
1361
+ font-size: 0.625rem;
1362
+ }
1363
+ .nexus-badge--lg:not(.nexus-badge--dot) {
1364
+ min-width: 1.5rem;
1365
+ height: 1.5rem;
1366
+ padding: 0 0.45rem;
1367
+ font-size: var(--text-text-sm, 0.875rem);
1368
+ }
1369
+
1370
+ /* ═══════════════════════════════════════════
1371
+ Progress
1372
+ ═══════════════════════════════════════════ */
1373
+
1374
+ .nexus-progress-wrapper {
1375
+ display: flex;
1376
+ flex-direction: column;
1377
+ gap: var(--spacing-gap-xs, 0.25rem);
1378
+ width: 100%;
1379
+ }
1380
+ .nexus-progress__header {
1381
+ display: flex;
1382
+ justify-content: space-between;
1383
+ align-items: center;
1384
+ gap: var(--spacing-gap-sm, 0.5rem);
1385
+ }
1386
+ .nexus-progress__label {
1387
+ font-size: var(--text-text-sm, 0.875rem);
1388
+ color: var(--color-text-primary);
1389
+ }
1390
+ .nexus-progress__value {
1391
+ font-size: var(--text-text-sm, 0.875rem);
1392
+ color: var(--color-text-secondary);
1393
+ font-variant-numeric: tabular-nums;
1394
+ }
1395
+ .nexus-progress {
1396
+ position: relative;
1397
+ width: 100%;
1398
+ overflow: hidden;
1399
+ border-radius: var(--radius-corner-full, 9999px);
1400
+ background: var(--color-surface-strong);
1401
+ }
1402
+ .nexus-progress--sm {
1403
+ height: 0.25rem;
1404
+ }
1405
+ .nexus-progress--md {
1406
+ height: 0.375rem;
1407
+ }
1408
+ .nexus-progress--lg {
1409
+ height: 0.5rem;
1410
+ }
1411
+ .nexus-progress__bar {
1412
+ height: 100%;
1413
+ border-radius: inherit;
1414
+ transition:
1415
+ width var(--duration-transition-normal, 200ms) var(--ease-transition-normal, cubic-bezier(0, 0, 0.2, 1));
1416
+ }
1417
+ .nexus-progress--primary .nexus-progress__bar {
1418
+ background: var(--color-accent-primary);
1419
+ }
1420
+ .nexus-progress--success .nexus-progress__bar {
1421
+ background: var(--color-status-success);
1422
+ }
1423
+ .nexus-progress--warning .nexus-progress__bar {
1424
+ background: var(--color-status-warning);
1425
+ }
1426
+ .nexus-progress--danger .nexus-progress__bar {
1427
+ background: var(--color-status-danger);
1428
+ }
1429
+ .nexus-progress--info .nexus-progress__bar {
1430
+ background: var(--color-status-info);
1431
+ }
1432
+ .nexus-progress__bar--indeterminate {
1433
+ position: absolute;
1434
+ left: 0;
1435
+ top: 0;
1436
+ bottom: 0;
1437
+ width: 35% !important;
1438
+ animation: nexus-progress-indeterminate 1.1s var(--ease-transition-normal, cubic-bezier(0, 0, 0.2, 1))
1439
+ infinite;
1440
+ }
1441
+ @keyframes nexus-progress-indeterminate {
1442
+ 0% {
1443
+ transform: translateX(-100%);
1444
+ }
1445
+ 100% {
1446
+ transform: translateX(calc(100% / 0.35 * 3));
1447
+ }
1448
+ }
1449
+
1450
+ /* ═══════════════════════════════════════════
1451
+ Alert
1452
+ ═══════════════════════════════════════════ */
1453
+
1454
+ .nexus-alert {
1455
+ display: flex;
1456
+ align-items: flex-start;
1457
+ gap: var(--spacing-gap-sm, 0.5rem);
1458
+ padding: var(--spacing-padding-md, 1rem);
1459
+ border-radius: var(--radius-corner-md, 8px);
1460
+ border-width: var(--border-width-stroke-thin, 1px);
1461
+ border-style: solid;
1462
+ }
1463
+ .nexus-alert__icon {
1464
+ flex-shrink: 0;
1465
+ margin-top: 0.125rem;
1466
+ line-height: 0;
1467
+ }
1468
+ .nexus-alert__icon-svg {
1469
+ width: 1.25rem;
1470
+ height: 1.25rem;
1471
+ }
1472
+ .nexus-alert__body {
1473
+ flex: 1;
1474
+ min-width: 0;
1475
+ }
1476
+ .nexus-alert__title {
1477
+ margin: 0;
1478
+ font-weight: var(--font-weight-heading-h7, 600);
1479
+ font-size: var(--text-text-sm, 0.875rem);
1480
+ color: var(--color-text-primary);
1481
+ }
1482
+ .nexus-alert__description {
1483
+ margin-top: var(--spacing-gap-xs, 0.25rem);
1484
+ font-size: var(--text-text-sm, 0.875rem);
1485
+ color: var(--color-text-secondary);
1486
+ }
1487
+ .nexus-alert__action {
1488
+ flex-shrink: 0;
1489
+ align-self: center;
1490
+ }
1491
+ .nexus-alert__close {
1492
+ flex-shrink: 0;
1493
+ display: inline-flex;
1494
+ align-items: center;
1495
+ justify-content: center;
1496
+ margin: 0;
1497
+ padding: var(--spacing-padding-2xs, 0.25rem);
1498
+ border: none;
1499
+ border-radius: var(--radius-corner-sm, 4px);
1500
+ background: transparent;
1501
+ cursor: pointer;
1502
+ font: inherit;
1503
+ color: var(--color-icon-secondary);
1504
+ transition: color var(--duration-transition-fast, 150ms) var(--ease-transition-fast, ease);
1505
+ }
1506
+ .nexus-alert__close:hover {
1507
+ color: var(--color-icon-primary);
1508
+ }
1509
+ .nexus-alert__close-icon {
1510
+ width: 1rem;
1511
+ height: 1rem;
1512
+ }
1513
+ .nexus-alert--info {
1514
+ background: color-mix(in srgb, var(--color-status-info-dim) 45%, var(--color-surface-default));
1515
+ border-color: color-mix(in srgb, var(--color-status-info) 28%, var(--color-border-default));
1516
+ }
1517
+ .nexus-alert--info .nexus-alert__icon {
1518
+ color: var(--color-status-info-intense);
1519
+ }
1520
+ .nexus-alert--success {
1521
+ background: color-mix(in srgb, var(--color-status-success-dim) 45%, var(--color-surface-default));
1522
+ border-color: color-mix(in srgb, var(--color-status-success) 28%, var(--color-border-default));
1523
+ }
1524
+ .nexus-alert--success .nexus-alert__icon {
1525
+ color: var(--color-status-success-intense);
1526
+ }
1527
+ .nexus-alert--warning {
1528
+ background: color-mix(in srgb, var(--color-status-warning-dim) 45%, var(--color-surface-default));
1529
+ border-color: color-mix(in srgb, var(--color-status-warning) 28%, var(--color-border-default));
1530
+ }
1531
+ .nexus-alert--warning .nexus-alert__icon {
1532
+ color: var(--color-status-warning-intense);
1533
+ }
1534
+ .nexus-alert--danger {
1535
+ background: color-mix(in srgb, var(--color-status-danger-dim) 45%, var(--color-surface-default));
1536
+ border-color: color-mix(in srgb, var(--color-status-danger) 28%, var(--color-border-default));
1537
+ }
1538
+ .nexus-alert--danger .nexus-alert__icon {
1539
+ color: var(--color-status-danger-intense);
1540
+ }
1541
+
1542
+ /* ═══════════════════════════════════════════
1543
+ Pagination
1544
+ ═══════════════════════════════════════════ */
1545
+
1546
+ .nexus-pagination {
1547
+ display: flex;
1548
+ align-items: center;
1549
+ gap: var(--spacing-gap-xs, 0.25rem);
1550
+ }
1551
+ .nexus-pagination--sm {
1552
+ font-size: var(--text-text-xs, 0.75rem);
1553
+ }
1554
+ .nexus-pagination--md {
1555
+ font-size: var(--text-text-sm, 0.875rem);
1556
+ }
1557
+ .nexus-page-btn {
1558
+ display: inline-flex;
1559
+ align-items: center;
1560
+ justify-content: center;
1561
+ border-radius: var(--radius-corner-md, 0.375rem);
1562
+ font-weight: 500;
1563
+ transition-property: color, background-color;
1564
+ transition-duration: 150ms;
1565
+ user-select: none;
1566
+ border: 1px solid transparent;
1567
+ background: transparent;
1568
+ cursor: pointer;
1569
+ font-family: inherit;
1570
+ padding: 0;
1571
+ margin: 0;
1572
+ }
1573
+ .nexus-page-btn:disabled {
1574
+ opacity: 0.4;
1575
+ pointer-events: none;
1576
+ }
1577
+ .nexus-page-btn--sm {
1578
+ width: 1.75rem;
1579
+ height: 1.75rem;
1580
+ font-size: var(--text-text-xs, 0.75rem);
1581
+ }
1582
+ .nexus-page-btn--md {
1583
+ width: 2.25rem;
1584
+ height: 2.25rem;
1585
+ font-size: var(--text-text-sm, 0.875rem);
1586
+ }
1587
+ .nexus-page-btn--active {
1588
+ background: var(--color-accent-primary);
1589
+ color: var(--color-static-white);
1590
+ border-color: var(--color-accent-primary);
1591
+ }
1592
+ .nexus-page-btn--inactive {
1593
+ color: var(--color-text-primary);
1594
+ }
1595
+ .nexus-page-btn--inactive:hover {
1596
+ background: var(--color-surface-hover);
1597
+ }
1598
+ .nexus-page-icon--sm {
1599
+ width: 0.875rem;
1600
+ height: 0.875rem;
1601
+ }
1602
+ .nexus-page-icon--md {
1603
+ width: 1rem;
1604
+ height: 1rem;
1605
+ }
1606
+
1607
+ /* ═══════════════════════════════════════════
1608
+ Tab
1609
+ ═══════════════════════════════════════════ */
1610
+
1611
+ .nexus-tab-list {
1612
+ position: relative;
1613
+ display: flex;
1614
+ border-bottom: 1px solid var(--color-border-default);
1615
+ }
1616
+ .nexus-tab-list--pill {
1617
+ gap: var(--spacing-gap-xs, 0.25rem);
1618
+ border-bottom: none;
1619
+ background: var(--color-surface-hover);
1620
+ border-radius: var(--radius-corner-lg, 0.5rem);
1621
+ padding: 0.25rem;
1622
+ }
1623
+ .nexus-tab-trigger {
1624
+ position: relative;
1625
+ display: inline-flex;
1626
+ align-items: center;
1627
+ justify-content: center;
1628
+ white-space: nowrap;
1629
+ font-weight: 500;
1630
+ user-select: none;
1631
+ outline: none;
1632
+ transition-property: color, background-color, border-color;
1633
+ transition-duration: 150ms;
1634
+ border: none;
1635
+ background: transparent;
1636
+ cursor: pointer;
1637
+ font-family: inherit;
1638
+ padding: 0;
1639
+ margin: 0;
1640
+ }
1641
+ .nexus-tab-trigger--line {
1642
+ padding: 0.625rem var(--spacing-padding-md, 1rem);
1643
+ color: var(--color-text-tertiary);
1644
+ border-bottom: 2px solid transparent;
1645
+ margin-bottom: -1px;
1646
+ }
1647
+ .nexus-tab-trigger--line:hover {
1648
+ color: var(--color-text-primary);
1649
+ }
1650
+ .nexus-tab-trigger--line-active {
1651
+ color: var(--color-text-primary);
1652
+ border-bottom-color: var(--color-accent-primary);
1653
+ }
1654
+ .nexus-tab-trigger--pill {
1655
+ padding: 0.375rem var(--spacing-padding-sm, 0.75rem);
1656
+ border-radius: var(--radius-corner-md, 0.375rem);
1657
+ color: var(--color-text-tertiary);
1658
+ }
1659
+ .nexus-tab-trigger--pill:hover {
1660
+ color: var(--color-text-primary);
1661
+ }
1662
+ .nexus-tab-trigger--pill-active {
1663
+ color: var(--color-text-primary);
1664
+ background: var(--color-surface-default);
1665
+ box-shadow: var(--shadow-comp-sm);
1666
+ }
1667
+ .nexus-tab-trigger--sm {
1668
+ font-size: var(--text-text-xs, 0.75rem);
1669
+ }
1670
+ .nexus-tab-trigger--md {
1671
+ font-size: var(--text-text-sm, 0.875rem);
1672
+ }
1673
+ .nexus-tab-trigger--disabled {
1674
+ opacity: 0.4;
1675
+ pointer-events: none;
1676
+ }
1677
+
1678
+ /* ═══════════════════════════════════════════
1679
+ Skeleton
1680
+ ═══════════════════════════════════════════ */
1681
+
1682
+ .nexus-skeleton {
1683
+ position: relative;
1684
+ overflow: hidden;
1685
+ background: linear-gradient(
1686
+ to right,
1687
+ var(--color-surface-hover),
1688
+ var(--color-surface-default),
1689
+ var(--color-surface-hover)
1690
+ );
1691
+ background-size: 300% 100%;
1692
+ animation: nexus-skeleton-shimmer 2.5s ease-in-out infinite;
1693
+ }
1694
+ .nexus-skeleton--rect {
1695
+ border-radius: var(--radius-corner-md, 0.375rem);
1696
+ }
1697
+ .nexus-skeleton--circle {
1698
+ border-radius: 9999px;
1699
+ }
1700
+ .nexus-skeleton__children {
1701
+ opacity: 0;
1702
+ }
1703
+
1704
+ /* ═══════════════════════════════════════════
1705
+ Spinner
1706
+ ═══════════════════════════════════════════ */
1707
+
1708
+ .nexus-spinner {
1709
+ animation: nexus-spin 1s linear infinite;
1710
+ color: currentColor;
1711
+ }
1712
+
1713
+ /* ═══════════════════════════════════════════
1714
+ ErrorBoundary
1715
+ ═══════════════════════════════════════════ */
1716
+
1717
+ .nexus-error-boundary {
1718
+ padding: 1rem;
1719
+ border-radius: var(--radius-corner-lg, 0.5rem);
1720
+ border: 1px solid var(--color-comp-error-border);
1721
+ background: var(--color-comp-error-bg);
1722
+ color: var(--color-comp-error-text);
1723
+ font-size: var(--text-text-sm, 0.875rem);
1724
+ }
1725
+ .nexus-error-boundary__title {
1726
+ margin: 0;
1727
+ font-weight: 600;
1728
+ }
1729
+ .nexus-error-boundary__message {
1730
+ margin: 0.5rem 0 0;
1731
+ opacity: 0.8;
1732
+ }
1733
+
1734
+ /* ═══════════════════════════════════════════
1735
+ Divider & Simple components
1736
+ ═══════════════════════════════════════════ */
1737
+
1738
+ .nexus-virtual-scroll {
1739
+ overflow: auto;
1740
+ }
1741
+ .nexus-modal-portal-target {
1742
+ position: absolute;
1743
+ z-index: 9999;
1744
+ }
1745
+
1746
+ /* ═══════════════════════════════════════════
1747
+ DataList
1748
+ ═══════════════════════════════════════════ */
1749
+
1750
+ .nexus-datalist-center {
1751
+ display: flex;
1752
+ align-items: center;
1753
+ justify-content: center;
1754
+ padding-block: var(--spacing-padding-xl, 2rem);
1755
+ }
1756
+ .nexus-datalist-empty {
1757
+ display: flex;
1758
+ align-items: center;
1759
+ justify-content: center;
1760
+ padding-block: var(--spacing-padding-xl, 2rem);
1761
+ font-size: var(--text-text-sm, 0.875rem);
1762
+ color: var(--color-text-tertiary);
1763
+ }
1764
+
1765
+ /* ═══════════════════════════════════════════
1766
+ InfiniteScroll
1767
+ ═══════════════════════════════════════════ */
1768
+
1769
+ .nexus-infinite-scroll {
1770
+ position: relative;
1771
+ }
1772
+ .nexus-infinite-sentinel {
1773
+ position: relative;
1774
+ height: 1px;
1775
+ width: 100%;
1776
+ }
1777
+ .nexus-infinite-spinner {
1778
+ display: flex;
1779
+ align-items: center;
1780
+ justify-content: center;
1781
+ padding-block: var(--spacing-padding-md, 1rem);
1782
+ }
1783
+ .nexus-infinite-spinner-icon {
1784
+ width: 1.5rem;
1785
+ height: 1.5rem;
1786
+ animation: nexus-spin 1s linear infinite;
1787
+ border-radius: 9999px;
1788
+ border: 2px solid var(--color-border-default);
1789
+ border-top-color: var(--color-accent-primary);
1790
+ }
1791
+
1792
+ /* ═══════════════════════════════════════════
1793
+ Countdown
1794
+ ═══════════════════════════════════════════ */
1795
+
1796
+ .nexus-countdown {
1797
+ display: inline-flex;
1798
+ align-items: center;
1799
+ gap: var(--spacing-gap-xs, 0.25rem);
1800
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1801
+ font-variant-numeric: tabular-nums;
1802
+ }
1803
+ .nexus-countdown__separator {
1804
+ color: var(--color-text-tertiary);
1805
+ margin-inline: 0.125rem;
1806
+ }
1807
+ .nexus-countdown__label {
1808
+ color: var(--color-text-tertiary);
1809
+ font-size: var(--text-text-xs, 0.75rem);
1810
+ margin-left: 0.125rem;
1811
+ }
1812
+
1813
+ /* ═══════════════════════════════════════════
1814
+ Select
1815
+ ═══════════════════════════════════════════ */
1816
+
1817
+ .nexus-select-trigger {
1818
+ position: relative;
1819
+ display: flex;
1820
+ height: 2.5rem;
1821
+ align-items: center;
1822
+ justify-content: space-between;
1823
+ border-radius: var(--radius-corner-sm, 0.25rem);
1824
+ border: 1px solid var(--color-border-default);
1825
+ background: var(--color-surface-default, transparent);
1826
+ color: var(--color-text-primary);
1827
+ font-size: var(--text-text-sm, 0.875rem);
1828
+ font-family: inherit;
1829
+ cursor: pointer;
1830
+ padding: 0;
1831
+ margin: 0;
1832
+ transition-property: border-color;
1833
+ transition-duration: 200ms;
1834
+ }
1835
+ .nexus-select-trigger:hover {
1836
+ border-color: var(--color-border-strong);
1837
+ }
1838
+ .nexus-select-trigger:has(:disabled) {
1839
+ cursor: not-allowed;
1840
+ opacity: 0.5;
1841
+ }
1842
+ .nexus-select-trigger::placeholder {
1843
+ color: var(--color-text-tertiary);
1844
+ }
1845
+ .nexus-select-trigger--default {
1846
+ background: var(--color-surface-hover);
1847
+ }
1848
+ .nexus-select-trigger--outline {
1849
+ background: var(--color-surface-default);
1850
+ }
1851
+ .nexus-select-trigger--sm {
1852
+ width: 4rem;
1853
+ }
1854
+ .nexus-select-trigger--md {
1855
+ width: 8rem;
1856
+ }
1857
+ .nexus-select-trigger--lg {
1858
+ width: 12rem;
1859
+ }
1860
+ .nexus-select-trigger--full {
1861
+ width: 100%;
1862
+ }
1863
+ .nexus-select-trigger--justify-end {
1864
+ justify-content: flex-end;
1865
+ }
1866
+ .nexus-select-trigger__display {
1867
+ position: absolute;
1868
+ top: 0;
1869
+ left: 0;
1870
+ display: flex;
1871
+ height: 100%;
1872
+ width: calc(100% - 30px);
1873
+ align-items: center;
1874
+ }
1875
+ .nexus-select-trigger__inner {
1876
+ display: flex;
1877
+ height: 100%;
1878
+ width: 100%;
1879
+ flex-direction: row-reverse;
1880
+ align-items: center;
1881
+ justify-content: space-between;
1882
+ border-radius: var(--radius-corner-sm, 0.25rem);
1883
+ padding: var(--spacing-padding-xs, 0.5rem) var(--spacing-padding-sm, 0.75rem);
1884
+ }
1885
+ .nexus-select-trigger__inner:focus {
1886
+ outline: none;
1887
+ }
1888
+ .nexus-select-chevron {
1889
+ width: 0.75rem;
1890
+ height: 0.75rem;
1891
+ opacity: 0.5;
1892
+ transition: transform 200ms;
1893
+ }
1894
+ .nexus-select-chevron--open {
1895
+ transform: rotate(180deg);
1896
+ }
1897
+
1898
+ .nexus-select-content {
1899
+ position: relative;
1900
+ z-index: 50;
1901
+ max-height: 24rem;
1902
+ overflow: hidden;
1903
+ border-radius: var(--radius-corner-sm, 0.25rem);
1904
+ border: 1px solid var(--color-border-default);
1905
+ background: var(--color-surface-default);
1906
+ box-shadow: var(--shadow-comp-lg);
1907
+ transform-origin: top center;
1908
+ will-change: transform, opacity;
1909
+ }
1910
+ .nexus-select-content[data-state='open'] {
1911
+ animation: nexus-select-slide-in 150ms ease-out;
1912
+ }
1913
+ .nexus-select-content[data-state='closed'] {
1914
+ animation: nexus-select-slide-out 100ms ease-in forwards;
1915
+ }
1916
+ @keyframes nexus-select-slide-in {
1917
+ from {
1918
+ opacity: 0;
1919
+ transform: translateY(-4px) scaleY(0.96);
1920
+ }
1921
+ to {
1922
+ opacity: 1;
1923
+ transform: translateY(0) scaleY(1);
1924
+ }
1925
+ }
1926
+ @keyframes nexus-select-slide-out {
1927
+ from {
1928
+ opacity: 1;
1929
+ transform: translateY(0) scaleY(1);
1930
+ }
1931
+ to {
1932
+ opacity: 0;
1933
+ transform: translateY(-4px) scaleY(0.96);
1934
+ }
1935
+ }
1936
+ .nexus-select-content--sm {
1937
+ width: 4rem;
1938
+ }
1939
+ .nexus-select-content--md {
1940
+ width: 8rem;
1941
+ }
1942
+ .nexus-select-content--lg {
1943
+ width: 12rem;
1944
+ }
1945
+ .nexus-select-content--full {
1946
+ width: var(--radix-popper-anchor-width);
1947
+ }
1948
+ .nexus-select-viewport {
1949
+ padding: 0.25rem;
1950
+ }
1951
+
1952
+ .nexus-select-item {
1953
+ position: relative;
1954
+ display: flex;
1955
+ width: 100%;
1956
+ cursor: pointer;
1957
+ align-items: center;
1958
+ border-radius: var(--radius-corner-sm, 0.25rem);
1959
+ padding: var(--spacing-padding-xs, 0.5rem) var(--spacing-padding-sm, 0.75rem);
1960
+ color: var(--color-text-primary);
1961
+ font-size: var(--text-text-sm, 0.875rem);
1962
+ transition-property: background-color;
1963
+ transition-duration: 150ms;
1964
+ outline: none;
1965
+ user-select: none;
1966
+ }
1967
+ .nexus-select-item:hover,
1968
+ .nexus-select-item:focus,
1969
+ .nexus-select-item[data-highlighted] {
1970
+ background: var(--color-surface-hover);
1971
+ }
1972
+ .nexus-select-item[data-disabled] {
1973
+ pointer-events: none;
1974
+ opacity: 0.5;
1975
+ }
1976
+
1977
+ /* ═══════════════════════════════════════════
1978
+ DropdownMenu
1979
+ ═══════════════════════════════════════════ */
1980
+
1981
+ .nexus-dropdown-content {
1982
+ position: relative;
1983
+ z-index: var(--z-index-layer-dropdown, 10);
1984
+ min-width: 10rem;
1985
+ overflow: hidden;
1986
+ border-radius: var(--radius-corner-md, 0.5rem);
1987
+ border: 1px solid var(--color-border-default);
1988
+ background: var(--color-surface-default);
1989
+ padding: var(--spacing-padding-xs, 0.5rem);
1990
+ box-shadow: var(--shadow-comp-lg);
1991
+ color: var(--color-text-primary);
1992
+ transform-origin: var(--radix-dropdown-menu-content-transform-origin);
1993
+ will-change: transform, opacity;
1994
+ }
1995
+ .nexus-dropdown-content[data-state='open'] {
1996
+ animation: nexus-dropdown-in 150ms ease-out;
1997
+ }
1998
+ .nexus-dropdown-content[data-state='closed'] {
1999
+ animation: nexus-dropdown-out 100ms ease-in forwards;
2000
+ }
2001
+ @keyframes nexus-dropdown-in {
2002
+ from {
2003
+ opacity: 0;
2004
+ transform: scale(0.96);
2005
+ }
2006
+ to {
2007
+ opacity: 1;
2008
+ transform: scale(1);
2009
+ }
2010
+ }
2011
+ @keyframes nexus-dropdown-out {
2012
+ from {
2013
+ opacity: 1;
2014
+ transform: scale(1);
2015
+ }
2016
+ to {
2017
+ opacity: 0;
2018
+ transform: scale(0.96);
2019
+ }
2020
+ }
2021
+ .nexus-dropdown-separator {
2022
+ margin: var(--spacing-padding-xs, 0.5rem) calc(-1 * var(--spacing-padding-xs, 0.5rem));
2023
+ height: 1px;
2024
+ background: var(--color-border-default);
2025
+ }
2026
+ .nexus-dropdown-item {
2027
+ position: relative;
2028
+ display: flex;
2029
+ width: 100%;
2030
+ cursor: default;
2031
+ align-items: center;
2032
+ gap: var(--spacing-gap-sm, 0.5rem);
2033
+ border-radius: var(--radius-corner-sm, 0.25rem);
2034
+ padding: var(--spacing-padding-xs, 0.5rem) var(--spacing-padding-sm, 0.75rem);
2035
+ font-size: var(--text-text-sm, 0.875rem);
2036
+ color: var(--color-text-primary);
2037
+ outline: none;
2038
+ user-select: none;
2039
+ transition: background-color 150ms ease;
2040
+ }
2041
+ .nexus-dropdown-item[data-highlighted] {
2042
+ background: var(--color-surface-hover);
2043
+ }
2044
+ .nexus-dropdown-item[data-disabled] {
2045
+ pointer-events: none;
2046
+ opacity: var(--opacity-disabled-element, 0.4);
2047
+ }
2048
+ .nexus-dropdown-item--danger {
2049
+ color: var(--color-status-danger);
2050
+ }
2051
+ .nexus-dropdown-item--danger[data-highlighted] {
2052
+ background: var(--color-status-danger-dim);
2053
+ color: var(--color-status-danger-intense);
2054
+ }
2055
+ .nexus-dropdown-item__icon {
2056
+ display: inline-flex;
2057
+ flex-shrink: 0;
2058
+ color: var(--color-icon-secondary);
2059
+ }
2060
+ .nexus-dropdown-item--danger .nexus-dropdown-item__icon {
2061
+ color: var(--color-status-danger);
2062
+ }
2063
+
2064
+ /* ═══════════════════════════════════════════
2065
+ ToggleGroup
2066
+ ═══════════════════════════════════════════ */
2067
+
2068
+ .nexus-toggle-group {
2069
+ display: inline-flex;
2070
+ align-items: stretch;
2071
+ position: relative;
2072
+ border-radius: var(--radius-corner-md, 0.5rem);
2073
+ }
2074
+ .nexus-toggle-group--default {
2075
+ background: var(--color-surface-subtle);
2076
+ padding: var(--spacing-padding-2xs, 0.25rem);
2077
+ gap: var(--spacing-gap-xs, 0.25rem);
2078
+ }
2079
+
2080
+ /* ── Sliding indicator ── */
2081
+ .nexus-toggle-group__indicator {
2082
+ position: absolute;
2083
+ top: 0;
2084
+ left: 0;
2085
+ border-radius: var(--radius-corner-sm, 0.25rem);
2086
+ background: var(--color-surface-default);
2087
+ box-shadow: var(--shadow-sm);
2088
+ pointer-events: none;
2089
+ z-index: 0;
2090
+ will-change: transform, width;
2091
+ }
2092
+ .nexus-toggle-group__indicator--animated {
2093
+ transition:
2094
+ transform 200ms cubic-bezier(0, 0, 0.2, 1),
2095
+ width 200ms cubic-bezier(0, 0, 0.2, 1);
2096
+ }
2097
+ .nexus-toggle-group--outline {
2098
+ border: 1px solid var(--color-border-default);
2099
+ padding: var(--spacing-padding-2xs, 0.25rem);
2100
+ gap: 0;
2101
+ }
2102
+ .nexus-toggle-group__item {
2103
+ display: inline-flex;
2104
+ align-items: center;
2105
+ justify-content: center;
2106
+ gap: var(--spacing-gap-xs, 0.25rem);
2107
+ border-radius: var(--radius-corner-sm, 0.25rem);
2108
+ border: none;
2109
+ background: transparent;
2110
+ font-size: var(--text-text-sm, 0.875rem);
2111
+ font-weight: var(--font-weight-text-medium-sm, 500);
2112
+ color: var(--color-text-secondary);
2113
+ cursor: pointer;
2114
+ transition: color var(--duration-transition-normal, 200ms) var(--ease-transition-fast);
2115
+ outline: none;
2116
+ position: relative;
2117
+ z-index: 1;
2118
+ }
2119
+ .nexus-toggle-group__item:focus-visible {
2120
+ box-shadow: 0 0 0 2px var(--color-surface-default), 0 0 0 4px var(--color-accent-primary-focus);
2121
+ }
2122
+ .nexus-toggle-group__item[data-disabled] {
2123
+ pointer-events: none;
2124
+ opacity: var(--opacity-disabled-element, 0.4);
2125
+ }
2126
+ .nexus-toggle-group--default .nexus-toggle-group__item[data-state='on'] {
2127
+ color: var(--color-text-primary);
2128
+ }
2129
+ .nexus-toggle-group--outline .nexus-toggle-group__item {
2130
+ padding-inline: var(--spacing-padding-sm, 0.75rem);
2131
+ }
2132
+ .nexus-toggle-group--outline .nexus-toggle-group__item[data-state='on'] {
2133
+ background: var(--color-accent-primary-dim);
2134
+ color: var(--color-accent-primary-intense);
2135
+ }
2136
+ .nexus-toggle-group--outline .nexus-toggle-group__item:not([data-state='on']):hover {
2137
+ background: var(--color-surface-hover);
2138
+ color: var(--color-text-primary);
2139
+ }
2140
+ .nexus-toggle-group--sm .nexus-toggle-group__item {
2141
+ min-height: var(--size-control-sm, 2rem);
2142
+ padding-inline: var(--spacing-padding-sm, 0.75rem);
2143
+ }
2144
+ .nexus-toggle-group--md .nexus-toggle-group__item {
2145
+ min-height: var(--size-control-md, 2.5rem);
2146
+ padding-inline: var(--spacing-padding-md, 1rem);
2147
+ }
2148
+ .nexus-toggle-group--lg .nexus-toggle-group__item {
2149
+ min-height: var(--size-control-lg, 3rem);
2150
+ padding-inline: var(--spacing-padding-lg, 1.5rem);
2151
+ }
2152
+ .nexus-toggle-group__icon {
2153
+ display: inline-flex;
2154
+ flex-shrink: 0;
2155
+ color: var(--color-icon-secondary);
2156
+ }
2157
+ .nexus-toggle-group__item[data-state='on'] .nexus-toggle-group__icon {
2158
+ color: var(--color-icon-primary);
2159
+ }
2160
+
2161
+ /* ═══════════════════════════════════════════
2162
+ Slider
2163
+ ═══════════════════════════════════════════ */
2164
+
2165
+ .nexus-slider-wrapper {
2166
+ display: flex;
2167
+ width: 100%;
2168
+ flex-direction: column;
2169
+ gap: var(--spacing-gap-sm, 0.5rem);
2170
+ }
2171
+ .nexus-slider__header {
2172
+ display: flex;
2173
+ align-items: center;
2174
+ justify-content: space-between;
2175
+ gap: var(--spacing-gap-md, 1rem);
2176
+ }
2177
+ .nexus-slider__label {
2178
+ font-size: var(--text-label-md, 0.875rem);
2179
+ font-weight: var(--font-weight-label-md, 500);
2180
+ color: var(--color-text-primary);
2181
+ }
2182
+ .nexus-slider__value {
2183
+ font-size: var(--text-text-sm, 0.875rem);
2184
+ font-variant-numeric: tabular-nums;
2185
+ color: var(--color-text-secondary);
2186
+ }
2187
+ .nexus-slider {
2188
+ position: relative;
2189
+ display: flex;
2190
+ width: 100%;
2191
+ touch-action: none;
2192
+ user-select: none;
2193
+ align-items: center;
2194
+ }
2195
+ .nexus-slider[data-disabled] {
2196
+ opacity: var(--opacity-disabled-element, 0.4);
2197
+ pointer-events: none;
2198
+ }
2199
+ .nexus-slider__track {
2200
+ position: relative;
2201
+ flex-grow: 1;
2202
+ overflow: hidden;
2203
+ border-radius: var(--radius-corner-full, 9999px);
2204
+ background: var(--color-surface-strong);
2205
+ }
2206
+ .nexus-slider__range {
2207
+ position: absolute;
2208
+ height: 100%;
2209
+ border-radius: var(--radius-corner-full, 9999px);
2210
+ background: var(--color-accent-primary);
2211
+ }
2212
+ .nexus-slider__thumb {
2213
+ display: block;
2214
+ flex-shrink: 0;
2215
+ border-radius: var(--radius-corner-full, 9999px);
2216
+ border: 2px solid var(--color-accent-primary);
2217
+ background: var(--color-surface-default);
2218
+ box-shadow: var(--shadow-sm);
2219
+ outline: none;
2220
+ transition:
2221
+ box-shadow 150ms ease,
2222
+ transform 150ms ease;
2223
+ }
2224
+ .nexus-slider__thumb:hover {
2225
+ box-shadow: var(--shadow-md);
2226
+ }
2227
+ .nexus-slider__thumb:focus-visible {
2228
+ box-shadow:
2229
+ 0 0 0 2px var(--color-surface-default),
2230
+ 0 0 0 4px var(--color-accent-primary-focus);
2231
+ }
2232
+ .nexus-slider--sm .nexus-slider__track {
2233
+ height: 0.25rem;
2234
+ }
2235
+ .nexus-slider--sm .nexus-slider__thumb {
2236
+ width: 0.875rem;
2237
+ height: 0.875rem;
2238
+ }
2239
+ .nexus-slider--md .nexus-slider__track {
2240
+ height: 0.375rem;
2241
+ }
2242
+ .nexus-slider--md .nexus-slider__thumb {
2243
+ width: 1.125rem;
2244
+ height: 1.125rem;
2245
+ }
2246
+ .nexus-slider--lg .nexus-slider__track {
2247
+ height: 0.5rem;
2248
+ }
2249
+ .nexus-slider--lg .nexus-slider__thumb {
2250
+ width: 1.25rem;
2251
+ height: 1.25rem;
2252
+ }
2253
+
2254
+ /* ═══════════════════════════════════════════
2255
+ Tooltip
2256
+ ═══════════════════════════════════════════ */
2257
+
2258
+ .nexus-tooltip-content {
2259
+ z-index: 50;
2260
+ display: flex;
2261
+ overflow: hidden;
2262
+ border-radius: var(--radius-corner-md, 0.375rem);
2263
+ padding: var(--spacing-padding-xs, 0.5rem) var(--spacing-padding-sm, 0.75rem);
2264
+ font-size: var(--text-text-sm, 0.875rem);
2265
+ }
2266
+ .nexus-tooltip--light {
2267
+ border: 1px solid var(--color-border-default);
2268
+ background: var(--color-static-white);
2269
+ color: var(--color-static-black);
2270
+ box-shadow: var(--shadow-comp-md);
2271
+ }
2272
+ .nexus-tooltip--dark {
2273
+ border: none;
2274
+ background: var(--color-static-black);
2275
+ color: var(--color-static-white);
2276
+ }
2277
+ .nexus-tooltip-arrow--dark {
2278
+ fill: var(--color-static-black);
2279
+ }
2280
+ .nexus-tooltip-arrow--light {
2281
+ fill: var(--color-static-white);
2282
+ }
2283
+ .nexus-tooltip-trigger {
2284
+ cursor: default;
2285
+ }
2286
+
2287
+ /* ═══════════════════════════════════════════
2288
+ Popover
2289
+ ═══════════════════════════════════════════ */
2290
+
2291
+ .nexus-popover-content {
2292
+ z-index: 50;
2293
+ border-radius: var(--radius-corner-lg, 0.5rem);
2294
+ border: 1px solid var(--color-border-default);
2295
+ padding: var(--spacing-padding-md, 1rem);
2296
+ box-shadow: var(--shadow-comp-lg);
2297
+ outline: none;
2298
+ background: var(--color-surface-default);
2299
+ color: var(--color-text-primary);
2300
+ transform-origin: var(--radix-popover-content-transform-origin);
2301
+ will-change: transform, opacity;
2302
+ }
2303
+ .nexus-popover-content[data-state='open'] {
2304
+ animation: nexus-popover-in 150ms ease-out;
2305
+ }
2306
+ .nexus-popover-content[data-state='closed'] {
2307
+ animation: nexus-popover-out 100ms ease-in forwards;
2308
+ }
2309
+ @keyframes nexus-popover-in {
2310
+ from {
2311
+ opacity: 0;
2312
+ transform: scale(0.95);
2313
+ }
2314
+ to {
2315
+ opacity: 1;
2316
+ transform: scale(1);
2317
+ }
2318
+ }
2319
+ @keyframes nexus-popover-out {
2320
+ from {
2321
+ opacity: 1;
2322
+ transform: scale(1);
2323
+ }
2324
+ to {
2325
+ opacity: 0;
2326
+ transform: scale(0.95);
2327
+ }
2328
+ }
2329
+ .nexus-popover-arrow {
2330
+ fill: var(--color-surface-default);
2331
+ }
2332
+
2333
+ /* ═══════════════════════════════════════════
2334
+ Drawer
2335
+ ═══════════════════════════════════════════ */
2336
+
2337
+ .nexus-drawer-overlay {
2338
+ position: fixed;
2339
+ inset: 0;
2340
+ z-index: 50;
2341
+ background: var(--color-comp-overlay);
2342
+ }
2343
+ .nexus-drawer-overlay--blur-sm {
2344
+ backdrop-filter: blur(4px);
2345
+ }
2346
+ .nexus-drawer-overlay--blur-md {
2347
+ backdrop-filter: blur(12px);
2348
+ }
2349
+ .nexus-drawer-content {
2350
+ position: fixed;
2351
+ z-index: 50;
2352
+ display: flex;
2353
+ flex-direction: column;
2354
+ background: var(--color-surface-default);
2355
+ }
2356
+ .nexus-drawer-content--bottom {
2357
+ inset-inline: 0;
2358
+ bottom: 0;
2359
+ margin-top: 6rem;
2360
+ border-top-left-radius: 1rem;
2361
+ border-top-right-radius: 1rem;
2362
+ border-top: 1px solid var(--color-border-default);
2363
+ }
2364
+ .nexus-drawer-content--top {
2365
+ inset-inline: 0;
2366
+ top: 0;
2367
+ margin-bottom: 6rem;
2368
+ border-bottom-left-radius: 1rem;
2369
+ border-bottom-right-radius: 1rem;
2370
+ border-bottom: 1px solid var(--color-border-default);
2371
+ }
2372
+ .nexus-drawer-content--left {
2373
+ inset-block: 0;
2374
+ left: 0;
2375
+ margin-right: 6rem;
2376
+ width: 85vw;
2377
+ max-width: 24rem;
2378
+ border-top-right-radius: 1rem;
2379
+ border-bottom-right-radius: 1rem;
2380
+ border-right: 1px solid var(--color-border-default);
2381
+ }
2382
+ .nexus-drawer-content--right {
2383
+ inset-block: 0;
2384
+ right: 0;
2385
+ margin-left: 6rem;
2386
+ width: 85vw;
2387
+ max-width: 24rem;
2388
+ border-top-left-radius: 1rem;
2389
+ border-bottom-left-radius: 1rem;
2390
+ border-left: 1px solid var(--color-border-default);
2391
+ }
2392
+ .nexus-drawer-handle {
2393
+ display: flex;
2394
+ justify-content: center;
2395
+ }
2396
+ .nexus-drawer-handle--bottom {
2397
+ padding-top: var(--spacing-padding-md, 1rem);
2398
+ }
2399
+ .nexus-drawer-handle--top {
2400
+ padding-bottom: var(--spacing-padding-md, 1rem);
2401
+ }
2402
+ .nexus-drawer-handle__bar {
2403
+ background: var(--color-border-strong);
2404
+ height: 0.375rem;
2405
+ width: 3rem;
2406
+ border-radius: 9999px;
2407
+ }
2408
+ .nexus-drawer-title {
2409
+ font-size: var(--text-text-lg, 1.125rem);
2410
+ font-weight: 600;
2411
+ color: var(--color-text-primary);
2412
+ }
2413
+ .nexus-drawer-description {
2414
+ font-size: var(--text-text-sm, 0.875rem);
2415
+ color: var(--color-text-secondary);
2416
+ }
2417
+
2418
+ /* ═══════════════════════════════════════════
2419
+ Accordion
2420
+ ═══════════════════════════════════════════ */
2421
+
2422
+ .nexus-accordion-item {
2423
+ border-bottom: 1px solid var(--color-border-default);
2424
+ }
2425
+ .nexus-accordion-header {
2426
+ display: flex;
2427
+ }
2428
+ .nexus-accordion-trigger {
2429
+ display: flex;
2430
+ flex: 1;
2431
+ align-items: center;
2432
+ justify-content: space-between;
2433
+ padding: 0;
2434
+ padding-block: var(--spacing-padding-md, 1rem);
2435
+ margin: 0;
2436
+ border: none;
2437
+ background: transparent;
2438
+ cursor: pointer;
2439
+ font: inherit;
2440
+ color: inherit;
2441
+ text-align: left;
2442
+ transition: all 150ms;
2443
+ }
2444
+ .nexus-accordion-trigger[data-state='open'] > .nexus-accordion-chevron {
2445
+ transform: rotate(180deg);
2446
+ }
2447
+ .nexus-accordion-chevron {
2448
+ width: 0.75rem;
2449
+ height: 0.75rem;
2450
+ flex-shrink: 0;
2451
+ transition: transform 200ms;
2452
+ }
2453
+ .nexus-accordion-content {
2454
+ overflow: hidden;
2455
+ transition: all 200ms;
2456
+ }
2457
+ .nexus-accordion-content[data-state='open'] {
2458
+ animation: nexus-accordion-down 200ms ease-out;
2459
+ }
2460
+ .nexus-accordion-content[data-state='closed'] {
2461
+ animation: nexus-accordion-up 200ms ease-in;
2462
+ }
2463
+ .nexus-accordion-content__inner {
2464
+ padding-top: 0;
2465
+ padding-bottom: var(--spacing-padding-md, 1rem);
2466
+ }
2467
+
2468
+ /* ═══════════════════════════════════════════
2469
+ Ellipsis
2470
+ ═══════════════════════════════════════════ */
2471
+
2472
+ .nexus-ellipsis {
2473
+ position: relative;
2474
+ }
2475
+ .nexus-ellipsis__content {
2476
+ overflow: hidden;
2477
+ transition: height 300ms;
2478
+ }
2479
+ .nexus-ellipsis__trigger {
2480
+ margin-top: 0.25rem;
2481
+ display: flex;
2482
+ align-items: center;
2483
+ gap: var(--spacing-gap-xs, 0.25rem);
2484
+ font-size: var(--text-text-sm, 0.875rem);
2485
+ color: var(--color-text-secondary);
2486
+ transition-property: color;
2487
+ transition-duration: 150ms;
2488
+ }
2489
+ .nexus-ellipsis__trigger:hover {
2490
+ color: var(--color-text-primary);
2491
+ }
2492
+ .nexus-ellipsis__trigger--expanded > svg {
2493
+ transform: rotate(180deg);
2494
+ }
2495
+ .nexus-ellipsis__chevron {
2496
+ width: 0.875rem;
2497
+ height: 0.875rem;
2498
+ transition: transform 200ms;
2499
+ }
2500
+
2501
+ /* ═══════════════════════════════════════════
2502
+ Marquee
2503
+ ═══════════════════════════════════════════ */
2504
+
2505
+ .nexus-marquee {
2506
+ overflow: hidden;
2507
+ }
2508
+ .nexus-marquee--pause-on-hover:hover > div {
2509
+ animation-play-state: paused !important;
2510
+ }
2511
+
2512
+ /* ═══════════════════════════════════════════
2513
+ Carousel
2514
+ ═══════════════════════════════════════════ */
2515
+
2516
+ .nexus-carousel {
2517
+ position: relative;
2518
+ }
2519
+ .nexus-carousel__viewport {
2520
+ overflow: hidden;
2521
+ }
2522
+ .nexus-carousel__container {
2523
+ display: flex;
2524
+ }
2525
+ .nexus-carousel-slide {
2526
+ min-width: 0;
2527
+ flex-shrink: 0;
2528
+ flex-grow: 0;
2529
+ flex-basis: 100%;
2530
+ }
2531
+ .nexus-carousel-btn {
2532
+ position: absolute;
2533
+ top: 50%;
2534
+ transform: translateY(-50%);
2535
+ z-index: 10;
2536
+ width: 2rem;
2537
+ height: 2rem;
2538
+ display: inline-flex;
2539
+ align-items: center;
2540
+ justify-content: center;
2541
+ border-radius: 9999px;
2542
+ background: var(--color-surface-default);
2543
+ border: 1px solid var(--color-border-default);
2544
+ box-shadow: var(--shadow-comp-sm);
2545
+ color: var(--color-text-primary);
2546
+ cursor: pointer;
2547
+ font: inherit;
2548
+ padding: 0;
2549
+ margin: 0;
2550
+ transition-property: background-color;
2551
+ transition-duration: 150ms;
2552
+ }
2553
+ .nexus-carousel-btn:hover {
2554
+ background: var(--color-surface-hover);
2555
+ }
2556
+ .nexus-carousel-btn:disabled {
2557
+ opacity: 0.4;
2558
+ pointer-events: none;
2559
+ }
2560
+ .nexus-carousel-btn--prev {
2561
+ left: 0.5rem;
2562
+ }
2563
+ .nexus-carousel-btn--next {
2564
+ right: 0.5rem;
2565
+ }
2566
+ .nexus-carousel-btn__icon {
2567
+ width: 1rem;
2568
+ height: 1rem;
2569
+ }
2570
+ .nexus-carousel-dots {
2571
+ display: flex;
2572
+ justify-content: center;
2573
+ gap: 0.375rem;
2574
+ margin-top: var(--spacing-padding-sm, 0.75rem);
2575
+ }
2576
+ .nexus-carousel-dot {
2577
+ width: 0.5rem;
2578
+ height: 0.5rem;
2579
+ border-radius: 9999px;
2580
+ border: none;
2581
+ padding: 0;
2582
+ cursor: pointer;
2583
+ transition-property: background-color;
2584
+ transition-duration: 150ms;
2585
+ }
2586
+ .nexus-carousel-dot--active {
2587
+ background: var(--color-accent-primary);
2588
+ }
2589
+ .nexus-carousel-dot--inactive {
2590
+ background: var(--color-border-default);
2591
+ }
2592
+ .nexus-carousel-dot--inactive:hover {
2593
+ background: var(--color-text-tertiary);
2594
+ }
2595
+
2596
+ /* ═══════════════════════════════════════════
2597
+ Toast
2598
+ ═══════════════════════════════════════════ */
2599
+
2600
+ .nexus-toast {
2601
+ display: flex;
2602
+ align-items: center;
2603
+ gap: var(--spacing-gap-sm, 0.75rem);
2604
+ border-radius: var(--radius-corner-lg, 0.5rem);
2605
+ border: 1px solid var(--color-border-default);
2606
+ padding: var(--spacing-padding-sm, 0.75rem) var(--spacing-padding-md, 1rem);
2607
+ box-shadow: var(--shadow-comp-lg);
2608
+ background: var(--color-surface-default);
2609
+ color: var(--color-text-primary);
2610
+ }
2611
+ .nexus-toast__title {
2612
+ font-size: var(--text-text-sm, 0.875rem);
2613
+ font-weight: 500;
2614
+ }
2615
+ .nexus-toast__desc {
2616
+ font-size: var(--text-text-xs, 0.75rem);
2617
+ color: var(--color-text-secondary);
2618
+ }
2619
+ .nexus-toast--success {
2620
+ border-color: color-mix(
2621
+ in srgb,
2622
+ var(--color-status-positive) 30%,
2623
+ transparent
2624
+ );
2625
+ background: color-mix(in srgb, var(--color-status-positive) 10%, transparent);
2626
+ color: var(--color-status-positive);
2627
+ }
2628
+ .nexus-toast--error {
2629
+ border-color: color-mix(in srgb, var(--color-status-danger) 30%, transparent);
2630
+ background: color-mix(in srgb, var(--color-status-danger) 10%, transparent);
2631
+ color: var(--color-status-danger);
2632
+ }
2633
+ .nexus-toast--warning {
2634
+ border-color: color-mix(
2635
+ in srgb,
2636
+ var(--color-status-caution) 30%,
2637
+ transparent
2638
+ );
2639
+ background: color-mix(in srgb, var(--color-status-caution) 10%, transparent);
2640
+ color: var(--color-status-caution);
2641
+ }
2642
+ .nexus-toast--info {
2643
+ border-color: color-mix(
2644
+ in srgb,
2645
+ var(--color-accent-primary) 30%,
2646
+ transparent
2647
+ );
2648
+ background: color-mix(in srgb, var(--color-accent-primary) 10%, transparent);
2649
+ color: var(--color-accent-primary);
2650
+ }
2651
+ .nexus-toast__action-btn {
2652
+ background: var(--color-accent-primary);
2653
+ color: var(--color-accent-on-primary);
2654
+ border-radius: var(--radius-corner-sm, 0.25rem);
2655
+ padding: 0.375rem var(--spacing-padding-sm, 0.75rem);
2656
+ font-size: var(--text-text-xs, 0.75rem);
2657
+ font-weight: 500;
2658
+ }
2659
+ .nexus-toast__cancel-btn {
2660
+ background: var(--color-surface-hover);
2661
+ color: var(--color-text-secondary);
2662
+ border-radius: var(--radius-corner-sm, 0.25rem);
2663
+ padding: 0.375rem var(--spacing-padding-sm, 0.75rem);
2664
+ font-size: var(--text-text-xs, 0.75rem);
2665
+ font-weight: 500;
2666
+ }
2667
+ .nexus-toast__close-btn {
2668
+ color: var(--color-text-tertiary);
2669
+ }
2670
+ .nexus-toast__close-btn:hover {
2671
+ color: var(--color-text-primary);
2672
+ }
2673
+
2674
+ /* ═══════════════════════════════════════════
2675
+ Table
2676
+ ═══════════════════════════════════════════ */
2677
+
2678
+ .nexus-table-wrap {
2679
+ overflow-x: auto;
2680
+ }
2681
+ .nexus-table {
2682
+ width: 100%;
2683
+ }
2684
+ .nexus-table-thead {
2685
+ display: flex;
2686
+ background: var(--color-surface-default);
2687
+ }
2688
+ .nexus-table-th {
2689
+ display: flex;
2690
+ }
2691
+ .nexus-table-th--sortable {
2692
+ cursor: pointer;
2693
+ }
2694
+ .nexus-table-th__sort-btn {
2695
+ display: inline-flex;
2696
+ align-items: center;
2697
+ gap: var(--spacing-gap-xs, 0.25rem);
2698
+ background: none;
2699
+ border: none;
2700
+ padding: 0;
2701
+ margin: 0;
2702
+ font: inherit;
2703
+ color: inherit;
2704
+ cursor: pointer;
2705
+ text-align: inherit;
2706
+ width: 100%;
2707
+ }
2708
+ .nexus-table-sort-icon {
2709
+ width: 1rem;
2710
+ height: 1rem;
2711
+ }
2712
+ .nexus-table-center {
2713
+ display: flex;
2714
+ align-items: center;
2715
+ justify-content: center;
2716
+ padding-block: 3rem;
2717
+ }
2718
+ .nexus-table-nodata {
2719
+ color: var(--color-text-tertiary);
2720
+ }
2721
+ .nexus-table-loading-icon {
2722
+ width: 2rem;
2723
+ height: 2rem;
2724
+ animation: nexus-spin 1s linear infinite;
2725
+ border-radius: 9999px;
2726
+ border: 2px solid var(--color-border-default);
2727
+ border-top-color: var(--color-accent-primary);
2728
+ }
2729
+ .nexus-table-skeleton-row {
2730
+ display: flex;
2731
+ cursor: default;
2732
+ }
2733
+ .nexus-table-skeleton-td {
2734
+ height: 100%;
2735
+ width: 100%;
2736
+ padding-block: var(--spacing-padding-md, 1rem);
2737
+ }
2738
+ .nexus-table-skeleton-bar {
2739
+ height: 1rem;
2740
+ width: 100%;
2741
+ }
2742
+
2743
+ /* TableRow */
2744
+ .nexus-table-row {
2745
+ border-bottom: 1px solid var(--color-border-default);
2746
+ display: flex;
2747
+ min-width: 0;
2748
+ }
2749
+ .nexus-table-row::-webkit-scrollbar {
2750
+ display: none;
2751
+ }
2752
+ .nexus-table-row--default:hover {
2753
+ background: var(--color-surface-hover);
2754
+ }
2755
+ .nexus-table-row--accent:hover {
2756
+ background: color-mix(in srgb, var(--color-accent-primary) 5%, transparent);
2757
+ }
2758
+
2759
+ /* TdColumn */
2760
+ .nexus-td {
2761
+ min-width: 0;
2762
+ width: 100%;
2763
+ }
2764
+ .nexus-td__inner {
2765
+ border-radius: var(--radius-corner-md, 0.375rem);
2766
+ padding: 2px 0.25rem;
2767
+ transition-property: background-color;
2768
+ transition-duration: 150ms;
2769
+ }
2770
+ .nexus-td__inner--flex {
2771
+ display: flex;
2772
+ }
2773
+ .nexus-td__inner--highlight {
2774
+ background: color-mix(in srgb, var(--color-accent-primary) 10%, transparent);
2775
+ outline: 1px dashed var(--color-accent-primary);
2776
+ outline-offset: -1px;
2777
+ }
2778
+ .nexus-td--nowrap {
2779
+ white-space: nowrap;
2780
+ }
2781
+ .nexus-td--truncate {
2782
+ overflow: hidden;
2783
+ text-overflow: ellipsis;
2784
+ white-space: nowrap;
2785
+ }
2786
+ .nexus-td--wrap {
2787
+ white-space: normal;
2788
+ overflow-wrap: break-word;
2789
+ }
2790
+ .nexus-td--break-all {
2791
+ white-space: normal;
2792
+ word-break: break-all;
2793
+ }
2794
+ .nexus-td--center {
2795
+ text-align: center;
2796
+ justify-content: center;
2797
+ }
2798
+ .nexus-td--left {
2799
+ text-align: left;
2800
+ justify-content: flex-start;
2801
+ }
2802
+ .nexus-td--right {
2803
+ text-align: right;
2804
+ justify-content: flex-end;
2805
+ }
2806
+
2807
+ /* ═══════════════════════════════════════════
2808
+ Modal
2809
+ ═══════════════════════════════════════════ */
2810
+
2811
+ .nexus-modal-wrap {
2812
+ pointer-events: none;
2813
+ position: fixed;
2814
+ inset: 0;
2815
+ z-index: 99999;
2816
+ display: flex;
2817
+ height: 100%;
2818
+ align-items: center;
2819
+ justify-content: center;
2820
+ color: var(--color-text-primary);
2821
+ }
2822
+ .nexus-modal-wrap--bottom-sheet {
2823
+ align-items: flex-end;
2824
+ }
2825
+ .nexus-modal-wrap--slide-left {
2826
+ height: 100%;
2827
+ justify-content: flex-start;
2828
+ }
2829
+ .nexus-modal-wrap--slide-right {
2830
+ height: 100%;
2831
+ justify-content: flex-end;
2832
+ }
2833
+ .nexus-modal-wrap--full-page,
2834
+ .nexus-modal-wrap--full-page-reverse {
2835
+ height: 100%;
2836
+ justify-content: flex-start;
2837
+ }
2838
+
2839
+ .nexus-modal-inner {
2840
+ position: relative;
2841
+ z-index: 2;
2842
+ overflow: hidden;
2843
+ pointer-events: auto;
2844
+ border-radius: var(--radius-corner-lg, 12px);
2845
+ border: 1px solid var(--color-border-default);
2846
+ background: var(--color-surface-default);
2847
+ color: var(--color-text-primary);
2848
+ }
2849
+ :where(.nexus-modal-inner) {
2850
+ width: 100%;
2851
+ min-height: 200px;
2852
+ }
2853
+ .nexus-modal-inner > div {
2854
+ display: contents;
2855
+ }
2856
+ @media (min-width: 640px) {
2857
+ :where(.nexus-modal-inner) {
2858
+ width: 480px;
2859
+ min-height: auto;
2860
+ }
2861
+ }
2862
+ .nexus-modal-inner--bottom-sheet {
2863
+ margin: 0;
2864
+ width: 100%;
2865
+ border-top-left-radius: 1rem;
2866
+ border-top-right-radius: 1rem;
2867
+ border-bottom-left-radius: 0;
2868
+ border-bottom-right-radius: 0;
2869
+ border-top: 1px solid var(--color-border-default);
2870
+ padding: 1.5rem 1rem 0;
2871
+ }
2872
+ .nexus-modal-inner--slide-left,
2873
+ .nexus-modal-inner--slide-right {
2874
+ height: 100%;
2875
+ border-radius: 0;
2876
+ }
2877
+ .nexus-modal-inner--full-page,
2878
+ .nexus-modal-inner--full-page-reverse {
2879
+ height: 100%;
2880
+ width: 100%;
2881
+ border-radius: 0;
2882
+ border-color: transparent;
2883
+ }
2884
+ @media (min-width: 640px) {
2885
+ .nexus-modal-inner--full-page,
2886
+ .nexus-modal-inner--full-page-reverse {
2887
+ width: 100%;
2888
+ }
2889
+ }
2890
+ .nexus-modal-inner--draggable {
2891
+ min-width: 320px;
2892
+ overflow: visible;
2893
+ }
2894
+ .nexus-modal-inner--has-footer {
2895
+ padding-bottom: 88px;
2896
+ }
2897
+ .nexus-modal-inner--bottom-sheet.nexus-modal-inner--has-footer {
2898
+ padding-bottom: 5rem;
2899
+ }
2900
+
2901
+ .nexus-modal-header {
2902
+ position: relative;
2903
+ padding: 1.5rem 1.25rem 0;
2904
+ }
2905
+ .nexus-modal-header--bottom-sheet {
2906
+ padding: 0;
2907
+ }
2908
+ .nexus-modal-header--draggable {
2909
+ cursor: grab;
2910
+ user-select: none;
2911
+ }
2912
+ .nexus-modal-header--draggable:active {
2913
+ cursor: grabbing;
2914
+ }
2915
+
2916
+ .nexus-modal-close-btn {
2917
+ position: absolute;
2918
+ top: 1.5rem;
2919
+ right: 1.25rem;
2920
+ z-index: 1;
2921
+ margin-left: auto;
2922
+ display: flex;
2923
+ cursor: pointer;
2924
+ align-items: center;
2925
+ justify-content: flex-end;
2926
+ border: none;
2927
+ background: transparent;
2928
+ padding: 0;
2929
+ }
2930
+ .nexus-modal-close-btn--bottom-sheet {
2931
+ position: relative;
2932
+ top: 0;
2933
+ right: 0;
2934
+ }
2935
+ .nexus-modal-close-icon {
2936
+ width: 1.25rem;
2937
+ height: 1.25rem;
2938
+ color: var(--color-text-muted);
2939
+ }
2940
+
2941
+ .nexus-modal-title {
2942
+ margin: 0;
2943
+ padding-right: 42px;
2944
+ font-size: var(--text-text-lg, 1.125rem);
2945
+ font-weight: 600;
2946
+ line-height: 26px;
2947
+ letter-spacing: -0.002em;
2948
+ color: var(--color-text-primary);
2949
+ }
2950
+ .nexus-modal-title--bottom-sheet {
2951
+ padding-top: 0.375rem;
2952
+ line-height: 1.75rem;
2953
+ letter-spacing: -0.012em;
2954
+ }
2955
+ .nexus-modal-desc {
2956
+ color: var(--color-text-muted);
2957
+ font-size: var(--text-text-xs, 0.75rem);
2958
+ margin-top: 0.25rem;
2959
+ }
2960
+
2961
+ .nexus-modal-body {
2962
+ position: relative;
2963
+ overflow-y: auto;
2964
+ padding: 1.5rem 1.25rem 0;
2965
+ }
2966
+ .nexus-modal-body::-webkit-scrollbar {
2967
+ display: none;
2968
+ }
2969
+ .nexus-modal-body--no-footer {
2970
+ padding-bottom: 1.5rem;
2971
+ }
2972
+ .nexus-modal-body--bottom-sheet {
2973
+ margin-top: 1.5rem;
2974
+ max-height: calc(100vh - 108px);
2975
+ padding: 0 0 1.5rem;
2976
+ }
2977
+ .nexus-modal-body--slide,
2978
+ .nexus-modal-body--full-page {
2979
+ height: 100%;
2980
+ max-height: 100%;
2981
+ overflow-y: auto;
2982
+ }
2983
+ .nexus-modal-body--full-page {
2984
+ padding-bottom: 0;
2985
+ }
2986
+
2987
+ .nexus-modal-footer {
2988
+ position: absolute;
2989
+ bottom: 0;
2990
+ left: 0;
2991
+ z-index: 2;
2992
+ display: flex;
2993
+ width: 100%;
2994
+ padding: 1.5rem 1.25rem 1.25rem;
2995
+ }
2996
+ .nexus-modal-footer button {
2997
+ height: 3rem;
2998
+ flex: 1;
2999
+ }
3000
+ .nexus-modal-footer--bottom-sheet {
3001
+ padding: 0.75rem 1rem 1.5rem;
3002
+ }
3003
+ .nexus-modal-footer--draggable {
3004
+ position: relative;
3005
+ }
3006
+
3007
+ .nexus-modal-dim {
3008
+ pointer-events: auto;
3009
+ position: fixed;
3010
+ inset: 0;
3011
+ z-index: 1;
3012
+ display: block;
3013
+ height: 100vh;
3014
+ width: 100vw;
3015
+ background: color-mix(
3016
+ in srgb,
3017
+ var(--color-static-black, #000) 75%,
3018
+ transparent
3019
+ );
3020
+ }
3021
+ .nexus-modal-dim--hidden {
3022
+ display: none;
3023
+ }
3024
+ .nexus-modal-dim--draggable {
3025
+ background: color-mix(
3026
+ in srgb,
3027
+ var(--color-static-black, #000) 30%,
3028
+ transparent
3029
+ );
3030
+ }
3031
+
3032
+ .nexus-modal-bottom-sheet-handle {
3033
+ display: flex;
3034
+ width: 100%;
3035
+ justify-content: center;
3036
+ padding-top: 0.75rem;
3037
+ padding-bottom: 0.5rem;
3038
+ }
3039
+ .nexus-modal-bottom-sheet-bar {
3040
+ background: var(--color-border-default);
3041
+ height: 0.375rem;
3042
+ width: 4rem;
3043
+ border-radius: 9999px;
3044
+ }
3045
+
3046
+ .nexus-modal-component {
3047
+ opacity: 0;
3048
+ }
3049
+ .nexus-modal-component--visible {
3050
+ opacity: 1;
3051
+ }
3052
+ .nexus-modal-component--portal {
3053
+ position: relative;
3054
+ }
3055
+ .nexus-modal-component--enter .nexus-modal-inner {
3056
+ animation-direction: var(--modal-animation-direction);
3057
+ animation-duration: var(--modal-animation-duration);
3058
+ animation-name: var(--modal-animation-name);
3059
+ animation-timing-function: var(--modal-animation-timing-function);
3060
+ }
3061
+ .nexus-modal-component--leave .nexus-modal-inner {
3062
+ animation-direction: reverse;
3063
+ animation-duration: var(--modal-animation-duration);
3064
+ animation-fill-mode: var(--modal-animation-fill-mode);
3065
+ animation-name: var(--modal-animation-name);
3066
+ animation-timing-function: var(--modal-animation-timing-function);
3067
+ }
3068
+
3069
+ .nexus-contents {
3070
+ display: contents;
3071
+ }
3072
+
3073
+ /* ═══════════════════════════════════════════
3074
+ Animation utilities (Radix enter/exit)
3075
+ ═══════════════════════════════════════════ */
3076
+
3077
+ .nexus-animate-in {
3078
+ animation: nexus-enter 200ms ease-out;
3079
+ --nx-enter-opacity: 1;
3080
+ --nx-enter-scale: 1;
3081
+ --nx-enter-translate-x: 0;
3082
+ --nx-enter-translate-y: 0;
3083
+ }
3084
+ .nexus-animate-out {
3085
+ animation: nexus-exit 150ms ease-in forwards;
3086
+ --nx-exit-opacity: 1;
3087
+ --nx-exit-scale: 1;
3088
+ --nx-exit-translate-x: 0;
3089
+ --nx-exit-translate-y: 0;
3090
+ }
3091
+ .nexus-fade-in-0 {
3092
+ --nx-enter-opacity: 0;
3093
+ }
3094
+ .nexus-fade-out-0 {
3095
+ --nx-exit-opacity: 0;
3096
+ }
3097
+ .nexus-zoom-in-95 {
3098
+ --nx-enter-scale: 0.95;
3099
+ }
3100
+ .nexus-zoom-out-95 {
3101
+ --nx-exit-scale: 0.95;
3102
+ }
3103
+ .nexus-slide-in-from-top-2 {
3104
+ --nx-enter-translate-y: -0.5rem;
3105
+ }
3106
+ .nexus-slide-in-from-bottom-2 {
3107
+ --nx-enter-translate-y: 0.5rem;
3108
+ }
3109
+ .nexus-slide-in-from-left-2 {
3110
+ --nx-enter-translate-x: -0.5rem;
3111
+ }
3112
+ .nexus-slide-in-from-right-2 {
3113
+ --nx-enter-translate-x: 0.5rem;
3114
+ }
3115
+
3116
+ /* ═══════════════════════════════════════════
3117
+ Keyframes
3118
+ ═══════════════════════════════════════════ */
3119
+
3120
+ @keyframes nexus-spin {
3121
+ from {
3122
+ transform: rotate(0deg);
3123
+ }
3124
+ to {
3125
+ transform: rotate(360deg);
3126
+ }
3127
+ }
3128
+
3129
+ @keyframes nexus-enter {
3130
+ from {
3131
+ opacity: var(--nx-enter-opacity, 1);
3132
+ transform: translate3d(
3133
+ var(--nx-enter-translate-x, 0),
3134
+ var(--nx-enter-translate-y, 0),
3135
+ 0
3136
+ )
3137
+ scale3d(
3138
+ var(--nx-enter-scale, 1),
3139
+ var(--nx-enter-scale, 1),
3140
+ var(--nx-enter-scale, 1)
3141
+ );
3142
+ }
3143
+ }
3144
+
3145
+ @keyframes nexus-exit {
3146
+ to {
3147
+ opacity: var(--nx-exit-opacity, 1);
3148
+ transform: translate3d(
3149
+ var(--nx-exit-translate-x, 0),
3150
+ var(--nx-exit-translate-y, 0),
3151
+ 0
3152
+ )
3153
+ scale3d(
3154
+ var(--nx-exit-scale, 1),
3155
+ var(--nx-exit-scale, 1),
3156
+ var(--nx-exit-scale, 1)
3157
+ );
3158
+ }
3159
+ }
3160
+
3161
+ @keyframes nexus-accordion-down {
3162
+ from {
3163
+ height: 0;
3164
+ }
3165
+ to {
3166
+ height: var(--radix-accordion-content-height);
3167
+ }
3168
+ }
3169
+
3170
+ @keyframes nexus-accordion-up {
3171
+ from {
3172
+ height: var(--radix-accordion-content-height);
3173
+ }
3174
+ to {
3175
+ height: 0;
3176
+ }
3177
+ }
3178
+
3179
+ @keyframes nexus-skeleton-shimmer {
3180
+ 0% {
3181
+ background-position: 300% 0;
3182
+ }
3183
+ 100% {
3184
+ background-position: -300% 0;
3185
+ }
3186
+ }
3187
+
3188
+ @keyframes modal-fade {
3189
+ from {
3190
+ opacity: 0;
3191
+ }
3192
+ to {
3193
+ opacity: 1;
3194
+ }
3195
+ }
3196
+
3197
+ @keyframes modal-fade-in {
3198
+ from {
3199
+ opacity: 0;
3200
+ }
3201
+ to {
3202
+ opacity: 1;
3203
+ }
3204
+ }
3205
+
3206
+ @keyframes modal-scale {
3207
+ from {
3208
+ transform: scale(0);
3209
+ }
3210
+ to {
3211
+ transform: scale(1);
3212
+ }
3213
+ }
3214
+
3215
+ @keyframes modal-small-scale {
3216
+ from {
3217
+ transform: scale(0.9);
3218
+ }
3219
+ to {
3220
+ transform: scale(1);
3221
+ }
3222
+ }
3223
+
3224
+ @keyframes modal-pop-fade {
3225
+ 0% {
3226
+ transform: scale(0.95);
3227
+ opacity: 0;
3228
+ }
3229
+ 60% {
3230
+ transform: scale(1.03);
3231
+ opacity: 1;
3232
+ }
3233
+ 100% {
3234
+ transform: scale(1);
3235
+ opacity: 1;
3236
+ }
3237
+ }
3238
+
3239
+ @keyframes modal-bottom-sheet {
3240
+ from {
3241
+ transform: translateY(calc(100% + 60px));
3242
+ }
3243
+ to {
3244
+ transform: translateY(0);
3245
+ }
3246
+ }
3247
+
3248
+ @keyframes modal-slide-left {
3249
+ from {
3250
+ transform: translateX(-100%);
3251
+ }
3252
+ to {
3253
+ transform: translateX(0);
3254
+ }
3255
+ }
3256
+
3257
+ @keyframes modal-slide-right {
3258
+ from {
3259
+ transform: translateX(100%);
3260
+ }
3261
+ to {
3262
+ transform: translateX(0);
3263
+ }
3264
+ }
3265
+
3266
+ @keyframes modal-full-page {
3267
+ from {
3268
+ transform: translateY(60%);
3269
+ opacity: 0.5;
3270
+ }
3271
+ to {
3272
+ transform: translateY(0);
3273
+ opacity: 1;
3274
+ }
3275
+ }
3276
+
3277
+ @keyframes modal-full-page-reverse {
3278
+ from {
3279
+ transform: translateY(-60%);
3280
+ opacity: 0.5;
3281
+ }
3282
+ to {
3283
+ transform: translateY(0);
3284
+ opacity: 1;
3285
+ }
3286
+ }
3287
+
3288
+ /* ═══════════════════════════════════════════
3289
+ EmptyState
3290
+ ═══════════════════════════════════════════ */
3291
+
3292
+ .nexus-empty-state {
3293
+ display: flex;
3294
+ flex-direction: column;
3295
+ align-items: center;
3296
+ justify-content: center;
3297
+ text-align: center;
3298
+ gap: var(--spacing-gap-sm, 0.5rem);
3299
+ padding: var(--spacing-padding-lg, 1.5rem);
3300
+ color: var(--color-text-primary);
3301
+ }
3302
+ .nexus-empty-state__icon {
3303
+ display: flex;
3304
+ align-items: center;
3305
+ justify-content: center;
3306
+ margin-bottom: var(--spacing-gap-xs, 0.25rem);
3307
+ color: var(--color-icon-muted);
3308
+ }
3309
+ .nexus-empty-state__default-icon {
3310
+ width: var(--size-icon-xl, 2rem);
3311
+ height: var(--size-icon-xl, 2rem);
3312
+ }
3313
+ .nexus-empty-state--sm .nexus-empty-state__default-icon {
3314
+ width: var(--size-icon-lg, 1.5rem);
3315
+ height: var(--size-icon-lg, 1.5rem);
3316
+ }
3317
+ .nexus-empty-state--lg .nexus-empty-state__default-icon {
3318
+ width: var(--size-control-md, 2.5rem);
3319
+ height: var(--size-control-md, 2.5rem);
3320
+ }
3321
+ .nexus-empty-state__title {
3322
+ margin: 0;
3323
+ font-size: var(--text-heading-h6, 1rem);
3324
+ font-weight: var(--font-weight-heading-h6, 600);
3325
+ letter-spacing: var(--letter-spacing-heading-h6, 0);
3326
+ color: var(--color-text-primary);
3327
+ }
3328
+ .nexus-empty-state__description {
3329
+ margin: 0;
3330
+ max-width: 24rem;
3331
+ font-size: var(--text-text-sm, 0.875rem);
3332
+ font-weight: var(--font-weight-text-sm, 400);
3333
+ letter-spacing: var(--letter-spacing-text-sm, -0.01em);
3334
+ color: var(--color-text-secondary);
3335
+ }
3336
+ .nexus-empty-state__action {
3337
+ margin-top: var(--spacing-gap-sm, 0.5rem);
3338
+ }
3339
+ .nexus-empty-state--sm {
3340
+ padding: var(--spacing-padding-md, 1rem);
3341
+ gap: var(--spacing-gap-xs, 0.25rem);
3342
+ }
3343
+ .nexus-empty-state--sm .nexus-empty-state__title {
3344
+ font-size: var(--text-text-semibold-sm, 0.875rem);
3345
+ }
3346
+ .nexus-empty-state--sm .nexus-empty-state__description {
3347
+ font-size: var(--text-text-xs, 0.75rem);
3348
+ }
3349
+ .nexus-empty-state--lg {
3350
+ padding: var(--spacing-padding-xl, 2rem);
3351
+ gap: var(--spacing-gap-md, 1rem);
3352
+ }
3353
+ .nexus-empty-state--lg .nexus-empty-state__title {
3354
+ font-size: var(--text-heading-h5, 1.125rem);
3355
+ }
3356
+
3357
+ /* ═══════════════════════════════════════════
3358
+ Breadcrumb
3359
+ ═══════════════════════════════════════════ */
3360
+
3361
+ .nexus-breadcrumb {
3362
+ font-size: var(--text-text-sm, 0.875rem);
3363
+ line-height: 1.25;
3364
+ }
3365
+ .nexus-breadcrumb__list {
3366
+ display: flex;
3367
+ flex-wrap: wrap;
3368
+ align-items: center;
3369
+ list-style: none;
3370
+ margin: 0;
3371
+ padding: 0;
3372
+ gap: 0;
3373
+ }
3374
+ .nexus-breadcrumb__item {
3375
+ display: inline-flex;
3376
+ align-items: center;
3377
+ }
3378
+ .nexus-breadcrumb__separator {
3379
+ display: inline-flex;
3380
+ align-items: center;
3381
+ margin: 0 var(--spacing-gap-xs, 0.25rem);
3382
+ color: var(--color-icon-tertiary);
3383
+ user-select: none;
3384
+ }
3385
+ .nexus-breadcrumb__separator-icon {
3386
+ width: var(--size-icon-xs, 0.75rem);
3387
+ height: var(--size-icon-xs, 0.75rem);
3388
+ }
3389
+ .nexus-breadcrumb__link {
3390
+ color: var(--color-text-secondary);
3391
+ text-decoration: none;
3392
+ transition: color 150ms ease;
3393
+ }
3394
+ .nexus-breadcrumb__link:hover {
3395
+ color: var(--color-text-primary);
3396
+ }
3397
+ .nexus-breadcrumb__link--btn {
3398
+ border: none;
3399
+ background: none;
3400
+ cursor: pointer;
3401
+ font: inherit;
3402
+ padding: 0;
3403
+ }
3404
+ .nexus-breadcrumb__current {
3405
+ color: var(--color-text-primary);
3406
+ font-weight: var(--font-weight-text-medium-sm, 500);
3407
+ }
3408
+ .nexus-breadcrumb__ellipsis {
3409
+ color: var(--color-text-tertiary);
3410
+ user-select: none;
3411
+ }
3412
+
3413
+ /* ═══════════════════════════════════════════
3414
+ Stepper
3415
+ ═══════════════════════════════════════════ */
3416
+
3417
+ .nexus-stepper {
3418
+ width: 100%;
3419
+ }
3420
+
3421
+ /* ── Horizontal ── */
3422
+ .nexus-stepper--horizontal {
3423
+ display: flex;
3424
+ flex-direction: row;
3425
+ align-items: flex-start;
3426
+ }
3427
+ .nexus-stepper--horizontal .nexus-stepper__step {
3428
+ flex: 1;
3429
+ min-width: 0;
3430
+ display: flex;
3431
+ flex-direction: column;
3432
+ align-items: center;
3433
+ text-align: center;
3434
+ }
3435
+ .nexus-stepper--horizontal .nexus-stepper__indicator-wrap {
3436
+ display: flex;
3437
+ flex-direction: row;
3438
+ align-items: center;
3439
+ width: 100%;
3440
+ justify-content: center;
3441
+ }
3442
+ .nexus-stepper--horizontal .nexus-stepper__connector {
3443
+ flex: 1;
3444
+ height: 2px;
3445
+ background: var(--color-border-default);
3446
+ transition: background var(--duration-transition-normal, 200ms) var(--ease-transition-normal);
3447
+ }
3448
+ .nexus-stepper--horizontal .nexus-stepper__connector--hidden {
3449
+ visibility: hidden;
3450
+ }
3451
+ .nexus-stepper--horizontal .nexus-stepper__connector--completed {
3452
+ background: var(--color-accent-primary);
3453
+ }
3454
+ .nexus-stepper--horizontal .nexus-stepper__content {
3455
+ margin-top: var(--spacing-gap-sm, 0.5rem);
3456
+ padding: 0 var(--spacing-padding-2xs, 0.25rem);
3457
+ }
3458
+
3459
+ /* ── Vertical ── */
3460
+ .nexus-stepper--vertical {
3461
+ display: flex;
3462
+ flex-direction: column;
3463
+ gap: 0;
3464
+ }
3465
+ .nexus-stepper--vertical .nexus-stepper__step {
3466
+ display: flex;
3467
+ flex-direction: row;
3468
+ align-items: stretch;
3469
+ gap: var(--spacing-gap-sm, 0.5rem);
3470
+ }
3471
+ .nexus-stepper--vertical .nexus-stepper__indicator-wrap {
3472
+ display: flex;
3473
+ flex-direction: column;
3474
+ align-items: center;
3475
+ flex-shrink: 0;
3476
+ }
3477
+ .nexus-stepper--vertical .nexus-stepper__connector {
3478
+ width: 2px;
3479
+ flex: 1;
3480
+ min-height: var(--spacing-padding-sm, 0.75rem);
3481
+ background: var(--color-border-default);
3482
+ transition: background var(--duration-transition-normal, 200ms) var(--ease-transition-normal);
3483
+ }
3484
+ .nexus-stepper--vertical .nexus-stepper__connector--completed {
3485
+ background: var(--color-accent-primary);
3486
+ }
3487
+ .nexus-stepper--vertical .nexus-stepper__content {
3488
+ padding: var(--spacing-padding-xs, 0.5rem) 0;
3489
+ }
3490
+
3491
+ /* ── Indicator (공통) ── */
3492
+ .nexus-stepper__indicator {
3493
+ display: inline-flex;
3494
+ align-items: center;
3495
+ justify-content: center;
3496
+ flex-shrink: 0;
3497
+ width: var(--size-control-sm, 2rem);
3498
+ height: var(--size-control-sm, 2rem);
3499
+ border-radius: var(--radius-corner-full, 9999px);
3500
+ border: 2px solid var(--color-border-medium);
3501
+ background: var(--color-surface-default);
3502
+ font-size: var(--text-text-sm, 0.875rem);
3503
+ font-weight: var(--font-weight-text-medium-sm, 500);
3504
+ color: var(--color-text-secondary);
3505
+ transition: all var(--duration-transition-normal, 200ms) var(--ease-transition-normal);
3506
+ }
3507
+ .nexus-stepper--sm .nexus-stepper__indicator {
3508
+ width: 1.75rem;
3509
+ height: 1.75rem;
3510
+ font-size: var(--text-text-xs, 0.75rem);
3511
+ }
3512
+ .nexus-stepper__check {
3513
+ width: var(--size-icon-sm, 1rem);
3514
+ height: var(--size-icon-sm, 1rem);
3515
+ }
3516
+ .nexus-stepper--sm .nexus-stepper__check {
3517
+ width: var(--size-icon-xs, 0.75rem);
3518
+ height: var(--size-icon-xs, 0.75rem);
3519
+ }
3520
+
3521
+ /* ── State colors ── */
3522
+ .nexus-stepper__step--completed .nexus-stepper__indicator {
3523
+ border-color: var(--color-accent-primary);
3524
+ background: var(--color-accent-primary);
3525
+ color: var(--color-accent-on-primary);
3526
+ }
3527
+ .nexus-stepper__step--active .nexus-stepper__indicator {
3528
+ border-color: var(--color-accent-primary);
3529
+ color: var(--color-accent-primary);
3530
+ background: var(--color-surface-default);
3531
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent-primary) 20%, transparent);
3532
+ }
3533
+ .nexus-stepper__step--error .nexus-stepper__indicator {
3534
+ border-color: var(--color-status-danger);
3535
+ color: var(--color-status-danger);
3536
+ background: var(--color-surface-default);
3537
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-status-danger) 20%, transparent);
3538
+ }
3539
+ .nexus-stepper__step--pending .nexus-stepper__indicator {
3540
+ border-color: var(--color-border-default);
3541
+ color: var(--color-text-tertiary);
3542
+ }
3543
+
3544
+ /* ── Labels ── */
3545
+ .nexus-stepper__label {
3546
+ display: block;
3547
+ font-size: var(--text-text-sm, 0.875rem);
3548
+ font-weight: var(--font-weight-text-medium-sm, 500);
3549
+ color: var(--color-text-primary);
3550
+ }
3551
+ .nexus-stepper--sm .nexus-stepper__label {
3552
+ font-size: var(--text-text-xs, 0.75rem);
3553
+ }
3554
+ .nexus-stepper__description {
3555
+ display: block;
3556
+ margin-top: var(--spacing-gap-xs, 0.25rem);
3557
+ font-size: var(--text-text-xs, 0.75rem);
3558
+ color: var(--color-text-secondary);
3559
+ }
3560
+ .nexus-stepper__step--pending .nexus-stepper__label {
3561
+ color: var(--color-text-secondary);
3562
+ }
3563
+ .nexus-stepper__step--pending .nexus-stepper__description {
3564
+ color: var(--color-text-muted);
3565
+ }
3566
+
3567
+ /* ═══════════════════════════════════════════
3568
+ TagInput
3569
+ ═══════════════════════════════════════════ */
3570
+
3571
+ .nexus-tag-input-wrapper {
3572
+ display: flex;
3573
+ flex-direction: column;
3574
+ gap: var(--spacing-gap-xs, 0.25rem);
3575
+ }
3576
+ .nexus-tag-input__label {
3577
+ font-size: var(--text-label-md, 0.875rem);
3578
+ font-weight: var(--font-weight-label-md, 500);
3579
+ color: var(--color-text-primary);
3580
+ }
3581
+ .nexus-tag-input {
3582
+ display: flex;
3583
+ flex-wrap: wrap;
3584
+ align-items: center;
3585
+ gap: var(--spacing-gap-xs, 0.25rem);
3586
+ padding: var(--spacing-padding-xs, 0.5rem);
3587
+ border: var(--border-width-stroke-default, 1px) solid var(--color-border-default);
3588
+ border-radius: var(--radius-corner-md, 0.5rem);
3589
+ background: var(--color-surface-default);
3590
+ cursor: text;
3591
+ transition: border-color 150ms ease;
3592
+ }
3593
+ .nexus-tag-input:focus-within {
3594
+ border-color: var(--color-border-default-focus, var(--color-accent-primary));
3595
+ }
3596
+ .nexus-tag-input--disabled {
3597
+ opacity: var(--opacity-disabled-element, 0.4);
3598
+ cursor: not-allowed;
3599
+ pointer-events: none;
3600
+ }
3601
+ .nexus-tag-input--sm {
3602
+ padding: var(--spacing-padding-2xs, 0.25rem);
3603
+ gap: 0.125rem;
3604
+ font-size: var(--text-text-xs, 0.75rem);
3605
+ }
3606
+ .nexus-tag-input--md {
3607
+ font-size: var(--text-text-sm, 0.875rem);
3608
+ }
3609
+ .nexus-tag-input--lg {
3610
+ padding: var(--spacing-padding-sm, 0.75rem);
3611
+ font-size: var(--text-text-base, 1rem);
3612
+ }
3613
+ .nexus-tag-input__tag {
3614
+ display: inline-flex;
3615
+ align-items: center;
3616
+ gap: 0.25rem;
3617
+ padding: 0.125rem 0.5rem;
3618
+ border-radius: var(--radius-corner-sm, 0.25rem);
3619
+ background: var(--color-surface-subtle);
3620
+ color: var(--color-text-primary);
3621
+ font-size: inherit;
3622
+ line-height: 1.5;
3623
+ white-space: nowrap;
3624
+ }
3625
+ .nexus-tag-input__tag-close {
3626
+ display: inline-flex;
3627
+ align-items: center;
3628
+ justify-content: center;
3629
+ border: none;
3630
+ background: transparent;
3631
+ cursor: pointer;
3632
+ padding: 0;
3633
+ margin: 0;
3634
+ color: var(--color-icon-tertiary);
3635
+ transition: color 150ms;
3636
+ }
3637
+ .nexus-tag-input__tag-close:hover {
3638
+ color: var(--color-icon-primary);
3639
+ }
3640
+ .nexus-tag-input__tag-close-icon {
3641
+ width: 0.75rem;
3642
+ height: 0.75rem;
3643
+ }
3644
+ .nexus-tag-input__input {
3645
+ flex: 1;
3646
+ min-width: 4rem;
3647
+ border: none;
3648
+ outline: none;
3649
+ background: transparent;
3650
+ font: inherit;
3651
+ color: var(--color-text-primary);
3652
+ padding: 0.125rem 0;
3653
+ }
3654
+ .nexus-tag-input__input::placeholder {
3655
+ color: var(--color-text-muted);
3656
+ }
3657
+ .nexus-tag-input__description {
3658
+ font-size: var(--text-text-xs, 0.75rem);
3659
+ color: var(--color-text-secondary);
3660
+ }
3661
+
3662
+ /* ═══════════════════════════════════════════
3663
+ NxImage
3664
+ ═══════════════════════════════════════════ */
3665
+
3666
+ .nexus-image {
3667
+ position: relative;
3668
+ overflow: hidden;
3669
+ display: block;
3670
+ background: var(--color-surface-subtle);
3671
+ }
3672
+ .nexus-image__fallback {
3673
+ display: flex;
3674
+ align-items: center;
3675
+ justify-content: center;
3676
+ width: 100%;
3677
+ height: 100%;
3678
+ min-height: 4rem;
3679
+ color: var(--color-icon-muted);
3680
+ }
3681
+ .nexus-image__fallback-icon {
3682
+ width: var(--size-icon-xl, 2rem);
3683
+ height: var(--size-icon-xl, 2rem);
3684
+ }
3685
+ .nexus-image__skeleton {
3686
+ position: absolute;
3687
+ inset: 0;
3688
+ background: linear-gradient(90deg, var(--color-surface-subtle) 25%, var(--color-surface-default) 50%, var(--color-surface-subtle) 75%);
3689
+ background-size: 200% 100%;
3690
+ animation: nexus-shimmer 1.5s infinite;
3691
+ }
3692
+ .nexus-image__img {
3693
+ display: block;
3694
+ width: 100%;
3695
+ height: 100%;
3696
+ opacity: 0;
3697
+ transition: opacity 300ms ease;
3698
+ }
3699
+ .nexus-image__img--loaded {
3700
+ opacity: 1;
3701
+ }
3702
+ .nexus-image__img--cover {
3703
+ object-fit: cover;
3704
+ }
3705
+ .nexus-image__img--contain {
3706
+ object-fit: contain;
3707
+ }
3708
+ .nexus-image__img--fill {
3709
+ object-fit: fill;
3710
+ }
3711
+ .nexus-image__img--none {
3712
+ object-fit: none;
3713
+ }
3714
+
3715
+ @keyframes nexus-shimmer {
3716
+ 0% { background-position: -200% 0; }
3717
+ 100% { background-position: 200% 0; }
3718
+ }
3719
+
3720
+ /* ═══════════════════════════════════════════
3721
+ DatePicker / Calendar
3722
+ ═══════════════════════════════════════════ */
3723
+
3724
+ .nexus-datepicker {
3725
+ position: relative;
3726
+ display: inline-block;
3727
+ }
3728
+ .nexus-datepicker__trigger {
3729
+ display: inline-flex;
3730
+ align-items: center;
3731
+ gap: var(--spacing-gap-sm, 0.5rem);
3732
+ padding: var(--spacing-padding-xs, 0.5rem) var(--spacing-padding-sm, 0.75rem);
3733
+ border: var(--border-width-stroke-default, 1px) solid var(--color-border-default);
3734
+ border-radius: var(--radius-corner-md, 0.5rem);
3735
+ background: var(--color-surface-default);
3736
+ font: inherit;
3737
+ font-size: var(--text-text-sm, 0.875rem);
3738
+ color: var(--color-text-primary);
3739
+ cursor: pointer;
3740
+ transition: border-color 150ms;
3741
+ min-width: 10rem;
3742
+ }
3743
+ .nexus-datepicker__trigger:hover {
3744
+ border-color: var(--color-border-default-hover);
3745
+ }
3746
+ .nexus-datepicker__trigger:disabled {
3747
+ opacity: var(--opacity-disabled-element, 0.4);
3748
+ cursor: not-allowed;
3749
+ }
3750
+ .nexus-datepicker__trigger--placeholder span {
3751
+ color: var(--color-text-muted);
3752
+ }
3753
+ .nexus-datepicker__icon {
3754
+ width: var(--size-icon-sm, 1rem);
3755
+ height: var(--size-icon-sm, 1rem);
3756
+ flex-shrink: 0;
3757
+ color: var(--color-icon-secondary);
3758
+ }
3759
+ .nexus-datepicker__popover {
3760
+ position: absolute;
3761
+ top: calc(100% + 4px);
3762
+ left: 0;
3763
+ z-index: var(--z-index-layer-popover, 30);
3764
+ background: var(--color-surface-default);
3765
+ border: var(--border-width-stroke-default, 1px) solid var(--color-border-default);
3766
+ border-radius: var(--radius-corner-lg, 0.75rem);
3767
+ box-shadow: var(--shadow-lg, 0 2px 8px -1px rgb(0 0 0 / 0.12));
3768
+ padding: var(--spacing-padding-sm, 0.75rem);
3769
+ animation: nexus-fade-in 150ms ease;
3770
+ }
3771
+
3772
+ .nexus-calendar {
3773
+ font-size: var(--text-text-sm, 0.875rem);
3774
+ }
3775
+ .nexus-calendar__months {
3776
+ display: flex;
3777
+ flex-direction: column;
3778
+ gap: var(--spacing-gap-sm, 0.5rem);
3779
+ }
3780
+ .nexus-calendar__caption {
3781
+ display: flex;
3782
+ justify-content: center;
3783
+ align-items: center;
3784
+ padding: var(--spacing-padding-2xs, 0.25rem) 0;
3785
+ font-weight: var(--font-weight-text-semibold-sm, 600);
3786
+ color: var(--color-text-primary);
3787
+ }
3788
+ .nexus-calendar__nav {
3789
+ display: flex;
3790
+ gap: var(--spacing-gap-xs, 0.25rem);
3791
+ }
3792
+ .nexus-calendar__nav-btn {
3793
+ display: inline-flex;
3794
+ align-items: center;
3795
+ justify-content: center;
3796
+ width: var(--size-control-sm, 2rem);
3797
+ height: var(--size-control-sm, 2rem);
3798
+ border: none;
3799
+ background: transparent;
3800
+ border-radius: var(--radius-corner-sm, 0.25rem);
3801
+ cursor: pointer;
3802
+ color: var(--color-icon-secondary);
3803
+ transition: background 150ms;
3804
+ }
3805
+ .nexus-calendar__nav-btn:hover {
3806
+ background: var(--color-surface-default-hover);
3807
+ }
3808
+ .nexus-calendar__grid {
3809
+ width: 100%;
3810
+ border-collapse: collapse;
3811
+ }
3812
+ .nexus-calendar__head-row {
3813
+ display: flex;
3814
+ }
3815
+ .nexus-calendar__head-cell {
3816
+ width: var(--size-control-sm, 2rem);
3817
+ text-align: center;
3818
+ font-size: var(--text-text-xs, 0.75rem);
3819
+ font-weight: var(--font-weight-text-medium-xs, 500);
3820
+ color: var(--color-text-tertiary);
3821
+ padding: var(--spacing-padding-2xs, 0.25rem) 0;
3822
+ }
3823
+ .nexus-calendar__row {
3824
+ display: flex;
3825
+ }
3826
+ .nexus-calendar__cell {
3827
+ text-align: center;
3828
+ }
3829
+ .nexus-calendar__day {
3830
+ display: inline-flex;
3831
+ align-items: center;
3832
+ justify-content: center;
3833
+ width: var(--size-control-sm, 2rem);
3834
+ height: var(--size-control-sm, 2rem);
3835
+ border: none;
3836
+ background: transparent;
3837
+ border-radius: var(--radius-corner-sm, 0.25rem);
3838
+ cursor: pointer;
3839
+ font: inherit;
3840
+ font-size: var(--text-text-sm, 0.875rem);
3841
+ color: var(--color-text-primary);
3842
+ transition: background 150ms, color 150ms;
3843
+ }
3844
+ .nexus-calendar__day:hover {
3845
+ background: var(--color-surface-default-hover);
3846
+ }
3847
+ .nexus-calendar__day--selected {
3848
+ background: var(--color-accent-primary);
3849
+ color: var(--color-accent-on-primary);
3850
+ }
3851
+ .nexus-calendar__day--selected:hover {
3852
+ background: var(--color-accent-primary-hover);
3853
+ }
3854
+ .nexus-calendar__day--today {
3855
+ font-weight: var(--font-weight-text-semibold-sm, 600);
3856
+ border: var(--border-width-stroke-default, 1px) solid var(--color-accent-primary);
3857
+ }
3858
+ .nexus-calendar__day--outside {
3859
+ color: var(--color-text-muted);
3860
+ opacity: 0.5;
3861
+ }
3862
+ .nexus-calendar__day--disabled {
3863
+ color: var(--color-text-muted);
3864
+ opacity: var(--opacity-disabled-element, 0.4);
3865
+ cursor: not-allowed;
3866
+ pointer-events: none;
3867
+ }
3868
+
3869
+ @keyframes nexus-fade-in {
3870
+ from { opacity: 0; transform: translateY(-4px); }
3871
+ to { opacity: 1; transform: translateY(0); }
3872
+ }