@riverbankcms/sdk 0.104.3 → 0.108.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 (302) hide show
  1. package/README.md +84 -51
  2. package/dist/{PreviewEditorSidebar-CBMhU9p_.mjs → PreviewEditorSidebar-BBT-kZAM.mjs} +1850 -1183
  3. package/dist/{PreviewEditorUI-C5KEw4M8.mjs → PreviewEditorUI-D69xNKT2.mjs} +10 -9
  4. package/dist/{PreviewQueryProvider-CStABBUh.mjs → PreviewQueryProvider-RRu7wyQ5.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Iq12HjL7.mjs → SdkPreviewModeRuntime-CuDjXH6o.mjs} +2562 -457
  6. package/dist/{SiteChromeCustomizeContext-Cx0NMdyv.mjs → SiteChromeCustomizeContext-BQUY2dEk.mjs} +7689 -3196
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +36493 -1395
  8. package/dist/_dts/api/src/blocks.d.ts +41 -7
  9. package/dist/_dts/api/src/bookingConfig.d.ts +2 -0
  10. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +5 -1
  11. package/dist/_dts/api/src/bookingRecords.d.ts +180 -115
  12. package/dist/_dts/api/src/cache-tags.d.ts +3 -0
  13. package/dist/_dts/api/src/contentRuntime.d.ts +25 -16
  14. package/dist/_dts/api/src/courses.d.ts +68 -10
  15. package/dist/_dts/api/src/endpoints.d.ts +128 -0
  16. package/dist/_dts/api/src/footer-settings.d.ts +1 -0
  17. package/dist/_dts/api/src/footerSettings.d.ts +8 -0
  18. package/dist/_dts/api/src/index.d.ts +127 -124
  19. package/dist/_dts/api/src/navigation/contracts.d.ts +3 -3
  20. package/dist/_dts/api/src/previewContentContract.d.ts +4 -0
  21. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +9 -0
  22. package/dist/_dts/api/src/sdkContracts.d.ts +178 -6
  23. package/dist/_dts/api/src/siteBanner.d.ts +2 -2
  24. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +143 -55
  25. package/dist/_dts/api/src/siteOperations.d.ts +1 -0
  26. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +32 -4
  27. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +72 -47
  28. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +36 -4
  29. package/dist/_dts/blocks/src/definitions.d.ts +1 -1
  30. package/dist/_dts/blocks/src/portal/types.d.ts +25 -7
  31. package/dist/_dts/blocks/src/primitives/layout/Section.d.ts +0 -1
  32. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -0
  33. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +2 -2
  34. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -0
  35. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +2 -0
  36. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +4 -0
  37. package/dist/_dts/blocks/src/system/blocks/events/recurring-schedule-projection.d.ts +52 -0
  38. package/dist/_dts/blocks/src/system/blocks/events/recurring-schedule.d.ts +22 -0
  39. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +45 -0
  40. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +10 -0
  41. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -1
  42. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  43. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +9 -0
  44. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +8 -2
  45. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +8 -8
  46. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +24 -24
  47. package/dist/_dts/blocks/src/system/blocks/offerings-preview/scheduleSummary.d.ts +29 -0
  48. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -1
  49. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +50 -0
  50. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +9 -48
  51. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  52. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  53. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +2 -5
  54. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  55. package/dist/_dts/blocks/src/system/designCapabilities.d.ts +1 -0
  56. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +2 -2
  57. package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -1
  58. package/dist/_dts/blocks/src/system/icons/social.d.ts +5 -0
  59. package/dist/_dts/blocks/src/system/icons/svg.d.ts +1 -0
  60. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +2 -2
  61. package/dist/_dts/blocks/src/system/node/fragments/backgroundLayer.d.ts +13 -0
  62. package/dist/_dts/blocks/src/system/node/fragments/footerNav.d.ts +2 -0
  63. package/dist/_dts/blocks/src/system/node/fragments/styledCard.d.ts +3 -0
  64. package/dist/_dts/blocks/src/system/node/fragments/styledContainer.d.ts +4 -4
  65. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +3 -12
  66. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/runtime/blockComposition.d.ts +2 -0
  69. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +90 -6
  70. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +45 -3
  71. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +1 -0
  72. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +2 -2
  73. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/logic.d.ts +2 -1
  74. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/view.d.ts +1 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/course-details.server.d.ts +2 -1
  76. package/dist/_dts/blocks/src/system/runtime/nodes/course-page-surface-scope.d.ts +17 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/types.d.ts +3 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +5 -0
  79. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.server.d.ts +1 -1
  80. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventScope.d.ts +9 -18
  81. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +106 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/events/RecurringSchedule.d.ts +11 -0
  83. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +7 -3
  84. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +3 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +11 -1
  86. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  87. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +3 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +6 -6
  89. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +1 -1
  90. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +11 -5
  91. package/dist/_dts/blocks/src/system/runtime/nodes/shop.types.d.ts +2 -1
  92. package/dist/_dts/blocks/src/system/runtime/nodes/svg.d.ts +7 -0
  93. package/dist/_dts/blocks/src/system/types/link.d.ts +3 -3
  94. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +14 -0
  95. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +27 -8
  96. package/dist/_dts/content-editor/src/footerComposer.d.ts +56 -0
  97. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +1 -1
  98. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +5 -5
  99. package/dist/_dts/content-editor/src/index.d.ts +2 -0
  100. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +3 -1
  101. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +20 -36
  102. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +5 -1
  103. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +11 -0
  104. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  105. package/dist/_dts/content-model/src/definitions/shared.d.ts +3 -0
  106. package/dist/_dts/core/src/branded.d.ts +47 -0
  107. package/dist/_dts/core/src/dated-offering-settlement.d.ts +47 -0
  108. package/dist/_dts/core/src/editor-state.d.ts +4 -0
  109. package/dist/_dts/core/src/event-page-surface-subject.d.ts +44 -0
  110. package/dist/_dts/core/src/footer-composition.d.ts +143 -0
  111. package/dist/_dts/core/src/index.d.ts +51 -47
  112. package/dist/_dts/core/src/public-profile.d.ts +73 -0
  113. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +4398 -2859
  114. package/dist/_dts/db/src/schemas/forms.d.ts +10 -10
  115. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +5 -0
  116. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +1 -0
  117. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +1 -1
  118. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +4 -1
  119. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -1
  120. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +2 -1
  121. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockReorder.d.ts +2 -1
  122. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +10 -0
  123. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
  124. package/dist/_dts/media-core/src/index.d.ts +2 -1
  125. package/dist/_dts/media-core/src/storagePathDomain.d.ts +47 -0
  126. package/dist/_dts/media-core/src/url.d.ts +1 -21
  127. package/dist/_dts/path-utils/src/index.d.ts +5 -0
  128. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +4 -2
  129. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -1
  130. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -1
  131. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +5 -0
  132. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +4 -9
  133. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -0
  134. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +8 -11
  135. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +4 -9
  136. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +2 -6
  137. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +5 -9
  138. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +81 -43
  139. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.typography.d.ts +61 -0
  140. package/dist/_dts/preview-next/src/client/preview/previewErrorMessages.d.ts +4 -0
  141. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +7 -17
  142. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +15 -8
  143. package/dist/_dts/preview-next/src/client/preview/typographyFontCatalog.d.ts +57 -0
  144. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +1 -1
  145. package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +4 -7
  146. package/dist/_dts/sdk/src/cli/commands/style.d.ts +24 -10
  147. package/dist/_dts/sdk/src/cli/content/reader.d.ts +1 -0
  148. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +3 -3
  149. package/dist/_dts/sdk/src/cli/sync/media.d.ts +16 -2
  150. package/dist/_dts/sdk/src/client/management/blocks.d.ts +14 -1
  151. package/dist/_dts/sdk/src/client/management/index.d.ts +2 -1
  152. package/dist/_dts/sdk/src/client/management/types.d.ts +147 -24
  153. package/dist/_dts/sdk/src/client/types.d.ts +2 -0
  154. package/dist/_dts/sdk/src/config/content-types.d.ts +2 -0
  155. package/dist/_dts/sdk/src/config/content-validation.d.ts +4 -0
  156. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  157. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  158. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  159. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +23 -3
  160. package/dist/_dts/sdk/src/data/dataLoaderContext.d.ts +17 -0
  161. package/dist/_dts/sdk/src/data/dataLoaderValue.d.ts +36 -0
  162. package/dist/_dts/sdk/src/data/defineOwnDataProperty.d.ts +2 -0
  163. package/dist/_dts/sdk/src/data/executeCodeLoaders.d.ts +36 -40
  164. package/dist/_dts/sdk/src/data/index.d.ts +3 -3
  165. package/dist/_dts/sdk/src/data/resolveBlockData.d.ts +54 -0
  166. package/dist/_dts/sdk/src/data/types.d.ts +43 -78
  167. package/dist/_dts/sdk/src/navigation/index.d.ts +2 -0
  168. package/dist/_dts/sdk/src/next/index.d.ts +1 -0
  169. package/dist/_dts/sdk/src/next/redirect-destination.d.ts +1 -1
  170. package/dist/_dts/sdk/src/next/resolveTheme.d.ts +2 -1
  171. package/dist/_dts/sdk/src/next/types.d.ts +10 -1
  172. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -10
  173. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -1
  174. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +10 -5
  175. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +6 -10
  176. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -0
  177. package/dist/_dts/sdk/src/server.d.ts +4 -3
  178. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  179. package/dist/_dts/sdk/src/version.d.ts +1 -1
  180. package/dist/_dts/site-commands/src/capabilityGaps.d.ts +2 -2
  181. package/dist/_dts/site-commands/src/commands.d.ts +934 -40
  182. package/dist/_dts/theme-core/src/accordions/types.d.ts +2 -2
  183. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +5 -1
  184. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +22 -0
  185. package/dist/_dts/theme-core/src/buttons/personalities/quiet-arrow.d.ts +17 -0
  186. package/dist/_dts/theme-core/src/buttons/personalities/two-tone-pill.d.ts +17 -0
  187. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +3 -3
  188. package/dist/_dts/theme-core/src/buttons/types.d.ts +12 -8
  189. package/dist/_dts/theme-core/src/cards/types.d.ts +3 -3
  190. package/dist/_dts/theme-core/src/data.d.ts +12 -0
  191. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -1
  192. package/dist/_dts/theme-core/src/fonts/types.d.ts +6 -0
  193. package/dist/_dts/theme-core/src/footer/mode.d.ts +15 -0
  194. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  195. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  196. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +72 -54
  197. package/dist/_dts/theme-core/src/navigation/types.d.ts +1 -1
  198. package/dist/_dts/theme-core/src/palette/colors.d.ts +12 -0
  199. package/dist/_dts/theme-core/src/palette/curated/brand-led.d.ts +10 -5
  200. package/dist/_dts/theme-core/src/palette/curated/high-contrast.d.ts +6 -3
  201. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +31 -236
  202. package/dist/_dts/theme-core/src/palette/curated/soft-natural.d.ts +8 -4
  203. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +14 -12
  204. package/dist/_dts/theme-core/src/palette/curated/warm-dark.d.ts +4 -2
  205. package/dist/_dts/theme-core/src/palette/curated/warm-neutral.d.ts +8 -4
  206. package/dist/_dts/theme-core/src/palette/editorState.d.ts +33 -3
  207. package/dist/_dts/theme-core/src/palette/index.d.ts +0 -4
  208. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +12 -6
  209. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +20 -72
  210. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +29 -4
  211. package/dist/_dts/theme-core/src/palette/selection.d.ts +6 -4
  212. package/dist/_dts/theme-core/src/schema.d.ts +1307 -38
  213. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +218 -158
  214. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -6
  215. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +218 -158
  216. package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +1 -0
  217. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
  218. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +161 -51
  219. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +6 -0
  220. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  221. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +12 -1
  222. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -1
  223. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +24 -1
  224. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +14 -48
  225. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +10 -23
  226. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +15 -0
  227. package/dist/_dts/theme-core/src/site-styles/siteStyleThemeCompiler.d.ts +1 -2
  228. package/dist/_dts/theme-core/src/site-styles/siteStyleTypography.d.ts +456 -0
  229. package/dist/_dts/theme-core/src/site-styles/types.d.ts +52 -3
  230. package/dist/cli/index.mjs +4118 -2278
  231. package/dist/client/{DiscountCodeDisclosure-BXM73_E5.mjs → DiscountCodeDisclosure-D6TOf6Hi.mjs} +1 -1
  232. package/dist/client/{EventCombined.client-DT5elP7j.mjs → EventCombined.client-Dao3zxRk.mjs} +3 -3
  233. package/dist/client/{EventListing.client-pTYGfV9C.mjs → EventListing.client-B2NNt4y1.mjs} +2 -2
  234. package/dist/client/{LeafletStaticMap-dQrhlUe3.mjs → LeafletStaticMap-BhwFo16w.mjs} +1 -1
  235. package/dist/client/{MagicLinkForm-u6Dul4j5.mjs → MagicLinkForm-BWnB7cMR.mjs} +2 -2
  236. package/dist/client/{StepIndicator-nWqineJ2.mjs → StepIndicator-TzRiQ0BY.mjs} +2 -2
  237. package/dist/client/{accordion-CSJcTUyH.mjs → accordion-BPy-AJ4_.mjs} +1 -1
  238. package/dist/client/{bookingForm-C73wOuVa.mjs → bookingForm-BL4PGZds.mjs} +7 -7
  239. package/dist/client/bookings.mjs +382 -204
  240. package/dist/client/{buttons-DfYyqt8C.mjs → buttons-EBjyslaX.mjs} +265 -152
  241. package/dist/client/{carousel-fMBb0JSc.mjs → carousel-C2b7Cn9-.mjs} +1 -1
  242. package/dist/client/{cart-BtaCwT3S.mjs → cart-BQcbXIVD.mjs} +3 -3
  243. package/dist/client/{checkout-DkTwZSnh.mjs → checkout-DEmpGRJu.mjs} +3 -3
  244. package/dist/client/client.mjs +5019 -1886
  245. package/dist/client/{colorStyles-Wyl6JujD.mjs → colorStyles-jZS6KfkP.mjs} +1 -1
  246. package/dist/client/{colorTokenParts-dT8MISgJ.mjs → colorTokenParts-CMugwvX_.mjs} +3 -1
  247. package/dist/client/{courseRegistration-DnLmapJu.mjs → courseRegistration-BqRZPmsq.mjs} +56 -21
  248. package/dist/client/{eventCalendar-BvLOc9KY.mjs → eventCalendar-B8N_tSl5.mjs} +29 -21
  249. package/dist/client/{eventCombined-kShgJPQr.mjs → eventCombined-Gjn6gtq7.mjs} +2 -2
  250. package/dist/client/{eventDetails-C5NTM0Vo.mjs → eventDetails-M-VCxA-r.mjs} +4 -4
  251. package/dist/client/{eventListing-B82ZdKP6.mjs → eventListing-DR19hqYi.mjs} +2 -2
  252. package/dist/client/{eventRegistration-qJVFqBWo.mjs → eventRegistration-BR02a0k3.mjs} +8 -8
  253. package/dist/client/{form-BvAcKiuu.mjs → form-LY2xIbwg.mjs} +2 -2
  254. package/dist/client/{headerSection-NvAiEHAg.mjs → headerSection-CYwwXJfh.mjs} +3 -3
  255. package/dist/client/hooks.mjs +3335 -2210
  256. package/dist/client/{locationMap-D0j52xfI.mjs → locationMap-DWnBXrFq.mjs} +3 -3
  257. package/dist/client/{media-BCW_g2cQ.mjs → media-DHtSxS5V.mjs} +61 -56
  258. package/dist/client/{newsletterForm-B8_i93qH.mjs → newsletterForm-D9s-fQ2P.mjs} +3 -3
  259. package/dist/client/{pricing-DIYnyHOk.mjs → pricing-DDq80oYc.mjs} +1 -1
  260. package/dist/client/{productDetail-w0eAHkuQ.mjs → productDetail-B0SbWd45.mjs} +3 -3
  261. package/dist/client/{productList-Vsguq5Xt.mjs → productList-PwYlZn0y.mjs} +3 -3
  262. package/dist/client/{propsDecoder-CD2pJ1WB.mjs → propsDecoder-BRWBiH7i.mjs} +225 -68
  263. package/dist/client/rendering/client.mjs +2266 -1267
  264. package/dist/client/rendering/islands.mjs +20 -20
  265. package/dist/client/rendering.mjs +5364 -1979
  266. package/dist/client/{shop-Dgxs-Q8F.mjs → shop-CMwZPYME.mjs} +8 -8
  267. package/dist/client/{shop-commerce-DJAhsTaT.mjs → shop-commerce-BuxsFate.mjs} +6 -6
  268. package/dist/client/{shop-commerce-store-CfCXltXW.mjs → shop-commerce-store-boYlEJ91.mjs} +1 -1
  269. package/dist/client/{shopShared-CmDcPXUt.mjs → shopShared-D2naaOes.mjs} +3 -3
  270. package/dist/client/{useDiscountCodeUi-CirrT2bM.mjs → useDiscountCodeUi-D9RHpVoj.mjs} +1 -1
  271. package/dist/client/{useEventFilters-CNZxlCcO.mjs → useEventFilters-igGiK1re.mjs} +6 -6
  272. package/dist/client/{usePolling-Baks_iBI.mjs → usePolling-CI7MbsFB.mjs} +2 -2
  273. package/dist/preview-next/before-render.mjs +218 -1
  274. package/dist/preview-next/client/runtime.mjs +4 -4
  275. package/dist/preview-next/middleware.mjs +218 -1
  276. package/dist/{previewAuthStore-CfquDtTh.mjs → previewAuthStore-a_cBD28m.mjs} +218 -1
  277. package/dist/{sdk-runtime-BfNiFeNJ.mjs → sdk-runtime-MBzD-GmP.mjs} +2 -2
  278. package/dist/{separator-BhAR_Xmf.mjs → separator-5ahRBC85.mjs} +1 -1
  279. package/dist/server/components.mjs +5218 -2529
  280. package/dist/server/config-validation.mjs +3112 -2210
  281. package/dist/server/config.mjs +3112 -2211
  282. package/dist/server/data.mjs +3758 -2277
  283. package/dist/server/index.mjs +224 -4
  284. package/dist/server/navigation.mjs +9 -3
  285. package/dist/server/next/middleware.mjs +1 -1
  286. package/dist/server/next.mjs +6468 -2749
  287. package/dist/server/page-converter.mjs +3524 -2635
  288. package/dist/server/prebuild.mjs +1 -1
  289. package/dist/server/rendering/server.mjs +5392 -2488
  290. package/dist/server/rendering.mjs +6241 -2851
  291. package/dist/server/routing.mjs +3414 -1826
  292. package/dist/server/server.mjs +4174 -2354
  293. package/dist/server/theme-bridge.mjs +9579 -8132
  294. package/dist/server/theme.mjs +313 -154
  295. package/dist/styles/index.css +1223 -31
  296. package/package.json +1 -1
  297. package/dist/_dts/preview-next/src/client/preview/typographySelectionInput.d.ts +0 -16
  298. package/dist/_dts/theme-core/src/palette/historicalThemePalette.d.ts +0 -44
  299. package/dist/_dts/theme-core/src/palette/legacyRuntimeProjection.d.ts +0 -55
  300. package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +0 -45
  301. package/dist/_dts/theme-core/src/palette/paletteCompatibilityTransition.d.ts +0 -232
  302. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +0 -234
