@riverbankcms/sdk 0.77.1 → 0.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/README.md +69 -0
  2. package/dist/{PreviewEditorSidebar-DVUG7GK4.mjs → PreviewEditorSidebar-RIKFQ72L.mjs} +4916 -4847
  3. package/dist/{PreviewEditorUI-P7RN4CDS.mjs → PreviewEditorUI-XO7TUWKK.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +154 -154
  6. package/dist/_dts/api/src/accessAdmin.d.ts +5 -0
  7. package/dist/_dts/api/src/billing.d.ts +3 -26
  8. package/dist/_dts/api/src/bookingVerticals.d.ts +4 -0
  9. package/dist/_dts/api/src/content-editor.d.ts +1 -0
  10. package/dist/_dts/api/src/demoDashboardMutationSurfaces.d.ts +46 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  12. package/dist/_dts/api/src/index.d.ts +14 -2
  13. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
  14. package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
  15. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
  16. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
  17. package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
  18. package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
  19. package/dist/_dts/api/src/navigation.d.ts +12 -0
  20. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
  21. package/dist/_dts/api/src/staffAccess.d.ts +79 -0
  22. package/dist/_dts/api/src/types.d.ts +3 -1
  23. package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
  24. package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
  25. package/dist/_dts/blocks/src/index.d.ts +1 -0
  26. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  27. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  28. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  29. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  30. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  31. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
  32. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
  33. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  34. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  35. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +21 -21
  36. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  37. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  38. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  39. package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
  40. package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
  41. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  42. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
  43. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -29
  44. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
  45. package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
  46. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
  47. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
  48. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  49. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  50. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
  51. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
  53. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  54. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
  55. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
  56. package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
  57. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
  59. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
  63. package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
  64. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
  65. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  66. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  67. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  69. package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
  70. package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
  71. package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
  72. package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
  73. package/dist/_dts/content-editor/src/index.d.ts +5 -0
  74. package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
  75. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  76. package/dist/_dts/content-model/src/index.d.ts +1 -0
  77. package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
  78. package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
  79. package/dist/_dts/core/src/csv-cells.d.ts +10 -0
  80. package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
  81. package/dist/_dts/core/src/csv-escape.d.ts +1 -0
  82. package/dist/_dts/core/src/csv-filename.d.ts +18 -0
  83. package/dist/_dts/core/src/csv-render.d.ts +4 -0
  84. package/dist/_dts/core/src/csv-types.d.ts +116 -0
  85. package/dist/_dts/core/src/currency-format.d.ts +4 -0
  86. package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
  87. package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
  88. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
  89. package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
  90. package/dist/_dts/core/src/duration.d.ts +14 -0
  91. package/dist/_dts/core/src/email-format.d.ts +10 -0
  92. package/dist/_dts/core/src/field-errors.d.ts +1 -0
  93. package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
  94. package/dist/_dts/core/src/index.d.ts +20 -0
  95. package/dist/_dts/core/src/number-input.d.ts +22 -0
  96. package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
  97. package/dist/_dts/core/src/slug.d.ts +39 -0
  98. package/dist/_dts/core/src/string.d.ts +19 -0
  99. package/dist/_dts/core/src/uuid.d.ts +6 -0
  100. package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
  101. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
  102. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
  103. package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
  104. package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
  105. package/dist/_dts/media-core/src/filename.d.ts +1 -0
  106. package/dist/_dts/media-core/src/index.d.ts +10 -0
  107. package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
  108. package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
  109. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
  110. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
  111. package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
  112. package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
  113. package/dist/_dts/path-utils/src/index.d.ts +8 -0
  114. package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
  115. package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
  116. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
  117. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
  118. package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
  119. package/dist/_dts/sdk/src/client/error.d.ts +3 -0
  120. package/dist/_dts/sdk/src/client/index.d.ts +2 -2
  121. package/dist/_dts/sdk/src/client/types.d.ts +37 -19
  122. package/dist/_dts/sdk/src/index.d.ts +2 -2
  123. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
  124. package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
  125. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  126. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  127. package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
  128. package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
  129. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
  130. package/dist/_dts/sdk/src/version.d.ts +1 -1
  131. package/dist/_dts/site-commands/src/commands.d.ts +12 -12
  132. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  133. package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
  134. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
  135. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
  136. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
  137. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
  138. package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
  139. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  140. package/dist/_dts/theme-core/src/index.d.ts +3 -1
  141. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +36 -24
  142. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
  143. package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
  144. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  145. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
  146. package/dist/_dts/theme-core/src/schema.d.ts +64 -18
  147. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
  148. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
  149. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
  150. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +24 -0
  151. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +31 -3
  152. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  153. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +33 -1
  154. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
  155. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
  156. package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
  157. package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
  158. package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
  159. package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
  160. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
  161. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  162. package/dist/{chunk-2SPENC5M.mjs → chunk-F7RTCZYN.mjs} +229 -50
  163. package/dist/{chunk-IENWFSLO.mjs → chunk-NIDXI46P.mjs} +1 -1
  164. package/dist/{chunk-KWJPDZH2.mjs → chunk-OECWLDHN.mjs} +2770 -620
  165. package/dist/{chunk-VX7B5VAC.mjs → chunk-SVMMM2NA.mjs} +8 -0
  166. package/dist/{chunk-6SMUFTXD.mjs → chunk-SXOLGNMX.mjs} +1 -1
  167. package/dist/{chunk-ZYEJLCTN.mjs → chunk-TXDES5P2.mjs} +2 -2
  168. package/dist/cli/index.mjs +1677 -440
  169. package/dist/client/{accordion-RZMQSYLR.mjs → accordion-EVDEOUPR.mjs} +2 -2
  170. package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-DIHBLC64.mjs} +27 -30
  171. package/dist/client/bookings.mjs +3707 -259
  172. package/dist/client/{carousel-LDX47ZIK.mjs → carousel-FEBQHIWI.mjs} +3 -4
  173. package/dist/client/{cart-RGXDS5F4.mjs → cart-7CKSXAE4.mjs} +8 -8
  174. package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WKYCANLV.mjs} +8 -8
  175. package/dist/client/{chunk-JNC7CGHX.mjs → chunk-2SAVKN2M.mjs} +2 -2
  176. package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-36WJCERQ.mjs} +1 -1
  177. package/dist/client/{chunk-R56FQ3RR.mjs → chunk-65F47D7Y.mjs} +280 -71
  178. package/dist/client/{chunk-L3DNHIJX.mjs → chunk-GUK2FPXQ.mjs} +23 -45
  179. package/dist/client/{chunk-PMAIXMAB.mjs → chunk-IVNCUVAV.mjs} +26 -21
  180. package/dist/client/{chunk-II7O4XN3.mjs → chunk-OFMSCGNY.mjs} +2 -2
  181. package/dist/client/chunk-PD6NBCEY.mjs +66 -0
  182. package/dist/client/{chunk-GMVTOKYG.mjs → chunk-RV6FX7UH.mjs} +510 -64
  183. package/dist/client/{chunk-E2TDNXCL.mjs → chunk-RZDWX7QW.mjs} +2 -1
  184. package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
  185. package/dist/client/{chunk-JEZECJ3W.mjs → chunk-VPPMNXCF.mjs} +129 -3
  186. package/dist/client/{chunk-UFSWADAO.mjs → chunk-YDSEG6GZ.mjs} +5 -66
  187. package/dist/client/client.mjs +7070 -4561
  188. package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-5QF2PHKM.mjs} +14 -11
  189. package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-4ZOSETDU.mjs} +9 -9
  190. package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-WQGU7JUX.mjs} +9 -9
  191. package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-AYWVUJ5Y.mjs} +9 -9
  192. package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-NT7C6UT5.mjs} +9 -9
  193. package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-OH24F4ZJ.mjs} +9 -9
  194. package/dist/client/{form-ETFZFATW.mjs → form-7L42SRBB.mjs} +6 -6
  195. package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-OZRZNZ52.mjs} +3 -3
  196. package/dist/client/hooks.mjs +1040 -278
  197. package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-ZBXRPQ7C.mjs} +2 -2
  198. package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-SNAGFF2I.mjs} +3 -3
  199. package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-I46BOFGV.mjs} +8 -8
  200. package/dist/client/{productList-A5RO5WIS.mjs → productList-BOYHTYI6.mjs} +8 -8
  201. package/dist/client/rendering/client.mjs +7090 -2645
  202. package/dist/client/rendering/islands.mjs +19 -19
  203. package/dist/client/rendering.mjs +6089 -3792
  204. package/dist/client/{shop-L4MZH4I2.mjs → shop-XTXPZTKR.mjs} +8 -8
  205. package/dist/preview-next/before-render.mjs +8 -0
  206. package/dist/preview-next/client/runtime.mjs +5 -5
  207. package/dist/preview-next/editor-chrome.css +10 -0
  208. package/dist/preview-next/middleware.mjs +8 -0
  209. package/dist/{sdk-runtime-6UT2S7KZ.mjs → sdk-runtime-ZJLKC6DR.mjs} +6 -6
  210. package/dist/server/components.mjs +2635 -1262
  211. package/dist/server/config-validation.mjs +1271 -509
  212. package/dist/server/config.mjs +1271 -509
  213. package/dist/server/data.mjs +1040 -278
  214. package/dist/server/index.mjs +488 -246
  215. package/dist/server/next.mjs +4087 -2147
  216. package/dist/server/page-converter.mjs +571 -115
  217. package/dist/server/prebuild.mjs +1 -1
  218. package/dist/server/rendering/server.mjs +2636 -1263
  219. package/dist/server/rendering.mjs +2654 -1268
  220. package/dist/server/routing.mjs +1729 -489
  221. package/dist/server/server.mjs +1532 -530
  222. package/dist/server/theme-bridge.mjs +3151 -131
  223. package/dist/server/theme.mjs +10 -1
  224. package/dist/styles/index.css +488 -48
  225. package/package.json +2 -1
  226. package/dist/SdkPreviewModeRuntime-KLPX47SE.mjs +0 -8
  227. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
  228. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
  229. package/dist/client/chunk-OJPZEZU2.mjs +0 -31
  230. package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
