@povio/ui 5.0.0-rc.1 → 5.0.0-rc.11

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 (452) hide show
  1. package/.rulesync/rules/ui-buttons-and-content.md +56 -0
  2. package/.rulesync/rules/ui-inputs-and-forms.md +62 -0
  3. package/.rulesync/rules/ui-overlays-navigation-and-styling.md +49 -0
  4. package/.rulesync/rules/ui-overview.md +33 -0
  5. package/README.md +102 -17
  6. package/dist/{Accordion-CzFKi8Bp.js → Accordion-BzwO4_ml.js} +20 -136
  7. package/dist/{Alert-T25LY8ZL.js → Alert-CnvEb1D_.js} +16 -12
  8. package/dist/{Alert-f1dG-4Uy.d.ts → Alert-DfiJbKH0.d.ts} +2 -1
  9. package/dist/{AlertDialog-B6R2MbNg.d.ts → AlertDialog-OWTbR4km.d.ts} +3 -3
  10. package/dist/AppCanvasPage-BTmt8poT.d.ts +82 -0
  11. package/dist/AppCanvasPage-BsQrZ8q7.js +2497 -0
  12. package/dist/{Autocomplete-CQ63Cynd.d.ts → Autocomplete-C6RRxImn.d.ts} +1 -1
  13. package/dist/{Badge-YKlKz-Jy.d.ts → Badge-CBNpj823.d.ts} +8 -5
  14. package/dist/BadgeButton-Ccgt3oGO.d.ts +15 -0
  15. package/dist/{BottomSheet-DvqBvth_.js → BottomSheet-BXLE3161.js} +7 -6
  16. package/dist/{BottomSheet-xaymO7aQ.d.ts → BottomSheet-DbQuzfAB.d.ts} +1 -1
  17. package/dist/{BottomSheet.lazy-CGBRPve_.d.ts → BottomSheet.lazy-D9LCEo7s.d.ts} +1 -1
  18. package/dist/{Breadcrumbs-DyriI-Bi.d.ts → Breadcrumbs-CUV6CU8Q.d.ts} +1 -1
  19. package/dist/{Breadcrumbs-DiIYJAWf.js → Breadcrumbs-FF8hMfXd.js} +24 -38
  20. package/dist/Button-C5rv4Cr2.js +506 -0
  21. package/dist/{Button-BZ3is6IU.d.ts → Button-D-4qb0IR.d.ts} +3 -3
  22. package/dist/{ButtonContent-B2_dZ6vA.js → ButtonContent-c7lJayVQ.js} +10 -8
  23. package/dist/{Calendar-DzQApBCy.js → Calendar-DRHruqr_.js} +26 -148
  24. package/dist/CanvasComponentsFrame-C0Sf9RcC.js +21 -0
  25. package/dist/{CheckContent-DZ7Gk8GS.js → CheckContent-D7sZPmzx.js} +2 -2
  26. package/dist/{Checkbox-BepzfVfK.js → Checkbox-D3f2Plbc.js} +6 -6
  27. package/dist/{Checkbox-CHpgW3fI.d.ts → Checkbox-x2MuL477.d.ts} +1 -1
  28. package/dist/{CheckboxCheckmark-B3lnOjsU.js → CheckboxCheckmark-FwKjPVbV.js} +19 -16
  29. package/dist/{CheckboxGroup-CXrR3A-c.d.ts → CheckboxGroup-Dio2rvF5.d.ts} +3 -3
  30. package/dist/ComponentGallery-DDSqnm9f.js +3574 -0
  31. package/dist/{DatePicker-B3l9TEjW.d.ts → DatePicker-1LJ2LqST.d.ts} +3 -3
  32. package/dist/{DatePicker-CI87jC4_.js → DatePicker-xDEqzNJv.js} +17 -16
  33. package/dist/{DatePickerInput-UBZcTmdv.js → DatePickerInput-B0fEeCOf.js} +17 -27
  34. package/dist/{DatePickerInput-CZTEsrS0.d.ts → DatePickerInput-ai4apf8B.d.ts} +3 -3
  35. package/dist/{DateRangePicker-DKkc2B3n.d.ts → DateRangePicker-Dfptit_Z.d.ts} +3 -3
  36. package/dist/{DateRangePicker-BX2O5zA8.js → DateRangePicker-DxuVhRaf.js} +26 -195
  37. package/dist/{DateTimePicker-CVfkp45w.js → DateTimePicker-4N1Pka07.js} +16 -15
  38. package/dist/{DateTimePicker-IHr-wPq8.d.ts → DateTimePicker-DpsfukpQ.d.ts} +3 -3
  39. package/dist/{Dialog-DdRP4YFC.js → Dialog-9manOgMA.js} +4 -4
  40. package/dist/{Dialog-CXoVeIkU.js → Dialog-CKLkS00H.js} +10 -2
  41. package/dist/{Dialog-DEbI_9S-.d.ts → Dialog-CW93T9X1.d.ts} +3 -2
  42. package/dist/{DropdownMenu-zrodtd44.js → DropdownMenu-5jmtgLXd.js} +8 -6
  43. package/dist/{DropdownMenu-CWDhk3XA.d.ts → DropdownMenu-JNpYT4-3.d.ts} +3 -2
  44. package/dist/{DropdownMenuDesktop-CGYxsavQ.js → DropdownMenuDesktop-Cl9gZVq0.js} +9 -38
  45. package/dist/{FileInput-Dz1eESr_.js → FileInput-DUyc_sVu.js} +11 -9
  46. package/dist/{FileInput-BQbn77bE.d.ts → FileInput-Dt3UDg2s.d.ts} +5 -4
  47. package/dist/{FileTrigger-CDXcQthK.js → FileTrigger-Cthk5_Wp.js} +1 -30
  48. package/dist/{FileUpload-qySCMcLn.d.ts → FileUpload-BXlKtQ4L.d.ts} +1 -1
  49. package/dist/{FileUpload-D3Io7Is5.js → FileUpload-Cx98L1jz.js} +53 -140
  50. package/dist/{FileUploadContainer-qOyGvb5J.d.ts → FileUploadContainer-BURZAS2M.d.ts} +1 -1
  51. package/dist/{Form-u_N_6mwo.d.ts → Form-DmcByQts.d.ts} +1 -1
  52. package/dist/{FormField-CHD4OJOt.js → FormField-9h3JAhaY.js} +11 -10
  53. package/dist/{FormField-B0miX3gu.d.ts → FormField-C8_T6by9.d.ts} +1 -1
  54. package/dist/{FormFieldError-QRAFHUTt.js → FormFieldError-DeOHHLo2.js} +1 -1
  55. package/dist/FormFieldHeaderTooltip-BV2Ju4oB.js +17 -0
  56. package/dist/{IconButton-KXecZgYX.d.ts → IconButton-D4thBurp.d.ts} +2 -2
  57. package/dist/IconSlot-DSK7qNxc.js +79 -0
  58. package/dist/{InlineIconButton-CbKZ2U_a.d.ts → InlineIconButton-BeJCjl-q.d.ts} +2 -2
  59. package/dist/{InlineTooltipWrapper-g5yoeH1B.js → InlineTooltipWrapper-BpApaGXV.js} +3 -3
  60. package/dist/{Input-efmPwk8f.d.ts → Input-CHD67H4o.d.ts} +3 -3
  61. package/dist/{InputContent-DuBa9FuI.d.ts → InputContent-B6CIQNnE.d.ts} +3 -3
  62. package/dist/{InputItem-2zf6QI5L.js → InputItem-Cv19Hwnx.js} +11 -11
  63. package/dist/{Inputs-C-w03Q_F.d.ts → Inputs-C0sUmuPv.d.ts} +1 -1
  64. package/dist/{Inputs-BceDTmdT.js → Inputs-D1aE_J9f.js} +1 -1
  65. package/dist/{Link-QYpprkN1.d.ts → Link-Ow9H7kNv.d.ts} +3 -2
  66. package/dist/{ListBox-B7DW1S7n.js → ListBox-CL8Ar4Q_.js} +5 -4
  67. package/dist/{MenuItem--Mjd_yK8.d.ts → MenuItem-DHyqOqln.d.ts} +1 -1
  68. package/dist/{Modal-CoFt5PGP.js → Modal-w60dVQcb.js} +1 -1
  69. package/dist/{NumberField-z2JatYK0.d.ts → NumberField-4SX3R6IR.d.ts} +3 -3
  70. package/dist/NumberFormatter-CLDS_LRZ.js +265 -0
  71. package/dist/{NumberRangeInput-BxVrHq8R.js → NumberRangeInput-Bzfe-RlV.js} +9 -8
  72. package/dist/{NumberRangeInput-Chai3iEi.d.ts → NumberRangeInput-CKmLfgVD.d.ts} +2 -2
  73. package/dist/{Pagination-CXtIDclf.d.ts → Pagination-CwQu5Py8.d.ts} +1 -1
  74. package/dist/{PaginationList-CXG4jWFD.d.ts → PaginationList-DMRUGtf8.d.ts} +1 -1
  75. package/dist/{PaginationList-0bAmvXC0.js → PaginationList-DtvuP63b.js} +2 -2
  76. package/dist/{PasswordInput-ub2TQxef.d.ts → PasswordInput-tLGcHS6H.d.ts} +1 -1
  77. package/dist/{Popover-DUKH0q9u.d.ts → Popover-BTHPteIh.d.ts} +2 -2
  78. package/dist/{Progress-DQWiFP0L.js → Progress-B3mY9rIP.js} +2 -2
  79. package/dist/{Progress-Dho39FDs.d.ts → Progress-CjWOR38H.d.ts} +2 -1
  80. package/dist/{QuerySelect-Bo1K6gi_.d.ts → QuerySelect-CgfnA3d-.d.ts} +2 -2
  81. package/dist/{RadioGroup-B_zJdn4y.d.ts → RadioGroup-CvmI9i_U.d.ts} +3 -3
  82. package/dist/{RadioGroup-SSZYch-J.js → RadioGroup-efBKgTYA.js} +13 -13
  83. package/dist/{RichTextEditor-D6RewmRj.js → RichTextEditor-Bd7F5D8f.js} +52 -133
  84. package/dist/{RichTextEditor-B_JX3nor.d.ts → RichTextEditor-CsDZcgyf.d.ts} +1 -1
  85. package/dist/{Select-CuZDkeQs.js → Select-CgIhoWgk.js} +5 -4
  86. package/dist/{Select-DeapZMYx.d.ts → Select-DKBPfNUe.d.ts} +1 -1
  87. package/dist/{SelectBase-7SE9Za2r.d.ts → SelectBase-BkIhS9Dg.d.ts} +3 -3
  88. package/dist/{Slider-BFViQmM3.d.ts → Slider-BtUXzztJ.d.ts} +1 -1
  89. package/dist/{Slider-DJ9K_a-x.js → Slider-CMg0BXJO.js} +11 -11
  90. package/dist/{Spinner-BEYBu85B.js → Spinner-BeVTUzzx.js} +1 -1
  91. package/dist/{Spinner-BbcI6IOb.d.ts → Spinner-DbXeDOa2.d.ts} +2 -1
  92. package/dist/{SplitButton-lL87EcBL.d.ts → SplitButton-D9ngY1rJ.d.ts} +3 -3
  93. package/dist/{Stepper-C1YPgTBG.js → Stepper-Cp5vbL5g.js} +4 -117
  94. package/dist/{Stepper-hlhViuaK.d.ts → Stepper-TATlHZhQ.d.ts} +9 -8
  95. package/dist/{Switch-JxRmH1dX.js → Switch-CqnGEdeD.js} +11 -11
  96. package/dist/{Switch-DPftmB1b.d.ts → Switch-s_EPn0Jz.d.ts} +1 -1
  97. package/dist/Table-BN2_J_Ne.js +636 -0
  98. package/dist/Tag-AHfV_XSf.d.ts +44 -0
  99. package/dist/{Tag-HiDH438e.js → Tag-DPg5sL1Z.js} +22 -21
  100. package/dist/{TextArea-BhrCBGbq.d.ts → TextArea-D6kcAwGn.d.ts} +2 -2
  101. package/dist/{TextArea-gikUKKDl.js → TextArea-uPffb457.js} +7 -7
  102. package/dist/{TextButton-DnXRykhF.d.ts → TextButton-XUhV_1s0.d.ts} +4 -4
  103. package/dist/{TimePicker-DtNTOOGr.js → TimePicker-DN-i98z5.js} +15 -14
  104. package/dist/{TimePicker-CmT89X7v.d.ts → TimePicker-Dex9aU7D.d.ts} +2 -2
  105. package/dist/Toast-DtG3pA61.js +53 -0
  106. package/dist/{Toast-B4cXs2rj.d.ts → Toast-ruXqONDA.d.ts} +1 -1
  107. package/dist/{ToastContainer-BbsMIwtC.js → ToastContainer-qgpzMFD4.js} +4 -3
  108. package/dist/{ToggleButton-BGuzPJDO.d.ts → ToggleButton-7aP8Jb11.d.ts} +2 -2
  109. package/dist/{ToggleGroup-D9CFdM5-.d.ts → ToggleGroup-CRFDIPGZ.d.ts} +1 -1
  110. package/dist/{ToggleGroup-Cl0NS3fe.js → ToggleGroup-DmVPNWok.js} +29 -123
  111. package/dist/{Tooltip-aE1Vswxz.js → Tooltip-CpG1nz7Y.js} +8 -49
  112. package/dist/{Tooltip-D7dNwGy9.d.ts → Tooltip-DHv6vAqW.d.ts} +6 -5
  113. package/dist/{TooltipWrapper-CRf-JFeo.js → TooltipWrapper-CDHFaUKZ.js} +4 -4
  114. package/dist/{Typography-B0Gp1lpc.js → Typography-LU4z2pR1.js} +2 -2
  115. package/dist/{Typography-BiuidzDC.d.ts → Typography-XljT9s02.d.ts} +1 -1
  116. package/dist/UIConfigurator-C_2kgJtm.js +6880 -0
  117. package/dist/accordion.cva-CL1bVscW.js +129 -0
  118. package/dist/{autocomplete-BJ7rqWa4.d.ts → autocomplete-B-JuxTYN.d.ts} +2 -2
  119. package/dist/badgeButton.cva-B2bgCQP6.d.ts +41 -0
  120. package/dist/badgeButton.cva-CvN4CTx5.js +300 -0
  121. package/dist/breadcrumbs.cva-7zzdDhVR.js +27 -0
  122. package/dist/{button.cva-BvRI-3Gn.d.ts → button.cva-C7kEhgoA.d.ts} +7 -6
  123. package/dist/{buttonContent.cva-BDT_CReI.d.ts → buttonContent.cva-DPIlROA9.d.ts} +2 -2
  124. package/dist/{checkbox-BfcE8J5P.d.ts → checkbox-CRP4QRfP.d.ts} +1 -1
  125. package/dist/{checkbox-group-CHs2wFHS.d.ts → checkbox-group-BI_RwIJ4.d.ts} +1 -1
  126. package/dist/{checkbox.cva-gv87kr1W.d.ts → checkbox.cva-DBqfmYHY.d.ts} +5 -4
  127. package/dist/components/accordion.js +1 -1
  128. package/dist/components/alert-dialog.d.ts +1 -1
  129. package/dist/components/alert-dialog.js +4 -4
  130. package/dist/components/alert.d.ts +1 -1
  131. package/dist/components/alert.js +1 -1
  132. package/dist/components/autocomplete.d.ts +1 -1
  133. package/dist/components/autocomplete.js +5 -4
  134. package/dist/components/badge-button.d.ts +2 -0
  135. package/dist/components/{pill-button.js → badge-button.js} +13 -12
  136. package/dist/components/badge.d.ts +1 -1
  137. package/dist/components/badge.js +56 -37
  138. package/dist/components/bottom-sheet.d.ts +2 -2
  139. package/dist/components/bottom-sheet.js +2 -2
  140. package/dist/components/breadcrumbs.d.ts +1 -1
  141. package/dist/components/breadcrumbs.js +1 -1
  142. package/dist/components/button.d.ts +2 -2
  143. package/dist/components/button.js +1 -1
  144. package/dist/components/checkbox-group.d.ts +1 -1
  145. package/dist/components/checkbox-group.js +6 -6
  146. package/dist/components/checkbox.d.ts +1 -1
  147. package/dist/components/checkbox.js +1 -1
  148. package/dist/components/date-picker.d.ts +1 -1
  149. package/dist/components/date-picker.js +1 -1
  150. package/dist/components/date-range-picker.d.ts +1 -1
  151. package/dist/components/date-range-picker.js +1 -1
  152. package/dist/components/date-time-picker.d.ts +1 -1
  153. package/dist/components/date-time-picker.js +1 -1
  154. package/dist/components/dialog.d.ts +1 -1
  155. package/dist/components/dialog.js +1 -1
  156. package/dist/components/drawer.js +3 -3
  157. package/dist/components/dropdown-menu.d.ts +2 -2
  158. package/dist/components/dropdown-menu.js +2 -2
  159. package/dist/components/file-input.d.ts +1 -1
  160. package/dist/components/file-input.js +1 -1
  161. package/dist/components/file-upload-container.d.ts +2 -2
  162. package/dist/components/file-upload-container.js +1 -1
  163. package/dist/components/file-upload.d.ts +2 -2
  164. package/dist/components/file-upload.js +1 -1
  165. package/dist/components/form-field.d.ts +1 -1
  166. package/dist/components/form-field.js +1 -1
  167. package/dist/components/icon-button.d.ts +1 -1
  168. package/dist/components/icon-button.js +2 -2
  169. package/dist/components/icon-slot.d.ts +2 -0
  170. package/dist/components/icon-slot.js +2 -0
  171. package/dist/components/inline-icon-button.d.ts +1 -1
  172. package/dist/components/inline-icon-button.js +1 -1
  173. package/dist/components/input.d.ts +1 -1
  174. package/dist/components/input.js +7 -7
  175. package/dist/components/link.d.ts +1 -1
  176. package/dist/components/link.js +32 -1
  177. package/dist/components/number-field.d.ts +1 -1
  178. package/dist/components/number-field.js +10 -9
  179. package/dist/components/number-range-input.d.ts +1 -1
  180. package/dist/components/number-range-input.js +1 -1
  181. package/dist/components/pagination-list.d.ts +1 -1
  182. package/dist/components/pagination-list.js +1 -1
  183. package/dist/components/pagination.d.ts +1 -1
  184. package/dist/components/pagination.js +34 -30
  185. package/dist/components/password-input.d.ts +1 -1
  186. package/dist/components/popover.d.ts +1 -1
  187. package/dist/components/popover.js +6 -5
  188. package/dist/components/progress.d.ts +1 -1
  189. package/dist/components/progress.js +1 -1
  190. package/dist/components/query-autocomplete.d.ts +2 -2
  191. package/dist/components/query-autocomplete.js +10 -5
  192. package/dist/components/query-select.d.ts +1 -1
  193. package/dist/components/query-select.js +3 -3
  194. package/dist/components/radio-group.d.ts +1 -1
  195. package/dist/components/radio-group.js +1 -1
  196. package/dist/components/select.d.ts +2 -2
  197. package/dist/components/select.js +1 -1
  198. package/dist/components/slider.d.ts +1 -1
  199. package/dist/components/slider.js +1 -1
  200. package/dist/components/spinner.d.ts +1 -1
  201. package/dist/components/spinner.js +1 -1
  202. package/dist/components/split-button.d.ts +1 -1
  203. package/dist/components/split-button.js +3 -3
  204. package/dist/components/stepper.d.ts +1 -1
  205. package/dist/components/stepper.js +1 -1
  206. package/dist/components/switch.d.ts +1 -1
  207. package/dist/components/switch.js +1 -1
  208. package/dist/components/tag.d.ts +1 -1
  209. package/dist/components/tag.js +1 -1
  210. package/dist/components/text-area.d.ts +1 -1
  211. package/dist/components/text-area.js +1 -1
  212. package/dist/components/text-button.d.ts +1 -1
  213. package/dist/components/text-button.js +1 -1
  214. package/dist/components/time-picker.d.ts +1 -1
  215. package/dist/components/time-picker.js +1 -1
  216. package/dist/components/toast.d.ts +2 -2
  217. package/dist/components/toast.js +2 -2
  218. package/dist/components/toggle-button.d.ts +1 -1
  219. package/dist/components/toggle-button.js +1 -1
  220. package/dist/components/toggle-group.d.ts +2 -2
  221. package/dist/components/toggle-group.js +1 -1
  222. package/dist/components/tooltip-ellipsis.js +1 -1
  223. package/dist/components/tooltip.d.ts +1 -1
  224. package/dist/components/tooltip.js +1 -1
  225. package/dist/components/typography.d.ts +2 -2
  226. package/dist/components/typography.js +1 -1
  227. package/dist/components/use-toast.d.ts +1 -1
  228. package/dist/components/use-toast.js +2 -2
  229. package/dist/config/app-canvas-tanstack.d.ts +23 -0
  230. package/dist/config/app-canvas-tanstack.js +62 -0
  231. package/dist/config/app-canvas.d.ts +12 -0
  232. package/dist/config/app-canvas.js +2 -0
  233. package/dist/config/confirmation.d.ts +1 -1
  234. package/dist/config/link-context.d.ts +2 -2
  235. package/dist/config/ui-config.d.ts +2 -2
  236. package/dist/config/ui-config.js +1 -1
  237. package/dist/config/ui-configurator-theme.d.ts +2 -0
  238. package/dist/config/ui-configurator-theme.js +2 -0
  239. package/dist/config/ui-configurator-vite.d.ts +10 -0
  240. package/dist/config/ui-configurator-vite.js +174 -0
  241. package/dist/config/ui-configurator.d.ts +15 -0
  242. package/dist/config/ui-configurator.js +3 -0
  243. package/dist/config/ui-overrides.d.ts +1 -1
  244. package/dist/config/ui-overrides.js +1 -1
  245. package/dist/config/ui-router.js +1 -1
  246. package/dist/configuration.context-qdjDwQJj.d.ts +938 -0
  247. package/dist/{confirmation.context-DPAKsLYl.d.ts → confirmation.context-BOeEVczb.d.ts} +1 -1
  248. package/dist/{date-picker-BYFWSbN8.d.ts → date-picker-BhIA01qs.d.ts} +1 -1
  249. package/dist/{date-range-picker-BaaXOObm.d.ts → date-range-picker-BsuZ2h_3.d.ts} +1 -1
  250. package/dist/{date-time-picker-D42cTCgx.d.ts → date-time-picker-Bi-qW6vO.d.ts} +1 -1
  251. package/dist/datePickerInput.cva-Cd7UUN61.js +14 -0
  252. package/dist/{datePickerValue.utils-CFCY-fRJ.js → datePickerValue.utils-QWR2q5Vv.js} +9 -9
  253. package/dist/{dialog.cva---xiOXMQ.js → dialog.cva-COhDZaVl.js} +4 -4
  254. package/dist/{dist-B8h0VT0E.js → dist-CAdwxJbe.js} +1 -208
  255. package/dist/{dom.utils-DjuRTR6U.js → dom.utils-D1AopHx9.js} +1 -1
  256. package/dist/dropdownMenu.cva-DvEmX0bs.js +34 -0
  257. package/dist/{dynamicInputs-wEEikYeg.d.ts → dynamicInputs-DdcsSoYu.d.ts} +102 -100
  258. package/dist/{fieldAdapter-C0lCFmf0.js → fieldAdapter-DjYls12j.js} +1 -1
  259. package/dist/{file-input-C56GXRwz.d.ts → file-input-BTYsGgr7.d.ts} +1 -1
  260. package/dist/{file-upload-Bx0X534g.d.ts → file-upload-CqGdt1Ue.d.ts} +2 -2
  261. package/dist/fileUpload.cva-ujmStxB1.js +42 -0
  262. package/dist/{fileUpload.types-DWuQKA2l.d.ts → fileUpload.types-rIGu4MgY.d.ts} +2 -2
  263. package/dist/groups-oQmSeqXn.js +18 -0
  264. package/dist/hooks/use-filters.js +1 -1
  265. package/dist/iconSlot.cva-CnpFzAOR.d.ts +21 -0
  266. package/dist/icons.d.ts +2 -1
  267. package/dist/icons.js +2 -1
  268. package/dist/index.d.ts +87 -86
  269. package/dist/index.js +57 -46
  270. package/dist/info-iUmX3uDk.js +32 -0
  271. package/dist/{input-D2kGX0hW.d.ts → input-CqNMORk8.d.ts} +1 -1
  272. package/dist/{input.cva-BhDJxc7r.d.ts → input.cva-CQPV5gW7.d.ts} +3 -2
  273. package/dist/{input.cva-BcXyC1vZ.js → input.cva-CbMTwuQU.js} +58 -39
  274. package/dist/{link.context-CDZn6oL2.d.ts → link.context-D5qyz9Rf.d.ts} +1 -1
  275. package/dist/link.cva-DMTHZiJG.js +12 -0
  276. package/dist/{number-field-Bw2GKr0s.d.ts → number-field-BcMnahI8.d.ts} +1 -1
  277. package/dist/{number-range-input-Dqe6x2dR.d.ts → number-range-input-CLfuacKv.d.ts} +1 -1
  278. package/dist/numberStatic.utils-BX50PSee.js +421 -0
  279. package/dist/{password-input-DepKyhh3.d.ts → password-input-BV1Amdc8.d.ts} +1 -1
  280. package/dist/{popover.cva-BJSkLndY.js → popover.cva-Bhud1wnp.js} +1 -1
  281. package/dist/popoverAnimation-DEZSvKP8.js +4 -0
  282. package/dist/{query-autocomplete-BSpHin_R.d.ts → query-autocomplete-CJSJeSXW.d.ts} +2 -2
  283. package/dist/{query-select-m1DCp4UF.d.ts → query-select-B-VLz1PW.d.ts} +2 -2
  284. package/dist/{queryAutocomplete.types-CrbVUmvl.d.ts → queryAutocomplete.types-D2w1_hau.d.ts} +2 -2
  285. package/dist/{radio-group-Civ3Fb70.d.ts → radio-group-DZZdQMub.d.ts} +1 -1
  286. package/dist/{radio.cva-BlOrmxzf.d.ts → radio.cva-DN9VQ3Kb.d.ts} +4 -3
  287. package/dist/rhf/autocomplete.d.ts +2 -2
  288. package/dist/rhf/autocomplete.js +1 -1
  289. package/dist/rhf/checkbox-group.d.ts +2 -2
  290. package/dist/rhf/checkbox-group.js +1 -1
  291. package/dist/rhf/checkbox.d.ts +2 -2
  292. package/dist/rhf/checkbox.js +2 -2
  293. package/dist/rhf/date-picker.d.ts +2 -2
  294. package/dist/rhf/date-picker.js +2 -2
  295. package/dist/rhf/date-range-picker.d.ts +2 -2
  296. package/dist/rhf/date-range-picker.js +2 -2
  297. package/dist/rhf/date-time-picker.d.ts +2 -2
  298. package/dist/rhf/date-time-picker.js +2 -2
  299. package/dist/rhf/file-input.d.ts +2 -2
  300. package/dist/rhf/file-input.js +2 -2
  301. package/dist/rhf/file-upload.d.ts +2 -2
  302. package/dist/rhf/file-upload.js +2 -2
  303. package/dist/rhf/input.d.ts +2 -2
  304. package/dist/rhf/input.js +1 -1
  305. package/dist/rhf/inputs.d.ts +2 -2
  306. package/dist/rhf/number-field.d.ts +2 -2
  307. package/dist/rhf/number-field.js +1 -1
  308. package/dist/rhf/number-range-input.d.ts +2 -2
  309. package/dist/rhf/number-range-input.js +2 -2
  310. package/dist/rhf/password-input.d.ts +2 -2
  311. package/dist/rhf/password-input.js +1 -1
  312. package/dist/rhf/query-autocomplete.d.ts +1 -1
  313. package/dist/rhf/query-autocomplete.js +1 -1
  314. package/dist/rhf/query-select.d.ts +1 -1
  315. package/dist/rhf/query-select.js +1 -1
  316. package/dist/rhf/radio-group.d.ts +2 -2
  317. package/dist/rhf/radio-group.js +2 -2
  318. package/dist/rhf/rich-text-editor.d.ts +2 -2
  319. package/dist/rhf/rich-text-editor.js +2 -2
  320. package/dist/rhf/select.d.ts +2 -2
  321. package/dist/rhf/select.js +2 -2
  322. package/dist/rhf/slider.d.ts +2 -2
  323. package/dist/rhf/slider.js +2 -2
  324. package/dist/rhf/switch.d.ts +2 -2
  325. package/dist/rhf/switch.js +2 -2
  326. package/dist/rhf/text-area.d.ts +2 -2
  327. package/dist/rhf/text-area.js +2 -2
  328. package/dist/rhf/time-picker.d.ts +2 -2
  329. package/dist/rhf/time-picker.js +2 -2
  330. package/dist/rhf/toggle-group.d.ts +2 -2
  331. package/dist/rhf/toggle-group.js +2 -2
  332. package/dist/{rhf-D8B7mLO1.js → rhf-t348TCCL.js} +1 -1
  333. package/dist/rhf.d.ts +87 -86
  334. package/dist/rhf.js +57 -46
  335. package/dist/{rich-text-editor-DvNEOIux.d.ts → rich-text-editor-Cp5dYHQI.d.ts} +1 -1
  336. package/dist/rich-text-editor.d.ts +1 -1
  337. package/dist/rich-text-editor.js +1 -1
  338. package/dist/{router.context-B0jTMtE0.js → router.context-B4FvsTim.js} +2 -2
  339. package/dist/{select-DY5QtwqI.d.ts → select-FjDx5oe4.d.ts} +2 -2
  340. package/dist/selectDesktop.cva-CHAMxhfO.js +69 -0
  341. package/dist/{slider-CrB-Gkcv.d.ts → slider-BVJiBswZ.d.ts} +1 -1
  342. package/dist/staticDateTimeSegments-BWea3HAt.js +1764 -0
  343. package/dist/{staticSelect.utils-Cm7MoDVG.js → staticSelect.utils-BfTCi26B.js} +34 -232
  344. package/dist/stepper.cva-CZ0Kj-s7.js +116 -0
  345. package/dist/style-merge.util-zLimKwt6.d.ts +40 -0
  346. package/dist/styles/app-canvas.css +832 -0
  347. package/dist/styles/color-utilities.css +13 -25
  348. package/dist/styles/configurator.css +3535 -0
  349. package/dist/styles/input.d.ts +1 -1
  350. package/dist/{switch-8WzXfTS8.d.ts → switch-C--iWnY8.d.ts} +1 -1
  351. package/dist/switch.cva-CWNzmdRc.d.ts +16 -0
  352. package/dist/table.cva-D5oQ-QvA.js +101 -0
  353. package/dist/tanstack/autocomplete.d.ts +1 -1
  354. package/dist/tanstack/checkbox-group.d.ts +1 -1
  355. package/dist/tanstack/checkbox.d.ts +1 -1
  356. package/dist/tanstack/checkbox.js +1 -1
  357. package/dist/tanstack/date-picker.d.ts +1 -1
  358. package/dist/tanstack/date-picker.js +1 -1
  359. package/dist/tanstack/date-range-picker.d.ts +1 -1
  360. package/dist/tanstack/date-range-picker.js +1 -1
  361. package/dist/tanstack/date-time-picker.d.ts +1 -1
  362. package/dist/tanstack/date-time-picker.js +1 -1
  363. package/dist/tanstack/file-input.d.ts +1 -1
  364. package/dist/tanstack/file-input.js +1 -1
  365. package/dist/tanstack/file-upload.d.ts +2 -2
  366. package/dist/tanstack/file-upload.js +1 -1
  367. package/dist/tanstack/form.d.ts +1 -1
  368. package/dist/tanstack/form.js +1 -1
  369. package/dist/tanstack/input.d.ts +1 -1
  370. package/dist/tanstack/inputs.d.ts +3 -3
  371. package/dist/tanstack/inputs.js +1 -1
  372. package/dist/tanstack/number-field.d.ts +1 -1
  373. package/dist/tanstack/number-range-input.d.ts +1 -1
  374. package/dist/tanstack/number-range-input.js +1 -1
  375. package/dist/tanstack/password-input.d.ts +1 -1
  376. package/dist/tanstack/query-select.d.ts +1 -1
  377. package/dist/tanstack/radio-group.d.ts +1 -1
  378. package/dist/tanstack/radio-group.js +1 -1
  379. package/dist/tanstack/rich-text-editor.d.ts +1 -1
  380. package/dist/tanstack/rich-text-editor.js +1 -1
  381. package/dist/tanstack/select.d.ts +1 -1
  382. package/dist/tanstack/select.js +1 -1
  383. package/dist/tanstack/slider.d.ts +1 -1
  384. package/dist/tanstack/slider.js +1 -1
  385. package/dist/tanstack/switch.d.ts +1 -1
  386. package/dist/tanstack/switch.js +1 -1
  387. package/dist/tanstack/table.d.ts +1 -1
  388. package/dist/tanstack/table.js +2 -1
  389. package/dist/tanstack/text-area.d.ts +1 -1
  390. package/dist/tanstack/text-area.js +1 -1
  391. package/dist/tanstack/time-picker.d.ts +1 -1
  392. package/dist/tanstack/time-picker.js +1 -1
  393. package/dist/tanstack/toggle-group.d.ts +2 -2
  394. package/dist/tanstack/toggle-group.js +1 -1
  395. package/dist/tanstack.d.ts +71 -70
  396. package/dist/tanstack.js +68 -55
  397. package/dist/{text-area-CqnKRWKq.d.ts → text-area-DhSVRB6X.d.ts} +1 -1
  398. package/dist/theme-model-DtTsIxou.js +408 -0
  399. package/dist/theme-model-T1zIdBg8.d.ts +12 -0
  400. package/dist/{time-picker-Cz1GIzpF.d.ts → time-picker-DhnDKh97.d.ts} +1 -1
  401. package/dist/{toast.cva-Cj6o2Rmu.d.ts → toast.cva-By5lvAfr.d.ts} +3 -2
  402. package/dist/toast.cva-C_L_RffH.js +163 -0
  403. package/dist/{toast.runtime-CIKvmkjo.js → toast.runtime-cxex9e4E.js} +2 -1
  404. package/dist/{toggle-group-CPkKHm1t.d.ts → toggle-group-C1nMDOwz.d.ts} +1 -1
  405. package/dist/toggleGroup.cva-MbpaEBg1.js +35 -0
  406. package/dist/{toggleGroup.types-DD6uRI5G.d.ts → toggleGroup.types-Bp43zbSQ.d.ts} +2 -1
  407. package/dist/tooltip.cva-BIzlOXHH.js +48 -0
  408. package/dist/{tooltipWrapper.cva-CUu8pI-a.js → tooltipWrapper.cva-BBQ4ic3D.js} +1 -1
  409. package/dist/{typography.cva-jtp6WWUH.d.ts → typography.cva-D1JOEYl-.d.ts} +2 -1
  410. package/dist/{typography.cva-CJZZSGXW.js → typography.cva-iD15k56p.js} +1 -1
  411. package/dist/{uiConfig.context-D2eUIPHn.js → uiConfig.context-BS3r_kTS.js} +1 -1
  412. package/dist/{uiConfig.context-aoarCLYX.d.ts → uiConfig.context-BqKWd_MO.d.ts} +8 -8
  413. package/dist/{uiOverrides.context-Bfm2n-n8.js → uiOverrides.context-BTCH9y5a.js} +2 -2
  414. package/dist/{uiOverrides.context-C3xb4Ttq.d.ts → uiOverrides.context-DEp139He.d.ts} +11 -44
  415. package/dist/underline-66hmELxa.js +81 -0
  416. package/dist/upload-CXU83BJ4.js +30 -0
  417. package/dist/{useBreakpoint-BOA-MyoT.js → useBreakpoint-DQoMN-BG.js} +1 -1
  418. package/dist/useControlledState-CzXkZCX8.js +30 -0
  419. package/dist/{useFieldAccessibility-D2_Qm26-.js → useFieldAccessibility-B-bjtrNw.js} +15 -8
  420. package/dist/{useFilters-kkEUFKmQ.js → useFilters-XNH27Md2.js} +1 -1
  421. package/dist/{useFormAutosave-BYFn3LH8.js → useFormAutosave-pmh35PXp.js} +2 -2
  422. package/dist/{useStaticInputHandoff-DB9PgioW.js → useStaticInputHandoff-B7DEm75m.js} +14 -11
  423. package/dist/useTableColumnConfig-6zn3zKl3.js +892 -0
  424. package/dist/{useTableNav-D9mICzNW.d.ts → useTableNav-Ckj5PBRk.d.ts} +3 -2
  425. package/dist/{useToast-DMSm59Y6.d.ts → useToast-yreVCUer.d.ts} +1 -1
  426. package/package.json +53 -6
  427. package/rulesync.jsonc +11 -0
  428. package/scripts/generate-rules.mjs +34 -0
  429. package/src/configurator/README.md +77 -0
  430. package/dist/Button-sn52l1Yv.js +0 -506
  431. package/dist/FocusScope-CO9oJ1sc.js +0 -343
  432. package/dist/FormFieldHeaderTooltip-Dl24v4_j.js +0 -45
  433. package/dist/Link-Btxj2gzg.js +0 -42
  434. package/dist/PillButton-DASBXLFB.d.ts +0 -15
  435. package/dist/Tag-Cch_68QO.d.ts +0 -43
  436. package/dist/chain-DIXr2VAT.js +0 -10
  437. package/dist/components/pill-button.d.ts +0 -2
  438. package/dist/focusSafely-DCGrr2bb.js +0 -447
  439. package/dist/getScrollParent-kSR7EtoT.js +0 -47
  440. package/dist/numberStatic.utils-BMgRzyd3.js +0 -902
  441. package/dist/openLink-CQhMhfzO.js +0 -121
  442. package/dist/pillButton.cva-BEWuu0qm.d.ts +0 -34
  443. package/dist/pillButton.cva-DlP5tOT5.js +0 -197
  444. package/dist/platform-BXNIIAfU.js +0 -42
  445. package/dist/staticDateTimeSegments-DR8bJw-F.js +0 -3605
  446. package/dist/switch.cva-8T0fw31t.d.ts +0 -15
  447. package/dist/useControlledState-DQxX6LMN.js +0 -189
  448. package/dist/useFocusable-Bd0UsrQ7.js +0 -63
  449. package/dist/useFormValidationState-D3z-gafz.js +0 -1341
  450. package/dist/useLayoutEffect-B2-1tbPJ.js +0 -83
  451. package/dist/useSyncRef-RGMv0rXK.js +0 -338
  452. package/dist/useTableColumnConfig-CcJxu14U.js +0 -1625
