@riverbankcms/sdk 0.77.0 → 0.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +69 -0
  2. package/dist/{PreviewEditorSidebar-XSX7QKHQ.mjs → PreviewEditorSidebar-RIKFQ72L.mjs} +4916 -4847
  3. package/dist/{PreviewEditorUI-YZNEZ3QD.mjs → PreviewEditorUI-XO7TUWKK.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +194 -184
  6. package/dist/_dts/api/src/accessAdmin.d.ts +5 -0
  7. package/dist/_dts/api/src/billing.d.ts +3 -26
  8. package/dist/_dts/api/src/bookingVerticals.d.ts +4 -0
  9. package/dist/_dts/api/src/content-editor.d.ts +1 -0
  10. package/dist/_dts/api/src/demoDashboardMutationSurfaces.d.ts +46 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  12. package/dist/_dts/api/src/index.d.ts +14 -2
  13. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
  14. package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
  15. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
  16. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
  17. package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
  18. package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
  19. package/dist/_dts/api/src/navigation.d.ts +12 -0
  20. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
  21. package/dist/_dts/api/src/staffAccess.d.ts +79 -0
  22. package/dist/_dts/api/src/types.d.ts +3 -1
  23. package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
  24. package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
  25. package/dist/_dts/blocks/src/customBlockRegistry.d.ts +20 -1
  26. package/dist/_dts/blocks/src/index.d.ts +3 -2
  27. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  28. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  29. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  30. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  31. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  32. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
  34. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  35. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +21 -21
  37. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  38. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  39. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  40. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +2 -2
  41. package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
  42. package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
  43. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  44. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
  45. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +5 -0
  46. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -29
  47. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
  48. package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
  49. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
  50. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
  51. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  52. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  53. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
  54. package/dist/_dts/blocks/src/system/runtime/components/multi-step/runtimeFormValidation.d.ts +28 -0
  55. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
  56. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
  57. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
  59. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
  60. package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
  63. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
  64. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
  67. package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
  68. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
  69. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  70. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  71. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +4 -4
  72. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  73. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  74. package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
  75. package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
  76. package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
  77. package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
  78. package/dist/_dts/content-editor/src/index.d.ts +5 -0
  79. package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
  80. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  81. package/dist/_dts/content-model/src/index.d.ts +1 -0
  82. package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
  83. package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
  84. package/dist/_dts/core/src/csv-cells.d.ts +10 -0
  85. package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
  86. package/dist/_dts/core/src/csv-escape.d.ts +1 -0
  87. package/dist/_dts/core/src/csv-filename.d.ts +18 -0
  88. package/dist/_dts/core/src/csv-render.d.ts +4 -0
  89. package/dist/_dts/core/src/csv-types.d.ts +116 -0
  90. package/dist/_dts/core/src/currency-format.d.ts +4 -0
  91. package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
  92. package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
  93. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
  94. package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
  95. package/dist/_dts/core/src/duration.d.ts +14 -0
  96. package/dist/_dts/core/src/email-format.d.ts +10 -0
  97. package/dist/_dts/core/src/field-errors.d.ts +1 -0
  98. package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
  99. package/dist/_dts/core/src/index.d.ts +20 -0
  100. package/dist/_dts/core/src/number-input.d.ts +22 -0
  101. package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
  102. package/dist/_dts/core/src/slug.d.ts +39 -0
  103. package/dist/_dts/core/src/string.d.ts +19 -0
  104. package/dist/_dts/core/src/uuid.d.ts +6 -0
  105. package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
  106. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
  107. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
  108. package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
  109. package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
  110. package/dist/_dts/media-core/src/filename.d.ts +1 -0
  111. package/dist/_dts/media-core/src/index.d.ts +10 -0
  112. package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
  113. package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
  114. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
  115. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
  116. package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
  117. package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
  118. package/dist/_dts/path-utils/src/index.d.ts +8 -0
  119. package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
  120. package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
  121. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
  122. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
  123. package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
  124. package/dist/_dts/sdk/src/client/error.d.ts +3 -0
  125. package/dist/_dts/sdk/src/client/index.d.ts +2 -2
  126. package/dist/_dts/sdk/src/client/types.d.ts +37 -19
  127. package/dist/_dts/sdk/src/contracts/theme.d.ts +1 -1
  128. package/dist/_dts/sdk/src/index.d.ts +2 -2
  129. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
  130. package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
  131. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  132. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  133. package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
  134. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
  135. package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
  136. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
  137. package/dist/_dts/sdk/src/version.d.ts +1 -1
  138. package/dist/_dts/site-commands/src/commands.d.ts +12 -12
  139. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  140. package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
  141. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
  142. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
  143. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
  144. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
  145. package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
  146. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  147. package/dist/_dts/theme-core/src/index.d.ts +3 -1
  148. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +63 -51
  149. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
  150. package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
  151. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  152. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
  153. package/dist/_dts/theme-core/src/schema.d.ts +90 -48
  154. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
  155. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
  156. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
  157. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -1
  158. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +35 -7
  159. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  160. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +96 -34
  161. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
  162. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
  163. package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
  164. package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
  165. package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
  166. package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
  167. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
  168. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  169. package/dist/{chunk-EAWHBECW.mjs → chunk-F7RTCZYN.mjs} +229 -50
  170. package/dist/{chunk-GSQX43EZ.mjs → chunk-NIDXI46P.mjs} +22 -41
  171. package/dist/{chunk-WLQBJN2Z.mjs → chunk-OECWLDHN.mjs} +4538 -1911
  172. package/dist/{chunk-VX7B5VAC.mjs → chunk-SVMMM2NA.mjs} +8 -0
  173. package/dist/{chunk-6SMUFTXD.mjs → chunk-SXOLGNMX.mjs} +1 -1
  174. package/dist/{chunk-ANKDYZ2E.mjs → chunk-TXDES5P2.mjs} +2 -2
  175. package/dist/cli/index.mjs +2036 -594
  176. package/dist/client/{accordion-RZMQSYLR.mjs → accordion-EVDEOUPR.mjs} +2 -2
  177. package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-DIHBLC64.mjs} +27 -30
  178. package/dist/client/bookings.mjs +3707 -259
  179. package/dist/client/{carousel-LDX47ZIK.mjs → carousel-FEBQHIWI.mjs} +3 -4
  180. package/dist/client/{cart-RGXDS5F4.mjs → cart-7CKSXAE4.mjs} +8 -8
  181. package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WKYCANLV.mjs} +8 -8
  182. package/dist/client/{chunk-JNC7CGHX.mjs → chunk-2SAVKN2M.mjs} +2 -2
  183. package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-36WJCERQ.mjs} +1 -1
  184. package/dist/client/{chunk-R56FQ3RR.mjs → chunk-65F47D7Y.mjs} +280 -71
  185. package/dist/client/{chunk-L3DNHIJX.mjs → chunk-GUK2FPXQ.mjs} +23 -45
  186. package/dist/client/{chunk-PMAIXMAB.mjs → chunk-IVNCUVAV.mjs} +26 -21
  187. package/dist/client/{chunk-II7O4XN3.mjs → chunk-OFMSCGNY.mjs} +2 -2
  188. package/dist/client/chunk-PD6NBCEY.mjs +66 -0
  189. package/dist/client/{chunk-GMVTOKYG.mjs → chunk-RV6FX7UH.mjs} +510 -64
  190. package/dist/client/{chunk-E2TDNXCL.mjs → chunk-RZDWX7QW.mjs} +2 -1
  191. package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
  192. package/dist/client/{chunk-JEZECJ3W.mjs → chunk-VPPMNXCF.mjs} +129 -3
  193. package/dist/client/{chunk-UFSWADAO.mjs → chunk-YDSEG6GZ.mjs} +5 -66
  194. package/dist/client/client.mjs +8983 -6152
  195. package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-5QF2PHKM.mjs} +14 -11
  196. package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-4ZOSETDU.mjs} +9 -9
  197. package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-WQGU7JUX.mjs} +9 -9
  198. package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-AYWVUJ5Y.mjs} +9 -9
  199. package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-NT7C6UT5.mjs} +9 -9
  200. package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-OH24F4ZJ.mjs} +9 -9
  201. package/dist/client/{form-ETFZFATW.mjs → form-7L42SRBB.mjs} +6 -6
  202. package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-OZRZNZ52.mjs} +3 -3
  203. package/dist/client/hooks.mjs +1388 -427
  204. package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-ZBXRPQ7C.mjs} +2 -2
  205. package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-SNAGFF2I.mjs} +3 -3
  206. package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-I46BOFGV.mjs} +8 -8
  207. package/dist/client/{productList-A5RO5WIS.mjs → productList-BOYHTYI6.mjs} +8 -8
  208. package/dist/client/rendering/client.mjs +7090 -2645
  209. package/dist/client/rendering/islands.mjs +19 -19
  210. package/dist/client/rendering.mjs +7395 -4767
  211. package/dist/client/{shop-L4MZH4I2.mjs → shop-XTXPZTKR.mjs} +8 -8
  212. package/dist/preview-next/before-render.mjs +8 -0
  213. package/dist/preview-next/client/runtime.mjs +5 -5
  214. package/dist/preview-next/editor-chrome.css +10 -0
  215. package/dist/preview-next/middleware.mjs +8 -0
  216. package/dist/{sdk-runtime-Q6MTR4KL.mjs → sdk-runtime-ZJLKC6DR.mjs} +6 -6
  217. package/dist/server/components.mjs +4175 -2480
  218. package/dist/server/config-validation.mjs +1619 -658
  219. package/dist/server/config.mjs +1619 -658
  220. package/dist/server/data.mjs +1388 -427
  221. package/dist/server/index.mjs +488 -246
  222. package/dist/server/next.mjs +5607 -3354
  223. package/dist/server/page-converter.mjs +912 -259
  224. package/dist/server/prebuild.mjs +1 -1
  225. package/dist/server/rendering/server.mjs +4176 -2481
  226. package/dist/server/rendering.mjs +4194 -2486
  227. package/dist/server/routing.mjs +2078 -639
  228. package/dist/server/server.mjs +1886 -685
  229. package/dist/server/theme-bridge.mjs +4441 -1300
  230. package/dist/server/theme.mjs +89 -12
  231. package/dist/styles/index.css +1576 -1083
  232. package/package.json +2 -1
  233. package/dist/SdkPreviewModeRuntime-5FS5E6BI.mjs +0 -8
  234. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
  235. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
  236. package/dist/client/chunk-OJPZEZU2.mjs +0 -31
  237. package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
@@ -136,6 +136,12 @@
136
136
  }
137
137
 
138
138
  /* Display */
139
+ .rb-min-h-screen {
140
+ min-height: 100vh;
141
+ }
142
+ .rb-min-h-full {
143
+ min-height: 100%;
144
+ }
139
145
  .rb-block {
140
146
  display: block;
141
147
  }
@@ -454,9 +460,21 @@
454
460
  }
455
461
 
456
462
  /* Grid */
463
+ .rb-grid-rows-main-footer {
464
+ grid-template-rows: minmax(0, 1fr) auto;
465
+ }
457
466
  .rb-grid-cols-1 {
458
467
  grid-template-columns: repeat(1, minmax(0, 1fr));
459
468
  }
469
+ .rb-row-start-1 {
470
+ grid-row-start: 1;
471
+ }
472
+ .rb-row-start-2 {
473
+ grid-row-start: 2;
474
+ }
475
+ .rb-col-start-1 {
476
+ grid-column-start: 1;
477
+ }
460
478
  .rb-grid-cols-2 {
461
479
  grid-template-columns: repeat(2, minmax(0, 1fr));
462
480
  }
@@ -692,6 +710,17 @@
692
710
  padding-top: 2.5rem;
693
711
  padding-bottom: 2.5rem;
694
712
  }