@@ -65,15 +65,16 @@
65
65
  }
66
66
 
67
67
  /* Eyebrow text - small uppercase labels for section introductions.
68
- font-family resolves to the optional eyebrow/mono font role, falling back
69
- to the body font when the theme sets none (so existing themes are
70
- unchanged). */
68
+ Each property resolves from the optional eyebrow typographic role
69
+ (--fs/--fw/--ls/--tt-eyebrow, emitted only when the theme sets them),
70
+ with the historical hardcoded values as fallbacks so existing themes
71
+ are unchanged. font-family falls back to the body font likewise. */
71
72
  .rb-eyebrow {
72
73
  font-family: var(--font-eyebrow, var(--font-body));
73
- font-size: 0.875rem;
74
- font-weight: 600;
75
- letter-spacing: 0.025em;
76
- text-transform: uppercase;
74
+ font-size: var(--fs-eyebrow, 0.875rem);
75
+ font-weight: var(--fw-eyebrow, 600);
76
+ letter-spacing: var(--ls-eyebrow, 0.025em);
77
+ text-transform: var(--tt-eyebrow, uppercase);
77
78
  }
78
79
  .rb-eyebrow-treatment-accent {
79
80
  color: rgb(var(--tb-accent));
@@ -947,6 +948,12 @@
947
948
  .rb-lg-hidden {
948
949
  display: none;
949
950
  }
951
+ .rb-lg-flex-row {
952
+ flex-direction: row;
953
+ }
954
+ .rb-lg-items-center {
955
+ align-items: center;
956
+ }
950
957
  }
951
958
  }
952
959
 
@@ -6508,6 +6515,11 @@
6508
6515
  background-color: var(--ec-surface);
6509
6516
  color: var(--ec-text);
6510
6517
  overflow: hidden;
6518
+ }
6519
+
6520
+ /* Opt-in raised look: a soft drop shadow so the board lifts off the page.
6521
+ * Generic default (no [data-elevated]) stays flat. */
6522
+ :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board[data-elevated] {
6511
6523
  box-shadow: 0 14px 34px -24px rgba(var(--tb-text), 0.35);
6512
6524
  }