@@ -0,0 +1,3535 @@
1
+ .studio,
2
+ .studio-overlay {
3
+ font-family: "Inter Variable", Inter, sans-serif;
4
+ color: #242424;
5
+ font-size: 10px;
6
+ line-height: 1.5;
7
+ }
8
+ .studio {
9
+ min-height: 100vh;
10
+ background: #f6f6f6;
11
+ padding: 60px 24px;
12
+ }
13
+ .studio-landing {
14
+ max-width: 850px;
15
+ margin: auto;
16
+ }
17
+ .studio-brand,
18
+ .studio-title,
19
+ .studio-export-actions {
20
+ display: flex;
21
+ align-items: center;
22
+ gap: 12px;
23
+ }
24
+ .studio-logo {
25
+ display: inline-flex;
26
+ background: #373737;
27
+ color: #fff;
28
+ border-radius: 10px;
29
+ padding: 10px;
30
+ }
31
+ .studio-brand {
32
+ font-weight: 700;
33
+ font-size: 17px;
34
+ }
35
+ .studio-badge {
36
+ font-size: 9px;
37
+ font-weight: 600;
38
+ letter-spacing: 1.4px;
39
+ padding: 5px 9px;
40
+ border: 1px solid #dedede;
41
+ border-radius: 5px;
42
+ color: #747474;
43
+ }
44
+ .studio-landing h1 {
45
+ font-size: clamp(36px, 5vw, 58px);
46
+ line-height: 1.08;
47
+ letter-spacing: -2px;
48
+ margin: 35px 0 18px;
49
+ font-weight: 550;
50
+ }
51
+ .studio-landing > p {
52
+ color: #727272;
53
+ margin-bottom: 25px;
54
+ }
55
+ .studio-landing > small {
56
+ display: block;
57
+ margin: 15px 0 35px;
58
+ color: #818181;
59
+ }
60
+ .studio button,
61
+ .studio-overlay button {
62
+ cursor: pointer;
63
+ }
64
+ .studio-primary {
65
+ display: inline-flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ gap: 8px;
69
+ background: #393939 !important;
70
+ color: white !important;
71
+ border: 1px solid #393939 !important;
72
+ padding: 6px 10px;
73
+ border-radius: 5px;
74
+ font-size: 10px;
75
+ font-weight: 550;
76
+ }
77
+ /* Keep the application visible around the movable configurator window. */
78
+ .studio-overlay {
79
+ position: fixed;
80
+ inset: 0;
81
+ background: #14232240;
82
+ display: grid;
83
+ place-items: center;
84
+ padding: 8px;
85
+ z-index: 1000;
86
+ }
87
+ .studio-modal {
88
+ position: relative;
89
+ container-type: inline-size;
90
+ width: min(1440px, calc(100vw - 48px));
91
+ height: min(900px, calc(100dvh - 48px));
92
+ border-radius: 12px;
93
+ box-shadow: 0 25px 90px #12251f30;
94
+ background: #fff;
95
+ overflow: hidden;
96
+ }
97
+ /* With the components shown by the host (the App Canvas), the window is only the editor: narrow and one column. */
98
+ .studio-modal[data-components-hosted] {
99
+ width: min(360px, calc(100vw - 48px));
100
+ }
101
+ .studio-modal[data-components-hosted] .studio-dialog {
102
+ grid-template-columns: minmax(0, 1fr);
103
+ }
104
+ /*
105
+ * The editor column stacks the top bar, the editor and the footer; the preview fills the second column from top to
106
+ * bottom, like a design tool's canvas.
107
+ */
108
+ .studio-dialog {
109
+ display: grid;
110
+ grid-template-columns: var(--studio-editor-track, minmax(300px, 0.8fr)) minmax(320px, 1.25fr);
111
+ grid-template-rows: auto minmax(0, 1fr) auto;
112
+ height: 100%;
113
+ outline: none;
114
+ }
115
+ .studio-title h2 {
116
+ margin: 0;
117
+ font-size: 10px;
118
+ font-weight: 650;
119
+ letter-spacing: -0.3px;
120
+ }
121
+ /* Title, section tabs and global controls share one bar above the editor; the tabs take their own row. */
122
+ .studio-topbar {
123
+ grid-column: 1;
124
+ grid-row: 1;
125
+ display: flex;
126
+ flex-wrap: wrap;
127
+ align-items: center;
128
+ gap: 4px 12px;
129
+ padding: 8px 12px 4px;
130
+ background: #fbfbfb;
131
+ border-bottom: 1px solid #eaeaea;
132
+ min-width: 0;
133
+ }
134
+ .studio-topbar .studio-title {
135
+ gap: 9px;
136
+ flex-shrink: 0;
137
+ }
138
+ .studio-topbar .studio-nav {
139
+ order: 1;
140
+ flex-basis: 100%;
141
+ margin-inline: -4px;
142
+ }
143
+ .studio-topbar .studio-title h2 {
144
+ white-space: nowrap;
145
+ }
146
+ /* Controls share the title's row and only wrap below it once even their narrowest layout no longer fits. */
147
+ .studio-topbar-controls {
148
+ display: flex;
149
+ flex: 1 1 min-content;
150
+ justify-content: flex-end;
151
+ align-items: center;
152
+ gap: 8px;
153
+ margin-left: auto;
154
+ min-width: 0;
155
+ }
156
+ /* Search rests as a magnifier beside the window controls and expands over the title row while in use. */
157
+ .studio-topbar .studio-search {
158
+ position: relative;
159
+ flex: 0 0 auto;
160
+ justify-content: center;
161
+ width: 24px;
162
+ height: 24px;
163
+ margin: 0;
164
+ padding: 0;
165
+ border-color: transparent;
166
+ background: transparent;
167
+ color: #707070;
168
+ cursor: pointer;
169
+ }
170
+ .studio-topbar .studio-search:hover {
171
+ background: #f0f0f0;
172
+ }
173
+ .studio-topbar .studio-search input {
174
+ position: absolute;
175
+ width: 1px;
176
+ opacity: 0;
177
+ }
178
+ .studio-topbar .studio-search:is(:focus-within, :has(input:not(:placeholder-shown))) {
179
+ flex: 1 1 auto;
180
+ justify-content: flex-start;
181
+ width: auto;
182
+ padding: 0 4px 0 8px;
183
+ border-color: #d9d9d9;
184
+ background: #fff;
185
+ cursor: text;
186
+ }
187
+ .studio-topbar .studio-search:is(:focus-within, :has(input:not(:placeholder-shown))) input {
188
+ position: static;
189
+ flex: 1;
190
+ width: auto;
191
+ opacity: 1;
192
+ }
193
+ .studio-topbar:has(.studio-search:is(:focus-within, :has(input:not(:placeholder-shown)))) .studio-title {
194
+ display: none;
195
+ }
196
+ .studio-topbar .studio-search:has(input:disabled) {
197
+ opacity: 0.4;
198
+ cursor: default;
199
+ }
200
+ .studio-search-clear {
201
+ display: grid;
202
+ place-items: center;
203
+ width: 18px;
204
+ height: 18px;
205
+ flex-shrink: 0;
206
+ padding: 0;
207
+ border: 0;
208
+ border-radius: 4px;
209
+ background: transparent;
210
+ color: #8e8e8e;
211
+ }
212
+ .studio-search-clear:hover {
213
+ background: #f0f0f0;
214
+ }
215
+ /* The header is the window's drag handle wherever it has no control of its own. */
216
+ .studio-modal:not(.studio-modal-popout) .studio-topbar {
217
+ cursor: grab;
218
+ user-select: none;
219
+ }
220
+ .studio-modal:not(.studio-modal-popout) .studio-topbar:active {
221
+ cursor: grabbing;
222
+ }
223
+ .studio-topbar :is(button, input, label) {
224
+ cursor: pointer;
225
+ }
226
+ .studio-topbar input {
227
+ cursor: text;
228
+ }
229
+ @container (max-width: 800px) {
230
+ .studio-topbar-controls {
231
+ flex-wrap: wrap;
232
+ margin-left: 0;
233
+ flex-shrink: 1;
234
+ }
235
+
236
+ .studio-topbar .studio-title {
237
+ flex: 1;
238
+ }
239
+ }
240
+ /* The body only groups the panels in markup; they are placed on the dialog's grid. */
241
+ .studio-body {
242
+ display: contents;
243
+ }
244
+ .studio-body > .studio-editor {
245
+ grid-column: 1;
246
+ grid-row: 2;
247
+ }
248
+ .studio-body > .studio-preview {
249
+ grid-column: 2;
250
+ grid-row: 1 / -1;
251
+ }
252
+ /* Dividers overlap the start of their grid column and show a line and grip on hover. */
253
+ .studio-resize-handle {
254
+ grid-row: 1 / -1;
255
+ justify-self: start;
256
+ position: relative;
257
+ z-index: 2;
258
+ width: 10px;
259
+ margin-left: -5px;
260
+ cursor: col-resize;
261
+ touch-action: none;
262
+ outline: none;
263
+ }
264
+ .studio-resize-handle::before {
265
+ content: "";
266
+ position: absolute;
267
+ inset: 0 4px;
268
+ background: #393939;
269
+ opacity: 0;
270
+ transition: opacity 120ms;
271
+ }
272
+ .studio-resize-handle::after {
273
+ content: "";
274
+ position: absolute;
275
+ top: 50%;
276
+ left: 50%;
277
+ width: 6px;
278
+ height: 32px;
279
+ translate: -50% -50%;
280
+ border-radius: 3px;
281
+ background: #393939;
282
+ opacity: 0;
283
+ transition: opacity 120ms;
284
+ }
285
+ .studio-resize-handle:is(:hover, :active, :focus-visible)::before,
286
+ .studio-resize-handle:is(:hover, :active, :focus-visible)::after {
287
+ opacity: 1;
288
+ }
289
+ .studio-nav {
290
+ display: flex;
291
+ align-items: center;
292
+ gap: 2px;
293
+ min-width: 0;
294
+ overflow-x: auto;
295
+ scrollbar-width: none;
296
+ }
297
+ .studio-section-tabs {
298
+ display: flex;
299
+ flex: 1;
300
+ align-items: center;
301
+ gap: 2px;
302
+ min-width: 0;
303
+ overflow-x: auto;
304
+ scrollbar-width: none;
305
+ }
306
+ .studio-nav .studio-preview-tab {
307
+ display: none;
308
+ }
309
+ .studio-nav-divider {
310
+ flex-shrink: 0;
311
+ width: 1px;
312
+ height: 14px;
313
+ margin: 0 4px;
314
+ background: #e5e5e5;
315
+ }
316
+ .studio-nav button {
317
+ display: flex;
318
+ flex-shrink: 0;
319
+ align-items: center;
320
+ gap: 6px;
321
+ white-space: nowrap;
322
+ padding: 4px 8px;
323
+ color: #707070;
324
+ background: transparent;
325
+ border: 0;
326
+ border-radius: 5px;
327
+ font-size: 10px;
328
+ }
329
+ .studio-nav button[aria-current] {
330
+ background: #eeeeee;
331
+ color: #464646;
332
+ font-weight: 600;
333
+ }
334
+ .studio-editor {
335
+ --studio-editor-pad: 12px;
336
+ padding: var(--studio-editor-pad);
337
+ padding-top: 8px;
338
+ overflow: auto;
339
+ min-width: 0;
340
+ }
341
+ .studio-subtabs-bar {
342
+ display: flex;
343
+ align-items: center;
344
+ gap: 12px;
345
+ margin-bottom: 8px;
346
+ border-bottom: 1px solid #eaeaea;
347
+ }
348
+ .studio-subtabs-bar .studio-toggle-all {
349
+ margin-left: auto;
350
+ margin-bottom: 2px;
351
+ }
352
+ .studio-subtabs {
353
+ display: flex;
354
+ flex: 1;
355
+ gap: 12px;
356
+ min-width: 0;
357
+ overflow-x: auto;
358
+ scrollbar-width: none;
359
+ }
360
+ .studio-subtabs button {
361
+ display: flex;
362
+ flex-shrink: 0;
363
+ align-items: center;
364
+ gap: 6px;
365
+ padding: 0 0 6px;
366
+ margin-bottom: -1px;
367
+ border: 0;
368
+ border-bottom: 2px solid transparent;
369
+ background: transparent;
370
+ color: #707070;
371
+ font-size: 10px;
372
+ white-space: nowrap;
373
+ }
374
+ .studio-subtabs button[aria-selected="true"] {
375
+ border-bottom-color: #393939;
376
+ color: #464646;
377
+ font-weight: 600;
378
+ }
379
+ .studio-subtabs button:disabled {
380
+ opacity: 0.5;
381
+ }
382
+ .studio-editor-heading {
383
+ display: flex;
384
+ align-items: center;
385
+ justify-content: space-between;
386
+ gap: 12px;
387
+ margin-bottom: 10px;
388
+ }
389
+ .studio-editor-heading h2 {
390
+ font-size: 10px;
391
+ font-weight: 550;
392
+ letter-spacing: -0.6px;
393
+ margin: 0;
394
+ }
395
+ .studio-mode {
396
+ display: inline-flex;
397
+ border: 1px solid #e5e5e5;
398
+ background: #f7f7f7;
399
+ border-radius: 6px;
400
+ padding: 2px;
401
+ gap: 2px;
402
+ }
403
+ .studio-mode button {
404
+ display: flex;
405
+ align-items: center;
406
+ justify-content: center;
407
+ gap: 6px;
408
+ border: 0;
409
+ border-radius: 4px;
410
+ padding: 3px 8px;
411
+ font-size: 10px;
412
+ background: transparent;
413
+ color: #8e8e8e;
414
+ text-transform: capitalize;
415
+ }
416
+ .studio-mode button[aria-pressed="true"] {
417
+ background: white;
418
+ box-shadow: 0 1px 3px #37373717;
419
+ color: #454545;
420
+ }
421
+ .studio-search {
422
+ display: flex;
423
+ align-items: center;
424
+ gap: 8px;
425
+ padding: 4px 8px;
426
+ border: 1px solid #e5e5e5;
427
+ border-radius: 6px;
428
+ margin: 12px 0 8px;
429
+ color: #9f9f9f;
430
+ }
431
+ .studio-search input {
432
+ width: 100%;
433
+ outline: none;
434
+ border: 0;
435
+ background: transparent;
436
+ color: #414141;
437
+ font-size: 10px;
438
+ }
439
+ .studio-token {
440
+ padding: 4px 0;
441
+ border-bottom: 1px solid #efefef;
442
+ }
443
+ .studio-token label {
444
+ display: block;
445
+ margin-bottom: 5px;
446
+ }
447
+ .studio-token label > span {
448
+ display: block;
449
+ font-size: 10px;
450
+ font-weight: 550;
451
+ text-transform: capitalize;
452
+ }
453
+ .studio-token.is-changed label > span::after {
454
+ content: " •";
455
+ color: #727272;
456
+ }
457
+ .studio-token-value {
458
+ display: flex;
459
+ align-items: center;
460
+ gap: 8px;
461
+ }
462
+ .studio-token-value input:not([type="color"]) {
463
+ border: 1px solid #e6e6e6;
464
+ border-radius: 5px;
465
+ height: 24px;
466
+ padding: 2px 7px;
467
+ line-height: 18px;
468
+ font-family: inherit;
469
+ font-variant-numeric: tabular-nums;
470
+ font-size: 10px;
471
+ color: #6a6a6a;
472
+ min-width: 0;
473
+ width: 100%;
474
+ background: #fff;
475
+ }
476
+ .studio-token-value input[type="color"] {
477
+ width: 24px;
478
+ height: 24px;
479
+ border: 1px solid #e6e6e6;
480
+ border-radius: 5px;
481
+ padding: 2px;
482
+ flex-shrink: 0;
483
+ background: white;
484
+ }
485
+ .studio-palette-swatch {
486
+ width: 18px;
487
+ height: 18px;
488
+ flex-shrink: 0;
489
+ border: 1px solid #dadada;
490
+ border-radius: 3px;
491
+ }
492
+ /* Base palette picker for semantic colors: a swatch trigger and a grouped swatch list. */
493
+ .studio-palette-picker {
494
+ display: flex;
495
+ flex: 1;
496
+ min-width: 0;
497
+ }
498
+ .studio-palette-picker.is-custom {
499
+ flex: none;
500
+ }
501
+ .studio-token-value .studio-palette-trigger {
502
+ display: flex;
503
+ flex: 1;
504
+ align-items: center;
505
+ gap: 7px;
506
+ width: auto;
507
+ min-width: 0;
508
+ height: auto;
509
+ min-height: 24px;
510
+ padding: 0 7px;
511
+ border: 0;
512
+ background: transparent;
513
+ color: #414141;
514
+ font: inherit;
515
+ font-size: 10px;
516
+ text-align: left;
517
+ text-transform: capitalize;
518
+ cursor: pointer;
519
+ }
520
+ .studio-token-value .studio-palette-trigger:hover {
521
+ background: #f7f7f7;
522
+ }
523
+ .studio-palette-trigger > svg {
524
+ flex-shrink: 0;
525
+ margin-left: auto;
526
+ color: #939393;
527
+ }
528
+ .studio-palette-trigger-label {
529
+ overflow: hidden;
530
+ text-overflow: ellipsis;
531
+ white-space: nowrap;
532
+ }
533
+ .studio-palette-popover {
534
+ z-index: 1002;
535
+ display: flex;
536
+ width: 220px;
537
+ border: 1px solid #e5e5e5;
538
+ border-radius: 10px;
539
+ background: #fff;
540
+ box-shadow: 0 12px 40px #21212126;
541
+ font-family: "Inter Variable", Inter, sans-serif;
542
+ font-size: 10px;
543
+ color: #242424;
544
+ }
545
+ /* The list scrolls itself so opening it can bring the selected color into view. */
546
+ .studio-palette-list {
547
+ position: relative;
548
+ flex: 1;
549
+ max-height: min(420px, calc(var(--visual-viewport-height, 100vh) - 80px));
550
+ overflow: auto;
551
+ padding: 6px;
552
+ outline: none;
553
+ }
554
+ .studio-palette-list header {
555
+ padding: 10px 8px 5px;
556
+ color: #717171;
557
+ font-size: 10px;
558
+ font-weight: 600;
559
+ text-transform: capitalize;
560
+ }
561
+ .studio-palette-list section:first-child header {
562
+ padding-top: 4px;
563
+ }
564
+ .studio-palette-item {
565
+ display: flex;
566
+ align-items: center;
567
+ gap: 9px;
568
+ padding: 5px 8px;
569
+ border-radius: 6px;
570
+ outline: none;
571
+ cursor: pointer;
572
+ }
573
+ .studio-palette-item[data-focused],
574
+ .studio-palette-item[data-hovered] {
575
+ background: #f3f3f3;
576
+ }
577
+ .studio-palette-item[data-selected] {
578
+ background: #eeeeee;
579
+ color: #464646;
580
+ font-weight: 600;
581
+ }
582
+ .studio-palette-item code {
583
+ margin-left: auto;
584
+ color: #939393;
585
+ font-size: 10px;
586
+ }
587
+ .studio-palette-item.is-custom {
588
+ margin-top: 4px;
589
+ border-top: 1px solid #f0f0f0;
590
+ border-radius: 0 0 6px 6px;
591
+ color: #717171;
592
+ }
593
+ .studio-token-value button {
594
+ display: grid;
595
+ place-items: center;
596
+ width: 24px;
597
+ height: 24px;
598
+ flex-shrink: 0;
599
+ border: 0;
600
+ background: transparent;
601
+ padding: 4px;
602
+ color: #757575;
603
+ }
604
+ /* Configurator chrome only: the preview (.studio-sample) shows components with their own disabled and focus styles. */
605
+ .studio-overlay button:disabled:where(:not(.studio-sample *)) {
606
+ opacity: 0.35;
607
+ cursor: default;
608
+ }
609
+ .studio-overlay :is(input, select, textarea, button):focus-visible:where(:not(.studio-sample *)) {
610
+ outline: 2px solid #797979;
611
+ outline-offset: 3px;
612
+ }
613
+ .studio-token-value input[aria-invalid="true"] {
614
+ border-color: #c34839;
615
+ }
616
+ .studio-error {
617
+ color: #b8362c;
618
+ display: block;
619
+ margin-top: 4px;
620
+ font-size: 10px;
621
+ }
622
+ .studio-preview {
623
+ background: #f7f7f7;
624
+ border-left: 1px solid #eaeaea;
625
+ padding: 12px;
626
+ overflow: auto;
627
+ min-width: 0;
628
+ }
629
+ .studio-preview-heading {
630
+ display: flex;
631
+ justify-content: space-between;
632
+ align-items: center;
633
+ margin-bottom: 16px;
634
+ }
635
+ .studio-preview-actions {
636
+ display: flex;
637
+ flex-wrap: wrap;
638
+ justify-content: flex-end;
639
+ align-items: center;
640
+ gap: 8px;
641
+ }
642
+ .studio-preview-heading > span {
643
+ font-size: 10px;
644
+ font-weight: 600;
645
+ letter-spacing: 1.1px;
646
+ color: #8d8d8d;
647
+ }
648
+ .studio-preview-heading i {
649
+ display: inline-block;
650
+ height: 5px;
651
+ width: 5px;
652
+ border-radius: 50%;
653
+ background: #8c8c8c;
654
+ margin-right: 5px;
655
+ }
656
+ /* Shares the color mode switch's segmented style, so the preview header controls match. */
657
+ .studio-preview-modes {
658
+ flex-shrink: 0;
659
+ }
660
+ .studio-preview-modes button {
661
+ cursor: pointer;
662
+ text-transform: none;
663
+ }
664
+ .studio-preview-modes button:focus-visible {
665
+ outline: 2px solid #797979;
666
+ outline-offset: 2px;
667
+ }
668
+ .studio-preview-note {
669
+ text-align: center;
670
+ color: #a7a7a7;
671
+ font-size: 10px;
672
+ line-height: 1.7;
673
+ margin-top: 20px;
674
+ }
675
+ .studio-sample {
676
+ padding: 16px;
677
+ border-radius: 10px;
678
+ background: rgb(var(--surface-default-background-base));
679
+ color: rgb(var(--surface-default-card-foreground-base));
680
+ font-family: var(--font-body);
681
+ }
682
+ .studio-footer {
683
+ grid-column: 1;
684
+ grid-row: 3;
685
+ display: flex;
686
+ align-items: center;
687
+ gap: 4px;
688
+ padding: 6px 8px;
689
+ border-top: 1px solid #eaeaea;
690
+ flex-shrink: 0;
691
+ }
692
+ .studio-footer > button:not(.studio-primary),
693
+ .studio-export-actions button {
694
+ display: flex;
695
+ align-items: center;
696
+ justify-content: center;
697
+ gap: 7px;
698
+ color: #717171;
699
+ border: 1px solid #e7e7e7;
700
+ border-radius: 6px;
701
+ padding: 6px 10px;
702
+ background: white;
703
+ font-size: 10px;
704
+ }
705
+ .studio-footer > span {
706
+ flex: 1;
707
+ min-width: 0;
708
+ padding-inline: 4px;
709
+ overflow: hidden;
710
+ color: #929292;
711
+ font-size: 10px;
712
+ text-overflow: ellipsis;
713
+ white-space: nowrap;
714
+ }
715
+ .studio-footer > button {
716
+ height: 24px;
717
+ flex-shrink: 0;
718
+ white-space: nowrap;
719
+ }
720
+ .studio-footer > .studio-primary {
721
+ gap: 4px;
722
+ padding: 0 10px;
723
+ }
724
+ .studio-footer > button:not(.studio-primary) {
725
+ padding: 0 8px;
726
+ }
727
+ .studio-footer > button.studio-footer-reset {
728
+ width: 24px;
729
+ padding: 0;
730
+ }
731
+ /* Confirmation dialogs sit above the full-page configurator. */
732
+ .studio-overlay.studio-confirm-overlay {
733
+ z-index: 1001;
734
+ display: grid;
735
+ place-items: center;
736
+ padding: 16px;
737
+ background: #20202066;
738
+ }
739
+ .studio-confirm {
740
+ width: min(420px, 100%);
741
+ background: #fff;
742
+ border-radius: 12px;
743
+ box-shadow: 0 25px 90px #21212140;
744
+ }
745
+ .studio-confirm-dialog {
746
+ padding: 16px;
747
+ outline: none;
748
+ }
749
+ .studio-confirm-dialog h2 {
750
+ margin: 0 0 8px;
751
+ font-size: 10px;
752
+ font-weight: 650;
753
+ }
754
+ .studio-confirm-dialog p {
755
+ margin: 0;
756
+ color: #717171;
757
+ font-size: 10px;
758
+ }
759
+ .studio-confirm-actions {
760
+ display: flex;
761
+ justify-content: flex-end;
762
+ gap: 8px;
763
+ margin-top: 20px;
764
+ }
765
+ .studio-confirm-actions > button:not(.studio-danger) {
766
+ padding: 6px 10px;
767
+ border: 1px solid #e7e7e7;
768
+ border-radius: 6px;
769
+ background: #fff;
770
+ color: #717171;
771
+ font-size: 10px;
772
+ }
773
+ .studio-confirm-actions > button.studio-danger {
774
+ display: flex;
775
+ align-items: center;
776
+ gap: 7px;
777
+ padding: 6px 10px;
778
+ border: 1px solid #b8362c;
779
+ border-radius: 6px;
780
+ background: #b8362c;
781
+ color: #fff;
782
+ font-size: 10px;
783
+ }
784
+ .studio-settings h3 {
785
+ font-size: 10px;
786
+ font-weight: 650;
787
+ margin: 18px 0 6px;
788
+ }
789
+ .studio-setting {
790
+ display: flex;
791
+ justify-content: space-between;
792
+ align-items: center;
793
+ gap: 10px;
794
+ padding: 6px 0;
795
+ border-bottom: 1px solid #efefef;
796
+ font-size: 10px;
797
+ }
798
+ .studio-setting select {
799
+ background: white;
800
+ border: 1px solid #e2e2e2;
801
+ border-radius: 5px;
802
+ padding: 4px 6px;
803
+ color: #676767;
804
+ }
805
+ .studio-setting input {
806
+ accent-color: #525252;
807
+ }
808
+ .studio-setting small {
809
+ display: block;
810
+ color: #9e9e9e;
811
+ font-size: 10px;
812
+ margin-top: 4px;
813
+ }
814
+ .studio-help,
815
+ .studio-export > p {
816
+ color: #929292;
817
+ font-size: 10px;
818
+ line-height: 1.7;
819
+ margin-top: 20px;
820
+ }
821
+ .studio-export textarea {
822
+ background: #f8f8f8;
823
+ border: 1px solid #e5e5e5;
824
+ border-radius: 7px;
825
+ font-size: 10px;
826
+ font-family: monospace;
827
+ padding: 15px;
828
+ width: 100%;
829
+ height: 320px;
830
+ resize: vertical;
831
+ color: #4e4e4e;
832
+ margin: 18px 0;
833
+ }
834
+ @container (max-width: 1050px) {
835
+ .studio-dialog {
836
+ grid-template-columns: var(--studio-editor-track, minmax(260px, 0.8fr)) minmax(280px, 1.25fr);
837
+ }
838
+ .studio-editor {
839
+ --studio-editor-pad: 12px;
840
+ }
841
+ .studio-preview {
842
+ padding: 12px;
843
+ }
844
+ .studio-sample {
845
+ padding: 8px;
846
+ }
847
+ }
848
+ @container (max-width: 800px) {
849
+ /* One scrolling column: top bar, editor, preview, then the footer pinned to the bottom. */
850
+ .studio-dialog {
851
+ display: flex;
852
+ flex-direction: column;
853
+ overflow: auto;
854
+ }
855
+ .studio-footer {
856
+ position: sticky;
857
+ bottom: 0;
858
+ z-index: 3;
859
+ /* Short tabs leave the footer at the window's bottom edge instead of under their last row. */
860
+ margin-top: auto;
861
+ background: #fff;
862
+ }
863
+ .studio-resize-handle {
864
+ display: none;
865
+ }
866
+ .studio-editor,
867
+ .studio-preview {
868
+ overflow: visible;
869
+ flex-shrink: 0;
870
+ }
871
+ .studio-preview {
872
+ border-top: 1px solid #eaeaea;
873
+ }
874
+ }
875
+
876
+ .studio-token-group {
877
+ min-width: 0;
878
+ margin: 10px 0 0;
879
+ padding: 8px 10px 10px;
880
+ border: 1px solid #e6e6e6;
881
+ border-radius: 8px;
882
+ }
883
+ .studio-token-group legend {
884
+ padding: 0 6px;
885
+ font-size: 10px;
886
+ font-weight: 600;
887
+ text-transform: capitalize;
888
+ color: #434343;
889
+ }
890
+ /* Typography keeps its compact three-field styles but shares the table's group header rows. */
891
+ :is(.studio-token-list-inline, .studio-token-list-rows) {
892
+ --studio-cell-line: #eaeaea;
893
+ }
894
+ /* Section titles are header rows of one continuous table rather than separately bordered boxes. */
895
+ :is(.studio-token-list-rows, .studio-token-list-inline) .studio-token-group {
896
+ margin: 0 calc(-1 * var(--studio-editor-pad));
897
+ padding: 0;
898
+ border: 0;
899
+ border-radius: 0;
900
+ }
901
+ :is(.studio-token-list-rows, .studio-token-list-inline) .studio-token-group legend {
902
+ float: left;
903
+ display: flex;
904
+ align-items: center;
905
+ width: 100%;
906
+ box-sizing: border-box;
907
+ margin: 0;
908
+ padding: 0 var(--studio-editor-pad) 0 0;
909
+ background: #f7f7f7;
910
+ border-bottom: 1px solid var(--studio-cell-line);
911
+ }
912
+ /* The whole header row toggles its group, not only the title text. */
913
+ :is(.studio-token-list-rows, .studio-token-list-inline) .studio-token-group .studio-group-toggle {
914
+ flex: 1;
915
+ align-self: stretch;
916
+ min-width: 0;
917
+ padding: 6px 0 6px var(--studio-editor-pad);
918
+ text-align: left;
919
+ }
920
+ :is(.studio-token-list-rows, .studio-token-list-inline) .studio-token-group:first-child legend {
921
+ border-top: 1px solid var(--studio-cell-line);
922
+ }
923
+ :is(.studio-token-list-rows, .studio-token-list-inline) .studio-token-group > div {
924
+ clear: both;
925
+ }
926
+ .studio-token-list-inline .studio-token-group .studio-token {
927
+ padding-inline: var(--studio-editor-pad);
928
+ }
929
+ .studio-token-group > div > .studio-token:last-child {
930
+ border-bottom: 0;
931
+ padding-bottom: 0;
932
+ }
933
+ .studio-type-fields {
934
+ display: grid;
935
+ grid-template-columns: repeat(3, minmax(0, 1fr));
936
+ gap: 8px;
937
+ }
938
+ .studio-type-fields .studio-token {
939
+ min-width: 0;
940
+ padding: 0;
941
+ border: 0;
942
+ }
943
+ .studio-type-fields .studio-token label > span {
944
+ font-size: 10px;
945
+ white-space: nowrap;
946
+ text-transform: none;
947
+ margin-bottom: 0;
948
+ }
949
+ .studio-type-fields .studio-token-value {
950
+ position: relative;
951
+ gap: 0;
952
+ }
953
+ .studio-type-fields .studio-token-value input:not([type="color"]) {
954
+ padding-right: 27px;
955
+ }
956
+ .studio-type-fields .studio-token-value button {
957
+ position: absolute;
958
+ right: 1px;
959
+ padding: 5px;
960
+ }
961
+ @container (min-width: 801px) and (max-width: 1100px) {
962
+ .studio-type-fields {
963
+ grid-template-columns: 1fr;
964
+ }
965
+ }
966
+ @container (max-width: 420px) {
967
+ .studio-type-fields {
968
+ gap: 6px;
969
+ }
970
+ .studio-type-fields .studio-token-value input:not([type="color"]) {
971
+ padding-left: 6px;
972
+ font-size: 10px;
973
+ }
974
+ }
975
+
976
+ .studio-color-mode {
977
+ flex-shrink: 0;
978
+ }
979
+ .studio-color-mode button {
980
+ cursor: pointer;
981
+ }
982
+ .studio-color-mode button:focus-visible {
983
+ outline: 2px solid #797979;
984
+ outline-offset: 2px;
985
+ }
986
+ .studio-token-list-inline .studio-token {
987
+ display: grid;
988
+ grid-template-columns: minmax(0, 1fr) minmax(170px, 46%);
989
+ align-items: center;
990
+ gap: 6px 14px;
991
+ }
992
+ .studio-token-list-inline .studio-token label {
993
+ margin: 0;
994
+ overflow-wrap: anywhere;
995
+ }
996
+ .studio-token-list-inline .studio-token-value {
997
+ min-width: 0;
998
+ }
999
+ .studio-token-list-inline .studio-error {
1000
+ grid-column: 2;
1001
+ margin: 0;
1002
+ }
1003
+ @container (max-width: 420px) {
1004
+ .studio-token-list-inline .studio-token {
1005
+ grid-template-columns: minmax(0, 1fr) minmax(165px, 50%);
1006
+ gap: 6px 10px;
1007
+ }
1008
+ }
1009
+ /*
1010
+ * Inside a group the rows share one label column sized to its longest name, so short names such as palette steps
1011
+ * leave the width to the values; long names keep one line while the values keep the 168px their controls need.
1012
+ */
1013
+ .studio-token-list-inline .studio-token-group > div {
1014
+ display: grid;
1015
+ grid-template-columns: fit-content(calc(100% - 168px)) minmax(168px, 1fr);
1016
+ }
1017
+ .studio-token-list-inline .studio-token-group > div > * {
1018
+ grid-column: 1 / -1;
1019
+ }
1020
+ .studio-token-list-inline .studio-token-group > div > .studio-token {
1021
+ grid-template-columns: subgrid;
1022
+ column-gap: 0;
1023
+ }
1024
+ .studio-token-list-inline .studio-token-group > div > .studio-token label {
1025
+ padding-right: 16px;
1026
+ }
1027
+
1028
+ /* A compact select that shows only a chevron; its text is hidden so the placeholder never shows. */
1029
+ .studio-size-presets {
1030
+ appearance: none;
1031
+ width: 20px;
1032
+ height: 24px;
1033
+ flex-shrink: 0;
1034
+ padding: 0;
1035
+ border: 1px solid #e6e6e6;
1036
+ border-radius: 4px;
1037
+ background: #fff
1038
+ url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236a6a6a' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")
1039
+ center / 12px no-repeat;
1040
+ color: transparent;
1041
+ font-size: 10px;
1042
+ cursor: pointer;
1043
+ }
1044
+ .studio-size-presets:hover {
1045
+ border-color: #d4d4d4;
1046
+ background-color: #f7f7f7;
1047
+ }
1048
+ .studio-size-presets :is(option, optgroup) {
1049
+ color: #393939;
1050
+ }
1051
+ .studio-token-value:has(.studio-size-presets) {
1052
+ gap: 3px;
1053
+ }
1054
+ .studio-type-fields .studio-token-value:has(.studio-size-presets) input {
1055
+ padding-right: 5px;
1056
+ }
1057
+ .studio-type-fields .studio-token-value:has(.studio-size-presets) button {
1058
+ position: static;
1059
+ width: 20px;
1060
+ }
1061
+
1062
+ .studio-token-input {
1063
+ position: relative;
1064
+ display: flex;
1065
+ flex: 1;
1066
+ min-width: 0;
1067
+ }
1068
+ .studio-token-unit {
1069
+ position: absolute;
1070
+ right: 4px;
1071
+ top: 50%;
1072
+ transform: translateY(-50%);
1073
+ color: #939393;
1074
+ font-size: 10px;
1075
+ font-variant-numeric: tabular-nums;
1076
+ pointer-events: none;
1077
+ }
1078
+ .studio-token-value .studio-token-input:has(.studio-token-unit) input {
1079
+ padding-right: 32px;
1080
+ }
1081
+ /* Compact text-style fields keep their reset button inside the input, so the unit sits to its left. */
1082
+ .studio-type-fields .studio-token-value:not(:has(.studio-size-presets)) .studio-token-unit {
1083
+ right: 29px;
1084
+ }
1085
+ .studio-type-fields
1086
+ .studio-token-value:not(:has(.studio-size-presets))
1087
+ .studio-token-input:has(.studio-token-unit)
1088
+ input {
1089
+ padding-right: 52px;
1090
+ }
1091
+
1092
+ .studio-group-toggle {
1093
+ display: inline-flex;
1094
+ align-items: center;
1095
+ gap: 4px;
1096
+ padding: 0;
1097
+ border: 0;
1098
+ background: transparent;
1099
+ color: inherit;
1100
+ font: inherit;
1101
+ text-transform: inherit;
1102
+ cursor: pointer;
1103
+ }
1104
+ .studio-group-toggle svg {
1105
+ color: #929292;
1106
+ transition: transform 0.15s ease;
1107
+ }
1108
+ .studio-group-toggle[aria-expanded="true"] svg {
1109
+ transform: rotate(90deg);
1110
+ }
1111
+ .studio-group-toggle:focus-visible {
1112
+ outline: 2px solid #797979;
1113
+ outline-offset: 2px;
1114
+ border-radius: 3px;
1115
+ }
1116
+ .studio-group-changed {
1117
+ width: 5px;
1118
+ height: 5px;
1119
+ border-radius: 50%;
1120
+ background: #727272;
1121
+ margin-left: 2px;
1122
+ }
1123
+ .studio-token-group.is-collapsed {
1124
+ padding-bottom: 0;
1125
+ }
1126
+
1127
+ /* A text-only action, so the section heading stays one compact line. */
1128
+ .studio-toggle-all {
1129
+ display: inline-flex;
1130
+ align-items: center;
1131
+ gap: 4px;
1132
+ flex-shrink: 0;
1133
+ padding: 2px 0;
1134
+ border: 0;
1135
+ border-radius: 4px;
1136
+ background: transparent;
1137
+ color: #6a6a6a;
1138
+ font-size: 10px;
1139
+ line-height: 1;
1140
+ cursor: pointer;
1141
+ }
1142
+ .studio-toggle-all:hover:not(:disabled) {
1143
+ color: #393939;
1144
+ text-decoration: underline;
1145
+ text-underline-offset: 2px;
1146
+ }
1147
+ .studio-toggle-all:disabled {
1148
+ opacity: 0.5;
1149
+ cursor: default;
1150
+ }
1151
+ .studio-toggle-all:focus-visible {
1152
+ outline: 2px solid #797979;
1153
+ outline-offset: 2px;
1154
+ }
1155
+ .studio-token-list:not(.studio-token-list-inline, .studio-token-list-rows) .studio-token-group.is-collapsed {
1156
+ border-inline: 0;
1157
+ border-bottom: 0;
1158
+ border-radius: 0;
1159
+ padding-inline: 0;
1160
+ }
1161
+
1162
+ /* Table rows: label | value (+ swatch/unit) | presets | reset, divided by shared hairlines. */
1163
+ .studio-token-list-inline .studio-token-group .studio-token {
1164
+ align-items: stretch;
1165
+ gap: 0;
1166
+ padding-block: 0;
1167
+ padding-right: 0;
1168
+ min-height: 28px;
1169
+ border-bottom-color: var(--studio-cell-line);
1170
+ }
1171
+ .studio-token-list-inline .studio-token-group .studio-token:hover {
1172
+ background: #fbfbfb;
1173
+ }
1174
+ .studio-token-list-inline .studio-token-group > div > .studio-token:last-child {
1175
+ border-bottom: 1px solid var(--studio-cell-line);
1176
+ }
1177
+ .studio-token-list-inline .studio-token-group .studio-token label {
1178
+ display: flex;
1179
+ align-items: center;
1180
+ padding: 4px 8px 4px 0;
1181
+ }
1182
+ .studio-token-list-inline .studio-token-group .studio-token-value {
1183
+ gap: 0;
1184
+ align-items: stretch;
1185
+ border-left: 1px solid var(--studio-cell-line);
1186
+ }
1187
+ .studio-token-list-inline .studio-token-group .studio-token-value > * + * {
1188
+ border-left: 1px solid var(--studio-cell-line);
1189
+ }
1190
+ .studio-token-list-inline .studio-token-group .studio-token-value input:not([type="color"]) {
1191
+ height: 100%;
1192
+ min-height: 28px;
1193
+ padding: 0 8px;
1194
+ border: 0;
1195
+ border-radius: 0;
1196
+ background: transparent;
1197
+ }
1198
+ .studio-token-list-inline .studio-token-group .studio-token-value input[aria-invalid="true"] {
1199
+ background: #fdf1ef;
1200
+ box-shadow: inset 0 0 0 1px #c34839;
1201
+ }
1202
+ .studio-token-list-inline .studio-token-group .studio-token-value input[type="color"] {
1203
+ align-self: center;
1204
+ width: 28px;
1205
+ height: 28px;
1206
+ padding: 8px;
1207
+ border: 0;
1208
+ border-radius: 0;
1209
+ background: transparent;
1210
+ cursor: pointer;
1211
+ }
1212
+ .studio-token-list-inline .studio-token-group .studio-token-value input[type="color"]::-webkit-color-swatch-wrapper {
1213
+ padding: 0;
1214
+ }
1215
+ .studio-token-list-inline .studio-token-group .studio-token-value input[type="color"]::-webkit-color-swatch {
1216
+ border: 1px solid #dddddd;
1217
+ border-radius: 3px;
1218
+ }
1219
+ .studio-token-list-inline .studio-token-group .studio-token-value input[type="color"]::-moz-color-swatch {
1220
+ border: 1px solid #dddddd;
1221
+ border-radius: 3px;
1222
+ }
1223
+ .studio-token-list-inline .studio-token-group .studio-palette-swatch {
1224
+ align-self: center;
1225
+ margin: 0 7px;
1226
+ }
1227
+ .studio-token-list-inline .studio-token-group .studio-palette-trigger {
1228
+ min-height: 28px;
1229
+ }
1230
+ .studio-token-list-inline .studio-token-group .studio-size-presets {
1231
+ width: 24px;
1232
+ height: auto;
1233
+ border: 0;
1234
+ border-radius: 0;
1235
+ /* Only the color: the chevron icon is the background image. */
1236
+ background-color: transparent;
1237
+ }
1238
+ .studio-token-list-inline .studio-token-group .studio-token-value .studio-size-presets {
1239
+ border-left: 1px solid var(--studio-cell-line);
1240
+ }
1241
+ .studio-token-list-inline .studio-token-group .studio-token-value > button {
1242
+ width: 28px;
1243
+ height: auto;
1244
+ border-radius: 0;
1245
+ }
1246
+ .studio-token-list-inline .studio-token-group .studio-token-value :is(input, select, button):focus-visible {
1247
+ outline-offset: -2px;
1248
+ }
1249
+ .studio-token-list-inline .studio-token-group .studio-error {
1250
+ margin: 0;
1251
+ padding: 6px 8px;
1252
+ border-left: 1px solid var(--studio-cell-line);
1253
+ }
1254
+
1255
+ /* Component gallery */
1256
+ .studio-sample {
1257
+ position: relative;
1258
+ }
1259
+ .studio-gallery-loading {
1260
+ margin: 0;
1261
+ padding: 24px;
1262
+ color: #8d8d8d;
1263
+ font-size: 10px;
1264
+ text-align: center;
1265
+ }
1266
+ .studio-gallery {
1267
+ display: grid;
1268
+ gap: 22px;
1269
+ }
1270
+ .studio-gallery-group h3 {
1271
+ margin: 0 0 8px;
1272
+ font:
1273
+ 600 10px "Inter Variable",
1274
+ Inter,
1275
+ sans-serif;
1276
+ letter-spacing: 1.1px;
1277
+ text-transform: uppercase;
1278
+ color: rgb(var(--surface-default-foreground-base));
1279
+ opacity: 0.8;
1280
+ }
1281
+ .studio-gallery-grid {
1282
+ display: grid;
1283
+ grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
1284
+ gap: 24px 28px;
1285
+ }
1286
+ /* Components float freely in the preview; the whole block is the click target. */
1287
+ .studio-gallery-card {
1288
+ position: relative;
1289
+ display: flex;
1290
+ flex-direction: column;
1291
+ gap: 10px;
1292
+ min-width: 0;
1293
+ padding: 4px 0;
1294
+ }
1295
+ .studio-gallery-card-hit {
1296
+ position: absolute;
1297
+ inset: 0;
1298
+ z-index: 1;
1299
+ padding: 0;
1300
+ border: 0;
1301
+ border-radius: 4px;
1302
+ background: transparent;
1303
+ cursor: pointer;
1304
+ }
1305
+ .studio-gallery-card:hover .studio-gallery-card-title {
1306
+ color: rgb(var(--surface-default-card-foreground-base));
1307
+ }
1308
+ .studio-overlay .studio-gallery-card-hit:focus-visible {
1309
+ outline: 2px solid #797979;
1310
+ outline-offset: 4px;
1311
+ }
1312
+ .studio-gallery-card-title {
1313
+ font:
1314
+ 500 10px "Inter Variable",
1315
+ Inter,
1316
+ sans-serif;
1317
+ color: rgb(var(--surface-default-foreground-base));
1318
+ }
1319
+ .studio-gallery-demo {
1320
+ position: relative;
1321
+ min-width: 0;
1322
+ }
1323
+ .studio-gallery-card .studio-gallery-demo {
1324
+ pointer-events: none;
1325
+ }
1326
+
1327
+ /* Zoomed component */
1328
+ .studio-gallery-zoom {
1329
+ display: flex;
1330
+ flex-direction: column;
1331
+ gap: 14px;
1332
+ animation: studio-zoom-in 0.2s ease-out;
1333
+ }
1334
+ @keyframes studio-zoom-in {
1335
+ from {
1336
+ opacity: 0;
1337
+ }
1338
+ }
1339
+ .studio-gallery-zoom-bar {
1340
+ display: flex;
1341
+ align-items: center;
1342
+ gap: 10px;
1343
+ font:
1344
+ 600 10px "Inter Variable",
1345
+ Inter,
1346
+ sans-serif;
1347
+ color: rgb(var(--surface-default-card-foreground-base));
1348
+ }
1349
+ .studio-gallery-back {
1350
+ display: inline-flex;
1351
+ align-items: center;
1352
+ gap: 5px;
1353
+ padding: 3px 8px;
1354
+ border: 1px solid #e5e5e5;
1355
+ border-radius: 6px;
1356
+ background: #fff;
1357
+ color: #6a6a6a;
1358
+ font:
1359
+ 400 10px "Inter Variable",
1360
+ Inter,
1361
+ sans-serif;
1362
+ cursor: pointer;
1363
+ }
1364
+ .studio-gallery-back:hover {
1365
+ background: #f7f7f7;
1366
+ color: #454545;
1367
+ }
1368
+ .studio-gallery-zoom-stage {
1369
+ display: flex;
1370
+ justify-content: center;
1371
+ padding: 24px 0;
1372
+ }
1373
+
1374
+ /* Inspector */
1375
+ .studio-inspect-stage {
1376
+ position: relative;
1377
+ }
1378
+ .studio-inspect-layer {
1379
+ position: absolute;
1380
+ inset: 0;
1381
+ pointer-events: none;
1382
+ }
1383
+ .studio-inspect-outline {
1384
+ position: absolute;
1385
+ outline: 1px dashed #2f7fd6;
1386
+ outline-offset: 0;
1387
+ }
1388
+ .studio-inspect-region {
1389
+ position: absolute;
1390
+ padding: 0;
1391
+ border: 0;
1392
+ pointer-events: auto;
1393
+ cursor: pointer;
1394
+ opacity: 0.55;
1395
+ transition: opacity 0.1s ease;
1396
+ }
1397
+ .studio-inspect-region:hover,
1398
+ .studio-inspect-region.is-active {
1399
+ opacity: 0.85;
1400
+ }
1401
+ .studio-inspect-region.is-padding {
1402
+ background: #93c47d;
1403
+ }
1404
+ .studio-inspect-region.is-gap {
1405
+ background: repeating-linear-gradient(45deg, #fb923c 0 3px, #fed7aa 3px 6px);
1406
+ }
1407
+ .studio-inspect-region.is-radius {
1408
+ background: #f0a35e;
1409
+ border-radius: 50%;
1410
+ }
1411
+ .studio-overlay .studio-inspect-region:focus-visible {
1412
+ outline: 2px solid #1d5fa8;
1413
+ outline-offset: 0;
1414
+ opacity: 0.9;
1415
+ }
1416
+ .studio-inspect-label {
1417
+ position: absolute;
1418
+ z-index: 1;
1419
+ max-width: 220px;
1420
+ padding: 3px 7px;
1421
+ border-radius: 4px;
1422
+ background: #272727;
1423
+ color: #fff;
1424
+ font:
1425
+ 400 10px "Inter Variable",
1426
+ Inter,
1427
+ sans-serif;
1428
+ white-space: nowrap;
1429
+ overflow: hidden;
1430
+ text-overflow: ellipsis;
1431
+ pointer-events: none;
1432
+ }
1433
+ .studio-inspect-label strong {
1434
+ font-weight: 600;
1435
+ text-transform: capitalize;
1436
+ }
1437
+ .studio-inspect-label.is-padding strong {
1438
+ color: #b9e0a5;
1439
+ }
1440
+ .studio-inspect-label.is-gap strong {
1441
+ color: #fed7aa;
1442
+ }
1443
+ .studio-inspect-label.is-radius strong {
1444
+ color: #f6c08f;
1445
+ }
1446
+ .studio-inspect-hint {
1447
+ margin: 14px 0 0;
1448
+ color: #8d8d8d;
1449
+ font:
1450
+ 400 10px "Inter Variable",
1451
+ Inter,
1452
+ sans-serif;
1453
+ text-align: center;
1454
+ }
1455
+
1456
+ /* Token picked in the inspector */
1457
+ /* The row an inspector link opened: the same purple as the inspector's token chips. */
1458
+ .studio-token.is-highlighted,
1459
+ .studio-font-role.is-highlighted {
1460
+ background: #f3effb;
1461
+ box-shadow: inset 3px 0 0 #7655d7;
1462
+ animation: studio-token-flash 1.2s ease-out;
1463
+ }
1464
+ .studio-token-list-inline .studio-token-group .studio-token.is-highlighted:hover {
1465
+ background: #ebe4f8;
1466
+ }
1467
+ .studio-token.is-highlighted label > span {
1468
+ color: #6a46a8;
1469
+ }
1470
+ @keyframes studio-token-flash {
1471
+ 0%,
1472
+ 30% {
1473
+ background: #e2d8f6;
1474
+ }
1475
+ }
1476
+ .studio-gallery-card.is-wide {
1477
+ grid-column: 1 / -1;
1478
+ }
1479
+ .studio-gallery-card.is-wide .studio-gallery-demo,
1480
+ .studio-gallery-zoom .studio-gallery-demo {
1481
+ overflow-x: auto;
1482
+ padding-bottom: 2px;
1483
+ }
1484
+
1485
+ .studio-cva-field {
1486
+ display: grid;
1487
+ gap: 4px;
1488
+ margin: 8px 0;
1489
+ }
1490
+ .studio-cva-field > span {
1491
+ font-size: 10px;
1492
+ color: #6a6a6a;
1493
+ overflow-wrap: anywhere;
1494
+ }
1495
+ .studio-cva-field input {
1496
+ width: 100%;
1497
+ min-width: 0;
1498
+ height: 24px;
1499
+ padding: 3px 7px;
1500
+ border: 1px solid #e6e6e6;
1501
+ border-radius: 5px;
1502
+ background: white;
1503
+ color: #414141;
1504
+ font: 10px monospace;
1505
+ }
1506
+ .studio-cva-reset {
1507
+ padding: 3px 8px;
1508
+ border: 1px solid #e6e6e6;
1509
+ border-radius: 5px;
1510
+ background: white;
1511
+ color: #414141;
1512
+ font-size: 10px;
1513
+ }
1514
+
1515
+ .studio-context-preview {
1516
+ padding: 16px;
1517
+ border-radius: 10px;
1518
+ background: rgb(var(--surface-default-background-base));
1519
+ color: rgb(var(--surface-default-card-foreground-base));
1520
+ font-family: var(--font-body);
1521
+ }
1522
+ .studio-context-preview > h3,
1523
+ .studio-context-preview [data-testid="cva-preview"] > h3 {
1524
+ font: 600 10px sans-serif;
1525
+ text-transform: capitalize;
1526
+ margin: 0 0 14px;
1527
+ }
1528
+ .studio-preview-controls {
1529
+ display: grid;
1530
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1531
+ gap: 8px 12px;
1532
+ margin-bottom: 16px;
1533
+ }
1534
+ .studio-preview-controls label {
1535
+ display: flex;
1536
+ align-items: center;
1537
+ justify-content: space-between;
1538
+ gap: 5px;
1539
+ min-width: 0;
1540
+ font: 10px sans-serif;
1541
+ }
1542
+ .studio-preview-controls select {
1543
+ min-width: 0;
1544
+ max-width: 110px;
1545
+ height: 24px;
1546
+ border: 1px solid #e1e1e1;
1547
+ border-radius: 4px;
1548
+ background: white;
1549
+ color: #414141;
1550
+ }
1551
+ .studio-cva-stage {
1552
+ position: relative;
1553
+ contain: layout paint;
1554
+ isolation: isolate;
1555
+ display: grid;
1556
+ align-items: center;
1557
+ justify-items: start;
1558
+ min-height: 180px;
1559
+ padding: 24px;
1560
+ background: rgb(var(--surface-default-card-base));
1561
+ border: 1px solid rgb(var(--border-default-subtle-base));
1562
+ border-radius: 8px;
1563
+ overflow: auto;
1564
+ }
1565
+ .studio-cva-stage > * {
1566
+ max-width: 100%;
1567
+ }
1568
+ .studio-preview-caption {
1569
+ margin-top: 10px;
1570
+ font: 10px/1.5 sans-serif;
1571
+ color: #919191;
1572
+ }
1573
+ .studio-token-samples {
1574
+ display: grid;
1575
+ gap: 18px;
1576
+ }
1577
+ .studio-token-sample > span {
1578
+ display: block;
1579
+ margin-bottom: 4px;
1580
+ font: 10px sans-serif;
1581
+ text-transform: capitalize;
1582
+ }
1583
+ .studio-token-specimen {
1584
+ overflow-wrap: anywhere;
1585
+ }
1586
+
1587
+ /* Shades generator for base palette groups; its group gets top padding so the panel clears the header row. */
1588
+ .studio-token-group > div:has(> .studio-shades) {
1589
+ padding-top: 10px;
1590
+ }
1591
+ .studio-palette-actions {
1592
+ display: flex;
1593
+ gap: 6px;
1594
+ margin-left: auto;
1595
+ }
1596
+ .studio-token-group legend:has(.studio-shades-toggle) {
1597
+ display: flex;
1598
+ align-items: center;
1599
+ width: 100%;
1600
+ box-sizing: border-box;
1601
+ }
1602
+ .studio-shades-toggle {
1603
+ display: inline-flex;
1604
+ align-items: center;
1605
+ gap: 4px;
1606
+ padding: 3px 8px;
1607
+ border: 1px solid #e3e3e3;
1608
+ border-radius: 5px;
1609
+ background: #fff;
1610
+ color: #525252;
1611
+ font-size: 10px;
1612
+ font-weight: 550;
1613
+ text-transform: none;
1614
+ }
1615
+ .studio-shades {
1616
+ display: flex;
1617
+ flex-direction: column;
1618
+ gap: 12px;
1619
+ margin: 0 10px 10px;
1620
+ padding: 8px;
1621
+ border: 1px solid #e3e3e3;
1622
+ border-radius: 8px;
1623
+ background: #fbfbfb;
1624
+ }
1625
+ .studio-shades-input {
1626
+ display: flex;
1627
+ align-items: center;
1628
+ gap: 8px;
1629
+ }
1630
+ .studio-shades-input label {
1631
+ font-size: 10px;
1632
+ font-weight: 550;
1633
+ white-space: nowrap;
1634
+ }
1635
+ .studio-shades-input .studio-token-input {
1636
+ align-items: center;
1637
+ gap: 4px;
1638
+ max-width: 140px;
1639
+ padding-left: 8px;
1640
+ border: 1px solid #e5e5e5;
1641
+ border-radius: 5px;
1642
+ background: #fff;
1643
+ color: #939393;
1644
+ }
1645
+ .studio-shades-input .studio-token-input input {
1646
+ width: 100%;
1647
+ border: 0;
1648
+ padding: 6px 6px 6px 0;
1649
+ outline: none;
1650
+ font-family: ui-monospace, monospace;
1651
+ text-transform: uppercase;
1652
+ }
1653
+ /* Compact actions share the base color row to save vertical space. */
1654
+ .studio-shades-actions {
1655
+ display: flex;
1656
+ gap: 6px;
1657
+ margin-left: auto;
1658
+ }
1659
+ .studio-shades-actions button {
1660
+ padding: 4px 8px;
1661
+ border-radius: 5px;
1662
+ font-size: 10px;
1663
+ line-height: 1.3;
1664
+ }
1665
+ .studio-shades-actions button:not(.studio-primary) {
1666
+ border: 1px solid #e7e7e7;
1667
+ background: #fff;
1668
+ color: #717171;
1669
+ }
1670
+ .studio-shades-actions .studio-primary:disabled {
1671
+ opacity: 0.5;
1672
+ }
1673
+ /* Global rounding stepper at the top of the Radius section. */
1674
+ .studio-rounding {
1675
+ display: flex;
1676
+ align-items: center;
1677
+ gap: 10px;
1678
+ margin-bottom: 12px;
1679
+ padding: 8px;
1680
+ border: 1px solid #e3e3e3;
1681
+ border-radius: 8px;
1682
+ background: #fbfbfb;
1683
+ }
1684
+ .studio-rounding-preview {
1685
+ flex: none;
1686
+ width: 22px;
1687
+ height: 22px;
1688
+ border-top: 2px solid #393939;
1689
+ border-left: 2px solid #393939;
1690
+ box-sizing: border-box;
1691
+ transition: border-radius 150ms ease;
1692
+ }
1693
+ .studio-scale-preview-spacing {
1694
+ display: flex;
1695
+ justify-content: center;
1696
+ border: 0;
1697
+ transition: gap 150ms ease;
1698
+ }
1699
+ .studio-scale-preview-spacing i {
1700
+ width: 6px;
1701
+ border-radius: 2px;
1702
+ background: #393939;
1703
+ }
1704
+ .studio-scale-preview-sizing {
1705
+ width: 16px;
1706
+ height: 16px;
1707
+ margin: 3px;
1708
+ border: 2px solid #393939;
1709
+ border-radius: 3px;
1710
+ transition: scale 150ms ease;
1711
+ }
1712
+ .studio-scale-preview-font-size {
1713
+ display: flex;
1714
+ align-items: center;
1715
+ justify-content: center;
1716
+ border: 0;
1717
+ color: #393939;
1718
+ font-weight: 600;
1719
+ line-height: 1;
1720
+ transition: font-size 150ms ease;
1721
+ }
1722
+ .studio-rounding-text {
1723
+ display: flex;
1724
+ flex-direction: column;
1725
+ gap: 2px;
1726
+ min-width: 0;
1727
+ }
1728
+ .studio-rounding-text strong {
1729
+ font-size: 10px;
1730
+ font-weight: 550;
1731
+ }
1732
+ .studio-rounding-text span {
1733
+ color: #717171;
1734
+ font-size: 10px;
1735
+ }
1736
+ .studio-rounding-stepper {
1737
+ display: flex;
1738
+ align-items: center;
1739
+ margin-left: auto;
1740
+ border: 1px solid #e5e5e5;
1741
+ border-radius: 6px;
1742
+ background: #fff;
1743
+ }
1744
+ .studio-rounding-stepper button {
1745
+ display: inline-flex;
1746
+ align-items: center;
1747
+ justify-content: center;
1748
+ width: 24px;
1749
+ height: 24px;
1750
+ padding: 0;
1751
+ border: 0;
1752
+ background: none;
1753
+ color: #525252;
1754
+ }
1755
+ .studio-rounding-stepper button:disabled {
1756
+ opacity: 0.35;
1757
+ cursor: default;
1758
+ }
1759
+ .studio-rounding-stepper output {
1760
+ min-width: 56px;
1761
+ font-size: 10px;
1762
+ font-weight: 550;
1763
+ text-align: center;
1764
+ font-variant-numeric: tabular-nums;
1765
+ }
1766
+ .studio-token-list-inline .studio-token-group .studio-palette-trigger .studio-palette-swatch {
1767
+ margin: 0;
1768
+ }
1769
+
1770
+ /* Translucent colors: a half solid, half checkerboard swatch, hex value and opacity, as in Figma. */
1771
+ .studio-alpha-color {
1772
+ display: flex;
1773
+ flex: 1;
1774
+ align-items: center;
1775
+ gap: 7px;
1776
+ min-width: 0;
1777
+ padding-left: 4px;
1778
+ }
1779
+ .studio-alpha-swatch {
1780
+ position: relative;
1781
+ flex-shrink: 0;
1782
+ width: 18px;
1783
+ height: 18px;
1784
+ overflow: hidden;
1785
+ border: 1px solid #dadada;
1786
+ border-radius: 3px;
1787
+ background:
1788
+ linear-gradient(90deg, var(--swatch-solid) 50%, transparent 50%),
1789
+ linear-gradient(var(--swatch-color), var(--swatch-color)),
1790
+ repeating-conic-gradient(#cdcdcd 0 25%, #fff 0 50%) 0 0 / 8px 8px;
1791
+ }
1792
+ .studio-alpha-swatch input[type="color"] {
1793
+ position: absolute;
1794
+ inset: 0;
1795
+ width: 100%;
1796
+ height: 100%;
1797
+ padding: 0;
1798
+ border: 0;
1799
+ opacity: 0;
1800
+ cursor: pointer;
1801
+ }
1802
+ .studio-alpha-color .studio-alpha-hex {
1803
+ flex: 1;
1804
+ min-width: 0;
1805
+ padding: 6px 0;
1806
+ border: 0;
1807
+ outline: none;
1808
+ background: transparent;
1809
+ font: inherit;
1810
+ font-size: 10px;
1811
+ text-transform: uppercase;
1812
+ }
1813
+ .studio-alpha-opacity {
1814
+ display: flex;
1815
+ flex-shrink: 0;
1816
+ align-items: center;
1817
+ width: 52px;
1818
+ margin-right: 4px;
1819
+ border-radius: 4px;
1820
+ background: #f4f4f4;
1821
+ }
1822
+ .studio-alpha-opacity input {
1823
+ width: 100%;
1824
+ padding: 3px 6px;
1825
+ border: 0;
1826
+ outline: none;
1827
+ background: transparent;
1828
+ font: inherit;
1829
+ font-size: 10px;
1830
+ text-align: right;
1831
+ }
1832
+ .studio-alpha-opacity:focus-within,
1833
+ .studio-alpha-color .studio-alpha-hex:focus-visible {
1834
+ box-shadow: 0 0 0 2px #79797955;
1835
+ }
1836
+
1837
+ /* Layout preview: product cards built only from theme tokens, at the top of the gallery. */
1838
+ .studio-layout-heading {
1839
+ display: flex;
1840
+ align-items: center;
1841
+ justify-content: space-between;
1842
+ gap: 8px;
1843
+ margin-bottom: 8px;
1844
+ }
1845
+ .studio-layout-heading h3 {
1846
+ margin: 0;
1847
+ }
1848
+ /* Full screen layouts fill the window at an app's real width, still inside the preview so draft tokens apply. */
1849
+ .studio-layout-fullscreen {
1850
+ position: fixed;
1851
+ inset: 0;
1852
+ z-index: 1000;
1853
+ display: flex;
1854
+ flex-direction: column;
1855
+ overflow: auto;
1856
+ background: var(--color-surface-default-background);
1857
+ color: var(--color-surface-default-foreground);
1858
+ animation: studio-zoom-in 0.2s ease-out;
1859
+ }
1860
+ .studio-layout-fullscreen-bar {
1861
+ position: sticky;
1862
+ top: 0;
1863
+ z-index: 1;
1864
+ display: flex;
1865
+ align-items: center;
1866
+ justify-content: space-between;
1867
+ gap: 12px;
1868
+ padding: 10px 24px;
1869
+ border-bottom: 1px solid #e8e8e8;
1870
+ background: #fafafa;
1871
+ color: #393939;
1872
+ font:
1873
+ 600 10px "Inter Variable",
1874
+ Inter,
1875
+ sans-serif;
1876
+ }
1877
+ .studio-layout-fullscreen-stage {
1878
+ width: 100%;
1879
+ max-width: 1200px;
1880
+ margin: 0 auto;
1881
+ padding: 32px 24px;
1882
+ box-sizing: border-box;
1883
+ }
1884
+ /* Cards share a row but grow to fit their content, so larger buttons or text widen the card instead of overflowing. */
1885
+ .studio-layout-grid {
1886
+ display: flex;
1887
+ flex-wrap: wrap;
1888
+ gap: 14px;
1889
+ }
1890
+ .studio-layout-card {
1891
+ flex: 1 1 190px;
1892
+ min-width: min-content;
1893
+ box-sizing: border-box;
1894
+ display: flex;
1895
+ flex-direction: column;
1896
+ gap: 10px;
1897
+ min-height: 270px;
1898
+ padding: 16px;
1899
+ border-radius: var(--radius-modal-rounding-default);
1900
+ font-family: var(--font-body);
1901
+ font-size: var(--text-small);
1902
+ line-height: var(--text-small--line-height);
1903
+ }
1904
+ .studio-layout-card p,
1905
+ .studio-layout-card h4,
1906
+ .studio-layout-card ul {
1907
+ margin: 0;
1908
+ }
1909
+ .studio-layout-label {
1910
+ font-weight: 600;
1911
+ opacity: 0.7;
1912
+ }
1913
+ .studio-layout-card h4,
1914
+ .studio-layout-amount,
1915
+ .studio-layout-price {
1916
+ font-family: var(--font-titles);
1917
+ font-size: var(--text-h4);
1918
+ line-height: var(--text-h4--line-height);
1919
+ letter-spacing: var(--text-h4--letter-spacing);
1920
+ font-weight: 600;
1921
+ }
1922
+ .studio-layout-card.is-soft {
1923
+ border: 1px solid var(--color-border-default-subtle);
1924
+ background: var(--color-surface-default-background);
1925
+ color: var(--color-surface-default-card-foreground);
1926
+ }
1927
+ .studio-layout-tags {
1928
+ display: flex;
1929
+ flex-wrap: wrap;
1930
+ gap: 6px;
1931
+ }
1932
+ .studio-layout-progress {
1933
+ display: grid;
1934
+ gap: 6px;
1935
+ margin-top: auto;
1936
+ }
1937
+ .studio-layout-footer {
1938
+ display: flex;
1939
+ align-items: center;
1940
+ justify-content: space-between;
1941
+ gap: 8px;
1942
+ }
1943
+ .studio-layout-avatars {
1944
+ display: flex;
1945
+ }
1946
+ .studio-layout-avatars span {
1947
+ display: grid;
1948
+ place-items: center;
1949
+ width: 26px;
1950
+ height: 26px;
1951
+ margin-left: -6px;
1952
+ border: 2px solid var(--color-surface-default-background);
1953
+ border-radius: var(--radius-avatar-rounding-default);
1954
+ background: var(--color-interactive-subtle-secondary-background);
1955
+ color: var(--color-interactive-subtle-secondary-foreground);
1956
+ font-size: 9px;
1957
+ font-weight: 600;
1958
+ }
1959
+ .studio-layout-avatars span:first-child {
1960
+ margin-left: 0;
1961
+ }
1962
+ .studio-layout-avatars span:nth-child(2) {
1963
+ background: var(--color-interactive-primary-background);
1964
+ color: var(--color-interactive-primary-foreground);
1965
+ }
1966
+ .studio-layout-card.is-stats {
1967
+ gap: 2px;
1968
+ border: 1px solid var(--color-border-default-subtle);
1969
+ background: var(--color-surface-default-card);
1970
+ color: var(--color-surface-default-card-foreground);
1971
+ }
1972
+ .studio-layout-amount {
1973
+ margin-top: 4px;
1974
+ font-size: var(--text-h3);
1975
+ line-height: var(--text-h3--line-height);
1976
+ }
1977
+ .studio-layout-trend {
1978
+ color: var(--color-surface-success-base);
1979
+ font-weight: 600;
1980
+ }
1981
+ .studio-layout-chart {
1982
+ display: flex;
1983
+ flex: 1;
1984
+ gap: 6px;
1985
+ margin-top: 14px;
1986
+ }
1987
+ .studio-layout-bar {
1988
+ display: flex;
1989
+ flex: 1;
1990
+ flex-direction: column;
1991
+ justify-content: flex-end;
1992
+ align-items: center;
1993
+ gap: 6px;
1994
+ }
1995
+ .studio-layout-bar > span:first-child {
1996
+ width: 100%;
1997
+ max-width: 20px;
1998
+ border-radius: var(--radius-global-rounding-s) var(--radius-global-rounding-s) 0 0;
1999
+ background: color-mix(in srgb, var(--color-interactive-secondary-background) 30%, transparent);
2000
+ }
2001
+ .studio-layout-bar.is-today > span:first-child {
2002
+ background: var(--color-interactive-primary-background);
2003
+ }
2004
+ .studio-layout-day {
2005
+ opacity: 0.6;
2006
+ }
2007
+ /* The highlighted ("recommended") plan: a card outlined in the primary color, which reads in light and dark mode. */
2008
+ .studio-layout-card.is-bold {
2009
+ border: 2px solid var(--color-interactive-primary-background);
2010
+ background: var(--color-surface-default-card);
2011
+ color: var(--color-surface-default-card-foreground);
2012
+ }
2013
+ .studio-layout-price span {
2014
+ margin-left: 2px;
2015
+ font-family: var(--font-body);
2016
+ font-size: var(--text-small);
2017
+ font-weight: 400;
2018
+ opacity: 0.7;
2019
+ }
2020
+ .studio-layout-features {
2021
+ display: grid;
2022
+ gap: 8px;
2023
+ margin-top: 4px;
2024
+ padding: 0;
2025
+ list-style: none;
2026
+ }
2027
+ .studio-layout-features li {
2028
+ display: flex;
2029
+ align-items: center;
2030
+ gap: 8px;
2031
+ }
2032
+ .studio-layout-features svg {
2033
+ flex-shrink: 0;
2034
+ color: var(--color-interactive-primary-background);
2035
+ }
2036
+ .studio-layout-card .studio-layout-cta {
2037
+ margin-top: auto;
2038
+ }
2039
+ .studio-layout-card.is-form {
2040
+ flex-basis: 100%;
2041
+ container-type: inline-size;
2042
+ min-height: 0;
2043
+ gap: 14px;
2044
+ border: 1px solid var(--color-border-default-subtle);
2045
+ background: var(--color-surface-default-card);
2046
+ color: var(--color-surface-default-card-foreground);
2047
+ }
2048
+ .studio-layout-card.is-invite {
2049
+ flex-basis: 100%;
2050
+ min-height: 0;
2051
+ gap: 14px;
2052
+ border: 1px solid var(--color-border-default-subtle);
2053
+ background: var(--color-surface-default-card);
2054
+ color: var(--color-surface-default-card-foreground);
2055
+ }
2056
+ /* The submit button sits on the input's baseline row, so mismatched control heights show at a glance. */
2057
+ .studio-layout-invite {
2058
+ display: flex;
2059
+ flex-wrap: wrap;
2060
+ align-items: flex-end;
2061
+ gap: 8px;
2062
+ }
2063
+ .studio-layout-invite > :first-child {
2064
+ flex: 1 1 200px;
2065
+ }
2066
+ .studio-layout-invite-actions {
2067
+ display: flex;
2068
+ flex-wrap: wrap;
2069
+ gap: 8px;
2070
+ }
2071
+ .studio-layout-card.is-settings {
2072
+ flex-basis: 100%;
2073
+ container-type: inline-size;
2074
+ min-height: 0;
2075
+ gap: 14px;
2076
+ border: 1px solid var(--color-border-default-subtle);
2077
+ background: var(--color-surface-default-card);
2078
+ color: var(--color-surface-default-card-foreground);
2079
+ }
2080
+ /* Top navigation spans the card edge to edge, above the breadcrumbs. */
2081
+ .studio-layout-nav {
2082
+ display: flex;
2083
+ flex-wrap: wrap;
2084
+ align-items: center;
2085
+ gap: 8px 16px;
2086
+ margin: -16px -16px 0;
2087
+ padding: 10px 16px;
2088
+ border-bottom: 1px solid var(--color-border-default-subtle);
2089
+ }
2090
+ .studio-layout-brand {
2091
+ display: inline-flex;
2092
+ align-items: center;
2093
+ gap: 8px;
2094
+ font-family: var(--font-titles);
2095
+ font-size: var(--text-lead);
2096
+ font-weight: 700;
2097
+ }
2098
+ .studio-layout-brand > span {
2099
+ display: grid;
2100
+ place-items: center;
2101
+ width: 26px;
2102
+ height: 26px;
2103
+ border-radius: var(--radius-global-rounding-s);
2104
+ background: var(--color-interactive-primary-background);
2105
+ color: var(--color-interactive-primary-foreground);
2106
+ font-size: var(--text-small);
2107
+ }
2108
+ .studio-layout-nav-links {
2109
+ display: flex;
2110
+ flex-wrap: wrap;
2111
+ gap: 4px;
2112
+ }
2113
+ .studio-layout-nav-actions {
2114
+ display: flex;
2115
+ align-items: center;
2116
+ gap: 8px;
2117
+ margin-left: auto;
2118
+ }
2119
+ .studio-layout-nav-actions > :first-child {
2120
+ width: 200px;
2121
+ }
2122
+ .studio-layout-nav-avatar {
2123
+ display: grid;
2124
+ place-items: center;
2125
+ width: 32px;
2126
+ height: 32px;
2127
+ border-radius: var(--radius-avatar-rounding-default);
2128
+ background: var(--color-interactive-subtle-secondary-background);
2129
+ color: var(--color-interactive-subtle-secondary-foreground);
2130
+ font-size: var(--text-small);
2131
+ font-weight: 600;
2132
+ }
2133
+ /* Menu beside the form, stacking above it in narrow previews. */
2134
+ .studio-layout-settings {
2135
+ display: grid;
2136
+ grid-template-columns: minmax(160px, 200px) minmax(0, 1fr);
2137
+ gap: 24px;
2138
+ align-items: start;
2139
+ }
2140
+ @container (max-width: 560px) {
2141
+ .studio-layout-settings {
2142
+ grid-template-columns: minmax(0, 1fr);
2143
+ }
2144
+ }
2145
+ .studio-layout-menu {
2146
+ display: flex;
2147
+ flex-direction: column;
2148
+ overflow: hidden;
2149
+ border: 1px solid var(--color-border-default-subtle);
2150
+ border-radius: var(--radius-list-rounding-dropdown);
2151
+ }
2152
+ .studio-layout-menu button {
2153
+ width: 100%;
2154
+ font: inherit;
2155
+ text-align: left;
2156
+ }
2157
+ /* The current page uses the menu's highlighted (open) item colors. */
2158
+ .studio-layout-menu button[aria-current="page"] {
2159
+ background: var(--color-interactive-primary-background);
2160
+ color: var(--color-interactive-primary-foreground);
2161
+ }
2162
+ .studio-layout-menu-label {
2163
+ display: inline-flex;
2164
+ align-items: center;
2165
+ gap: inherit;
2166
+ }
2167
+ .studio-layout-muted {
2168
+ margin-top: 2px;
2169
+ opacity: 0.7;
2170
+ }
2171
+ .studio-layout-form {
2172
+ display: grid;
2173
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2174
+ gap: 14px 16px;
2175
+ align-items: start;
2176
+ }
2177
+ .studio-layout-form-wide {
2178
+ grid-column: 1 / -1;
2179
+ }
2180
+ @container (max-width: 440px) {
2181
+ .studio-layout-form {
2182
+ grid-template-columns: minmax(0, 1fr);
2183
+ }
2184
+ }
2185
+ .studio-layout-form-footer {
2186
+ display: flex;
2187
+ flex-wrap: wrap;
2188
+ grid-column: 1 / -1;
2189
+ align-items: center;
2190
+ justify-content: space-between;
2191
+ gap: 12px;
2192
+ }
2193
+ .studio-layout-form-actions {
2194
+ display: flex;
2195
+ gap: 8px;
2196
+ }
2197
+
2198
+ /* Text styles: one table with a row per style under a shared header, divided like the token tables. */
2199
+ .studio-type-row {
2200
+ display: grid;
2201
+ grid-template-columns: minmax(56px, 0.7fr) repeat(3, minmax(0, 1fr));
2202
+ margin: 0 calc(-1 * var(--studio-editor-pad));
2203
+ border-bottom: 1px solid var(--studio-cell-line);
2204
+ }
2205
+ .studio-type-row > * {
2206
+ display: flex;
2207
+ align-items: center;
2208
+ min-width: 0;
2209
+ min-height: 28px;
2210
+ }
2211
+ .studio-type-row > * + * {
2212
+ border-left: 1px solid var(--studio-cell-line);
2213
+ }
2214
+ .studio-type-row > :first-child {
2215
+ padding: 0 8px 0 var(--studio-editor-pad);
2216
+ }
2217
+ .studio-type-row:not(.studio-type-head):hover {
2218
+ background: #fbfbfb;
2219
+ }
2220
+ .studio-type-head {
2221
+ background: #f7f7f7;
2222
+ border-top: 1px solid var(--studio-cell-line);
2223
+ color: #707070;
2224
+ font-weight: 550;
2225
+ }
2226
+ .studio-type-head > * {
2227
+ min-height: 24px;
2228
+ overflow: hidden;
2229
+ text-overflow: ellipsis;
2230
+ white-space: nowrap;
2231
+ }
2232
+ .studio-type-head > * + * {
2233
+ padding-inline: 8px;
2234
+ }
2235
+ .studio-type-name {
2236
+ gap: 4px;
2237
+ color: #434343;
2238
+ font-weight: 550;
2239
+ text-transform: capitalize;
2240
+ overflow-wrap: anywhere;
2241
+ }
2242
+ .studio-type-cell .studio-token {
2243
+ display: flex;
2244
+ flex-wrap: wrap;
2245
+ flex: 1;
2246
+ align-self: stretch;
2247
+ min-width: 0;
2248
+ padding: 0;
2249
+ border: 0;
2250
+ }
2251
+ .studio-type-cell .studio-token:focus-within {
2252
+ box-shadow: inset 0 0 0 1px #8e8e8e;
2253
+ }
2254
+ /* Each input keeps its accessible name; the column header carries the visible label. */
2255
+ .studio-type-cell .studio-token > label {
2256
+ position: absolute;
2257
+ width: 1px;
2258
+ height: 1px;
2259
+ margin: 0;
2260
+ overflow: hidden;
2261
+ clip-path: inset(50%);
2262
+ white-space: nowrap;
2263
+ }
2264
+ .studio-type-cell .studio-token-value {
2265
+ display: flex;
2266
+ flex: 1;
2267
+ align-items: stretch;
2268
+ gap: 0;
2269
+ min-width: 0;
2270
+ }
2271
+ .studio-type-cell .studio-token-value input:not([type="color"]) {
2272
+ width: 100%;
2273
+ height: 100%;
2274
+ min-height: 28px;
2275
+ padding: 0 20px 0 8px;
2276
+ border: 0;
2277
+ border-radius: 0;
2278
+ background: transparent;
2279
+ font-variant-numeric: tabular-nums;
2280
+ }
2281
+ .studio-type-cell .studio-token-value input[aria-invalid="true"] {
2282
+ background: #fdf1ef;
2283
+ }
2284
+ .studio-type-cell .studio-token-unit {
2285
+ right: 4px;
2286
+ }
2287
+ .studio-type-cell .studio-size-presets {
2288
+ align-self: stretch;
2289
+ width: 16px;
2290
+ height: auto;
2291
+ border: 0;
2292
+ border-radius: 0;
2293
+ background-color: transparent;
2294
+ }
2295
+ .studio-type-cell .studio-token-value > button {
2296
+ display: grid;
2297
+ place-items: center;
2298
+ width: 20px;
2299
+ height: auto;
2300
+ padding: 0;
2301
+ border: 0;
2302
+ background: transparent;
2303
+ color: #8e8e8e;
2304
+ }
2305
+ /* Reset appears once a value differs from the theme, so unchanged rows spend their width on the values. */
2306
+ .studio-type-cell .studio-token-value > button:disabled {
2307
+ display: none;
2308
+ }
2309
+ .studio-type-cell .studio-error {
2310
+ flex-basis: 100%;
2311
+ margin: 0;
2312
+ padding: 4px 8px;
2313
+ }
2314
+
2315
+ .studio-token-list-rows .studio-type-fields {
2316
+ padding: 12px var(--studio-editor-pad) 14px;
2317
+ border-bottom: 1px solid var(--studio-cell-line);
2318
+ }
2319
+ .studio-shades-toggle:disabled {
2320
+ opacity: 0.45;
2321
+ cursor: default;
2322
+ }
2323
+ /* Icon-only reset, last in the palette header row. */
2324
+ .studio-palette-reset {
2325
+ display: grid;
2326
+ place-items: center;
2327
+ /* Same width as the row reset column, and flush right so the icons line up. */
2328
+ width: 32px;
2329
+ margin-right: calc(-1 * var(--studio-editor-pad));
2330
+ height: 22px;
2331
+ padding: 0;
2332
+ border: 0;
2333
+ border-radius: 4px;
2334
+ background: transparent;
2335
+ color: #828282;
2336
+ cursor: pointer;
2337
+ }
2338
+ .studio-palette-reset:hover:not(:disabled) {
2339
+ color: #393939;
2340
+ }
2341
+ .studio-palette-reset:disabled {
2342
+ opacity: 0.4;
2343
+ cursor: default;
2344
+ }
2345
+ .studio-palette-reset:focus-visible {
2346
+ outline: 2px solid #797979;
2347
+ outline-offset: 1px;
2348
+ }
2349
+
2350
+ /* Font roles: picker cards for heading and body fonts, above the font families they choose from. */
2351
+ .studio-font-roles {
2352
+ display: grid;
2353
+ gap: 8px;
2354
+ padding: 12px 0 4px;
2355
+ }
2356
+ .studio-font-role {
2357
+ position: relative;
2358
+ display: flex;
2359
+ align-items: center;
2360
+ gap: 12px;
2361
+ padding: 8px 10px;
2362
+ border: 1px solid #e5e5e5;
2363
+ border-radius: 10px;
2364
+ background: #fff;
2365
+ }
2366
+ .studio-font-role:hover {
2367
+ border-color: #d0d0d0;
2368
+ background: #fafafa;
2369
+ }
2370
+ .studio-font-role:has(select:focus-visible) {
2371
+ outline: 2px solid #797979;
2372
+ outline-offset: 2px;
2373
+ }
2374
+ .studio-font-role-text {
2375
+ display: flex;
2376
+ flex: 1;
2377
+ flex-direction: column;
2378
+ gap: 2px;
2379
+ min-width: 0;
2380
+ }
2381
+ .studio-font-role-text span {
2382
+ color: #8e8e8e;
2383
+ font-size: 10px;
2384
+ }
2385
+ .studio-font-role-text strong {
2386
+ overflow: hidden;
2387
+ color: #2f2f2f;
2388
+ font-size: 10px;
2389
+ font-weight: 600;
2390
+ text-overflow: ellipsis;
2391
+ white-space: nowrap;
2392
+ }
2393
+ .studio-font-role-sample {
2394
+ color: #2f2f2f;
2395
+ font-size: 20px;
2396
+ line-height: 1;
2397
+ }
2398
+ .studio-font-role-select {
2399
+ position: absolute;
2400
+ inset: 0;
2401
+ width: 100%;
2402
+ opacity: 0;
2403
+ cursor: pointer;
2404
+ }
2405
+ /* The reset sits above the select so it stays clickable. */
2406
+ .studio-font-role-reset {
2407
+ position: relative;
2408
+ z-index: 1;
2409
+ display: grid;
2410
+ place-items: center;
2411
+ width: 24px;
2412
+ height: 24px;
2413
+ padding: 0;
2414
+ border: 0;
2415
+ border-radius: 4px;
2416
+ background: transparent;
2417
+ color: #7a7a7a;
2418
+ cursor: pointer;
2419
+ }
2420
+ .studio-font-role-reset:hover {
2421
+ background: #efefef;
2422
+ }
2423
+ .studio-font-divider {
2424
+ margin: 16px 0 4px;
2425
+ border: 0;
2426
+ border-top: 1px solid #e5e5e5;
2427
+ }
2428
+ .studio-font-upload {
2429
+ display: flex;
2430
+ flex-wrap: wrap;
2431
+ align-items: center;
2432
+ gap: 6px 10px;
2433
+ padding-top: 8px;
2434
+ }
2435
+ .studio-font-upload-note {
2436
+ flex: 1 1 200px;
2437
+ margin: 0;
2438
+ color: #8e8e8e;
2439
+ font-size: 10px;
2440
+ line-height: 1.5;
2441
+ }
2442
+
2443
+ /* Presets: one row per preset with a palette strip, its description and an apply button. */
2444
+ .studio-presets {
2445
+ display: grid;
2446
+ gap: 8px;
2447
+ }
2448
+ .studio-presets-intro {
2449
+ margin: 0 0 4px;
2450
+ color: #8e8e8e;
2451
+ font-size: 10px;
2452
+ line-height: 1.5;
2453
+ }
2454
+ .studio-preset {
2455
+ display: flex;
2456
+ align-items: center;
2457
+ gap: 12px;
2458
+ padding: 8px 10px;
2459
+ border: 1px solid #e5e5e5;
2460
+ border-radius: 10px;
2461
+ background: #fff;
2462
+ }
2463
+ .studio-preset.is-active {
2464
+ border-color: #b9b9b9;
2465
+ background: #fafafa;
2466
+ }
2467
+ .studio-preset-swatches {
2468
+ display: flex;
2469
+ flex-shrink: 0;
2470
+ overflow: hidden;
2471
+ border: 1px solid #e5e5e5;
2472
+ border-radius: 6px;
2473
+ }
2474
+ .studio-preset-swatches i {
2475
+ width: 12px;
2476
+ height: 28px;
2477
+ }
2478
+ .studio-preset-text {
2479
+ display: flex;
2480
+ flex: 1;
2481
+ flex-direction: column;
2482
+ gap: 2px;
2483
+ min-width: 0;
2484
+ }
2485
+ .studio-preset-text strong {
2486
+ color: #2f2f2f;
2487
+ font-size: 10px;
2488
+ font-weight: 600;
2489
+ }
2490
+ .studio-preset-text span {
2491
+ color: #8e8e8e;
2492
+ font-size: 10px;
2493
+ line-height: 1.4;
2494
+ }
2495
+ .studio-preset button {
2496
+ flex-shrink: 0;
2497
+ padding: 7px 11px;
2498
+ border: 1px solid #e5e5e5;
2499
+ border-radius: 6px;
2500
+ background: #fff;
2501
+ color: #707070;
2502
+ font-size: 10px;
2503
+ }
2504
+ .studio-preset button:disabled {
2505
+ cursor: default;
2506
+ }
2507
+
2508
+ /* Full app screens (dashboard, sign-in) span the preview like the settings page. */
2509
+ .studio-layout-card.is-screen {
2510
+ flex-basis: 100%;
2511
+ container-type: inline-size;
2512
+ min-height: 0;
2513
+ gap: 16px;
2514
+ border: 1px solid var(--color-border-default-subtle);
2515
+ background: var(--color-surface-default-card);
2516
+ color: var(--color-surface-default-card-foreground);
2517
+ }
2518
+ .studio-layout-screen-heading {
2519
+ display: flex;
2520
+ flex-wrap: wrap;
2521
+ align-items: flex-end;
2522
+ justify-content: space-between;
2523
+ gap: 12px;
2524
+ }
2525
+ .studio-layout-stats {
2526
+ display: grid;
2527
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
2528
+ gap: 12px;
2529
+ }
2530
+ .studio-layout-stat {
2531
+ display: flex;
2532
+ flex-direction: column;
2533
+ gap: 4px;
2534
+ padding: 14px;
2535
+ border: 1px solid var(--color-border-default-subtle);
2536
+ border-radius: var(--radius-global-rounding-m);
2537
+ }
2538
+ .studio-layout-card.is-login {
2539
+ align-items: center;
2540
+ padding: 40px 16px;
2541
+ background: var(--color-surface-default-background);
2542
+ }
2543
+ .studio-layout-login {
2544
+ display: flex;
2545
+ flex-direction: column;
2546
+ gap: 14px;
2547
+ width: 100%;
2548
+ max-width: 360px;
2549
+ padding: 28px;
2550
+ box-sizing: border-box;
2551
+ border: 1px solid var(--color-border-default-subtle);
2552
+ border-radius: var(--radius-modal-rounding-default);
2553
+ background: var(--color-surface-default-card);
2554
+ }
2555
+ .studio-layout-login-row {
2556
+ display: flex;
2557
+ flex-wrap: wrap;
2558
+ align-items: center;
2559
+ justify-content: space-between;
2560
+ gap: 8px;
2561
+ }
2562
+ .studio-layout-login-divider {
2563
+ display: flex;
2564
+ align-items: center;
2565
+ gap: 10px;
2566
+ opacity: 0.6;
2567
+ }
2568
+ .studio-layout-login-divider::before,
2569
+ .studio-layout-login-divider::after {
2570
+ content: "";
2571
+ flex: 1;
2572
+ border-top: 1px solid var(--color-border-default-subtle);
2573
+ }
2574
+ .studio-layout-login-footer {
2575
+ text-align: center;
2576
+ }
2577
+
2578
+ /* The modal card holds a trigger; the dialog itself is portaled into the card so it inherits the preview's tokens. */
2579
+ .studio-layout-card.is-modal {
2580
+ min-height: 0;
2581
+ justify-content: space-between;
2582
+ border: 1px solid var(--color-border-default-subtle);
2583
+ background: var(--color-surface-default-card);
2584
+ color: var(--color-surface-default-card-foreground);
2585
+ }
2586
+ .studio-layout-modal {
2587
+ display: flex;
2588
+ flex-direction: column;
2589
+ gap: 14px;
2590
+ width: min(420px, 100%);
2591
+ font-family: var(--font-body);
2592
+ }
2593
+ .studio-layout-modal h4 {
2594
+ margin: 0;
2595
+ font-family: var(--font-titles);
2596
+ font-size: var(--text-h4);
2597
+ line-height: var(--text-h4--line-height);
2598
+ }
2599
+ .studio-layout-modal p {
2600
+ margin: 0;
2601
+ }
2602
+ .studio-layout-modal-actions {
2603
+ display: flex;
2604
+ justify-content: flex-end;
2605
+ gap: 8px;
2606
+ }
2607
+
2608
+ /*
2609
+ * The header drags the window, so the grip is only a keyboard control: hidden until it has focus, then shown left
2610
+ * of the pop-out button, where arrow keys move the window.
2611
+ */
2612
+ .studio-window-grip {
2613
+ position: absolute;
2614
+ top: 20px;
2615
+ right: 82px;
2616
+ z-index: 5;
2617
+ display: grid;
2618
+ place-items: center;
2619
+ border: 0;
2620
+ padding: 4px;
2621
+ background: transparent;
2622
+ color: #858585;
2623
+ touch-action: none;
2624
+ flex-shrink: 0;
2625
+ border-radius: 5px;
2626
+ }
2627
+ .studio-window-grip:not(:focus-visible) {
2628
+ width: 1px;
2629
+ height: 1px;
2630
+ padding: 0;
2631
+ overflow: hidden;
2632
+ clip-path: inset(50%);
2633
+ }
2634
+ .studio-overlay .studio-window-grip {
2635
+ cursor: grab;
2636
+ }
2637
+ .studio-overlay .studio-window-grip:active {
2638
+ cursor: grabbing;
2639
+ }
2640
+ .studio-window-resize {
2641
+ position: absolute;
2642
+ z-index: 4;
2643
+ display: block;
2644
+ border: 0;
2645
+ padding: 0;
2646
+ background: transparent;
2647
+ touch-action: none;
2648
+ }
2649
+ .studio-window-resize-n,
2650
+ .studio-window-resize-s {
2651
+ left: 12px;
2652
+ right: 12px;
2653
+ height: 6px;
2654
+ }
2655
+ .studio-window-resize-e,
2656
+ .studio-window-resize-w {
2657
+ top: 12px;
2658
+ bottom: 12px;
2659
+ width: 6px;
2660
+ }
2661
+ .studio-window-resize-n {
2662
+ top: 0;
2663
+ cursor: ns-resize !important;
2664
+ }
2665
+ .studio-window-resize-s {
2666
+ bottom: 0;
2667
+ cursor: ns-resize !important;
2668
+ }
2669
+ .studio-window-resize-e {
2670
+ right: 0;
2671
+ cursor: ew-resize !important;
2672
+ }
2673
+ .studio-window-resize-w {
2674
+ left: 0;
2675
+ cursor: ew-resize !important;
2676
+ }
2677
+ .studio-window-resize-ne,
2678
+ .studio-window-resize-se,
2679
+ .studio-window-resize-sw,
2680
+ .studio-window-resize-nw {
2681
+ width: 12px;
2682
+ height: 12px;
2683
+ }
2684
+ .studio-window-resize-ne {
2685
+ top: 0;
2686
+ right: 0;
2687
+ cursor: nesw-resize !important;
2688
+ }
2689
+ .studio-window-resize-se {
2690
+ bottom: 0;
2691
+ right: 0;
2692
+ cursor: nwse-resize !important;
2693
+ }
2694
+ .studio-window-resize-sw {
2695
+ bottom: 0;
2696
+ left: 0;
2697
+ cursor: nesw-resize !important;
2698
+ }
2699
+ .studio-window-resize-nw {
2700
+ top: 0;
2701
+ left: 0;
2702
+ cursor: nwse-resize !important;
2703
+ }
2704
+ .studio-window-grip:focus-visible,
2705
+ .studio-window-resize:focus-visible {
2706
+ outline: 2px solid #555;
2707
+ outline-offset: -2px;
2708
+ }
2709
+ @media (max-width: 600px) {
2710
+ .studio-modal {
2711
+ width: calc(100vw - 16px);
2712
+ height: calc(100dvh - 16px);
2713
+ }
2714
+ }
2715
+
2716
+ @container (max-width: 1050px) {
2717
+ .studio-window-grip {
2718
+ top: 18px;
2719
+ }
2720
+ }
2721
+ @container (max-width: 800px) {
2722
+ .studio-window-grip {
2723
+ top: 10px;
2724
+ right: 76px;
2725
+ }
2726
+ }
2727
+
2728
+ /* Resized windows must not inherit the gallery specimens' intrinsic minimum width. */
2729
+ .studio-layout-card {
2730
+ min-width: 0;
2731
+ max-width: 100%;
2732
+ }
2733
+ .studio-gallery-grid {
2734
+ grid-template-columns: repeat(auto-fill, minmax(min(260px, 100%), 1fr));
2735
+ }
2736
+ .studio-palette-actions {
2737
+ flex-shrink: 0;
2738
+ }
2739
+ @container (max-width: 800px) {
2740
+ .studio-dialog > .studio-topbar,
2741
+ .studio-body > .studio-editor,
2742
+ .studio-body > .studio-preview,
2743
+ .studio-dialog > .studio-footer {
2744
+ min-width: 0;
2745
+ max-width: 100%;
2746
+ box-sizing: border-box;
2747
+ }
2748
+ }
2749
+ /* Wide specimens (tables and steppers) scroll within their own preview, never the window. */
2750
+ .studio-layout-card.is-screen,
2751
+ .studio-gallery-demo {
2752
+ min-width: 0;
2753
+ max-width: 100%;
2754
+ overflow-x: auto;
2755
+ }
2756
+ @container (max-width: 800px) {
2757
+ .studio-topbar {
2758
+ position: sticky;
2759
+ top: 0;
2760
+ z-index: 4;
2761
+ flex-shrink: 0;
2762
+ }
2763
+ .studio-nav .studio-preview-tab {
2764
+ display: flex;
2765
+ margin-left: auto;
2766
+ }
2767
+ .studio-dialog:not([data-compact-preview]) .studio-preview,
2768
+ .studio-dialog[data-compact-preview] .studio-editor {
2769
+ display: none;
2770
+ }
2771
+ }
2772
+
2773
+ .studio-window-popout {
2774
+ position: absolute;
2775
+ top: 20px;
2776
+ right: 50px;
2777
+ z-index: 5;
2778
+ display: grid;
2779
+ place-items: center;
2780
+ width: 24px;
2781
+ height: 24px;
2782
+ border: 0;
2783
+ border-radius: 5px;
2784
+ color: #858585;
2785
+ background: transparent;
2786
+ }
2787
+ .studio-window-popout:focus-visible {
2788
+ outline: 2px solid #555;
2789
+ outline-offset: -2px;
2790
+ }
2791
+ /* Pop-out and minimize share the top-right corner (minimize outermost); the preview heading leaves them room. */
2792
+ .studio-preview-actions {
2793
+ padding-right: 68px;
2794
+ }
2795
+ @container (max-width: 1050px) {
2796
+ .studio-window-popout {
2797
+ top: 18px;
2798
+ }
2799
+ }
2800
+ @container (max-width: 800px) {
2801
+ .studio-window-popout {
2802
+ top: 10px;
2803
+ right: 44px;
2804
+ }
2805
+ .studio-topbar {
2806
+ padding-right: 80px;
2807
+ }
2808
+ .studio-preview-actions {
2809
+ padding-right: 0;
2810
+ }
2811
+ }
2812
+ [data-povio-ui-popout] .studio-overlay {
2813
+ padding: 0;
2814
+ }
2815
+ [data-povio-ui-popout] .studio-modal-popout {
2816
+ width: 100vw;
2817
+ height: 100dvh;
2818
+ border-radius: 0;
2819
+ box-shadow: none;
2820
+ }
2821
+
2822
+ @container (max-width: 800px) {
2823
+ .studio-topbar,
2824
+ .studio-modal-popout .studio-topbar {
2825
+ padding-right: 16px;
2826
+ }
2827
+ /* Leaves the window controls' corner free with the same 8px gap they keep between themselves. */
2828
+ .studio-topbar-controls {
2829
+ margin-right: 54px;
2830
+ }
2831
+ }
2832
+ .studio-palette-native {
2833
+ position: relative;
2834
+ }
2835
+ .studio-palette-native > select {
2836
+ position: absolute;
2837
+ inset: 0;
2838
+ width: 100%;
2839
+ height: 100%;
2840
+ opacity: 0;
2841
+ cursor: pointer;
2842
+ }
2843
+ .studio-palette-native:focus-within {
2844
+ outline: 2px solid #797979;
2845
+ outline-offset: 2px;
2846
+ border-radius: 4px;
2847
+ }
2848
+
2849
+ .studio-window-minimize {
2850
+ position: absolute;
2851
+ top: 20px;
2852
+ right: 18px;
2853
+ z-index: 5;
2854
+ display: grid;
2855
+ place-items: center;
2856
+ width: 24px;
2857
+ height: 24px;
2858
+ padding: 0;
2859
+ border: 0;
2860
+ border-radius: 5px;
2861
+ color: #858585;
2862
+ background: transparent;
2863
+ }
2864
+ .studio-window-minimize:focus-visible {
2865
+ outline: 2px solid #555;
2866
+ outline-offset: -2px;
2867
+ }
2868
+ @container (max-width: 1050px) {
2869
+ .studio-window-minimize {
2870
+ top: 18px;
2871
+ }
2872
+ }
2873
+ @container (max-width: 800px) {
2874
+ .studio-window-minimize {
2875
+ top: 10px;
2876
+ right: 12px;
2877
+ }
2878
+ .studio-preview-actions {
2879
+ padding-right: 0;
2880
+ }
2881
+ }
2882
+ .studio-floating-launcher {
2883
+ position: fixed;
2884
+ z-index: 1000;
2885
+ display: flex;
2886
+ align-items: center;
2887
+ gap: 10px;
2888
+ padding: 6px 10px;
2889
+ border: 1px solid #555;
2890
+ border-radius: 999px;
2891
+ background: #292929;
2892
+ color: #fff;
2893
+ box-shadow: 0 4px 16px #0003;
2894
+ font:
2895
+ 600 10px/1.4 "Inter Variable",
2896
+ Inter,
2897
+ sans-serif;
2898
+ cursor: grab;
2899
+ touch-action: none;
2900
+ user-select: none;
2901
+ }
2902
+ .studio-floating-launcher:active {
2903
+ cursor: grabbing;
2904
+ }
2905
+ .studio-floating-launcher:focus-visible {
2906
+ outline: 2px solid #555;
2907
+ outline-offset: 3px;
2908
+ }
2909
+
2910
+ /* Live-preview inspection keeps the canvas and property sidebar independently scrollable. */
2911
+ .studio-preview:has(.studio-hover-inspector) {
2912
+ display: flex;
2913
+ flex-direction: column;
2914
+ overflow: hidden;
2915
+ min-height: 0;
2916
+ }
2917
+ .studio-preview-heading,
2918
+ .studio-preview-note {
2919
+ flex-shrink: 0;
2920
+ }
2921
+ .studio-hover-inspector {
2922
+ display: grid;
2923
+ grid-template-columns: minmax(0, 1fr);
2924
+ grid-template-rows: auto minmax(0, 1fr);
2925
+ grid-auto-rows: minmax(0, 1fr);
2926
+ flex: 1;
2927
+ min-width: 0;
2928
+ min-height: 0;
2929
+ gap: 16px;
2930
+ container: studio-inspection / inline-size;
2931
+ }
2932
+ .studio-hover-inspector.has-inspector {
2933
+ grid-template-columns: minmax(0, 1fr) 270px;
2934
+ }
2935
+ .studio-inspector-toolbar {
2936
+ grid-column: 1 / -1;
2937
+ display: flex;
2938
+ align-items: center;
2939
+ justify-content: space-between;
2940
+ flex-wrap: wrap;
2941
+ gap: 8px;
2942
+ color: #8b8b8b;
2943
+ font-size: 10px;
2944
+ }
2945
+ .studio-inspector-toolbar .studio-mode button {
2946
+ padding: 4px 8px;
2947
+ font-size: 10px;
2948
+ }
2949
+ .studio-inspector-canvas-shell {
2950
+ position: relative;
2951
+ min-width: 0;
2952
+ min-height: 0;
2953
+ height: 100%;
2954
+ }
2955
+ .studio-inspector-canvas {
2956
+ height: 100%;
2957
+ min-height: 0;
2958
+ overflow: auto;
2959
+ overscroll-behavior: contain;
2960
+ }
2961
+ .studio-hover-outline-layer {
2962
+ position: absolute;
2963
+ inset: 0;
2964
+ overflow: hidden;
2965
+ pointer-events: none;
2966
+ z-index: 2;
2967
+ }
2968
+ .studio-hover-outline {
2969
+ position: absolute;
2970
+ border: 1px solid #8b5cf6;
2971
+ box-shadow: 0 0 0 1px #8b5cf633;
2972
+ }
2973
+ .studio-hover-outline > span {
2974
+ position: absolute;
2975
+ top: 0;
2976
+ left: 0;
2977
+ transform: translateY(-100%);
2978
+ max-width: 280px;
2979
+ padding: 2px 5px;
2980
+ border-radius: 3px 3px 0 0;
2981
+ background: #7c3aed;
2982
+ color: #fff;
2983
+ font:
2984
+ 10px/1.5 "Inter Variable",
2985
+ sans-serif;
2986
+ white-space: nowrap;
2987
+ }
2988
+ .studio-inspector-panel {
2989
+ grid-column: 2;
2990
+ position: relative;
2991
+ align-self: stretch;
2992
+ height: 100%;
2993
+ min-width: 0;
2994
+ min-height: 0;
2995
+ overflow: auto;
2996
+ box-sizing: border-box;
2997
+ border: 1px solid #dedde4;
2998
+ border-radius: 10px;
2999
+ background: #fff;
3000
+ color: #292730;
3001
+ font:
3002
+ 10px/1.5 "Inter Variable",
3003
+ Inter,
3004
+ sans-serif;
3005
+ overscroll-behavior: contain;
3006
+ }
3007
+ .studio-inspector-panel > header {
3008
+ position: sticky;
3009
+ top: 0;
3010
+ z-index: 1;
3011
+ display: flex;
3012
+ align-items: center;
3013
+ gap: 4px;
3014
+ padding: 6px 12px;
3015
+ border-bottom: 1px solid #efedf3;
3016
+ background: #fff;
3017
+ }
3018
+ .studio-inspector-panel > header > strong {
3019
+ flex: 1;
3020
+ font-size: 10px;
3021
+ }
3022
+ .studio-inspector-panel button {
3023
+ border: 0;
3024
+ border-radius: 4px;
3025
+ background: transparent;
3026
+ color: #716c7d;
3027
+ cursor: pointer;
3028
+ }
3029
+ .studio-inspector-panel > header button {
3030
+ display: grid;
3031
+ place-items: center;
3032
+ padding: 5px;
3033
+ }
3034
+ .studio-inspector-panel button[aria-pressed="true"] {
3035
+ background: #ede9fe;
3036
+ color: #7c3aed;
3037
+ }
3038
+ .studio-inspector-panel button:focus-visible {
3039
+ outline: 2px solid #8b5cf6;
3040
+ outline-offset: 1px;
3041
+ }
3042
+ .studio-inspector-panel section {
3043
+ border-top: 1px solid #efedf3;
3044
+ padding: 8px 12px;
3045
+ }
3046
+ .studio-inspector-panel h3 {
3047
+ margin: 0 0 7px;
3048
+ font-size: 10px;
3049
+ font-weight: 600;
3050
+ color: #928a9d;
3051
+ text-transform: uppercase;
3052
+ letter-spacing: 0.6px;
3053
+ }
3054
+ .studio-inspector-section-heading {
3055
+ display: flex;
3056
+ align-items: center;
3057
+ justify-content: space-between;
3058
+ margin-bottom: 10px;
3059
+ }
3060
+ .studio-inspector-section-heading h3 {
3061
+ margin: 0;
3062
+ }
3063
+ .studio-inspector-section-heading > span {
3064
+ padding: 1px 5px;
3065
+ border-radius: 4px;
3066
+ background: #f4f4f4;
3067
+ color: #777;
3068
+ font-size: 10px;
3069
+ }
3070
+ .studio-inspector-panel dl {
3071
+ margin: 0;
3072
+ }
3073
+ .studio-inspector-panel dl > div {
3074
+ display: grid;
3075
+ grid-template-columns: 56px minmax(0, 1fr);
3076
+ align-items: center;
3077
+ gap: 4px;
3078
+ padding: 1px 0;
3079
+ }
3080
+ .studio-inspector-panel dt {
3081
+ color: #817b8b;
3082
+ }
3083
+ .studio-inspector-panel dd {
3084
+ display: flex;
3085
+ margin: 0;
3086
+ min-width: 0;
3087
+ }
3088
+ /* A single-line chip: swatch, variable name (shortened first), then the value (shortened last). */
3089
+ .studio-inspector-panel .studio-inspector-chip {
3090
+ display: flex;
3091
+ align-items: center;
3092
+ gap: 4px;
3093
+ width: 100%;
3094
+ min-width: 0;
3095
+ height: 22px;
3096
+ padding: 0 6px;
3097
+ border: 0;
3098
+ border-radius: 4px;
3099
+ background: #f5f5f6;
3100
+ color: #3e3c42;
3101
+ font-size: 10px;
3102
+ text-align: left;
3103
+ white-space: nowrap;
3104
+ }
3105
+ .studio-inspector-panel button.studio-inspector-chip {
3106
+ background: #f3effb;
3107
+ color: #6a46a8;
3108
+ }
3109
+ .studio-inspector-panel button.studio-inspector-chip:hover {
3110
+ background: #ebe4f8;
3111
+ }
3112
+ .studio-inspector-chip > i {
3113
+ width: 12px;
3114
+ height: 12px;
3115
+ border: 1px solid #0002;
3116
+ border-radius: 3px;
3117
+ flex-shrink: 0;
3118
+ }
3119
+ .studio-inspector-chip > span {
3120
+ min-width: 0;
3121
+ overflow: hidden;
3122
+ text-overflow: ellipsis;
3123
+ }
3124
+ .studio-inspector-chip-name {
3125
+ flex: 0 3 auto;
3126
+ }
3127
+ .studio-inspector-chip-value {
3128
+ flex: 0 1 auto;
3129
+ font-variant-numeric: tabular-nums;
3130
+ }
3131
+ /* Beside a variable the value never truncates; the variable name gives way, and its full name is in the tooltip. */
3132
+ .studio-inspector-chip-name + .studio-inspector-chip-value {
3133
+ flex-shrink: 0;
3134
+ margin-left: auto;
3135
+ padding-left: 4px;
3136
+ color: #8a8492;
3137
+ }
3138
+ .studio-inspector-empty {
3139
+ margin: 0;
3140
+ padding: 16px 12px;
3141
+ color: #89838e;
3142
+ }
3143
+ .studio-box-model {
3144
+ margin: 0;
3145
+ padding: 8px;
3146
+ border-radius: 7px;
3147
+ background: #fafafa;
3148
+ color: #393939;
3149
+ }
3150
+ .studio-box-model figcaption {
3151
+ margin-top: 6px;
3152
+ text-align: center;
3153
+ color: #8b8b8b;
3154
+ font-size: 10px;
3155
+ }
3156
+ .studio-box-layer {
3157
+ position: relative;
3158
+ padding: 24px;
3159
+ box-sizing: border-box;
3160
+ font:
3161
+ 10px/1.3 "Inter Variable",
3162
+ sans-serif;
3163
+ }
3164
+ .studio-box-layer.is-position {
3165
+ border: 1px dotted #b8b8b8;
3166
+ }
3167
+ .studio-box-layer.is-margin {
3168
+ border: 1px dashed #b8b8b8;
3169
+ }
3170
+ .studio-box-layer.is-border {
3171
+ border: 1px solid #b8b8b8;
3172
+ }
3173
+ .studio-box-layer.is-padding {
3174
+ border: 1px dashed #a7a7a7;
3175
+ background: #e9e9e9;
3176
+ }
3177
+ .studio-box-name {
3178
+ position: absolute;
3179
+ top: -7px;
3180
+ left: 8px;
3181
+ padding: 0 3px;
3182
+ background: #fafafa;
3183
+ color: #747474;
3184
+ font-size: 10px;
3185
+ }
3186
+ .studio-box-layer.is-padding > .studio-box-name {
3187
+ background: #e9e9e9;
3188
+ }
3189
+ .studio-box-value {
3190
+ position: absolute;
3191
+ font-variant-numeric: tabular-nums;
3192
+ }
3193
+ .studio-box-value.is-top {
3194
+ top: 3px;
3195
+ left: 50%;
3196
+ transform: translateX(-50%);
3197
+ }
3198
+ .studio-box-value.is-bottom {
3199
+ bottom: 3px;
3200
+ left: 50%;
3201
+ transform: translateX(-50%);
3202
+ }
3203
+ .studio-box-value.is-left {
3204
+ left: 3px;
3205
+ top: 50%;
3206
+ transform: translateY(-50%);
3207
+ }
3208
+ .studio-box-value.is-right {
3209
+ right: 3px;
3210
+ top: 50%;
3211
+ transform: translateY(-50%);
3212
+ }
3213
+ .studio-inspector-panel .studio-box-value {
3214
+ padding: 0;
3215
+ border-radius: 2px;
3216
+ color: inherit;
3217
+ line-height: 1.3;
3218
+ font-size: 10px;
3219
+ }
3220
+ .studio-inspector-panel button.studio-box-value[data-token] {
3221
+ text-decoration: underline dotted;
3222
+ text-underline-offset: 2px;
3223
+ }
3224
+ .studio-box-radius {
3225
+ position: absolute;
3226
+ padding: 1px 2px;
3227
+ border-radius: 3px;
3228
+ background: #f5f5f5;
3229
+ color: #777;
3230
+ font-size: 10px;
3231
+ line-height: 1;
3232
+ }
3233
+ .studio-box-radius.is-topLeft {
3234
+ top: 3px;
3235
+ left: 3px;
3236
+ }
3237
+ .studio-box-radius.is-topRight {
3238
+ top: 3px;
3239
+ right: 3px;
3240
+ }
3241
+ .studio-box-radius.is-bottomLeft {
3242
+ bottom: 3px;
3243
+ left: 3px;
3244
+ }
3245
+ .studio-box-radius.is-bottomRight {
3246
+ bottom: 3px;
3247
+ right: 3px;
3248
+ }
3249
+ .studio-inspector-panel .studio-box-radius {
3250
+ padding: 1px;
3251
+ color: #777;
3252
+ font-size: 10px;
3253
+ line-height: 1;
3254
+ }
3255
+ .studio-inspector-panel button.studio-box-radius[data-token] {
3256
+ text-decoration: underline dotted;
3257
+ }
3258
+ .studio-box-content {
3259
+ min-width: 0;
3260
+ padding: 5px 2px;
3261
+ border: 1px solid #b8b8b8;
3262
+ background: #fafafa;
3263
+ text-align: center;
3264
+ font-variant-numeric: tabular-nums;
3265
+ }
3266
+ .studio-box-dimensions {
3267
+ display: flex;
3268
+ justify-content: center;
3269
+ align-items: center;
3270
+ flex-wrap: wrap;
3271
+ gap: 2px;
3272
+ font-size: 10px;
3273
+ }
3274
+ .studio-box-gaps {
3275
+ display: flex;
3276
+ justify-content: center;
3277
+ margin-top: 12px;
3278
+ padding: 12px;
3279
+ border: 1px solid #e0e0e0;
3280
+ border-radius: 5px;
3281
+ }
3282
+ .studio-gap-grid {
3283
+ display: grid;
3284
+ width: 130px;
3285
+ max-width: 100%;
3286
+ align-items: center;
3287
+ justify-items: center;
3288
+ }
3289
+ .studio-gap-grid i {
3290
+ width: 100%;
3291
+ height: 100%;
3292
+ box-sizing: border-box;
3293
+ border: 1px solid #bdbdbd;
3294
+ border-radius: 2px;
3295
+ background: #e9e9e9;
3296
+ }
3297
+ .studio-gap-grid i:nth-child(1) {
3298
+ grid-column: 1;
3299
+ grid-row: 1;
3300
+ }
3301
+ .studio-gap-grid i:nth-child(2) {
3302
+ grid-column: 3;
3303
+ grid-row: 1;
3304
+ }
3305
+ .studio-gap-grid i:nth-child(3) {
3306
+ grid-column: 1;
3307
+ grid-row: 3;
3308
+ }
3309
+ .studio-gap-grid i:nth-child(4) {
3310
+ grid-column: 3;
3311
+ grid-row: 3;
3312
+ }
3313
+ .studio-gap-number {
3314
+ color: #555;
3315
+ font-size: 10px;
3316
+ }
3317
+ .studio-gap-number.is-column {
3318
+ grid-column: 2;
3319
+ grid-row: 1;
3320
+ }
3321
+ .studio-gap-number.is-row {
3322
+ grid-column: 1;
3323
+ grid-row: 2;
3324
+ }
3325
+ .studio-inspector-panel button.studio-gap-number[data-token] {
3326
+ padding: 0;
3327
+ text-decoration: underline dotted;
3328
+ font-size: 10px;
3329
+ }
3330
+ .studio-box-layer.is-position,
3331
+ .studio-box-layer.is-position .studio-box-layer {
3332
+ padding: 16px;
3333
+ }
3334
+ @container studio-inspection (max-width: 620px) {
3335
+ .studio-inspector-canvas-shell,
3336
+ .studio-inspector-panel {
3337
+ grid-column: 1 / -1;
3338
+ }
3339
+ .studio-inspector-canvas-shell {
3340
+ grid-row: 2;
3341
+ }
3342
+ .studio-inspector-panel {
3343
+ grid-row: 3;
3344
+ }
3345
+ }
3346
+ @container (max-width: 800px) {
3347
+ .studio-preview:has(.studio-hover-inspector) {
3348
+ height: max(420px, calc(100dvh - 220px));
3349
+ }
3350
+ }
3351
+ .studio-box-layer.is-border:has(.studio-box-radius) {
3352
+ border-color: transparent;
3353
+ }
3354
+ .studio-box-layer.is-border:has(.studio-box-radius)::before {
3355
+ content: "";
3356
+ position: absolute;
3357
+ inset: -3px;
3358
+ border: 1px solid #b8b8b8;
3359
+ border-radius: inherit;
3360
+ pointer-events: none;
3361
+ }
3362
+ .studio-box-radius {
3363
+ z-index: 1;
3364
+ }
3365
+ .studio-box-radius.is-topLeft {
3366
+ top: 4px;
3367
+ left: 4px;
3368
+ }
3369
+ .studio-box-radius.is-topRight {
3370
+ top: 4px;
3371
+ right: 4px;
3372
+ }
3373
+ .studio-box-radius.is-bottomLeft {
3374
+ bottom: 4px;
3375
+ left: 4px;
3376
+ }
3377
+ .studio-box-radius.is-bottomRight {
3378
+ bottom: 4px;
3379
+ right: 4px;
3380
+ }
3381
+
3382
+ .studio-measure-regions {
3383
+ position: absolute;
3384
+ inset: 0;
3385
+ pointer-events: none;
3386
+ }
3387
+ .studio-measure-region {
3388
+ position: absolute;
3389
+ box-sizing: border-box;
3390
+ background: #7c3aed88;
3391
+ color: #4c1d95;
3392
+ box-shadow:
3393
+ inset 0 0 0 1px currentColor,
3394
+ 0 0 0 1px #fff;
3395
+ }
3396
+ .studio-measure-region.is-margin {
3397
+ background: #22c55e88;
3398
+ color: #15803d;
3399
+ }
3400
+ .studio-measure-region.is-border {
3401
+ background: #2563ebbf;
3402
+ color: #1e40af;
3403
+ }
3404
+ .studio-measure-region.is-gap {
3405
+ background: repeating-linear-gradient(45deg, #fb923c88 0 3px, #ea580cbf 3px 5px);
3406
+ color: #c2410c;
3407
+ }
3408
+ .studio-measure-region.is-horizontal {
3409
+ height: 1px !important;
3410
+ border-top: 2px solid currentColor;
3411
+ background: none;
3412
+ }
3413
+ .studio-measure-region.is-vertical {
3414
+ width: 1px !important;
3415
+ border-left: 2px solid currentColor;
3416
+ background: none;
3417
+ }
3418
+ .studio-measure-region.is-horizontal::before,
3419
+ .studio-measure-region.is-horizontal::after {
3420
+ content: "";
3421
+ position: absolute;
3422
+ top: -4px;
3423
+ height: 7px;
3424
+ border-left: 2px solid currentColor;
3425
+ }
3426
+ .studio-measure-region.is-horizontal::before {
3427
+ left: 0;
3428
+ }
3429
+ .studio-measure-region.is-horizontal::after {
3430
+ right: 0;
3431
+ }
3432
+ .studio-measure-region.is-vertical::before,
3433
+ .studio-measure-region.is-vertical::after {
3434
+ content: "";
3435
+ position: absolute;
3436
+ left: -4px;
3437
+ width: 7px;
3438
+ border-top: 2px solid currentColor;
3439
+ }
3440
+ .studio-measure-region.is-vertical::before {
3441
+ top: 0;
3442
+ }
3443
+ .studio-measure-region.is-vertical::after {
3444
+ bottom: 0;
3445
+ }
3446
+ .studio-measure-region.is-corner {
3447
+ background: none;
3448
+ box-shadow: none;
3449
+ }
3450
+ .studio-measure-region.is-corner svg {
3451
+ display: block;
3452
+ width: 100%;
3453
+ height: 100%;
3454
+ overflow: visible;
3455
+ }
3456
+ .studio-measure-label {
3457
+ position: absolute;
3458
+ max-width: 220px;
3459
+ padding: 3px 6px;
3460
+ border-radius: 4px;
3461
+ background: #6d28d9;
3462
+ color: #fff;
3463
+ font:
3464
+ 10px/1.4 "Inter Variable",
3465
+ sans-serif;
3466
+ box-shadow:
3467
+ 0 0 0 1px #fff,
3468
+ 0 2px 6px #0004;
3469
+ }
3470
+ .studio-inspector-panel .studio-box-dimension-value {
3471
+ padding: 0;
3472
+ font: inherit;
3473
+ font-size: 10px;
3474
+ line-height: 1.3;
3475
+ color: inherit;
3476
+ }
3477
+ .studio-inspector-panel .studio-gap-number {
3478
+ padding: 0;
3479
+ font-size: 10px;
3480
+ }
3481
+ .studio-box-model button[data-box-highlight]:hover,
3482
+ .studio-box-model button[data-box-highlight]:focus-visible {
3483
+ background: #ede9fe;
3484
+ color: #6d28d9;
3485
+ }
3486
+
3487
+ .studio-measure-region.is-corner path {
3488
+ stroke-width: 3px;
3489
+ filter: drop-shadow(0 0 1px #fff);
3490
+ }
3491
+
3492
+ /* The canvas editor is a movable tool window; the workspace remains interactive. */
3493
+ .studio-overlay.studio-overlay-floating {
3494
+ background: transparent;
3495
+ backdrop-filter: none;
3496
+ pointer-events: none;
3497
+ }
3498
+ .studio-overlay-floating > .studio-modal {
3499
+ pointer-events: auto;
3500
+ box-shadow:
3501
+ 0 16px 64px #17102030,
3502
+ 0 0 0 1px #17102018;
3503
+ }
3504
+
3505
+ /* Chrome icons follow the 10px type: 12px beside a label, 14px in icon-only controls. Specimens keep their own sizes. */
3506
+ .studio-overlay
3507
+ svg.lucide:not(
3508
+ :is(
3509
+ .studio-inspector-canvas,
3510
+ .studio-cva-stage,
3511
+ .studio-context-preview,
3512
+ .studio-layout-fullscreen-stage,
3513
+ .studio-gallery-zoom-stage,
3514
+ .studio-sample
3515
+ )
3516
+ *
3517
+ ) {
3518
+ width: 12px;
3519
+ height: 12px;
3520
+ flex-shrink: 0;
3521
+ }
3522
+ .studio-overlay
3523
+ :is(
3524
+ .studio-window-grip,
3525
+ .studio-window-minimize,
3526
+ .studio-window-popout,
3527
+ .studio-palette-reset,
3528
+ .studio-token-value > button,
3529
+ .studio-inspector-panel > header button,
3530
+ .studio-floating-launcher
3531
+ )
3532
+ svg.lucide {
3533
+ width: 14px;
3534
+ height: 14px;
3535
+ }