@@ -1417,7 +1417,8 @@ var accordionSystemSchema = z7.object({
1417
1417
  icon: z7.object({
1418
1418
  style: accordionIconSchema,
1419
1419
  position: z7.enum(["left", "right"]),
1420
- size: z7.enum(["sm", "md", "lg"])
1420
+ size: z7.enum(["sm", "md", "lg"]),
1421
+ colorToken: themeColorTokenSchema.optional()
1421
1422
  }),
1422
1423
  // Trigger (question) styling
1423
1424
  trigger: z7.object({
@@ -1551,6 +1552,7 @@ var navLinkPaddingXSchema = z11.enum(["none", "tight", "compact", "default", "re
1551
1552
  var navLinkBorderRadiusSchema = z11.enum(["none", "sm", "md", "full"]);
1552
1553
  var navLinkTextSizeSchema = z11.enum(["xs", "sm", "base", "lg"]);
1553
1554
  var navLinkLetterSpacingSchema = z11.enum(["normal", "wide", "wider", "widest"]);
1555
+ var navLinkContrastTreatmentSchema = z11.enum(["none", "soft-glow"]);
1554
1556
  var navLinkStyleSchema = z11.object({
1555
1557
  /** Display name for the style */
1556
1558
  name: z11.string().min(1).max(30).optional(),
@@ -1562,6 +1564,8 @@ var navLinkStyleSchema = z11.object({
1562
1564
  textSize: navLinkTextSizeSchema.optional(),
1563
1565
  /** Optional letter spacing override */
1564
1566
  letterSpacing: navLinkLetterSpacingSchema.optional(),
1567
+ /** Optional text-only contrast treatment for transparent/overlay navigation */
1568
+ contrastTreatment: navLinkContrastTreatmentSchema.optional(),
1565
1569
  /** Hover/active color token (for color-change effects) */
1566
1570
  hoverColorToken: themeColorTokenSchema.nullable().optional(),
1567
1571
  /** Padding preset */
@@ -1776,6 +1780,9 @@ var componentShadowSchema = z14.object({
1776
1780
  });
1777
1781
 
1778
1782
  // ../theme-core/src/site-styles/types.ts
1783
+ function asAppearancePresetId(value) {
1784
+ return brandNonEmptyString(value, "AppearancePresetId");
1785
+ }
1779
1786
  function asSiteStyleId(value) {
1780
1787
  const siteStyleId = brandNonEmptyString(value, "SiteStyleId");
1781
1788
  if (!siteStyleId.startsWith("site-style:")) {
@@ -1785,17 +1792,40 @@ function asSiteStyleId(value) {
1785
1792
  }
1786
1793
  return siteStyleId;
1787
1794
  }
1795
+ function asDesignSystemTemplateId(value) {
1796
+ return brandNonEmptyString(value, "DesignSystemTemplateId");
1797
+ }
1798
+ function assertNever(value, message = "Unhandled Theme V2 variant") {
1799
+ throw new Error(`${message}: ${String(value)}`);
1800
+ }
1788
1801
  function brandNonEmptyString(value, label) {
1789
1802
  if (value.length === 0) {
1790
1803
  throw new Error(`${label} must be a non-empty string.`);
1791
1804
  }
1792
1805
  return value;
1793
1806
  }
1807
+ var plainFrame = {
1808
+ kind: "plain"
1809
+ };
1810
+ function panelFrame(treatment) {
1811
+ return { kind: "panel", treatment };
1812
+ }
1813
+ function flushPanelFrame(options) {
1814
+ return {
1815
+ kind: "flush-panel",
1816
+ treatment: options.treatment ?? "media-panel",
1817
+ bleed: options.bleed
1818
+ };
1819
+ }
1794
1820
  var tileTreatmentValues = [
1795
1821
  "default",
1796
1822
  "quiet",
1797
1823
  "brand-depth"
1798
1824
  ];
1825
+ var eventListTreatmentValues = [
1826
+ "plain",
1827
+ "lined-panel"
1828
+ ];
1799
1829
  var eyebrowTreatmentValues = [
1800
1830
  "plain",
1801
1831
  "pill",
@@ -1970,6 +2000,7 @@ var sectionStylesOverrideSchema = z16.object({
1970
2000
  spacing: semanticSpacingSchema.nullable().optional(),
1971
2001
  minHeight: z16.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
1972
2002
  tileTreatment: z16.enum(tileTreatmentValues).nullable().optional(),
2003
+ eventListTreatment: z16.enum(eventListTreatmentValues).nullable().optional(),
1973
2004
  eyebrowTreatment: z16.enum(eyebrowTreatmentValues).nullable().optional(),
1974
2005
  headingDecoration: headingDecorationSchema.nullable().optional(),
1975
2006
  // Author-level override consumed by later block/editor rendering phases.
@@ -2415,6 +2446,9 @@ var themesTurnSchema = z16.object({
2415
2446
  themes: z16.array(themeSchema).length(3)
2416
2447
  });
2417
2448
 
2449
+ // ../theme-core/src/fonts/uploadFormat.ts
2450
+ var MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
2451
+
2418
2452
  // ../theme-core/src/palette/utils/colorConversion.ts
2419
2453
  function hexToRgb(hex) {
2420
2454
  const h = hex.replace(/^#/, "");
@@ -2423,58 +2457,2579 @@ function hexToRgb(hex) {
2423
2457
  const int = parseInt(m, 16);
2424
2458
  return { r: int >> 16 & 255, g: int >> 8 & 255, b: int & 255 };
2425
2459
  }
2426
-
2427
- // ../theme-core/src/styles/shadow.ts
2428
- function generateShadowCssVars(theme) {
2429
- const level = theme.shadow.elevation;
2430
- const soft = theme.shadow.softness !== "crisp";
2431
- const base = {
2432
- sm: [{ y: 1, blur: 2, spread: 0, a: 0.08 }],
2433
- md: [
2434
- { y: 4, blur: 6, spread: -1, a: 0.1 },
2435
- { y: 2, blur: 4, spread: -2, a: 0.1 }
2436
- ],
2437
- lg: [
2438
- { y: 10, blur: 15, spread: -3, a: 0.1 },
2439
- { y: 4, blur: 6, spread: -4, a: 0.1 }
2440
- ],
2441
- xl: [
2442
- { y: 20, blur: 25, spread: -5, a: 0.1 },
2443
- { y: 8, blur: 10, spread: -6, a: 0.1 }
2444
- ],
2445
- x2l: [{ y: 25, blur: 50, spread: -12, a: 0.25 }]
2460
+
2461
+ // ../theme-core/src/styles/shadow.ts
2462
+ function generateShadowCssVars(theme) {
2463
+ const level = theme.shadow.elevation;
2464
+ const soft = theme.shadow.softness !== "crisp";
2465
+ const base = {
2466
+ sm: [{ y: 1, blur: 2, spread: 0, a: 0.08 }],
2467
+ md: [
2468
+ { y: 4, blur: 6, spread: -1, a: 0.1 },
2469
+ { y: 2, blur: 4, spread: -2, a: 0.1 }
2470
+ ],
2471
+ lg: [
2472
+ { y: 10, blur: 15, spread: -3, a: 0.1 },
2473
+ { y: 4, blur: 6, spread: -4, a: 0.1 }
2474
+ ],
2475
+ xl: [
2476
+ { y: 20, blur: 25, spread: -5, a: 0.1 },
2477
+ { y: 8, blur: 10, spread: -6, a: 0.1 }
2478
+ ],
2479
+ x2l: [{ y: 25, blur: 50, spread: -12, a: 0.25 }]
2480
+ };
2481
+ const scale = (() => {
2482
+ switch (level) {
2483
+ case "none":
2484
+ return 0.8;
2485
+ case "low":
2486
+ return 1;
2487
+ case "medium":
2488
+ return 1.25;
2489
+ case "high":
2490
+ return 1.5;
2491
+ default:
2492
+ return 1;
2493
+ }
2494
+ })();
2495
+ const blurMul = soft ? 1.2 : 1;
2496
+ const alphaMul = soft ? 0.9 : 1.05;
2497
+ const fmt = (layers) => layers.map((l) => {
2498
+ const y = Math.round(l.y * scale);
2499
+ const blur = Math.round(l.blur * scale * blurMul);
2500
+ const spread = Math.round(l.spread * scale);
2501
+ const a = Math.max(0, Math.min(1, +(l.a * alphaMul).toFixed(3)));
2502
+ return `0 ${y}px ${blur}px ${spread}px rgba(0, 0, 0, ${a})`;
2503
+ }).join(", ");
2504
+ return {
2505
+ "--shadow-sm": fmt(base.sm),
2506
+ "--shadow-md": fmt(base.md),
2507
+ "--shadow-lg": fmt(base.lg),
2508
+ "--shadow-xl": fmt(base.xl),
2509
+ "--shadow-2xl": fmt(base.x2l)
2510
+ };
2511
+ }
2512
+
2513
+ // ../theme-core/src/palette/variants/types.ts
2514
+ import { z as z17 } from "zod";
2515
+ function asPaletteVariantId(value) {
2516
+ if (value.length === 0) {
2517
+ throw new Error("PaletteVariantId must be a non-empty string");
2518
+ }
2519
+ return value;
2520
+ }
2521
+ var paletteVariantIdSchema = z17.string().min(1).transform((value) => asPaletteVariantId(value));
2522
+ var HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
2523
+ var hexColorSchema = z17.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
2524
+ var variantPaletteColorSchema = paletteColorSchema.extend({
2525
+ name: paletteTokenNameSchema
2526
+ });
2527
+ var paletteVariantSchema = z17.object({
2528
+ id: paletteVariantIdSchema,
2529
+ name: z17.string().min(1),
2530
+ description: z17.string().min(1),
2531
+ tags: styleTagsSchema,
2532
+ mode: z17.enum(["light", "dark"]),
2533
+ colors: z17.array(variantPaletteColorSchema).min(1)
2534
+ });
2535
+ function definePaletteVariant(input) {
2536
+ return {
2537
+ id: asPaletteVariantId(input.id),
2538
+ name: input.name,
2539
+ description: input.description,
2540
+ tags: input.tags,
2541
+ mode: input.mode,
2542
+ colors: input.colors
2543
+ };
2544
+ }
2545
+ var paletteOverridesSchema = z17.object({
2546
+ primary: hexColorSchema.optional(),
2547
+ primaryForeground: hexColorSchema.optional(),
2548
+ secondary: hexColorSchema.optional(),
2549
+ accent: hexColorSchema.optional(),
2550
+ success: hexColorSchema.optional(),
2551
+ warning: hexColorSchema.optional(),
2552
+ destructive: hexColorSchema.optional(),
2553
+ background: hexColorSchema.optional(),
2554
+ surface: hexColorSchema.optional(),
2555
+ surfaceAlt: hexColorSchema.optional(),
2556
+ muted: hexColorSchema.optional(),
2557
+ text: hexColorSchema.optional(),
2558
+ border: hexColorSchema.optional()
2559
+ }).strict().transform((value) => value);
2560
+
2561
+ // ../theme-core/src/palette/variants/brand-led.ts
2562
+ var brandLedCool = definePaletteVariant({
2563
+ id: "brand-led-cool",
2564
+ name: "Brand-led \u2014 Cool",
2565
+ description: "Confident blue primary with slate neutrals.",
2566
+ tags: { tone: "classic", energy: "calm", era: "modern" },
2567
+ mode: "light",
2568
+ colors: [
2569
+ { name: "primary", hex: "#2563eb" },
2570
+ { name: "secondary", hex: "#64748b" },
2571
+ { name: "accent", hex: "#0f766e" },
2572
+ { name: "success", hex: "#16a34a" },
2573
+ { name: "warning", hex: "#d97706" },
2574
+ { name: "destructive", hex: "#dc2626" },
2575
+ { name: "background", hex: "#ffffff" },
2576
+ { name: "surface", hex: "#ffffff" },
2577
+ { name: "surfaceAlt", hex: "#f8fafc" },
2578
+ { name: "muted", hex: "#f1f5f9" },
2579
+ { name: "text", hex: "#0f172a" },
2580
+ { name: "primaryForeground", hex: "#ffffff" },
2581
+ { name: "border", hex: "#cbd5e1" }
2582
+ ]
2583
+ });
2584
+ var brandLedWarm = definePaletteVariant({
2585
+ id: "brand-led-warm",
2586
+ name: "Brand-led \u2014 Warm",
2587
+ description: "Sunset orange primary with warm grey neutrals.",
2588
+ tags: { tone: "classic", energy: "vibrant", era: "modern" },
2589
+ mode: "light",
2590
+ colors: [
2591
+ { name: "primary", hex: "#ea580c" },
2592
+ { name: "secondary", hex: "#78716c" },
2593
+ { name: "accent", hex: "#a16207" },
2594
+ { name: "success", hex: "#16a34a" },
2595
+ { name: "warning", hex: "#d97706" },
2596
+ { name: "destructive", hex: "#b91c1c" },
2597
+ { name: "background", hex: "#fffaf3" },
2598
+ { name: "surface", hex: "#ffffff" },
2599
+ { name: "surfaceAlt", hex: "#fbeee0" },
2600
+ { name: "muted", hex: "#f4e2cd" },
2601
+ { name: "text", hex: "#1c1917" },
2602
+ { name: "primaryForeground", hex: "#fffaf3" },
2603
+ { name: "border", hex: "#d6c4ad" }
2604
+ ]
2605
+ });
2606
+ var brandLedJewel = definePaletteVariant({
2607
+ id: "brand-led-jewel",
2608
+ name: "Brand-led \u2014 Jewel",
2609
+ description: "Deep emerald primary with rich neutrals.",
2610
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
2611
+ mode: "light",
2612
+ colors: [
2613
+ { name: "primary", hex: "#047857" },
2614
+ { name: "secondary", hex: "#4b5563" },
2615
+ { name: "accent", hex: "#7c3aed" },
2616
+ { name: "success", hex: "#15803d" },
2617
+ { name: "warning", hex: "#b45309" },
2618
+ { name: "destructive", hex: "#b91c1c" },
2619
+ { name: "background", hex: "#ffffff" },
2620
+ { name: "surface", hex: "#ffffff" },
2621
+ { name: "surfaceAlt", hex: "#f5f5f4" },
2622
+ { name: "muted", hex: "#e7e5e4" },
2623
+ { name: "text", hex: "#0c0a09" },
2624
+ { name: "primaryForeground", hex: "#ffffff" },
2625
+ { name: "border", hex: "#a8a29e" }
2626
+ ]
2627
+ });
2628
+ var brandLedBurgundyGold = definePaletteVariant({
2629
+ id: "brand-led-burgundy-gold",
2630
+ name: "Brand-led \u2014 Burgundy Gold",
2631
+ description: "Deep burgundy with warm gold accents and soft neutral grounds.",
2632
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
2633
+ mode: "light",
2634
+ colors: [
2635
+ { name: "primary", hex: "#7c2e38" },
2636
+ { name: "secondary", hex: "#d4af37" },
2637
+ { name: "accent", hex: "#b8e19a" },
2638
+ { name: "success", hex: "#10b981" },
2639
+ { name: "warning", hex: "#f59e0b" },
2640
+ { name: "destructive", hex: "#ef4444" },
2641
+ { name: "background", hex: "#f1dfd0" },
2642
+ { name: "surface", hex: "#f5e6db" },
2643
+ { name: "surfaceAlt", hex: "#f8ece3" },
2644
+ { name: "muted", hex: "#c9b8a8" },
2645
+ { name: "text", hex: "#400000" },
2646
+ { name: "primaryForeground", hex: "#ffffff" },
2647
+ { name: "border", hex: "#c9b8a8" }
2648
+ ]
2649
+ });
2650
+
2651
+ // ../theme-core/src/palette/variants/high-contrast.ts
2652
+ var highContrastInk = definePaletteVariant({
2653
+ id: "high-contrast-ink",
2654
+ name: "High Contrast \u2014 Ink",
2655
+ description: "Near-black primary with cool greys.",
2656
+ tags: { tone: "bold", energy: "calm", era: "editorial" },
2657
+ mode: "light",
2658
+ colors: [
2659
+ { name: "primary", hex: "#111827" },
2660
+ { name: "secondary", hex: "#374151" },
2661
+ { name: "accent", hex: "#1d4ed8" },
2662
+ { name: "success", hex: "#047857" },
2663
+ { name: "warning", hex: "#b45309" },
2664
+ { name: "destructive", hex: "#b91c1c" },
2665
+ { name: "background", hex: "#ffffff" },
2666
+ { name: "surface", hex: "#ffffff" },
2667
+ { name: "surfaceAlt", hex: "#f3f4f6" },
2668
+ { name: "muted", hex: "#e5e7eb" },
2669
+ { name: "text", hex: "#030712" },
2670
+ { name: "primaryForeground", hex: "#ffffff" },
2671
+ { name: "border", hex: "#6b7280" }
2672
+ ]
2673
+ });
2674
+ var highContrastCharcoal = definePaletteVariant({
2675
+ id: "high-contrast-charcoal",
2676
+ name: "High Contrast \u2014 Charcoal",
2677
+ description: "Warm charcoal primary on a soft cream ground.",
2678
+ tags: { tone: "minimal", energy: "calm", era: "editorial" },
2679
+ mode: "light",
2680
+ colors: [
2681
+ { name: "primary", hex: "#1f2937" },
2682
+ { name: "secondary", hex: "#52525b" },
2683
+ { name: "accent", hex: "#a16207" },
2684
+ { name: "success", hex: "#15803d" },
2685
+ { name: "warning", hex: "#b45309" },
2686
+ { name: "destructive", hex: "#991b1b" },
2687
+ { name: "background", hex: "#fafaf9" },
2688
+ { name: "surface", hex: "#ffffff" },
2689
+ { name: "surfaceAlt", hex: "#f5f5f4" },
2690
+ { name: "muted", hex: "#e7e5e4" },
2691
+ { name: "text", hex: "#0c0a09" },
2692
+ { name: "primaryForeground", hex: "#fafaf9" },
2693
+ { name: "border", hex: "#a8a29e" }
2694
+ ]
2695
+ });
2696
+ var highContrastMonochrome = definePaletteVariant({
2697
+ id: "high-contrast-monochrome",
2698
+ name: "High Contrast \u2014 Monochrome",
2699
+ description: "Pure black-on-white with a single saturated accent.",
2700
+ tags: { tone: "bold", energy: "vibrant", era: "editorial" },
2701
+ mode: "light",
2702
+ colors: [
2703
+ { name: "primary", hex: "#000000" },
2704
+ { name: "secondary", hex: "#404040" },
2705
+ { name: "accent", hex: "#dc2626" },
2706
+ { name: "success", hex: "#000000" },
2707
+ { name: "warning", hex: "#000000" },
2708
+ { name: "destructive", hex: "#dc2626" },
2709
+ { name: "background", hex: "#ffffff" },
2710
+ { name: "surface", hex: "#ffffff" },
2711
+ { name: "surfaceAlt", hex: "#f5f5f5" },
2712
+ { name: "muted", hex: "#e5e5e5" },
2713
+ { name: "text", hex: "#000000" },
2714
+ { name: "primaryForeground", hex: "#ffffff" },
2715
+ { name: "border", hex: "#525252" }
2716
+ ]
2717
+ });
2718
+
2719
+ // ../theme-core/src/palette/variants/soft-natural.ts
2720
+ var softNaturalSage = definePaletteVariant({
2721
+ id: "soft-natural-sage",
2722
+ name: "Soft Natural \u2014 Sage",
2723
+ description: "Olive sage primary on an off-white ground.",
2724
+ tags: { tone: "classic", energy: "calm", era: "organic" },
2725
+ mode: "light",
2726
+ colors: [
2727
+ { name: "primary", hex: "#3f6212" },
2728
+ { name: "secondary", hex: "#6b7280" },
2729
+ { name: "accent", hex: "#0f766e" },
2730
+ { name: "success", hex: "#15803d" },
2731
+ { name: "warning", hex: "#a16207" },
2732
+ { name: "destructive", hex: "#b91c1c" },
2733
+ { name: "background", hex: "#fbfdf7" },
2734
+ { name: "surface", hex: "#ffffff" },
2735
+ { name: "surfaceAlt", hex: "#eef5e8" },
2736
+ { name: "muted", hex: "#e7efdf" },
2737
+ { name: "text", hex: "#1f2a1d" },
2738
+ { name: "primaryForeground", hex: "#ffffff" },
2739
+ { name: "border", hex: "#cbd8c0" }
2740
+ ]
2741
+ });
2742
+ var softNaturalStone = definePaletteVariant({
2743
+ id: "soft-natural-stone",
2744
+ name: "Soft Natural \u2014 Stone",
2745
+ description: "River-stone grey-green primary with cool neutrals.",
2746
+ tags: { tone: "minimal", energy: "calm", era: "organic" },
2747
+ mode: "light",
2748
+ colors: [
2749
+ { name: "primary", hex: "#5a7a5d" },
2750
+ { name: "secondary", hex: "#8a9a8c" },
2751
+ { name: "accent", hex: "#c9b88f" },
2752
+ { name: "success", hex: "#5a7a5d" },
2753
+ { name: "warning", hex: "#a89466" },
2754
+ { name: "destructive", hex: "#a3503e" },
2755
+ { name: "background", hex: "#faf6ec" },
2756
+ { name: "surface", hex: "#ffffff" },
2757
+ { name: "surfaceAlt", hex: "#f0ecdf" },
2758
+ { name: "muted", hex: "#e6e1d0" },
2759
+ { name: "text", hex: "#2f3d31" },
2760
+ { name: "primaryForeground", hex: "#faf6ec" },
2761
+ { name: "border", hex: "#c9c1ad" }
2762
+ ]
2763
+ });
2764
+ var softNaturalWatercolor = definePaletteVariant({
2765
+ id: "soft-natural-watercolor",
2766
+ name: "Soft Natural \u2014 Watercolor",
2767
+ description: "Soft sand primary with watercolour sage accents.",
2768
+ tags: { tone: "classic", energy: "vibrant", era: "organic" },
2769
+ mode: "light",
2770
+ colors: [
2771
+ { name: "primary", hex: "#a8825f" },
2772
+ { name: "secondary", hex: "#88a888" },
2773
+ { name: "accent", hex: "#c8a78e" },
2774
+ { name: "success", hex: "#7d8a5f" },
2775
+ { name: "warning", hex: "#c89a4d" },
2776
+ { name: "destructive", hex: "#a3503e" },
2777
+ { name: "background", hex: "#fefdfa" },
2778
+ { name: "surface", hex: "#ffffff" },
2779
+ { name: "surfaceAlt", hex: "#f6f1e6" },
2780
+ { name: "muted", hex: "#eee7d1" },
2781
+ { name: "text", hex: "#4a3d30" },
2782
+ { name: "primaryForeground", hex: "#fefdfa" },
2783
+ { name: "border", hex: "#d8c9a8" }
2784
+ ]
2785
+ });
2786
+
2787
+ // ../theme-core/src/palette/variants/warm-neutral.ts
2788
+ var warmNeutralClay = definePaletteVariant({
2789
+ id: "warm-neutral-clay",
2790
+ name: "Warm Neutral \u2014 Clay",
2791
+ description: "Terracotta primary on a cream ground.",
2792
+ tags: { tone: "classic", energy: "calm", era: "organic" },
2793
+ mode: "light",
2794
+ colors: [
2795
+ { name: "primary", hex: "#8b5e34" },
2796
+ { name: "secondary", hex: "#7c6f64" },
2797
+ { name: "accent", hex: "#a15c38" },
2798
+ { name: "success", hex: "#527853" },
2799
+ { name: "warning", hex: "#b7791f" },
2800
+ { name: "destructive", hex: "#b91c1c" },
2801
+ { name: "background", hex: "#fffaf3" },
2802
+ { name: "surface", hex: "#ffffff" },
2803
+ { name: "surfaceAlt", hex: "#f5eadc" },
2804
+ { name: "muted", hex: "#efe2d0" },
2805
+ { name: "text", hex: "#2f241c" },
2806
+ { name: "primaryForeground", hex: "#fffaf3" },
2807
+ { name: "border", hex: "#d8c6b3" }
2808
+ ]
2809
+ });
2810
+ var warmNeutralCream = definePaletteVariant({
2811
+ id: "warm-neutral-cream",
2812
+ name: "Warm Neutral \u2014 Cream",
2813
+ description: "Soft sand primary with pale cream surfaces.",
2814
+ tags: { tone: "minimal", energy: "calm", era: "organic" },
2815
+ mode: "light",
2816
+ colors: [
2817
+ { name: "primary", hex: "#b08864" },
2818
+ { name: "secondary", hex: "#9a8c7e" },
2819
+ { name: "accent", hex: "#c2956a" },
2820
+ { name: "success", hex: "#7d8a5f" },
2821
+ { name: "warning", hex: "#c89a4d" },
2822
+ { name: "destructive", hex: "#a3503e" },
2823
+ { name: "background", hex: "#fdf8ee" },
2824
+ { name: "surface", hex: "#ffffff" },
2825
+ { name: "surfaceAlt", hex: "#f4ebd9" },
2826
+ { name: "muted", hex: "#ede3cf" },
2827
+ { name: "text", hex: "#3b2f24" },
2828
+ { name: "primaryForeground", hex: "#fdf8ee" },
2829
+ { name: "border", hex: "#e0d2b8" }
2830
+ ]
2831
+ });
2832
+ var warmNeutralSoftEarth = definePaletteVariant({
2833
+ id: "warm-neutral-soft-earth",
2834
+ name: "Warm Neutral \u2014 Soft Earth",
2835
+ description: "Cream ground with terracotta primary, clay accents, and olive depth.",
2836
+ tags: { tone: "classic", energy: "calm", era: "organic" },
2837
+ mode: "light",
2838
+ colors: [
2839
+ { name: "primary", hex: "#a8573d" },
2840
+ { name: "secondary", hex: "#72765c" },
2841
+ { name: "accent", hex: "#c87557" },
2842
+ { name: "success", hex: "#687854" },
2843
+ { name: "warning", hex: "#b7863e" },
2844
+ { name: "destructive", hex: "#a54b3c" },
2845
+ { name: "background", hex: "#fbf6eb" },
2846
+ { name: "surface", hex: "#fffdf7" },
2847
+ { name: "surfaceAlt", hex: "#f0e4d3" },
2848
+ { name: "muted", hex: "#eadbc6" },
2849
+ { name: "text", hex: "#30281f" },
2850
+ { name: "primaryForeground", hex: "#fffaf3" },
2851
+ { name: "border", hex: "#d9c8b2" }
2852
+ ]
2853
+ });
2854
+ var warmNeutralForest = definePaletteVariant({
2855
+ id: "warm-neutral-forest",
2856
+ name: "Warm Neutral \u2014 Forest",
2857
+ description: "Deep forest green primary with earthy neutrals.",
2858
+ tags: { tone: "classic", energy: "calm", era: "organic" },
2859
+ mode: "light",
2860
+ colors: [
2861
+ { name: "primary", hex: "#3d5840" },
2862
+ { name: "secondary", hex: "#7a6f5d" },
2863
+ { name: "accent", hex: "#b06b50" },
2864
+ { name: "success", hex: "#5a7a5d" },
2865
+ { name: "warning", hex: "#b7791f" },
2866
+ { name: "destructive", hex: "#b91c1c" },
2867
+ { name: "background", hex: "#fbf8f0" },
2868
+ { name: "surface", hex: "#ffffff" },
2869
+ { name: "surfaceAlt", hex: "#f2ecdb" },
2870
+ { name: "muted", hex: "#ebe3cc" },
2871
+ { name: "text", hex: "#2a2a2a" },
2872
+ { name: "primaryForeground", hex: "#fbf8f0" },
2873
+ { name: "border", hex: "#cdc1a4" }
2874
+ ]
2875
+ });
2876
+
2877
+ // ../theme-core/src/palette/variants/index.ts
2878
+ var paletteVariants = [
2879
+ // Brand-led family
2880
+ brandLedCool,
2881
+ brandLedWarm,
2882
+ brandLedJewel,
2883
+ brandLedBurgundyGold,
2884
+ // Warm-neutral family
2885
+ warmNeutralClay,
2886
+ warmNeutralCream,
2887
+ warmNeutralSoftEarth,
2888
+ warmNeutralForest,
2889
+ // High-contrast family
2890
+ highContrastInk,
2891
+ highContrastCharcoal,
2892
+ highContrastMonochrome,
2893
+ // Soft-natural family
2894
+ softNaturalSage,
2895
+ softNaturalStone,
2896
+ softNaturalWatercolor
2897
+ ];
2898
+ var paletteVariantsById = new Map(
2899
+ paletteVariants.map((v) => [v.id, v])
2900
+ );
2901
+
2902
+ // ../theme-core/src/accordions/siteStyleDefaults.ts
2903
+ var softEarthAccordionSystem = {
2904
+ background: {
2905
+ type: "solid",
2906
+ colorToken: "background"
2907
+ },
2908
+ spacing: "comfortable",
2909
+ corners: "square",
2910
+ border: null,
2911
+ shadow: null,
2912
+ icon: {
2913
+ style: "plus-minus",
2914
+ position: "right",
2915
+ size: "md",
2916
+ colorToken: "primary"
2917
+ },
2918
+ trigger: {
2919
+ textColorToken: "text",
2920
+ fontWeight: "medium"
2921
+ },
2922
+ hover: {
2923
+ textColorToken: "primary"
2924
+ },
2925
+ content: {
2926
+ textColorToken: "neutral-700"
2927
+ }
2928
+ };
2929
+
2930
+ // ../theme-core/src/site-styles/headerCtaVariants.ts
2931
+ function hasButtonVariant(theme, variantId) {
2932
+ return theme.buttons?.variants.some((variant) => variant.enabled && variant.id === variantId) ?? false;
2933
+ }
2934
+ function resolveHeaderCtaVariant(theme, treatment) {
2935
+ switch (treatment) {
2936
+ case "default":
2937
+ return void 0;
2938
+ case "primary":
2939
+ return "primary";
2940
+ case "secondary":
2941
+ return hasButtonVariant(theme, "secondary") ? "secondary" : "primary";
2942
+ case "inverted":
2943
+ if (hasButtonVariant(theme, "header")) return "header";
2944
+ if (hasButtonVariant(theme, "secondary")) return "secondary";
2945
+ if (hasButtonVariant(theme, "outline")) return "outline";
2946
+ return "primary";
2947
+ case "outline":
2948
+ return hasButtonVariant(theme, "outline") ? "outline" : "secondary";
2949
+ case "ghost":
2950
+ return hasButtonVariant(theme, "ghost") ? "ghost" : "secondary";
2951
+ }
2952
+ }
2953
+
2954
+ // ../theme-core/src/site-styles/headerLooks.ts
2955
+ function asHeaderLookId(value) {
2956
+ return value;
2957
+ }
2958
+ function asHeaderLayoutId(value) {
2959
+ return value;
2960
+ }
2961
+ function asHeaderStyleId(value) {
2962
+ return value;
2963
+ }
2964
+ function baseHeader(theme) {
2965
+ const {
2966
+ navLinkStyle: _navLinkStyle,
2967
+ dropdownStyle: _dropdownStyle,
2968
+ ctaVariant: _ctaVariant,
2969
+ navContainer: _navContainer,
2970
+ container: _container,
2971
+ shadow: _shadow,
2972
+ logo: _logo,
2973
+ logoText: _logoText,
2974
+ border: _border,
2975
+ ...header
2976
+ } = theme.header;
2977
+ return {
2978
+ ...header,
2979
+ navContainer: { type: "none", tint: null, opacity: 0.15 }
2980
+ };
2981
+ }
2982
+ var headerLayoutCatalog = [
2983
+ {
2984
+ id: asHeaderLayoutId("classic"),
2985
+ label: "Classic",
2986
+ description: "Logo and navigation in one practical horizontal row.",
2987
+ structure: "inline-classic",
2988
+ variant: "classic",
2989
+ defaultPositioning: "sticky",
2990
+ shrinkOnScroll: false
2991
+ },
2992
+ {
2993
+ id: asHeaderLayoutId("centered"),
2994
+ label: "Centered",
2995
+ description: "Logo centered above a balanced navigation row.",
2996
+ structure: "centered-stack",
2997
+ variant: "centered",
2998
+ defaultPositioning: "static",
2999
+ shrinkOnScroll: false,
3000
+ maxRecommendedNavItems: 5,
3001
+ allowedLogoShapes: ["none", "text-only", "horizontal", "square"]
3002
+ },
3003
+ {
3004
+ id: asHeaderLayoutId("floating"),
3005
+ label: "Floating",
3006
+ description: "Detached header chrome that sits over the opening section.",
3007
+ structure: "floating-shell",
3008
+ variant: "floating",
3009
+ defaultPositioning: "sticky",
3010
+ shrinkOnScroll: true,
3011
+ maxRecommendedNavItems: 5,
3012
+ allowedLogoShapes: ["none", "text-only", "horizontal"]
3013
+ }
3014
+ ];
3015
+ function supportedLayouts(ids) {
3016
+ return ids.map(asHeaderLayoutId);
3017
+ }
3018
+ var headerStyleCatalog = [
3019
+ {
3020
+ id: asHeaderStyleId("minimal"),
3021
+ label: "Minimal",
3022
+ description: "Quiet surface with simple color-change navigation.",
3023
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
3024
+ navInteraction: "color-change",
3025
+ surface: "neutral",
3026
+ defaultDepth: "none",
3027
+ navTypography: "plain",
3028
+ moods: ["calm", "professional", "editorial"]
3029
+ },
3030
+ {
3031
+ id: asHeaderStyleId("fine-line"),
3032
+ label: "Fine Line",
3033
+ description: "Light surface with a crisp lower rule and underline hover.",
3034
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
3035
+ navInteraction: "underline-grow",
3036
+ surface: "bordered",
3037
+ defaultDepth: "line",
3038
+ navTypography: "plain",
3039
+ moods: ["calm", "professional", "editorial"]
3040
+ },
3041
+ {
3042
+ id: asHeaderStyleId("soft-bar"),
3043
+ label: "Soft Bar",
3044
+ description: "Soft tinted surface with gentle pill hover states.",
3045
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
3046
+ navInteraction: "pill-background",
3047
+ surface: "soft",
3048
+ defaultDepth: "line",
3049
+ navTypography: "plain",
3050
+ moods: ["calm", "professional"]
3051
+ },
3052
+ {
3053
+ id: asHeaderStyleId("pill-nav"),
3054
+ label: "Pill Nav",
3055
+ description: "A calm pill navigation rail over a neutral header.",
3056
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
3057
+ navInteraction: "pill-background",
3058
+ surface: "soft",
3059
+ defaultDepth: "none",
3060
+ navTypography: "plain",
3061
+ moods: ["calm"]
3062
+ },
3063
+ {
3064
+ id: asHeaderStyleId("brand-bar"),
3065
+ label: "Brand Bar",
3066
+ description: "Solid brand surface with high-contrast navigation.",
3067
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
3068
+ navInteraction: "color-change",
3069
+ surface: "brand-solid",
3070
+ defaultDepth: "none",
3071
+ navTypography: "brand-caps",
3072
+ moods: ["professional", "expressive", "utility"]
3073
+ },
3074
+ {
3075
+ id: asHeaderStyleId("brand-underline"),
3076
+ label: "Brand Underline",
3077
+ description: "Brand surface with underline-grow navigation.",
3078
+ supportedLayoutIds: supportedLayouts(["classic"]),
3079
+ navInteraction: "underline-grow",
3080
+ surface: "brand-solid",
3081
+ defaultDepth: "none",
3082
+ navTypography: "brand-caps",
3083
+ moods: ["expressive"]
3084
+ },
3085
+ {
3086
+ id: asHeaderStyleId("brand-pill"),
3087
+ label: "Brand Pill",
3088
+ description: "Solid brand surface with rounded active and hover states.",
3089
+ supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
3090
+ navInteraction: "pill-background",
3091
+ surface: "brand-solid",
3092
+ defaultDepth: "none",
3093
+ navTypography: "brand-caps",
3094
+ moods: ["expressive"]
3095
+ },
3096
+ {
3097
+ id: asHeaderStyleId("serif-line"),
3098
+ label: "Serif Line",
3099
+ description: "Typographic logo treatment with understated underline navigation.",
3100
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
3101
+ navInteraction: "underline-grow",
3102
+ surface: "bordered",
3103
+ defaultDepth: "line",
3104
+ navTypography: "heading",
3105
+ moods: ["editorial", "calm"]
3106
+ },
3107
+ {
3108
+ id: asHeaderStyleId("flat-tabs"),
3109
+ label: "Flat Tabs",
3110
+ description: "Flat block hover and active states with a Swiss utility feel.",
3111
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
3112
+ navInteraction: "flat-block",
3113
+ surface: "bordered",
3114
+ defaultDepth: "shadow",
3115
+ navTypography: "quiet-caps",
3116
+ moods: ["professional", "utility", "expressive"]
3117
+ },
3118
+ {
3119
+ id: asHeaderStyleId("glass"),
3120
+ label: "Glass",
3121
+ description: "Translucent chrome with frosted navigation backing.",
3122
+ supportedLayoutIds: supportedLayouts(["floating"]),
3123
+ navInteraction: "glass-backed",
3124
+ surface: "floating",
3125
+ defaultDepth: "shadow",
3126
+ navTypography: "plain",
3127
+ moods: ["expressive", "calm"]
3128
+ },
3129
+ {
3130
+ id: asHeaderStyleId("minimal-surface"),
3131
+ label: "Clear Split",
3132
+ description: "Floating logo with transparent navigation and no shared shell.",
3133
+ supportedLayoutIds: supportedLayouts(["floating"]),
3134
+ navInteraction: "color-change",
3135
+ surface: "floating",
3136
+ defaultDepth: "none",
3137
+ navTypography: "plain",
3138
+ moods: ["editorial", "calm"]
3139
+ },
3140
+ {
3141
+ id: asHeaderStyleId("soft-shell"),
3142
+ label: "Soft Shell",
3143
+ description: "Floating rounded shell with soft pill navigation states.",
3144
+ supportedLayoutIds: supportedLayouts(["floating"]),
3145
+ navInteraction: "pill-background",
3146
+ surface: "floating",
3147
+ defaultDepth: "shadow",
3148
+ navTypography: "plain",
3149
+ moods: ["calm", "professional"]
3150
+ },
3151
+ {
3152
+ id: asHeaderStyleId("split-glass"),
3153
+ label: "Split Glass",
3154
+ description: "Logo floats independently while the navigation sits in a glass rail.",
3155
+ supportedLayoutIds: supportedLayouts(["floating"]),
3156
+ navInteraction: "glass-backed",
3157
+ surface: "floating",
3158
+ defaultDepth: "shadow",
3159
+ navTypography: "quiet-caps",
3160
+ moods: ["expressive"]
3161
+ },
3162
+ {
3163
+ id: asHeaderStyleId("split-pill"),
3164
+ label: "Split Pill",
3165
+ description: "Logo floats independently with a soft pill-backed navigation rail.",
3166
+ supportedLayoutIds: supportedLayouts(["floating"]),
3167
+ navInteraction: "pill-background",
3168
+ surface: "floating",
3169
+ defaultDepth: "shadow",
3170
+ navTypography: "heading",
3171
+ moods: ["calm", "editorial"]
3172
+ }
3173
+ ];
3174
+ var headerLayoutsById = new Map(
3175
+ headerLayoutCatalog.map((layout) => [layout.id, layout])
3176
+ );
3177
+ var headerStylesById = new Map(
3178
+ headerStyleCatalog.map((style) => [style.id, style])
3179
+ );
3180
+ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
3181
+ [
3182
+ asHeaderLayoutId("classic"),
3183
+ headerStyleRepairChain([
3184
+ "minimal",
3185
+ "fine-line",
3186
+ "soft-bar",
3187
+ "pill-nav",
3188
+ "brand-bar",
3189
+ "brand-underline",
3190
+ "brand-pill",
3191
+ "serif-line",
3192
+ "flat-tabs"
3193
+ ])
3194
+ ],
3195
+ [
3196
+ asHeaderLayoutId("centered"),
3197
+ headerStyleRepairChain([
3198
+ "minimal",
3199
+ "fine-line",
3200
+ "soft-bar",
3201
+ "pill-nav",
3202
+ "brand-bar",
3203
+ "brand-pill",
3204
+ "serif-line",
3205
+ "flat-tabs"
3206
+ ])
3207
+ ],
3208
+ [
3209
+ asHeaderLayoutId("floating"),
3210
+ headerStyleRepairChain([
3211
+ "glass",
3212
+ "minimal-surface",
3213
+ "split-glass",
3214
+ "split-pill",
3215
+ "soft-shell",
3216
+ "brand-pill"
3217
+ ])
3218
+ ]
3219
+ ]);
3220
+ function headerStyleRepairChain(values) {
3221
+ return values.map(asHeaderStyleId);
3222
+ }
3223
+ var headerStyleRepairOrder = /* @__PURE__ */ new Map(
3224
+ [
3225
+ [
3226
+ asHeaderStyleId("brand-bar"),
3227
+ headerStyleRepairChain(["brand-bar", "brand-pill", "minimal"])
3228
+ ],
3229
+ [
3230
+ asHeaderStyleId("brand-underline"),
3231
+ headerStyleRepairChain(["serif-line", "fine-line", "minimal"])
3232
+ ],
3233
+ [
3234
+ asHeaderStyleId("brand-pill"),
3235
+ headerStyleRepairChain(["brand-pill", "brand-bar", "minimal"])
3236
+ ],
3237
+ [
3238
+ asHeaderStyleId("pill-nav"),
3239
+ headerStyleRepairChain(["pill-nav", "soft-bar", "minimal"])
3240
+ ],
3241
+ [
3242
+ asHeaderStyleId("flat-tabs"),
3243
+ headerStyleRepairChain(["flat-tabs", "pill-nav", "minimal"])
3244
+ ],
3245
+ [
3246
+ asHeaderStyleId("serif-line"),
3247
+ headerStyleRepairChain(["serif-line", "fine-line", "minimal"])
3248
+ ],
3249
+ [
3250
+ asHeaderStyleId("glass"),
3251
+ headerStyleRepairChain([
3252
+ "glass",
3253
+ "soft-shell",
3254
+ "fine-line",
3255
+ "minimal-surface",
3256
+ "minimal"
3257
+ ])
3258
+ ],
3259
+ [
3260
+ asHeaderStyleId("soft-shell"),
3261
+ headerStyleRepairChain(["soft-shell", "soft-bar", "minimal"])
3262
+ ],
3263
+ [
3264
+ asHeaderStyleId("minimal-surface"),
3265
+ headerStyleRepairChain(["minimal-surface", "minimal"])
3266
+ ],
3267
+ [
3268
+ asHeaderStyleId("split-glass"),
3269
+ headerStyleRepairChain(["split-glass", "glass", "minimal-surface"])
3270
+ ],
3271
+ [
3272
+ asHeaderStyleId("split-pill"),
3273
+ headerStyleRepairChain(["split-pill", "soft-shell", "brand-pill"])
3274
+ ],
3275
+ [
3276
+ asHeaderStyleId("fine-line"),
3277
+ headerStyleRepairChain(["fine-line", "minimal"])
3278
+ ],
3279
+ [
3280
+ asHeaderStyleId("soft-bar"),
3281
+ headerStyleRepairChain(["soft-bar", "minimal"])
3282
+ ],
3283
+ [asHeaderStyleId("minimal"), headerStyleRepairChain(["minimal"])]
3284
+ ]
3285
+ );
3286
+ var legacyHeaderLookAliases = [
3287
+ {
3288
+ lookId: asHeaderLookId("clean-base"),
3289
+ selection: {
3290
+ layoutId: asHeaderLayoutId("classic"),
3291
+ styleId: asHeaderStyleId("minimal")
3292
+ }
3293
+ },
3294
+ {
3295
+ lookId: asHeaderLookId("brand-solid"),
3296
+ selection: {
3297
+ layoutId: asHeaderLayoutId("classic"),
3298
+ styleId: asHeaderStyleId("brand-bar")
3299
+ }
3300
+ },
3301
+ {
3302
+ lookId: asHeaderLookId("serif-line"),
3303
+ selection: {
3304
+ layoutId: asHeaderLayoutId("centered"),
3305
+ styleId: asHeaderStyleId("serif-line")
3306
+ }
3307
+ },
3308
+ {
3309
+ lookId: asHeaderLookId("centered-calm"),
3310
+ selection: {
3311
+ layoutId: asHeaderLayoutId("centered"),
3312
+ styleId: asHeaderStyleId("minimal")
3313
+ }
3314
+ },
3315
+ {
3316
+ lookId: asHeaderLookId("practical-utility"),
3317
+ selection: {
3318
+ layoutId: asHeaderLayoutId("classic"),
3319
+ styleId: asHeaderStyleId("flat-tabs")
3320
+ }
3321
+ },
3322
+ {
3323
+ lookId: asHeaderLookId("minimal-transparent"),
3324
+ selection: {
3325
+ layoutId: asHeaderLayoutId("classic"),
3326
+ styleId: asHeaderStyleId("minimal")
3327
+ }
3328
+ },
3329
+ {
3330
+ lookId: asHeaderLookId("transparent-overlay"),
3331
+ selection: {
3332
+ layoutId: asHeaderLayoutId("floating"),
3333
+ styleId: asHeaderStyleId("glass")
3334
+ }
3335
+ },
3336
+ {
3337
+ lookId: asHeaderLookId("floating-glass"),
3338
+ selection: {
3339
+ layoutId: asHeaderLayoutId("floating"),
3340
+ styleId: asHeaderStyleId("glass")
3341
+ }
3342
+ }
3343
+ ];
3344
+ var legacyHeaderLookAliasesById = new Map(legacyHeaderLookAliases.map((alias) => [alias.lookId, alias]));
3345
+ function getHeaderStyle(id) {
3346
+ return headerStylesById.get(id) ?? null;
3347
+ }
3348
+ function isHeaderStyleCompatibleWithLayout(style, layoutId) {
3349
+ return style.supportedLayoutIds.includes(layoutId);
3350
+ }
3351
+ function getHeaderStyleOrThrow(id) {
3352
+ const style = getHeaderStyle(id);
3353
+ if (!style) {
3354
+ throw new Error(`Unknown Theme V2 header style: ${id}`);
3355
+ }
3356
+ return style;
3357
+ }
3358
+ function resolveLegacyHeaderLookAlias(lookId) {
3359
+ return legacyHeaderLookAliasesById.get(lookId)?.selection ?? null;
3360
+ }
3361
+ function getCompatibleHeaderStyleIds(layoutId) {
3362
+ return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter(
3363
+ (styleId) => {
3364
+ const style = getHeaderStyleOrThrow(styleId);
3365
+ return isHeaderStyleCompatibleWithLayout(style, layoutId);
3366
+ }
3367
+ );
3368
+ }
3369
+ function themedHeaderShadow(theme) {
3370
+ switch (theme.shadow.elevation) {
3371
+ case "none":
3372
+ return void 0;
3373
+ case "low":
3374
+ return { elevation: "sm" };
3375
+ case "medium":
3376
+ return { elevation: "md" };
3377
+ case "high":
3378
+ return { elevation: "lg" };
3379
+ default:
3380
+ return assertNever(
3381
+ theme.shadow.elevation,
3382
+ "Unhandled theme shadow elevation"
3383
+ );
3384
+ }
3385
+ }
3386
+ function solidBrandHeader(theme) {
3387
+ const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
3388
+ return {
3389
+ ...baseHeader(theme),
3390
+ variant: "classic",
3391
+ positioning: "sticky",
3392
+ shrinkOnScroll: true,
3393
+ background: {
3394
+ type: "color",
3395
+ color: "primary"
3396
+ },
3397
+ textColor: "primaryForeground",
3398
+ navColor: "primaryForeground",
3399
+ navStyle: "underline-grow",
3400
+ navWeight: "bold",
3401
+ navLinkStyle: {
3402
+ typography: "body",
3403
+ fontWeight: "bold",
3404
+ textTransform: "uppercase",
3405
+ italic: false,
3406
+ colorToken: "primaryForeground",
3407
+ hoverColorToken: "secondary",
3408
+ textSize: "sm",
3409
+ letterSpacing: "wider",
3410
+ padding: "compact",
3411
+ paddingX: "compact",
3412
+ borderRadius: "none",
3413
+ effects: {
3414
+ hover: [
3415
+ {
3416
+ effectId: "text-color-change",
3417
+ options: { hoverColorToken: "secondary" }
3418
+ },
3419
+ {
3420
+ effectId: "nav-underline",
3421
+ options: { style: "grow", colorToken: "secondary" }
3422
+ }
3423
+ ]
3424
+ }
3425
+ },
3426
+ dropdownStyle: {
3427
+ background: "primary-700",
3428
+ textColor: "primaryForeground",
3429
+ borderColor: null,
3430
+ shadow: "md",
3431
+ borderRadius: "md",
3432
+ hoverBackground: "primary-900",
3433
+ hoverTextColor: "secondary",
3434
+ textTransform: "uppercase",
3435
+ letterSpacing: "wider",
3436
+ fontWeight: "bold",
3437
+ textSize: "sm"
3438
+ },
3439
+ border: {
3440
+ style: "solid",
3441
+ width: "none",
3442
+ position: "none"
3443
+ },
3444
+ logoText: {
3445
+ hideOnShrink: true,
3446
+ mobileMaxWidth: "sm",
3447
+ mobileWrapLines: 2
3448
+ },
3449
+ ctaGap: "compact",
3450
+ ctaTreatment: "inverted",
3451
+ ...ctaVariant ? { ctaVariant } : {}
3452
+ };
3453
+ }
3454
+ function cleanBaseHeader(theme) {
3455
+ return {
3456
+ ...baseHeader(theme),
3457
+ variant: "classic",
3458
+ positioning: "sticky",
3459
+ shrinkOnScroll: false,
3460
+ background: {
3461
+ type: "color",
3462
+ color: "surface"
3463
+ },
3464
+ textColor: "text",
3465
+ navColor: "text",
3466
+ navStyle: "minimal",
3467
+ navWeight: "medium",
3468
+ border: {
3469
+ style: "solid",
3470
+ width: "thin",
3471
+ position: "bottom",
3472
+ colorToken: "border"
3473
+ },
3474
+ ctaTreatment: "default",
3475
+ ctaGap: "default"
3476
+ };
3477
+ }
3478
+ function serifLineHeader(theme) {
3479
+ return {
3480
+ ...baseHeader(theme),
3481
+ variant: "centered",
3482
+ positioning: "sticky",
3483
+ shrinkOnScroll: false,
3484
+ background: {
3485
+ type: "color",
3486
+ color: "background"
3487
+ },
3488
+ textColor: "text",
3489
+ navColor: "text",
3490
+ navStyle: "underline-grow",
3491
+ navWeight: "medium",
3492
+ logo: {
3493
+ fontFamily: "heading",
3494
+ letterSpacing: "wide",
3495
+ gradient: false
3496
+ },
3497
+ ctaTreatment: "outline",
3498
+ ctaVariant: resolveHeaderCtaVariant(theme, "outline"),
3499
+ ctaGap: "relaxed"
3500
+ };
3501
+ }
3502
+ function centeredCalmHeader(theme) {
3503
+ return {
3504
+ ...baseHeader(theme),
3505
+ variant: "centered",
3506
+ positioning: "static",
3507
+ shrinkOnScroll: false,
3508
+ background: {
3509
+ type: "color",
3510
+ color: "surface"
3511
+ },
3512
+ textColor: "text",
3513
+ navColor: "text",
3514
+ navStyle: "minimal",
3515
+ navWeight: "medium",
3516
+ ctaTreatment: "ghost",
3517
+ ctaVariant: resolveHeaderCtaVariant(theme, "ghost"),
3518
+ ctaGap: "none"
3519
+ };
3520
+ }
3521
+ function practicalUtilityHeader(theme) {
3522
+ return {
3523
+ ...baseHeader(theme),
3524
+ variant: "classic",
3525
+ positioning: "sticky",
3526
+ shrinkOnScroll: true,
3527
+ background: {
3528
+ type: "color",
3529
+ color: "surface"
3530
+ },
3531
+ textColor: "text",
3532
+ navColor: "text",
3533
+ navStyle: "solid",
3534
+ navWeight: "semibold",
3535
+ shadow: themedHeaderShadow(theme),
3536
+ border: {
3537
+ style: "solid",
3538
+ width: "thin",
3539
+ position: "bottom",
3540
+ colorToken: "border"
3541
+ },
3542
+ ctaTreatment: "primary",
3543
+ ctaVariant: resolveHeaderCtaVariant(theme, "primary"),
3544
+ ctaGap: "compact",
3545
+ logoText: {
3546
+ mobileMaxWidth: "sm",
3547
+ mobileWrapLines: 1,
3548
+ hideOnShrink: false
3549
+ }
3550
+ };
3551
+ }
3552
+ function minimalTransparentHeader(theme) {
3553
+ return {
3554
+ ...baseHeader(theme),
3555
+ variant: "classic",
3556
+ positioning: "static",
3557
+ shrinkOnScroll: false,
3558
+ background: {
3559
+ type: "color",
3560
+ color: "transparent"
3561
+ },
3562
+ textColor: "text",
3563
+ navColor: "text",
3564
+ navStyle: "underline",
3565
+ navWeight: "medium",
3566
+ border: {
3567
+ style: "solid",
3568
+ width: "none",
3569
+ position: "none"
3570
+ },
3571
+ ctaTreatment: "outline",
3572
+ ctaVariant: resolveHeaderCtaVariant(theme, "outline"),
3573
+ ctaGap: "default"
3574
+ };
3575
+ }
3576
+ function transparentOverlayHeader(theme) {
3577
+ return {
3578
+ ...baseHeader(theme),
3579
+ variant: "transparent",
3580
+ positioning: "fixed",
3581
+ shrinkOnScroll: true,
3582
+ background: {
3583
+ type: "color",
3584
+ color: "transparent"
3585
+ },
3586
+ textColor: "background",
3587
+ navColor: "background",
3588
+ navStyle: "frosted",
3589
+ navWeight: "semibold",
3590
+ border: {
3591
+ style: "solid",
3592
+ width: "none",
3593
+ position: "none"
3594
+ },
3595
+ ctaTreatment: "inverted",
3596
+ ctaVariant: resolveHeaderCtaVariant(theme, "inverted"),
3597
+ ctaGap: "compact"
3598
+ };
3599
+ }
3600
+ function floatingGlassHeader(theme) {
3601
+ return {
3602
+ ...transparentOverlayHeader(theme),
3603
+ variant: "floating",
3604
+ positioning: "sticky",
3605
+ navStyle: "frosted",
3606
+ navContainer: {
3607
+ type: "glass",
3608
+ tint: "text",
3609
+ opacity: 0.16
3610
+ },
3611
+ container: {
3612
+ rounded: "2xl",
3613
+ border: true,
3614
+ shadow: true,
3615
+ padding: "sm",
3616
+ tint: "background",
3617
+ opacity: 0.12
3618
+ }
3619
+ };
3620
+ }
3621
+ var headerLookCatalog = [
3622
+ {
3623
+ id: asHeaderLookId("clean-base"),
3624
+ label: "Clean base",
3625
+ visualTreatment: "solid-neutral",
3626
+ layoutBehavior: "sticky",
3627
+ configuration: {
3628
+ structure: "inline-classic",
3629
+ treatment: "solid-neutral",
3630
+ behavior: "sticky"
3631
+ },
3632
+ openingRequirement: "none",
3633
+ compile: cleanBaseHeader
3634
+ },
3635
+ {
3636
+ id: asHeaderLookId("brand-solid"),
3637
+ label: "Brand solid",
3638
+ visualTreatment: "solid-brand",
3639
+ layoutBehavior: "sticky-shrink",
3640
+ configuration: {
3641
+ structure: "inline-classic",
3642
+ treatment: "solid-brand",
3643
+ behavior: "sticky-shrink"
3644
+ },
3645
+ openingRequirement: "none",
3646
+ compile: solidBrandHeader
3647
+ },
3648
+ {
3649
+ id: asHeaderLookId("serif-line"),
3650
+ label: "Serif line",
3651
+ visualTreatment: "light-serif",
3652
+ layoutBehavior: "sticky",
3653
+ configuration: {
3654
+ structure: "centered-stack",
3655
+ treatment: "light-serif",
3656
+ behavior: "sticky"
3657
+ },
3658
+ openingRequirement: "none",
3659
+ maxRecommendedNavItems: 6,
3660
+ compile: serifLineHeader
3661
+ },
3662
+ {
3663
+ id: asHeaderLookId("centered-calm"),
3664
+ label: "Centered calm",
3665
+ visualTreatment: "light-serif",
3666
+ layoutBehavior: "normal-flow",
3667
+ configuration: {
3668
+ structure: "centered-stack",
3669
+ treatment: "light-serif",
3670
+ behavior: "normal-flow"
3671
+ },
3672
+ openingRequirement: "none",
3673
+ maxRecommendedNavItems: 5,
3674
+ allowedLogoShapes: ["none", "text-only", "horizontal", "square"],
3675
+ compile: centeredCalmHeader
3676
+ },
3677
+ {
3678
+ id: asHeaderLookId("practical-utility"),
3679
+ label: "Practical utility",
3680
+ visualTreatment: "solid-neutral",
3681
+ layoutBehavior: "sticky-shrink",
3682
+ configuration: {
3683
+ structure: "inline-classic",
3684
+ treatment: "solid-neutral",
3685
+ behavior: "sticky-shrink"
3686
+ },
3687
+ openingRequirement: "none",
3688
+ requiresProminentCta: true,
3689
+ compile: practicalUtilityHeader
3690
+ },
3691
+ {
3692
+ id: asHeaderLookId("minimal-transparent"),
3693
+ label: "Minimal transparent",
3694
+ visualTreatment: "minimal-transparent",
3695
+ layoutBehavior: "normal-flow",
3696
+ configuration: {
3697
+ structure: "inline-classic",
3698
+ treatment: "minimal-transparent",
3699
+ behavior: "normal-flow"
3700
+ },
3701
+ openingRequirement: "reserved-space-ok",
3702
+ compile: minimalTransparentHeader
3703
+ },
3704
+ {
3705
+ id: asHeaderLookId("transparent-overlay"),
3706
+ label: "Transparent overlay",
3707
+ visualTreatment: "transparent-overlay",
3708
+ layoutBehavior: "fixed-overlay",
3709
+ configuration: {
3710
+ structure: "inline-classic",
3711
+ treatment: "transparent-overlay",
3712
+ behavior: "fixed-overlay"
3713
+ },
3714
+ openingRequirement: "requires-image-hero-with-contrast-overlay",
3715
+ maxRecommendedNavItems: 5,
3716
+ allowedLogoShapes: ["none", "text-only", "horizontal"],
3717
+ compile: transparentOverlayHeader
3718
+ },
3719
+ {
3720
+ id: asHeaderLookId("floating-glass"),
3721
+ label: "Floating glass",
3722
+ visualTreatment: "floating-glass",
3723
+ layoutBehavior: "fixed-floating",
3724
+ configuration: {
3725
+ structure: "floating-shell",
3726
+ treatment: "floating-glass",
3727
+ behavior: "fixed-floating"
3728
+ },
3729
+ openingRequirement: "requires-image-hero-with-contrast-overlay",
3730
+ maxRecommendedNavItems: 5,
3731
+ allowedLogoShapes: ["none", "text-only", "horizontal"],
3732
+ compile: floatingGlassHeader
3733
+ }
3734
+ ];
3735
+ var guaranteedFallbackHeaderLookId = asHeaderLookId("clean-base");
3736
+ var guaranteedFallbackHeaderLayoutId = asHeaderLayoutId("classic");
3737
+ var guaranteedFallbackHeaderStyleId = asHeaderStyleId("minimal");
3738
+ var allowedHeaderConfigurationKeys = new Set(
3739
+ headerLookCatalog.map((look) => headerConfigurationKey(look.configuration))
3740
+ );
3741
+ var headerLooksById = new Map(
3742
+ headerLookCatalog.map((look) => [look.id, look])
3743
+ );
3744
+ function headerConfigurationKey(configuration) {
3745
+ return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
3746
+ }
3747
+
3748
+ // ../theme-core/src/site-styles/footerLooks.ts
3749
+ function asFooterLookId(value) {
3750
+ return value;
3751
+ }
3752
+ var guaranteedFallbackFooterLookId = asFooterLookId("footer-muted-grounding");
3753
+ function mutedGroundingFooter(theme) {
3754
+ return theme.footer;
3755
+ }
3756
+ function brandTwoBandFooter(theme) {
3757
+ return {
3758
+ ...theme.footer,
3759
+ variant: "split",
3760
+ maxWidth: "container",
3761
+ background: {
3762
+ type: "color",
3763
+ color: "primary-800"
3764
+ },
3765
+ navStyle: "minimal",
3766
+ navWeight: "medium",
3767
+ navColor: "primaryForeground",
3768
+ navLinkStyle: {
3769
+ typography: "body",
3770
+ fontWeight: "medium",
3771
+ textTransform: "none",
3772
+ italic: false,
3773
+ colorToken: "primaryForeground",
3774
+ hoverColorToken: "secondary",
3775
+ padding: "none",
3776
+ borderRadius: "none"
3777
+ },
3778
+ bottomTextLinkStyle: {
3779
+ colorToken: "secondary",
3780
+ decorationColorToken: "secondary"
3781
+ },
3782
+ navLayout: {
3783
+ layout: "inline-wrap",
3784
+ align: "start",
3785
+ gapX: "default",
3786
+ gapY: "tight"
3787
+ },
3788
+ logo: {
3789
+ showLogo: true,
3790
+ showLogoText: false,
3791
+ placement: "left",
3792
+ size: "sm",
3793
+ align: "start"
3794
+ },
3795
+ bottomBar: {
3796
+ enabled: true,
3797
+ fullBleed: true,
3798
+ background: {
3799
+ type: "color",
3800
+ color: "primary-900"
3801
+ },
3802
+ textColor: "primaryForeground",
3803
+ textAlign: "center",
3804
+ paddingX: "default",
3805
+ paddingY: "compact",
3806
+ borderTop: {
3807
+ width: "none"
3808
+ }
3809
+ }
3810
+ };
3811
+ }
3812
+ var footerLookCatalog = [
3813
+ {
3814
+ id: asFooterLookId("footer-muted-grounding"),
3815
+ label: "Muted grounding footer",
3816
+ compile: mutedGroundingFooter
3817
+ },
3818
+ {
3819
+ id: asFooterLookId("site-footer-brand-two-band"),
3820
+ label: "Two-band brand footer",
3821
+ maxRecommendedNavDensity: "balanced",
3822
+ allowedContentPresence: ["default-footer", "default-and-blocks"],
3823
+ compile: brandTwoBandFooter
3824
+ }
3825
+ ];
3826
+ var footerLooksById = new Map(
3827
+ footerLookCatalog.map((look) => [look.id, look])
3828
+ );
3829
+
3830
+ // ../theme-core/src/site-styles/sourceCatalogs.ts
3831
+ var generatedContentFrames = [
3832
+ plainFrame,
3833
+ panelFrame("inset"),
3834
+ panelFrame("raised"),
3835
+ flushPanelFrame({ bleed: "start" })
3836
+ ];
3837
+ var userContentFrames = [
3838
+ ...generatedContentFrames,
3839
+ panelFrame("editorial"),
3840
+ flushPanelFrame({ bleed: "end" }),
3841
+ flushPanelFrame({ bleed: "both" })
3842
+ ];
3843
+ var generatedDesignOptionCatalog = {
3844
+ source: "generated",
3845
+ sectionSurfaces: ["base", "muted-band", "accent-band", "brand-depth-band", "hero-image"],
3846
+ contentFrames: generatedContentFrames,
3847
+ itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
3848
+ transitions: ["none", "soft-fade-short", "soft-fade-long"],
3849
+ emphases: ["low", "medium", "high"],
3850
+ detachedCustom: false
3851
+ };
3852
+ var userDesignOptionCatalog = {
3853
+ source: "user",
3854
+ sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
3855
+ contentFrames: userContentFrames,
3856
+ itemSurfaces: [
3857
+ ...generatedDesignOptionCatalog.itemSurfaces,
3858
+ "inset",
3859
+ "editorial"
3860
+ ],
3861
+ transitions: [
3862
+ ...generatedDesignOptionCatalog.transitions,
3863
+ "wave-edge",
3864
+ "angle-edge"
3865
+ ],
3866
+ emphases: generatedDesignOptionCatalog.emphases,
3867
+ detachedCustom: false
3868
+ };
3869
+ var advancedDesignOptionCatalog = {
3870
+ source: "advanced",
3871
+ sectionSurfaces: userDesignOptionCatalog.sectionSurfaces,
3872
+ contentFrames: userDesignOptionCatalog.contentFrames,
3873
+ itemSurfaces: userDesignOptionCatalog.itemSurfaces,
3874
+ transitions: userDesignOptionCatalog.transitions,
3875
+ emphases: userDesignOptionCatalog.emphases,
3876
+ detachedCustom: true
3877
+ };
3878
+
3879
+ // ../theme-core/src/site-styles/typographyPresets.ts
3880
+ var bodyReadablePolicy = {
3881
+ recommendedCategories: ["sans-serif", "serif"],
3882
+ allowedCategories: ["sans-serif", "serif"],
3883
+ requiresItalicForBody: true,
3884
+ requiresBoldForBody: true
3885
+ };
3886
+ var headingFlexiblePolicy = {
3887
+ recommendedCategories: ["sans-serif", "serif", "display"],
3888
+ allowedCategories: ["sans-serif", "serif", "display"]
3889
+ };
3890
+ var displayHeadingPolicy = {
3891
+ recommendedCategories: ["display", "sans-serif", "serif"],
3892
+ allowedCategories: ["display", "sans-serif", "serif"]
3893
+ };
3894
+ function asTypographyPresetId(value) {
3895
+ if (!value.startsWith("typography-preset:")) {
3896
+ throw new Error(`TypographyPresetId must start with "typography-preset:". Received: ${value}`);
3897
+ }
3898
+ return value;
3899
+ }
3900
+ function defineTypographyPreset(preset) {
3901
+ return {
3902
+ ...preset,
3903
+ id: asTypographyPresetId(preset.id)
3904
+ };
3905
+ }
3906
+ var modernSansTypography = {
3907
+ body: {
3908
+ family: "Inter, system-ui, sans-serif",
3909
+ size: "md",
3910
+ weight: "regular",
3911
+ lineHeight: "relaxed",
3912
+ letterSpacing: "normal"
3913
+ },
3914
+ headings: {
3915
+ default: {
3916
+ family: "Inter, system-ui, sans-serif",
3917
+ weight: "semibold",
3918
+ lineHeight: "normal",
3919
+ letterSpacing: "tight",
3920
+ italic: null,
3921
+ case: null
3922
+ },
3923
+ h1: { size: "xl", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null },
3924
+ h2: { size: "lg", weight: "semibold", lineHeight: "normal", letterSpacing: "tight", italic: null },
3925
+ h3: { size: "md", weight: "semibold", lineHeight: "normal", letterSpacing: "normal", italic: null }
3926
+ },
3927
+ scale: "balanced"
3928
+ };
3929
+ var warmRoundedTypography = {
3930
+ body: {
3931
+ family: "Nunito Sans, system-ui, sans-serif",
3932
+ size: "lg",
3933
+ weight: "regular",
3934
+ lineHeight: "relaxed",
3935
+ letterSpacing: "normal"
3936
+ },
3937
+ headings: {
3938
+ default: {
3939
+ family: "Nunito Sans, system-ui, sans-serif",
3940
+ weight: "bold",
3941
+ lineHeight: "normal",
3942
+ letterSpacing: "normal",
3943
+ italic: null,
3944
+ case: null
3945
+ },
3946
+ h1: { size: "xl", weight: "bold", lineHeight: "normal", letterSpacing: "normal", italic: null },
3947
+ h2: { size: "lg", weight: "bold", lineHeight: "normal", letterSpacing: "normal", italic: null },
3948
+ h3: { size: "md", weight: "semibold", lineHeight: "relaxed", letterSpacing: "normal", italic: null }
3949
+ },
3950
+ scale: "balanced"
3951
+ };
3952
+ var editorialSerifTypography = {
3953
+ body: {
3954
+ family: "Lora, Georgia, serif",
3955
+ size: "lg",
3956
+ weight: "regular",
3957
+ lineHeight: "loose",
3958
+ letterSpacing: "normal"
3959
+ },
3960
+ headings: {
3961
+ default: {
3962
+ family: "Playfair Display, Georgia, serif",
3963
+ weight: "semibold",
3964
+ lineHeight: "normal",
3965
+ letterSpacing: "tight",
3966
+ italic: null,
3967
+ case: null
3968
+ },
3969
+ h1: { size: "2xl", weight: "semibold", lineHeight: "normal", letterSpacing: "tight", italic: null },
3970
+ h2: { size: "xl", weight: "semibold", lineHeight: "normal", letterSpacing: "normal", italic: null },
3971
+ h3: { size: "md", weight: "semibold", lineHeight: "relaxed", letterSpacing: "normal", italic: true }
3972
+ },
3973
+ scale: "spacious"
3974
+ };
3975
+ var classicSerifTypography = {
3976
+ body: {
3977
+ family: "Libre Baskerville, Georgia, serif",
3978
+ size: "md",
3979
+ weight: "regular",
3980
+ lineHeight: "relaxed",
3981
+ letterSpacing: "normal"
3982
+ },
3983
+ headings: {
3984
+ default: {
3985
+ family: "Cormorant Garamond, Georgia, serif",
3986
+ weight: "semibold",
3987
+ lineHeight: "normal",
3988
+ letterSpacing: "normal",
3989
+ italic: null,
3990
+ case: null
3991
+ },
3992
+ h1: { size: "2xl", weight: "semibold", lineHeight: "normal", letterSpacing: "normal", italic: null },
3993
+ h2: { size: "xl", weight: "semibold", lineHeight: "normal", letterSpacing: "normal", italic: null },
3994
+ h3: { size: "md", weight: "medium", lineHeight: "relaxed", letterSpacing: "normal", italic: null }
3995
+ },
3996
+ scale: "balanced"
3997
+ };
3998
+ var luxeContrastTypography = {
3999
+ body: {
4000
+ family: "Manrope, system-ui, sans-serif",
4001
+ size: "md",
4002
+ weight: "regular",
4003
+ lineHeight: "relaxed",
4004
+ letterSpacing: "normal"
4005
+ },
4006
+ headings: {
4007
+ default: {
4008
+ family: "Cormorant Garamond, Georgia, serif",
4009
+ weight: "semibold",
4010
+ lineHeight: "normal",
4011
+ letterSpacing: "tight",
4012
+ italic: null,
4013
+ case: null
4014
+ },
4015
+ h1: { size: "2xl", weight: "semibold", lineHeight: "normal", letterSpacing: "tight", italic: null },
4016
+ h2: { size: "xl", weight: "semibold", lineHeight: "normal", letterSpacing: "tight", italic: null },
4017
+ h3: { size: "md", weight: "medium", lineHeight: "relaxed", letterSpacing: "normal", italic: null }
4018
+ },
4019
+ scale: "spacious"
4020
+ };
4021
+ var boldDisplayTypography = {
4022
+ body: {
4023
+ family: "Manrope, system-ui, sans-serif",
4024
+ size: "lg",
4025
+ weight: "regular",
4026
+ lineHeight: "relaxed",
4027
+ letterSpacing: "normal"
4028
+ },
4029
+ headings: {
4030
+ default: {
4031
+ family: '"TAN - PEARL", sans-serif',
4032
+ weight: "bold",
4033
+ lineHeight: "normal",
4034
+ letterSpacing: "tight",
4035
+ colorToken: "primary",
4036
+ italic: null,
4037
+ case: null
4038
+ },
4039
+ h1: { size: "xl", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null },
4040
+ h2: { size: "lg", weight: "bold", lineHeight: "normal", letterSpacing: "normal", italic: null },
4041
+ h3: { size: "md", weight: "bold", lineHeight: "normal", letterSpacing: "normal", italic: null }
4042
+ },
4043
+ scale: "balanced"
4044
+ };
4045
+ var typographyPresets = [
4046
+ defineTypographyPreset({
4047
+ id: "typography-preset:modern-sans",
4048
+ name: "Modern Sans",
4049
+ description: "Crisp, neutral type for clear service pages and practical editorial structure.",
4050
+ defaultFonts: { body: "Inter, system-ui, sans-serif", heading: "Inter, system-ui, sans-serif" },
4051
+ recommendedFonts: {
4052
+ body: ["Inter", "Source Sans 3", "IBM Plex Sans"],
4053
+ heading: ["Inter", "Manrope", "Source Sans 3"]
4054
+ },
4055
+ slotPolicies: { body: bodyReadablePolicy, heading: headingFlexiblePolicy },
4056
+ typography: modernSansTypography
4057
+ }),
4058
+ defineTypographyPreset({
4059
+ id: "typography-preset:warm-rounded",
4060
+ name: "Warm Rounded",
4061
+ description: "Soft, friendly type for welcoming studios, classes, and community businesses.",
4062
+ defaultFonts: { body: "Nunito Sans, system-ui, sans-serif", heading: "Nunito Sans, system-ui, sans-serif" },
4063
+ recommendedFonts: {
4064
+ body: ["Nunito Sans", "Atkinson Hyperlegible", "Lato"],
4065
+ heading: ["Nunito Sans", "Quicksand", "Manrope"]
4066
+ },
4067
+ slotPolicies: { body: bodyReadablePolicy, heading: headingFlexiblePolicy },
4068
+ typography: warmRoundedTypography
4069
+ }),
4070
+ defineTypographyPreset({
4071
+ id: "typography-preset:editorial-serif",
4072
+ name: "Editorial Serif",
4073
+ description: "Story-led type with warm reading rhythm and expressive headings.",
4074
+ defaultFonts: { body: "Lora, Georgia, serif", heading: "Playfair Display, Georgia, serif" },
4075
+ recommendedFonts: {
4076
+ body: ["Lora", "Source Serif 4", "Libre Baskerville"],
4077
+ heading: ["Playfair Display", "Cormorant Garamond", "Fraunces"]
4078
+ },
4079
+ slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
4080
+ typography: editorialSerifTypography
4081
+ }),
4082
+ defineTypographyPreset({
4083
+ id: "typography-preset:classic-serif",
4084
+ name: "Classic Serif",
4085
+ description: "Measured, polished type for premium and established offers.",
4086
+ defaultFonts: { body: "Libre Baskerville, Georgia, serif", heading: "Cormorant Garamond, Georgia, serif" },
4087
+ recommendedFonts: {
4088
+ body: ["Libre Baskerville", "Source Serif 4", "Lora"],
4089
+ heading: ["Cormorant Garamond", "Playfair Display", "Libre Baskerville"]
4090
+ },
4091
+ slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
4092
+ typography: classicSerifTypography
4093
+ }),
4094
+ defineTypographyPreset({
4095
+ id: "typography-preset:luxe-contrast",
4096
+ name: "Luxe Contrast",
4097
+ description: "A restrained sans body paired with elegant high-contrast headings.",
4098
+ defaultFonts: { body: "Manrope, system-ui, sans-serif", heading: "Cormorant Garamond, Georgia, serif" },
4099
+ recommendedFonts: {
4100
+ body: ["Manrope", "Inter", "Source Sans 3"],
4101
+ heading: ["Cormorant Garamond", "Playfair Display", "Bodoni Moda"]
4102
+ },
4103
+ slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
4104
+ typography: luxeContrastTypography
4105
+ }),
4106
+ defineTypographyPreset({
4107
+ id: "typography-preset:bold-display",
4108
+ name: "Bold Display",
4109
+ description: "Punchy display headings with readable sans body copy for branded launches.",
4110
+ defaultFonts: { body: "Manrope, system-ui, sans-serif", heading: '"TAN - PEARL", sans-serif' },
4111
+ recommendedFonts: {
4112
+ body: ["Manrope", "Inter", "Space Grotesk"],
4113
+ heading: ["Anton", "Bebas Neue", "Archivo Black"]
4114
+ },
4115
+ slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
4116
+ typography: boldDisplayTypography,
4117
+ heroTypography: {
4118
+ headlineSize: "6xl",
4119
+ headlineLineHeight: "tight",
4120
+ subheadlineSize: "2xl",
4121
+ subheadlineLineHeight: "normal",
4122
+ microHeadlineSize: "6xl",
4123
+ microHeadlineLineHeight: "tight",
4124
+ microSubheadlineSize: "xl",
4125
+ microSubheadlineLineHeight: "normal",
4126
+ responsive: {
4127
+ tablet: { headlineSize: "5xl" },
4128
+ mobile: { headlineSize: "4xl", subheadlineSize: "xl" }
4129
+ }
4130
+ }
4131
+ })
4132
+ ];
4133
+ var typographyPresetsById = new Map(
4134
+ typographyPresets.map((preset) => [preset.id, preset])
4135
+ );
4136
+
4137
+ // ../theme-core/src/site-styles/curatedSiteStyles.ts
4138
+ var SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
4139
+ var SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
4140
+ var quietBudget = {
4141
+ accentDensity: "low",
4142
+ panelDensity: "medium",
4143
+ transitionMix: "quiet",
4144
+ primaryCtaLimit: 2,
4145
+ mediaDensity: "medium",
4146
+ decorativeRepetition: "low"
4147
+ };
4148
+ var balancedBudget = {
4149
+ accentDensity: "medium",
4150
+ panelDensity: "medium",
4151
+ transitionMix: "balanced",
4152
+ primaryCtaLimit: 3,
4153
+ mediaDensity: "medium",
4154
+ decorativeRepetition: "medium"
4155
+ };
4156
+ var expressiveBudget = {
4157
+ accentDensity: "high",
4158
+ panelDensity: "high",
4159
+ transitionMix: "expressive",
4160
+ primaryCtaLimit: 3,
4161
+ mediaDensity: "high",
4162
+ decorativeRepetition: "medium"
4163
+ };
4164
+ var expressiveUnderlineInputs = {
4165
+ base: {
4166
+ background: { type: "transparent" },
4167
+ textColorToken: "text",
4168
+ border: {
4169
+ widthClass: "border-2",
4170
+ colorToken: "border",
4171
+ style: "underline"
4172
+ },
4173
+ corners: "square",
4174
+ shadow: null,
4175
+ spacing: "compact",
4176
+ fontSize: "base"
4177
+ },
4178
+ label: {
4179
+ textColorToken: "primary",
4180
+ fontWeight: "black",
4181
+ fontSize: "xs",
4182
+ textTransform: "uppercase",
4183
+ letterSpacing: "widest",
4184
+ opacity: 1
4185
+ },
4186
+ focus: {
4187
+ ringColorToken: "secondary",
4188
+ ringWidth: "0",
4189
+ borderColorToken: "secondary"
4190
+ },
4191
+ error: {
4192
+ borderColorToken: "destructive",
4193
+ textColorToken: "destructive"
4194
+ },
4195
+ disabled: {
4196
+ backgroundColorToken: "surface",
4197
+ textColorToken: "text",
4198
+ opacity: 0.6
4199
+ }
4200
+ };
4201
+ function uniqueContentFrameKinds() {
4202
+ const kinds = [
4203
+ ...new Set(
4204
+ generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
4205
+ )
4206
+ ];
4207
+ const firstKind = kinds[0];
4208
+ if (!firstKind) {
4209
+ throw new Error(
4210
+ "Expected generated design option catalog to expose at least one content frame kind."
4211
+ );
4212
+ }
4213
+ return [firstKind, ...kinds.slice(1)];
4214
+ }
4215
+ var generatedContentFrameKinds = uniqueContentFrameKinds();
4216
+ function defineCuratedSiteStyle(input) {
4217
+ const legacyHeaderLookIds = input.recommendedHeaderLookIds ?? ["clean-base"];
4218
+ const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
4219
+ legacyHeaderLookIds,
4220
+ input.tokenRecipes
4221
+ );
4222
+ const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
4223
+ const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
4224
+ if (!typographyPresetChoices.some(
4225
+ (choice) => choice.id === defaultTypographyPresetId
4226
+ )) {
4227
+ throw new Error(
4228
+ `Default typography preset ${defaultTypographyPresetId} is not curated for site style ${input.id}.`
4229
+ );
4230
+ }
4231
+ return {
4232
+ id: asSiteStyleId(input.id),
4233
+ name: input.name,
4234
+ description: input.description,
4235
+ generationBrief: input.generationBrief,
4236
+ selectionKeywordRules: input.selectionKeywordRules ?? [],
4237
+ siteCreatorSelection: input.siteCreatorSelection ?? {
4238
+ kind: "explicit_only"
4239
+ },
4240
+ template: {
4241
+ id: asDesignSystemTemplateId(
4242
+ `template:${input.id.replace("site-style:", "")}`
4243
+ ),
4244
+ name: input.name,
4245
+ version: 1,
4246
+ tokenRecipes: input.tokenRecipes,
4247
+ compositionBudget: input.compositionBudget,
4248
+ supportedSectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
4249
+ supportedContentFrames: generatedContentFrameKinds,
4250
+ supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
4251
+ supportedTransitions: generatedDesignOptionCatalog.transitions
4252
+ },
4253
+ ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
4254
+ ...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
4255
+ recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
4256
+ defaultHeaderSelection: input.defaultHeaderSelection ? {
4257
+ layoutId: asHeaderLayoutId(input.defaultHeaderSelection.layoutId),
4258
+ styleId: asHeaderStyleId(input.defaultHeaderSelection.styleId)
4259
+ } : inferredHeaderCuration.defaultHeaderSelection,
4260
+ recommendedHeaderLayoutChoices: input.recommendedHeaderLayoutChoices ?? inferredHeaderCuration.recommendedHeaderLayoutChoices,
4261
+ recommendedHeaderStyleChoicesByLayout: input.recommendedHeaderStyleChoicesByLayout ?? inferredHeaderCuration.recommendedHeaderStyleChoicesByLayout,
4262
+ discouragedHeaderSelections: input.discouragedHeaderSelections?.map(
4263
+ (selection) => ({
4264
+ layoutId: asHeaderLayoutId(selection.layoutId),
4265
+ styleId: asHeaderStyleId(selection.styleId)
4266
+ })
4267
+ ),
4268
+ recommendedHeaderLookIds: legacyHeaderLookIds.map(asHeaderLookId),
4269
+ // Empty is intentional: resolveFooterLook always appends its guaranteed fallback.
4270
+ recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(
4271
+ asFooterLookId
4272
+ ),
4273
+ buttonPersonalityChoices: input.buttonPersonalityChoices,
4274
+ paletteVariantChoices: input.paletteVariantChoices,
4275
+ typographyPresetChoices,
4276
+ defaultTypographyPresetId
4277
+ };
4278
+ }
4279
+ function buttonChoice(id, note) {
4280
+ return note ? { id: asButtonPersonalityId(id), note } : { id: asButtonPersonalityId(id) };
4281
+ }
4282
+ function paletteChoice(id, note) {
4283
+ return note ? { id: asPaletteVariantId(id), note } : { id: asPaletteVariantId(id) };
4284
+ }
4285
+ function headerLayoutChoice(id, note) {
4286
+ return note ? { id: asHeaderLayoutId(id), note } : { id: asHeaderLayoutId(id) };
4287
+ }
4288
+ function headerStyleChoice(id, note) {
4289
+ return note ? { id: asHeaderStyleId(id), note } : { id: asHeaderStyleId(id) };
4290
+ }
4291
+ function unbrandHeaderLayoutId(id) {
4292
+ return id;
4293
+ }
4294
+ function uniqueHeaderLayoutChoices(choices) {
4295
+ const seen = /* @__PURE__ */ new Set();
4296
+ const unique = choices.filter((choice) => {
4297
+ if (seen.has(choice.id)) return false;
4298
+ seen.add(choice.id);
4299
+ return true;
4300
+ });
4301
+ const first = unique[0];
4302
+ if (!first) {
4303
+ throw new Error("Expected at least one curated header layout choice.");
4304
+ }
4305
+ return [first, ...unique.slice(1)];
4306
+ }
4307
+ function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
4308
+ const first = choices[0] ?? {
4309
+ id: getCompatibleHeaderStyleIds(fallbackLayoutId)[0] ?? asHeaderStyleId("minimal")
2446
4310
  };
2447
- const scale = (() => {
2448
- switch (level) {
2449
- case "none":
2450
- return 0.8;
2451
- case "low":
2452
- return 1;
2453
- case "medium":
2454
- return 1.25;
2455
- case "high":
2456
- return 1.5;
2457
- default:
2458
- return 1;
2459
- }
2460
- })();
2461
- const blurMul = soft ? 1.2 : 1;
2462
- const alphaMul = soft ? 0.9 : 1.05;
2463
- const fmt = (layers) => layers.map((l) => {
2464
- const y = Math.round(l.y * scale);
2465
- const blur = Math.round(l.blur * scale * blurMul);
2466
- const spread = Math.round(l.spread * scale);
2467
- const a = Math.max(0, Math.min(1, +(l.a * alphaMul).toFixed(3)));
2468
- return `0 ${y}px ${blur}px ${spread}px rgba(0, 0, 0, ${a})`;
2469
- }).join(", ");
4311
+ return [first, ...choices.slice(1)];
4312
+ }
4313
+ function uniqueCompatibleHeaderStyleChoices(choices, fallbackLayoutId) {
4314
+ const compatible = new Set(getCompatibleHeaderStyleIds(fallbackLayoutId));
4315
+ const seen = /* @__PURE__ */ new Set();
4316
+ const unique = choices.filter((choice) => {
4317
+ if (!compatible.has(choice.id)) return false;
4318
+ if (seen.has(choice.id)) return false;
4319
+ seen.add(choice.id);
4320
+ return true;
4321
+ });
4322
+ return nonEmptyHeaderStyleChoices(unique, fallbackLayoutId);
4323
+ }
4324
+ function inferredHeaderStyleValuesForRecipes(layoutId, recipes) {
4325
+ switch (layoutId) {
4326
+ case "classic":
4327
+ if (isExpressiveRecipe(recipes)) {
4328
+ return [
4329
+ "brand-bar",
4330
+ "brand-underline",
4331
+ "flat-tabs",
4332
+ "brand-pill",
4333
+ "fine-line"
4334
+ ];
4335
+ }
4336
+ if (recipes.spacing === "compact") {
4337
+ return ["flat-tabs", "fine-line", "minimal", "brand-bar"];
4338
+ }
4339
+ if (isSerifTypographyRecipe(recipes)) {
4340
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
4341
+ }
4342
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
4343
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
4344
+ }
4345
+ return ["fine-line", "minimal", "soft-bar", "brand-bar"];
4346
+ case "centered":
4347
+ if (isSerifTypographyRecipe(recipes)) {
4348
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
4349
+ }
4350
+ if (isExpressiveRecipe(recipes)) {
4351
+ return ["brand-pill", "flat-tabs", "brand-bar", "fine-line"];
4352
+ }
4353
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
4354
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
4355
+ }
4356
+ return ["minimal", "fine-line", "soft-bar"];
4357
+ case "floating":
4358
+ if (isExpressiveRecipe(recipes)) {
4359
+ return ["glass", "split-glass", "brand-pill", "soft-shell"];
4360
+ }
4361
+ if (isSerifTypographyRecipe(recipes)) {
4362
+ return ["split-pill", "minimal-surface", "soft-shell"];
4363
+ }
4364
+ return ["soft-shell", "minimal-surface", "glass"];
4365
+ default:
4366
+ return [];
4367
+ }
4368
+ }
4369
+ function isExpressiveRecipe(recipes) {
4370
+ return recipes.contrast === "maximum" || recipes.shadow === "layered" || recipes.motion === "expressive";
4371
+ }
4372
+ function isSerifTypographyRecipe(recipes) {
4373
+ return recipes.typography === "serif-editorial" || recipes.typography === "classic-serif";
4374
+ }
4375
+ function inferHeaderCurationFromLegacyLooks(lookIds, recipes) {
4376
+ const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter(
4377
+ (selection) => Boolean(selection)
4378
+ );
4379
+ const defaultHeaderSelection = selections[0] ?? {
4380
+ layoutId: asHeaderLayoutId("classic"),
4381
+ styleId: asHeaderStyleId("minimal")
4382
+ };
4383
+ const layoutChoices = uniqueHeaderLayoutChoices(
4384
+ selections.map((selection) => headerLayoutChoice(selection.layoutId))
4385
+ );
4386
+ const stylesByLayout = {};
4387
+ for (const layoutChoice of layoutChoices) {
4388
+ const legacyStyleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
4389
+ const inferredStyleChoices = inferredHeaderStyleValuesForRecipes(
4390
+ layoutChoice.id,
4391
+ recipes
4392
+ ).map((styleId) => headerStyleChoice(styleId));
4393
+ stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = uniqueCompatibleHeaderStyleChoices(
4394
+ [...legacyStyleChoices, ...inferredStyleChoices],
4395
+ layoutChoice.id
4396
+ );
4397
+ }
2470
4398
  return {
2471
- "--shadow-sm": fmt(base.sm),
2472
- "--shadow-md": fmt(base.md),
2473
- "--shadow-lg": fmt(base.lg),
2474
- "--shadow-xl": fmt(base.xl),
2475
- "--shadow-2xl": fmt(base.x2l)
4399
+ defaultHeaderSelection,
4400
+ recommendedHeaderLayoutChoices: layoutChoices,
4401
+ recommendedHeaderStyleChoicesByLayout: stylesByLayout
2476
4402
  };
2477
4403
  }
4404
+ function typographyChoice(id, note) {
4405
+ return note ? { id: asTypographyPresetId(id), note } : { id: asTypographyPresetId(id) };
4406
+ }
4407
+ function defaultTypographyPresetChoicesForRecipe(recipe) {
4408
+ switch (recipe) {
4409
+ case "clean-sans":
4410
+ return [
4411
+ typographyChoice("typography-preset:modern-sans"),
4412
+ typographyChoice("typography-preset:luxe-contrast"),
4413
+ typographyChoice("typography-preset:bold-display")
4414
+ ];
4415
+ case "friendly-sans":
4416
+ return [
4417
+ typographyChoice("typography-preset:warm-rounded"),
4418
+ typographyChoice("typography-preset:modern-sans"),
4419
+ typographyChoice("typography-preset:editorial-serif")
4420
+ ];
4421
+ case "serif-editorial":
4422
+ return [
4423
+ typographyChoice("typography-preset:editorial-serif"),
4424
+ typographyChoice("typography-preset:classic-serif"),
4425
+ typographyChoice("typography-preset:warm-rounded")
4426
+ ];
4427
+ case "classic-serif":
4428
+ return [
4429
+ typographyChoice("typography-preset:classic-serif"),
4430
+ typographyChoice("typography-preset:luxe-contrast"),
4431
+ typographyChoice("typography-preset:editorial-serif")
4432
+ ];
4433
+ }
4434
+ }
4435
+ var curatedSiteStyles = [
4436
+ defineCuratedSiteStyle({
4437
+ id: "site-style:calm-studio",
4438
+ name: "Calm Studio",
4439
+ description: "Soft, measured, and spacious for intimate appointment or class businesses.",
4440
+ generationBrief: "Use calm pacing, concise copy, generous breathing room, and natural imagery. Keep calls to action steady rather than urgent.",
4441
+ tokenRecipes: {
4442
+ palette: "soft-natural",
4443
+ contrast: "standard",
4444
+ radius: "soft",
4445
+ shadow: "subtle",
4446
+ typography: "friendly-sans",
4447
+ spacing: "airy",
4448
+ motion: "subtle"
4449
+ },
4450
+ compositionBudget: quietBudget,
4451
+ recommendedHeaderLookIds: [
4452
+ "centered-calm",
4453
+ "minimal-transparent",
4454
+ "clean-base"
4455
+ ],
4456
+ buttonPersonalityChoices: [
4457
+ buttonChoice("soft-pill"),
4458
+ buttonChoice("pebble"),
4459
+ buttonChoice("editorial-link"),
4460
+ buttonChoice("brushed-wash")
4461
+ ],
4462
+ paletteVariantChoices: [
4463
+ paletteChoice("soft-natural-sage"),
4464
+ paletteChoice("soft-natural-stone"),
4465
+ paletteChoice("warm-neutral-clay"),
4466
+ paletteChoice("soft-natural-watercolor")
4467
+ ]
4468
+ }),
4469
+ defineCuratedSiteStyle({
4470
+ id: "site-style:clear-professional",
4471
+ name: "Clear Professional",
4472
+ description: "Crisp, trustworthy, and direct for local services and consultancies.",
4473
+ generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
4474
+ tokenRecipes: {
4475
+ palette: "brand-led",
4476
+ contrast: "strong",
4477
+ radius: "soft",
4478
+ shadow: "subtle",
4479
+ typography: "clean-sans",
4480
+ spacing: "regular",
4481
+ motion: "subtle"
4482
+ },
4483
+ compositionBudget: balancedBudget,
4484
+ recommendedHeaderLookIds: [
4485
+ "practical-utility",
4486
+ "brand-solid",
4487
+ "clean-base"
4488
+ ],
4489
+ buttonPersonalityChoices: [
4490
+ buttonChoice("confident-chip"),
4491
+ buttonChoice("soft-pill"),
4492
+ buttonChoice("editorial-link")
4493
+ ],
4494
+ paletteVariantChoices: [
4495
+ paletteChoice("brand-led-cool"),
4496
+ paletteChoice("high-contrast-ink"),
4497
+ paletteChoice("brand-led-jewel")
4498
+ ]
4499
+ }),
4500
+ defineCuratedSiteStyle({
4501
+ id: "site-style:warm-editorial",
4502
+ name: "Warm Editorial",
4503
+ description: "Story-led and textured for educators, makers, venues, and retreats.",
4504
+ generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
4505
+ tokenRecipes: {
4506
+ palette: "warm-neutral",
4507
+ contrast: "standard",
4508
+ radius: "square",
4509
+ shadow: "none",
4510
+ typography: "serif-editorial",
4511
+ spacing: "airy",
4512
+ motion: "subtle"
4513
+ },
4514
+ compositionBudget: balancedBudget,
4515
+ recommendedHeaderLookIds: [
4516
+ "serif-line",
4517
+ "minimal-transparent",
4518
+ "centered-calm"
4519
+ ],
4520
+ buttonPersonalityChoices: [
4521
+ buttonChoice("editorial-link"),
4522
+ buttonChoice("soft-pill"),
4523
+ buttonChoice("brushed-wash")
4524
+ ],
4525
+ paletteVariantChoices: [
4526
+ paletteChoice("warm-neutral-cream"),
4527
+ paletteChoice("warm-neutral-clay"),
4528
+ paletteChoice("warm-neutral-forest"),
4529
+ paletteChoice("soft-natural-stone")
4530
+ ]
4531
+ }),
4532
+ defineCuratedSiteStyle({
4533
+ id: "site-style:bright-community",
4534
+ name: "Bright Community",
4535
+ description: "Friendly, welcoming, and active for groups, classes, and neighborhood offers.",
4536
+ generationBrief: "Use welcoming language, clear event or booking routes, and optimistic imagery. Let accents appear, but avoid noisy decoration.",
4537
+ tokenRecipes: {
4538
+ palette: "brand-led",
4539
+ contrast: "standard",
4540
+ radius: "rounded",
4541
+ shadow: "subtle",
4542
+ typography: "friendly-sans",
4543
+ spacing: "regular",
4544
+ motion: "expressive"
4545
+ },
4546
+ compositionBudget: balancedBudget,
4547
+ recommendedHeaderLookIds: [
4548
+ "brand-solid",
4549
+ "practical-utility",
4550
+ "clean-base"
4551
+ ],
4552
+ buttonPersonalityChoices: [
4553
+ buttonChoice("pebble"),
4554
+ buttonChoice("brushed-wash"),
4555
+ buttonChoice("confident-chip")
4556
+ ],
4557
+ paletteVariantChoices: [
4558
+ paletteChoice("brand-led-warm"),
4559
+ paletteChoice("brand-led-jewel"),
4560
+ paletteChoice("soft-natural-watercolor")
4561
+ ]
4562
+ }),
4563
+ defineCuratedSiteStyle({
4564
+ id: "site-style:quiet-luxury",
4565
+ name: "Quiet Luxury",
4566
+ description: "Minimal, confident, and refined for premium experiences and private services.",
4567
+ generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
4568
+ siteCreatorSelection: {
4569
+ kind: "site_creator_keyword_heuristic",
4570
+ priority: 20
4571
+ },
4572
+ selectionKeywordRules: [
4573
+ { kind: "word", value: "luxury" },
4574
+ { kind: "word", value: "premium" },
4575
+ { kind: "word", value: "boutique" },
4576
+ { kind: "word", value: "bespoke" },
4577
+ { kind: "word", value: "exclusive" }
4578
+ ],
4579
+ tokenRecipes: {
4580
+ palette: "high-contrast",
4581
+ contrast: "strong",
4582
+ radius: "square",
4583
+ shadow: "none",
4584
+ typography: "classic-serif",
4585
+ spacing: "airy",
4586
+ motion: "none"
4587
+ },
4588
+ compositionBudget: quietBudget,
4589
+ recommendedHeaderLookIds: [
4590
+ "minimal-transparent",
4591
+ "serif-line",
4592
+ "clean-base"
4593
+ ],
4594
+ buttonPersonalityChoices: [
4595
+ buttonChoice("editorial-link"),
4596
+ buttonChoice("confident-chip"),
4597
+ buttonChoice("soft-pill")
4598
+ ],
4599
+ paletteVariantChoices: [
4600
+ paletteChoice("high-contrast-charcoal"),
4601
+ paletteChoice("high-contrast-ink"),
4602
+ paletteChoice("warm-neutral-cream")
4603
+ ]
4604
+ }),
4605
+ defineCuratedSiteStyle({
4606
+ id: "site-style:practical-services",
4607
+ name: "Practical Services",
4608
+ description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
4609
+ generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
4610
+ siteCreatorSelection: { kind: "primary_goal_support" },
4611
+ selectionKeywordRules: [
4612
+ { kind: "word", value: "repair" },
4613
+ { kind: "substring", value: "plumb" },
4614
+ { kind: "substring", value: "electric" },
4615
+ { kind: "word", value: "cleaning" },
4616
+ { kind: "substring", value: "landscap" },
4617
+ { kind: "substring", value: "contractor" }
4618
+ ],
4619
+ tokenRecipes: {
4620
+ palette: "brand-led",
4621
+ contrast: "maximum",
4622
+ radius: "soft",
4623
+ shadow: "subtle",
4624
+ typography: "clean-sans",
4625
+ spacing: "compact",
4626
+ motion: "none"
4627
+ },
4628
+ compositionBudget: quietBudget,
4629
+ recommendedHeaderLookIds: [
4630
+ "practical-utility",
4631
+ "brand-solid",
4632
+ "clean-base"
4633
+ ],
4634
+ buttonPersonalityChoices: [
4635
+ buttonChoice("confident-chip"),
4636
+ buttonChoice("pebble"),
4637
+ buttonChoice("ink-stamp")
4638
+ ],
4639
+ paletteVariantChoices: [
4640
+ paletteChoice("brand-led-cool"),
4641
+ paletteChoice("high-contrast-ink"),
4642
+ paletteChoice("brand-led-warm")
4643
+ ]
4644
+ }),
4645
+ defineCuratedSiteStyle({
4646
+ id: "site-style:modern-wellness",
4647
+ name: "Modern Wellness",
4648
+ description: "Natural, current, and reassuring for practitioners, studios, and wellbeing offers.",
4649
+ generationBrief: "Keep the tone warm and practical. Use gentle section variation, natural materials, and inclusive copy without making medical claims.",
4650
+ tokenRecipes: {
4651
+ palette: "soft-natural",
4652
+ contrast: "standard",
4653
+ radius: "rounded",
4654
+ shadow: "subtle",
4655
+ typography: "clean-sans",
4656
+ spacing: "airy",
4657
+ motion: "subtle"
4658
+ },
4659
+ compositionBudget: balancedBudget,
4660
+ recommendedHeaderLookIds: [
4661
+ "centered-calm",
4662
+ "minimal-transparent",
4663
+ "clean-base"
4664
+ ],
4665
+ buttonPersonalityChoices: [
4666
+ buttonChoice("soft-pill"),
4667
+ buttonChoice("pebble"),
4668
+ buttonChoice("confident-chip")
4669
+ ],
4670
+ paletteVariantChoices: [
4671
+ paletteChoice("soft-natural-sage"),
4672
+ paletteChoice("soft-natural-stone"),
4673
+ paletteChoice("warm-neutral-forest")
4674
+ ]
4675
+ }),
4676
+ defineCuratedSiteStyle({
4677
+ id: "site-style:quiet-practice",
4678
+ name: "Quiet Practice",
4679
+ description: "Grounded, calm, and practical for small appointment-first practices.",
4680
+ generationBrief: "Make services, practitioner trust, preparation notes, and booking routes easy to scan. Keep the tone warm and specific, with quiet confidence rather than spa cliches or medical claims.",
4681
+ siteCreatorSelection: {
4682
+ kind: "site_creator_keyword_heuristic",
4683
+ priority: 30
4684
+ },
4685
+ selectionKeywordRules: [
4686
+ { kind: "substring", value: "massage" },
4687
+ { kind: "word", value: "bodywork" },
4688
+ { kind: "phrase", value: "appointment practice" },
4689
+ { kind: "phrase", value: "appointment-first" },
4690
+ { kind: "substring", value: "practitioner" },
4691
+ { kind: "substring", value: "therap" },
4692
+ { kind: "substring", value: "clinic" },
4693
+ { kind: "phrase", value: "wellness practice" }
4694
+ ],
4695
+ tokenRecipes: {
4696
+ palette: "soft-natural",
4697
+ contrast: "standard",
4698
+ radius: "soft",
4699
+ shadow: "subtle",
4700
+ typography: "clean-sans",
4701
+ spacing: "regular",
4702
+ motion: "subtle"
4703
+ },
4704
+ compositionBudget: quietBudget,
4705
+ recommendedHeaderLookIds: [
4706
+ "practical-utility",
4707
+ "clean-base",
4708
+ "centered-calm"
4709
+ ],
4710
+ buttonPersonalityChoices: [
4711
+ buttonChoice("pebble"),
4712
+ buttonChoice("soft-pill"),
4713
+ buttonChoice("editorial-link")
4714
+ ],
4715
+ paletteVariantChoices: [
4716
+ paletteChoice("soft-natural-stone"),
4717
+ paletteChoice("soft-natural-sage"),
4718
+ paletteChoice("warm-neutral-clay")
4719
+ ]
4720
+ }),
4721
+ defineCuratedSiteStyle({
4722
+ id: "site-style:personal-retreat-journal",
4723
+ name: "Personal Retreat Journal",
4724
+ description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
4725
+ generationBrief: "Center the practitioner as the guide, then make private sessions, classes, retreats, and resources feel like clear pathways. Keep retreat copy grounded and practical, with enough editorial warmth for longer reading.",
4726
+ siteCreatorSelection: {
4727
+ kind: "site_creator_keyword_heuristic",
4728
+ priority: 40
4729
+ },
4730
+ selectionKeywordRules: [
4731
+ { kind: "substring", value: "retreat" },
4732
+ { kind: "phrase", value: "solo practitioner" },
4733
+ { kind: "phrase", value: "personal brand" },
4734
+ { kind: "substring", value: "teacher" },
4735
+ { kind: "substring", value: "coach" },
4736
+ { kind: "phrase", value: "retreat resources" },
4737
+ { kind: "substring", value: "journal" }
4738
+ ],
4739
+ tokenRecipes: {
4740
+ palette: "warm-neutral",
4741
+ contrast: "standard",
4742
+ radius: "soft",
4743
+ shadow: "subtle",
4744
+ typography: "serif-editorial",
4745
+ spacing: "airy",
4746
+ motion: "subtle"
4747
+ },
4748
+ compositionBudget: balancedBudget,
4749
+ recommendedHeaderLookIds: [
4750
+ "serif-line",
4751
+ "centered-calm",
4752
+ "minimal-transparent"
4753
+ ],
4754
+ buttonPersonalityChoices: [
4755
+ buttonChoice("editorial-link"),
4756
+ buttonChoice("soft-pill"),
4757
+ buttonChoice("brushed-wash")
4758
+ ],
4759
+ paletteVariantChoices: [
4760
+ paletteChoice("warm-neutral-forest"),
4761
+ paletteChoice("warm-neutral-clay"),
4762
+ paletteChoice("soft-natural-stone")
4763
+ ]
4764
+ }),
4765
+ defineCuratedSiteStyle({
4766
+ id: "site-style:tactile-workshop",
4767
+ name: "Tactile Workshop",
4768
+ description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
4769
+ generationBrief: "Lead with objects, materials, studio process, and practical booking detail. Keep the tone warm and direct, with useful mess, clear dates, and enough gallery rhythm to feel like a real creative studio.",
4770
+ siteCreatorSelection: {
4771
+ kind: "site_creator_keyword_heuristic",
4772
+ priority: 50
4773
+ },
4774
+ selectionKeywordRules: [
4775
+ { kind: "substring", value: "ceramic" },
4776
+ { kind: "word", value: "pottery" },
4777
+ { kind: "phrase", value: "maker studio" },
4778
+ { kind: "phrase", value: "craft class" },
4779
+ { kind: "phrase", value: "craft workshop" },
4780
+ { kind: "word", value: "clay" },
4781
+ { kind: "word", value: "kiln" }
4782
+ ],
4783
+ tokenRecipes: {
4784
+ palette: "brand-led",
4785
+ contrast: "standard",
4786
+ radius: "soft",
4787
+ shadow: "subtle",
4788
+ typography: "friendly-sans",
4789
+ spacing: "regular",
4790
+ motion: "subtle"
4791
+ },
4792
+ compositionBudget: balancedBudget,
4793
+ recommendedHeaderLookIds: [
4794
+ "brand-solid",
4795
+ "practical-utility",
4796
+ "clean-base"
4797
+ ],
4798
+ recommendedFooterLookIds: [
4799
+ "site-footer-brand-two-band",
4800
+ "footer-muted-grounding"
4801
+ ],
4802
+ buttonPersonalityChoices: [
4803
+ buttonChoice("pebble"),
4804
+ buttonChoice("confident-chip"),
4805
+ buttonChoice("ink-stamp"),
4806
+ buttonChoice("editorial-link")
4807
+ ],
4808
+ paletteVariantChoices: [
4809
+ paletteChoice("brand-led-warm"),
4810
+ paletteChoice("brand-led-cool"),
4811
+ paletteChoice("soft-natural-watercolor"),
4812
+ paletteChoice("warm-neutral-clay")
4813
+ ]
4814
+ }),
4815
+ defineCuratedSiteStyle({
4816
+ id: SOFT_EARTH_SITE_STYLE_ID,
4817
+ name: "Soft Earth",
4818
+ description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
4819
+ generationBrief: "Use cream space, terracotta CTAs, olive quote bands, natural imagery, generous but composed spacing, and editorial serif headings. Prefer a real intro section, image-led offering cards, warm community quotes, and an FAQ with a full-width intro above two columns of questions when content allows.",
4820
+ siteCreatorSelection: {
4821
+ kind: "site_creator_keyword_heuristic",
4822
+ priority: 45
4823
+ },
4824
+ selectionKeywordRules: [
4825
+ { kind: "word", value: "meditation" },
4826
+ { kind: "word", value: "wellbeing" },
4827
+ { kind: "substring", value: "retreat" },
4828
+ { kind: "phrase", value: "yoga studio" },
4829
+ { kind: "phrase", value: "mindful movement" }
4830
+ ],
4831
+ tokenRecipes: {
4832
+ palette: "warm-neutral",
4833
+ contrast: "standard",
4834
+ radius: "soft",
4835
+ shadow: "subtle",
4836
+ typography: "serif-editorial",
4837
+ spacing: "airy",
4838
+ motion: "subtle"
4839
+ },
4840
+ compositionBudget: balancedBudget,
4841
+ themeOverrides: {
4842
+ typography: {
4843
+ body: {
4844
+ family: "Inter, system-ui, sans-serif",
4845
+ size: "md",
4846
+ weight: "regular",
4847
+ lineHeight: "relaxed",
4848
+ letterSpacing: "normal"
4849
+ },
4850
+ headings: {
4851
+ default: {
4852
+ family: '"Cormorant Garamond", Georgia, serif',
4853
+ weight: "regular",
4854
+ lineHeight: "normal",
4855
+ letterSpacing: "normal",
4856
+ colorToken: "text",
4857
+ italic: null,
4858
+ case: null
4859
+ },
4860
+ h1: {
4861
+ size: "xl",
4862
+ weight: "regular",
4863
+ lineHeight: "normal",
4864
+ letterSpacing: "normal",
4865
+ italic: null
4866
+ },
4867
+ h2: {
4868
+ size: "lg",
4869
+ weight: "regular",
4870
+ lineHeight: "normal",
4871
+ letterSpacing: "normal",
4872
+ italic: null
4873
+ },
4874
+ h3: {
4875
+ size: "md",
4876
+ weight: "regular",
4877
+ lineHeight: "normal",
4878
+ letterSpacing: "normal",
4879
+ italic: null
4880
+ }
4881
+ },
4882
+ scale: "majorThird"
4883
+ },
4884
+ bodyText: {
4885
+ intro: {
4886
+ paragraphSize: "default",
4887
+ headingSize: "editorial"
4888
+ }
4889
+ },
4890
+ accordions: softEarthAccordionSystem
4891
+ },
4892
+ defaultBlockVariants: {
4893
+ "block.faq": "question-columns"
4894
+ },
4895
+ recommendedAppearancePresetIds: [
4896
+ "hero-brand-scrim",
4897
+ "intro-organic-statement",
4898
+ "feature-cards-raised-rule",
4899
+ "events-lined-panel",
4900
+ "testimonials-brand-background-quotes",
4901
+ "contact-form-panel"
4902
+ ],
4903
+ recommendedHeaderLookIds: [
4904
+ "centered-calm",
4905
+ "minimal-transparent",
4906
+ "serif-line"
4907
+ ],
4908
+ recommendedFooterLookIds: [
4909
+ "footer-muted-grounding",
4910
+ "site-footer-brand-two-band"
4911
+ ],
4912
+ buttonPersonalityChoices: [
4913
+ buttonChoice("earth-pill"),
4914
+ buttonChoice("soft-pill"),
4915
+ buttonChoice("pebble"),
4916
+ buttonChoice("editorial-link")
4917
+ ],
4918
+ paletteVariantChoices: [
4919
+ paletteChoice("warm-neutral-soft-earth"),
4920
+ paletteChoice("warm-neutral-clay"),
4921
+ paletteChoice("warm-neutral-forest"),
4922
+ paletteChoice("soft-natural-sage")
4923
+ ]
4924
+ }),
4925
+ defineCuratedSiteStyle({
4926
+ id: "site-style:bold-launch",
4927
+ name: "Bold Launch",
4928
+ description: "High-energy and punchy for launches, campaigns, and creative offers.",
4929
+ generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
4930
+ siteCreatorSelection: {
4931
+ kind: "site_creator_keyword_heuristic",
4932
+ priority: 10
4933
+ },
4934
+ selectionKeywordRules: [
4935
+ { kind: "substring", value: "launch" },
4936
+ { kind: "substring", value: "campaign" },
4937
+ { kind: "word", value: "preorder" },
4938
+ { kind: "phrase", value: "pre-order" },
4939
+ { kind: "substring", value: "waitlist" },
4940
+ { kind: "word", value: "drop" }
4941
+ ],
4942
+ tokenRecipes: {
4943
+ palette: "high-contrast",
4944
+ contrast: "maximum",
4945
+ radius: "pill",
4946
+ shadow: "layered",
4947
+ typography: "clean-sans",
4948
+ spacing: "regular",
4949
+ motion: "expressive"
4950
+ },
4951
+ compositionBudget: expressiveBudget,
4952
+ recommendedHeaderLookIds: [
4953
+ "transparent-overlay",
4954
+ "floating-glass",
4955
+ "brand-solid"
4956
+ ],
4957
+ buttonPersonalityChoices: [
4958
+ buttonChoice("ink-stamp"),
4959
+ buttonChoice("confident-chip"),
4960
+ buttonChoice("brushed-wash"),
4961
+ buttonChoice("pebble")
4962
+ ],
4963
+ paletteVariantChoices: [
4964
+ paletteChoice("high-contrast-monochrome"),
4965
+ paletteChoice("high-contrast-ink"),
4966
+ paletteChoice("brand-led-jewel"),
4967
+ paletteChoice("brand-led-warm")
4968
+ ]
4969
+ }),
4970
+ defineCuratedSiteStyle({
4971
+ id: "site-style:south-west-twerk-school",
4972
+ name: "South West Twerk School",
4973
+ description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
4974
+ generationBrief: "Use confident rhythm, bold burgundy-and-gold accents, large editorial intro copy, strong booking routes, and dark feature sections where proof or forms need emphasis.",
4975
+ tokenRecipes: {
4976
+ palette: "brand-led",
4977
+ contrast: "maximum",
4978
+ radius: "soft",
4979
+ shadow: "layered",
4980
+ typography: "clean-sans",
4981
+ spacing: "airy",
4982
+ motion: "expressive"
4983
+ },
4984
+ compositionBudget: expressiveBudget,
4985
+ typographyPresetChoices: [
4986
+ typographyChoice("typography-preset:bold-display"),
4987
+ typographyChoice("typography-preset:modern-sans"),
4988
+ typographyChoice("typography-preset:luxe-contrast")
4989
+ ],
4990
+ defaultTypographyPresetId: "typography-preset:bold-display",
4991
+ themeOverrides: {
4992
+ bodyText: {
4993
+ intro: {
4994
+ paragraphSize: "editorial",
4995
+ headingSize: "editorial"
4996
+ }
4997
+ },
4998
+ inputs: expressiveUnderlineInputs
4999
+ },
5000
+ recommendedAppearancePresetIds: [
5001
+ "hero-brand-scrim-fixed-frame",
5002
+ "body-text-editorial-intro",
5003
+ "schedule-details-brand-depth",
5004
+ "testimonials-accent-quote-cards",
5005
+ "contact-form-brand-depth-card"
5006
+ ],
5007
+ recommendedHeaderLookIds: [
5008
+ "brand-solid",
5009
+ "transparent-overlay",
5010
+ "practical-utility"
5011
+ ],
5012
+ recommendedFooterLookIds: [
5013
+ "site-footer-brand-two-band",
5014
+ "footer-muted-grounding"
5015
+ ],
5016
+ buttonPersonalityChoices: [
5017
+ buttonChoice("showtime-pill"),
5018
+ buttonChoice("confident-chip"),
5019
+ buttonChoice("ink-stamp"),
5020
+ buttonChoice("brushed-wash")
5021
+ ],
5022
+ paletteVariantChoices: [
5023
+ paletteChoice("brand-led-burgundy-gold"),
5024
+ paletteChoice("brand-led-jewel"),
5025
+ paletteChoice("brand-led-warm"),
5026
+ paletteChoice("high-contrast-ink")
5027
+ ]
5028
+ })
5029
+ ];
5030
+ var curatedSiteStylesById = new Map(
5031
+ curatedSiteStyles.map((style) => [style.id, style])
5032
+ );
2478
5033
 
2479
5034
  // ../theme-core/src/navigation/presets.ts
2480
5035
  var NAV_LINK_PRESETS = {
@@ -3058,6 +5613,15 @@ ${root} {
3058
5613
  `;
3059
5614
  }
3060
5615
 
5616
+ // ../theme-core/src/runtime/themeCssVarNames.ts
5617
+ var THEME_RADIUS_CSS_VARS = {
5618
+ block: "--rb-block-radius",
5619
+ button: "--rb-button-radius",
5620
+ input: "--rb-input-radius",
5621
+ legacyCard: "--radius-card",
5622
+ legacyControl: "--radius-control"
5623
+ };
5624
+
3061
5625
  // ../theme-core/src/blocks/vars/customer-portal.ts
3062
5626
  function generateCustomerPortalVars({
3063
5627
  themeId
@@ -3071,6 +5635,11 @@ ${root} {
3071
5635
  --cp-muted: rgb(var(--tb-mutedText));
3072
5636
  --cp-border: rgb(var(--tb-border));
3073
5637
  --cp-shadow: var(--shadow-elev);
5638
+ --cp-primary: rgb(var(--tb-primary));
5639
+ --cp-primary-hover: rgb(var(--tb-primary-700, var(--tb-primary)));
5640
+ --cp-error: rgb(var(--tb-destructive));
5641
+ --cp-card-radius: var(${THEME_RADIUS_CSS_VARS.block}, var(${THEME_RADIUS_CSS_VARS.legacyCard}, 0.75rem));
5642
+ --cp-control-radius: var(${THEME_RADIUS_CSS_VARS.input}, var(${THEME_RADIUS_CSS_VARS.legacyControl}, 0.5rem));
3074
5643
 
3075
5644
  /* Shared tab bar (underline style) */
3076
5645
  --rb-tab-border-width: 1px;
@@ -3121,7 +5690,7 @@ ${root} {
3121
5690
  --rb-modal-bg: var(--cp-card-bg);
3122
5691
  --rb-modal-border: var(--cp-card-border);
3123
5692
  --rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
3124
- --rb-modal-radius: var(--radius-card);
5693
+ --rb-modal-radius: var(--cp-card-radius);
3125
5694
  --rb-modal-max-width: 560px;
3126
5695
 
3127
5696
  /* Header */
@@ -3473,6 +6042,12 @@ var containerResponsiveThemeCss = `/*
3473
6042
  }
3474
6043
 
3475
6044
  /* Display */
6045
+ .rb-min-h-screen {
6046
+ min-height: 100vh;
6047
+ }
6048
+ .rb-min-h-full {
6049
+ min-height: 100%;
6050
+ }
3476
6051
  .rb-block {
3477
6052
  display: block;
3478
6053
  }
@@ -3795,9 +6370,21 @@ var containerResponsiveThemeCss = `/*
3795
6370
  }
3796
6371
 
3797
6372
  /* Grid */
6373
+ .rb-grid-rows-main-footer {
6374
+ grid-template-rows: minmax(0, 1fr) auto;
6375
+ }
3798
6376
  .rb-grid-cols-1 {
3799
6377
  grid-template-columns: repeat(1, minmax(0, 1fr));
3800
6378
  }
6379
+ .rb-row-start-1 {
6380
+ grid-row-start: 1;
6381
+ }
6382
+ .rb-row-start-2 {
6383
+ grid-row-start: 2;
6384
+ }
6385
+ .rb-col-start-1 {
6386
+ grid-column-start: 1;
6387
+ }
3801
6388
  .rb-grid-cols-2 {
3802
6389
  grid-template-columns: repeat(2, minmax(0, 1fr));
3803
6390
  }
@@ -4043,6 +6630,17 @@ var containerResponsiveThemeCss = `/*
4043
6630
  padding-top: 2.5rem;
4044
6631
  padding-bottom: 2.5rem;
4045
6632
  }
6633
+ :where(.theme-scope)
6634
+ [data-site-document-layout-mode="header-overlay"]
6635
+ [data-rb-reserved-surface].rb-reserved-surface-main {
6636
+ padding-top: calc(var(--rb-reserved-surface-header-offset, 5.5rem) + 2.5rem);
6637
+ }
6638
+ .rb-preview-editor-offset {
6639
+ padding-bottom: calc(
6640
+ var(--builder-editor-chrome-offset, 0px) +
6641
+ var(--builder-preview-banner-offset, 0px)
6642
+ );
6643
+ }
4046
6644
  .rb-py-12 {
4047
6645
  padding-top: 3rem;
4048
6646
  padding-bottom: 3rem;
@@ -5115,6 +7713,14 @@ var containerResponsiveThemeCss = `/*
5115
7713
  line-height: 1.45;
5116
7714
  }
5117
7715
 
7716
+ /* -------------------------------------------------------------------------- */
7717
+ /* Shared: Site document overlay header clearance */
7718
+ /* -------------------------------------------------------------------------- */
7719
+
7720
+ :where(.theme-scope) :where([data-site-document-overlay-content='true']) :where([data-block]):first-of-type > :where([data-slot='section']) > :where(.rb-container) {
7721
+ padding-top: calc(var(--site-overlay-header-clearance, 0px) + var(--site-overlay-opening-content-extra-pad, 0px));
7722
+ }
7723
+
5118
7724
  /* -------------------------------------------------------------------------- */
5119
7725
  /* Header: Mobile nav overlay transitions */
5120
7726
  /* -------------------------------------------------------------------------- */
@@ -6769,17 +9375,103 @@ var containerResponsiveThemeCss = `/*
6769
9375
  border-radius: var(--rb-block-radius);
6770
9376
  background: transparent;
6771
9377
  cursor: pointer;
6772
- transition: border-color var(--rb-block-transition) ease,
6773
- background-color var(--rb-block-transition) ease;
9378
+ transition: border-color var(--rb-block-transition) ease,
9379
+ background-color var(--rb-block-transition) ease;
9380
+ }
9381
+
9382
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-payment-option:hover {
9383
+ border-color: var(--er-payment-border-hover);
9384
+ }
9385
+
9386
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-payment-option--selected {
9387
+ border-color: var(--er-payment-border-selected);
9388
+ background-color: var(--er-payment-bg-selected);
9389
+ }
9390
+
9391
+ /* Discount code entry */
9392
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount {
9393
+ margin-top: 0.5rem;
9394
+ }
9395
+
9396
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__form {
9397
+ display: grid;
9398
+ gap: 0.5rem;
9399
+ }
9400
+
9401
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__toggle {
9402
+ background: transparent;
9403
+ border: 0;
9404
+ padding: 0;
9405
+ color: rgb(var(--tb-primary));
9406
+ cursor: pointer;
9407
+ font-size: 0.875rem;
9408
+ text-decoration: underline;
9409
+ }
9410
+
9411
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__toggle:hover {
9412
+ text-decoration: none;
9413
+ }
9414
+
9415
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__label {
9416
+ font-size: 0.875rem;
9417
+ font-weight: 600;
9418
+ }
9419
+
9420
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__row {
9421
+ display: flex;
9422
+ gap: 0.5rem;
9423
+ }
9424
+
9425
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__input {
9426
+ flex: 1;
9427
+ border-radius: calc(var(--rb-block-radius) * 0.6);
9428
+ border: 1px solid var(--er-border);
9429
+ padding: 0.5rem 0.75rem;
9430
+ background: rgb(var(--tb-background));
9431
+ color: rgb(var(--tb-foreground));
9432
+ font-size: 0.875rem;
9433
+ }
9434
+
9435
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__input:focus {
9436
+ outline: 2px solid var(--er-focus-ring);
9437
+ outline-offset: 2px;
9438
+ }
9439
+
9440
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__remove {
9441
+ background: transparent;
9442
+ border: 0;
9443
+ padding: 0.25rem;
9444
+ color: var(--er-on-surface);
9445
+ cursor: pointer;
9446
+ opacity: 0.7;
9447
+ }
9448
+
9449
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__apply {
9450
+ background: transparent;
9451
+ border: 0;
9452
+ padding: 0.25rem;
9453
+ color: var(--er-on-surface);
9454
+ cursor: pointer;
9455
+ opacity: 0.8;
6774
9456
  }
6775
9457
 
6776
- :where(.theme-scope) :where([data-block="event-registration"]) .er-payment-option:hover {
6777
- border-color: var(--er-payment-border-hover);
9458
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__remove:hover {
9459
+ opacity: 1;
6778
9460
  }
6779
9461
 
6780
- :where(.theme-scope) :where([data-block="event-registration"]) .er-payment-option--selected {
6781
- border-color: var(--er-payment-border-selected);
6782
- background-color: var(--er-payment-bg-selected);
9462
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__apply:hover {
9463
+ opacity: 1;
9464
+ }
9465
+
9466
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__hint {
9467
+ margin: 0;
9468
+ font-size: 0.875rem;
9469
+ color: var(--er-on-surface-muted);
9470
+ }
9471
+
9472
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-discount__feedback {
9473
+ margin: 0;
9474
+ font-size: 0.875rem;
6783
9475
  }
6784
9476
 
6785
9477
  /* Visually hide native radio but keep focusable (sr-only pattern) */
@@ -9142,7 +11834,7 @@ var containerResponsiveThemeCss = `/*
9142
11834
  width: 100%;
9143
11835
  padding: 0.5rem 0.75rem;
9144
11836
  border: 1px solid var(--ab-input-border, rgb(var(--tb-border, 226 232 240)));
9145
- border-radius: var(--ab-input-radius, var(--radius-control, var(--rb-block-radius, 1rem)));
11837
+ border-radius: var(--ab-input-radius, var(--rb-input-radius, var(--radius-control, var(--rb-block-radius, 1rem))));
9146
11838
  background: transparent;
9147
11839
  font-size: 0.875rem;
9148
11840
  transition: border-color var(--rb-block-transition, 150ms) ease, box-shadow var(--rb-block-transition, 150ms) ease;
@@ -9379,6 +12071,69 @@ var containerResponsiveThemeCss = `/*
9379
12071
  }
9380
12072
  }
9381
12073
 
12074
+ /* Hero typography scales. These classes are emitted by Theme V2 hero looks. */
12075
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-quiet .hero-headline {
12076
+ font-size: clamp(2rem, 4vw, 3rem);
12077
+ line-height: 1.12;
12078
+ }
12079
+
12080
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-quiet .hero-subheadline {
12081
+ font-size: clamp(1rem, 1.2vw, 1.25rem);
12082
+ line-height: 1.55;
12083
+ }
12084
+
12085
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-editorial .hero-headline {
12086
+ font-size: clamp(2.5rem, 5vw, 4rem);
12087
+ line-height: 1.08;
12088
+ }
12089
+
12090
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-editorial .hero-subheadline {
12091
+ font-size: clamp(1.0625rem, 1.4vw, 1.375rem);
12092
+ line-height: 1.55;
12093
+ }
12094
+
12095
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-headline {
12096
+ font-size: clamp(3rem, 6vw, 5rem);
12097
+ line-height: 1.04;
12098
+ }
12099
+
12100
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-subheadline {
12101
+ font-size: clamp(1.125rem, 1.5vw, 1.5rem);
12102
+ line-height: 1.5;
12103
+ }
12104
+
12105
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-headline {
12106
+ font-size: clamp(3.5rem, 8vw, 6.5rem);
12107
+ line-height: 0.98;
12108
+ }
12109
+
12110
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-subheadline {
12111
+ font-size: clamp(1.125rem, 1.4vw, 1.5rem);
12112
+ line-height: 1.45;
12113
+ }
12114
+
12115
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-medium.rb-hero-typography-poster .hero-headline {
12116
+ font-size: clamp(3rem, 6.5vw, 5rem);
12117
+ }
12118
+
12119
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-poster .hero-headline,
12120
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-display .hero-headline {
12121
+ font-size: clamp(2.75rem, 5.5vw, 4.5rem);
12122
+ line-height: 1.05;
12123
+ }
12124
+
12125
+ @container rb-site (max-width: 639px) {
12126
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
12127
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-headline,
12128
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-headline,
12129
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-poster .hero-headline,
12130
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-display .hero-headline {
12131
+ font-size: clamp(2.5rem, 11vw, 3.5rem);
12132
+ line-height: 1.05;
12133
+ }
12134
+ }
12135
+ }
12136
+
9382
12137
  /* =============================================================================
9383
12138
  * Shared: Heading Group (used by CTA, single-button, etc.)
9384
12139
  * =============================================================================
@@ -9768,6 +12523,8 @@ var containerResponsiveThemeCss = `/*
9768
12523
  --rb-modal-overlay-bg: rgb(var(--tb-text, 0 0 0) / 0.6);
9769
12524
  --rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
9770
12525
  --rb-modal-z-index: 20000;
12526
+ --shop-card-radius: var(--rb-block-radius, var(--radius-card, 0.75rem));
12527
+ --shop-control-radius: var(--rb-input-radius, var(--radius-control, 0.375rem));
9771
12528
  }
9772
12529
 
9773
12530
  :where(.theme-scope) .shop--empty {
@@ -9785,7 +12542,7 @@ var containerResponsiveThemeCss = `/*
9785
12542
  background-color: rgba(var(--tb-destructive), 0.1);
9786
12543
  color: rgb(var(--tb-destructive));
9787
12544
  padding: 0.75rem 1rem;
9788
- border-radius: var(--radius-control, 0.375rem);
12545
+ border-radius: var(--shop-control-radius);
9789
12546
  margin-bottom: 1rem;
9790
12547
  font-size: 0.875rem;
9791
12548
  }
@@ -9824,7 +12581,7 @@ var containerResponsiveThemeCss = `/*
9824
12581
  :where(.theme-scope) .shop__card {
9825
12582
  background: rgb(var(--tb-surface));
9826
12583
  border: 1px solid rgb(var(--tb-border));
9827
- border-radius: var(--radius-card, 0.5rem);
12584
+ border-radius: var(--shop-card-radius);
9828
12585
  padding: 1.5rem;
9829
12586
  display: flex;
9830
12587
  flex-direction: column;
@@ -9932,7 +12689,7 @@ var containerResponsiveThemeCss = `/*
9932
12689
  background-color: rgba(var(--tb-destructive), 0.1);
9933
12690
  color: rgb(var(--tb-destructive));
9934
12691
  padding: 0.625rem 0.75rem;
9935
- border-radius: var(--radius-control, 0.375rem);
12692
+ border-radius: var(--shop-control-radius);
9936
12693
  font-size: 0.875rem;
9937
12694
  margin-bottom: 1rem;
9938
12695
  }
@@ -9975,7 +12732,7 @@ var containerResponsiveThemeCss = `/*
9975
12732
  padding: 1.5rem 1rem;
9976
12733
  margin-bottom: 1.25rem;
9977
12734
  border: 1px solid rgb(var(--tb-border));
9978
- border-radius: var(--radius-card);
12735
+ border-radius: var(--shop-card-radius);
9979
12736
  background: rgb(var(--tb-surface));
9980
12737
  }
9981
12738
 
@@ -10050,7 +12807,7 @@ var containerResponsiveThemeCss = `/*
10050
12807
  padding: 2rem;
10051
12808
  background: var(--cp-card-bg);
10052
12809
  border: 1px solid var(--cp-card-border);
10053
- border-radius: var(--radius-card);
12810
+ border-radius: var(--cp-card-radius);
10054
12811
  }
10055
12812
 
10056
12813
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-login__title {
@@ -10120,7 +12877,7 @@ var containerResponsiveThemeCss = `/*
10120
12877
  /* Alerts */
10121
12878
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-alert {
10122
12879
  padding: 1rem 1.25rem;
10123
- border-radius: var(--radius-control);
12880
+ border-radius: var(--cp-control-radius);
10124
12881
  font-size: 0.9375rem;
10125
12882
  line-height: 1.4;
10126
12883
  border-left: 4px solid transparent;
@@ -10178,7 +12935,7 @@ var containerResponsiveThemeCss = `/*
10178
12935
  text-align: center;
10179
12936
  background: var(--cp-card-bg);
10180
12937
  border: 1px dashed var(--cp-card-border);
10181
- border-radius: var(--radius-card);
12938
+ border-radius: var(--cp-card-radius);
10182
12939
  }
10183
12940
 
10184
12941
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-empty__text {
@@ -10190,7 +12947,7 @@ var containerResponsiveThemeCss = `/*
10190
12947
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-card {
10191
12948
  background: var(--cp-card-bg);
10192
12949
  border: 1px solid var(--cp-card-border);
10193
- border-radius: var(--radius-card);
12950
+ border-radius: var(--cp-card-radius);
10194
12951
  padding: 1.25rem;
10195
12952
  }
10196
12953
 
@@ -10308,7 +13065,7 @@ var containerResponsiveThemeCss = `/*
10308
13065
  /* Use tiles as a mini "details grid" rather than event occurrence selection. */
10309
13066
  --rb-event-tile-bg: var(--cp-card-bg);
10310
13067
  --rb-event-tile-border: var(--cp-card-border);
10311
- --rb-event-tile-radius: var(--radius-control);
13068
+ --rb-event-tile-radius: var(--cp-control-radius);
10312
13069
 
10313
13070
  display: flex;
10314
13071
  flex-direction: column;
@@ -10354,7 +13111,7 @@ var containerResponsiveThemeCss = `/*
10354
13111
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-table-wrap {
10355
13112
  background: var(--cp-card-bg);
10356
13113
  border: 1px solid var(--cp-card-border);
10357
- border-radius: var(--radius-card);
13114
+ border-radius: var(--cp-card-radius);
10358
13115
  }
10359
13116
 
10360
13117
  :where(.theme-scope) :where([data-block="customer-portal"]) .cp-table {
@@ -11767,6 +14524,11 @@ var containerResponsiveThemeCss = `/*
11767
14524
  margin-top: 0.5rem;
11768
14525
  }
11769
14526
 
14527
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__form {
14528
+ display: grid;
14529
+ gap: 0.5rem;
14530
+ }
14531
+
11770
14532
  :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__toggle {
11771
14533
  background: transparent;
11772
14534
  border: 0;
@@ -11781,10 +14543,14 @@ var containerResponsiveThemeCss = `/*
11781
14543
  text-decoration: none;
11782
14544
  }
11783
14545
 
11784
- :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__field {
14546
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__label {
14547
+ font-size: 0.875rem;
14548
+ font-weight: 600;
14549
+ }
14550
+
14551
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__row {
11785
14552
  display: flex;
11786
14553
  gap: 0.5rem;
11787
- margin-top: 0.5rem;
11788
14554
  }
11789
14555
 
11790
14556
  :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__input {
@@ -11810,10 +14576,33 @@ var containerResponsiveThemeCss = `/*
11810
14576
  opacity: 0.6;
11811
14577
  }
11812
14578
 
14579
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__apply {
14580
+ background: transparent;
14581
+ border: 0;
14582
+ padding: 0.25rem;
14583
+ cursor: pointer;
14584
+ opacity: 0.8;
14585
+ }
14586
+
11813
14587
  :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__remove:hover {
11814
14588
  opacity: 1;
11815
14589
  }
11816
14590
 
14591
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__apply:hover {
14592
+ opacity: 1;
14593
+ }
14594
+
14595
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__hint {
14596
+ margin: 0;
14597
+ font-size: 0.875rem;
14598
+ opacity: 0.7;
14599
+ }
14600
+
14601
+ :where(.theme-scope) :where([data-block="course-registration"]) .cr-discount__feedback {
14602
+ margin: 0;
14603
+ font-size: 0.875rem;
14604
+ }
14605
+
11817
14606
  /* =============================================================================
11818
14607
  * Altcha (Spam Protection)
11819
14608
  * =============================================================================
@@ -12258,16 +15047,36 @@ var containerResponsiveThemeCss = `/*
12258
15047
  * ============================================================================= */
12259
15048
 
12260
15049
  :where(.theme-scope) .event-listing-compact-container {
12261
- width: min(100%, 56rem);
15050
+ --event-compact-divider-color: color-mix(
15051
+ in oklab,
15052
+ rgb(var(--tb-border, 229 231 235)),
15053
+ rgb(var(--tb-text, 17 24 39)) 4%
15054
+ );
15055
+
15056
+ width: min(100%, 92rem);
12262
15057
  margin-inline: auto;
15058
+ overflow: hidden;
15059
+ border: 1px solid var(--event-compact-divider-color);
15060
+ border-radius: 1rem;
15061
+ background: rgb(var(--tb-background, 255 255 255));
15062
+ box-shadow: 0 1.25rem 3.5rem rgba(var(--tb-shadow), 0.08);
15063
+ }
15064
+
15065
+ :where(.theme-scope) .rb-event-list-treatment-lined-panel .event-listing-compact-container {
15066
+ --event-compact-divider-color: color-mix(
15067
+ in oklab,
15068
+ rgb(var(--tb-border, 229 231 235)),
15069
+ rgb(var(--tb-text, 17 24 39)) 8%
15070
+ );
12263
15071
  }
12264
15072
 
12265
15073
  :where(.theme-scope) .event-compact-row {
12266
- display: flex;
15074
+ display: grid;
15075
+ grid-template-columns: clamp(5.5rem, 8vw, 8rem) minmax(0, 1fr) clamp(15rem, 24vw, 21rem);
12267
15076
  align-items: center;
12268
- gap: 1rem;
12269
- padding: 0.75rem 1rem;
12270
- border-bottom: 1px solid rgb(var(--tb-border, 229 231 235));
15077
+ min-height: 8.75rem;
15078
+ padding: 1.55rem clamp(1.5rem, 3vw, 2.6rem);
15079
+ border-bottom: 1px solid var(--event-compact-divider-color);
12271
15080
  transition: background-color 150ms ease;
12272
15081
  }
12273
15082
 
@@ -12276,70 +15085,212 @@ var containerResponsiveThemeCss = `/*
12276
15085
  }
12277
15086
 
12278
15087
  :where(.theme-scope) .event-compact-row:hover {
12279
- background-color: rgba(var(--tb-primary, 0 0 0), 0.04);
15088
+ background-color: rgba(var(--tb-primary, 0 0 0), 0.035);
12280
15089
  }
12281
15090
 
12282
- :where(.theme-scope) .event-compact-row-content {
12283
- flex: 1;
15091
+ :where(.theme-scope) .event-compact-row-date {
15092
+ display: grid;
15093
+ grid-template-rows: 1rem minmax(2.7rem, auto) 1rem;
15094
+ place-items: center;
15095
+ gap: 0.35rem;
12284
15096
  min-width: 0;
12285
- display: flex;
12286
- flex-direction: column;
12287
- gap: 0.25rem;
15097
+ padding-right: clamp(1rem, 2vw, 1.75rem);
15098
+ text-align: center;
15099
+ text-decoration: none;
15100
+ }
15101
+
15102
+ :where(.theme-scope) .event-compact-row-date-weekday,
15103
+ :where(.theme-scope) .event-compact-row-date-month {
15104
+ display: grid;
15105
+ place-items: center;
15106
+ block-size: 1rem;
15107
+ color: rgb(var(--tb-primary, 0 0 0));
15108
+ font-size: 0.875rem;
15109
+ font-weight: 600;
15110
+ line-height: normal;
15111
+ letter-spacing: 0.08em;
15112
+ }
15113
+
15114
+ :where(.theme-scope) .event-compact-row-date-day {
15115
+ display: grid;
15116
+ place-items: center;
15117
+ min-block-size: clamp(2.7rem, 4.5vw, 3.7rem);
15118
+ color: rgb(var(--tb-text, 17 24 39));
15119
+ font-family: var(--font-heading, var(--font-body, inherit));
15120
+ font-size: clamp(2.3rem, 4.2vw, 3.35rem);
15121
+ font-weight: 400;
15122
+ line-height: 1;
12288
15123
  }
12289
15124
 
12290
- :where(.theme-scope) .event-compact-row-top {
15125
+ :where(.theme-scope) .event-compact-row-content {
15126
+ min-width: 0;
12291
15127
  display: flex;
12292
- align-items: baseline;
12293
- gap: 0.75rem;
12294
- flex-wrap: wrap;
15128
+ flex-direction: column;
15129
+ gap: 1rem;
15130
+ height: 100%;
15131
+ justify-content: center;
15132
+ padding-inline: clamp(1.4rem, 3vw, 3.2rem);
15133
+ border-left: 1px solid var(--event-compact-divider-color);
12295
15134
  }
12296
15135
 
12297
15136
  :where(.theme-scope) .event-compact-row-title {
12298
- font-weight: 600;
12299
- font-size: 0.9375rem;
12300
- line-height: 1.3;
12301
- white-space: nowrap;
15137
+ margin: 0;
15138
+ color: rgb(var(--tb-text, 17 24 39));
15139
+ font-family: var(--font-heading, var(--font-body, inherit));
15140
+ font-size: clamp(1.55rem, 2.6vw, 2.4rem);
15141
+ font-weight: 400;
15142
+ line-height: 1.05;
12302
15143
  overflow: hidden;
12303
15144
  text-overflow: ellipsis;
12304
- min-width: 0;
12305
- flex: 1;
12306
- }
12307
-
12308
- :where(.theme-scope) .event-compact-row-datetime {
12309
- font-size: 0.8125rem;
12310
- opacity: 0.7;
12311
15145
  white-space: nowrap;
12312
- flex-shrink: 0;
12313
15146
  }
12314
15147
 
12315
- :where(.theme-scope) .event-compact-row-bottom {
15148
+ :where(.theme-scope) .event-compact-row-meta {
12316
15149
  display: flex;
12317
15150
  align-items: center;
12318
- gap: 0.75rem;
12319
- font-size: 0.8125rem;
12320
- opacity: 0.7;
15151
+ gap: 0.9rem;
15152
+ min-width: 0;
15153
+ color: rgb(var(--tb-text, 17 24 39));
15154
+ font-size: clamp(0.9375rem, 1.4vw, 1.0625rem);
15155
+ line-height: 1.35;
12321
15156
  }
12322
15157
 
12323
15158
  :where(.theme-scope) .event-compact-row-venue {
12324
15159
  display: inline-flex;
12325
15160
  align-items: center;
12326
- gap: 0.25rem;
15161
+ gap: 0.45rem;
15162
+ min-width: 0;
15163
+ }
15164
+
15165
+ :where(.theme-scope) .event-compact-row-venue svg {
15166
+ width: 1.05em;
15167
+ height: 1.05em;
12327
15168
  }
12328
15169
 
15170
+ :where(.theme-scope) .event-compact-row-teacher,
12329
15171
  :where(.theme-scope) .event-compact-row-price {
12330
- font-weight: 500;
15172
+ display: inline-flex;
15173
+ align-items: center;
15174
+ gap: 0.9rem;
15175
+ }
15176
+
15177
+ :where(.theme-scope) .event-compact-row-teacher::before,
15178
+ :where(.theme-scope) .event-compact-row-price::before {
15179
+ content: "";
15180
+ width: 0.18rem;
15181
+ height: 0.18rem;
15182
+ border-radius: 9999px;
15183
+ background: currentColor;
15184
+ }
15185
+
15186
+ :where(.theme-scope) .event-compact-row-price {
15187
+ color: rgb(var(--tb-secondary, var(--tb-primary, 0 0 0)));
15188
+ font-weight: 600;
15189
+ }
15190
+
15191
+ :where(.theme-scope) .event-compact-row-action {
15192
+ display: grid;
15193
+ align-content: center;
15194
+ gap: 1rem;
15195
+ height: 100%;
15196
+ padding-left: clamp(1.5rem, 3vw, 3.2rem);
15197
+ border-left: 1px solid var(--event-compact-divider-color);
15198
+ }
15199
+
15200
+ :where(.theme-scope) .event-compact-row-datetime {
15201
+ display: inline-flex;
15202
+ align-items: center;
15203
+ gap: 0.65rem;
15204
+ color: rgb(var(--tb-text, 17 24 39));
15205
+ font-size: clamp(0.9375rem, 1.45vw, 1.0625rem);
15206
+ line-height: 1.3;
15207
+ white-space: nowrap;
15208
+ }
15209
+
15210
+ :where(.theme-scope) .event-compact-row-datetime svg {
15211
+ width: 1.1em;
15212
+ height: 1.1em;
15213
+ flex-shrink: 0;
12331
15214
  }
12332
15215
 
12333
15216
  :where(.theme-scope) .event-compact-row-status {
15217
+ color: rgb(var(--tb-muted, var(--tb-text, 17 24 39)));
12334
15218
  font-weight: 500;
12335
- opacity: 0.8;
12336
15219
  }
12337
15220
 
12338
15221
  :where(.theme-scope) .event-compact-row-cta {
12339
- flex-shrink: 0;
15222
+ width: min(100%, 15rem);
15223
+ min-height: 2.7rem;
15224
+ justify-content: space-between;
15225
+ gap: 1rem;
15226
+ border-radius: 9999px;
15227
+ padding-inline: 1.25rem 1rem;
12340
15228
  white-space: nowrap;
12341
15229
  }
12342
15230
 
15231
+ :where(.theme-scope) .event-compact-row-cta svg {
15232
+ width: 1.25rem;
15233
+ height: 1.25rem;
15234
+ flex-shrink: 0;
15235
+ }
15236
+
15237
+ @container rb-site (max-width: 767px) {
15238
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
15239
+ :where(.theme-scope) .event-listing-compact-container {
15240
+ border-radius: 0.875rem;
15241
+ }
15242
+
15243
+ :where(.theme-scope) .event-compact-row {
15244
+ grid-template-columns: 4.75rem minmax(0, 1fr);
15245
+ min-height: 0;
15246
+ padding: 1.25rem;
15247
+ row-gap: 1.1rem;
15248
+ }
15249
+
15250
+ :where(.theme-scope) .event-compact-row-date {
15251
+ padding-right: 0.9rem;
15252
+ }
15253
+
15254
+ :where(.theme-scope) .event-compact-row-date-day {
15255
+ font-size: 2.35rem;
15256
+ }
15257
+
15258
+ :where(.theme-scope) .event-compact-row-content {
15259
+ gap: 0.75rem;
15260
+ padding-left: 1.1rem;
15261
+ padding-right: 0;
15262
+ }
15263
+
15264
+ :where(.theme-scope) .event-compact-row-title {
15265
+ font-size: clamp(1.35rem, 8vw, 1.9rem);
15266
+ white-space: normal;
15267
+ }
15268
+
15269
+ :where(.theme-scope) .event-compact-row-meta {
15270
+ flex-wrap: wrap;
15271
+ gap: 0.5rem 0.8rem;
15272
+ }
15273
+
15274
+ :where(.theme-scope) .event-compact-row-action {
15275
+ grid-column: 1 / -1;
15276
+ grid-template-columns: minmax(0, 1fr);
15277
+ gap: 0.85rem;
15278
+ padding-left: 0;
15279
+ padding-top: 1rem;
15280
+ border-left: none;
15281
+ border-top: 1px solid var(--event-compact-divider-color);
15282
+ }
15283
+
15284
+ :where(.theme-scope) .event-compact-row-datetime {
15285
+ white-space: normal;
15286
+ }
15287
+
15288
+ :where(.theme-scope) .event-compact-row-cta {
15289
+ width: 100%;
15290
+ }
15291
+ }
15292
+ }
15293
+
12343
15294
  :where(.theme-scope) .section-state__callout {
12344
15295
  text-align: center;
12345
15296
  padding: 2rem;
@@ -12384,6 +15335,67 @@ var containerResponsiveThemeCss = `/*
12384
15335
  border-color: rgba(var(--tb-destructive, 239 68 68), 0.3);
12385
15336
  background: rgba(var(--tb-destructive, 239 68 68), 0.1);
12386
15337
  color: rgb(var(--tb-destructive, 239 68 68));
15338
+ }
15339
+
15340
+ /* =============================================================================
15341
+ * Shared: Heading Decorations
15342
+ * =============================================================================
15343
+ */
15344
+
15345
+ :where(.theme-scope) .rb-heading-decoration {
15346
+ display: block;
15347
+ flex: 0 0 auto;
15348
+ pointer-events: none;
15349
+ }
15350
+
15351
+ :where(.theme-scope) .rb-heading-decoration-placement-after-heading {
15352
+ margin-top: 0.35rem;
15353
+ }
15354
+
15355
+ :where(.theme-scope) .rb-heading-decoration-placement-under-centered-heading {
15356
+ margin-left: auto;
15357
+ margin-right: auto;
15358
+ }
15359
+
15360
+ :where(.theme-scope) .rb-heading-decoration-organic-squiggle {
15361
+ width: clamp(5.5rem, 15vw, 9rem);
15362
+ height: 1.1rem;
15363
+ background-color: currentColor;
15364
+ opacity: 0.9;
15365
+ -webkit-mask: url("data:image/svg+xml,%3Csvg width='144' height='18' viewBox='0 0 144 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 10C15 1 27 1 40 10C53 18 66 18 79 10C92 1 105 1 118 10C127 16 136 17 142 12' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
15366
+ mask: url("data:image/svg+xml,%3Csvg width='144' height='18' viewBox='0 0 144 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 10C15 1 27 1 40 10C53 18 66 18 79 10C92 1 105 1 118 10C127 16 136 17 142 12' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
15367
+ }
15368
+
15369
+ :where(.theme-scope) .rb-heading-decoration-short-center-rule {
15370
+ width: 4.5rem;
15371
+ height: 0.125rem;
15372
+ border-radius: 999px;
15373
+ background-color: currentColor;
15374
+ opacity: 0.75;
15375
+ }
15376
+
15377
+ :where(.theme-scope) .rb-heading-decoration-color-text {
15378
+ color: rgb(var(--tb-text));
15379
+ }
15380
+
15381
+ :where(.theme-scope) .rb-heading-decoration-color-primary {
15382
+ color: rgb(var(--tb-primary));
15383
+ }
15384
+
15385
+ :where(.theme-scope) .rb-heading-decoration-color-secondary {
15386
+ color: rgb(var(--tb-secondary));
15387
+ }
15388
+
15389
+ :where(.theme-scope) .rb-heading-decoration-color-accent {
15390
+ color: rgb(var(--tb-accent));
15391
+ }
15392
+
15393
+ :where(.theme-scope) .rb-heading-decoration-color-border {
15394
+ color: rgb(var(--tb-border));
15395
+ }
15396
+
15397
+ :where(.theme-scope) .rb-heading-decoration-color-muted {
15398
+ color: rgb(var(--tb-mutedText));
12387
15399
  }`;
12388
15400
 
12389
15401
  // ../theme-core/src/ThemeScopeCore.tsx
@@ -12570,11 +15582,15 @@ import { jsx as jsx2 } from "react/jsx-runtime";
12570
15582
  import * as React from "react";
12571
15583
  import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
12572
15584
 
15585
+ // ../theme-core/src/siteChromeOverlayClearance.ts
15586
+ var SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
15587
+ var SITE_CHROME_VISIBLE_HEADER_SELECTOR = `[${SITE_CHROME_VISIBLE_HEADER_ATTR}="true"]`;
15588
+
12573
15589
  // ../theme-core/src/siteChrome.tsx
12574
15590
  import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
12575
15591
 
12576
15592
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
12577
- import { z as z17 } from "zod";
15593
+ import { z as z18 } from "zod";
12578
15594
 
12579
15595
  // ../theme-core/src/inputs/core.ts
12580
15596
  var CORNER_RADIUS_MAP4 = {
@@ -12767,33 +15783,33 @@ var CSS_DECLARATION_PROPERTY_PATTERN = /^(?:-[a-zA-Z][a-zA-Z0-9-]*|[a-zA-Z][a-zA
12767
15783
  var UNSAFE_CSS_MARKUP_PATTERN = /[{}<>]|<\/|<script/i;
12768
15784
  var EXTERNAL_URL_PATTERN = /url\s*\(\s*['"]?(?:https?:|\/\/)/i;
12769
15785
  var JAVASCRIPT_URL_PATTERN2 = /javascript\s*:/i;
12770
- var themeBridgeConfigSchema = z17.object({
12771
- tokens: z17.record(z17.string(), z17.string()),
12772
- typography: z17.object({
12773
- headingFamily: z17.string().optional(),
12774
- bodyFamily: z17.string().optional(),
12775
- headingWeight: z17.number().optional(),
12776
- bodyWeight: z17.number().optional()
15786
+ var themeBridgeConfigSchema = z18.object({
15787
+ tokens: z18.record(z18.string(), z18.string()),
15788
+ typography: z18.object({
15789
+ headingFamily: z18.string().optional(),
15790
+ bodyFamily: z18.string().optional(),
15791
+ headingWeight: z18.number().optional(),
15792
+ bodyWeight: z18.number().optional()
12777
15793
  }).optional(),
12778
- spacing: z17.enum(["comfortable", "standard", "dense"]).optional(),
12779
- corners: z17.enum(["square", "soft", "rounded", "pill"]).optional(),
12780
- shadows: z17.enum(["none", "low", "medium", "high"]).optional(),
12781
- components: z17.object({
12782
- buttons: z17.union([
12783
- z17.boolean(),
12784
- z17.object({
12785
- variants: z17.array(z17.enum(["primary", "secondary", "outline", "ghost"])).optional()
15794
+ spacing: z18.enum(["comfortable", "standard", "dense"]).optional(),
15795
+ corners: z18.enum(["square", "soft", "rounded", "pill"]).optional(),
15796
+ shadows: z18.enum(["none", "low", "medium", "high"]).optional(),
15797
+ components: z18.object({
15798
+ buttons: z18.union([
15799
+ z18.boolean(),
15800
+ z18.object({
15801
+ variants: z18.array(z18.enum(["primary", "secondary", "outline", "ghost"])).optional()
12786
15802
  })
12787
15803
  ]).optional(),
12788
- cards: z17.union([
12789
- z17.boolean(),
12790
- z17.object({
12791
- variants: z17.array(z17.enum(["default", "elevated", "outlined"])).optional()
15804
+ cards: z18.union([
15805
+ z18.boolean(),
15806
+ z18.object({
15807
+ variants: z18.array(z18.enum(["default", "elevated", "outlined"])).optional()
12792
15808
  })
12793
15809
  ]).optional(),
12794
- inputs: z17.boolean().optional()
15810
+ inputs: z18.boolean().optional()
12795
15811
  }).optional(),
12796
- overrides: z17.record(z17.string(), z17.string()).optional()
15812
+ overrides: z18.record(z18.string(), z18.string()).optional()
12797
15813
  }).passthrough();
12798
15814
  var TOKEN_ALIASES = [
12799
15815
  { source: "text", target: "foreground" },
@@ -12932,10 +15948,14 @@ function buildSpacingCssVars(spacing) {
12932
15948
  function buildCornerCssVars(corners2) {
12933
15949
  const cornersPreset = CORNERS_CONFIG[corners2 ?? "rounded"];
12934
15950
  return {
12935
- "--radius-control": cornersPreset.control,
12936
- "--radius-card": cornersPreset.card,
12937
- "--rb-block-radius": cornersPreset.block,
12938
- "--rb-button-radius": cornersPreset.button,
15951
+ [THEME_RADIUS_CSS_VARS.block]: cornersPreset.block,
15952
+ [THEME_RADIUS_CSS_VARS.button]: cornersPreset.button,
15953
+ [THEME_RADIUS_CSS_VARS.input]: cornersPreset.control,
15954
+ // Deprecated compatibility aliases intentionally mirror the full
15955
+ // ThemeScope runtime contract so user-authored CSS can move between SDK
15956
+ // bridge and public runtimes without radius drift.
15957
+ [THEME_RADIUS_CSS_VARS.legacyControl]: cornersPreset.control,
15958
+ [THEME_RADIUS_CSS_VARS.legacyCard]: cornersPreset.block,
12939
15959
  "--tb-radius-control": cornersPreset.control,
12940
15960
  "--tb-radius-card": cornersPreset.card
12941
15961
  };