713
+ :where(.theme-scope)
714
+ [data-site-document-layout-mode="header-overlay"]
715
+ [data-rb-reserved-surface].rb-reserved-surface-main {
716
+ padding-top: calc(var(--rb-reserved-surface-header-offset, 5.5rem) + 2.5rem);
717
+ }
718
+ .rb-preview-editor-offset {
719
+ padding-bottom: calc(
720
+ var(--builder-editor-chrome-offset, 0px) +
721
+ var(--builder-preview-banner-offset, 0px)
722
+ );
723
+ }
695
724
  .rb-py-12 {
696
725
  padding-top: 3rem;
697
726
  padding-bottom: 3rem;
@@ -1651,9 +1680,9 @@
1651
1680
 
1652
1681
 
1653
1682
  @layer rb-theme {
1654
- /* Fallback defaults so preview doesn't look broken before ThemeScope injects vars */
1655
- :root {
1656
- /* --tb-primary: 17 24 39;
1683
+ /* Fallback defaults so preview doesn't look broken before ThemeScope injects vars */
1684
+ :root {
1685
+ /* --tb-primary: 17 24 39;
1657
1686
  --tb-text: 17 24 39;
1658
1687
  --tb-muted: 107 114 128;
1659
1688
  --tb-bg: 255 255 255;
@@ -1675,159 +1704,172 @@
1675
1704
 
1676
1705
  --motion-duration: 180ms;
1677
1706
  --motion-ease: cubic-bezier(.2,.8,.2,1); */
1678
- }
1707
+ }
1679
1708
 
1680
- /* -------------------------------------------------------------------------- */
1681
- /* Shared: Modal */
1682
- /* -------------------------------------------------------------------------- */
1709
+ /* -------------------------------------------------------------------------- */
1710
+ /* Shared: Modal */
1711
+ /* -------------------------------------------------------------------------- */
1683
1712
 
1684
- :where(.theme-scope) .rb-modal-overlay {
1685
- position: fixed;
1686
- inset: 0;
1687
- z-index: var(--rb-modal-z-index, 20000);
1688
- display: grid;
1689
- place-items: center;
1690
- padding: 1rem;
1691
- /* Keep a hard fallback so the overlay never becomes transparent due to invalid vars. */
1692
- background-color: rgba(0, 0, 0, 0.6);
1693
- background: var(--rb-modal-overlay-bg, rgba(0, 0, 0, 0.6));
1694
- }
1713
+ :where(.theme-scope) .rb-modal-overlay {
1714
+ position: fixed;
1715
+ inset: 0;
1716
+ z-index: var(--rb-modal-z-index, 20000);
1717
+ display: grid;
1718
+ place-items: center;
1719
+ padding: 1rem;
1720
+ /* Keep a hard fallback so the overlay never becomes transparent due to invalid vars. */
1721
+ background-color: rgba(0, 0, 0, 0.6);
1722
+ background: var(--rb-modal-overlay-bg, rgba(0, 0, 0, 0.6));
1723
+ }
1695
1724
 
1696
- :where(.theme-scope) .rb-modal {
1697
- width: min(var(--rb-modal-max-width, 560px), 100%);
1698
- background: var(--rb-modal-bg, rgb(var(--tb-surface)));
1699
- border: 1px solid var(--rb-modal-border, rgb(var(--tb-border)));
1700
- border-radius: var(--rb-modal-radius, var(--radius-card));
1701
- box-shadow: var(--rb-modal-shadow, var(--shadow-lg, var(--shadow-elev)));
1702
- }
1725
+ :where(.theme-scope) .rb-modal {
1726
+ width: min(var(--rb-modal-max-width, 560px), 100%);
1727
+ background: var(--rb-modal-bg, rgb(var(--tb-surface)));
1728
+ border: 1px solid var(--rb-modal-border, rgb(var(--tb-border)));
1729
+ border-radius: var(--rb-modal-radius, var(--radius-card));
1730
+ box-shadow: var(--rb-modal-shadow, var(--shadow-lg, var(--shadow-elev)));
1731
+ }
1703
1732
 
1704
- :where(.theme-scope) .rb-modal__header {
1705
- display: flex;
1706
- align-items: center;
1707
- justify-content: space-between;
1708
- gap: 1rem;
1709
- padding: 1rem 1rem 0.75rem;
1710
- border-bottom: 1px solid var(--rb-modal-border, rgb(var(--tb-border)));
1711
- }
1733
+ :where(.theme-scope) .rb-modal__header {
1734
+ display: flex;
1735
+ align-items: center;
1736
+ justify-content: space-between;
1737
+ gap: 1rem;
1738
+ padding: 1rem 1rem 0.75rem;
1739
+ border-bottom: 1px solid var(--rb-modal-border, rgb(var(--tb-border)));
1740
+ }
1712
1741
 
1713
- :where(.theme-scope) .rb-modal__title {
1714
- margin: 0;
1715
- font-family: var(--font-heading);
1716
- font-size: 1.0625rem;
1717
- font-weight: 600;
1718
- color: rgb(var(--tb-text));
1719
- }
1742
+ :where(.theme-scope) .rb-modal__title {
1743
+ margin: 0;
1744
+ font-family: var(--font-heading);
1745
+ font-size: 1.0625rem;
1746
+ font-weight: 600;
1747
+ color: rgb(var(--tb-text));
1748
+ }
1720
1749
 
1721
- :where(.theme-scope) .rb-modal__close {
1722
- background: transparent;
1723
- border: none;
1724
- width: 2.25rem;
1725
- height: 2.25rem;
1726
- padding: 0;
1727
- line-height: 1;
1728
- color: rgb(var(--tb-mutedText));
1729
- cursor: pointer;
1730
- display: grid;
1731
- place-items: center;
1732
- border-radius: var(--radius-control);
1733
- }
1750
+ :where(.theme-scope) .rb-modal__close {
1751
+ background: transparent;
1752
+ border: none;
1753
+ width: 2.25rem;
1754
+ height: 2.25rem;
1755
+ padding: 0;
1756
+ line-height: 1;
1757
+ color: rgb(var(--tb-mutedText));
1758
+ cursor: pointer;
1759
+ display: grid;
1760
+ place-items: center;
1761
+ border-radius: var(--radius-control);
1762
+ }
1734
1763
 
1735
- :where(.theme-scope) .rb-modal__close:hover {
1736
- color: rgb(var(--tb-text));
1737
- background: rgba(var(--tb-border), 0.2);
1738
- }
1764
+ :where(.theme-scope) .rb-modal__close:hover {
1765
+ color: rgb(var(--tb-text));
1766
+ background: rgba(var(--tb-border), 0.2);
1767
+ }
1739
1768
 
1740
- :where(.theme-scope) .rb-modal__close:focus-visible {
1741
- outline: none;
1742
- box-shadow: 0 0 0 3px rgba(var(--tb-primary), 0.15);
1743
- }
1769
+ :where(.theme-scope) .rb-modal__close:focus-visible {
1770
+ outline: none;
1771
+ box-shadow: 0 0 0 3px rgba(var(--tb-primary), 0.15);
1772
+ }
1744
1773
 
1745
- :where(.theme-scope) .rb-modal__body {
1746
- padding: 0.875rem 1rem 1rem;
1747
- color: rgb(var(--tb-text));
1748
- font-size: 0.9375rem;
1749
- line-height: 1.45;
1750
- }
1774
+ :where(.theme-scope) .rb-modal__body {
1775
+ padding: 0.875rem 1rem 1rem;
1776
+ color: rgb(var(--tb-text));
1777
+ font-size: 0.9375rem;
1778
+ line-height: 1.45;
1779
+ }
1780
+
1781
+ /* -------------------------------------------------------------------------- */
1782
+ /* Shared: Site document overlay header clearance */
1783
+ /* -------------------------------------------------------------------------- */
1784
+
1785
+ :where(.theme-scope) :where([data-site-document-overlay-content='true']) :where([data-block]):first-of-type > :where([data-slot='section']) > :where(.rb-container) {
1786
+ padding-top: calc(var(--site-overlay-header-clearance, 0px) + var(--site-overlay-opening-content-extra-pad, 0px));
1787
+ }
1751
1788
 
1752
- /* -------------------------------------------------------------------------- */
1753
- /* Header: Mobile nav overlay transitions */
1754
- /* -------------------------------------------------------------------------- */
1789
+ /* -------------------------------------------------------------------------- */
1790
+ /* Header: Mobile nav overlay transitions */
1791
+ /* -------------------------------------------------------------------------- */
1755
1792
 
1756
- /* Keep the overlay in the DOM so we can transition opacity/transform.
1793
+ /* Keep the overlay in the DOM so we can transition opacity/transform.
1757
1794
  JS toggles `aria-hidden` + `inert` (via enhancer), and CSS uses pointer-events
1758
1795
  to prevent interaction while closed. */
1759
- .nav-mobile-overlay {
1760
- pointer-events: none;
1761
- /* Prevent transformed children (panel) from creating viewport scrollbars
1796
+ .nav-mobile-overlay {
1797
+ pointer-events: none;
1798
+ /* Prevent transformed children (panel) from creating viewport scrollbars
1762
1799
  during enter/exit transitions. */
1763
- overflow: hidden;
1764
- }
1765
-
1766
- .nav-mobile-overlay[aria-hidden="false"] {
1767
- pointer-events: auto;
1768
- }
1800
+ overflow: hidden;
1801
+ }
1769
1802
 
1770
- .nav-mobile-overlay .nav-mobile-backdrop {
1771
- opacity: 0;
1772
- transition: opacity var(--motion-duration, 180ms) var(--motion-ease, cubic-bezier(.2,.8,.2,1));
1773
- }
1803
+ .nav-mobile-overlay[aria-hidden='false'] {
1804
+ pointer-events: auto;
1805
+ }
1774
1806
 
1775
- .nav-mobile-overlay[aria-hidden="false"] .nav-mobile-backdrop {
1776
- opacity: 1;
1777
- }
1807
+ .nav-mobile-overlay .nav-mobile-backdrop {
1808
+ opacity: 0;
1809
+ transition: opacity var(--motion-duration, 180ms)
1810
+ var(--motion-ease, cubic-bezier(0.2, 0.8, 0.2, 1));
1811
+ }
1778
1812
 
1779
- .nav-mobile-overlay .nav-mobile-panel {
1780
- opacity: 0;
1781
- transform: translate3d(12px, 0, 0);
1782
- overflow-x: hidden;
1783
- transition:
1784
- opacity var(--motion-duration, 180ms) var(--motion-ease, cubic-bezier(.2,.8,.2,1)),
1785
- transform var(--motion-duration, 180ms) var(--motion-ease, cubic-bezier(.2,.8,.2,1));
1786
- will-change: opacity, transform;
1787
- }
1813
+ .nav-mobile-overlay[aria-hidden='false'] .nav-mobile-backdrop {
1814
+ opacity: 1;
1815
+ }
1788
1816
 
1789
- .nav-mobile-overlay[aria-hidden="false"] .nav-mobile-panel {
1790
- opacity: 1;
1791
- transform: translate3d(0, 0, 0);
1792
- }
1817
+ .nav-mobile-overlay .nav-mobile-panel {
1818
+ opacity: 0;
1819
+ transform: translate3d(12px, 0, 0);
1820
+ overflow-x: hidden;
1821
+ transition:
1822
+ opacity var(--motion-duration, 180ms)
1823
+ var(--motion-ease, cubic-bezier(0.2, 0.8, 0.2, 1)),
1824
+ transform var(--motion-duration, 180ms)
1825
+ var(--motion-ease, cubic-bezier(0.2, 0.8, 0.2, 1));
1826
+ will-change: opacity, transform;
1827
+ }
1793
1828
 
1794
- /* -------------------------------------------------------------------------- */
1795
- /* Header: Mobile toggle hamburger -> X */
1796
- /* -------------------------------------------------------------------------- */
1829
+ .nav-mobile-overlay[aria-hidden='false'] .nav-mobile-panel {
1830
+ opacity: 1;
1831
+ transform: translate3d(0, 0, 0);
1832
+ }
1797
1833
 
1798
- .nav-mobile-toggle .nav-mobile-bar {
1799
- transform-origin: center;
1800
- transition:
1801
- transform var(--motion-duration, 180ms) var(--motion-ease, cubic-bezier(.2,.8,.2,1)),
1802
- opacity var(--motion-duration, 180ms) var(--motion-ease, cubic-bezier(.2,.8,.2,1));
1803
- will-change: transform, opacity;
1804
- }
1834
+ /* -------------------------------------------------------------------------- */
1835
+ /* Header: Mobile toggle hamburger -> X */
1836
+ /* -------------------------------------------------------------------------- */
1805
1837
 
1806
- .nav-mobile-toggle[aria-expanded="true"] .nav-mobile-bar-top {
1807
- transform: translateY(6px) rotate(45deg);
1808
- }
1838
+ .nav-mobile-toggle .nav-mobile-bar {
1839
+ transform-origin: center;
1840
+ transition:
1841
+ transform var(--motion-duration, 180ms)
1842
+ var(--motion-ease, cubic-bezier(0.2, 0.8, 0.2, 1)),
1843
+ opacity var(--motion-duration, 180ms)
1844
+ var(--motion-ease, cubic-bezier(0.2, 0.8, 0.2, 1));
1845
+ will-change: transform, opacity;
1846
+ }
1809
1847
 
1810
- .nav-mobile-toggle[aria-expanded="true"] .nav-mobile-bar-middle {
1811
- opacity: 0;
1812
- }
1848
+ .nav-mobile-toggle[aria-expanded='true'] .nav-mobile-bar-top {
1849
+ transform: translateY(6px) rotate(45deg);
1850
+ }
1813
1851
 
1814
- .nav-mobile-toggle[aria-expanded="true"] .nav-mobile-bar-bottom {
1815
- transform: translateY(-6px) rotate(-45deg);
1816
- }
1852
+ .nav-mobile-toggle[aria-expanded='true'] .nav-mobile-bar-middle {
1853
+ opacity: 0;
1854
+ }
1817
1855
 
1818
- @media (prefers-reduced-motion: reduce) {
1819
- .nav-mobile-overlay .nav-mobile-backdrop,
1820
- .nav-mobile-overlay .nav-mobile-panel {
1821
- transition: none;
1822
- transform: none;
1856
+ .nav-mobile-toggle[aria-expanded='true'] .nav-mobile-bar-bottom {
1857
+ transform: translateY(-6px) rotate(-45deg);
1823
1858
  }
1824
1859
 
1825
- .nav-mobile-toggle .nav-mobile-bar {
1826
- transition: none;
1860
+ @media (prefers-reduced-motion: reduce) {
1861
+ .nav-mobile-overlay .nav-mobile-backdrop,
1862
+ .nav-mobile-overlay .nav-mobile-panel {
1863
+ transition: none;
1864
+ transform: none;
1865
+ }
1866
+
1867
+ .nav-mobile-toggle .nav-mobile-bar {
1868
+ transition: none;
1869
+ }
1827
1870
  }
1828
- }
1829
1871
 
1830
- /*
1872
+ /*
1831
1873
  * Theme Scope Styles
1832
1874
  *
1833
1875
  * IMPORTANT: All :where(.theme-scope) selectors are wrapped in :where() to give them
@@ -1837,782 +1879,830 @@
1837
1879
  * Example: `h4 { color: white; }` will override `:where(:where(.theme-scope)) h4`
1838
1880
  */
1839
1881
 
1840
- :where(:where(.theme-scope)) {
1841
- font-family: var(--font-body);
1842
- letter-spacing: var(--ls-body);
1843
- line-height: var(--lh-body);
1844
- font-weight: var(--font-weight-body);
1845
-
1846
- & h1,
1847
- & h2,
1848
- & h3,
1849
- & h4,
1850
- & h5,
1851
- & h6 {
1852
- font-family: var(--font-heading);
1853
- /* Color is set by generateTypographyCss.ts with full cascade:
1882
+ :where(:where(.theme-scope)) {
1883
+ font-family: var(--font-body);
1884
+ letter-spacing: var(--ls-body);
1885
+ line-height: var(--lh-body);
1886
+ font-weight: var(--font-weight-body);
1887
+
1888
+ & h1,
1889
+ & h2,
1890
+ & h3,
1891
+ & h4,
1892
+ & h5,
1893
+ & h6 {
1894
+ font-family: var(--font-heading);
1895
+ /* Color is set by generateTypographyCss.ts with full cascade:
1854
1896
  --section-heading-color -> --section-text-color -> --hc-hN -> --hc-heading -> inherit */
1855
- font-weight: var(--font-weight-heading);
1856
- text-transform: var(--tt-heading);
1857
- font-variant-caps: var(--fv-heading);
1897
+ font-weight: var(--font-weight-heading);
1898
+ text-transform: var(--tt-heading);
1899
+ font-variant-caps: var(--fv-heading);
1900
+ }
1858
1901
  }
1859
- }
1860
1902
 
1861
- /* Heading typographic overrides (fallback to defaults when not provided) */
1862
- :where(:where(.theme-scope)) h1 {
1863
- letter-spacing: var(--ls-h1, var(--ls-heading));
1864
- line-height: var(--lh-h1, var(--lh-heading));
1865
- font-weight: var(--fw-h1, var(--font-weight-heading));
1866
- }
1867
- :where(:where(.theme-scope)) h2 {
1868
- letter-spacing: var(--ls-h2, var(--ls-heading));
1869
- line-height: var(--lh-h2, var(--lh-heading));
1870
- font-weight: var(--fw-h2, var(--font-weight-heading));
1871
- }
1872
- :where(:where(.theme-scope)) h3 {
1873
- letter-spacing: var(--ls-h3, var(--ls-heading));
1874
- line-height: var(--lh-h3, var(--lh-heading));
1875
- font-weight: var(--fw-h3, var(--font-weight-heading));
1876
- }
1877
- :where(:where(.theme-scope)) h4,
1878
- :where(:where(.theme-scope)) h5,
1879
- :where(:where(.theme-scope)) h6 {
1880
- letter-spacing: var(--ls-heading);
1881
- line-height: var(--lh-heading);
1882
- }
1883
- :where(:where(.theme-scope)) h4 {
1884
- font-weight: var(--fw-h4, var(--font-weight-heading));
1885
- }
1886
- :where(:where(.theme-scope)) h5 {
1887
- font-weight: var(--fw-h5, var(--font-weight-heading));
1888
- }
1889
- :where(:where(.theme-scope)) h6 {
1890
- font-weight: var(--fw-h6, var(--font-weight-heading));
1891
- }
1903
+ /* Heading typographic overrides (fallback to defaults when not provided) */
1904
+ :where(:where(.theme-scope)) h1 {
1905
+ letter-spacing: var(--ls-h1, var(--ls-heading));
1906
+ line-height: var(--lh-h1, var(--lh-heading));
1907
+ font-weight: var(--fw-h1, var(--font-weight-heading));
1908
+ }
1909
+ :where(:where(.theme-scope)) h2 {
1910
+ letter-spacing: var(--ls-h2, var(--ls-heading));
1911
+ line-height: var(--lh-h2, var(--lh-heading));
1912
+ font-weight: var(--fw-h2, var(--font-weight-heading));
1913
+ }
1914
+ :where(:where(.theme-scope)) h3 {
1915
+ letter-spacing: var(--ls-h3, var(--ls-heading));
1916
+ line-height: var(--lh-h3, var(--lh-heading));
1917
+ font-weight: var(--fw-h3, var(--font-weight-heading));
1918
+ }
1919
+ :where(:where(.theme-scope)) h4,
1920
+ :where(:where(.theme-scope)) h5,
1921
+ :where(:where(.theme-scope)) h6 {
1922
+ letter-spacing: var(--ls-heading);
1923
+ line-height: var(--lh-heading);
1924
+ }
1925
+ :where(:where(.theme-scope)) h4 {
1926
+ font-weight: var(--fw-h4, var(--font-weight-heading));
1927
+ }
1928
+ :where(:where(.theme-scope)) h5 {
1929
+ font-weight: var(--fw-h5, var(--font-weight-heading));
1930
+ }
1931
+ :where(:where(.theme-scope)) h6 {
1932
+ font-weight: var(--fw-h6, var(--font-weight-heading));
1933
+ }
1892
1934
 
1893
- /* Rich text element spacing based on theme rhythm */
1894
- :where(.theme-scope) .rb-prose h1 {
1895
- margin-top: calc(var(--rt-space-y) * 1.6);
1896
- margin-bottom: calc(var(--rt-space-y) * 0.8);
1897
- }
1898
- :where(.theme-scope) .rb-prose h2 {
1899
- margin-top: calc(var(--rt-space-y) * 1.4);
1900
- margin-bottom: calc(var(--rt-space-y) * 0.7);
1901
- }
1902
- :where(.theme-scope) .rb-prose h3 {
1903
- margin-top: calc(var(--rt-space-y) * 1.2);
1904
- margin-bottom: calc(var(--rt-space-y) * 0.6);
1905
- }
1906
- :where(.theme-scope) .rb-prose h4 {
1907
- margin-top: calc(var(--rt-space-y) * 1);
1908
- margin-bottom: calc(var(--rt-space-y) * 0.5);
1909
- }
1910
- :where(.theme-scope) .rb-prose h5 {
1911
- margin-top: calc(var(--rt-space-y) * 0.9);
1912
- margin-bottom: calc(var(--rt-space-y) * 0.45);
1913
- }
1914
- :where(.theme-scope) .rb-prose h6 {
1915
- margin-top: calc(var(--rt-space-y) * 0.8);
1916
- margin-bottom: calc(var(--rt-space-y) * 0.4);
1917
- }
1918
- :where(.theme-scope) .rb-prose p {
1919
- margin: var(--rt-space-y) 0;
1920
- }
1921
- :where(.theme-scope) .rb-prose img {
1922
- display: block;
1923
- max-width: 100%;
1924
- height: auto;
1925
- margin: calc(var(--rt-space-y) * 1) 0;
1926
- }
1927
- :where(.theme-scope) .rb-prose ul,
1928
- :where(.theme-scope) .rb-prose ol {
1929
- margin: var(--rt-space-y) 0;
1930
- padding-left: 1.25rem;
1931
- }
1932
- :where(.theme-scope) .rb-prose ul {
1933
- list-style-type: disc;
1934
- }
1935
- :where(.theme-scope) .rb-prose ol {
1936
- list-style-type: decimal;
1937
- }
1938
- :where(.theme-scope) .rb-prose ul ul {
1939
- list-style-type: circle;
1940
- }
1941
- :where(.theme-scope) .rb-prose ul ul ul {
1942
- list-style-type: square;
1943
- }
1944
- :where(.theme-scope) .rb-prose ol ol {
1945
- list-style-type: lower-alpha;
1946
- }
1947
- :where(.theme-scope) .rb-prose ol ol ol {
1948
- list-style-type: lower-roman;
1949
- }
1950
- :where(.theme-scope) .rb-prose blockquote {
1951
- margin: calc(var(--rt-space-y) * 1) 0;
1952
- padding-left: 1rem;
1953
- border-left: 3px solid rgb(var(--tb-border));
1954
- }
1955
- :where(.theme-scope) .rb-prose > :first-child {
1956
- margin-top: 0;
1957
- }
1958
- :where(.theme-scope) .rb-prose > :last-child {
1959
- margin-bottom: 0;
1960
- }
1935
+ /* Rich text element spacing based on theme rhythm */
1936
+ :where(.theme-scope) .rb-prose h1 {
1937
+ margin-top: calc(var(--rt-space-y) * 1.6);
1938
+ margin-bottom: calc(var(--rt-space-y) * 0.8);
1939
+ }
1940
+ :where(.theme-scope) .rb-prose h2 {
1941
+ margin-top: calc(var(--rt-space-y) * 1.4);
1942
+ margin-bottom: calc(var(--rt-space-y) * 0.7);
1943
+ }
1944
+ :where(.theme-scope) .rb-prose h3 {
1945
+ margin-top: calc(var(--rt-space-y) * 1.2);
1946
+ margin-bottom: calc(var(--rt-space-y) * 0.6);
1947
+ }
1948
+ :where(.theme-scope) .rb-prose h4 {
1949
+ margin-top: calc(var(--rt-space-y) * 1);
1950
+ margin-bottom: calc(var(--rt-space-y) * 0.5);
1951
+ }
1952
+ :where(.theme-scope) .rb-prose h5 {
1953
+ margin-top: calc(var(--rt-space-y) * 0.9);
1954
+ margin-bottom: calc(var(--rt-space-y) * 0.45);
1955
+ }
1956
+ :where(.theme-scope) .rb-prose h6 {
1957
+ margin-top: calc(var(--rt-space-y) * 0.8);
1958
+ margin-bottom: calc(var(--rt-space-y) * 0.4);
1959
+ }
1960
+ :where(.theme-scope) .rb-prose p {
1961
+ margin: var(--rt-space-y) 0;
1962
+ }
1963
+ :where(.theme-scope) .rb-prose img {
1964
+ display: block;
1965
+ max-width: 100%;
1966
+ height: auto;
1967
+ margin: calc(var(--rt-space-y) * 1) 0;
1968
+ }
1969
+ :where(.theme-scope) .rb-prose ul,
1970
+ :where(.theme-scope) .rb-prose ol {
1971
+ margin: var(--rt-space-y) 0;
1972
+ padding-left: 1.25rem;
1973
+ }
1974
+ :where(.theme-scope) .rb-prose ul {
1975
+ list-style-type: disc;
1976
+ }
1977
+ :where(.theme-scope) .rb-prose ol {
1978
+ list-style-type: decimal;
1979
+ }
1980
+ :where(.theme-scope) .rb-prose ul ul {
1981
+ list-style-type: circle;
1982
+ }
1983
+ :where(.theme-scope) .rb-prose ul ul ul {
1984
+ list-style-type: square;
1985
+ }
1986
+ :where(.theme-scope) .rb-prose ol ol {
1987
+ list-style-type: lower-alpha;
1988
+ }
1989
+ :where(.theme-scope) .rb-prose ol ol ol {
1990
+ list-style-type: lower-roman;
1991
+ }
1992
+ :where(.theme-scope) .rb-prose blockquote {
1993
+ margin: calc(var(--rt-space-y) * 1) 0;
1994
+ padding-left: 1rem;
1995
+ border-left: 3px solid rgb(var(--tb-border));
1996
+ }
1997
+ :where(.theme-scope) .rb-prose > :first-child {
1998
+ margin-top: 0;
1999
+ }
2000
+ :where(.theme-scope) .rb-prose > :last-child {
2001
+ margin-bottom: 0;
2002
+ }
1961
2003
 
1962
- /* Prose color overrides - use theme CSS variables instead of hardcoded colors
2004
+ /* Prose color overrides - use theme CSS variables instead of hardcoded colors
1963
2005
  * This makes prose elements automatically adapt to light/dark themes */
1964
- :where(.theme-scope) .rb-prose {
1965
- /* Body text inherits from parent, which should already have theme color */
1966
- color: inherit;
1967
- }
2006
+ :where(.theme-scope) .rb-prose {
2007
+ /* Body text inherits from parent, which should already have theme color */
2008
+ color: inherit;
2009
+ }
1968
2010
 
1969
- /* Prose size variants (theme-aware, CSS-only) */
1970
- :where(.theme-scope) {
1971
- /* Body scale + rhythm come from the active theme runtime (ThemeScope) */
1972
- --rb-prose-sm-font-size: calc(var(--fs-body, 16px) * 0.875);
1973
- --rb-prose-sm-line-height: calc(var(--lh-body, 1.65) - 0.05);
2011
+ /* Prose size variants (theme-aware, CSS-only) */
2012
+ :where(.theme-scope) {
2013
+ /* Body scale + rhythm come from the active theme runtime (ThemeScope) */
2014
+ --rb-prose-sm-font-size: calc(var(--fs-body, 16px) * 0.875);
2015
+ --rb-prose-sm-line-height: calc(var(--lh-body, 1.65) - 0.05);
1974
2016
 
1975
- --rb-prose-lg-font-size: calc(var(--fs-body, 16px) * 1.125);
1976
- --rb-prose-lg-line-height: calc(var(--lh-body, 1.65) + 0.1);
2017
+ --rb-prose-lg-font-size: calc(var(--fs-body, 16px) * 1.125);
2018
+ --rb-prose-lg-line-height: calc(var(--lh-body, 1.65) + 0.1);
1977
2019
 
1978
- /* Applied at >= 640px; below that, rb-prose-lg is typically used */
1979
- --rb-prose-xl-sm-font-size: calc(var(--fs-body, 16px) * 1.25);
1980
- --rb-prose-xl-sm-line-height: calc(var(--lh-body, 1.65) + 0.15);
1981
- }
2020
+ /* Applied at >= 640px; below that, rb-prose-lg is typically used */
2021
+ --rb-prose-xl-sm-font-size: calc(var(--fs-body, 16px) * 1.25);
2022
+ --rb-prose-xl-sm-line-height: calc(var(--lh-body, 1.65) + 0.15);
2023
+ }
1982
2024
 
1983
- :where(.theme-scope) .rb-prose-sm {
1984
- font-size: var(--rb-prose-sm-font-size);
1985
- line-height: var(--rb-prose-sm-line-height);
1986
- }
1987
- :where(.theme-scope) .rb-prose-lg {
1988
- font-size: var(--rb-prose-lg-font-size);
1989
- line-height: var(--rb-prose-lg-line-height);
1990
- }
1991
- @media (min-width: 640px) {
1992
- :where(.theme-scope) .rb-prose-xl-sm {
1993
- font-size: var(--rb-prose-xl-sm-font-size);
1994
- line-height: var(--rb-prose-xl-sm-line-height);
2025
+ :where(.theme-scope) .rb-prose-sm {
2026
+ font-size: var(--rb-prose-sm-font-size);
2027
+ line-height: var(--rb-prose-sm-line-height);
2028
+ }
2029
+ :where(.theme-scope) .rb-prose-lg {
2030
+ font-size: var(--rb-prose-lg-font-size);
2031
+ line-height: var(--rb-prose-lg-line-height);
2032
+ }
2033
+ @media (min-width: 640px) {
2034
+ :where(.theme-scope) .rb-prose-xl-sm {
2035
+ font-size: var(--rb-prose-xl-sm-font-size);
2036
+ line-height: var(--rb-prose-xl-sm-line-height);
2037
+ }
1995
2038
  }
1996
- }
1997
2039
 
1998
- /* Neutral prose uses theme text color by default */
1999
- :where(.theme-scope) .rb-prose-neutral {
2000
- color: rgb(var(--tb-text));
2001
- }
2040
+ /* Neutral prose uses theme text color by default */
2041
+ :where(.theme-scope) .rb-prose-neutral {
2042
+ color: rgb(var(--tb-text));
2043
+ }
2002
2044
 
2003
- :where(.theme-scope) .rb-prose p,
2004
- :where(.theme-scope) .rb-prose li {
2005
- /* Body text uses inherited color (set by fragment via textColorStyle) */
2006
- color: inherit;
2007
- }
2045
+ :where(.theme-scope) .rb-prose p,
2046
+ :where(.theme-scope) .rb-prose li {
2047
+ /* Body text uses inherited color (set by fragment via textColorStyle) */
2048
+ color: inherit;
2049
+ }
2008
2050
 
2009
- :where(.theme-scope) .rb-prose h1,
2010
- :where(.theme-scope) .rb-prose h2,
2011
- :where(.theme-scope) .rb-prose h3,
2012
- :where(.theme-scope) .rb-prose h4,
2013
- :where(.theme-scope) .rb-prose h5,
2014
- :where(.theme-scope) .rb-prose h6 {
2015
- /* Headings inherit from parent or use theme text color */
2016
- color: inherit;
2017
- }
2051
+ :where(.theme-scope) .rb-prose h1,
2052
+ :where(.theme-scope) .rb-prose h2,
2053
+ :where(.theme-scope) .rb-prose h3,
2054
+ :where(.theme-scope) .rb-prose h4,
2055
+ :where(.theme-scope) .rb-prose h5,
2056
+ :where(.theme-scope) .rb-prose h6 {
2057
+ /* Headings inherit from parent or use theme text color */
2058
+ color: inherit;
2059
+ }
2018
2060
 
2019
- :where(.theme-scope) .rb-prose strong,
2020
- :where(.theme-scope) .rb-prose b {
2021
- /* Bold text inherits color but increases weight */
2022
- color: inherit;
2023
- font-weight: 600;
2024
- }
2061
+ :where(.theme-scope) .rb-prose strong,
2062
+ :where(.theme-scope) .rb-prose b {
2063
+ /* Bold text inherits color but increases weight */
2064
+ color: inherit;
2065
+ font-weight: 600;
2066
+ }
2025
2067
 
2026
- :where(.theme-scope) .rb-prose em,
2027
- :where(.theme-scope) .rb-prose i {
2028
- /* Italic text inherits color */
2029
- color: inherit;
2030
- }
2068
+ :where(.theme-scope) .rb-prose em,
2069
+ :where(.theme-scope) .rb-prose i {
2070
+ /* Italic text inherits color */
2071
+ color: inherit;
2072
+ }
2031
2073
 
2032
- :where(.theme-scope) .rb-prose a {
2033
- /* Global prose link style with theme-level overrides */
2034
- color: var(--rb-prose-link-color, rgb(var(--tb-primary)));
2035
- text-decoration-line: var(--rb-prose-link-decoration-line, underline);
2036
- text-decoration-style: var(--rb-prose-link-underline-style, solid);
2037
- text-decoration-thickness: var(--rb-prose-link-underline-thickness, from-font);
2038
- text-underline-offset: var(--rb-prose-link-underline-offset, 0.14em);
2039
- text-decoration-color: var(--rb-prose-link-decoration-color, rgba(var(--tb-primary), 0.3));
2040
- transition:
2041
- color 150ms ease,
2042
- text-decoration-color 150ms ease;
2043
- }
2074
+ :where(.theme-scope) .rb-prose a {
2075
+ /* Global prose link style with theme-level overrides */
2076
+ color: var(--rb-prose-link-color, rgb(var(--tb-primary)));
2077
+ text-decoration-line: var(--rb-prose-link-decoration-line, underline);
2078
+ text-decoration-style: var(--rb-prose-link-underline-style, solid);
2079
+ text-decoration-thickness: var(
2080
+ --rb-prose-link-underline-thickness,
2081
+ from-font
2082
+ );
2083
+ text-underline-offset: var(--rb-prose-link-underline-offset, 0.14em);
2084
+ text-decoration-color: var(
2085
+ --rb-prose-link-decoration-color,
2086
+ rgba(var(--tb-primary), 0.3)
2087
+ );
2088
+ transition:
2089
+ color 150ms ease,
2090
+ text-decoration-color 150ms ease;
2091
+ }
2044
2092
 
2045
- :where(.theme-scope) .rb-prose a:hover {
2046
- color: var(--rb-prose-link-hover-color, var(--rb-prose-link-color, rgb(var(--tb-primary))));
2047
- text-decoration-color: var(
2048
- --rb-prose-link-hover-decoration-color,
2049
- var(--rb-prose-link-hover-color, var(--rb-prose-link-color, rgb(var(--tb-primary))))
2050
- );
2051
- }
2093
+ :where(.theme-scope) .rb-prose a:hover {
2094
+ color: var(
2095
+ --rb-prose-link-hover-color,
2096
+ var(--rb-prose-link-color, rgb(var(--tb-primary)))
2097
+ );
2098
+ text-decoration-color: var(
2099
+ --rb-prose-link-hover-decoration-color,
2100
+ var(
2101
+ --rb-prose-link-hover-color,
2102
+ var(--rb-prose-link-color, rgb(var(--tb-primary)))
2103
+ )
2104
+ );
2105
+ }
2052
2106
 
2053
- :where(.theme-scope) .rb-prose blockquote {
2054
- /* Blockquotes use muted text color */
2055
- color: rgb(var(--tb-mutedText));
2056
- border-left-color: rgb(var(--tb-border));
2057
- }
2107
+ :where(.theme-scope) .rb-prose blockquote {
2108
+ /* Blockquotes use muted text color */
2109
+ color: rgb(var(--tb-mutedText));
2110
+ border-left-color: rgb(var(--tb-border));
2111
+ }
2058
2112
 
2059
- :where(.theme-scope) .fragment-quote-body blockquote {
2060
- /* Quote fragment should not get the generic prose blockquote left border/indent. */
2061
- border-left: 0;
2062
- padding-left: 0;
2063
- }
2113
+ :where(.theme-scope) .fragment-quote-body blockquote {
2114
+ /* Quote fragment should not get the generic prose blockquote left border/indent. */
2115
+ border-left: 0;
2116
+ padding-left: 0;
2117
+ }
2064
2118
 
2065
- :where(.theme-scope) .rb-columns-equal-height {
2066
- /* Needed so we can use container query units (`cqw`) for width-based tile sizing. */
2067
- container-type: inline-size;
2119
+ :where(.theme-scope) .rb-columns-equal-height {
2120
+ /* Needed so we can use container query units (`cqw`) for width-based tile sizing. */
2121
+ container-type: inline-size;
2068
2122
 
2069
- --rb-columns-cols: var(--rb-columns-cols-mobile, 1);
2070
- --rb-columns-gap: var(--rb-semantic-gap, 0px);
2071
- --rb-columns-tile-ar: var(--rb-columns-tile-ar, 1);
2123
+ --rb-columns-cols: var(--rb-columns-cols-mobile, 1);
2124
+ --rb-columns-gap: var(--rb-semantic-gap, 0px);
2125
+ --rb-columns-tile-ar: var(--rb-columns-tile-ar, 1);
2072
2126
 
2073
- --rb-columns-tile-w: calc(
2074
- (100cqw - (var(--rb-columns-cols) - 1) * var(--rb-columns-gap)) / var(--rb-columns-cols)
2075
- );
2076
- --rb-columns-tile-h: calc(var(--rb-columns-tile-w) * var(--rb-columns-tile-ar));
2077
- }
2127
+ --rb-columns-tile-w: calc(
2128
+ (100cqw - (var(--rb-columns-cols) - 1) * var(--rb-columns-gap)) /
2129
+ var(--rb-columns-cols)
2130
+ );
2131
+ --rb-columns-tile-h: calc(
2132
+ var(--rb-columns-tile-w) * var(--rb-columns-tile-ar)
2133
+ );
2134
+ }
2078
2135
 
2079
- @media (min-width: 768px) {
2080
- :where(.theme-scope) .rb-columns-equal-height {
2081
- --rb-columns-cols: var(--rb-columns-cols-md, var(--rb-columns-cols));
2136
+ @media (min-width: 768px) {
2137
+ :where(.theme-scope) .rb-columns-equal-height {
2138
+ --rb-columns-cols: var(--rb-columns-cols-md, var(--rb-columns-cols));
2139
+ }
2082
2140
  }
2083
- }
2084
2141
 
2085
- @media (min-width: 1024px) {
2086
- :where(.theme-scope) .rb-columns-equal-height {
2087
- --rb-columns-cols: var(--rb-columns-cols-lg, var(--rb-columns-cols));
2142
+ @media (min-width: 1024px) {
2143
+ :where(.theme-scope) .rb-columns-equal-height {
2144
+ --rb-columns-cols: var(--rb-columns-cols-lg, var(--rb-columns-cols));
2145
+ }
2088
2146
  }
2089
- }
2090
2147
 
2091
- @media (min-width: 1280px) {
2092
- :where(.theme-scope) .rb-columns-equal-height {
2093
- --rb-columns-cols: var(--rb-columns-cols-xl, var(--rb-columns-cols));
2148
+ @media (min-width: 1280px) {
2149
+ :where(.theme-scope) .rb-columns-equal-height {
2150
+ --rb-columns-cols: var(--rb-columns-cols-xl, var(--rb-columns-cols));
2151
+ }
2094
2152
  }
2095
- }
2096
2153
 
2097
- :where(.theme-scope) .rb-columns-equal-height > * {
2098
- height: var(--rb-columns-tile-h);
2099
- }
2154
+ :where(.theme-scope) .rb-columns-equal-height > * {
2155
+ height: var(--rb-columns-tile-h);
2156
+ }
2100
2157
 
2101
- :where(.theme-scope) .rb-columns-equal-height > .rb-h-full {
2102
- /*
2158
+ :where(.theme-scope) .rb-columns-equal-height > .rb-h-full {
2159
+ /*
2103
2160
  Grid items commonly include `rb-h-full` (height: 100%) to stretch within
2104
2161
  their row. In equal-height mode we instead want a fixed tile height so the
2105
2162
  spanning editorial tile doesn't become taller due to its larger width +
2106
2163
  aspect-ratio.
2107
2164
  */
2108
- height: var(--rb-columns-tile-h);
2109
- min-height: var(--rb-columns-tile-h);
2110
- max-height: var(--rb-columns-tile-h);
2111
- }
2165
+ height: var(--rb-columns-tile-h);
2166
+ min-height: var(--rb-columns-tile-h);
2167
+ max-height: var(--rb-columns-tile-h);
2168
+ }
2112
2169
 
2113
- :where(.theme-scope) .rb-columns-equal-height .fragment-image-frame {
2114
- width: 100%;
2115
- height: 100%;
2116
- overflow: hidden;
2117
- }
2170
+ :where(.theme-scope) .rb-columns-equal-height .fragment-image-frame {
2171
+ width: 100%;
2172
+ height: 100%;
2173
+ overflow: hidden;
2174
+ }
2118
2175
 
2119
- :where(.theme-scope) .rb-columns-equal-height .fragment-image {
2120
- width: 100%;
2121
- height: 100%;
2122
- object-fit: cover;
2123
- }
2176
+ :where(.theme-scope) .rb-columns-equal-height .fragment-image {
2177
+ width: 100%;
2178
+ height: 100%;
2179
+ object-fit: cover;
2180
+ }
2124
2181
 
2125
- :where(.theme-scope) .rb-prose code {
2126
- /* Inline code uses text color with surface background */
2127
- color: inherit;
2128
- background-color: rgba(var(--tb-surface), 0.5);
2129
- padding: 0.125rem 0.25rem;
2130
- border-radius: 0.25rem;
2131
- font-size: 0.875em;
2132
- }
2182
+ :where(.theme-scope) .rb-prose code {
2183
+ /* Inline code uses text color with surface background */
2184
+ color: inherit;
2185
+ background-color: rgba(var(--tb-surface), 0.5);
2186
+ padding: 0.125rem 0.25rem;
2187
+ border-radius: 0.25rem;
2188
+ font-size: 0.875em;
2189
+ }
2133
2190
 
2134
- :where(.theme-scope) .rb-prose pre {
2135
- /* Code blocks */
2136
- background-color: rgb(var(--tb-surface));
2137
- color: rgb(var(--tb-text));
2138
- border: 1px solid rgb(var(--tb-border));
2139
- border-radius: 0.5rem;
2140
- padding: 1rem;
2141
- overflow-x: auto;
2142
- }
2191
+ :where(.theme-scope) .rb-prose pre {
2192
+ /* Code blocks */
2193
+ background-color: rgb(var(--tb-surface));
2194
+ color: rgb(var(--tb-text));
2195
+ border: 1px solid rgb(var(--tb-border));
2196
+ border-radius: 0.5rem;
2197
+ padding: 1rem;
2198
+ overflow-x: auto;
2199
+ }
2143
2200
 
2144
- :where(.theme-scope) .rb-prose pre code {
2145
- /* Code inside pre blocks */
2146
- background-color: transparent;
2147
- padding: 0;
2148
- color: inherit;
2149
- }
2201
+ :where(.theme-scope) .rb-prose pre code {
2202
+ /* Code inside pre blocks */
2203
+ background-color: transparent;
2204
+ padding: 0;
2205
+ color: inherit;
2206
+ }
2150
2207
 
2151
- :where(.theme-scope) .rb-prose hr {
2152
- /* Horizontal rules */
2153
- border-color: rgb(var(--tb-border));
2154
- }
2208
+ :where(.theme-scope) .rb-prose hr {
2209
+ /* Horizontal rules */
2210
+ border-color: rgb(var(--tb-border));
2211
+ }
2155
2212
 
2156
- :where(.theme-scope) .rb-prose ul > li::marker,
2157
- :where(.theme-scope) .rb-prose ol > li::marker {
2158
- /* List markers use muted text color */
2159
- color: rgb(var(--tb-mutedText));
2160
- }
2213
+ :where(.theme-scope) .rb-prose ul > li::marker,
2214
+ :where(.theme-scope) .rb-prose ol > li::marker {
2215
+ /* List markers use muted text color */
2216
+ color: rgb(var(--tb-mutedText));
2217
+ }
2161
2218
 
2162
- /*
2219
+ /*
2163
2220
  /* Density helpers */
2164
- :where(.theme-scope) .section-pad {
2165
- padding-top: 4rem;
2166
- padding-bottom: 4rem;
2167
- }
2168
- :where(.theme-scope)[data-density="airy"] .section-pad {
2169
- padding-top: 4.5rem;
2170
- padding-bottom: 4.5rem;
2171
- }
2172
- :where(.theme-scope)[data-density="compact"] .section-pad {
2173
- padding-top: 3rem;
2174
- padding-bottom: 3rem;
2175
- }
2176
-
2177
- :where(.theme-scope) .rounded-control {
2178
- border-radius: var(--radius-control);
2179
- }
2180
- :where(.theme-scope) .rounded-card {
2181
- border-radius: var(--radius-card);
2182
- }
2221
+ :where(.theme-scope) .section-pad {
2222
+ padding-top: 4rem;
2223
+ padding-bottom: 4rem;
2224
+ }
2225
+ :where(.theme-scope)[data-density='airy'] .section-pad {
2226
+ padding-top: 4.5rem;
2227
+ padding-bottom: 4.5rem;
2228
+ }
2229
+ :where(.theme-scope)[data-density='compact'] .section-pad {
2230
+ padding-top: 3rem;
2231
+ padding-bottom: 3rem;
2232
+ }
2183
2233
 
2184
- :where(.theme-scope) .shadow-elev {
2185
- box-shadow: var(--shadow-elev);
2186
- }
2234
+ :where(.theme-scope) .rounded-control {
2235
+ border-radius: var(--radius-control);
2236
+ }
2237
+ :where(.theme-scope) .rounded-card {
2238
+ border-radius: var(--radius-card);
2239
+ }
2187
2240
 
2188
- :where(.theme-scope) .font-heading {
2189
- font-family: var(--font-heading);
2190
- }
2191
- :where(.theme-scope) .font-body {
2192
- font-family: var(--font-body);
2193
- }
2241
+ :where(.theme-scope) .shadow-elev {
2242
+ box-shadow: var(--shadow-elev);
2243
+ }
2194
2244
 
2195
- :where(.theme-scope) .text-h1 {
2196
- font-size: var(--fs-h1);
2197
- line-height: 1.1;
2198
- }
2199
- :where(.theme-scope) .text-h2 {
2200
- font-size: var(--fs-h2);
2201
- line-height: 1.15;
2202
- }
2203
- :where(.theme-scope) .text-h3 {
2204
- font-size: var(--fs-h3);
2205
- line-height: 1.2;
2206
- }
2207
- :where(.theme-scope) .text-body-size {
2208
- font-size: var(--fs-body);
2209
- }
2245
+ :where(.theme-scope) .font-heading {
2246
+ font-family: var(--font-heading);
2247
+ }
2248
+ :where(.theme-scope) .font-body {
2249
+ font-family: var(--font-body);
2250
+ }
2210
2251
 
2211
- :where(.theme-scope) .transition-theme {
2212
- transition: all var(--motion-duration) var(--motion-ease);
2213
- }
2214
- :where(.theme-scope) .transition-theme-standard {
2215
- transition: all var(--motion-duration) var(--motion-ease);
2216
- }
2217
- :where(.theme-scope) .transition-theme-subtle {
2218
- transition: all calc(var(--motion-duration) * 0.75) var(--motion-ease);
2219
- }
2220
- :where(.theme-scope) .transition-theme-expressive {
2221
- transition: all calc(var(--motion-duration) * 1.35) var(--motion-ease);
2222
- }
2252
+ :where(.theme-scope) .text-h1 {
2253
+ font-size: var(--fs-h1);
2254
+ line-height: 1.1;
2255
+ }
2256
+ :where(.theme-scope) .text-h2 {
2257
+ font-size: var(--fs-h2);
2258
+ line-height: 1.15;
2259
+ }
2260
+ :where(.theme-scope) .text-h3 {
2261
+ font-size: var(--fs-h3);
2262
+ line-height: 1.2;
2263
+ }
2264
+ :where(.theme-scope) .text-body-size {
2265
+ font-size: var(--fs-body);
2266
+ }
2223
2267
 
2224
- /* Shade tokens (50..950) for primary */
2225
- :where(.theme-scope) .from-primary-50 {
2226
- --rb-gradient-from: rgb(var(--tb-primary-50)) var(--rb-gradient-from-position);
2227
- --rb-gradient-to: rgb(var(--tb-primary-50)) var(--rb-gradient-to-position);
2228
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2229
- }
2230
- :where(.theme-scope) .to-primary-50 {
2231
- --rb-gradient-to: rgb(var(--tb-primary-50)) var(--rb-gradient-to-position);
2232
- }
2233
- :where(.theme-scope) .from-primary-100 {
2234
- --rb-gradient-from: rgb(var(--tb-primary-100))
2235
- var(--rb-gradient-from-position);
2236
- --rb-gradient-to: rgb(var(--tb-primary-100)) var(--rb-gradient-to-position);
2237
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2238
- }
2239
- :where(.theme-scope) .to-primary-100 {
2240
- --rb-gradient-to: rgb(var(--tb-primary-100)) var(--rb-gradient-to-position);
2241
- }
2242
- :where(.theme-scope) .from-primary-200 {
2243
- --rb-gradient-from: rgb(var(--tb-primary-200))
2244
- var(--rb-gradient-from-position);
2245
- --rb-gradient-to: rgb(var(--tb-primary-200)) var(--rb-gradient-to-position);
2246
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2247
- }
2248
- :where(.theme-scope) .to-primary-200 {
2249
- --rb-gradient-to: rgb(var(--tb-primary-200)) var(--rb-gradient-to-position);
2250
- }
2251
- :where(.theme-scope) .from-primary-300 {
2252
- --rb-gradient-from: rgb(var(--tb-primary-300))
2253
- var(--rb-gradient-from-position);
2254
- --rb-gradient-to: rgb(var(--tb-primary-300)) var(--rb-gradient-to-position);
2255
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2256
- }
2257
- :where(.theme-scope) .to-primary-300 {
2258
- --rb-gradient-to: rgb(var(--tb-primary-300)) var(--rb-gradient-to-position);
2259
- }
2260
- :where(.theme-scope) .from-primary-400 {
2261
- --rb-gradient-from: rgb(var(--tb-primary-400))
2262
- var(--rb-gradient-from-position);
2263
- --rb-gradient-to: rgb(var(--tb-primary-400)) var(--rb-gradient-to-position);
2264
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2265
- }
2266
- :where(.theme-scope) .to-primary-400 {
2267
- --rb-gradient-to: rgb(var(--tb-primary-400)) var(--rb-gradient-to-position);
2268
- }
2269
- :where(.theme-scope) .from-primary-500 {
2270
- --rb-gradient-from: rgb(var(--tb-primary-500))
2271
- var(--rb-gradient-from-position);
2272
- --rb-gradient-to: rgb(var(--tb-primary-500)) var(--rb-gradient-to-position);
2273
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2274
- }
2275
- :where(.theme-scope) .to-primary-500 {
2276
- --rb-gradient-to: rgb(var(--tb-primary-500)) var(--rb-gradient-to-position);
2277
- }
2278
- :where(.theme-scope) .from-primary-600 {
2279
- --rb-gradient-from: rgb(var(--tb-primary-600))
2280
- var(--rb-gradient-from-position);
2281
- --rb-gradient-to: rgb(var(--tb-primary-600)) var(--rb-gradient-to-position);
2282
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2283
- }
2284
- :where(.theme-scope) .to-primary-600 {
2285
- --rb-gradient-to: rgb(var(--tb-primary-600)) var(--rb-gradient-to-position);
2286
- }
2287
- :where(.theme-scope) .from-primary-700 {
2288
- --rb-gradient-from: rgb(var(--tb-primary-700))
2289
- var(--rb-gradient-from-position);
2290
- --rb-gradient-to: rgb(var(--tb-primary-700)) var(--rb-gradient-to-position);
2291
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2292
- }
2293
- :where(.theme-scope) .to-primary-700 {
2294
- --rb-gradient-to: rgb(var(--tb-primary-700)) var(--rb-gradient-to-position);
2295
- }
2296
- :where(.theme-scope) .from-primary-800 {
2297
- --rb-gradient-from: rgb(var(--tb-primary-800))
2298
- var(--rb-gradient-from-position);
2299
- --rb-gradient-to: rgb(var(--tb-primary-800)) var(--rb-gradient-to-position);
2300
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2301
- }
2302
- :where(.theme-scope) .to-primary-800 {
2303
- --rb-gradient-to: rgb(var(--tb-primary-800)) var(--rb-gradient-to-position);
2304
- }
2305
- :where(.theme-scope) .from-primary-900 {
2306
- --rb-gradient-from: rgb(var(--tb-primary-900))
2307
- var(--rb-gradient-from-position);
2308
- --rb-gradient-to: rgb(var(--tb-primary-900)) var(--rb-gradient-to-position);
2309
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2310
- }
2311
- :where(.theme-scope) .to-primary-900 {
2312
- --rb-gradient-to: rgb(var(--tb-primary-900)) var(--rb-gradient-to-position);
2313
- }
2314
- :where(.theme-scope) .from-primary-950 {
2315
- --rb-gradient-from: rgb(var(--tb-primary-950))
2316
- var(--rb-gradient-from-position);
2317
- --rb-gradient-to: rgb(var(--tb-primary-950)) var(--rb-gradient-to-position);
2318
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2319
- }
2320
- :where(.theme-scope) .to-primary-950 {
2321
- --rb-gradient-to: rgb(var(--tb-primary-950)) var(--rb-gradient-to-position);
2322
- }
2323
-
2324
- /* Shade tokens (50..950) for secondary */
2325
- :where(.theme-scope) .from-secondary-50 {
2326
- --rb-gradient-from: rgb(var(--tb-secondary-50))
2327
- var(--rb-gradient-from-position);
2328
- --rb-gradient-to: rgb(var(--tb-secondary-50)) var(--rb-gradient-to-position);
2329
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2330
- }
2331
- :where(.theme-scope) .to-secondary-50 {
2332
- --rb-gradient-to: rgb(var(--tb-secondary-50)) var(--rb-gradient-to-position);
2333
- }
2334
- :where(.theme-scope) .from-secondary-100 {
2335
- --rb-gradient-from: rgb(var(--tb-secondary-100))
2336
- var(--rb-gradient-from-position);
2337
- --rb-gradient-to: rgb(var(--tb-secondary-100)) var(--rb-gradient-to-position);
2338
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2339
- }
2340
- :where(.theme-scope) .to-secondary-100 {
2341
- --rb-gradient-to: rgb(var(--tb-secondary-100)) var(--rb-gradient-to-position);
2342
- }
2343
- :where(.theme-scope) .from-secondary-200 {
2344
- --rb-gradient-from: rgb(var(--tb-secondary-200))
2345
- var(--rb-gradient-from-position);
2346
- --rb-gradient-to: rgb(var(--tb-secondary-200)) var(--rb-gradient-to-position);
2347
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2348
- }
2349
- :where(.theme-scope) .to-secondary-200 {
2350
- --rb-gradient-to: rgb(var(--tb-secondary-200)) var(--rb-gradient-to-position);
2351
- }
2352
- :where(.theme-scope) .from-secondary-300 {
2353
- --rb-gradient-from: rgb(var(--tb-secondary-300))
2354
- var(--rb-gradient-from-position);
2355
- --rb-gradient-to: rgb(var(--tb-secondary-300)) var(--rb-gradient-to-position);
2356
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2357
- }
2358
- :where(.theme-scope) .to-secondary-300 {
2359
- --rb-gradient-to: rgb(var(--tb-secondary-300)) var(--rb-gradient-to-position);
2360
- }
2361
- :where(.theme-scope) .from-secondary-400 {
2362
- --rb-gradient-from: rgb(var(--tb-secondary-400))
2363
- var(--rb-gradient-from-position);
2364
- --rb-gradient-to: rgb(var(--tb-secondary-400)) var(--rb-gradient-to-position);
2365
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2366
- }
2367
- :where(.theme-scope) .to-secondary-400 {
2368
- --rb-gradient-to: rgb(var(--tb-secondary-400)) var(--rb-gradient-to-position);
2369
- }
2370
- :where(.theme-scope) .from-secondary-500 {
2371
- --rb-gradient-from: rgb(var(--tb-secondary-500))
2372
- var(--rb-gradient-from-position);
2373
- --rb-gradient-to: rgb(var(--tb-secondary-500)) var(--rb-gradient-to-position);
2374
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2375
- }
2376
- :where(.theme-scope) .to-secondary-500 {
2377
- --rb-gradient-to: rgb(var(--tb-secondary-500)) var(--rb-gradient-to-position);
2378
- }
2379
- :where(.theme-scope) .from-secondary-600 {
2380
- --rb-gradient-from: rgb(var(--tb-secondary-600))
2381
- var(--rb-gradient-from-position);
2382
- --rb-gradient-to: rgb(var(--tb-secondary-600)) var(--rb-gradient-to-position);
2383
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2384
- }
2385
- :where(.theme-scope) .to-secondary-600 {
2386
- --rb-gradient-to: rgb(var(--tb-secondary-600)) var(--rb-gradient-to-position);
2387
- }
2388
- :where(.theme-scope) .from-secondary-700 {
2389
- --rb-gradient-from: rgb(var(--tb-secondary-700))
2390
- var(--rb-gradient-from-position);
2391
- --rb-gradient-to: rgb(var(--tb-secondary-700)) var(--rb-gradient-to-position);
2392
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2393
- }
2394
- :where(.theme-scope) .to-secondary-700 {
2395
- --rb-gradient-to: rgb(var(--tb-secondary-700)) var(--rb-gradient-to-position);
2396
- }
2397
- :where(.theme-scope) .from-secondary-800 {
2398
- --rb-gradient-from: rgb(var(--tb-secondary-800))
2399
- var(--rb-gradient-from-position);
2400
- --rb-gradient-to: rgb(var(--tb-secondary-800)) var(--rb-gradient-to-position);
2401
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2402
- }
2403
- :where(.theme-scope) .to-secondary-800 {
2404
- --rb-gradient-to: rgb(var(--tb-secondary-800)) var(--rb-gradient-to-position);
2405
- }
2406
- :where(.theme-scope) .from-secondary-900 {
2407
- --rb-gradient-from: rgb(var(--tb-secondary-900))
2408
- var(--rb-gradient-from-position);
2409
- --rb-gradient-to: rgb(var(--tb-secondary-900)) var(--rb-gradient-to-position);
2410
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2411
- }
2412
- :where(.theme-scope) .to-secondary-900 {
2413
- --rb-gradient-to: rgb(var(--tb-secondary-900)) var(--rb-gradient-to-position);
2414
- }
2415
- :where(.theme-scope) .from-secondary-950 {
2416
- --rb-gradient-from: rgb(var(--tb-secondary-950))
2417
- var(--rb-gradient-from-position);
2418
- --rb-gradient-to: rgb(var(--tb-secondary-950)) var(--rb-gradient-to-position);
2419
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2420
- }
2421
- :where(.theme-scope) .to-secondary-950 {
2422
- --rb-gradient-to: rgb(var(--tb-secondary-950)) var(--rb-gradient-to-position);
2423
- }
2424
-
2425
- /* Shade tokens (50..950) for accent */
2426
- :where(.theme-scope) .from-accent-50 {
2427
- --rb-gradient-from: rgb(var(--tb-accent-50)) var(--rb-gradient-from-position);
2428
- --rb-gradient-to: rgb(var(--tb-accent-50)) var(--rb-gradient-to-position);
2429
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2430
- }
2431
- :where(.theme-scope) .to-accent-50 {
2432
- --rb-gradient-to: rgb(var(--tb-accent-50)) var(--rb-gradient-to-position);
2433
- }
2434
- :where(.theme-scope) .from-accent-100 {
2435
- --rb-gradient-from: rgb(var(--tb-accent-100)) var(--rb-gradient-from-position);
2436
- --rb-gradient-to: rgb(var(--tb-accent-100)) var(--rb-gradient-to-position);
2437
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2438
- }
2439
- :where(.theme-scope) .to-accent-100 {
2440
- --rb-gradient-to: rgb(var(--tb-accent-100)) var(--rb-gradient-to-position);
2441
- }
2442
- :where(.theme-scope) .from-accent-200 {
2443
- --rb-gradient-from: rgb(var(--tb-accent-200)) var(--rb-gradient-from-position);
2444
- --rb-gradient-to: rgb(var(--tb-accent-200)) var(--rb-gradient-to-position);
2445
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2446
- }
2447
- :where(.theme-scope) .to-accent-200 {
2448
- --rb-gradient-to: rgb(var(--tb-accent-200)) var(--rb-gradient-to-position);
2449
- }
2450
- :where(.theme-scope) .from-accent-300 {
2451
- --rb-gradient-from: rgb(var(--tb-accent-300)) var(--rb-gradient-from-position);
2452
- --rb-gradient-to: rgb(var(--tb-accent-300)) var(--rb-gradient-to-position);
2453
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2454
- }
2455
- :where(.theme-scope) .to-accent-300 {
2456
- --rb-gradient-to: rgb(var(--tb-accent-300)) var(--rb-gradient-to-position);
2457
- }
2458
- :where(.theme-scope) .from-accent-400 {
2459
- --rb-gradient-from: rgb(var(--tb-accent-400)) var(--rb-gradient-from-position);
2460
- --rb-gradient-to: rgb(var(--tb-accent-400)) var(--rb-gradient-to-position);
2461
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2462
- }
2463
- :where(.theme-scope) .to-accent-400 {
2464
- --rb-gradient-to: rgb(var(--tb-accent-400)) var(--rb-gradient-to-position);
2465
- }
2466
- :where(.theme-scope) .from-accent-500 {
2467
- --rb-gradient-from: rgb(var(--tb-accent-500)) var(--rb-gradient-from-position);
2468
- --rb-gradient-to: rgb(var(--tb-accent-500)) var(--rb-gradient-to-position);
2469
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2470
- }
2471
- :where(.theme-scope) .to-accent-500 {
2472
- --rb-gradient-to: rgb(var(--tb-accent-500)) var(--rb-gradient-to-position);
2473
- }
2474
- :where(.theme-scope) .from-accent-600 {
2475
- --rb-gradient-from: rgb(var(--tb-accent-600)) var(--rb-gradient-from-position);
2476
- --rb-gradient-to: rgb(var(--tb-accent-600)) var(--rb-gradient-to-position);
2477
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2478
- }
2479
- :where(.theme-scope) .to-accent-600 {
2480
- --rb-gradient-to: rgb(var(--tb-accent-600)) var(--rb-gradient-to-position);
2481
- }
2482
- :where(.theme-scope) .from-accent-700 {
2483
- --rb-gradient-from: rgb(var(--tb-accent-700)) var(--rb-gradient-from-position);
2484
- --rb-gradient-to: rgb(var(--tb-accent-700)) var(--rb-gradient-to-position);
2485
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2486
- }
2487
- :where(.theme-scope) .to-accent-700 {
2488
- --rb-gradient-to: rgb(var(--tb-accent-700)) var(--rb-gradient-to-position);
2489
- }
2490
- :where(.theme-scope) .from-accent-800 {
2491
- --rb-gradient-from: rgb(var(--tb-accent-800)) var(--rb-gradient-from-position);
2492
- --rb-gradient-to: rgb(var(--tb-accent-800)) var(--rb-gradient-to-position);
2493
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2494
- }
2495
- :where(.theme-scope) .to-accent-800 {
2496
- --rb-gradient-to: rgb(var(--tb-accent-800)) var(--rb-gradient-to-position);
2497
- }
2498
- :where(.theme-scope) .from-accent-900 {
2499
- --rb-gradient-from: rgb(var(--tb-accent-900)) var(--rb-gradient-from-position);
2500
- --rb-gradient-to: rgb(var(--tb-accent-900)) var(--rb-gradient-to-position);
2501
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2502
- }
2503
- :where(.theme-scope) .to-accent-900 {
2504
- --rb-gradient-to: rgb(var(--tb-accent-900)) var(--rb-gradient-to-position);
2505
- }
2506
- :where(.theme-scope) .from-accent-950 {
2507
- --rb-gradient-from: rgb(var(--tb-accent-950)) var(--rb-gradient-from-position);
2508
- --rb-gradient-to: rgb(var(--tb-accent-950)) var(--rb-gradient-to-position);
2509
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2510
- }
2511
- :where(.theme-scope) .to-accent-950 {
2512
- --rb-gradient-to: rgb(var(--tb-accent-950)) var(--rb-gradient-to-position);
2513
- }
2268
+ :where(.theme-scope) .transition-theme {
2269
+ transition: all var(--motion-duration) var(--motion-ease);
2270
+ }
2271
+ :where(.theme-scope) .transition-theme-standard {
2272
+ transition: all var(--motion-duration) var(--motion-ease);
2273
+ }
2274
+ :where(.theme-scope) .transition-theme-subtle {
2275
+ transition: all calc(var(--motion-duration) * 0.75) var(--motion-ease);
2276
+ }
2277
+ :where(.theme-scope) .transition-theme-expressive {
2278
+ transition: all calc(var(--motion-duration) * 1.35) var(--motion-ease);
2279
+ }
2514
2280
 
2515
- /* Shade tokens (50..950) for neutral */
2516
- :where(.theme-scope) .from-neutral-50 {
2517
- --rb-gradient-from: rgb(var(--tb-neutral-50)) var(--rb-gradient-from-position);
2518
- --rb-gradient-to: rgb(var(--tb-neutral-50)) var(--rb-gradient-to-position);
2519
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2520
- }
2521
- :where(.theme-scope) .to-neutral-50 {
2522
- --rb-gradient-to: rgb(var(--tb-neutral-50)) var(--rb-gradient-to-position);
2523
- }
2524
- :where(.theme-scope) .from-neutral-100 {
2525
- --rb-gradient-from: rgb(var(--tb-neutral-100))
2526
- var(--rb-gradient-from-position);
2527
- --rb-gradient-to: rgb(var(--tb-neutral-100)) var(--rb-gradient-to-position);
2528
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2529
- }
2530
- :where(.theme-scope) .to-neutral-100 {
2531
- --rb-gradient-to: rgb(var(--tb-neutral-100)) var(--rb-gradient-to-position);
2532
- }
2533
- :where(.theme-scope) .from-neutral-200 {
2534
- --rb-gradient-from: rgb(var(--tb-neutral-200))
2535
- var(--rb-gradient-from-position);
2536
- --rb-gradient-to: rgb(var(--tb-neutral-200)) var(--rb-gradient-to-position);
2537
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2538
- }
2539
- :where(.theme-scope) .to-neutral-200 {
2540
- --rb-gradient-to: rgb(var(--tb-neutral-200)) var(--rb-gradient-to-position);
2541
- }
2542
- :where(.theme-scope) .from-neutral-300 {
2543
- --rb-gradient-from: rgb(var(--tb-neutral-300))
2544
- var(--rb-gradient-from-position);
2545
- --rb-gradient-to: rgb(var(--tb-neutral-300)) var(--rb-gradient-to-position);
2546
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2547
- }
2548
- :where(.theme-scope) .to-neutral-300 {
2549
- --rb-gradient-to: rgb(var(--tb-neutral-300)) var(--rb-gradient-to-position);
2550
- }
2551
- :where(.theme-scope) .from-neutral-400 {
2552
- --rb-gradient-from: rgb(var(--tb-neutral-400))
2553
- var(--rb-gradient-from-position);
2554
- --rb-gradient-to: rgb(var(--tb-neutral-400)) var(--rb-gradient-to-position);
2555
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2556
- }
2557
- :where(.theme-scope) .to-neutral-400 {
2558
- --rb-gradient-to: rgb(var(--tb-neutral-400)) var(--rb-gradient-to-position);
2559
- }
2560
- :where(.theme-scope) .from-neutral-500 {
2561
- --rb-gradient-from: rgb(var(--tb-neutral-500))
2562
- var(--rb-gradient-from-position);
2563
- --rb-gradient-to: rgb(var(--tb-neutral-500)) var(--rb-gradient-to-position);
2564
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2565
- }
2566
- :where(.theme-scope) .to-neutral-500 {
2567
- --rb-gradient-to: rgb(var(--tb-neutral-500)) var(--rb-gradient-to-position);
2568
- }
2569
- :where(.theme-scope) .from-neutral-600 {
2570
- --rb-gradient-from: rgb(var(--tb-neutral-600))
2571
- var(--rb-gradient-from-position);
2572
- --rb-gradient-to: rgb(var(--tb-neutral-600)) var(--rb-gradient-to-position);
2573
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2574
- }
2575
- :where(.theme-scope) .to-neutral-600 {
2576
- --rb-gradient-to: rgb(var(--tb-neutral-600)) var(--rb-gradient-to-position);
2577
- }
2578
- :where(.theme-scope) .from-neutral-700 {
2579
- --rb-gradient-from: rgb(var(--tb-neutral-700))
2580
- var(--rb-gradient-from-position);
2581
- --rb-gradient-to: rgb(var(--tb-neutral-700)) var(--rb-gradient-to-position);
2582
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2583
- }
2584
- :where(.theme-scope) .to-neutral-700 {
2585
- --rb-gradient-to: rgb(var(--tb-neutral-700)) var(--rb-gradient-to-position);
2586
- }
2587
- :where(.theme-scope) .from-neutral-800 {
2588
- --rb-gradient-from: rgb(var(--tb-neutral-800))
2589
- var(--rb-gradient-from-position);
2590
- --rb-gradient-to: rgb(var(--tb-neutral-800)) var(--rb-gradient-to-position);
2591
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2592
- }
2593
- :where(.theme-scope) .to-neutral-800 {
2594
- --rb-gradient-to: rgb(var(--tb-neutral-800)) var(--rb-gradient-to-position);
2595
- }
2596
- :where(.theme-scope) .from-neutral-900 {
2597
- --rb-gradient-from: rgb(var(--tb-neutral-900))
2598
- var(--rb-gradient-from-position);
2599
- --rb-gradient-to: rgb(var(--tb-neutral-900)) var(--rb-gradient-to-position);
2600
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2601
- }
2602
- :where(.theme-scope) .to-neutral-900 {
2603
- --rb-gradient-to: rgb(var(--tb-neutral-900)) var(--rb-gradient-to-position);
2604
- }
2605
- :where(.theme-scope) .from-neutral-950 {
2606
- --rb-gradient-from: rgb(var(--tb-neutral-950))
2607
- var(--rb-gradient-from-position);
2608
- --rb-gradient-to: rgb(var(--tb-neutral-950)) var(--rb-gradient-to-position);
2609
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2610
- }
2611
- :where(.theme-scope) .to-neutral-950 {
2612
- --rb-gradient-to: rgb(var(--tb-neutral-950)) var(--rb-gradient-to-position);
2613
- }
2614
-
2615
- /* =================================================================
2281
+ /* Shade tokens (50..950) for primary */
2282
+ :where(.theme-scope) .from-primary-50 {
2283
+ --rb-gradient-from: rgb(var(--tb-primary-50))
2284
+ var(--rb-gradient-from-position);
2285
+ --rb-gradient-to: rgb(var(--tb-primary-50)) var(--rb-gradient-to-position);
2286
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2287
+ }
2288
+ :where(.theme-scope) .to-primary-50 {
2289
+ --rb-gradient-to: rgb(var(--tb-primary-50)) var(--rb-gradient-to-position);
2290
+ }
2291
+ :where(.theme-scope) .from-primary-100 {
2292
+ --rb-gradient-from: rgb(var(--tb-primary-100))
2293
+ var(--rb-gradient-from-position);
2294
+ --rb-gradient-to: rgb(var(--tb-primary-100)) var(--rb-gradient-to-position);
2295
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2296
+ }
2297
+ :where(.theme-scope) .to-primary-100 {
2298
+ --rb-gradient-to: rgb(var(--tb-primary-100)) var(--rb-gradient-to-position);
2299
+ }
2300
+ :where(.theme-scope) .from-primary-200 {
2301
+ --rb-gradient-from: rgb(var(--tb-primary-200))
2302
+ var(--rb-gradient-from-position);
2303
+ --rb-gradient-to: rgb(var(--tb-primary-200)) var(--rb-gradient-to-position);
2304
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2305
+ }
2306
+ :where(.theme-scope) .to-primary-200 {
2307
+ --rb-gradient-to: rgb(var(--tb-primary-200)) var(--rb-gradient-to-position);
2308
+ }
2309
+ :where(.theme-scope) .from-primary-300 {
2310
+ --rb-gradient-from: rgb(var(--tb-primary-300))
2311
+ var(--rb-gradient-from-position);
2312
+ --rb-gradient-to: rgb(var(--tb-primary-300)) var(--rb-gradient-to-position);
2313
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2314
+ }
2315
+ :where(.theme-scope) .to-primary-300 {
2316
+ --rb-gradient-to: rgb(var(--tb-primary-300)) var(--rb-gradient-to-position);
2317
+ }
2318
+ :where(.theme-scope) .from-primary-400 {
2319
+ --rb-gradient-from: rgb(var(--tb-primary-400))
2320
+ var(--rb-gradient-from-position);
2321
+ --rb-gradient-to: rgb(var(--tb-primary-400)) var(--rb-gradient-to-position);
2322
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2323
+ }
2324
+ :where(.theme-scope) .to-primary-400 {
2325
+ --rb-gradient-to: rgb(var(--tb-primary-400)) var(--rb-gradient-to-position);
2326
+ }
2327
+ :where(.theme-scope) .from-primary-500 {
2328
+ --rb-gradient-from: rgb(var(--tb-primary-500))
2329
+ var(--rb-gradient-from-position);
2330
+ --rb-gradient-to: rgb(var(--tb-primary-500)) var(--rb-gradient-to-position);
2331
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2332
+ }
2333
+ :where(.theme-scope) .to-primary-500 {
2334
+ --rb-gradient-to: rgb(var(--tb-primary-500)) var(--rb-gradient-to-position);
2335
+ }
2336
+ :where(.theme-scope) .from-primary-600 {
2337
+ --rb-gradient-from: rgb(var(--tb-primary-600))
2338
+ var(--rb-gradient-from-position);
2339
+ --rb-gradient-to: rgb(var(--tb-primary-600)) var(--rb-gradient-to-position);
2340
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2341
+ }
2342
+ :where(.theme-scope) .to-primary-600 {
2343
+ --rb-gradient-to: rgb(var(--tb-primary-600)) var(--rb-gradient-to-position);
2344
+ }
2345
+ :where(.theme-scope) .from-primary-700 {
2346
+ --rb-gradient-from: rgb(var(--tb-primary-700))
2347
+ var(--rb-gradient-from-position);
2348
+ --rb-gradient-to: rgb(var(--tb-primary-700)) var(--rb-gradient-to-position);
2349
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2350
+ }
2351
+ :where(.theme-scope) .to-primary-700 {
2352
+ --rb-gradient-to: rgb(var(--tb-primary-700)) var(--rb-gradient-to-position);
2353
+ }
2354
+ :where(.theme-scope) .from-primary-800 {
2355
+ --rb-gradient-from: rgb(var(--tb-primary-800))
2356
+ var(--rb-gradient-from-position);
2357
+ --rb-gradient-to: rgb(var(--tb-primary-800)) var(--rb-gradient-to-position);
2358
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2359
+ }
2360
+ :where(.theme-scope) .to-primary-800 {
2361
+ --rb-gradient-to: rgb(var(--tb-primary-800)) var(--rb-gradient-to-position);
2362
+ }
2363
+ :where(.theme-scope) .from-primary-900 {
2364
+ --rb-gradient-from: rgb(var(--tb-primary-900))
2365
+ var(--rb-gradient-from-position);
2366
+ --rb-gradient-to: rgb(var(--tb-primary-900)) var(--rb-gradient-to-position);
2367
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2368
+ }
2369
+ :where(.theme-scope) .to-primary-900 {
2370
+ --rb-gradient-to: rgb(var(--tb-primary-900)) var(--rb-gradient-to-position);
2371
+ }
2372
+ :where(.theme-scope) .from-primary-950 {
2373
+ --rb-gradient-from: rgb(var(--tb-primary-950))
2374
+ var(--rb-gradient-from-position);
2375
+ --rb-gradient-to: rgb(var(--tb-primary-950)) var(--rb-gradient-to-position);
2376
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2377
+ }
2378
+ :where(.theme-scope) .to-primary-950 {
2379
+ --rb-gradient-to: rgb(var(--tb-primary-950)) var(--rb-gradient-to-position);
2380
+ }
2381
+
2382
+ /* Shade tokens (50..950) for secondary */
2383
+ :where(.theme-scope) .from-secondary-50 {
2384
+ --rb-gradient-from: rgb(var(--tb-secondary-50))
2385
+ var(--rb-gradient-from-position);
2386
+ --rb-gradient-to: rgb(var(--tb-secondary-50)) var(--rb-gradient-to-position);
2387
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2388
+ }
2389
+ :where(.theme-scope) .to-secondary-50 {
2390
+ --rb-gradient-to: rgb(var(--tb-secondary-50)) var(--rb-gradient-to-position);
2391
+ }
2392
+ :where(.theme-scope) .from-secondary-100 {
2393
+ --rb-gradient-from: rgb(var(--tb-secondary-100))
2394
+ var(--rb-gradient-from-position);
2395
+ --rb-gradient-to: rgb(var(--tb-secondary-100))
2396
+ var(--rb-gradient-to-position);
2397
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2398
+ }
2399
+ :where(.theme-scope) .to-secondary-100 {
2400
+ --rb-gradient-to: rgb(var(--tb-secondary-100))
2401
+ var(--rb-gradient-to-position);
2402
+ }
2403
+ :where(.theme-scope) .from-secondary-200 {
2404
+ --rb-gradient-from: rgb(var(--tb-secondary-200))
2405
+ var(--rb-gradient-from-position);
2406
+ --rb-gradient-to: rgb(var(--tb-secondary-200))
2407
+ var(--rb-gradient-to-position);
2408
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2409
+ }
2410
+ :where(.theme-scope) .to-secondary-200 {
2411
+ --rb-gradient-to: rgb(var(--tb-secondary-200))
2412
+ var(--rb-gradient-to-position);
2413
+ }
2414
+ :where(.theme-scope) .from-secondary-300 {
2415
+ --rb-gradient-from: rgb(var(--tb-secondary-300))
2416
+ var(--rb-gradient-from-position);
2417
+ --rb-gradient-to: rgb(var(--tb-secondary-300))
2418
+ var(--rb-gradient-to-position);
2419
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2420
+ }
2421
+ :where(.theme-scope) .to-secondary-300 {
2422
+ --rb-gradient-to: rgb(var(--tb-secondary-300))
2423
+ var(--rb-gradient-to-position);
2424
+ }
2425
+ :where(.theme-scope) .from-secondary-400 {
2426
+ --rb-gradient-from: rgb(var(--tb-secondary-400))
2427
+ var(--rb-gradient-from-position);
2428
+ --rb-gradient-to: rgb(var(--tb-secondary-400))
2429
+ var(--rb-gradient-to-position);
2430
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2431
+ }
2432
+ :where(.theme-scope) .to-secondary-400 {
2433
+ --rb-gradient-to: rgb(var(--tb-secondary-400))
2434
+ var(--rb-gradient-to-position);
2435
+ }
2436
+ :where(.theme-scope) .from-secondary-500 {
2437
+ --rb-gradient-from: rgb(var(--tb-secondary-500))
2438
+ var(--rb-gradient-from-position);
2439
+ --rb-gradient-to: rgb(var(--tb-secondary-500))
2440
+ var(--rb-gradient-to-position);
2441
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2442
+ }
2443
+ :where(.theme-scope) .to-secondary-500 {
2444
+ --rb-gradient-to: rgb(var(--tb-secondary-500))
2445
+ var(--rb-gradient-to-position);
2446
+ }
2447
+ :where(.theme-scope) .from-secondary-600 {
2448
+ --rb-gradient-from: rgb(var(--tb-secondary-600))
2449
+ var(--rb-gradient-from-position);
2450
+ --rb-gradient-to: rgb(var(--tb-secondary-600))
2451
+ var(--rb-gradient-to-position);
2452
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2453
+ }
2454
+ :where(.theme-scope) .to-secondary-600 {
2455
+ --rb-gradient-to: rgb(var(--tb-secondary-600))
2456
+ var(--rb-gradient-to-position);
2457
+ }
2458
+ :where(.theme-scope) .from-secondary-700 {
2459
+ --rb-gradient-from: rgb(var(--tb-secondary-700))
2460
+ var(--rb-gradient-from-position);
2461
+ --rb-gradient-to: rgb(var(--tb-secondary-700))
2462
+ var(--rb-gradient-to-position);
2463
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2464
+ }
2465
+ :where(.theme-scope) .to-secondary-700 {
2466
+ --rb-gradient-to: rgb(var(--tb-secondary-700))
2467
+ var(--rb-gradient-to-position);
2468
+ }
2469
+ :where(.theme-scope) .from-secondary-800 {
2470
+ --rb-gradient-from: rgb(var(--tb-secondary-800))
2471
+ var(--rb-gradient-from-position);
2472
+ --rb-gradient-to: rgb(var(--tb-secondary-800))
2473
+ var(--rb-gradient-to-position);
2474
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2475
+ }
2476
+ :where(.theme-scope) .to-secondary-800 {
2477
+ --rb-gradient-to: rgb(var(--tb-secondary-800))
2478
+ var(--rb-gradient-to-position);
2479
+ }
2480
+ :where(.theme-scope) .from-secondary-900 {
2481
+ --rb-gradient-from: rgb(var(--tb-secondary-900))
2482
+ var(--rb-gradient-from-position);
2483
+ --rb-gradient-to: rgb(var(--tb-secondary-900))
2484
+ var(--rb-gradient-to-position);
2485
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2486
+ }
2487
+ :where(.theme-scope) .to-secondary-900 {
2488
+ --rb-gradient-to: rgb(var(--tb-secondary-900))
2489
+ var(--rb-gradient-to-position);
2490
+ }
2491
+ :where(.theme-scope) .from-secondary-950 {
2492
+ --rb-gradient-from: rgb(var(--tb-secondary-950))
2493
+ var(--rb-gradient-from-position);
2494
+ --rb-gradient-to: rgb(var(--tb-secondary-950))
2495
+ var(--rb-gradient-to-position);
2496
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2497
+ }
2498
+ :where(.theme-scope) .to-secondary-950 {
2499
+ --rb-gradient-to: rgb(var(--tb-secondary-950))
2500
+ var(--rb-gradient-to-position);
2501
+ }
2502
+
2503
+ /* Shade tokens (50..950) for accent */
2504
+ :where(.theme-scope) .from-accent-50 {
2505
+ --rb-gradient-from: rgb(var(--tb-accent-50))
2506
+ var(--rb-gradient-from-position);
2507
+ --rb-gradient-to: rgb(var(--tb-accent-50)) var(--rb-gradient-to-position);
2508
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2509
+ }
2510
+ :where(.theme-scope) .to-accent-50 {
2511
+ --rb-gradient-to: rgb(var(--tb-accent-50)) var(--rb-gradient-to-position);
2512
+ }
2513
+ :where(.theme-scope) .from-accent-100 {
2514
+ --rb-gradient-from: rgb(var(--tb-accent-100))
2515
+ var(--rb-gradient-from-position);
2516
+ --rb-gradient-to: rgb(var(--tb-accent-100)) var(--rb-gradient-to-position);
2517
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2518
+ }
2519
+ :where(.theme-scope) .to-accent-100 {
2520
+ --rb-gradient-to: rgb(var(--tb-accent-100)) var(--rb-gradient-to-position);
2521
+ }
2522
+ :where(.theme-scope) .from-accent-200 {
2523
+ --rb-gradient-from: rgb(var(--tb-accent-200))
2524
+ var(--rb-gradient-from-position);
2525
+ --rb-gradient-to: rgb(var(--tb-accent-200)) var(--rb-gradient-to-position);
2526
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2527
+ }
2528
+ :where(.theme-scope) .to-accent-200 {
2529
+ --rb-gradient-to: rgb(var(--tb-accent-200)) var(--rb-gradient-to-position);
2530
+ }
2531
+ :where(.theme-scope) .from-accent-300 {
2532
+ --rb-gradient-from: rgb(var(--tb-accent-300))
2533
+ var(--rb-gradient-from-position);
2534
+ --rb-gradient-to: rgb(var(--tb-accent-300)) var(--rb-gradient-to-position);
2535
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2536
+ }
2537
+ :where(.theme-scope) .to-accent-300 {
2538
+ --rb-gradient-to: rgb(var(--tb-accent-300)) var(--rb-gradient-to-position);
2539
+ }
2540
+ :where(.theme-scope) .from-accent-400 {
2541
+ --rb-gradient-from: rgb(var(--tb-accent-400))
2542
+ var(--rb-gradient-from-position);
2543
+ --rb-gradient-to: rgb(var(--tb-accent-400)) var(--rb-gradient-to-position);
2544
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2545
+ }
2546
+ :where(.theme-scope) .to-accent-400 {
2547
+ --rb-gradient-to: rgb(var(--tb-accent-400)) var(--rb-gradient-to-position);
2548
+ }
2549
+ :where(.theme-scope) .from-accent-500 {
2550
+ --rb-gradient-from: rgb(var(--tb-accent-500))
2551
+ var(--rb-gradient-from-position);
2552
+ --rb-gradient-to: rgb(var(--tb-accent-500)) var(--rb-gradient-to-position);
2553
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2554
+ }
2555
+ :where(.theme-scope) .to-accent-500 {
2556
+ --rb-gradient-to: rgb(var(--tb-accent-500)) var(--rb-gradient-to-position);
2557
+ }
2558
+ :where(.theme-scope) .from-accent-600 {
2559
+ --rb-gradient-from: rgb(var(--tb-accent-600))
2560
+ var(--rb-gradient-from-position);
2561
+ --rb-gradient-to: rgb(var(--tb-accent-600)) var(--rb-gradient-to-position);
2562
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2563
+ }
2564
+ :where(.theme-scope) .to-accent-600 {
2565
+ --rb-gradient-to: rgb(var(--tb-accent-600)) var(--rb-gradient-to-position);
2566
+ }
2567
+ :where(.theme-scope) .from-accent-700 {
2568
+ --rb-gradient-from: rgb(var(--tb-accent-700))
2569
+ var(--rb-gradient-from-position);
2570
+ --rb-gradient-to: rgb(var(--tb-accent-700)) var(--rb-gradient-to-position);
2571
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2572
+ }
2573
+ :where(.theme-scope) .to-accent-700 {
2574
+ --rb-gradient-to: rgb(var(--tb-accent-700)) var(--rb-gradient-to-position);
2575
+ }
2576
+ :where(.theme-scope) .from-accent-800 {
2577
+ --rb-gradient-from: rgb(var(--tb-accent-800))
2578
+ var(--rb-gradient-from-position);
2579
+ --rb-gradient-to: rgb(var(--tb-accent-800)) var(--rb-gradient-to-position);
2580
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2581
+ }
2582
+ :where(.theme-scope) .to-accent-800 {
2583
+ --rb-gradient-to: rgb(var(--tb-accent-800)) var(--rb-gradient-to-position);
2584
+ }
2585
+ :where(.theme-scope) .from-accent-900 {
2586
+ --rb-gradient-from: rgb(var(--tb-accent-900))
2587
+ var(--rb-gradient-from-position);
2588
+ --rb-gradient-to: rgb(var(--tb-accent-900)) var(--rb-gradient-to-position);
2589
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2590
+ }
2591
+ :where(.theme-scope) .to-accent-900 {
2592
+ --rb-gradient-to: rgb(var(--tb-accent-900)) var(--rb-gradient-to-position);
2593
+ }
2594
+ :where(.theme-scope) .from-accent-950 {
2595
+ --rb-gradient-from: rgb(var(--tb-accent-950))
2596
+ var(--rb-gradient-from-position);
2597
+ --rb-gradient-to: rgb(var(--tb-accent-950)) var(--rb-gradient-to-position);
2598
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2599
+ }
2600
+ :where(.theme-scope) .to-accent-950 {
2601
+ --rb-gradient-to: rgb(var(--tb-accent-950)) var(--rb-gradient-to-position);
2602
+ }
2603
+
2604
+ /* Shade tokens (50..950) for neutral */
2605
+ :where(.theme-scope) .from-neutral-50 {
2606
+ --rb-gradient-from: rgb(var(--tb-neutral-50))
2607
+ var(--rb-gradient-from-position);
2608
+ --rb-gradient-to: rgb(var(--tb-neutral-50)) var(--rb-gradient-to-position);
2609
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2610
+ }
2611
+ :where(.theme-scope) .to-neutral-50 {
2612
+ --rb-gradient-to: rgb(var(--tb-neutral-50)) var(--rb-gradient-to-position);
2613
+ }
2614
+ :where(.theme-scope) .from-neutral-100 {
2615
+ --rb-gradient-from: rgb(var(--tb-neutral-100))
2616
+ var(--rb-gradient-from-position);
2617
+ --rb-gradient-to: rgb(var(--tb-neutral-100)) var(--rb-gradient-to-position);
2618
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2619
+ }
2620
+ :where(.theme-scope) .to-neutral-100 {
2621
+ --rb-gradient-to: rgb(var(--tb-neutral-100)) var(--rb-gradient-to-position);
2622
+ }
2623
+ :where(.theme-scope) .from-neutral-200 {
2624
+ --rb-gradient-from: rgb(var(--tb-neutral-200))
2625
+ var(--rb-gradient-from-position);
2626
+ --rb-gradient-to: rgb(var(--tb-neutral-200)) var(--rb-gradient-to-position);
2627
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2628
+ }
2629
+ :where(.theme-scope) .to-neutral-200 {
2630
+ --rb-gradient-to: rgb(var(--tb-neutral-200)) var(--rb-gradient-to-position);
2631
+ }
2632
+ :where(.theme-scope) .from-neutral-300 {
2633
+ --rb-gradient-from: rgb(var(--tb-neutral-300))
2634
+ var(--rb-gradient-from-position);
2635
+ --rb-gradient-to: rgb(var(--tb-neutral-300)) var(--rb-gradient-to-position);
2636
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2637
+ }
2638
+ :where(.theme-scope) .to-neutral-300 {
2639
+ --rb-gradient-to: rgb(var(--tb-neutral-300)) var(--rb-gradient-to-position);
2640
+ }
2641
+ :where(.theme-scope) .from-neutral-400 {
2642
+ --rb-gradient-from: rgb(var(--tb-neutral-400))
2643
+ var(--rb-gradient-from-position);
2644
+ --rb-gradient-to: rgb(var(--tb-neutral-400)) var(--rb-gradient-to-position);
2645
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2646
+ }
2647
+ :where(.theme-scope) .to-neutral-400 {
2648
+ --rb-gradient-to: rgb(var(--tb-neutral-400)) var(--rb-gradient-to-position);
2649
+ }
2650
+ :where(.theme-scope) .from-neutral-500 {
2651
+ --rb-gradient-from: rgb(var(--tb-neutral-500))
2652
+ var(--rb-gradient-from-position);
2653
+ --rb-gradient-to: rgb(var(--tb-neutral-500)) var(--rb-gradient-to-position);
2654
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2655
+ }
2656
+ :where(.theme-scope) .to-neutral-500 {
2657
+ --rb-gradient-to: rgb(var(--tb-neutral-500)) var(--rb-gradient-to-position);
2658
+ }
2659
+ :where(.theme-scope) .from-neutral-600 {
2660
+ --rb-gradient-from: rgb(var(--tb-neutral-600))
2661
+ var(--rb-gradient-from-position);
2662
+ --rb-gradient-to: rgb(var(--tb-neutral-600)) var(--rb-gradient-to-position);
2663
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2664
+ }
2665
+ :where(.theme-scope) .to-neutral-600 {
2666
+ --rb-gradient-to: rgb(var(--tb-neutral-600)) var(--rb-gradient-to-position);
2667
+ }
2668
+ :where(.theme-scope) .from-neutral-700 {
2669
+ --rb-gradient-from: rgb(var(--tb-neutral-700))
2670
+ var(--rb-gradient-from-position);
2671
+ --rb-gradient-to: rgb(var(--tb-neutral-700)) var(--rb-gradient-to-position);
2672
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2673
+ }
2674
+ :where(.theme-scope) .to-neutral-700 {
2675
+ --rb-gradient-to: rgb(var(--tb-neutral-700)) var(--rb-gradient-to-position);
2676
+ }
2677
+ :where(.theme-scope) .from-neutral-800 {
2678
+ --rb-gradient-from: rgb(var(--tb-neutral-800))
2679
+ var(--rb-gradient-from-position);
2680
+ --rb-gradient-to: rgb(var(--tb-neutral-800)) var(--rb-gradient-to-position);
2681
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2682
+ }
2683
+ :where(.theme-scope) .to-neutral-800 {
2684
+ --rb-gradient-to: rgb(var(--tb-neutral-800)) var(--rb-gradient-to-position);
2685
+ }
2686
+ :where(.theme-scope) .from-neutral-900 {
2687
+ --rb-gradient-from: rgb(var(--tb-neutral-900))
2688
+ var(--rb-gradient-from-position);
2689
+ --rb-gradient-to: rgb(var(--tb-neutral-900)) var(--rb-gradient-to-position);
2690
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2691
+ }
2692
+ :where(.theme-scope) .to-neutral-900 {
2693
+ --rb-gradient-to: rgb(var(--tb-neutral-900)) var(--rb-gradient-to-position);
2694
+ }
2695
+ :where(.theme-scope) .from-neutral-950 {
2696
+ --rb-gradient-from: rgb(var(--tb-neutral-950))
2697
+ var(--rb-gradient-from-position);
2698
+ --rb-gradient-to: rgb(var(--tb-neutral-950)) var(--rb-gradient-to-position);
2699
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2700
+ }
2701
+ :where(.theme-scope) .to-neutral-950 {
2702
+ --rb-gradient-to: rgb(var(--tb-neutral-950)) var(--rb-gradient-to-position);
2703
+ }
2704
+
2705
+ /* =================================================================
2616
2706
  Header System Class Naming Conventions
2617
2707
 
2618
2708
  rb-header-* Utility-style classes set in site-header.ts layouts
@@ -2625,236 +2715,236 @@
2625
2715
  (nav-dropdown, nav-mobile-panel, nav-underline-grow)
2626
2716
  ================================================================= */
2627
2717
 
2628
- /* =================================================================
2718
+ /* =================================================================
2629
2719
  Header Layout Padding
2630
2720
 
2631
2721
  Padding is controlled entirely by CSS based on variant class.
2632
2722
  This ensures shrink headers look identical to non-shrink before scroll.
2633
2723
  ================================================================= */
2634
2724
 
2635
- /* Prevent scroll anchoring feedback loops when the header height transitions.
2725
+ /* Prevent scroll anchoring feedback loops when the header height transitions.
2636
2726
  In some browsers, resizing a sticky header near the top can cause the UA to
2637
2727
  adjust scroll position ("scroll anchoring"), which then flips the
2638
2728
  `header-scrolled` threshold logic back and forth. */
2639
- :where(.theme-scope) .block-site-header {
2640
- overflow-anchor: none;
2641
- }
2729
+ :where(.theme-scope) .block-site-header {
2730
+ overflow-anchor: none;
2731
+ }
2642
2732
 
2643
- /* Base padding for horizontal variants (classic, transparent) */
2644
- :where(.theme-scope) .rb-header-layout {
2645
- padding-top: 1rem;
2646
- padding-bottom: 1rem;
2647
- transition: padding 300ms var(--motion-ease, ease);
2648
- }
2733
+ /* Base padding for horizontal variants (classic, transparent) */
2734
+ :where(.theme-scope) .rb-header-layout {
2735
+ padding-top: 1rem;
2736
+ padding-bottom: 1rem;
2737
+ transition: padding 300ms var(--motion-ease, ease);
2738
+ }
2649
2739
 
2650
- /* Vertical variants need more breathing room
2740
+ /* Vertical variants need more breathing room
2651
2741
  Note: header-variant-* is on Section (ancestor), rb-header-layout on inner div */
2652
- :where(.theme-scope) .header-variant-centered .rb-header-layout,
2653
- :where(.theme-scope) .header-variant-editorial .rb-header-layout {
2654
- padding-top: 1.5rem;
2655
- padding-bottom: 1.5rem;
2656
- }
2742
+ :where(.theme-scope) .header-variant-centered .rb-header-layout {
2743
+ padding-top: 1.5rem;
2744
+ padding-bottom: 1.5rem;
2745
+ }
2657
2746
 
2658
- /* Floating variant - compact padding */
2659
- :where(.theme-scope) .header-variant-floating .rb-header-layout {
2660
- padding-top: 0.75rem;
2661
- padding-bottom: 0.75rem;
2662
- }
2747
+ /* Floating variant - compact padding */
2748
+ :where(.theme-scope) .header-variant-floating .rb-header-layout {
2749
+ padding-top: 0.75rem;
2750
+ padding-bottom: 0.75rem;
2751
+ }
2663
2752
 
2664
- /* =================================================================
2753
+ /* =================================================================
2665
2754
  Header Shrink-on-Scroll
2666
2755
 
2667
2756
  Only applies when .rb-header-shrink is present AND user has scrolled.
2668
2757
  No changes until scroll - shrink header = non-shrink header initially.
2669
2758
  ================================================================= */
2670
2759
 
2671
- /* Scrolled state - reduce padding */
2672
- :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-layout {
2673
- padding-top: 0.5rem;
2674
- padding-bottom: 0.5rem;
2675
- }
2760
+ /* Scrolled state - reduce padding */
2761
+ :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-layout {
2762
+ padding-top: 0.5rem;
2763
+ padding-bottom: 0.5rem;
2764
+ }
2676
2765
 
2677
- /* Vertical variants get gentler reduction
2766
+ /* Vertical variants get gentler reduction
2678
2767
  Note: Both classes are on Section, rb-header-layout on inner div */
2679
- :where(.theme-scope) .rb-header-shrink.header-scrolled.header-variant-centered .rb-header-layout,
2680
- :where(.theme-scope) .rb-header-shrink.header-scrolled.header-variant-editorial .rb-header-layout {
2681
- padding-top: 0.75rem;
2682
- padding-bottom: 0.75rem;
2683
- }
2768
+ :where(.theme-scope)
2769
+ .rb-header-shrink.header-scrolled.header-variant-centered
2770
+ .rb-header-layout {
2771
+ padding-top: 0.75rem;
2772
+ padding-bottom: 0.75rem;
2773
+ }
2684
2774
 
2685
- /* Floating variant */
2686
- :where(.theme-scope) .rb-header-shrink.header-scrolled.header-variant-floating .rb-header-layout {
2687
- padding-top: 0.25rem;
2688
- padding-bottom: 0.25rem;
2689
- }
2775
+ /* Floating variant */
2776
+ :where(.theme-scope)
2777
+ .rb-header-shrink.header-scrolled.header-variant-floating
2778
+ .rb-header-layout {
2779
+ padding-top: 0.25rem;
2780
+ padding-bottom: 0.25rem;
2781
+ }
2690
2782
 
2691
- /* =================================================================
2783
+ /* =================================================================
2692
2784
  Logo & Title Sizing
2693
2785
 
2694
2786
  Font sizes controlled here, not via utility classes, so shrink
2695
2787
  transitions work (utility classes would override :where()).
2696
2788
  ================================================================= */
2697
2789
 
2698
- /* Logo image sizing */
2699
- :where(.theme-scope) .rb-header-logo-sm {
2700
- height: 2.5rem;
2701
- transition: height 300ms var(--motion-ease, ease);
2702
- }
2703
- :where(.theme-scope) .rb-header-logo-lg {
2704
- height: 3rem;
2705
- transition: height 300ms var(--motion-ease, ease);
2706
- }
2707
-
2708
- /* Site title base font size (replaces rb-text-lg / rb-text-xl utilities) */
2709
- :where(.theme-scope) .header-logo-text {
2710
- font-size: 1.125rem; /* matches rb-text-lg */
2711
- line-height: 1.75rem;
2712
- transition: font-size 300ms var(--motion-ease, ease);
2713
- }
2790
+ /* Logo image sizing */
2791
+ :where(.theme-scope) .rb-header-logo-sm {
2792
+ height: 2.5rem;
2793
+ transition: height 300ms var(--motion-ease, ease);
2794
+ }
2795
+ :where(.theme-scope) .rb-header-logo-lg {
2796
+ height: 3rem;
2797
+ transition: height 300ms var(--motion-ease, ease);
2798
+ }
2714
2799
 
2715
- /* Mobile: reduce site title size (~30%) to keep header compact */
2716
- @media (max-width: 767px) {
2800
+ /* Site title base font size (replaces rb-text-lg / rb-text-xl utilities) */
2717
2801
  :where(.theme-scope) .header-logo-text {
2718
- font-size: 0.8rem;
2719
- line-height: 1.25rem;
2802
+ font-size: 1.125rem; /* matches rb-text-lg */
2803
+ line-height: 1.75rem;
2804
+ transition: font-size 300ms var(--motion-ease, ease);
2720
2805
  }
2721
2806
 
2722
- :where(.theme-scope) .header-variant-centered .header-logo-text,
2723
- :where(.theme-scope) .header-variant-editorial .header-logo-text {
2724
- font-size: 0.875rem;
2725
- line-height: 1.25rem;
2807
+ /* Mobile: reduce site title size (~30%) to keep header compact */
2808
+ @media (max-width: 767px) {
2809
+ :where(.theme-scope) .header-logo-text {
2810
+ font-size: 0.8rem;
2811
+ line-height: 1.25rem;
2812
+ }
2813
+
2814
+ :where(.theme-scope) .header-variant-centered .header-logo-text {
2815
+ font-size: 0.875rem;
2816
+ line-height: 1.25rem;
2817
+ }
2726
2818
  }
2727
- }
2728
2819
 
2729
- /* Centered/editorial variants use larger title */
2730
- :where(.theme-scope) .header-variant-centered .header-logo-text,
2731
- :where(.theme-scope) .header-variant-editorial .header-logo-text {
2732
- font-size: 1.25rem; /* matches rb-text-xl */
2733
- line-height: 1.75rem;
2734
- }
2820
+ /* Centered variant uses larger title */
2821
+ :where(.theme-scope) .header-variant-centered .header-logo-text {
2822
+ font-size: 1.25rem; /* matches rb-text-xl */
2823
+ line-height: 1.75rem;
2824
+ }
2735
2825
 
2736
- /* =================================================================
2826
+ /* =================================================================
2737
2827
  Shrink on Scroll - Logo & Title
2738
2828
  ================================================================= */
2739
2829
 
2740
- :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-logo-sm {
2741
- height: 2rem;
2742
- }
2743
- :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-logo-lg {
2744
- height: 2.5rem;
2745
- }
2746
- :where(.theme-scope) .rb-header-shrink.header-scrolled .header-logo-text {
2747
- font-size: 0.875rem;
2748
- }
2749
-
2750
- @media (max-width: 767px) {
2830
+ :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-logo-sm {
2831
+ height: 2rem;
2832
+ }
2833
+ :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-logo-lg {
2834
+ height: 2.5rem;
2835
+ }
2751
2836
  :where(.theme-scope) .rb-header-shrink.header-scrolled .header-logo-text {
2752
- font-size: 0.75rem;
2837
+ font-size: 0.875rem;
2753
2838
  }
2754
- }
2755
2839
 
2756
- /* =================================================================
2840
+ @media (max-width: 767px) {
2841
+ :where(.theme-scope) .rb-header-shrink.header-scrolled .header-logo-text {
2842
+ font-size: 0.75rem;
2843
+ }
2844
+ }
2845
+
2846
+ /* =================================================================
2757
2847
  Accessibility: Reduced Motion
2758
2848
  ================================================================= */
2759
2849
 
2760
- @media (prefers-reduced-motion: reduce) {
2761
- :where(.theme-scope) .rb-header-layout,
2762
- :where(.theme-scope) .rb-header-logo-sm,
2763
- :where(.theme-scope) .rb-header-logo-lg,
2764
- :where(.theme-scope) .header-logo-text {
2765
- transition: none;
2850
+ @media (prefers-reduced-motion: reduce) {
2851
+ :where(.theme-scope) .rb-header-layout,
2852
+ :where(.theme-scope) .rb-header-logo-sm,
2853
+ :where(.theme-scope) .rb-header-logo-lg,
2854
+ :where(.theme-scope) .header-logo-text {
2855
+ transition: none;
2856
+ }
2766
2857
  }
2767
- }
2768
2858
 
2769
- /* Nav underline-grow animation (used by navStyle: "underline-grow" in site-header.ts) */
2770
- :where(.theme-scope) .nav-underline-grow {
2771
- position: relative;
2772
- overflow: visible;
2773
- }
2774
- :where(.theme-scope) .nav-underline-grow::after {
2775
- content: "";
2776
- position: absolute;
2777
- left: 0;
2778
- bottom: var(--nav-underline-offset, -0.35em);
2779
- width: 100%;
2780
- height: 2px;
2781
- background-color: currentColor;
2782
- transform: scaleX(0);
2783
- transform-origin: left center;
2784
- transition: transform calc(var(--motion-duration) * 1.1) var(--motion-ease);
2785
- }
2786
- :where(.theme-scope) .nav-underline-grow:hover::after,
2787
- :where(.theme-scope)
2788
- .nav-underline-grow.nav-underline-active[data-active="true"]::after {
2789
- transform: scaleX(1);
2790
- }
2791
- :where(.theme-scope) .nav-underline-offset-tight {
2792
- --nav-underline-offset: -0.2em;
2793
- }
2794
- :where(.theme-scope) .nav-underline-offset-normal {
2795
- --nav-underline-offset: -0.3em;
2796
- }
2797
- :where(.theme-scope) .nav-underline-offset-loose {
2798
- --nav-underline-offset: -0.45em;
2799
- }
2859
+ /* Nav underline-grow animation (used by navStyle: "underline-grow" in site-header.ts) */
2860
+ :where(.theme-scope) .nav-underline-grow {
2861
+ position: relative;
2862
+ overflow: visible;
2863
+ }
2864
+ :where(.theme-scope) .nav-underline-grow::after {
2865
+ content: '';
2866
+ position: absolute;
2867
+ left: 0;
2868
+ bottom: var(--nav-underline-offset, -0.35em);
2869
+ width: 100%;
2870
+ height: 2px;
2871
+ background-color: currentColor;
2872
+ transform: scaleX(0);
2873
+ transform-origin: left center;
2874
+ transition: transform calc(var(--motion-duration) * 1.1) var(--motion-ease);
2875
+ }
2876
+ :where(.theme-scope) .nav-underline-grow:hover::after,
2877
+ :where(.theme-scope)
2878
+ .nav-underline-grow.nav-underline-active[data-active='true']::after {
2879
+ transform: scaleX(1);
2880
+ }
2881
+ :where(.theme-scope) .nav-underline-offset-tight {
2882
+ --nav-underline-offset: -0.2em;
2883
+ }
2884
+ :where(.theme-scope) .nav-underline-offset-normal {
2885
+ --nav-underline-offset: -0.3em;
2886
+ }
2887
+ :where(.theme-scope) .nav-underline-offset-loose {
2888
+ --nav-underline-offset: -0.45em;
2889
+ }
2800
2890
 
2801
- :where(.theme-scope) .card-surface {
2802
- background: rgb(var(--tb-surface));
2803
- color: rgb(var(--tb-onSurface, var(--tb-text)));
2804
- border: 1px solid rgb(var(--tb-border));
2805
- border-radius: var(--radius-card);
2806
- box-shadow: var(--shadow-elev);
2807
- }
2808
- :where(.theme-scope) .media-rounded {
2809
- border-radius: var(--radius-card);
2810
- }
2891
+ :where(.theme-scope) .card-surface {
2892
+ background: rgb(var(--tb-surface));
2893
+ color: rgb(var(--tb-onSurface, var(--tb-text)));
2894
+ border: 1px solid rgb(var(--tb-border));
2895
+ border-radius: var(--radius-card);
2896
+ box-shadow: var(--shadow-elev);
2897
+ }
2898
+ :where(.theme-scope) .media-rounded {
2899
+ border-radius: var(--radius-card);
2900
+ }
2811
2901
 
2812
- :where(.theme-scope) .is-placeholder::after {
2813
- content: "Placeholder";
2814
- position: absolute;
2815
- top: 0.5rem;
2816
- left: 0.5rem;
2817
- font-size: 11px;
2818
- background: color-mix(in oklab, rgb(var(--tb-bg)), rgb(var(--tb-text)) 10%);
2819
- color: rgb(var(--tb-text));
2820
- padding: 0.15rem 0.35rem;
2821
- border-radius: 4px;
2822
- opacity: 0.85;
2823
- }
2902
+ :where(.theme-scope) .is-placeholder::after {
2903
+ content: 'Placeholder';
2904
+ position: absolute;
2905
+ top: 0.5rem;
2906
+ left: 0.5rem;
2907
+ font-size: 11px;
2908
+ background: color-mix(in oklab, rgb(var(--tb-bg)), rgb(var(--tb-text)) 10%);
2909
+ color: rgb(var(--tb-text));
2910
+ padding: 0.15rem 0.35rem;
2911
+ border-radius: 4px;
2912
+ opacity: 0.85;
2913
+ }
2824
2914
 
2825
- /* Status badges - theme-aware styling for capacity indicators */
2826
- :where(.theme-scope) .badge-status {
2827
- display: inline-flex;
2828
- align-items: center;
2829
- padding: 0.125rem 0.625rem;
2830
- border-radius: 9999px;
2831
- font-size: 0.75rem;
2832
- font-weight: 500;
2833
- line-height: 1.25rem;
2834
- }
2915
+ /* Status badges - theme-aware styling for capacity indicators */
2916
+ :where(.theme-scope) .badge-status {
2917
+ display: inline-flex;
2918
+ align-items: center;
2919
+ padding: 0.125rem 0.625rem;
2920
+ border-radius: 9999px;
2921
+ font-size: 0.75rem;
2922
+ font-weight: 500;
2923
+ line-height: 1.25rem;
2924
+ }
2835
2925
 
2836
- /* All badges use a subtle theme-aware style by default */
2837
- :where(.theme-scope) .badge-status-available {
2838
- background-color: rgba(var(--tb-secondary), 0.15);
2839
- color: rgb(var(--tb-secondary-700, var(--tb-secondary)));
2840
- }
2926
+ /* All badges use a subtle theme-aware style by default */
2927
+ :where(.theme-scope) .badge-status-available {
2928
+ background-color: rgba(var(--tb-secondary), 0.15);
2929
+ color: rgb(var(--tb-secondary-700, var(--tb-secondary)));
2930
+ }
2841
2931
 
2842
- :where(.theme-scope) .badge-status-low {
2843
- background-color: rgba(var(--tb-accent), 0.15);
2844
- color: rgb(var(--tb-accent-700, var(--tb-accent)));
2845
- }
2932
+ :where(.theme-scope) .badge-status-low {
2933
+ background-color: rgba(var(--tb-accent), 0.15);
2934
+ color: rgb(var(--tb-accent-700, var(--tb-accent)));
2935
+ }
2846
2936
 
2847
- :where(.theme-scope) .badge-status-sold-out {
2848
- background-color: rgba(var(--tb-text), 0.1);
2849
- color: rgb(var(--tb-mutedText));
2850
- }
2937
+ :where(.theme-scope) .badge-status-sold-out {
2938
+ background-color: rgba(var(--tb-text), 0.1);
2939
+ color: rgb(var(--tb-mutedText));
2940
+ }
2851
2941
 
2852
- /* Event list empty state - theme-aware */
2853
- :where(.theme-scope) .event-list-empty {
2854
- background-color: rgb(var(--tb-surface));
2855
- color: rgb(var(--tb-onSurface, var(--tb-text)));
2856
- border-color: rgb(var(--tb-border));
2857
- }
2942
+ /* Event list empty state - theme-aware */
2943
+ :where(.theme-scope) .event-list-empty {
2944
+ background-color: rgb(var(--tb-surface));
2945
+ color: rgb(var(--tb-onSurface, var(--tb-text)));
2946
+ border-color: rgb(var(--tb-border));
2947
+ }
2858
2948
  } /* end @layer rb-theme */
2859
2949
 
2860
2950
 
@@ -3331,17 +3421,103 @@
3331
3421
  border-radius: var(--rb-block-radius);
3332
3422
  background: transparent;
3333
3423
  cursor: pointer;
3334
- transition: border-color var(--rb-block-transition) ease,
3335
- background-color var(--rb-block-transition) ease;
3424
+ transition: border-color var(--rb-block-transition) ease,
3425
+ background-color var(--rb-block-transition) ease;
3426
+ }
3427
+
3428
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-payment-option:hover {
3429
+ border-color: var(--er-payment-border-hover);
3430
+ }
3431
+
3432
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-payment-option--selected {
3433
+ border-color: var(--er-payment-border-selected);
3434
+ background-color: var(--er-payment-bg-selected);
3435
+ }
3436
+
3437
+ /* Discount code entry */
3438
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount {
3439
+ margin-top: 0.5rem;
3440
+ }
3441
+
3442
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__form {
3443
+ display: grid;
3444
+ gap: 0.5rem;
3445
+ }
3446
+
3447
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__toggle {
3448
+ background: transparent;
3449
+ border: 0;
3450
+ padding: 0;
3451
+ color: rgb(var(--tb-primary));
3452
+ cursor: pointer;
3453
+ font-size: 0.875rem;
3454
+ text-decoration: underline;
3455
+ }
3456
+
3457
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__toggle:hover {
3458
+ text-decoration: none;
3459
+ }
3460
+
3461
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__label {
3462
+ font-size: 0.875rem;
3463
+ font-weight: 600;
3464
+ }
3465
+
3466
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__row {
3467
+ display: flex;
3468
+ gap: 0.5rem;
3469
+ }
3470
+
3471
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__input {
3472
+ flex: 1;
3473
+ border-radius: calc(var(--rb-block-radius) * 0.6);
3474
+ border: 1px solid var(--er-border);
3475
+ padding: 0.5rem 0.75rem;
3476
+ background: rgb(var(--tb-background));
3477
+ color: rgb(var(--tb-foreground));
3478
+ font-size: 0.875rem;
3479
+ }
3480
+
3481
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__input:focus {
3482
+ outline: 2px solid var(--er-focus-ring);
3483
+ outline-offset: 2px;
3484
+ }
3485
+
3486
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__remove {
3487
+ background: transparent;
3488
+ border: 0;
3489
+ padding: 0.25rem;
3490
+ color: var(--er-on-surface);
3491
+ cursor: pointer;
3492
+ opacity: 0.7;
3493
+ }
3494
+
3495
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__apply {
3496
+ background: transparent;
3497
+ border: 0;
3498
+ padding: 0.25rem;
3499
+ color: var(--er-on-surface);
3500
+ cursor: pointer;
3501
+ opacity: 0.8;
3336
3502
  }
3337
3503
 
3338
- :where(.theme-scope) :where([data-block="event-registration"]) .er-payment-option:hover {
3339
- border-color: var(--er-payment-border-hover);
3504
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__remove:hover {
3505
+ opacity: 1;
3340
3506
  }
3341
3507
 
3342
- :where(.theme-scope) :where([data-block="event-registration"]) .er-payment-option--selected {
3343
- border-color: var(--er-payment-border-selected);
3344
- background-color: var(--er-payment-bg-selected);
3508
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__apply:hover {
3509
+ opacity: 1;
3510
+ }
3511
+
3512
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__hint {
3513
+ margin: 0;
3514
+ font-size: 0.875rem;
3515
+ color: var(--er-on-surface-muted);
3516
+ }
3517
+
3518
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__feedback {
3519
+ margin: 0;
3520
+ font-size: 0.875rem;
3345
3521
  }
3346
3522
 
3347
3523
  /* Visually hide native radio but keep focusable (sr-only pattern) */
@@ -5693,7 +5869,7 @@
5693
5869
  width: 100%;
5694
5870
  padding: 0.5rem 0.75rem;
5695
5871
  border: 1px solid var(--ab-input-border, rgb(var(--tb-border, 226 232 240)));
5696
- border-radius: var(--ab-input-radius, var(--radius-control, var(--rb-block-radius, 1rem)));
5872
+ border-radius: var(--ab-input-radius, var(--rb-input-radius, var(--radius-control, var(--rb-block-radius, 1rem))));
5697
5873
  background: transparent;
5698
5874
  font-size: 0.875rem;
5699
5875
  transition: border-color var(--rb-block-transition, 150ms) ease, box-shadow var(--rb-block-transition, 150ms) ease;
@@ -5928,6 +6104,67 @@
5928
6104
  }
5929
6105
  }
5930
6106
 
6107
+ /* Hero typography scales. These classes are emitted by Theme V2 hero looks. */
6108
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-quiet .hero-headline {
6109
+ font-size: clamp(2rem, 4vw, 3rem);
6110
+ line-height: 1.12;
6111
+ }
6112
+
6113
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-quiet .hero-subheadline {
6114
+ font-size: clamp(1rem, 1.2vw, 1.25rem);
6115
+ line-height: 1.55;
6116
+ }
6117
+
6118
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-editorial .hero-headline {
6119
+ font-size: clamp(2.5rem, 5vw, 4rem);
6120
+ line-height: 1.08;
6121
+ }
6122
+
6123
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-editorial .hero-subheadline {
6124
+ font-size: clamp(1.0625rem, 1.4vw, 1.375rem);
6125
+ line-height: 1.55;
6126
+ }
6127
+
6128
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-headline {
6129
+ font-size: clamp(3rem, 6vw, 5rem);
6130
+ line-height: 1.04;
6131
+ }
6132
+
6133
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-subheadline {
6134
+ font-size: clamp(1.125rem, 1.5vw, 1.5rem);
6135
+ line-height: 1.5;
6136
+ }
6137
+
6138
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-headline {
6139
+ font-size: clamp(3.5rem, 8vw, 6.5rem);
6140
+ line-height: 0.98;
6141
+ }
6142
+
6143
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-subheadline {
6144
+ font-size: clamp(1.125rem, 1.4vw, 1.5rem);
6145
+ line-height: 1.45;
6146
+ }
6147
+
6148
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-medium.rb-hero-typography-poster .hero-headline {
6149
+ font-size: clamp(3rem, 6.5vw, 5rem);
6150
+ }
6151
+
6152
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-poster .hero-headline,
6153
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-display .hero-headline {
6154
+ font-size: clamp(2.75rem, 5.5vw, 4.5rem);
6155
+ line-height: 1.05;
6156
+ }
6157
+
6158
+ @media (max-width: 639px) {
6159
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-headline,
6160
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-headline,
6161
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-poster .hero-headline,
6162
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-display .hero-headline {
6163
+ font-size: clamp(2.5rem, 11vw, 3.5rem);
6164
+ line-height: 1.05;
6165
+ }
6166
+ }
6167
+
5931
6168
  /* =============================================================================
5932
6169
  * Shared: Heading Group (used by CTA, single-button, etc.)
5933
6170
  * =============================================================================
@@ -6323,6 +6560,8 @@
6323
6560
  --rb-modal-overlay-bg: rgb(var(--tb-text, 0 0 0) / 0.6);
6324
6561
  --rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
6325
6562
  --rb-modal-z-index: 20000;
6563
+ --shop-card-radius: var(--rb-block-radius, var(--radius-card, 0.75rem));
6564
+ --shop-control-radius: var(--rb-input-radius, var(--radius-control, 0.375rem));
6326
6565
  }
6327
6566
 
6328
6567
  :where(.theme-scope) .shop--empty {
@@ -6340,7 +6579,7 @@
6340
6579
  background-color: rgba(var(--tb-destructive), 0.1);
6341
6580
  color: rgb(var(--tb-destructive));
6342
6581
  padding: 0.75rem 1rem;
6343
- border-radius: var(--radius-control, 0.375rem);
6582
+ border-radius: var(--shop-control-radius);
6344
6583
  margin-bottom: 1rem;
6345
6584
  font-size: 0.875rem;
6346
6585
  }
@@ -6379,7 +6618,7 @@
6379
6618
  :where(.theme-scope) .shop__card {
6380
6619
  background: rgb(var(--tb-surface));
6381
6620
  border: 1px solid rgb(var(--tb-border));
6382
- border-radius: var(--radius-card, 0.5rem);
6621
+ border-radius: var(--shop-card-radius);
6383
6622
  padding: 1.5rem;
6384
6623
  display: flex;
6385
6624
  flex-direction: column;
@@ -6485,7 +6724,7 @@
6485
6724
  background-color: rgba(var(--tb-destructive), 0.1);
6486
6725
  color: rgb(var(--tb-destructive));
6487
6726
  padding: 0.625rem 0.75rem;
6488
- border-radius: var(--radius-control, 0.375rem);
6727
+ border-radius: var(--shop-control-radius);
6489
6728
  font-size: 0.875rem;
6490
6729
  margin-bottom: 1rem;
6491
6730
  }
@@ -6528,7 +6767,7 @@
6528
6767
  padding: 1.5rem 1rem;
6529
6768
  margin-bottom: 1.25rem;
6530
6769
  border: 1px solid rgb(var(--tb-border));
6531
- border-radius: var(--radius-card);
6770
+ border-radius: var(--shop-card-radius);
6532
6771
  background: rgb(var(--tb-surface));
6533
6772
  }
6534
6773
 
@@ -6603,7 +6842,7 @@
6603
6842
  padding: 2rem;
6604
6843
  background: var(--cp-card-bg);
6605
6844
  border: 1px solid var(--cp-card-border);
6606
- border-radius: var(--radius-card);
6845
+ border-radius: var(--cp-card-radius);
6607
6846
  }
6608
6847
 
6609
6848
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-login__title {
@@ -6673,7 +6912,7 @@
6673
6912
  /* Alerts */
6674
6913
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-alert {
6675
6914
  padding: 1rem 1.25rem;
6676
- border-radius: var(--radius-control);
6915
+ border-radius: var(--cp-control-radius);
6677
6916
  font-size: 0.9375rem;
6678
6917
  line-height: 1.4;
6679
6918
  border-left: 4px solid transparent;
@@ -6731,7 +6970,7 @@
6731
6970
  text-align: center;
6732
6971
  background: var(--cp-card-bg);
6733
6972
  border: 1px dashed var(--cp-card-border);
6734
- border-radius: var(--radius-card);
6973
+ border-radius: var(--cp-card-radius);
6735
6974
  }
6736
6975
 
6737
6976
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-empty__text {
@@ -6743,7 +6982,7 @@
6743
6982
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-card {
6744
6983
  background: var(--cp-card-bg);
6745
6984
  border: 1px solid var(--cp-card-border);
6746
- border-radius: var(--radius-card);
6985
+ border-radius: var(--cp-card-radius);
6747
6986
  padding: 1.25rem;
6748
6987
  }
6749
6988
 
@@ -6861,7 +7100,7 @@
6861
7100
  /* Use tiles as a mini "details grid" rather than event occurrence selection. */
6862
7101
  --rb-event-tile-bg: var(--cp-card-bg);
6863
7102
  --rb-event-tile-border: var(--cp-card-border);
6864
- --rb-event-tile-radius: var(--radius-control);
7103
+ --rb-event-tile-radius: var(--cp-control-radius);
6865
7104
 
6866
7105
  display: flex;
6867
7106
  flex-direction: column;
@@ -6907,7 +7146,7 @@
6907
7146
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-table-wrap {
6908
7147
  background: var(--cp-card-bg);
6909
7148
  border: 1px solid var(--cp-card-border);
6910
- border-radius: var(--radius-card);
7149
+ border-radius: var(--cp-card-radius);
6911
7150
  }
6912
7151
 
6913
7152
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-table {
@@ -8318,6 +8557,11 @@
8318
8557
  margin-top: 0.5rem;
8319
8558
  }
8320
8559
 
8560
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__form {
8561
+ display: grid;
8562
+ gap: 0.5rem;
8563
+ }
8564
+
8321
8565
  :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__toggle {
8322
8566
  background: transparent;
8323
8567
  border: 0;
@@ -8332,10 +8576,14 @@
8332
8576
  text-decoration: none;
8333
8577
  }
8334
8578
 
8335
- :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__field {
8579
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__label {
8580
+ font-size: 0.875rem;
8581
+ font-weight: 600;
8582
+ }
8583
+
8584
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__row {
8336
8585
  display: flex;
8337
8586
  gap: 0.5rem;
8338
- margin-top: 0.5rem;
8339
8587
  }
8340
8588
 
8341
8589
  :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__input {
@@ -8361,10 +8609,33 @@
8361
8609
  opacity: 0.6;
8362
8610
  }
8363
8611
 
8612
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__apply {
8613
+ background: transparent;
8614
+ border: 0;
8615
+ padding: 0.25rem;
8616
+ cursor: pointer;
8617
+ opacity: 0.8;
8618
+ }
8619
+
8364
8620
  :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__remove:hover {
8365
8621
  opacity: 1;
8366
8622
  }
8367
8623
 
8624
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__apply:hover {
8625
+ opacity: 1;
8626
+ }
8627
+
8628
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__hint {
8629
+ margin: 0;
8630
+ font-size: 0.875rem;
8631
+ opacity: 0.7;
8632
+ }
8633
+
8634
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__feedback {
8635
+ margin: 0;
8636
+ font-size: 0.875rem;
8637
+ }
8638
+
8368
8639
  /* =============================================================================
8369
8640
  * Altcha (Spam Protection)
8370
8641
  * =============================================================================
@@ -8807,16 +9078,36 @@
8807
9078
  * ============================================================================= */
8808
9079
 
8809
9080
  :where(.theme-scope) .event-listing-compact-container {
8810
- width: min(100%, 56rem);
9081
+ --event-compact-divider-color: color-mix(
9082
+ in oklab,
9083
+ rgb(var(--tb-border, 229 231 235)),
9084
+ rgb(var(--tb-text, 17 24 39)) 4%
9085
+ );
9086
+
9087
+ width: min(100%, 92rem);
8811
9088
  margin-inline: auto;
9089
+ overflow: hidden;
9090
+ border: 1px solid var(--event-compact-divider-color);
9091
+ border-radius: 1rem;
9092
+ background: rgb(var(--tb-background, 255 255 255));
9093
+ box-shadow: 0 1.25rem 3.5rem rgba(var(--tb-shadow), 0.08);
9094
+ }
9095
+
9096
+ :where(.theme-scope) .rb-event-list-treatment-lined-panel .event-listing-compact-container {
9097
+ --event-compact-divider-color: color-mix(
9098
+ in oklab,
9099
+ rgb(var(--tb-border, 229 231 235)),
9100
+ rgb(var(--tb-text, 17 24 39)) 8%
9101
+ );
8812
9102
  }
8813
9103
 
8814
9104
  :where(.theme-scope) .event-compact-row {
8815
- display: flex;
9105
+ display: grid;
9106
+ grid-template-columns: clamp(5.5rem, 8vw, 8rem) minmax(0, 1fr) clamp(15rem, 24vw, 21rem);
8816
9107
  align-items: center;
8817
- gap: 1rem;
8818
- padding: 0.75rem 1rem;
8819
- border-bottom: 1px solid rgb(var(--tb-border, 229 231 235));
9108
+ min-height: 8.75rem;
9109
+ padding: 1.55rem clamp(1.5rem, 3vw, 2.6rem);
9110
+ border-bottom: 1px solid var(--event-compact-divider-color);
8820
9111
  transition: background-color 150ms ease;
8821
9112
  }
8822
9113
 
@@ -8825,70 +9116,210 @@
8825
9116
  }
8826
9117
 
8827
9118
  :where(.theme-scope) .event-compact-row:hover {
8828
- background-color: rgba(var(--tb-primary, 0 0 0), 0.04);
9119
+ background-color: rgba(var(--tb-primary, 0 0 0), 0.035);
8829
9120
  }
8830
9121
 
8831
- :where(.theme-scope) .event-compact-row-content {
8832
- flex: 1;
9122
+ :where(.theme-scope) .event-compact-row-date {
9123
+ display: grid;
9124
+ grid-template-rows: 1rem minmax(2.7rem, auto) 1rem;
9125
+ place-items: center;
9126
+ gap: 0.35rem;
8833
9127
  min-width: 0;
8834
- display: flex;
8835
- flex-direction: column;
8836
- gap: 0.25rem;
9128
+ padding-right: clamp(1rem, 2vw, 1.75rem);
9129
+ text-align: center;
9130
+ text-decoration: none;
9131
+ }
9132
+
9133
+ :where(.theme-scope) .event-compact-row-date-weekday,
9134
+ :where(.theme-scope) .event-compact-row-date-month {
9135
+ display: grid;
9136
+ place-items: center;
9137
+ block-size: 1rem;
9138
+ color: rgb(var(--tb-primary, 0 0 0));
9139
+ font-size: 0.875rem;
9140
+ font-weight: 600;
9141
+ line-height: normal;
9142
+ letter-spacing: 0.08em;
9143
+ }
9144
+
9145
+ :where(.theme-scope) .event-compact-row-date-day {
9146
+ display: grid;
9147
+ place-items: center;
9148
+ min-block-size: clamp(2.7rem, 4.5vw, 3.7rem);
9149
+ color: rgb(var(--tb-text, 17 24 39));
9150
+ font-family: var(--font-heading, var(--font-body, inherit));
9151
+ font-size: clamp(2.3rem, 4.2vw, 3.35rem);
9152
+ font-weight: 400;
9153
+ line-height: 1;
8837
9154
  }
8838
9155
 
8839
- :where(.theme-scope) .event-compact-row-top {
9156
+ :where(.theme-scope) .event-compact-row-content {
9157
+ min-width: 0;
8840
9158
  display: flex;
8841
- align-items: baseline;
8842
- gap: 0.75rem;
8843
- flex-wrap: wrap;
9159
+ flex-direction: column;
9160
+ gap: 1rem;
9161
+ height: 100%;
9162
+ justify-content: center;
9163
+ padding-inline: clamp(1.4rem, 3vw, 3.2rem);
9164
+ border-left: 1px solid var(--event-compact-divider-color);
8844
9165
  }
8845
9166
 
8846
9167
  :where(.theme-scope) .event-compact-row-title {
8847
- font-weight: 600;
8848
- font-size: 0.9375rem;
8849
- line-height: 1.3;
8850
- white-space: nowrap;
9168
+ margin: 0;
9169
+ color: rgb(var(--tb-text, 17 24 39));
9170
+ font-family: var(--font-heading, var(--font-body, inherit));
9171
+ font-size: clamp(1.55rem, 2.6vw, 2.4rem);
9172
+ font-weight: 400;
9173
+ line-height: 1.05;
8851
9174
  overflow: hidden;
8852
9175
  text-overflow: ellipsis;
8853
- min-width: 0;
8854
- flex: 1;
8855
- }
8856
-
8857
- :where(.theme-scope) .event-compact-row-datetime {
8858
- font-size: 0.8125rem;
8859
- opacity: 0.7;
8860
9176
  white-space: nowrap;
8861
- flex-shrink: 0;
8862
9177
  }
8863
9178
 
8864
- :where(.theme-scope) .event-compact-row-bottom {
9179
+ :where(.theme-scope) .event-compact-row-meta {
8865
9180
  display: flex;
8866
9181
  align-items: center;
8867
- gap: 0.75rem;
8868
- font-size: 0.8125rem;
8869
- opacity: 0.7;
9182
+ gap: 0.9rem;
9183
+ min-width: 0;
9184
+ color: rgb(var(--tb-text, 17 24 39));
9185
+ font-size: clamp(0.9375rem, 1.4vw, 1.0625rem);
9186
+ line-height: 1.35;
8870
9187
  }
8871
9188
 
8872
9189
  :where(.theme-scope) .event-compact-row-venue {
8873
9190
  display: inline-flex;
8874
9191
  align-items: center;
8875
- gap: 0.25rem;
9192
+ gap: 0.45rem;
9193
+ min-width: 0;
9194
+ }
9195
+
9196
+ :where(.theme-scope) .event-compact-row-venue svg {
9197
+ width: 1.05em;
9198
+ height: 1.05em;
8876
9199
  }
8877
9200
 
9201
+ :where(.theme-scope) .event-compact-row-teacher,
8878
9202
  :where(.theme-scope) .event-compact-row-price {
8879
- font-weight: 500;
9203
+ display: inline-flex;
9204
+ align-items: center;
9205
+ gap: 0.9rem;
9206
+ }
9207
+
9208
+ :where(.theme-scope) .event-compact-row-teacher::before,
9209
+ :where(.theme-scope) .event-compact-row-price::before {
9210
+ content: "";
9211
+ width: 0.18rem;
9212
+ height: 0.18rem;
9213
+ border-radius: 9999px;
9214
+ background: currentColor;
9215
+ }
9216
+
9217
+ :where(.theme-scope) .event-compact-row-price {
9218
+ color: rgb(var(--tb-secondary, var(--tb-primary, 0 0 0)));
9219
+ font-weight: 600;
9220
+ }
9221
+
9222
+ :where(.theme-scope) .event-compact-row-action {
9223
+ display: grid;
9224
+ align-content: center;
9225
+ gap: 1rem;
9226
+ height: 100%;
9227
+ padding-left: clamp(1.5rem, 3vw, 3.2rem);
9228
+ border-left: 1px solid var(--event-compact-divider-color);
9229
+ }
9230
+
9231
+ :where(.theme-scope) .event-compact-row-datetime {
9232
+ display: inline-flex;
9233
+ align-items: center;
9234
+ gap: 0.65rem;
9235
+ color: rgb(var(--tb-text, 17 24 39));
9236
+ font-size: clamp(0.9375rem, 1.45vw, 1.0625rem);
9237
+ line-height: 1.3;
9238
+ white-space: nowrap;
9239
+ }
9240
+
9241
+ :where(.theme-scope) .event-compact-row-datetime svg {
9242
+ width: 1.1em;
9243
+ height: 1.1em;
9244
+ flex-shrink: 0;
8880
9245
  }
8881
9246
 
8882
9247
  :where(.theme-scope) .event-compact-row-status {
9248
+ color: rgb(var(--tb-muted, var(--tb-text, 17 24 39)));
8883
9249
  font-weight: 500;
8884
- opacity: 0.8;
8885
9250
  }
8886
9251
 
8887
9252
  :where(.theme-scope) .event-compact-row-cta {
8888
- flex-shrink: 0;
9253
+ width: min(100%, 15rem);
9254
+ min-height: 2.7rem;
9255
+ justify-content: space-between;
9256
+ gap: 1rem;
9257
+ border-radius: 9999px;
9258
+ padding-inline: 1.25rem 1rem;
8889
9259
  white-space: nowrap;
8890
9260
  }
8891
9261
 
9262
+ :where(.theme-scope) .event-compact-row-cta svg {
9263
+ width: 1.25rem;
9264
+ height: 1.25rem;
9265
+ flex-shrink: 0;
9266
+ }
9267
+
9268
+ @media (max-width: 767px) {
9269
+ :where(.theme-scope) .event-listing-compact-container {
9270
+ border-radius: 0.875rem;
9271
+ }
9272
+
9273
+ :where(.theme-scope) .event-compact-row {
9274
+ grid-template-columns: 4.75rem minmax(0, 1fr);
9275
+ min-height: 0;
9276
+ padding: 1.25rem;
9277
+ row-gap: 1.1rem;
9278
+ }
9279
+
9280
+ :where(.theme-scope) .event-compact-row-date {
9281
+ padding-right: 0.9rem;
9282
+ }
9283
+
9284
+ :where(.theme-scope) .event-compact-row-date-day {
9285
+ font-size: 2.35rem;
9286
+ }
9287
+
9288
+ :where(.theme-scope) .event-compact-row-content {
9289
+ gap: 0.75rem;
9290
+ padding-left: 1.1rem;
9291
+ padding-right: 0;
9292
+ }
9293
+
9294
+ :where(.theme-scope) .event-compact-row-title {
9295
+ font-size: clamp(1.35rem, 8vw, 1.9rem);
9296
+ white-space: normal;
9297
+ }
9298
+
9299
+ :where(.theme-scope) .event-compact-row-meta {
9300
+ flex-wrap: wrap;
9301
+ gap: 0.5rem 0.8rem;
9302
+ }
9303
+
9304
+ :where(.theme-scope) .event-compact-row-action {
9305
+ grid-column: 1 / -1;
9306
+ grid-template-columns: minmax(0, 1fr);
9307
+ gap: 0.85rem;
9308
+ padding-left: 0;
9309
+ padding-top: 1rem;
9310
+ border-left: none;
9311
+ border-top: 1px solid var(--event-compact-divider-color);
9312
+ }
9313
+
9314
+ :where(.theme-scope) .event-compact-row-datetime {
9315
+ white-space: normal;
9316
+ }
9317
+
9318
+ :where(.theme-scope) .event-compact-row-cta {
9319
+ width: 100%;
9320
+ }
9321
+ }
9322
+
8892
9323
 
8893
9324
  :where(.theme-scope) .section-state__callout {
8894
9325
  text-align: center;
@@ -8939,3 +9370,65 @@
8939
9370
  }
8940
9371
 
8941
9372
 
9373
+ /* =============================================================================
9374
+ * Shared: Heading Decorations
9375
+ * =============================================================================
9376
+ */
9377
+
9378
+ :where(.theme-scope) .rb-heading-decoration {
9379
+ display: block;
9380
+ flex: 0 0 auto;
9381
+ pointer-events: none;
9382
+ }
9383
+
9384
+ :where(.theme-scope) .rb-heading-decoration-placement-after-heading {
9385
+ margin-top: 0.35rem;
9386
+ }
9387
+
9388
+ :where(.theme-scope) .rb-heading-decoration-placement-under-centered-heading {
9389
+ margin-left: auto;
9390
+ margin-right: auto;
9391
+ }
9392
+
9393
+ :where(.theme-scope) .rb-heading-decoration-organic-squiggle {
9394
+ width: clamp(5.5rem, 15vw, 9rem);
9395
+ height: 1.1rem;
9396
+ background-color: currentColor;
9397
+ opacity: 0.9;
9398
+ -webkit-mask: url("data:image/svg+xml,%3Csvg width='144' height='18' viewBox='0 0 144 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 10C15 1 27 1 40 10C53 18 66 18 79 10C92 1 105 1 118 10C127 16 136 17 142 12' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
9399
+ mask: url("data:image/svg+xml,%3Csvg width='144' height='18' viewBox='0 0 144 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 10C15 1 27 1 40 10C53 18 66 18 79 10C92 1 105 1 118 10C127 16 136 17 142 12' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
9400
+ }
9401
+
9402
+ :where(.theme-scope) .rb-heading-decoration-short-center-rule {
9403
+ width: 4.5rem;
9404
+ height: 0.125rem;
9405
+ border-radius: 999px;
9406
+ background-color: currentColor;
9407
+ opacity: 0.75;
9408
+ }
9409
+
9410
+ :where(.theme-scope) .rb-heading-decoration-color-text {
9411
+ color: rgb(var(--tb-text));
9412
+ }
9413
+
9414
+ :where(.theme-scope) .rb-heading-decoration-color-primary {
9415
+ color: rgb(var(--tb-primary));
9416
+ }
9417
+
9418
+ :where(.theme-scope) .rb-heading-decoration-color-secondary {
9419
+ color: rgb(var(--tb-secondary));
9420
+ }
9421
+
9422
+ :where(.theme-scope) .rb-heading-decoration-color-accent {
9423
+ color: rgb(var(--tb-accent));
9424
+ }
9425
+
9426
+ :where(.theme-scope) .rb-heading-decoration-color-border {
9427
+ color: rgb(var(--tb-border));
9428
+ }
9429
+
9430
+ :where(.theme-scope) .rb-heading-decoration-color-muted {
9431
+ color: rgb(var(--tb-mutedText));
9432
+ }
9433
+
9434
+