6513
6525
 
@@ -6519,7 +6531,9 @@
6519
6531
  gap: 1rem;
6520
6532
  flex-wrap: wrap;
6521
6533
  padding: 1.1rem 1.5rem;
6522
- background-color: var(--ec-header-bg);
6534
+ /* surfaceAlt gives the header/footer a legible tint against the white day-grid
6535
+ * body — the faint `--ec-header-bg` (5% text) is invisible on light palettes. */
6536
+ background-color: rgb(var(--tb-surfaceAlt));
6523
6537
  border-bottom: 1px solid var(--ec-border-subtle);
6524
6538
  }
6525
6539
 
@@ -6632,7 +6646,10 @@
6632
6646
  flex-direction: column;
6633
6647
  gap: 0.45rem;
6634
6648
  padding: 0.8rem 0.85rem;
6635
- border: 1px solid var(--ec-border-subtle);
6649
+ /* Full hairline border at the site style's border strength (0 on borderless
6650
+ * styles), alongside the exaggerated status stripe on the left. `--ec-border-subtle`
6651
+ * (half-strength) reads as no border at all on light palettes. */
6652
+ border: var(--rb-border-width, 1px) solid rgb(var(--tb-border));
6636
6653
  border-left: 3px solid var(--ec-status-available);
6637
6654
  border-radius: calc(var(--rb-block-radius) / 1.5);
6638
6655
  background-color: var(--ec-surface);
@@ -6715,7 +6732,8 @@
6715
6732
  gap: 1rem;
6716
6733
  flex-wrap: wrap;
6717
6734
  padding: 1.1rem 1.5rem;
6718
- background-color: var(--ec-header-bg);
6735
+ /* Matches the header tint (see .event-week-board-top). */
6736
+ background-color: rgb(var(--tb-surfaceAlt));
6719
6737
  border-top: 1px solid var(--ec-border-subtle);
6720
6738
  }
6721
6739
 
@@ -6779,8 +6797,10 @@
6779
6797
  * (z-index -10) but behind the content, so no block-content wiring is needed.
6780
6798
  * Surface + hairline rules are token-referenced: on a borderless site style
6781
6799
  * (--rb-border-width: 0) the band keeps its surface tint but drops the rules.
6800
+ * Opt-in only: the band paints when the board root carries [data-banded];
6801
+ * the generic default is bandless.
6782
6802
  * ----------------------------------------------------------------------------- */
6783
- :where(.theme-scope) [data-slot="section"]:has(.event-calendar--week-board)::before {
6803
+ :where(.theme-scope) [data-slot="section"]:has(.event-calendar--week-board[data-banded])::before {
6784
6804
  content: "";
6785
6805
  position: absolute;
6786
6806
  inset: 0;
@@ -7864,7 +7884,7 @@
7864
7884
  }
7865
7885
 
7866
7886
  :where(.theme-scope) .shop__empty-text {
7867
- color: rgb(var(--tb-mutedText));
7887
+ color: var(--rb-surface-supporting-color, var(--rb-surface-text-color, rgb(var(--tb-mutedText))));
7868
7888
  font-size: var(--fs-body, 1rem);
7869
7889
  }
7870
7890
 
@@ -7890,7 +7910,7 @@
7890
7910
  :where(.theme-scope) .shop__section-heading {
7891
7911
  font-size: var(--fs-h3, 1.25rem);
7892
7912
  font-weight: 600;
7893
- color: rgb(var(--tb-text));
7913
+ color: var(--rb-surface-heading-color, var(--rb-surface-text-color, rgb(var(--tb-text))));
7894
7914
  margin-bottom: 1rem;
7895
7915
  font-family: var(--font-heading);
7896
7916
  }
@@ -7908,6 +7928,122 @@
7908
7928
  gap: 1rem;
7909
7929
  }
7910
7930
 
7931
+ /* Compact product register: useful for small, scannable pass/package sets. */
7932
+ :where(.theme-scope) .shop--register .shop__section {
7933
+ margin-bottom: 0;
7934
+ }
7935
+
7936
+ :where(.theme-scope) .shop--register .shop__section-heading {
7937
+ margin-bottom: 1rem;
7938
+ font-size: clamp(1.4rem, 2.2vw, 1.7rem);
7939
+ }
7940
+
7941
+ :where(.theme-scope) .shop--register .shop__products--register {
7942
+ display: flex;
7943
+ flex-direction: column;
7944
+ border-top: 1px solid color-mix(in oklab, currentColor, transparent 78%);
7945
+ }
7946
+
7947
+ :where(.theme-scope) .shop--register .shop__card {
7948
+ display: grid;
7949
+ grid-template-columns: minmax(8rem, 0.85fr) auto minmax(12rem, 1.5fr) auto;
7950
+ grid-template-rows: auto;
7951
+ align-items: center;
7952
+ column-gap: clamp(1rem, 3vw, 2.5rem);
7953
+ padding: 1rem 0;
7954
+ border: 0;
7955
+ border-bottom: 1px solid color-mix(in oklab, currentColor, transparent 78%);
7956
+ border-radius: 0;
7957
+ background: transparent;
7958
+ color: inherit;
7959
+ --rb-surface-text-color: inherit;
7960
+ --rb-surface-heading-color: inherit;
7961
+ --rb-surface-link-color: inherit;
7962
+ --rb-surface-supporting-color: inherit;
7963
+ }
7964
+
7965
+ :where(.theme-scope) .shop--register .shop__card-header {
7966
+ display: contents;
7967
+ }
7968
+
7969
+ :where(.theme-scope) .shop--register .shop__card-name,
7970
+ :where(.theme-scope) .shop--register .shop__card-price,
7971
+ :where(.theme-scope) .shop--register .shop__card-details,
7972
+ :where(.theme-scope) .shop--register .shop__cta {
7973
+ margin: 0;
7974
+ }
7975
+
7976
+ :where(.theme-scope) .shop--register .shop__card-name {
7977
+ grid-column: 1;
7978
+ grid-row: 1;
7979
+ font-family: var(--font-heading);
7980
+ font-size: 1.15rem;
7981
+ font-weight: 400;
7982
+ }
7983
+
7984
+ :where(.theme-scope) .shop--register .shop__card-price {
7985
+ grid-column: 2;
7986
+ grid-row: 1;
7987
+ font-size: 0.98rem;
7988
+ font-weight: 500;
7989
+ white-space: nowrap;
7990
+ color: var(--rb-surface-link-color, var(--rb-surface-text-color, inherit));
7991
+ }
7992
+
7993
+ :where(.theme-scope) .shop--register .shop__card-description {
7994
+ grid-column: 1 / -1;
7995
+ margin-top: 0.35rem;
7996
+ }
7997
+
7998
+ :where(.theme-scope) .shop--register .shop__card-details {
7999
+ grid-column: 3;
8000
+ grid-row: 1;
8001
+ display: flex;
8002
+ flex-wrap: wrap;
8003
+ gap: 0.35rem 1rem;
8004
+ color: var(--rb-surface-supporting-color, rgb(var(--tb-mutedText)));
8005
+ font-size: 0.86rem;
8006
+ }
8007
+
8008
+ :where(.theme-scope) .shop--register .shop__cta {
8009
+ grid-column: 4;
8010
+ grid-row: 1;
8011
+ align-self: center;
8012
+ margin-left: auto;
8013
+ }
8014
+
8015
+ :where(.theme-scope) .shop--register .shop__card > [role='status'] {
8016
+ grid-column: 1 / -1;
8017
+ }
8018
+
8019
+ @media (max-width: 767px) {
8020
+ :where(.theme-scope) .shop--register .shop__card {
8021
+ grid-template-columns: minmax(0, 1fr) auto;
8022
+ row-gap: 0.45rem;
8023
+ }
8024
+
8025
+ :where(.theme-scope) .shop--register .shop__card-name {
8026
+ grid-column: 1;
8027
+ }
8028
+
8029
+ :where(.theme-scope) .shop--register .shop__card-price {
8030
+ grid-column: 2;
8031
+ grid-row: 1;
8032
+ }
8033
+
8034
+ :where(.theme-scope) .shop--register .shop__card-details {
8035
+ grid-column: 1 / -1;
8036
+ grid-row: 2;
8037
+ }
8038
+
8039
+ :where(.theme-scope) .shop--register .shop__cta {
8040
+ grid-column: 1 / -1;
8041
+ grid-row: 3;
8042
+ justify-self: start;
8043
+ margin-left: 0;
8044
+ }
8045
+ }
8046
+
7911
8047
  /* Product card */
7912
8048
  :where(.theme-scope) .shop__card {
7913
8049
  background: rgb(var(--tb-surface));
@@ -7936,7 +8072,7 @@
7936
8072
  :where(.theme-scope) .shop__card-name {
7937
8073
  font-size: 1.125rem;
7938
8074
  font-weight: 600;
7939
- color: rgb(var(--tb-text));
8075
+ color: var(--rb-surface-heading-color, rgb(var(--tb-text)));
7940
8076
  margin: 0;
7941
8077
  font-family: var(--font-heading);
7942
8078
  }
@@ -7944,19 +8080,19 @@
7944
8080
  :where(.theme-scope) .shop__card-price {
7945
8081
  font-size: 1.125rem;
7946
8082
  font-weight: 700;
7947
- color: rgb(var(--tb-primary));
8083
+ color: var(--rb-surface-link-color, rgb(var(--tb-primary)));
7948
8084
  white-space: nowrap;
7949
8085
  }
7950
8086
 
7951
8087
  :where(.theme-scope) .shop__card-interval {
7952
8088
  font-size: 0.875rem;
7953
8089
  font-weight: 400;
7954
- color: rgb(var(--tb-mutedText));
8090
+ color: var(--rb-surface-supporting-color, rgb(var(--tb-mutedText)));
7955
8091
  }
7956
8092
 
7957
8093
  :where(.theme-scope) .shop__card-description {
7958
8094
  font-size: 0.875rem;
7959
- color: rgb(var(--tb-mutedText));
8095
+ color: var(--rb-surface-supporting-color, rgb(var(--tb-mutedText)));
7960
8096
  line-height: 1.5;
7961
8097
  margin: 0;
7962
8098
  }
@@ -7966,7 +8102,7 @@
7966
8102
  flex-wrap: wrap;
7967
8103
  gap: 0.5rem 1rem;
7968
8104
  font-size: 0.875rem;
7969
- color: rgb(var(--tb-text));
8105
+ color: var(--rb-surface-text-color, rgb(var(--tb-text)));
7970
8106
  }
7971
8107
 
7972
8108
  :where(.theme-scope) .shop__card-credits {
@@ -7974,16 +8110,16 @@
7974
8110
  }
7975
8111
 
