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