7976
8112
  :where(.theme-scope) .shop__card-per-credit {
7977
- color: rgb(var(--tb-mutedText));
8113
+ color: var(--rb-surface-supporting-color, rgb(var(--tb-mutedText)));
7978
8114
  }
7979
8115
 
7980
8116
  :where(.theme-scope) .shop__card-validity {
7981
- color: rgb(var(--tb-mutedText));
8117
+ color: var(--rb-surface-supporting-color, rgb(var(--tb-mutedText)));
7982
8118
  }
7983
8119
 
7984
8120
  :where(.theme-scope) .shop__card-unlimited {
7985
8121
  font-weight: 500;
7986
- color: rgb(var(--tb-secondary, var(--tb-primary)));
8122
+ color: var(--rb-surface-link-color, rgb(var(--tb-secondary, var(--tb-primary))));
7987
8123
  }
7988
8124
 
7989
8125
  /* CTA layout: use theme button classes for visuals */
@@ -9038,6 +9174,16 @@
9038
9174
  * tokens only. Node structure is built in testimonialsCarousel.ts.
9039
9175
  * ============================================================================= */
9040
9176
 
9177
+ /* Establish an inline-size query container so the head and grid below respond
9178
+ * to the block's own width, not the browser viewport. A viewport @media query
9179
+ * collapses to 1-col in the dashboard's scaled preview canvas (which reads the
9180
+ * dashboard window, not the canvas) and when the block sits in a narrow column;
9181
+ * @container tracks the actual laid-out width — matching the split-grid variant. */
9182
+ :where(.theme-scope) :where([data-block="testimonials"]) .rb-testimonials-fe {
9183
+ container-type: inline-size;
9184
+ container-name: rb-testimonials-fe;
9185
+ }
9186
+
9041
9187
  /* Section head: heading left, lead-in line to the right; stacks on mobile. */
9042
9188
  :where(.theme-scope) :where([data-block="testimonials"]) .rb-testimonials-fe-head {
9043
9189
  display: flex;
@@ -9050,7 +9196,7 @@
9050
9196
  max-width: 30rem;
9051
9197
  }
9052
9198
 
9053
- @media (min-width: 768px) {
9199
+ @container rb-testimonials-fe (min-width: 768px) {
9054
9200
  :where(.theme-scope) :where([data-block="testimonials"]) .rb-testimonials-fe-head {
9055
9201
  flex-direction: row;
9056
9202
  align-items: flex-end;
@@ -9068,7 +9214,7 @@
9068
9214
  align-items: stretch;
9069
9215
  }
9070
9216
 
9071
- @media (min-width: 1024px) {
9217
+ @container rb-testimonials-fe (min-width: 1024px) {
9072
9218
  :where(.theme-scope) :where([data-block="testimonials"]) .rb-testimonials-fe-grid {
9073
9219
  grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
9074
9220
  }
@@ -10392,6 +10538,50 @@
10392
10538
  }
10393
10539
  }
10394
10540
 
10541
+ /* =============================================================================
10542
+ * Editorial Split Variant
10543
+ * =============================================================================
10544
+ */
10545
+
10546
+ :where(.theme-scope) .newsletter-editorial-split {
10547
+ display: grid;
10548
+ grid-template-columns: minmax(0, 0.9fr) minmax(20rem, 1.1fr);
10549
+ gap: clamp(2.5rem, 7vw, 7rem);
10550
+ align-items: center;
10551
+ text-align: left;
10552
+ }
10553
+
10554
+ :where(.theme-scope) .newsletter-editorial-split-copy {
10555
+ display: flex;
10556
+ flex-direction: column;
10557
+ gap: var(--rb-gap-sm, 0.75rem);
10558
+ }
10559
+
10560
+ :where(.theme-scope) .newsletter-editorial-split-form {
10561
+ min-width: 0;
10562
+ }
10563
+
10564
+ :where(.theme-scope) .newsletter-editorial-split .newsletter-form {
10565
+ max-width: none;
10566
+ margin-inline: 0;
10567
+ }
10568
+
10569
+ :where(.theme-scope) .newsletter-editorial-split .newsletter-copy-title {
10570
+ font-size: clamp(2rem, 4vw, 3.5rem);
10571
+ font-weight: 500;
10572
+ }
10573
+
10574
+ :where(.theme-scope) .newsletter-editorial-split .newsletter-privacy-note {
10575
+ text-align: left;
10576
+ }
10577
+
10578
+ @media (max-width: 767px) {
10579
+ :where(.theme-scope) .newsletter-editorial-split {
10580
+ grid-template-columns: minmax(0, 1fr);
10581
+ gap: 2rem;
10582
+ }
10583
+ }
10584
+
10395
10585
  /* =============================================================================
10396
10586
  * Success State
10397
10587
  * =============================================================================
@@ -11411,13 +11601,13 @@
11411
11601
  * bleeds to the card edges and the inner content stack drops its fallback
11412
11602
  * padding so insets don't double up.
11413
11603
  */
11414
- :where(.theme-scope) .rb-feature-card[class*="rb-container-pad-"]:not(.rb-container-pad-none) > .rb-feature-card-media {
11604
+ :where(.theme-scope) .rb-feature-card[class*="rb-container-pad-"]:not(.rb-container-pad-none) > .rb-feature-card-media-frame {
11415
11605
  width: calc(100% + 2 * var(--rb-card-pad, 0rem));
11416
11606
  max-width: none;
11417
11607
  margin: calc(-1 * var(--rb-card-pad, 0rem)) calc(-1 * var(--rb-card-pad, 0rem)) 0;
11418
11608
  }
11419
11609
 
11420
- :where(.theme-scope) .rb-feature-card[class*="rb-container-pad-"]:not(.rb-container-pad-none) > .rb-feature-card-media + .rb-feature-card-content {
11610
+ :where(.theme-scope) .rb-feature-card[class*="rb-container-pad-"]:not(.rb-container-pad-none) > .rb-feature-card-media-frame + .rb-feature-card-content {
11421
11611
  margin-top: 1.4rem;
11422
11612
  }
11423
11613
 
@@ -11468,11 +11658,118 @@
11468
11658
  background: rgb(var(--tb-primary, 0 0 0));
11469
11659
  }
11470
11660
 
11471
- :where(.theme-scope) .rb-card-treatment-editorial-rule > .rb-feature-card-media {
11661
+ :where(.theme-scope) .rb-card-treatment-editorial-rule > .rb-feature-card-media-frame {
11472
11662
  margin-top: 1.6rem;
11473
11663
  border-radius: calc(var(--rb-block-radius, 0.75rem) * 0.5);
11474
11664
  }
11475
11665
 
11666
+ :where(.theme-scope) .rb-feature-card > .rb-bg-surface,
11667
+ :where(.theme-scope) .rb-feature-card > .rb-feature-card-media-frame {
11668
+ border-start-start-radius: inherit;
11669
+ border-start-end-radius: inherit;
11670
+ }
11671
+
11672
+ /* --- Editorial diptych + pathways ----------------------------------------- */
11673
+
11674
+ :where(.theme-scope) .rb-feature-cards-heading--editorial {
11675
+ margin-inline: 0;
11676
+ text-align: left;
11677
+ }
11678
+
11679
+ :where(.theme-scope) .rb-feature-cards-eyebrow {
11680
+ margin: 0;
11681
+ color: rgb(var(--tb-accent));
11682
+ font-size: 0.72rem;
11683
+ font-weight: 600;
11684
+ letter-spacing: 0.14em;
11685
+ text-transform: uppercase;
11686
+ }
11687
+
11688
+ :where(.theme-scope) .rb-feature-cards-grid--editorial-diptych {
11689
+ grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
11690
+ align-items: stretch;
11691
+ }
11692
+
11693
+ :where(.theme-scope) .rb-feature-cards-grid--editorial-pathways {
11694
+ grid-template-columns: repeat(2, minmax(0, 1fr));
11695
+ align-items: start;
11696
+ }
11697
+
11698
+ :where(.theme-scope) .rb-feature-cards-grid:is(
11699
+ .rb-feature-cards-grid--editorial-diptych,
11700
+ .rb-feature-cards-grid--editorial-pathways
11701
+ ) .rb-feature-card {
11702
+ border: 0;
11703
+ box-shadow: none;
11704
+ height: auto;
11705
+ min-width: 0;
11706
+ }
11707
+
11708
+ :where(.theme-scope) .rb-feature-cards-grid:is(
11709
+ .rb-feature-cards-grid--editorial-diptych,
11710
+ .rb-feature-cards-grid--editorial-pathways
11711
+ ) .rb-feature-card[data-surface-role="open"] > .rb-bg-surface {
11712
+ background: transparent;
11713
+ }
11714
+
11715
+ :where(.theme-scope) .rb-feature-cards-grid:is(
11716
+ .rb-feature-cards-grid--editorial-diptych,
11717
+ .rb-feature-cards-grid--editorial-pathways
11718
+ ) .rb-feature-card[data-surface-role="open"] > .rb-feature-card-content {
11719
+ padding-inline: 0;
11720
+ }
11721
+
11722
+ :where(.theme-scope) .rb-feature-cards-grid--editorial-pathways .rb-feature-card > .rb-bg-surface {
11723
+ background: transparent;
11724
+ }
11725
+
11726
+ :where(.theme-scope) .rb-feature-cards-grid--editorial-pathways .rb-feature-card > .rb-feature-card-content {
11727
+ padding-inline: 0;
11728
+ }
11729
+
11730
+ :where(.theme-scope) .rb-feature-cards-grid--editorial-diptych .rb-feature-card[data-surface-role="panel"] {
11731
+ color: rgb(var(--tb-onPrimary));
11732
+ --rb-surface-text-color: rgb(var(--tb-onPrimary));
11733
+ --rb-surface-heading-color: rgb(var(--tb-onPrimary));
11734
+ --rb-surface-link-color: rgb(var(--tb-onPrimary));
11735
+ --rb-surface-supporting-color: color-mix(in oklab, rgb(var(--tb-onPrimary)), transparent 18%);
11736
+ }
11737
+
11738
+ :where(.theme-scope) .rb-feature-cards-grid--editorial-diptych .rb-feature-card[data-surface-role="panel"] > .rb-bg-surface {
11739
+ background: rgb(var(--tb-primary));
11740
+ border-radius: inherit;
11741
+ }
11742
+
11743
+ :where(.theme-scope) .rb-feature-cards-grid--editorial-diptych .rb-feature-card[data-surface-role="panel"] > .rb-feature-card-media-frame {
11744
+ width: calc(100% - 2.5rem);
11745
+ margin: 1.25rem 1.25rem 0;
11746
+ border-radius: calc(var(--rb-block-radius, 0.75rem) * 0.55);
11747
+ }
11748
+
11749
+ :where(.theme-scope) .rb-feature-cards-grid--editorial-pathways .rb-feature-card-content {
11750
+ padding-top: 1.35rem;
11751
+ }
11752
+
11753
+ @media (min-width: 768px) {
11754
+ :where(.theme-scope) .rb-feature-cards-grid--editorial-diptych .rb-feature-card[data-surface-role="panel"] {
11755
+ margin-top: clamp(2rem, 5vw, 4.5rem);
11756
+ }
11757
+
11758
+ :where(.theme-scope) .rb-feature-cards-grid--editorial-pathways .rb-feature-card + .rb-feature-card {
11759
+ border-left: 1px solid color-mix(in oklab, currentColor, transparent 82%);
11760
+ padding-left: clamp(1.5rem, 4vw, 4rem);
11761
+ }
11762
+ }
11763
+
11764
+ @media (max-width: 767px) {
11765
+ :where(.theme-scope) .rb-feature-cards-grid:is(
11766
+ .rb-feature-cards-grid--editorial-diptych,
11767
+ .rb-feature-cards-grid--editorial-pathways
11768
+ ) {
11769
+ grid-template-columns: minmax(0, 1fr);
11770
+ }
11771
+ }
11772
+
11476
11773
  :where(.theme-scope) .rb-card-treatment-editorial-rule > .rb-feature-card-content {
11477
11774
  padding: 1.6rem 0 0.25rem;
11478
11775
  }
@@ -11560,12 +11857,12 @@
11560
11857
  }
11561
11858
 
11562
11859
 
11563
- :where(.theme-scope) [data-block="intro"][data-block-look="intro-portrait-bio"][data-block-variant="media-copy"] .rb-intro-media-wrap {
11860
+ :where(.theme-scope) [data-block="intro"][data-block-composition="portrait-bio"][data-block-variant="media-copy"] .rb-intro-media-wrap {
11564
11861
  max-width: min(100%, 24rem);
11565
11862
  margin-inline: auto;
11566
11863
  }
11567
11864
 
11568
- :where(.theme-scope) [data-block="intro"][data-block-look="intro-portrait-bio"][data-block-variant="media-copy"] .rb-intro-media {
11865
+ :where(.theme-scope) [data-block="intro"][data-block-composition="portrait-bio"][data-block-variant="media-copy"] .rb-intro-media {
11569
11866
  aspect-ratio: 1 / 1 !important;
11570
11867
  border-radius: 9999px;
11571
11868
  }
@@ -11582,18 +11879,913 @@
11582
11879
  }
11583
11880
  }
11584
11881
 
11585
- :where(.theme-scope) [data-block="intro"][data-block-look="intro-editorial-statement"] .rb-intro-title {
11882
+ :where(.theme-scope) [data-block="intro"][data-block-composition="editorial-statement"] .rb-intro-title {
11586
11883
  font-size: clamp(2rem, 1.56rem + 1.4vw, 3rem);
11587
11884
  line-height: 1.14;
11588
11885
  }
11589
11886
 
11590
- :where(.theme-scope) [data-block="intro"][data-block-look="intro-editorial-statement"] .rb-intro-copy {
11887
+ :where(.theme-scope) [data-block="intro"][data-block-composition="editorial-statement"] .rb-intro-copy {
11591
11888
  gap: var(--rb-space-5, 1.25rem);
11592
11889
  }
11593
11890
 
11594
- :where(.theme-scope) [data-block="intro"][data-block-look="intro-editorial-statement"] .rb-intro-copy .rb-prose {
11891
+ :where(.theme-scope) [data-block="intro"][data-block-composition="editorial-statement"] .rb-intro-copy .rb-prose {
11595
11892
  font-size: clamp(1.125rem, 1.02rem + 0.35vw, 1.375rem);
11596
11893
  line-height: 1.65;
11597
11894
  }
11598
11895
 
11599
11896
 
11897
+ :where(.theme-scope) :where([data-block="recurring-schedule"]) .recurring-schedule-section {
11898
+ width: min(100%, 66rem);
11899
+ margin-inline: auto;
11900
+ }
11901
+
11902
+ :where(.theme-scope) :where([data-block="recurring-schedule"]) .recurring-schedule-heading {
11903
+ max-width: 44rem;
11904
+ }
11905
+
11906
+ :where(.theme-scope) :where([data-block="recurring-schedule"]) .recurring-schedule-header {
11907
+ display: flex;
11908
+ gap: 2rem;
11909
+ align-items: end;
11910
+ justify-content: space-between;
11911
+ }
11912
+
11913
+ :where(.theme-scope) :where([data-block="recurring-schedule"]) .recurring-schedule-eyebrow {
11914
+ margin: 0;
11915
+ color: rgb(var(--tb-accent));
11916
+ font-size: 0.72rem;
11917
+ font-weight: 600;
11918
+ letter-spacing: 0.14em;
11919
+ text-transform: uppercase;
11920
+ }
11921
+
11922
+ :where(.theme-scope) :where([data-block="recurring-schedule"]) .recurring-schedule-heading-title {
11923
+ margin: 0;
11924
+ font-size: clamp(2rem, 4.6vw, 3.3rem);
11925
+ line-height: 1.08;
11926
+ }
11927
+
11928
+ :where(.theme-scope) .recurring-schedule {
11929
+ border-top: 1px solid color-mix(in oklab, currentColor, transparent 78%);
11930
+ }
11931
+
11932
+ :where(.theme-scope) .recurring-schedule-row {
11933
+ display: grid;
11934
+ grid-template-columns: minmax(9rem, 0.82fr) minmax(16rem, 1.5fr) auto;
11935
+ grid-template-rows: auto auto;
11936
+ column-gap: clamp(1.5rem, 4vw, 2.75rem);
11937
+ row-gap: 0.15rem;
11938
+ align-items: center;
11939
+ padding: 1.4rem 0.75rem;
11940
+ border-bottom: 1px solid color-mix(in oklab, currentColor, transparent 78%);
11941
+ color: inherit;
11942
+ }
11943
+
11944
+ :where(.theme-scope) .recurring-schedule-day,
11945
+ :where(.theme-scope) .recurring-schedule-time,
11946
+ :where(.theme-scope) .recurring-schedule-title,
11947
+ :where(.theme-scope) .recurring-schedule-venue {
11948
+ margin: 0;
11949
+ }
11950
+
11951
+ :where(.theme-scope) .recurring-schedule-day {
11952
+ grid-column: 1;
11953
+ grid-row: 1;
11954
+ font-family: var(--font-heading);
11955
+ font-size: clamp(1.25rem, 2vw, 1.5rem);
11956
+ line-height: 1;
11957
+ }
11958
+
11959
+ :where(.theme-scope) .recurring-schedule-time {
11960
+ grid-column: 1;
11961
+ grid-row: 2;
11962
+ display: flex;
11963
+ gap: 0.35rem;
11964
+ color: var(--rb-surface-supporting-color, rgb(var(--tb-mutedText)));
11965
+ font-size: 0.86rem;
11966
+ font-variant-numeric: tabular-nums;
11967
+ }
11968
+
11969
+ :where(.theme-scope) .recurring-schedule-details {
11970
+ grid-column: 2;
11971
+ grid-row: 1 / span 2;
11972
+ align-self: center;
11973
+ }
11974
+
11975
+ :where(.theme-scope) .recurring-schedule-title {
11976
+ font-size: 1.06rem;
11977
+ font-weight: 500;
11978
+ }
11979
+
11980
+ :where(.theme-scope) .recurring-schedule-venue {
11981
+ margin-top: 0.2rem;
11982
+ color: var(--rb-surface-supporting-color, rgb(var(--tb-mutedText)));
11983
+ font-size: 0.92rem;
11984
+ }
11985
+
11986
+ :where(.theme-scope) .recurring-schedule-action {
11987
+ grid-column: 3;
11988
+ grid-row: 1 / span 2;
11989
+ min-width: 4.5rem;
11990
+ text-align: right;
11991
+ }
11992
+
11993
+ :where(.theme-scope) .recurring-schedule-see-all {
11994
+ width: fit-content;
11995
+ color: inherit;
11996
+ text-underline-offset: 0.3em;
11997
+ }
11998
+
11999
+ :where(.theme-scope) .recurring-schedule-empty {
12000
+ margin: 0;
12001
+ color: var(--rb-surface-supporting-color, rgb(var(--tb-mutedText)));
12002
+ }
12003
+
12004
+ @media (max-width: 767px) {
12005
+ :where(.theme-scope) :where([data-block="recurring-schedule"]) .recurring-schedule-header {
12006
+ align-items: start;
12007
+ flex-direction: column;
12008
+ gap: 1rem;
12009
+ }
12010
+
12011
+ :where(.theme-scope) .recurring-schedule-row {
12012
+ grid-template-columns: 1fr auto;
12013
+ grid-template-rows: auto auto auto;
12014
+ gap: 0.5rem 1rem;
12015
+ align-items: start;
12016
+ }
12017
+
12018
+ :where(.theme-scope) .recurring-schedule-day {
12019
+ grid-column: 1;
12020
+ }
12021
+
12022
+ :where(.theme-scope) .recurring-schedule-time {
12023
+ grid-column: 1;
12024
+ }
12025
+
12026
+ :where(.theme-scope) .recurring-schedule-details {
12027
+ grid-column: 1 / -1;
12028
+ grid-row: 3;
12029
+ margin-top: 0.35rem;
12030
+ }
12031
+
12032
+ :where(.theme-scope) .recurring-schedule-action {
12033
+ grid-column: 2;
12034
+ grid-row: 1 / span 2;
12035
+ }
12036
+ }
12037
+
12038
+
12039
+ /* =============================================================================
12040
+ * Event list treatments: registers and dense indexes
12041
+ *
12042
+ * These treatments retain the event list's content and structural layout.
12043
+ * Their contrast relationships come exclusively from the active semantic
12044
+ * section surface and named palette tokens.
12045
+ * ============================================================================= */
12046
+
12047
+ :where(.theme-scope)
12048
+ :where(
12049
+ .rb-event-list-treatment-ruled-register,
12050
+ .rb-event-list-treatment-editorial-register,
12051
+ .rb-event-list-treatment-dense-index
12052
+ )
12053
+ .event-card.event-card {
12054
+ position: relative;
12055
+ overflow: visible;
12056
+ border: 0;
12057
+ border-radius: 0;
12058
+ background: transparent;
12059
+ box-shadow: none;
12060
+ color: inherit;
12061
+ }
12062
+
12063
+ /* Register treatments intentionally prioritise schedule data over imagery. */
12064
+ :where(.theme-scope)
12065
+ :where(
12066
+ .rb-event-list-treatment-ruled-register,
12067
+ .rb-event-list-treatment-editorial-register,
12068
+ .rb-event-list-treatment-dense-index
12069
+ )
12070
+ .event-card.event-card
12071
+ .event-card-media {
12072
+ display: none;
12073
+ }
12074
+
12075
+ :where(.theme-scope)
12076
+ :where(
12077
+ .rb-event-list-treatment-ruled-register,
12078
+ .rb-event-list-treatment-editorial-register,
12079
+ .rb-event-list-treatment-dense-index
12080
+ )
12081
+ .event-card.event-card
12082
+ .card-content {
12083
+ min-width: 0;
12084
+ padding: 1.5rem 0.625rem;
12085
+ }
12086
+
12087
+ :where(.theme-scope)
12088
+ :where(
12089
+ .rb-event-list-treatment-ruled-register,
12090
+ .rb-event-list-treatment-editorial-register,
12091
+ .rb-event-list-treatment-dense-index
12092
+ )
12093
+ .event-card.event-card
12094
+ .card-title {
12095
+ min-width: 0;
12096
+ margin-bottom: 0.25rem;
12097
+ }
12098
+
12099
+ :where(.theme-scope)
12100
+ :where(
12101
+ .rb-event-list-treatment-ruled-register,
12102
+ .rb-event-list-treatment-editorial-register,
12103
+ .rb-event-list-treatment-dense-index
12104
+ )
12105
+ .event-card.event-card
12106
+ .event-card-footer {
12107
+ min-width: 8rem;
12108
+ padding-top: 0;
12109
+ }
12110
+
12111
+ :where(.theme-scope)
12112
+ :where(
12113
+ .rb-event-list-treatment-ruled-register,
12114
+ .rb-event-list-treatment-editorial-register,
12115
+ .rb-event-list-treatment-dense-index
12116
+ )
12117
+ .event-card.event-card
12118
+ .event-card-cta {
12119
+ width: 100%;
12120
+ }
12121
+
12122
+ /* Ruled register: open rows with quiet rules on the current section surface. */
12123
+ :where(.theme-scope)
12124
+ .rb-event-list-treatment-ruled-register
12125
+ .event-card.event-card {
12126
+ border-top: 1px solid color-mix(in oklab, currentColor, transparent 78%);
12127
+ }
12128
+
12129
+ :where(.theme-scope)
12130
+ .rb-event-list-treatment-ruled-register
12131
+ .event-card.event-card:last-child {
12132
+ border-bottom: 1px solid color-mix(in oklab, currentColor, transparent 78%);
12133
+ }
12134
+
12135
+ /* Editorial register: generous rows, an accent marker and display-led titles. */
12136
+ :where(.theme-scope)
12137
+ .rb-event-list-treatment-editorial-register
12138
+ .event-card.event-card {
12139
+ border-top: 1px solid color-mix(in oklab, rgb(var(--tb-border)), transparent 20%);
12140
+ }
12141
+
12142
+ :where(.theme-scope)
12143
+ .rb-event-list-treatment-editorial-register
12144
+ .event-card.event-card:last-child {
12145
+ border-bottom: 1px solid color-mix(in oklab, rgb(var(--tb-border)), transparent 20%);
12146
+ }
12147
+
12148
+ :where(.theme-scope)
12149
+ .rb-event-list-treatment-editorial-register
12150
+ .event-card.event-card::before {
12151
+ content: "";
12152
+ position: absolute;
12153
+ inset-block: 1.75rem;
12154
+ inset-inline-start: 0;
12155
+ width: 0.25rem;
12156
+ border-radius: var(--rb-block-radius, 0.75rem);
12157
+ background: rgb(var(--tb-accent));
12158
+ }
12159
+
12160
+ :where(.theme-scope)
12161
+ .rb-event-list-treatment-editorial-register
12162
+ .event-card.event-card
12163
+ .card-content {
12164
+ padding-block: 1.875rem;
12165
+ padding-inline-start: clamp(1.25rem, 2.5vw, 2rem);
12166
+ }
12167
+
12168
+ :where(.theme-scope)
12169
+ .rb-event-list-treatment-editorial-register
12170
+ .event-card.event-card
12171
+ .card-title {
12172
+ font-family: var(--font-heading, var(--font-body, inherit));
12173
+ font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem);
12174
+ font-weight: 500;
12175
+ line-height: 1.15;
12176
+ }
12177
+
12178
+ /* Dense index: stronger outside rule and reduced row rhythm, without opting
12179
+ * the block into its structurally different compact-list facet. */
12180
+ :where(.theme-scope)
12181
+ .rb-event-list-treatment-dense-index
12182
+ .event-card.event-card {
12183
+ border-bottom: 1px solid color-mix(in oklab, currentColor, transparent 62%);
12184
+ }
12185
+
12186
+ :where(.theme-scope)
12187
+ .rb-event-list-treatment-dense-index
12188
+ .event-card.event-card:first-child {
12189
+ border-top: 2px solid currentColor;
12190
+ }
12191
+
12192
+ :where(.theme-scope)
12193
+ .rb-event-list-treatment-dense-index
12194
+ .event-card.event-card
12195
+ .card-content {
12196
+ padding-block: 1.125rem;
12197
+ }
12198
+
12199
+ :where(.theme-scope)
12200
+ .rb-event-list-treatment-dense-index
12201
+ .event-card.event-card
12202
+ .card-title {
12203
+ font-size: 1rem;
12204
+ line-height: 1.35;
12205
+ }
12206
+
12207
+ @media (min-width: 768px) {
12208
+ :where(.theme-scope)
12209
+ :where(
12210
+ .rb-event-list-treatment-ruled-register,
12211
+ .rb-event-list-treatment-editorial-register,
12212
+ .rb-event-list-treatment-dense-index
12213
+ )
12214
+ .event-card.event-card.event-card--horizontal {
12215
+ display: block;
12216
+ }
12217
+
12218
+ :where(.theme-scope)
12219
+ :where(
12220
+ .rb-event-list-treatment-ruled-register,
12221
+ .rb-event-list-treatment-editorial-register,
12222
+ .rb-event-list-treatment-dense-index
12223
+ )
12224
+ .event-card.event-card.event-card--horizontal
12225
+ .card-content {
12226
+ display: grid;
12227
+ grid-template-columns: minmax(8.5rem, 0.7fr) minmax(15rem, 1.55fr) auto;
12228
+ grid-template-rows: auto auto auto;
12229
+ align-items: center;
12230
+ column-gap: clamp(1.25rem, 3vw, 2.625rem);
12231
+ }
12232
+
12233
+ :where(.theme-scope)
12234
+ :where(
12235
+ .rb-event-list-treatment-ruled-register,
12236
+ .rb-event-list-treatment-editorial-register,
12237
+ .rb-event-list-treatment-dense-index
12238
+ )
12239
+ .event-card.event-card.event-card--horizontal
12240
+ .card-title {
12241
+ grid-column: 2;
12242
+ }
12243
+
12244
+ :where(.theme-scope)
12245
+ :where(
12246
+ .rb-event-list-treatment-ruled-register,
12247
+ .rb-event-list-treatment-editorial-register,
12248
+ .rb-event-list-treatment-dense-index
12249
+ )
12250
+ .event-card.event-card.event-card--horizontal
12251
+ .card-content > div.rb-caption {
12252
+ grid-column: 1;
12253
+ grid-row: 1 / span 6;
12254
+ margin-bottom: 0;
12255
+ }
12256
+
12257
+ :where(.theme-scope)
12258
+ :where(
12259
+ .rb-event-list-treatment-ruled-register,
12260
+ .rb-event-list-treatment-editorial-register,
12261
+ .rb-event-list-treatment-dense-index
12262
+ )
12263
+ .event-card.event-card.event-card--horizontal
12264
+ .card-content > div.rb-mb-3 {
12265
+ grid-column: 2;
12266
+ margin-bottom: 0;
12267
+ }
12268
+
12269
+ :where(.theme-scope)
12270
+ :where(
12271
+ .rb-event-list-treatment-ruled-register,
12272
+ .rb-event-list-treatment-editorial-register,
12273
+ .rb-event-list-treatment-dense-index
12274
+ )
12275
+ .event-card.event-card.event-card--horizontal
12276
+ .card-content > .event-category-badge {
12277
+ grid-column: 2;
12278
+ }
12279
+
12280
+ :where(.theme-scope)
12281
+ :where(
12282
+ .rb-event-list-treatment-ruled-register,
12283
+ .rb-event-list-treatment-editorial-register,
12284
+ .rb-event-list-treatment-dense-index
12285
+ )
12286
+ .event-card.event-card.event-card--horizontal
12287
+ .card-content > .card-body,
12288
+ :where(.theme-scope)
12289
+ :where(
12290
+ .rb-event-list-treatment-ruled-register,
12291
+ .rb-event-list-treatment-editorial-register,
12292
+ .rb-event-list-treatment-dense-index
12293
+ )
12294
+ .event-card.event-card.event-card--horizontal
12295
+ .card-content > .status-muted:not(.event-card-capacity) {
12296
+ grid-column: 2;
12297
+ }
12298
+
12299
+ :where(.theme-scope)
12300
+ :where(
12301
+ .rb-event-list-treatment-ruled-register,
12302
+ .rb-event-list-treatment-editorial-register,
12303
+ .rb-event-list-treatment-dense-index
12304
+ )
12305
+ .event-card.event-card.event-card--horizontal
12306
+ .event-card-footer {
12307
+ grid-column: 3;
12308
+ grid-row: 1 / span 6;
12309
+ flex-direction: column;
12310
+ justify-content: center;
12311
+ align-items: stretch;
12312
+ }
12313
+ }
12314
+
12315
+
12316
+ /* =============================================================================
12317
+ * Feature-card composition Looks promoted from block-treatment studies.
12318
+ * Palette relationships use named semantic tokens; copy and media stay in the
12319
+ * existing feature-card content contract.
12320
+ * ============================================================================= */
12321
+
12322
+ /* Asymmetric emphasis: repeat a 5/7 pair rhythm and give each even card a
12323
+ * semantic secondary surface. This remains useful with more than two cards. */
12324
+ :where(.theme-scope)
12325
+ [data-block="feature-cards"][data-block-composition="asymmetric-emphasis"]
12326
+ .rb-feature-cards-grid {
12327
+ align-items: start;
12328
+ }
12329
+ :where(.theme-scope)
12330
+ [data-block="feature-cards"][data-block-composition="asymmetric-emphasis"]
12331
+ .rb-feature-card {
12332
+ height: auto;
12333
+ overflow: visible;
12334
+ border: 0;
12335
+ border-radius: 0;
12336
+ background: transparent;
12337
+ }
12338
+
12339
+ :where(.theme-scope)
12340
+ [data-block="feature-cards"][data-block-composition="asymmetric-emphasis"]
12341
+ .rb-feature-card > .rb-feature-card-content {
12342
+ padding-inline: 0;
12343
+ }
12344
+
12345
+ :where(.theme-scope)
12346
+ [data-block="feature-cards"][data-block-composition="asymmetric-emphasis"]
12347
+ .rb-feature-card:nth-child(even) {
12348
+ padding: clamp(1.125rem, 2.5vw, 1.875rem);
12349
+ border-radius: calc(var(--rb-block-radius, 0.75rem) * 1.5);
12350
+ background: rgb(var(--tb-secondary));
12351
+ color: rgb(var(--tb-onSecondary));
12352
+ --rb-surface-text-color: rgb(var(--tb-onSecondary));
12353
+ --rb-surface-heading-color: rgb(var(--tb-onSecondary));
12354
+ --rb-surface-link-color: rgb(var(--tb-onSecondary));
12355
+ --rb-surface-supporting-color: rgb(var(--tb-onSecondary));
12356
+ }
12357
+
12358
+ :where(.theme-scope)
12359
+ [data-block="feature-cards"][data-block-composition="asymmetric-emphasis"]
12360
+ .rb-feature-card:nth-child(even) > .rb-feature-card-media {
12361
+ border-radius: var(--rb-block-radius, 0.75rem);
12362
+ }
12363
+
12364
+ /* Framed programme: a close-set family of inset cards on a semantic depth
12365
+ * section. The itemSurface recipe supplies each complete surface provider. */
12366
+ :where(.theme-scope)
12367
+ [data-block="feature-cards"][data-block-composition="framed-programme"]
12368
+ .rb-feature-cards-grid {
12369
+ gap: clamp(1rem, 2vw, 1.5rem);
12370
+ }
12371
+
12372
+ :where(.theme-scope)
12373
+ [data-block="feature-cards"][data-block-composition="framed-programme"]
12374
+ .rb-feature-card > .rb-feature-card-media {
12375
+ width: 100%;
12376
+ max-width: 100%;
12377
+ margin: 0;
12378
+ border-radius: var(--rb-block-radius, 0.75rem);
12379
+ }
12380
+
12381
+ :where(.theme-scope)
12382
+ [data-block="feature-cards"][data-block-composition="framed-programme"]
12383
+ .rb-feature-card > .rb-feature-card-content {
12384
+ padding-inline: 0;
12385
+ padding-bottom: 0;
12386
+ }
12387
+
12388
+ @media (min-width: 768px) {
12389
+ :where(.theme-scope)
12390
+ [data-block="feature-cards"][data-block-composition="asymmetric-emphasis"]
12391
+ .rb-feature-cards-grid.rb-grid-cols-2 {
12392
+ grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
12393
+ }
12394
+ }
12395
+
12396
+
12397
+ /* =============================================================================
12398
+ * Offerings Preview composition Looks promoted from the Fran André treatment
12399
+ * study. The outer section surface remains independently configurable. These
12400
+ * rules use expanded semantic palette tokens only.
12401
+ * ============================================================================= */
12402
+
12403
+ :where(.theme-scope)
12404
+ [data-block="offerings-preview"]
12405
+ [data-offering-presentation="featured-summary"]
12406
+ .offerings-preview-card-header {
12407
+ text-align: left;
12408
+ }
12409
+
12410
+ :where(.theme-scope)
12411
+ [data-block="offerings-preview"]
12412
+ .offerings-preview-summary-date {
12413
+ margin: 0;
12414
+ font-family: var(--font-heading, inherit);
12415
+ font-size: clamp(1.125rem, 2.2vw, 1.5rem);
12416
+ font-weight: 650;
12417
+ line-height: 1.22;
12418
+ }
12419
+
12420
+ :where(.theme-scope)
12421
+ [data-block="offerings-preview"]
12422
+ .offerings-preview-summary-date time {
12423
+ display: inline-block;
12424
+ }
12425
+
12426
+ :where(.theme-scope)
12427
+ [data-block="offerings-preview"]
12428
+ .offerings-preview-summary-facts {
12429
+ display: grid;
12430
+ gap: 0;
12431
+ margin: clamp(1.25rem, 3vw, 2rem) 0 0;
12432
+ }
12433
+
12434
+ :where(.theme-scope)
12435
+ [data-block="offerings-preview"]
12436
+ .offerings-preview-summary-facts > div {
12437
+ display: grid;
12438
+ grid-template-columns: minmax(5.5rem, 0.65fr) minmax(0, 1.35fr);
12439
+ gap: 1rem;
12440
+ padding-block: 0.6rem;
12441
+ border-top: 1px solid rgba(var(--tb-border), 0.72);
12442
+ }
12443
+
12444
+ :where(.theme-scope)
12445
+ [data-block="offerings-preview"]
12446
+ .offerings-preview-summary-facts dt {
12447
+ font-size: 0.72rem;
12448
+ font-weight: 750;
12449
+ letter-spacing: 0.1em;
12450
+ text-transform: uppercase;
12451
+ }
12452
+
12453
+ :where(.theme-scope)
12454
+ [data-block="offerings-preview"]
12455
+ .offerings-preview-summary-facts dd {
12456
+ min-width: 0;
12457
+ margin: 0;
12458
+ font-weight: 600;
12459
+ }
12460
+
12461
+ :where(.theme-scope)
12462
+ [data-block="offerings-preview"]:is(
12463
+ [data-block-look="offerings-preview-paired-feature-cards"],
12464
+ [data-block-look="offerings-preview-open-editorial-columns"],
12465
+ [data-block-look="offerings-preview-joined-programme-panel"]
12466
+ )
12467
+ .offerings-preview {
12468
+ container: rb-offerings-preview / inline-size;
12469
+ }
12470
+
12471
+ :where(.theme-scope)
12472
+ [data-block="offerings-preview"]:is(
12473
+ [data-block-look="offerings-preview-paired-feature-cards"],
12474
+ [data-block-look="offerings-preview-open-editorial-columns"],
12475
+ [data-block-look="offerings-preview-joined-programme-panel"]
12476
+ )
12477
+ .offerings-preview-card {
12478
+ min-width: 0;
12479
+ }
12480
+
12481
+ :where(.theme-scope)
12482
+ [data-block="offerings-preview"]:is(
12483
+ [data-block-look="offerings-preview-paired-feature-cards"],
12484
+ [data-block-look="offerings-preview-open-editorial-columns"],
12485
+ [data-block-look="offerings-preview-joined-programme-panel"]
12486
+ )
12487
+ .offerings-preview-card-content {
12488
+ padding: clamp(1.4rem, 3.5vw, 2.75rem);
12489
+ }
12490
+
12491
+ :where(.theme-scope)
12492
+ [data-block="offerings-preview"]:is(
12493
+ [data-block-look="offerings-preview-paired-feature-cards"],
12494
+ [data-block-look="offerings-preview-open-editorial-columns"],
12495
+ [data-block-look="offerings-preview-joined-programme-panel"]
12496
+ )
12497
+ .offerings-preview-card-footer {
12498
+ margin-top: auto;
12499
+ padding-top: clamp(1.25rem, 3vw, 2rem);
12500
+ }
12501
+
12502
+ /* Paired feature cards: one editorial lead and one supporting route. With a
12503
+ * third group the grid returns to equal columns rather than implying a new
12504
+ * source hierarchy. */
12505
+ :where(.theme-scope)
12506
+ [data-block="offerings-preview"][data-block-look="offerings-preview-paired-feature-cards"]
12507
+ .offerings-preview-grid {
12508
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)) !important;
12509
+ gap: clamp(1rem, 2.5vw, 1.5rem);
12510
+ }
12511
+
12512
+ :where(.theme-scope)
12513
+ [data-block="offerings-preview"][data-block-look="offerings-preview-paired-feature-cards"]
12514
+ .offerings-preview-card {
12515
+ overflow: hidden;
12516
+ border: 1px solid rgb(var(--tb-border));
12517
+ border-radius: calc(var(--rb-block-radius, 0.75rem) * 1.75);
12518
+ background: rgb(var(--tb-accent-200));
12519
+ color: rgb(var(--tb-onAccent200));
12520
+ --rb-surface-text-color: rgb(var(--tb-onAccent200));
12521
+ --rb-surface-heading-color: rgb(var(--tb-onAccent200));
12522
+ --rb-surface-link-color: rgb(var(--tb-onAccent200));
12523
+ --rb-surface-supporting-color: rgb(var(--tb-onAccent200));
12524
+ }
12525
+
12526
+ :where(.theme-scope)
12527
+ [data-block="offerings-preview"][data-block-look="offerings-preview-paired-feature-cards"]
12528
+ .offerings-preview-card:first-child {
12529
+ border-color: transparent;
12530
+ background: rgb(var(--tb-primary-950));
12531
+ color: rgb(var(--tb-onPrimary950));
12532
+ box-shadow: 0.55rem 0.55rem 0 rgb(var(--tb-secondary-100));
12533
+ --rb-surface-text-color: rgb(var(--tb-onPrimary950));
12534
+ --rb-surface-heading-color: rgb(var(--tb-onPrimary950));
12535
+ --rb-surface-link-color: rgb(var(--tb-onPrimary950));
12536
+ --rb-surface-supporting-color: rgb(var(--tb-onPrimary950));
12537
+ }
12538
+
12539
+ :where(.theme-scope)
12540
+ [data-block="offerings-preview"][data-block-look="offerings-preview-paired-feature-cards"]
12541
+ .offerings-preview-card:first-child
12542
+ .offerings-preview-card-title {
12543
+ color: rgb(var(--tb-primary-200));
12544
+ }
12545
+
12546
+ @container rb-offerings-preview (min-width: 52rem) {
12547
+ :where(.theme-scope)
12548
+ [data-block="offerings-preview"][data-block-look="offerings-preview-paired-feature-cards"]
12549
+ .offerings-preview-grid:has(> .offerings-preview-card:nth-child(2):last-child) {
12550
+ grid-template-columns: minmax(0, 1.22fr) minmax(18rem, 0.78fr) !important;
12551
+ }
12552
+ }
12553
+
12554
+ /* Open editorial columns: composition and hierarchy without an item fill. */
12555
+ :where(.theme-scope)
12556
+ [data-block="offerings-preview"][data-block-look="offerings-preview-open-editorial-columns"]
12557
+ .offerings-preview-grid {
12558
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr)) !important;
12559
+ gap: 0;
12560
+ border-block: 1px solid rgb(var(--tb-border));
12561
+ }
12562
+
12563
+ :where(.theme-scope)
12564
+ [data-block="offerings-preview"][data-block-look="offerings-preview-open-editorial-columns"]
12565
+ .offerings-preview-card {
12566
+ border: 0;
12567
+ border-radius: 0;
12568
+ background: transparent;
12569
+ color: var(--rb-surface-text-color, rgb(var(--tb-text)));
12570
+ }
12571
+
12572
+ :where(.theme-scope)
12573
+ [data-block="offerings-preview"][data-block-look="offerings-preview-open-editorial-columns"]
12574
+ .offerings-preview-card + .offerings-preview-card {
12575
+ border-top: 1px solid rgb(var(--tb-border));
12576
+ }
12577
+
12578
+ @container rb-offerings-preview (min-width: 46rem) {
12579
+ :where(.theme-scope)
12580
+ [data-block="offerings-preview"][data-block-look="offerings-preview-open-editorial-columns"]
12581
+ .offerings-preview-card + .offerings-preview-card {
12582
+ border-top: 0;
12583
+ border-left: 1px solid rgb(var(--tb-border));
12584
+ }
12585
+ }
12586
+
12587
+ /* Joined programme panel: every group remains independently editable but the
12588
+ * close-set bands read as one upcoming programme. */
12589
+ :where(.theme-scope)
12590
+ [data-block="offerings-preview"][data-block-look="offerings-preview-joined-programme-panel"]
12591
+ .offerings-preview {
12592
+ overflow: hidden;
12593
+ gap: 0;
12594
+ border: 1px solid rgb(var(--tb-border));
12595
+ border-radius: calc(var(--rb-block-radius, 0.75rem) * 1.75);
12596
+ background: rgb(var(--tb-surface));
12597
+ }
12598
+
12599
+ :where(.theme-scope)
12600
+ [data-block="offerings-preview"][data-block-look="offerings-preview-joined-programme-panel"]
12601
+ .offerings-preview-grid {
12602
+ grid-template-columns: minmax(0, 1fr) !important;
12603
+ gap: 0;
12604
+ }
12605
+
12606
+ :where(.theme-scope)
12607
+ [data-block="offerings-preview"][data-block-look="offerings-preview-joined-programme-panel"]
12608
+ .offerings-preview-card {
12609
+ border: 0;
12610
+ border-radius: 0;
12611
+ background: rgb(var(--tb-secondary-100));
12612
+ color: rgb(var(--tb-onSecondary100));
12613
+ --rb-surface-text-color: rgb(var(--tb-onSecondary100));
12614
+ --rb-surface-heading-color: rgb(var(--tb-onSecondary100));
12615
+ --rb-surface-link-color: rgb(var(--tb-onSecondary100));
12616
+ --rb-surface-supporting-color: rgb(var(--tb-onSecondary100));
12617
+ }
12618
+
12619
+ :where(.theme-scope)
12620
+ [data-block="offerings-preview"][data-block-look="offerings-preview-joined-programme-panel"]
12621
+ .offerings-preview-card:nth-child(2) {
12622
+ background: rgb(var(--tb-accent-200));
12623
+ color: rgb(var(--tb-onAccent200));
12624
+ --rb-surface-text-color: rgb(var(--tb-onAccent200));
12625
+ --rb-surface-heading-color: rgb(var(--tb-onAccent200));
12626
+ --rb-surface-link-color: rgb(var(--tb-onAccent200));
12627
+ --rb-surface-supporting-color: rgb(var(--tb-onAccent200));
12628
+ }
12629
+
12630
+ :where(.theme-scope)
12631
+ [data-block="offerings-preview"][data-block-look="offerings-preview-joined-programme-panel"]
12632
+ .offerings-preview-card:nth-child(3) {
12633
+ background: rgb(var(--tb-primary-100));
12634
+ color: rgb(var(--tb-onPrimary100));
12635
+ --rb-surface-text-color: rgb(var(--tb-onPrimary100));
12636
+ --rb-surface-heading-color: rgb(var(--tb-onPrimary100));
12637
+ --rb-surface-link-color: rgb(var(--tb-onPrimary100));
12638
+ --rb-surface-supporting-color: rgb(var(--tb-onPrimary100));
12639
+ }
12640
+
12641
+ :where(.theme-scope)
12642
+ [data-block="offerings-preview"][data-block-look="offerings-preview-joined-programme-panel"]
12643
+ .offerings-preview-card + .offerings-preview-card {
12644
+ border-top: 1px solid rgb(var(--tb-border));
12645
+ }
12646
+
12647
+ @container rb-offerings-preview (min-width: 58rem) {
12648
+ :where(.theme-scope)
12649
+ [data-block="offerings-preview"][data-block-look="offerings-preview-joined-programme-panel"]
12650
+ .offerings-preview-card-content {
12651
+ display: grid;
12652
+ grid-template-columns: minmax(15rem, 1.1fr) minmax(19rem, 1.4fr) minmax(10rem, auto);
12653
+ align-items: center;
12654
+ gap: clamp(1.5rem, 4vw, 4rem);
12655
+ }
12656
+
12657
+ :where(.theme-scope)
12658
+ [data-block="offerings-preview"][data-block-look="offerings-preview-joined-programme-panel"]
12659
+ .offerings-preview-card-footer {
12660
+ margin-top: 0;
12661
+ padding-top: 0;
12662
+ justify-content: flex-end;
12663
+ }
12664
+ }
12665
+
12666
+
12667
+ /* =============================================================================
12668
+ * Featured-editorial testimonial Looks promoted from the Fran André treatment
12669
+ * study. These rules do not set the outer section background.
12670
+ * ============================================================================= */
12671
+
12672
+ :where(.theme-scope)
12673
+ [data-block="testimonials"]:is(
12674
+ [data-block-look="testimonials-evergreen-lead"],
12675
+ [data-block-look="testimonials-room-and-response"],
12676
+ [data-block-look="testimonials-open-floor"]
12677
+ )
12678
+ .rb-testimonials-fe-card--feature {
12679
+ background: rgb(var(--tb-secondary-900));
12680
+ color: rgb(var(--tb-onSecondary900));
12681
+ --rb-surface-text-color: rgb(var(--tb-onSecondary900));
12682
+ --rb-surface-heading-color: rgb(var(--tb-onSecondary900));
12683
+ --rb-surface-link-color: rgb(var(--tb-onSecondary900));
12684
+ --rb-surface-supporting-color: rgb(var(--tb-onSecondary900));
12685
+ }
12686
+
12687
+ :where(.theme-scope)
12688
+ [data-block="testimonials"]:is(
12689
+ [data-block-look="testimonials-evergreen-lead"],
12690
+ [data-block-look="testimonials-room-and-response"],
12691
+ [data-block-look="testimonials-open-floor"]
12692
+ )
12693
+ .rb-testimonials-fe-card--feature
12694
+ .rb-testimonials-fe-qmark {
12695
+ color: rgb(var(--tb-primary-200));
12696
+ }
12697
+
12698
+ :where(.theme-scope)
12699
+ [data-block="testimonials"]:is(
12700
+ [data-block-look="testimonials-evergreen-lead"],
12701
+ [data-block-look="testimonials-room-and-response"],
12702
+ [data-block-look="testimonials-open-floor"]
12703
+ )
12704
+ .rb-testimonials-fe-card--feature
12705
+ :is(.rb-testimonials-fe-quote p, .rb-testimonials-fe-name, .rb-testimonials-fe-context) {
12706
+ color: rgb(var(--tb-onSecondary900));
12707
+ }
12708
+
12709
+ /* Evergreen lead: the feature remains dominant while the supporting column
12710
+ * opens into two equal compact voices at wider widths. */
12711
+ @container rb-testimonials-fe (min-width: 1024px) {
12712
+ :where(.theme-scope)
12713
+ [data-block="testimonials"][data-block-look="testimonials-evergreen-lead"]
12714
+ .rb-testimonials-fe-grid {
12715
+ grid-template-columns: minmax(0, 1.15fr) minmax(0, 1.55fr);
12716
+ }
12717
+
12718
+ :where(.theme-scope)
12719
+ [data-block="testimonials"][data-block-look="testimonials-evergreen-lead"]
12720
+ .rb-testimonials-fe-col {
12721
+ grid-template-columns: repeat(2, minmax(0, 1fr));
12722
+ }
12723
+ }
12724
+
12725
+ /* Room and response: a tall lead voice with one soft brand response and one
12726
+ * neutral response in the existing stacked support column. */
12727
+ :where(.theme-scope)
12728
+ [data-block="testimonials"][data-block-look="testimonials-room-and-response"]
12729
+ .rb-testimonials-fe-card--feature {
12730
+ min-height: 27rem;
12731
+ }
12732
+
12733
+ :where(.theme-scope)
12734
+ [data-block="testimonials"][data-block-look="testimonials-room-and-response"]
12735
+ .rb-testimonials-fe-col
12736
+ .rb-testimonials-fe-card:first-child {
12737
+ border-color: transparent;
12738
+ background: rgb(var(--tb-primary-100));
12739
+ color: rgb(var(--tb-onPrimary100));
12740
+ --rb-surface-text-color: rgb(var(--tb-onPrimary100));
12741
+ --rb-surface-heading-color: rgb(var(--tb-onPrimary100));
12742
+ --rb-surface-link-color: rgb(var(--tb-onPrimary100));
12743
+ --rb-surface-supporting-color: rgb(var(--tb-onPrimary100));
12744
+ }
12745
+
12746
+ :where(.theme-scope)
12747
+ [data-block="testimonials"][data-block-look="testimonials-room-and-response"]
12748
+ .rb-testimonials-fe-col
12749
+ .rb-testimonials-fe-card:first-child
12750
+ :is(.rb-testimonials-fe-quote p, .rb-testimonials-fe-name, .rb-testimonials-fe-context) {
12751
+ color: rgb(var(--tb-onPrimary100));
12752
+ }
12753
+
12754
+ /* Open floor: the section head becomes an editorial rail while proof occupies
12755
+ * a feature-over-supporting field. */
12756
+ @container rb-testimonials-fe (min-width: 1024px) {
12757
+ :where(.theme-scope)
12758
+ [data-block="testimonials"][data-block-look="testimonials-open-floor"]
12759
+ .rb-testimonials-fe {
12760
+ display: grid;
12761
+ grid-template-columns: minmax(15rem, 0.72fr) minmax(0, 1.6fr);
12762
+ align-items: start;
12763
+ gap: clamp(2rem, 5vw, 5rem);
12764
+ }
12765
+
12766
+ :where(.theme-scope)
12767
+ [data-block="testimonials"][data-block-look="testimonials-open-floor"]
12768
+ .rb-testimonials-fe-head {
12769
+ display: block;
12770
+ }
12771
+
12772
+ :where(.theme-scope)
12773
+ [data-block="testimonials"][data-block-look="testimonials-open-floor"]
12774
+ .rb-testimonials-fe-leadin {
12775
+ margin-top: 1.5rem;
12776
+ }
12777
+
12778
+ :where(.theme-scope)
12779
+ [data-block="testimonials"][data-block-look="testimonials-open-floor"]
12780
+ .rb-testimonials-fe-grid {
12781
+ grid-template-columns: minmax(0, 1fr);
12782
+ }
12783
+
12784
+ :where(.theme-scope)
12785
+ [data-block="testimonials"][data-block-look="testimonials-open-floor"]
12786
+ .rb-testimonials-fe-col {
12787
+ grid-template-columns: repeat(2, minmax(0, 1fr));
12788
+ }
12789
+ }
12790
+
12791
+