@riverbankcms/sdk 0.98.0 → 0.99.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 (120) hide show
  1. package/dist/{PreviewEditorSidebar-CG3SSJND.mjs → PreviewEditorSidebar-TPOKCCKY.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-RHNGKAAU.mjs → PreviewEditorUI-Y347GLC2.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-OGTXRQ4M.mjs +8 -0
  4. package/dist/_dts/ai/src/contracts/proposals.d.ts +36 -36
  5. package/dist/_dts/api/src/billing.d.ts +2 -0
  6. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +5 -1
  7. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  8. package/dist/_dts/api/src/index.d.ts +1 -1
  9. package/dist/_dts/api/src/siteOperations.d.ts +65 -1
  10. package/dist/_dts/billing/src/site-arrangements.d.ts +151 -0
  11. package/dist/_dts/billing/src/subscriptions/store.d.ts +2 -0
  12. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/resolveThumbnail.d.ts +2 -1
  13. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -0
  14. package/dist/_dts/blocks/src/system/runtime/components/booking/DatePicker.d.ts +6 -2
  15. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +3 -1
  16. package/dist/_dts/blocks/src/system/runtime/components/booking/TimeSlotSelector.d.ts +10 -4
  17. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +2 -2
  18. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +11 -0
  19. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/StepIndicator.d.ts +3 -1
  20. package/dist/_dts/blocks/src/system/runtime/shared/components/FeedbackMessage.d.ts +2 -1
  21. package/dist/_dts/blocks/src/system/runtime/{nodes/event-registration → shared/components}/SelectableOptionCard.d.ts +11 -2
  22. package/dist/_dts/blocks/src/system/runtime/shared/components/StepIndicator.d.ts +16 -5
  23. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  24. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  25. package/dist/_dts/blocks/src/utils/date-formatting.d.ts +17 -1
  26. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +274 -30
  27. package/dist/_dts/sdk/src/__mocks__/next-cache.d.ts +1 -1
  28. package/dist/_dts/sdk/src/cli/commands/push.d.ts +13 -0
  29. package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +6 -18
  30. package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +2 -4
  31. package/dist/_dts/sdk/src/cli/merge-remote/pageMergeReport.d.ts +6 -18
  32. package/dist/_dts/sdk/src/cli/merge-remote/pageSnapshots.d.ts +2 -4
  33. package/dist/_dts/sdk/src/cli/merge-remote/sharedBaseSnapshots.d.ts +32 -0
  34. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergePlan.d.ts +27 -0
  35. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergeReport.d.ts +63 -0
  36. package/dist/_dts/sdk/src/client/index.d.ts +6 -0
  37. package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +6 -1
  38. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  39. package/dist/_dts/sdk/src/prebuild/loader.d.ts +8 -1
  40. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  41. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -0
  42. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -0
  43. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +8 -0
  44. package/dist/_dts/sdk/src/rendering/index.d.ts +7 -7
  45. package/dist/_dts/sdk/src/rendering/overrides.d.ts +2 -0
  46. package/dist/_dts/sdk/src/routing/resolveRoute.d.ts +18 -0
  47. package/dist/_dts/sdk/src/test/apiClient.d.ts +17 -0
  48. package/dist/_dts/sdk/src/test/bunDom.setup.d.ts +1 -0
  49. package/dist/_dts/sdk/src/test/env.d.ts +4 -0
  50. package/dist/_dts/sdk/src/version.d.ts +1 -1
  51. package/dist/_dts/site-commands/src/commands.d.ts +3 -3
  52. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  53. package/dist/_dts/theme-core/src/interactive/generateBaseCSS.d.ts +6 -0
  54. package/dist/_dts/theme-core/src/status/contextualColors.d.ts +6 -0
  55. package/dist/_dts/theme-core/src/status/index.d.ts +1 -0
  56. package/dist/{chunk-H24OU7WG.mjs → chunk-4HXF2QLH.mjs} +2 -2
  57. package/dist/{chunk-QPXE2OUZ.mjs → chunk-EMJIT3ZJ.mjs} +1 -1
  58. package/dist/{chunk-PKDPQHB5.mjs → chunk-PM7HGDHM.mjs} +2 -2
  59. package/dist/{chunk-DBRI3PQF.mjs → chunk-XO34WBBP.mjs} +1383 -1143
  60. package/dist/{chunk-6WDBXCPX.mjs → chunk-YGTTEVUM.mjs} +7 -7
  61. package/dist/{chunk-V2BYFSPW.mjs → chunk-YWTCCOSF.mjs} +8 -0
  62. package/dist/cli/index.mjs +1010 -921
  63. package/dist/client/{accordion-Q2BDNL53.mjs → accordion-QSUEYL4L.mjs} +2 -2
  64. package/dist/client/{bookingForm-ZMP4P7EK.mjs → bookingForm-QYGAHPDP.mjs} +364 -300
  65. package/dist/client/bookings.mjs +697 -411
  66. package/dist/client/{carousel-LW3UXPWO.mjs → carousel-SM2LEWAU.mjs} +3 -3
  67. package/dist/client/{cart-Z6D3KS6K.mjs → cart-3N3SFKNQ.mjs} +7 -7
  68. package/dist/client/{checkout-YMT2QJQM.mjs → checkout-YFAYPKPZ.mjs} +7 -7
  69. package/dist/client/{chunk-XNTHVZ25.mjs → chunk-5DLGREUB.mjs} +1 -1
  70. package/dist/client/{chunk-SK2BMD22.mjs → chunk-CLZ7NBSP.mjs} +147 -75
  71. package/dist/client/{chunk-R4XK3CKR.mjs → chunk-CYJ3MUFP.mjs} +6 -5
  72. package/dist/client/{chunk-JNE6UI6U.mjs → chunk-H3H3ODO7.mjs} +1 -1
  73. package/dist/client/{chunk-IEOECM7U.mjs → chunk-HPEQ4YWW.mjs} +28 -73
  74. package/dist/client/{chunk-PCHACQEB.mjs → chunk-IIUIKJ4K.mjs} +15 -7
  75. package/dist/client/{chunk-KDP7ZRZV.mjs → chunk-IOAHWAQG.mjs} +2 -0
  76. package/dist/client/{chunk-26ZBRXFR.mjs → chunk-JTKBF3W2.mjs} +3 -3
  77. package/dist/client/{chunk-OLAOAZEO.mjs → chunk-K7KTSACR.mjs} +1 -1
  78. package/dist/client/{chunk-ET2MDQQT.mjs → chunk-R32M5HFS.mjs} +6 -6
  79. package/dist/client/{chunk-DRRQ7QSL.mjs → chunk-WEVT46PX.mjs} +3 -3
  80. package/dist/client/{chunk-HBQEAOG4.mjs → chunk-ZU65LTI3.mjs} +1 -1
  81. package/dist/client/client.mjs +1875 -1581
  82. package/dist/client/{courseRegistration-DGKCMC77.mjs → courseRegistration-LYBE7VVK.mjs} +7 -7
  83. package/dist/client/{eventCalendar-74Z2NNFM.mjs → eventCalendar-FMTB75X6.mjs} +9 -9
  84. package/dist/client/{eventCombined-GK2ODOX2.mjs → eventCombined-E4LUCJXT.mjs} +9 -9
  85. package/dist/client/{eventDetails-MONAGT3N.mjs → eventDetails-GELSRR4Z.mjs} +9 -9
  86. package/dist/client/{eventListing-SKGAO6PS.mjs → eventListing-TB623B6R.mjs} +9 -9
  87. package/dist/client/{eventRegistration-6KISGXRD.mjs → eventRegistration-NRIKHXTI.mjs} +9 -9
  88. package/dist/client/{form-FXPRTXHI.mjs → form-Y4U4IAXE.mjs} +3 -3
  89. package/dist/client/{headerSection-7NAN5WNB.mjs → headerSection-QSOVV5P7.mjs} +3 -3
  90. package/dist/client/hooks.mjs +115 -21
  91. package/dist/client/{locationMap-UERN74U4.mjs → locationMap-QYCAHH7H.mjs} +3 -3
  92. package/dist/client/{newsletterForm-SGWXMJ7U.mjs → newsletterForm-NWHY5TBY.mjs} +3 -3
  93. package/dist/client/{productDetail-HN3HWZQZ.mjs → productDetail-FYDMU2CE.mjs} +7 -7
  94. package/dist/client/{productList-YT22Z5UR.mjs → productList-D76CGACQ.mjs} +7 -7
  95. package/dist/client/rendering/client.mjs +1209 -975
  96. package/dist/client/rendering/islands.mjs +19 -19
  97. package/dist/client/rendering.mjs +1952 -1638
  98. package/dist/client/{shop-TKEDNWUS.mjs → shop-SOUACT5N.mjs} +7 -7
  99. package/dist/preview-next/before-render.mjs +8 -0
  100. package/dist/preview-next/client/runtime.mjs +5 -5
  101. package/dist/preview-next/middleware.mjs +8 -0
  102. package/dist/{sdk-runtime-LWNYCQF2.mjs → sdk-runtime-XPVE3LBA.mjs} +6 -6
  103. package/dist/server/components.mjs +917 -765
  104. package/dist/server/config-validation.mjs +100 -19
  105. package/dist/server/config.mjs +100 -19
  106. package/dist/server/data.mjs +115 -21
  107. package/dist/server/index.mjs +59 -25
  108. package/dist/server/next.mjs +1017 -816
  109. package/dist/server/page-converter.mjs +92 -19
  110. package/dist/server/prebuild-loader.mjs +42 -23
  111. package/dist/server/prebuild.mjs +1 -1
  112. package/dist/server/rendering/server.mjs +932 -767
  113. package/dist/server/rendering.mjs +968 -776
  114. package/dist/server/routing.mjs +162 -36
  115. package/dist/server/server.mjs +156 -32
  116. package/dist/server/theme-bridge.mjs +597 -505
  117. package/dist/server/theme.mjs +5 -4
  118. package/dist/styles/index.css +499 -490
  119. package/package.json +6 -4
  120. package/dist/SdkPreviewModeRuntime-OV5PNJBB.mjs +0 -8
@@ -6654,6 +6654,79 @@ var TokenResolver = class {
6654
6654
  }
6655
6655
  };
6656
6656
 
6657
+ // ../theme-core/src/interactive/generateBaseCSS.ts
6658
+ var FONT_WEIGHT_MAP = {
6659
+ regular: 400,
6660
+ medium: 500,
6661
+ semibold: 600,
6662
+ bold: 700
6663
+ };
6664
+ function generateBaseInteractiveCSS(options) {
6665
+ const {
6666
+ typography,
6667
+ padding,
6668
+ borderRadius,
6669
+ includeTransition = true,
6670
+ includeFlexCenter = false,
6671
+ borderWidth
6672
+ } = options;
6673
+ const rules = [];
6674
+ if (typography.fontWeight !== void 0) {
6675
+ const weight = typeof typography.fontWeight === "number" ? typography.fontWeight : FONT_WEIGHT_MAP[typography.fontWeight];
6676
+ rules.push(`font-weight: ${weight};`);
6677
+ }
6678
+ if (typography.typography === "heading") {
6679
+ rules.push(`font-family: var(--font-heading);`);
6680
+ rules.push(`letter-spacing: var(--ls-heading);`);
6681
+ } else if (typography.typography === "body") {
6682
+ rules.push(`font-family: var(--font-body);`);
6683
+ }
6684
+ if (typography.italic) {
6685
+ rules.push(`font-style: italic;`);
6686
+ }
6687
+ if (typography.textTransform && typography.textTransform !== "none") {
6688
+ rules.push(`text-transform: ${typography.textTransform};`);
6689
+ }
6690
+ if (padding) {
6691
+ if (borderWidth && borderWidth !== "0px") {
6692
+ const paddingParts = padding.split(" ");
6693
+ const verticalPadding = paddingParts[0] || "0.5rem";
6694
+ const horizontalPadding = paddingParts[1] || paddingParts[0] || "1rem";
6695
+ rules.push(`padding-top: calc(${verticalPadding} - ${borderWidth} - 1px);`);
6696
+ rules.push(`padding-bottom: calc(${verticalPadding} - ${borderWidth} - 1px);`);
6697
+ rules.push(`padding-left: calc(${horizontalPadding} - ${borderWidth});`);
6698
+ rules.push(`padding-right: calc(${horizontalPadding} - ${borderWidth});`);
6699
+ } else {
6700
+ rules.push(`padding: ${padding};`);
6701
+ }
6702
+ }
6703
+ if (borderRadius) {
6704
+ rules.push(`border-radius: ${borderRadius};`);
6705
+ }
6706
+ if (includeTransition) {
6707
+ rules.push(`transition: all 200ms ease;`);
6708
+ }
6709
+ if (includeFlexCenter) {
6710
+ rules.push(`display: inline-flex;`);
6711
+ rules.push(`align-items: center;`);
6712
+ rules.push(`justify-content: center;`);
6713
+ rules.push(`cursor: pointer;`);
6714
+ }
6715
+ return rules;
6716
+ }
6717
+ function generateInteractiveChildInheritanceCSS(selector) {
6718
+ return `
6719
+ ${selector} * {
6720
+ font-family: inherit;
6721
+ font-weight: inherit;
6722
+ font-style: inherit;
6723
+ letter-spacing: inherit;
6724
+ text-transform: inherit;
6725
+ color: inherit;
6726
+ }
6727
+ `;
6728
+ }
6729
+
6657
6730
  // ../theme-core/src/buttons/effects/presets/background.ts
6658
6731
  var darkenBackgroundEffect = {
6659
6732
  id: "darken-background",
@@ -8148,7 +8221,9 @@ function resolveAliasSource(enabled) {
8148
8221
  function variantChunks(variant, global, themeSizes, themeId, tokens, theme) {
8149
8222
  const out = [];
8150
8223
  const variantId = parseButtonVariantIdForCss(variant.id);
8151
- out.push(variantBaseRule(variant, variantId, global, themeId, tokens, theme));
8224
+ const selector = `:where([data-theme-scope="${themeId}"]) ${themeButtonSelector(variantId)}`;
8225
+ out.push(variantBaseRule(variant, selector, global, tokens, theme));
8226
+ out.push({ raw: generateInteractiveChildInheritanceCSS(selector) });
8152
8227
  const hoverBg = variantHoverBackgroundRule(variant, variantId, global, themeId, tokens);
8153
8228
  if (hoverBg) out.push(hoverBg);
8154
8229
  out.push(variantFocusVisibleRule(variantId, themeId));
@@ -8165,8 +8240,7 @@ function parseButtonVariantIdForCss(value) {
8165
8240
  }
8166
8241
  return variantId;
8167
8242
  }
8168
- function variantBaseRule(variant, variantId, global, themeId, tokens, theme) {
8169
- const selector = `:where([data-theme-scope="${themeId}"]) ${themeButtonSelector(variantId)}`;
8243
+ function variantBaseRule(variant, selector, global, tokens, theme) {
8170
8244
  const decls = [];
8171
8245
  decls.push(["font-weight", String(global.fontWeight)]);
8172
8246
  decls.push(["font-family", resolveFontFamily(global)]);
@@ -8802,15 +8876,16 @@ var joyStamp = defineButtonPersonality({
8802
8876
  // 700, matching the mockup's chunky button labels.
8803
8877
  typography: "heading",
8804
8878
  fontWeight: 700,
8879
+ fontSize: "text-lg",
8805
8880
  borderWidth: 2,
8806
8881
  hoverTransform: "none",
8807
8882
  hoverColor: "none"
8808
8883
  },
8809
8884
  sizes: {
8810
- sm: { padding: "0.625rem 1.25rem", fontSize: "text-sm" },
8811
- md: { padding: "0.875rem 1.75rem", fontSize: "text-base" },
8812
- lg: { padding: "1.125rem 2.25rem", fontSize: "text-lg" },
8813
- xl: { padding: "1.25rem 2.75rem", fontSize: "text-xl" }
8885
+ sm: { padding: "0.625rem 1.25rem", fontSize: "text-base" },
8886
+ md: { padding: "0.875rem 1.75rem", fontSize: "text-lg" },
8887
+ lg: { padding: "1.125rem 2.25rem", fontSize: "text-xl" },
8888
+ xl: { padding: "1.25rem 2.75rem", fontSize: "text-2xl" }
8814
8889
  },
8815
8890
  variants: [
8816
8891
  {
@@ -9388,6 +9463,20 @@ function generateDefaultCardSystem(theme) {
9388
9463
  };
9389
9464
  }
9390
9465
 
9466
+ // ../theme-core/src/status/contextualColors.ts
9467
+ var STATUS_MUTED_COLOR_VAR = "--rb-status-muted-color";
9468
+ var DEFAULT_STATUS_MUTED_COLOR = "rgb(var(--tb-mutedText))";
9469
+ var SURFACE_MUTED_STATUS_COLOR = "color-mix(in oklab, currentColor, transparent 18%)";
9470
+ function statusMutedColorValue() {
9471
+ return `var(${STATUS_MUTED_COLOR_VAR}, ${DEFAULT_STATUS_MUTED_COLOR})`;
9472
+ }
9473
+ function statusMutedColorDeclaration() {
9474
+ return `color: ${statusMutedColorValue()};`;
9475
+ }
9476
+ function contextualMutedStatusColorDeclaration(value) {
9477
+ return `${STATUS_MUTED_COLOR_VAR}: ${value}`;
9478
+ }
9479
+
9391
9480
  // ../theme-core/src/cards/generateCardCss.ts
9392
9481
  var PER_CORNER_RADIUS_MAP = {
9393
9482
  square: "0",
@@ -9461,6 +9550,7 @@ function generateVariantCSS(variant, themeId, tokens, theme) {
9461
9550
  if (variant.foregroundToken) {
9462
9551
  rules.push(`color: ${tokens.getColor(variant.foregroundToken)}`);
9463
9552
  }
9553
+ rules.push(contextualMutedStatusColorDeclaration(SURFACE_MUTED_STATUS_COLOR));
9464
9554
  if (variant.accentEdge) {
9465
9555
  const side = ACCENT_EDGE_SIDE_MAP[variant.accentEdge.edge];
9466
9556
  const width = ACCENT_EDGE_WIDTH_MAP[variant.accentEdge.width];
@@ -9719,7 +9809,7 @@ var LABEL_FONT_SIZE_MAP = {
9719
9809
  base: "1rem"
9720
9810
  // 16px
9721
9811
  };
9722
- var FONT_WEIGHT_MAP = {
9812
+ var FONT_WEIGHT_MAP2 = {
9723
9813
  regular: "400",
9724
9814
  medium: "500",
9725
9815
  semibold: "600",
@@ -40735,14 +40825,27 @@ function BookingFormSSR({
40735
40825
  return /* @__PURE__ */ jsxs15(
40736
40826
  "div",
40737
40827
  {
40738
- className: `booking-form-ssr ${className ?? ""}`.trim(),
40828
+ className: `rb-reg-surface booking-form-ssr ${display.state === "missing" ? "" : "ab-shell "}${className ?? ""}`.trim(),
40739
40829
  ...getIslandRootProps("booking-form", blockId),
40830
+ "aria-busy": display.state === "missing" ? void 0 : true,
40831
+ "aria-label": display.state === "missing" ? void 0 : "Loading booking form",
40832
+ role: display.state === "missing" ? void 0 : "status",
40740
40833
  children: [
40741
40834
  /* @__PURE__ */ jsx29(IslandPropsScript, { value: islandProps }),
40742
- /* @__PURE__ */ jsx29("div", { className: "booking-form-ssr__summary", children: display.state === "missing" ? /* @__PURE__ */ jsx29("p", { className: "booking-form-ssr__error", children: display.message }) : /* @__PURE__ */ jsxs15(Fragment3, { children: [
40743
- /* @__PURE__ */ jsx29("strong", { children: display.submitLabel }),
40744
- display.successMessage ? /* @__PURE__ */ jsx29("p", { className: "booking-form-ssr__success", children: display.successMessage }) : null
40745
- ] }) }),
40835
+ display.state === "missing" ? /* @__PURE__ */ jsx29("div", { className: "alert alert-error", role: "alert", children: /* @__PURE__ */ jsx29("p", { className: "ab-text", children: display.message }) }) : /* @__PURE__ */ jsxs15(Fragment3, { children: [
40836
+ /* @__PURE__ */ jsx29("span", { className: "rb-sr-only", children: "Loading booking form..." }),
40837
+ /* @__PURE__ */ jsxs15("div", { className: "rb-reg-stack", "aria-hidden": "true", children: [
40838
+ /* @__PURE__ */ jsx29("div", { className: "rb-reg-summary", children: /* @__PURE__ */ jsxs15("div", { className: "rb-reg-stack rb-reg-stack--sm", children: [
40839
+ /* @__PURE__ */ jsx29("div", { className: "rb-shell-line rb-shell-line--md" }),
40840
+ /* @__PURE__ */ jsx29("div", { className: "rb-shell-line rb-shell-line--sm" })
40841
+ ] }) }),
40842
+ /* @__PURE__ */ jsxs15("div", { className: "rb-reg-stack rb-reg-stack--sm", children: [
40843
+ /* @__PURE__ */ jsx29("div", { className: "rb-shell-line rb-shell-line--lg" }),
40844
+ /* @__PURE__ */ jsx29("div", { className: "rb-shell-line rb-shell-line--xs" })
40845
+ ] }),
40846
+ /* @__PURE__ */ jsx29("div", { className: "rb-wizard-actions", children: /* @__PURE__ */ jsx29("div", { className: "ab-shell-button", children: display.submitLabel }) })
40847
+ ] })
40848
+ ] }),
40746
40849
  children
40747
40850
  ]
40748
40851
  }
@@ -43394,20 +43497,38 @@ function EventRegistrationShell({
43394
43497
  "div",
43395
43498
  {
43396
43499
  id: EVENT_REGISTRATION_ANCHOR_ID,
43397
- className: "er-container er-registration-shell",
43500
+ className: "rb-reg-surface er-container er-registration-shell",
43398
43501
  "aria-busy": "true",
43399
43502
  role: "status",
43400
43503
  children: /* @__PURE__ */ jsxs38("div", { className: "er-payment-layout er-payment-layout--no-sidebar", children: [
43401
43504
  /* @__PURE__ */ jsxs38("div", { className: "er-payment-layout-main", children: [
43402
- /* @__PURE__ */ jsx54("div", { className: "er-steps-nav er-registration-shell__steps", "aria-hidden": "true", children: /* @__PURE__ */ jsx54("ol", { className: "er-steps", children: display.stepLabels.map((label, index) => {
43505
+ /* @__PURE__ */ jsx54("div", { className: "rb-steps-nav er-steps-nav er-registration-shell__steps", "aria-hidden": "true", children: /* @__PURE__ */ jsx54("ol", { className: "rb-steps er-steps", children: display.stepLabels.map((label, index) => {
43403
43506
  const isActive = index === 0;
43404
- return /* @__PURE__ */ jsxs38("li", { className: "er-step", children: [
43405
- /* @__PURE__ */ jsx54("span", { className: cx("er-step-circle", isActive && "er-step-circle--active"), children: index + 1 }),
43406
- /* @__PURE__ */ jsx54("span", { className: cx("er-step-label", isActive && "er-step-label--active"), children: label }),
43407
- index < display.stepLabels.length - 1 ? /* @__PURE__ */ jsx54("span", { className: "er-step-connector" }) : null
43507
+ return /* @__PURE__ */ jsxs38("li", { className: "rb-step er-step", children: [
43508
+ /* @__PURE__ */ jsx54(
43509
+ "span",
43510
+ {
43511
+ className: cx(
43512
+ "rb-step-circle er-step-circle",
43513
+ isActive && "rb-step-circle--active er-step-circle--active"
43514
+ ),
43515
+ children: index + 1
43516
+ }
43517
+ ),
43518
+ /* @__PURE__ */ jsx54(
43519
+ "span",
43520
+ {
43521
+ className: cx(
43522
+ "rb-step-label er-step-label",
43523
+ isActive && "rb-step-label--active er-step-label--active"
43524
+ ),
43525
+ children: label
43526
+ }
43527
+ ),
43528
+ index < display.stepLabels.length - 1 ? /* @__PURE__ */ jsx54("span", { className: "rb-step-connector er-step-connector" }) : null
43408
43529
  ] }, label);
43409
43530
  }) }) }),
43410
- /* @__PURE__ */ jsxs38("div", { className: "er-stack", children: [
43531
+ /* @__PURE__ */ jsxs38("div", { className: "rb-reg-stack er-stack", children: [
43411
43532
  /* @__PURE__ */ jsxs38("div", { children: [
43412
43533
  /* @__PURE__ */ jsx54("p", { className: "er-registration-shell__eyebrow", children: "Registration" }),
43413
43534
  /* @__PURE__ */ jsx54("h3", { className: "er-title er-registration-shell__title", children: display.titleText }),
@@ -43415,20 +43536,20 @@ function EventRegistrationShell({
43415
43536
  ] }),
43416
43537
  /* @__PURE__ */ jsxs38("div", { className: "er-event-grid er-registration-shell__cards", "aria-hidden": "true", children: [
43417
43538
  /* @__PURE__ */ jsxs38("div", { className: "er-event-card er-registration-shell__card", children: [
43418
- /* @__PURE__ */ jsx54("div", { className: "er-registration-shell__line er-registration-shell__line--lg" }),
43419
- /* @__PURE__ */ jsx54("div", { className: "er-registration-shell__line er-registration-shell__line--sm" })
43539
+ /* @__PURE__ */ jsx54("div", { className: "rb-shell-line rb-shell-line--lg er-registration-shell__line er-registration-shell__line--lg" }),
43540
+ /* @__PURE__ */ jsx54("div", { className: "rb-shell-line rb-shell-line--sm er-registration-shell__line er-registration-shell__line--sm" })
43420
43541
  ] }),
43421
43542
  /* @__PURE__ */ jsxs38("div", { className: "er-event-card er-registration-shell__card", children: [
43422
- /* @__PURE__ */ jsx54("div", { className: "er-registration-shell__line er-registration-shell__line--md" }),
43423
- /* @__PURE__ */ jsx54("div", { className: "er-registration-shell__line er-registration-shell__line--xs" })
43543
+ /* @__PURE__ */ jsx54("div", { className: "rb-shell-line rb-shell-line--md er-registration-shell__line er-registration-shell__line--md" }),
43544
+ /* @__PURE__ */ jsx54("div", { className: "rb-shell-line rb-shell-line--xs er-registration-shell__line er-registration-shell__line--xs" })
43424
43545
  ] })
43425
43546
  ] })
43426
43547
  ] })
43427
43548
  ] }),
43428
43549
  /* @__PURE__ */ jsx54("div", { className: "er-payment-layout-footer", children: /* @__PURE__ */ jsxs38("div", { className: "er-summary-bar er-registration-shell__summary", "aria-hidden": "true", children: [
43429
43550
  /* @__PURE__ */ jsxs38("div", { className: "er-summary-bar-info", children: [
43430
- /* @__PURE__ */ jsx54("div", { className: "er-registration-shell__line er-registration-shell__line--md" }),
43431
- /* @__PURE__ */ jsx54("div", { className: "er-registration-shell__line er-registration-shell__line--xs" })
43551
+ /* @__PURE__ */ jsx54("div", { className: "rb-shell-line rb-shell-line--md er-registration-shell__line er-registration-shell__line--md" }),
43552
+ /* @__PURE__ */ jsx54("div", { className: "rb-shell-line rb-shell-line--xs er-registration-shell__line er-registration-shell__line--xs" })
43432
43553
  ] }),
43433
43554
  /* @__PURE__ */ jsx54("div", { className: "er-registration-shell__button-placeholder", children: display.summaryButtonText })
43434
43555
  ] }) })
@@ -43447,6 +43568,7 @@ function FeedbackMessage({
43447
43568
  tone,
43448
43569
  children,
43449
43570
  className,
43571
+ id,
43450
43572
  title,
43451
43573
  titleClassName,
43452
43574
  bodyClassName,
@@ -43458,6 +43580,7 @@ function FeedbackMessage({
43458
43580
  return /* @__PURE__ */ jsxs39(
43459
43581
  "div",
43460
43582
  {
43583
+ id,
43461
43584
  className,
43462
43585
  "data-feedback-tone": tone,
43463
43586
  role,
@@ -45678,7 +45801,7 @@ function generateInputCss({
45678
45801
  const labelSelector = `${rootSelector} .form-label`;
45679
45802
  const labelRules = [];
45680
45803
  labelRules.push(`color: ${rgbColorValue(inputSystem.label.textColorToken)}`);
45681
- labelRules.push(`font-weight: ${FONT_WEIGHT_MAP[inputSystem.label.fontWeight]}`);
45804
+ labelRules.push(`font-weight: ${FONT_WEIGHT_MAP2[inputSystem.label.fontWeight]}`);
45682
45805
  labelRules.push(`font-size: ${LABEL_FONT_SIZE_MAP[inputSystem.label.fontSize]}`);
45683
45806
  if (inputSystem.label.textTransform && inputSystem.label.textTransform !== "none") {
45684
45807
  labelRules.push(`text-transform: ${inputSystem.label.textTransform}`);
@@ -45919,67 +46042,6 @@ function generateDefaultInputSystem(theme) {
45919
46042
  };
45920
46043
  }
45921
46044
 
45922
- // ../theme-core/src/interactive/generateBaseCSS.ts
45923
- var FONT_WEIGHT_MAP2 = {
45924
- regular: 400,
45925
- medium: 500,
45926
- semibold: 600,
45927
- bold: 700
45928
- };
45929
- function generateBaseInteractiveCSS(options) {
45930
- const {
45931
- typography,
45932
- padding,
45933
- borderRadius,
45934
- includeTransition = true,
45935
- includeFlexCenter = false,
45936
- borderWidth
45937
- } = options;
45938
- const rules = [];
45939
- if (typography.fontWeight !== void 0) {
45940
- const weight = typeof typography.fontWeight === "number" ? typography.fontWeight : FONT_WEIGHT_MAP2[typography.fontWeight];
45941
- rules.push(`font-weight: ${weight};`);
45942
- }
45943
- if (typography.typography === "heading") {
45944
- rules.push(`font-family: var(--font-heading);`);
45945
- rules.push(`letter-spacing: var(--ls-heading);`);
45946
- } else if (typography.typography === "body") {
45947
- rules.push(`font-family: var(--font-body);`);
45948
- }
45949
- if (typography.italic) {
45950
- rules.push(`font-style: italic;`);
45951
- }
45952
- if (typography.textTransform && typography.textTransform !== "none") {
45953
- rules.push(`text-transform: ${typography.textTransform};`);
45954
- }
45955
- if (padding) {
45956
- if (borderWidth && borderWidth !== "0px") {
45957
- const paddingParts = padding.split(" ");
45958
- const verticalPadding = paddingParts[0] || "0.5rem";
45959
- const horizontalPadding = paddingParts[1] || paddingParts[0] || "1rem";
45960
- rules.push(`padding-top: calc(${verticalPadding} - ${borderWidth} - 1px);`);
45961
- rules.push(`padding-bottom: calc(${verticalPadding} - ${borderWidth} - 1px);`);
45962
- rules.push(`padding-left: calc(${horizontalPadding} - ${borderWidth});`);
45963
- rules.push(`padding-right: calc(${horizontalPadding} - ${borderWidth});`);
45964
- } else {
45965
- rules.push(`padding: ${padding};`);
45966
- }
45967
- }
45968
- if (borderRadius) {
45969
- rules.push(`border-radius: ${borderRadius};`);
45970
- }
45971
- if (includeTransition) {
45972
- rules.push(`transition: all 200ms ease;`);
45973
- }
45974
- if (includeFlexCenter) {
45975
- rules.push(`display: inline-flex;`);
45976
- rules.push(`align-items: center;`);
45977
- rules.push(`justify-content: center;`);
45978
- rules.push(`cursor: pointer;`);
45979
- }
45980
- return rules;
45981
- }
45982
-
45983
46045
  // ../theme-core/src/navigation/generateNavLinkCSS.ts
45984
46046
  function generateNavLinkCSS(options) {
45985
46047
  const { themeId, tokens, theme, style, className } = options;
@@ -46066,14 +46128,7 @@ ${activeSelector} {
46066
46128
  }
46067
46129
  `);
46068
46130
  }
46069
- cssChunks.push(`
46070
- ${selector} * {
46071
- font-family: inherit;
46072
- font-weight: inherit;
46073
- letter-spacing: inherit;
46074
- color: inherit;
46075
- }
46076
- `);
46131
+ cssChunks.push(generateInteractiveChildInheritanceCSS(selector));
46077
46132
  return cssChunks.join("");
46078
46133
  }
46079
46134
  function buildTextContrastShadow(input) {
@@ -47370,7 +47425,7 @@ ${root} .status-error { color: rgb(var(--tb-destructive)); }
47370
47425
  ${root} .status-success { color: rgb(var(--tb-success)); }
47371
47426
  ${root} .status-warning { color: rgb(var(--tb-warning)); }
47372
47427
  ${root} .status-info { color: rgb(var(--tb-info)); }
47373
- ${root} .status-muted { color: rgb(var(--tb-mutedText)); }`);
47428
+ ${root} .status-muted { ${statusMutedColorDeclaration()} }`);
47374
47429
  cssBlocks.push(`/* Alert containers */
47375
47430
  ${root} .alert {
47376
47431
  padding: 1rem;
@@ -47686,6 +47741,34 @@ ${root} {
47686
47741
  /* Order summary */
47687
47742
  --er-summary-bg: rgba(var(--tb-primary), 0.1);
47688
47743
  --er-summary-border: rgb(var(--tb-border));
47744
+
47745
+ /* Shared registration-surface mappings (issue 1174).
47746
+ Route the shared --rb-reg-* contract through this block's documented
47747
+ Tier 3 vars so existing --er-* overrides keep working unchanged. */
47748
+ --rb-reg-radius: var(--er-radius);
47749
+ --rb-reg-border: var(--er-border);
47750
+ --rb-reg-border-hover: var(--er-border-hover);
47751
+ --rb-reg-border-selected: var(--er-border-selected);
47752
+ --rb-reg-bg-selected: var(--er-payment-bg-selected);
47753
+ --rb-reg-option-bg: var(--er-control-bg);
47754
+ --rb-reg-option-hover-shadow: 0 8px 18px rgba(var(--tb-shadow, 15 23 42), 0.08);
47755
+ --rb-reg-surface-bg: rgb(var(--tb-surface));
47756
+ --rb-reg-on-surface: var(--er-on-surface);
47757
+ --rb-reg-on-surface-muted: var(--er-on-surface-muted);
47758
+ --rb-reg-on-surface-subtle: var(--er-on-surface-subtle);
47759
+ --rb-reg-on-surface-faint: var(--er-on-surface-faint);
47760
+ --rb-reg-check-bg: var(--er-check-bg);
47761
+ --rb-reg-check-text: var(--er-check-text);
47762
+ --rb-reg-step-active: var(--er-step-active);
47763
+ --rb-reg-step-completed: var(--er-step-completed);
47764
+ --rb-reg-step-inactive: var(--er-step-inactive);
47765
+ --rb-reg-step-text: var(--er-step-text);
47766
+ --rb-reg-step-text-active: var(--er-step-text-active);
47767
+ --rb-reg-step-connector: var(--er-step-connector);
47768
+ --rb-reg-summary-bg: var(--er-surface-muted);
47769
+ --rb-reg-summary-border: var(--er-border);
47770
+ --rb-reg-focus-ring: var(--er-focus-ring);
47771
+ --rb-reg-shell-line: var(--er-shell-line);
47689
47772
  }
47690
47773
  `;
47691
47774
  }
@@ -47818,25 +47901,40 @@ ${root} {
47818
47901
  --ab-info-bg: rgba(var(--tb-info), 0.1);
47819
47902
  --ab-info-text: rgb(var(--tb-info));
47820
47903
 
47821
- /* Loading/muted states */
47904
+ /* Muted summary state */
47822
47905
  --ab-muted-bg: rgba(var(--tb-text), 0.05);
47823
- --ab-muted-text: rgba(var(--tb-text), 0.6);
47824
- --ab-spinner-color: rgb(var(--tb-primary));
47825
47906
 
47826
- /* Form elements */
47827
- --ab-input-border: rgb(var(--tb-border));
47907
+ /* Focus ring used by shared registration-surface controls */
47828
47908
  --ab-input-focus-ring: rgba(var(--tb-primary), 0.3);
47829
47909
 
47830
- /* Buttons */
47831
- --ab-btn-primary-bg: rgb(var(--tb-primary));
47832
- --ab-btn-primary-text: rgb(var(--tb-background));
47833
- --ab-btn-primary-hover: rgba(var(--tb-primary), 0.9);
47834
- --ab-btn-secondary-border: rgb(var(--tb-border));
47835
- --ab-btn-secondary-hover: rgba(var(--tb-text), 0.05);
47836
-
47837
- /* Text opacity levels */
47838
- --ab-text-muted-opacity: 0.6;
47839
- --ab-text-faint-opacity: 0.4;
47910
+ /* Shared registration-surface mappings (issue 1174).
47911
+ Route the shared --rb-reg-* contract through this block's Tier 3 vars
47912
+ (palette tokens where no --ab-* var exists) so --ab-* overrides keep
47913
+ working as the block adopts the shared classes. */
47914
+ --rb-reg-radius: var(--ab-card-radius, var(--rb-block-radius));
47915
+ --rb-reg-border: var(--ab-card-border);
47916
+ --rb-reg-border-hover: var(--ab-card-border-hover);
47917
+ --rb-reg-border-selected: var(--ab-card-border-selected);
47918
+ --rb-reg-bg-selected: var(--ab-card-bg-selected);
47919
+ --rb-reg-option-bg: transparent;
47920
+ --rb-reg-option-hover-shadow: 0 8px 18px rgba(var(--tb-shadow, 15 23 42), 0.08);
47921
+ --rb-reg-surface-bg: rgb(var(--tb-surface));
47922
+ --rb-reg-on-surface: rgb(var(--tb-onSurface, var(--tb-text)));
47923
+ --rb-reg-on-surface-muted: rgba(var(--tb-onSurface, var(--tb-text)), 0.7);
47924
+ --rb-reg-on-surface-subtle: rgba(var(--tb-onSurface, var(--tb-text)), 0.6);
47925
+ --rb-reg-on-surface-faint: rgba(var(--tb-onSurface, var(--tb-text)), 0.5);
47926
+ --rb-reg-check-bg: var(--ab-check-bg);
47927
+ --rb-reg-check-text: var(--ab-check-text);
47928
+ --rb-reg-step-active: rgb(var(--tb-primary));
47929
+ --rb-reg-step-completed: rgb(var(--tb-success));
47930
+ --rb-reg-step-inactive: rgb(var(--tb-mutedText));
47931
+ --rb-reg-step-text: rgb(255 255 255);
47932
+ --rb-reg-step-text-active: rgb(var(--tb-primaryText, 255 255 255));
47933
+ --rb-reg-step-connector: rgba(var(--tb-border), 0.5);
47934
+ --rb-reg-summary-bg: var(--ab-muted-bg);
47935
+ --rb-reg-summary-border: var(--ab-card-border);
47936
+ --rb-reg-focus-ring: var(--ab-input-focus-ring);
47937
+ --rb-reg-shell-line: rgba(var(--tb-mutedText, 100 116 139), 0.22);
47840
47938
  }
47841
47939
  `;
47842
47940
  }
@@ -48127,6 +48225,35 @@ ${root} {
48127
48225
  /* Summary */
48128
48226
  --cr-summary-bg: rgba(var(--tb-primary), 0.1);
48129
48227
  --cr-summary-border: rgb(var(--tb-border));
48228
+
48229
+ /* Shared registration-surface mappings (issue 1174).
48230
+ Route the shared --rb-reg-* contract through this block's Tier 3 vars
48231
+ (palette tokens where no --cr-* var exists) so existing --cr-* overrides
48232
+ keep working unchanged. */
48233
+ --rb-reg-radius: var(--rb-block-radius);
48234
+ --rb-reg-border: var(--cr-border);
48235
+ --rb-reg-border-hover: var(--cr-border-hover);
48236
+ --rb-reg-border-selected: var(--cr-border-selected);
48237
+ --rb-reg-bg-selected: var(--cr-payment-bg-selected);
48238
+ --rb-reg-option-bg: rgb(var(--tb-background));
48239
+ --rb-reg-option-hover-shadow: 0 8px 18px rgba(var(--tb-shadow, 15 23 42), 0.08);
48240
+ --rb-reg-surface-bg: rgb(var(--tb-surface));
48241
+ --rb-reg-on-surface: var(--cr-on-surface);
48242
+ --rb-reg-on-surface-muted: rgba(var(--tb-onSurface, var(--tb-text)), 0.7);
48243
+ --rb-reg-on-surface-subtle: rgba(var(--tb-onSurface, var(--tb-text)), 0.6);
48244
+ --rb-reg-on-surface-faint: rgba(var(--tb-onSurface, var(--tb-text)), 0.5);
48245
+ --rb-reg-check-bg: var(--cr-check-bg);
48246
+ --rb-reg-check-text: var(--cr-check-text);
48247
+ --rb-reg-step-active: var(--cr-step-active);
48248
+ --rb-reg-step-completed: var(--cr-step-completed);
48249
+ --rb-reg-step-inactive: var(--cr-step-inactive);
48250
+ --rb-reg-step-text: var(--cr-step-text);
48251
+ --rb-reg-step-text-active: var(--cr-step-text-active);
48252
+ --rb-reg-step-connector: var(--cr-step-connector);
48253
+ --rb-reg-summary-bg: var(--cr-summary-bg);
48254
+ --rb-reg-summary-border: var(--cr-summary-border);
48255
+ --rb-reg-focus-ring: var(--cr-focus-ring);
48256
+ --rb-reg-shell-line: rgba(var(--tb-mutedText, 100 116 139), 0.22);
48130
48257
  }
48131
48258
  `;
48132
48259
  }
@@ -49406,6 +49533,8 @@ var MemoBlockSection = React6.memo(
49406
49533
  occurrenceContext: dataContext?.occurrenceContext ?? null,
49407
49534
  entrySubrouteContext: dataContext?.entrySubrouteContext ?? null,
49408
49535
  contentEntry: dataContext?.contentEntry ?? null,
49536
+ pageSurface: dataContext?.pageSurface ?? null,
49537
+ subject: dataContext?.subject ?? null,
49409
49538
  supabaseUrl: dataContext?.supabaseUrl,
49410
49539
  imageResolveContext: resolvedImageResolveContext,
49411
49540
  blockId: block.id ?? null,
@@ -49534,6 +49663,8 @@ var MemoBlockSection = React6.memo(
49534
49663
  occurrenceContext: dataContext?.occurrenceContext ?? null,
49535
49664
  entrySubrouteContext: dataContext?.entrySubrouteContext ?? null,
49536
49665
  contentEntry: dataContext?.contentEntry ?? null,
49666
+ pageSurface: dataContext?.pageSurface ?? null,
49667
+ subject: dataContext?.subject ?? null,
49537
49668
  supabaseUrl: dataContext?.supabaseUrl,
49538
49669
  imageResolveContext: resolvedImageResolveContext,
49539
49670
  blockId: block.id ?? null,
@@ -49561,7 +49692,9 @@ var MemoBlockSection = React6.memo(
49561
49692
  // Occurrence and content entry context for template pages
49562
49693
  occurrenceContext: dataContext?.occurrenceContext ?? null,
49563
49694
  entrySubrouteContext: dataContext?.entrySubrouteContext ?? null,
49564
- contentEntry: dataContext?.contentEntry ?? null
49695
+ contentEntry: dataContext?.contentEntry ?? null,
49696
+ pageSurface: dataContext?.pageSurface ?? null,
49697
+ subject: dataContext?.subject ?? null
49565
49698
  }
49566
49699
  };
49567
49700
  const blockBindings = block.bindings;
@@ -52906,13 +53039,36 @@ var containerResponsiveThemeCss = `/*
52906
53039
  */
52907
53040
 
52908
53041
  /* =============================================================================
52909
- * Shared: Registration Terminal State Icons
52910
- * Used by event-registration and course-registration blocks.
53042
+ * Shared: Registration Surface (issue 1174)
52911
53043
  *
52912
- * Layout rules only \u2014 block-specific colors are defined in each block's CSS
52913
- * via scoped \`.rb-state-icon--{variant}\` rules.
53044
+ * Wizard-surface primitives shared by the event-registration,
53045
+ * course-registration and appointment-booking blocks: surface container,
53046
+ * selectable option cards, step indicator, wizard actions row, on-surface
53047
+ * text ramp, layout stacks, summary box and skeleton shell lines.
53048
+ *
53049
+ * Uses:
53050
+ * - Tier 1 vars: --tb-* (from theme palette) as inline fallbacks
53051
+ * - Tier 2 vars: --rb-block-radius, --rb-block-transition (from theme scope)
53052
+ * - Shared vars: --rb-reg-* (mapped per block by the Tier 3 var generators;
53053
+ * canonical name list in blocks/registrationSurfaceVars.ts)
53054
+ *
53055
+ * Defaults intentionally match the event-registration (issue 1089) values; blocks
53056
+ * that need to preserve a different look override in their own block CSS,
53057
+ * which is imported after this file (cascade order is the override contract \u2014
53058
+ * all selectors here are zero-specificity \`:where()\`).
53059
+ *
53060
+ * Layout-only \`.rb-state-icon\` rules (formerly registration-shared.css) live
53061
+ * here too; block CSS provides the \`.rb-state-icon--{variant}\` colors.
53062
+ *
53063
+ * Naming: component-like primitives follow the existing bare \`rb-\` shared
53064
+ * precedent (\`.rb-state-icon\`, \`.rb-tile\`): \`.rb-option-card\`, \`.rb-step-*\`,
53065
+ * \`.rb-wizard-actions\`, \`.rb-on-surface\`, \`.rb-shell-*\`. Container/layout
53066
+ * pieces that would otherwise collide with the global \`.rb-*\` utility layer
53067
+ * are namespaced \`rb-reg-*\` (\`.rb-reg-surface\`, \`.rb-reg-stack\`, ...). All of
53068
+ * them are scoped to the three registration blocks either way.
52914
53069
  * ============================================================================= */
52915
53070
 
53071
+ /* Terminal state icon (layout only \u2014 colors are per-block) */
52916
53072
  :where(.theme-scope) .rb-state-icon {
52917
53073
  width: 4rem;
52918
53074
  height: 4rem;
@@ -52928,112 +53084,346 @@ var containerResponsiveThemeCss = `/*
52928
53084
  height: 2rem;
52929
53085
  }
52930
53086
 
52931
- /* =============================================================================
52932
- * Block: Event Registration (pilot #76)
52933
- * Uses CSS vars: --er-* (Tier 3) and --rb-block-* (Tier 2)
52934
- * =============================================================================
52935
- */
52936
-
52937
- :where(.theme-scope) :where([data-block="event-registration"]) {
52938
- --rb-modal-overlay-bg: rgb(var(--tb-text, 0 0 0) / 0.6);
52939
- --rb-event-tile-bg: var(--er-event-card-bg);
52940
- --rb-event-tile-border: var(--er-border);
52941
- --rb-event-tile-border-width: var(--er-event-card-border-width);
52942
- --rb-event-tile-border-hover: var(--er-border-hover);
52943
- --rb-event-tile-border-selected: var(--er-border-selected);
52944
- --rb-event-tile-hover-opacity: var(--er-event-card-hover-opacity);
52945
- --rb-event-tile-bg-selected: rgba(var(--tb-primary), 0.1);
52946
- --er-on-surface: rgb(var(--tb-onSurface, var(--tb-text)));
52947
- --er-on-surface-muted: rgba(var(--tb-onSurface, var(--tb-text)), 0.7);
52948
- --er-on-surface-subtle: rgba(var(--tb-onSurface, var(--tb-text)), 0.6);
52949
- --er-on-surface-faint: rgba(var(--tb-onSurface, var(--tb-text)), 0.5);
52950
- --er-on-surface-disabled: rgba(var(--tb-onSurface, var(--tb-text)), 0.78);
52951
- --er-on-surface-disabled-detail: rgba(var(--tb-onSurface, var(--tb-text)), 0.68);
52952
- }
52953
-
52954
- /* Container */
52955
- :where(.theme-scope) :where([data-block="event-registration"]) .er-container {
52956
- border-radius: var(--rb-block-radius);
52957
- border: 1px solid var(--er-border);
53087
+ /* Surface container */
53088
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-reg-surface {
53089
+ border-radius: var(--rb-reg-radius, var(--rb-block-radius, 1rem));
53090
+ border: 1px solid var(--rb-reg-border, rgb(var(--tb-border, 226 232 240)));
52958
53091
  padding: clamp(1rem, 2vw, 1.5rem);
52959
- background: rgb(var(--tb-surface));
52960
- color: var(--er-on-surface);
52961
- transition: border-color var(--rb-block-transition) ease;
53092
+ background: var(--rb-reg-surface-bg, rgb(var(--tb-surface, 248 250 252)));
53093
+ color: var(--rb-reg-on-surface, rgb(var(--tb-onSurface, var(--tb-text, 15 23 42))));
53094
+ transition: border-color var(--rb-block-transition, 150ms) ease;
52962
53095
  width: 100%;
52963
53096
  max-width: 800px;
52964
53097
  margin-inline: 0;
52965
53098
  }
52966
53099
 
52967
- /* SSR shell / required-island fallback */
52968
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell {
52969
- min-height: 24rem;
53100
+ /* Selectable option card */
53101
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-option-card {
53102
+ position: relative;
53103
+ display: flex;
53104
+ align-items: flex-start;
53105
+ gap: 0.75rem;
53106
+ padding: 1rem;
53107
+ border: 1px solid var(--rb-reg-border, rgb(var(--tb-border, 226 232 240)));
53108
+ border-radius: var(--rb-reg-radius, var(--rb-block-radius, 1rem));
53109
+ background: var(--rb-reg-option-bg, transparent);
53110
+ color: inherit;
53111
+ cursor: pointer;
53112
+ text-align: left;
53113
+ transition: border-color var(--rb-block-transition, 150ms) ease,
53114
+ background-color var(--rb-block-transition, 150ms) ease,
53115
+ box-shadow var(--rb-block-transition, 150ms) ease;
52970
53116
  }
52971
53117
 
52972
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__steps {
52973
- margin-bottom: 1.25rem;
53118
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-option-card:hover:not(:disabled):not([aria-disabled="true"]) {
53119
+ border-color: var(--rb-reg-border-hover, rgba(var(--tb-primary, 17 24 39), 0.5));
53120
+ box-shadow: var(--rb-reg-option-hover-shadow, 0 8px 18px rgba(var(--tb-shadow, 15 23 42), 0.08));
52974
53121
  }
52975
53122
 
52976
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__eyebrow {
52977
- margin: 0 0 0.35rem;
52978
- color: var(--er-on-surface-subtle);
52979
- font-size: 0.75rem;
52980
- font-weight: 700;
52981
- letter-spacing: 0.04em;
52982
- line-height: 1.2;
52983
- text-transform: uppercase;
53123
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-option-card:focus-visible {
53124
+ outline: 2px solid var(--rb-reg-focus-ring, rgba(var(--tb-primary, 17 24 39), 0.3));
53125
+ outline-offset: 2px;
52984
53126
  }
52985
53127
 
52986
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__title {
53128
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-option-card--selected {
53129
+ border-color: var(--rb-reg-border-selected, rgb(var(--tb-primary, 17 24 39)));
53130
+ background-color: var(--rb-reg-bg-selected, rgba(var(--tb-primary, 17 24 39), 0.08));
53131
+ box-shadow: 0 0 0 1px var(--rb-reg-border-selected, rgb(var(--tb-primary, 17 24 39)));
53132
+ }
53133
+
53134
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-option-card--disabled {
53135
+ cursor: not-allowed;
53136
+ opacity: 0.7;
53137
+ }
53138
+
53139
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-option-card--disabled:hover {
53140
+ border-color: var(--rb-reg-border, rgb(var(--tb-border, 226 232 240)));
53141
+ box-shadow: none;
53142
+ }
53143
+
53144
+ /* Check indicator */
53145
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-option-check {
53146
+ flex-shrink: 0;
53147
+ width: 1.25rem;
53148
+ height: 1.25rem;
53149
+ border-radius: 50%;
53150
+ background: var(--rb-reg-check-bg, rgb(var(--tb-primary, 17 24 39)));
53151
+ display: flex;
53152
+ align-items: center;
53153
+ justify-content: center;
53154
+ }
53155
+
53156
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-option-check svg {
53157
+ width: 0.75rem;
53158
+ height: 0.75rem;
53159
+ color: var(--rb-reg-check-text, rgb(var(--tb-primaryText, var(--tb-primaryForeground, 255 255 255))));
53160
+ }
53161
+
53162
+ /* Step indicator */
53163
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-steps-nav {
53164
+ margin-bottom: 1.5rem;
53165
+ }
53166
+
53167
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-steps {
53168
+ display: flex;
53169
+ align-items: center;
53170
+ justify-content: center;
53171
+ gap: 0.5rem;
53172
+ list-style: none;
53173
+ padding: 0;
52987
53174
  margin: 0;
52988
53175
  }
52989
53176
 
52990
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__copy {
52991
- margin: 0.35rem 0 0;
52992
- max-width: 36rem;
52993
- line-height: 1.45;
53177
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-step {
53178
+ display: flex;
53179
+ align-items: center;
53180
+ gap: 0.5rem;
52994
53181
  }
52995
53182
 
52996
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__cards {
52997
- margin-top: 0.25rem;
52998
- overflow: hidden;
52999
- border: 1px solid var(--er-border);
53000
- border-radius: var(--rb-block-radius);
53001
- background: var(--er-control-bg);
53183
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-step-circle {
53184
+ width: 1.75rem;
53185
+ height: 1.75rem;
53186
+ border-radius: 50%;
53187
+ display: flex;
53188
+ align-items: center;
53189
+ justify-content: center;
53190
+ font-size: 0.75rem;
53191
+ font-weight: 600;
53192
+ background: var(--rb-reg-step-inactive, rgb(var(--tb-mutedText, 100 116 139)));
53193
+ color: var(--rb-reg-step-text, rgb(var(--tb-primaryForeground, 255 255 255)));
53194
+ transition: background-color var(--rb-block-transition, 150ms) ease;
53002
53195
  }
53003
53196
 
53004
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__card {
53197
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-step-circle--active {
53198
+ background: var(--rb-reg-step-active, rgb(var(--tb-primary, 17 24 39)));
53199
+ color: var(--rb-reg-step-text-active, rgb(var(--tb-primaryText, var(--tb-primaryForeground, 255 255 255))));
53200
+ }
53201
+
53202
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-step-circle--completed {
53203
+ background: var(--rb-reg-step-completed, rgb(var(--tb-success, 22 163 74)));
53204
+ color: var(--rb-reg-step-text-active, rgb(var(--tb-primaryText, var(--tb-primaryForeground, 255 255 255))));
53205
+ }
53206
+
53207
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-step-check {
53208
+ width: 0.75rem;
53209
+ height: 0.75rem;
53210
+ }
53211
+
53212
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-step-connector {
53213
+ width: 2rem;
53214
+ height: 2px;
53215
+ background: var(--rb-reg-step-connector, rgba(var(--tb-border, 226 232 240), 0.5));
53216
+ }
53217
+
53218
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-step-label {
53219
+ font-size: 0.75rem;
53220
+ color: var(--rb-reg-on-surface, rgb(var(--tb-onSurface, var(--tb-text, 15 23 42))));
53221
+ display: none;
53222
+ }
53223
+
53224
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-step-label--active {
53225
+ font-weight: 500;
53226
+ }
53227
+
53228
+ @container rb-site (min-width: 640px) {
53229
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
53230
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-step-label {
53231
+ display: inline;
53232
+ }
53233
+ }
53234
+ }
53235
+
53236
+ /* Wizard actions row */
53237
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-wizard-actions {
53238
+ display: flex;
53239
+ justify-content: space-between;
53240
+ align-items: center;
53241
+ gap: 1rem;
53242
+ margin-top: 1.5rem;
53243
+ }
53244
+
53245
+ /* When there's only one action (no back button), push it to the right */
53246
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-wizard-actions > :only-child {
53247
+ margin-inline-start: auto;
53248
+ }
53249
+
53250
+ /* On-surface text ramp */
53251
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-on-surface {
53252
+ color: var(--rb-reg-on-surface, rgb(var(--tb-onSurface, var(--tb-text, 15 23 42))));
53253
+ }
53254
+
53255
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-on-surface--muted {
53256
+ color: var(--rb-reg-on-surface-muted, rgba(var(--tb-onSurface, var(--tb-text, 15 23 42)), 0.7));
53257
+ }
53258
+
53259
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-on-surface--subtle {
53260
+ color: var(--rb-reg-on-surface-subtle, rgba(var(--tb-onSurface, var(--tb-text, 15 23 42)), 0.6));
53261
+ }
53262
+
53263
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-on-surface--faint {
53264
+ color: var(--rb-reg-on-surface-faint, rgba(var(--tb-onSurface, var(--tb-text, 15 23 42)), 0.5));
53265
+ }
53266
+
53267
+ /* Layout stacks */
53268
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-reg-stack {
53269
+ display: flex;
53270
+ flex-direction: column;
53271
+ gap: 1rem;
53272
+ }
53273
+
53274
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-reg-stack--sm {
53275
+ gap: 0.75rem;
53276
+ }
53277
+
53278
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-reg-row {
53279
+ display: flex;
53280
+ align-items: center;
53281
+ gap: 1rem;
53282
+ }
53283
+
53284
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-reg-row--between {
53285
+ justify-content: space-between;
53286
+ align-items: flex-start;
53287
+ }
53288
+
53289
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-reg-grid {
53005
53290
  display: grid;
53006
- gap: 0.5rem;
53291
+ gap: 0.75rem;
53292
+ }
53293
+
53294
+ /* Summary box */
53295
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-reg-summary {
53007
53296
  padding: 1rem;
53297
+ border-radius: calc(var(--rb-reg-radius, var(--rb-block-radius, 1rem)) * 0.75);
53298
+ border: 1px solid var(--rb-reg-summary-border, rgb(var(--tb-border, 226 232 240)));
53299
+ background: var(--rb-reg-summary-bg, rgba(var(--tb-muted, 241 245 249), 0.42));
53008
53300
  }
53009
53301
 
53010
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__line {
53302
+ /* Skeleton shell lines */
53303
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-shell-line {
53011
53304
  height: 0.75rem;
53012
53305
  border-radius: 9999px;
53013
53306
  background: linear-gradient(
53014
53307
  90deg,
53015
- var(--er-shell-line),
53016
- rgba(var(--tb-primary), 0.12),
53017
- var(--er-shell-line)
53308
+ var(--rb-reg-shell-line, rgba(var(--tb-mutedText, 100 116 139), 0.22)),
53309
+ rgba(var(--tb-primary, 17 24 39), 0.12),
53310
+ var(--rb-reg-shell-line, rgba(var(--tb-mutedText, 100 116 139), 0.22))
53018
53311
  );
53019
53312
  }
53020
53313
 
53021
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__line--lg {
53314
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-shell-line--lg {
53022
53315
  width: min(26rem, 82%);
53023
53316
  }
53024
53317
 
53025
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__line--md {
53318
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-shell-line--md {
53026
53319
  width: min(19rem, 68%);
53027
53320
  }
53028
53321
 
53029
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__line--sm {
53322
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-shell-line--sm {
53030
53323
  width: min(14rem, 52%);
53031
53324
  }
53032
53325
 
53033
- :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__line--xs {
53326
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-shell-line--xs {
53034
53327
  width: min(10rem, 42%);
53035
53328
  }
53036
53329
 
53330
+ /* Skeleton block (rectangular placeholder, pulses) */
53331
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-shell-block {
53332
+ height: 2.5rem;
53333
+ width: 100%;
53334
+ border-radius: var(--rb-reg-radius, var(--rb-block-radius, 1rem));
53335
+ background: var(--rb-reg-shell-line, rgba(var(--tb-mutedText, 100 116 139), 0.22));
53336
+ animation: rb-reg-pulse 1.5s ease-in-out infinite;
53337
+ }
53338
+
53339
+ @keyframes rb-reg-pulse {
53340
+ 0%, 100% {
53341
+ opacity: 1;
53342
+ }
53343
+ 50% {
53344
+ opacity: 0.5;
53345
+ }
53346
+ }
53347
+
53348
+ @media (prefers-reduced-motion: reduce) {
53349
+ :where(.theme-scope) :where([data-block="event-registration"], [data-block="course-registration"], [data-block="appointment-booking"]) .rb-shell-block {
53350
+ animation: none;
53351
+ }
53352
+ }
53353
+
53354
+ /* =============================================================================
53355
+ * Block: Event Registration (pilot #76)
53356
+ * Uses CSS vars: --er-* (Tier 3) and --rb-block-* (Tier 2)
53357
+ * =============================================================================
53358
+ */
53359
+
53360
+ :where(.theme-scope) :where([data-block="event-registration"]) {
53361
+ --rb-modal-overlay-bg: rgb(var(--tb-text, 0 0 0) / 0.6);
53362
+ --rb-event-tile-bg: var(--er-event-card-bg);
53363
+ --rb-event-tile-border: var(--er-border);
53364
+ --rb-event-tile-border-width: var(--er-event-card-border-width);
53365
+ --rb-event-tile-border-hover: var(--er-border-hover);
53366
+ --rb-event-tile-border-selected: var(--er-border-selected);
53367
+ --rb-event-tile-hover-opacity: var(--er-event-card-hover-opacity);
53368
+ --rb-event-tile-bg-selected: rgba(var(--tb-primary), 0.1);
53369
+ --er-on-surface: rgb(var(--tb-onSurface, var(--tb-text)));
53370
+ --er-on-surface-muted: rgba(var(--tb-onSurface, var(--tb-text)), 0.7);
53371
+ --er-on-surface-subtle: rgba(var(--tb-onSurface, var(--tb-text)), 0.6);
53372
+ --er-on-surface-faint: rgba(var(--tb-onSurface, var(--tb-text)), 0.5);
53373
+ --er-on-surface-disabled: rgba(var(--tb-onSurface, var(--tb-text)), 0.78);
53374
+ --er-on-surface-disabled-detail: rgba(var(--tb-onSurface, var(--tb-text)), 0.68);
53375
+ }
53376
+
53377
+ /* Container: styled by the shared .rb-reg-surface (registration-surface.css);
53378
+ .er-container remains in markup as a hook and for the overlay/embedded
53379
+ variants below. */
53380
+
53381
+ /* SSR shell / required-island fallback */
53382
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell {
53383
+ min-height: 24rem;
53384
+ }
53385
+
53386
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__steps {
53387
+ margin-bottom: 1.25rem;
53388
+ }
53389
+
53390
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__eyebrow {
53391
+ margin: 0 0 0.35rem;
53392
+ color: var(--er-on-surface-subtle);
53393
+ font-size: 0.75rem;
53394
+ font-weight: 700;
53395
+ letter-spacing: 0.04em;
53396
+ line-height: 1.2;
53397
+ text-transform: uppercase;
53398
+ }
53399
+
53400
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__title {
53401
+ margin: 0;
53402
+ }
53403
+
53404
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__copy {
53405
+ margin: 0.35rem 0 0;
53406
+ max-width: 36rem;
53407
+ line-height: 1.45;
53408
+ }
53409
+
53410
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__cards {
53411
+ margin-top: 0.25rem;
53412
+ overflow: hidden;
53413
+ border: 1px solid var(--er-border);
53414
+ border-radius: var(--rb-block-radius);
53415
+ background: var(--er-control-bg);
53416
+ }
53417
+
53418
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__card {
53419
+ display: grid;
53420
+ gap: 0.5rem;
53421
+ padding: 1rem;
53422
+ }
53423
+
53424
+ /* Shell skeleton lines: styled by the shared .rb-shell-line family
53425
+ (registration-surface.css); legacy classes remain in markup as hooks. */
53426
+
53037
53427
  :where(.theme-scope) :where([data-block="event-registration"]) .er-registration-shell__summary {
53038
53428
  align-items: center;
53039
53429
  border-radius: calc(var(--rb-block-radius) * 0.75);
@@ -53109,13 +53499,8 @@ var containerResponsiveThemeCss = `/*
53109
53499
  color: var(--er-capacity-soldout-text);
53110
53500
  }
53111
53501
 
53112
- /* Selected event summary */
53113
- :where(.theme-scope) :where([data-block="event-registration"]) .er-event-summary {
53114
- padding: 1rem;
53115
- border-radius: calc(var(--rb-block-radius) * 0.75);
53116
- border: 1px solid var(--er-border);
53117
- background: var(--er-surface-muted);
53118
- }
53502
+ /* Selected event summary: superseded by the shared .rb-reg-summary
53503
+ (registration-surface.css); no markup emitted .er-event-summary anymore. */
53119
53504
 
53120
53505
  /* Ticket counter */
53121
53506
  :where(.theme-scope) :where([data-block="event-registration"]) .er-ticket-counter-group {
@@ -53321,7 +53706,7 @@ var containerResponsiveThemeCss = `/*
53321
53706
  opacity: 1;
53322
53707
  }
53323
53708
 
53324
- /* State icon color variants (layout from registration-shared.css) */
53709
+ /* State icon color variants (layout from registration-surface.css) */
53325
53710
  :where(.theme-scope) :where([data-block="event-registration"]) .rb-state-icon--success {
53326
53711
  background: var(--er-success-bg);
53327
53712
  color: var(--er-success-text);
@@ -53477,16 +53862,8 @@ var containerResponsiveThemeCss = `/*
53477
53862
  text-align: center;
53478
53863
  }
53479
53864
 
53480
- /* Layout */
53481
- :where(.theme-scope) :where([data-block="event-registration"]) .er-stack {
53482
- display: flex;
53483
- flex-direction: column;
53484
- gap: 1rem;
53485
- }
53486
-
53487
- :where(.theme-scope) :where([data-block="event-registration"]) .er-stack--sm {
53488
- gap: 0.75rem;
53489
- }
53865
+ /* Layout stacks/rows: styled by the shared .rb-reg-stack / .rb-reg-row
53866
+ (registration-surface.css); legacy classes remain in markup as hooks. */
53490
53867
 
53491
53868
  /* Event/date selection rows */
53492
53869
  :where(.theme-scope) :where([data-block="event-registration"]) .er-event-grid {
@@ -53495,17 +53872,6 @@ var containerResponsiveThemeCss = `/*
53495
53872
  gap: 0;
53496
53873
  }
53497
53874
 
53498
- :where(.theme-scope) :where([data-block="event-registration"]) .er-row {
53499
- display: flex;
53500
- align-items: center;
53501
- gap: 1rem;
53502
- }
53503
-
53504
- :where(.theme-scope) :where([data-block="event-registration"]) .er-row--between {
53505
- justify-content: space-between;
53506
- align-items: flex-start;
53507
- }
53508
-
53509
53875
  :where(.theme-scope) :where([data-block="event-registration"]) .er-center {
53510
53876
  text-align: center;
53511
53877
  padding: 2rem;
@@ -53517,18 +53883,8 @@ var containerResponsiveThemeCss = `/*
53517
53883
  margin-bottom: 1rem;
53518
53884
  }
53519
53885
 
53520
- :where(.theme-scope) :where([data-block="event-registration"]) .er-actions {
53521
- display: flex;
53522
- justify-content: space-between;
53523
- align-items: center;
53524
- gap: 1rem;
53525
- margin-top: 1.5rem;
53526
- }
53527
-
53528
- /* When there's only one button (no back), push to the right */
53529
- :where(.theme-scope) :where([data-block="event-registration"]) .er-actions > :only-child {
53530
- margin-inline-start: auto;
53531
- }
53886
+ /* Actions row: styled by the shared .rb-wizard-actions (registration-surface.css);
53887
+ .er-actions remains in markup as a hook. */
53532
53888
 
53533
53889
  :where(.theme-scope) :where([data-block="event-registration"]) .er-button-with-spinner {
53534
53890
  display: inline-flex;
@@ -53780,23 +54136,8 @@ var containerResponsiveThemeCss = `/*
53780
54136
  color: var(--er-on-surface-faint);
53781
54137
  }
53782
54138
 
53783
- /* Checkmark indicator */
53784
- :where(.theme-scope) :where([data-block="event-registration"]) .er-check {
53785
- flex-shrink: 0;
53786
- width: 1.25rem;
53787
- height: 1.25rem;
53788
- border-radius: 50%;
53789
- background: var(--er-check-bg);
53790
- display: flex;
53791
- align-items: center;
53792
- justify-content: center;
53793
- }
53794
-
53795
- :where(.theme-scope) :where([data-block="event-registration"]) .er-check svg {
53796
- width: 0.75rem;
53797
- height: 0.75rem;
53798
- color: var(--er-check-text);
53799
- }
54139
+ /* Checkmark indicator: styled by the shared .rb-option-check
54140
+ (registration-surface.css); .er-check remains in markup as a hook. */
53800
54141
 
53801
54142
  /* Payment summary */
53802
54143
  :where(.theme-scope) :where([data-block="event-registration"]) .er-payment-summary {
@@ -53844,78 +54185,12 @@ var containerResponsiveThemeCss = `/*
53844
54185
  margin-bottom: 1.5rem;
53845
54186
  }
53846
54187
 
53847
- :where(.theme-scope) :where([data-block="event-registration"]) .er-steps {
53848
- display: flex;
53849
- align-items: center;
53850
- justify-content: center;
53851
- gap: 0.5rem;
53852
- list-style: none;
53853
- padding: 0;
53854
- margin: 0;
53855
- }
53856
-
53857
- :where(.theme-scope) :where([data-block="event-registration"]) .er-step {
53858
- display: flex;
53859
- align-items: center;
53860
- gap: 0.5rem;
53861
- }
53862
-
53863
- :where(.theme-scope) :where([data-block="event-registration"]) .er-step-circle {
53864
- width: 1.75rem;
53865
- height: 1.75rem;
53866
- border-radius: 50%;
53867
- display: flex;
53868
- align-items: center;
53869
- justify-content: center;
53870
- font-size: 0.75rem;
53871
- font-weight: 600;
53872
- background: var(--er-step-inactive);
53873
- color: var(--er-step-text);
53874
- transition: background-color var(--rb-block-transition) ease;
53875
- }
53876
-
53877
- :where(.theme-scope) :where([data-block="event-registration"]) .er-step-circle--active {
53878
- background: var(--er-step-active);
53879
- color: var(--er-step-text-active);
53880
- }
53881
-
53882
- :where(.theme-scope) :where([data-block="event-registration"]) .er-step-circle--completed {
53883
- background: var(--er-step-completed);
53884
- color: var(--er-step-text-active);
53885
- }
53886
-
53887
- :where(.theme-scope) :where([data-block="event-registration"]) .er-step-check {
53888
- width: 0.75rem;
53889
- height: 0.75rem;
53890
- }
53891
-
53892
- :where(.theme-scope) :where([data-block="event-registration"]) .er-step-connector {
53893
- width: 2rem;
53894
- height: 2px;
53895
- background: var(--er-step-connector);
53896
- }
53897
-
53898
- :where(.theme-scope) :where([data-block="event-registration"]) .er-step-connector--completed {
53899
- background: var(--er-step-connector);
53900
- }
53901
-
53902
- :where(.theme-scope) :where([data-block="event-registration"]) .er-step-label {
53903
- font-size: 0.75rem;
53904
- color: var(--er-on-surface);
53905
- display: none;
53906
- }
53907
-
53908
- :where(.theme-scope) :where([data-block="event-registration"]) .er-step-label--active {
53909
- font-weight: 500;
53910
- }
53911
-
53912
- @container rb-site (min-width: 640px) {
53913
- @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
53914
- :where(.theme-scope) :where([data-block="event-registration"]) .er-step-label {
53915
- display: inline;
53916
- }
53917
- }
53918
- }
54188
+ /* Step indicator internals: styled by the shared .rb-steps / .rb-step-*
54189
+ family (registration-surface.css) via the --rb-reg-step-* mappings in the
54190
+ event-registration var generator; er-* classes remain in markup as hooks.
54191
+ Note: .er-steps-nav above is intentionally retained \u2014 its source position
54192
+ keeps the wizard's 1.5rem step margin winning over the SSR shell's
54193
+ 1.25rem .er-registration-shell__steps override. */
53919
54194
 
53920
54195
  /* Sticky order summary */
53921
54196
  :where(.theme-scope) :where([data-block="event-registration"]) .er-summary {
@@ -56148,295 +56423,420 @@ var containerResponsiveThemeCss = `/*
56148
56423
 
56149
56424
  /* =============================================================================
56150
56425
  * Block: Appointment Booking
56426
+ *
56427
+ * Structural styling comes from the shared registration-surface layer
56428
+ * (registration-surface.css): surface container, option cards + check,
56429
+ * step indicator, wizard actions, on-surface text ramp, stacks, summary box
56430
+ * and skeleton shell. Colors flow through the --rb-reg-* contract, mapped
56431
+ * from this block's --ab-* Tier 3 vars by its var generator.
56432
+ *
56433
+ * Inputs use the theme-generated form-* classes; feedback boxes use the
56434
+ * theme-generated alert / alert-{tone} classes. Only genuinely
56435
+ * booking-specific rules live here.
56436
+ *
56151
56437
  * Uses:
56152
- * - Tier 1 vars: --tb-border, --tb-text, --tb-primary (from theme palette)
56153
- * - Tier 2 vars: --rb-block-radius, --rb-block-transition (from theme scope)
56438
+ * - Tier 1 vars: --tb-* (from theme palette)
56154
56439
  * - Tier 3 vars: --ab-* (from appointment-booking var generator)
56155
56440
  * =============================================================================
56156
56441
  */
56157
56442
 
56158
- /* Main container */
56159
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-container {
56160
- width: 100%;
56443
+ /* Typography helpers */
56444
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-title {
56445
+ font-size: 1.5rem;
56446
+ font-weight: 600;
56447
+ line-height: 1.3;
56161
56448
  }
56162
56449
 
56163
- /* Stack layout utilities */
56164
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-stack {
56165
- display: flex;
56166
- flex-direction: column;
56167
- gap: 1.5rem;
56450
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-subtitle {
56451
+ font-size: 0.9375rem;
56452
+ font-weight: 600;
56453
+ line-height: 1.3;
56168
56454
  }
56169
56455
 
56170
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-stack--sm {
56171
- display: flex;
56172
- flex-direction: column;
56173
- gap: 0.75rem;
56456
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text {
56457
+ font-size: 0.875rem;
56174
56458
  }
56175
56459
 
56176
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-stack--xs {
56177
- display: flex;
56178
- flex-direction: column;
56179
- gap: 0.5rem;
56460
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text--sm {
56461
+ font-size: 0.75rem;
56180
56462
  }
56181
56463
 
56182
- /* Row layout */
56183
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-row {
56184
- display: flex;
56185
- align-items: center;
56186
- gap: 0.75rem;
56464
+ /* Centered state (loading / terminal panels) */
56465
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-center {
56466
+ text-align: center;
56467
+ padding: 2rem;
56187
56468
  }
56188
56469
 
56189
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-row--between {
56190
- justify-content: space-between;
56470
+ /* Terminal state title (below the state icon) */
56471
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-terminal-title {
56472
+ margin: 0.75rem 0 0.5rem 0;
56473
+ font-size: 1.125rem;
56474
+ font-weight: 700;
56475
+ }
56476
+
56477
+ /* State icon color variants (layout from registration-surface.css) */
56478
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .rb-state-icon--success {
56479
+ background: var(--ab-success-bg, rgba(var(--tb-success, 22 163 74), 0.1));
56480
+ color: var(--ab-success-text, rgb(var(--tb-success, 22 163 74)));
56481
+ }
56482
+
56483
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .rb-state-icon--error {
56484
+ background: var(--ab-error-bg, rgba(var(--tb-destructive, 220 38 38), 0.1));
56485
+ color: var(--ab-error-text, rgb(var(--tb-destructive, 220 38 38)));
56191
56486
  }
56192
56487
 
56193
- /* Grid layout */
56194
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-grid {
56488
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .rb-state-icon--info {
56489
+ background: var(--ab-info-bg, rgba(var(--tb-info, 14 165 233), 0.1));
56490
+ color: var(--ab-info-text, rgb(var(--tb-info, 14 165 233)));
56491
+ }
56492
+
56493
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .rb-state-icon--warning {
56494
+ background: var(--ab-warning-bg, rgba(var(--tb-warning, 245 158 11), 0.1));
56495
+ color: var(--ab-warning-text, rgb(var(--tb-warning, 245 158 11)));
56496
+ }
56497
+
56498
+ /* Payment option summary rows (label/value lines inside an option card) */
56499
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-option-rows {
56195
56500
  display: grid;
56196
- gap: 0.75rem;
56501
+ gap: 0.125rem;
56197
56502
  }
56198
56503
 
56199
- /* Center layout */
56200
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-center {
56201
- text-align: center;
56202
- padding: 2rem;
56504
+ /* Date/time pill grids (selection pills extend .rb-option-card) */
56505
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-pill-grid {
56506
+ display: flex;
56507
+ flex-wrap: wrap;
56508
+ gap: 0.5rem;
56203
56509
  }
56204
56510
 
56205
- /* Typography */
56206
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-title {
56207
- font-size: 1.5rem;
56208
- font-weight: 700;
56511
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-date-pill {
56512
+ flex-direction: column;
56513
+ align-items: center;
56514
+ gap: 0.125rem;
56515
+ padding: 0.5rem 0.875rem;
56516
+ min-width: 4.25rem;
56517
+ text-align: center;
56209
56518
  }
56210
56519
 
56211
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-subtitle {
56520
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-time-pill {
56521
+ align-items: center;
56522
+ justify-content: center;
56523
+ padding: 0.5rem 0.875rem;
56524
+ min-width: 5.5rem;
56212
56525
  font-size: 0.875rem;
56213
56526
  font-weight: 500;
56527
+ text-align: center;
56214
56528
  }
56215
56529
 
56216
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text {
56217
- font-size: 0.875rem;
56530
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-pill-caption {
56531
+ font-size: 0.6875rem;
56532
+ font-weight: 600;
56533
+ letter-spacing: 0;
56534
+ line-height: 1.2;
56535
+ text-transform: uppercase;
56536
+ color: var(--rb-reg-on-surface-subtle, rgba(var(--tb-onSurface, var(--tb-text, 15 23 42)), 0.6));
56218
56537
  }
56219
56538
 
56220
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text--sm {
56221
- font-size: 0.75rem;
56539
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-pill-value {
56540
+ font-size: 1.125rem;
56541
+ font-weight: 600;
56542
+ line-height: 1.2;
56222
56543
  }
56223
56544
 
56224
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text--muted {
56225
- opacity: var(--ab-text-muted-opacity, 0.6);
56545
+ /* SSR shell skeleton (mirrors the hydrated layout to reduce hydration jump) */
56546
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-shell {
56547
+ min-height: 18rem;
56226
56548
  }
56227
56549
 
56228
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-text--faint {
56229
- opacity: var(--ab-text-faint-opacity, 0.4);
56550
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-shell-button {
56551
+ display: inline-flex;
56552
+ min-height: 2.5rem;
56553
+ align-items: center;
56554
+ justify-content: center;
56555
+ border-radius: calc(var(--rb-reg-radius, var(--rb-block-radius, 1rem)) * 0.6);
56556
+ background: rgb(var(--tb-primary, 17 24 39));
56557
+ color: rgb(var(--tb-primaryText, var(--tb-primaryForeground, 255 255 255)));
56558
+ padding: 0.625rem 1rem;
56559
+ font-size: 0.875rem;
56560
+ font-weight: 600;
56561
+ line-height: 1.2;
56562
+ text-align: center;
56563
+ white-space: nowrap;
56230
56564
  }
56231
56565
 
56232
- /* Selection cards (service, resource, time slot) */
56233
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card {
56234
- position: relative;
56235
- padding: 1rem;
56236
- border: 2px solid var(--ab-card-border, rgb(var(--tb-border, 226 232 240)));
56237
- border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
56238
- text-align: left;
56239
- background: transparent;
56566
+ /* Inline text-link button (e.g. "Load more dates") */
56567
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-link {
56568
+ display: inline;
56569
+ color: rgb(var(--tb-primary, 17 24 39));
56570
+ background: none;
56571
+ border: none;
56572
+ padding: 0;
56573
+ font: inherit;
56574
+ text-decoration: underline;
56240
56575
  cursor: pointer;
56241
- transition: border-color var(--rb-block-transition, 150ms) ease, background-color var(--rb-block-transition, 150ms) ease;
56242
56576
  }
56243
56577
 
56244
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card:hover {
56245
- border-color: var(--ab-card-border-hover, rgba(var(--tb-primary, 17 24 39), 0.5));
56578
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-link:hover {
56579
+ text-decoration: none;
56246
56580
  }
56247
56581
 
56248
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-card--selected {
56249
- border-color: var(--ab-card-border-selected, rgb(var(--tb-primary, 17 24 39)));
56250
- background-color: var(--ab-card-bg-selected, rgba(var(--tb-primary, 17 24 39), 0.05));
56582
+ /* Altcha wrapper */
56583
+ :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-altcha {
56584
+ margin-top: 1rem;
56251
56585
  }
56252
56586
 
56253
- /* Checkmark indicator */
56254
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-check {
56255
- flex-shrink: 0;
56256
- width: 1.25rem;
56257
- height: 1.25rem;
56258
- border-radius: 50%;
56259
- background-color: var(--ab-check-bg, rgb(var(--tb-primary, 17 24 39)));
56260
- display: flex;
56261
- align-items: center;
56262
- justify-content: center;
56587
+ /* =============================================================================
56588
+ * Shared: Inline Text Marks
56589
+ * =============================================================================
56590
+ */
56591
+
56592
+ :where(.theme-scope) .rb-inline-text-accent,
56593
+ :where(.theme-scope) .rb-inline-text-highlight {
56594
+ font: inherit;
56595
+ letter-spacing: inherit;
56596
+ text-transform: inherit;
56263
56597
  }
56264
56598
 
56265
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-check svg {
56266
- width: 0.75rem;
56267
- height: 0.75rem;
56268
- color: var(--ab-check-text, rgb(var(--tb-background, 255 255 255)));
56599
+ :where(.theme-scope) .rb-inline-text-accent-accent {
56600
+ color: rgb(var(--tb-accent));
56269
56601
  }
56270
56602
 
56271
- /* Info box (service summary) */
56272
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-info-box {
56273
- padding: 1rem;
56274
- border: 1px solid var(--ab-card-border, rgb(var(--tb-border, 226 232 240)));
56275
- border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
56276
- background-color: var(--ab-muted-bg, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
56603
+ :where(.theme-scope) .rb-inline-text-accent-brand {
56604
+ color: rgb(var(--tb-primary));
56277
56605
  }
56278
56606
 
56279
- /* Alert states */
56280
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert {
56281
- padding: 0.75rem 1rem;
56282
- border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
56283
- font-size: 0.875rem;
56607
+ :where(.theme-scope) .rb-inline-text-accent-contrast {
56608
+ color: var(--section-text-color, rgb(var(--tb-text)));
56284
56609
  }
56285
56610
 
56286
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--success {
56287
- background-color: var(--ab-success-bg, rgba(var(--tb-success, 22 163 74), 0.1));
56288
- color: var(--ab-success-text, rgb(var(--tb-success, 22 163 74)));
56611
+ :where(.theme-scope) .rb-inline-text-highlight {
56612
+ border-radius: 0.22em;
56613
+ box-decoration-break: clone;
56614
+ -webkit-box-decoration-break: clone;
56615
+ padding: 0.02em 0.12em;
56289
56616
  }
56290
56617
 
56291
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--error {
56292
- background-color: var(--ab-error-bg, rgba(var(--tb-destructive, 220 38 38), 0.1));
56293
- color: var(--ab-error-text, rgb(var(--tb-destructive, 220 38 38)));
56618
+ :where(.theme-scope) .rb-inline-text-highlight-soft {
56619
+ background: color-mix(in oklab, var(--section-text-color, rgb(var(--tb-text))) 14%, transparent);
56294
56620
  }
56295
56621
 
56296
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--warning {
56297
- background-color: var(--ab-warning-bg, rgba(var(--tb-warning, 245 158 11), 0.1));
56298
- color: var(--ab-warning-text, rgb(var(--tb-warning, 245 158 11)));
56622
+ :where(.theme-scope) .rb-inline-text-highlight-accent {
56623
+ background: color-mix(in oklab, rgb(var(--tb-accent)) 28%, transparent);
56299
56624
  }
56300
56625
 
56301
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-alert--info {
56302
- background-color: var(--ab-info-bg, rgba(var(--tb-info, 14 165 233), 0.1));
56303
- color: var(--ab-info-text, rgb(var(--tb-info, 14 165 233)));
56626
+ :where(.theme-scope) .rb-inline-text-highlight-brand {
56627
+ background: color-mix(in oklab, rgb(var(--tb-primary)) 24%, transparent);
56304
56628
  }
56305
56629
 
56306
- /* Form elements */
56307
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-label {
56308
- display: block;
56309
- font-size: 0.875rem;
56310
- font-weight: 500;
56311
- margin-bottom: 0.5rem;
56630
+ /* =============================================================================
56631
+ * Block: Hero (Phase 2)
56632
+ * Uses theme palette vars directly (no Tier 3 vars needed)
56633
+ * =============================================================================
56634
+ */
56635
+
56636
+ /* Eyebrow - color only (typography via .rb-eyebrow) */
56637
+ :where(.theme-scope) :where([data-block="hero"]) .hero-eyebrow:not(.rb-eyebrow-treatment-accent) {
56638
+ color: var(--section-text-color, rgb(var(--tb-text)));
56312
56639
  }
56313
56640
 
56314
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-required {
56315
- color: var(--ab-error-text, rgb(var(--tb-destructive, 220 38 38)));
56316
- margin-left: 0.125rem;
56641
+ /* Subheadline - supporting text below headline */
56642
+ :where(.theme-scope) :where([data-block="hero"]) .hero-headline {
56643
+ text-wrap: balance;
56317
56644
  }
56318
56645
 
56319
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-input,
56320
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-select,
56321
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-textarea {
56322
- width: 100%;
56323
- padding: 0.5rem 0.75rem;
56324
- border: 1px solid var(--ab-input-border, rgb(var(--tb-border, 226 232 240)));
56325
- border-radius: var(--ab-input-radius, var(--rb-input-radius, var(--radius-control, var(--rb-block-radius, 1rem))));
56326
- background: transparent;
56327
- font-size: 0.875rem;
56328
- transition: border-color var(--rb-block-transition, 150ms) ease, box-shadow var(--rb-block-transition, 150ms) ease;
56646
+ :where(.theme-scope) :where([data-block="hero"]) .hero-subheadline {
56647
+ font-size: 1.125rem;
56648
+ color: var(--section-supporting-color, var(--section-text-color, rgb(var(--tb-text))));
56329
56649
  }
56330
56650
 
56331
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-input:focus,
56332
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-select:focus,
56333
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-textarea:focus {
56334
- outline: none;
56335
- border-color: var(--ab-card-border-selected, rgb(var(--tb-primary, 17 24 39)));
56336
- box-shadow: 0 0 0 3px var(--ab-input-focus-ring, rgba(var(--tb-primary, 17 24 39), 0.3));
56651
+ @container rb-site (min-width: 640px) {
56652
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
56653
+ :where(.theme-scope) :where([data-block="hero"]) .hero-subheadline {
56654
+ font-size: 1.25rem;
56655
+ }
56656
+ }
56337
56657
  }
56338
56658
 
56339
- /* Buttons */
56340
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn {
56341
- display: inline-flex;
56342
- align-items: center;
56343
- justify-content: center;
56344
- padding: 0.5rem 1.5rem;
56345
- border-radius: var(--ab-button-radius, var(--rb-button-radius, var(--rb-block-radius, 1rem)));
56346
- font-size: 0.875rem;
56347
- font-weight: 500;
56348
- cursor: pointer;
56349
- transition: background-color var(--rb-block-transition, 150ms) ease, border-color var(--rb-block-transition, 150ms) ease;
56659
+ /* Hero typography scales. These classes are emitted by Theme V2 hero looks. */
56660
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-quiet .hero-headline {
56661
+ font-size: clamp(2rem, 4vw, 3rem);
56662
+ line-height: 1.12;
56350
56663
  }
56351
56664
 
56352
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--primary {
56353
- flex: 1;
56354
- background-color: var(--ab-btn-primary-bg, rgb(var(--tb-primary, 17 24 39)));
56355
- color: var(--ab-btn-primary-text, rgb(var(--tb-primaryForeground, 255 255 255)));
56356
- border: none;
56665
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-quiet .hero-subheadline {
56666
+ font-size: clamp(1rem, 1.2vw, 1.25rem);
56667
+ line-height: 1.55;
56357
56668
  }
56358
56669
 
56359
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--primary:hover:not(:disabled) {
56360
- background-color: var(--ab-btn-primary-hover, rgba(var(--tb-primary, 17 24 39), 0.9));
56670
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-editorial .hero-headline {
56671
+ font-size: clamp(2.75rem, 5.6vw, 4.75rem);
56672
+ line-height: 1.06;
56361
56673
  }
56362
56674
 
56363
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--secondary {
56364
- background: transparent;
56365
- border: 1px solid var(--ab-btn-secondary-border, rgb(var(--tb-border, 226 232 240)));
56675
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-editorial .hero-subheadline {
56676
+ font-size: clamp(1.0625rem, 1.4vw, 1.375rem);
56677
+ line-height: 1.55;
56366
56678
  }
56367
56679
 
56368
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--secondary:hover:not(:disabled) {
56369
- background-color: var(--ab-btn-secondary-hover, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
56680
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-headline {
56681
+ font-size: clamp(3.5rem, 7.2vw, 6.25rem);
56682
+ line-height: 1;
56370
56683
  }
56371
56684
 
56372
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--link {
56373
- background: transparent;
56374
- border: none;
56375
- padding: 0;
56376
- text-decoration: underline;
56685
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-subheadline {
56686
+ font-size: clamp(1.125rem, 1.5vw, 1.5rem);
56687
+ line-height: 1.5;
56377
56688
  }
56378
56689
 
56379
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn--link:hover {
56380
- text-decoration: none;
56690
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-headline {
56691
+ font-size: clamp(4.25rem, 10vw, 8.5rem);
56692
+ line-height: 0.94;
56381
56693
  }
56382
56694
 
56383
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-btn:disabled {
56384
- opacity: 0.5;
56385
- cursor: not-allowed;
56695
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-subheadline {
56696
+ font-size: clamp(1.125rem, 1.4vw, 1.5rem);
56697
+ line-height: 1.45;
56386
56698
  }
56387
56699
 
56388
- /* Actions row */
56389
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-actions {
56390
- display: flex;
56391
- gap: 0.75rem;
56392
- margin-top: 1.5rem;
56700
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-medium.rb-hero-typography-poster .hero-headline {
56701
+ font-size: clamp(3.5rem, 7.5vw, 6.5rem);
56393
56702
  }
56394
56703
 
56395
- /* Skeleton loading */
56396
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-skeleton {
56397
- height: 2.5rem;
56398
- width: 100%;
56399
- background-color: var(--ab-muted-bg, rgba(var(--tb-foreground, var(--tb-text, 15 23 42)), 0.05));
56400
- border-radius: var(--ab-card-radius, var(--rb-block-radius, 1rem));
56401
- animation: ab-pulse 1.5s ease-in-out infinite;
56704
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-poster .hero-headline,
56705
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-display .hero-headline {
56706
+ font-size: clamp(3rem, 6vw, 5.25rem);
56707
+ line-height: 1.02;
56402
56708
  }
56403
56709
 
56404
- @keyframes ab-pulse {
56405
- 0%, 100% {
56406
- opacity: 1;
56407
- }
56408
- 50% {
56409
- opacity: 0.5;
56710
+ @container rb-site (max-width: 639px) {
56711
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
56712
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-headline,
56713
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-headline,
56714
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-poster .hero-headline,
56715
+ :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-display .hero-headline {
56716
+ font-size: clamp(2.5rem, 11vw, 3.5rem);
56717
+ line-height: 1.05;
56410
56718
  }
56411
56719
  }
56720
+ }
56412
56721
 
56413
- /* Field wrapper */
56414
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-field {
56722
+ /* =============================================================================
56723
+ * Shared: Heading Group (used by CTA, single-button, etc.)
56724
+ * =============================================================================
56725
+ */
56726
+
56727
+ /* Eyebrow - color only (typography via .rb-eyebrow) */
56728
+ :where(.theme-scope) .heading-eyebrow:not(.rb-eyebrow-treatment-accent) {
56729
+ color: rgb(var(--tb-mutedText));
56730
+ }
56731
+
56732
+ /* =============================================================================
56733
+ * Block: CTA (Phase 2)
56734
+ * =============================================================================
56735
+ */
56736
+
56737
+ /* CTA content/body text */
56738
+ :where(.theme-scope) :where([data-block="cta-full"]) .cta-content {
56739
+ color: var(--section-supporting-color, rgb(var(--tb-mutedText)));
56740
+ }
56741
+
56742
+ /* CTA button row container */
56743
+ :where(.theme-scope) :where([data-block="cta-full"]) .cta-row {
56415
56744
  display: flex;
56416
- flex-direction: column;
56417
- gap: 0.5rem;
56745
+ flex-wrap: wrap;
56418
56746
  }
56419
56747
 
56420
- /* Altcha wrapper */
56421
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-altcha {
56422
- margin-top: 1rem;
56748
+ /* =============================================================================
56749
+ * Block: Body Text (content block, Phase 2)
56750
+ *
56751
+ * Style contract:
56752
+ * - Variant styling is keyed off \`data-block-variant\` on the PageRenderer wrapper.
56753
+ * - Prose sizing comes from \`rb-prose-*\` (theme-aware) in \`packages/blocks/src/theme/styles.css\`.
56754
+ * =============================================================================
56755
+ */
56756
+
56757
+ /* Body copy rich text container */
56758
+ :where(.theme-scope) :where([data-block="body-text"]) .body-copy-container {
56759
+ max-width: 48rem;
56760
+ margin-left: 0;
56761
+ margin-right: auto;
56423
56762
  }
56424
56763
 
56425
- /* Link button (inline text link) */
56426
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-link {
56427
- display: inline;
56428
- margin-left: 0.5rem;
56429
- color: rgb(var(--tb-primary, 17 24 39));
56430
- background: none;
56431
- border: none;
56432
- padding: 0;
56433
- font: inherit;
56434
- text-decoration: underline;
56435
- cursor: pointer;
56764
+ :where(.theme-scope) :where([data-block="body-text"]) .body-copy-container.rb-items-center {
56765
+ margin-left: auto;
56766
+ margin-right: auto;
56436
56767
  }
56437
56768
 
56438
- :where(.theme-scope) :where([data-block="appointment-booking"]) .ab-link:hover {
56439
- text-decoration: none;
56769
+ /* Body copy rich text */
56770
+ :where(.theme-scope) :where([data-block="body-text"]) .body-copy-body {
56771
+ color: inherit;
56772
+ }
56773
+
56774
+ /* Ensure editing mode doesn't silently change typography inside ProseMirror */
56775
+ :where(.theme-scope) :where([data-block="body-text"]) .body-copy-body :where(.ProseMirror) {
56776
+ font-size: inherit;
56777
+ line-height: inherit;
56778
+ }
56779
+
56780
+ /* Variant: Intro (centered, wider container, larger text, relaxed leading) */
56781
+ :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) .body-copy-container {
56782
+ max-width: 60rem;
56783
+ }
56784
+
56785
+ :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) .body-copy-body {
56786
+ font-size: var(--rb-prose-lg-font-size);
56787
+ line-height: var(--rb-prose-lg-line-height);
56788
+ }
56789
+
56790
+ @container rb-site (min-width: 640px) {
56791
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
56792
+ :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) .body-copy-body {
56793
+ font-size: var(--rb-prose-xl-sm-font-size);
56794
+ line-height: var(--rb-prose-xl-sm-line-height);
56795
+ }
56796
+ }
56797
+ }
56798
+
56799
+ /* Variant: Narrow (left-aligned, shorter line length) */
56800
+ :where(.theme-scope) :where([data-block="body-text"][data-block-variant="narrow"]) .body-copy-container {
56801
+ max-width: 34rem;
56802
+ margin-left: 0;
56803
+ margin-right: auto;
56804
+ }
56805
+
56806
+ /* Override prose sizing via theme-aware vars (see styles.css) */
56807
+ :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) {
56808
+ /* Mobile-first: use rb-prose-lg sizing below 640px */
56809
+ --rb-prose-lg-font-size: clamp(
56810
+ calc(var(--fs-body, 16px) * 1.35),
56811
+ calc(var(--fs-body, 16px) * 1.1 + 1.25vw),
56812
+ calc(var(--fs-body, 16px) * 1.6)
56813
+ );
56814
+ --rb-prose-lg-line-height: calc(var(--lh-body, 1.65) + 0.2);
56815
+
56816
+ /* At >= 640px, rb-prose-xl-sm applies and becomes the dominant size */
56817
+ --rb-prose-xl-sm-font-size: clamp(
56818
+ calc(var(--fs-body, 16px) * 1.55),
56819
+ calc(var(--fs-body, 16px) * 1.25 + 1.5vw),
56820
+ calc(var(--fs-body, 16px) * 1.8)
56821
+ );
56822
+ --rb-prose-xl-sm-line-height: calc(var(--lh-body, 1.65) + 0.2);
56823
+ }
56824
+
56825
+ /* =============================================================================
56826
+ * Block: Form (formCopy fragment, Phase 2)
56827
+ * =============================================================================
56828
+ */
56829
+
56830
+ /* Form title */
56831
+ :where(.theme-scope) :where([data-block="form"]) .form-copy-title {
56832
+ font-size: 1.5rem;
56833
+ font-weight: 600;
56834
+ }
56835
+
56836
+ /* Form intro text */
56837
+ :where(.theme-scope) :where([data-block="form"]) .form-copy-intro {
56838
+ font-size: 1rem;
56839
+ color: var(--section-text-color, rgb(var(--tb-text)));
56440
56840
  }
56441
56841
 
56442
56842
  /* =============================================================================
@@ -56526,261 +56926,6 @@ var containerResponsiveThemeCss = `/*
56526
56926
  margin-top: 0.5rem;
56527
56927
  }
56528
56928
 
56529
- /* =============================================================================
56530
- * Shared: Inline Text Marks
56531
- * =============================================================================
56532
- */
56533
-
56534
- :where(.theme-scope) .rb-inline-text-accent,
56535
- :where(.theme-scope) .rb-inline-text-highlight {
56536
- font: inherit;
56537
- letter-spacing: inherit;
56538
- text-transform: inherit;
56539
- }
56540
-
56541
- :where(.theme-scope) .rb-inline-text-accent-accent {
56542
- color: rgb(var(--tb-accent));
56543
- }
56544
-
56545
- :where(.theme-scope) .rb-inline-text-accent-brand {
56546
- color: rgb(var(--tb-primary));
56547
- }
56548
-
56549
- :where(.theme-scope) .rb-inline-text-accent-contrast {
56550
- color: var(--section-text-color, rgb(var(--tb-text)));
56551
- }
56552
-
56553
- :where(.theme-scope) .rb-inline-text-highlight {
56554
- border-radius: 0.22em;
56555
- box-decoration-break: clone;
56556
- -webkit-box-decoration-break: clone;
56557
- padding: 0.02em 0.12em;
56558
- }
56559
-
56560
- :where(.theme-scope) .rb-inline-text-highlight-soft {
56561
- background: color-mix(in oklab, var(--section-text-color, rgb(var(--tb-text))) 14%, transparent);
56562
- }
56563
-
56564
- :where(.theme-scope) .rb-inline-text-highlight-accent {
56565
- background: color-mix(in oklab, rgb(var(--tb-accent)) 28%, transparent);
56566
- }
56567
-
56568
- :where(.theme-scope) .rb-inline-text-highlight-brand {
56569
- background: color-mix(in oklab, rgb(var(--tb-primary)) 24%, transparent);
56570
- }
56571
-
56572
- /* =============================================================================
56573
- * Block: Hero (Phase 2)
56574
- * Uses theme palette vars directly (no Tier 3 vars needed)
56575
- * =============================================================================
56576
- */
56577
-
56578
- /* Eyebrow - color only (typography via .rb-eyebrow) */
56579
- :where(.theme-scope) :where([data-block="hero"]) .hero-eyebrow:not(.rb-eyebrow-treatment-accent) {
56580
- color: var(--section-text-color, rgb(var(--tb-text)));
56581
- }
56582
-
56583
- /* Subheadline - supporting text below headline */
56584
- :where(.theme-scope) :where([data-block="hero"]) .hero-headline {
56585
- text-wrap: balance;
56586
- }
56587
-
56588
- :where(.theme-scope) :where([data-block="hero"]) .hero-subheadline {
56589
- font-size: 1.125rem;
56590
- color: var(--section-supporting-color, var(--section-text-color, rgb(var(--tb-text))));
56591
- }
56592
-
56593
- @container rb-site (min-width: 640px) {
56594
- @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
56595
- :where(.theme-scope) :where([data-block="hero"]) .hero-subheadline {
56596
- font-size: 1.25rem;
56597
- }
56598
- }
56599
- }
56600
-
56601
- /* Hero typography scales. These classes are emitted by Theme V2 hero looks. */
56602
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-quiet .hero-headline {
56603
- font-size: clamp(2rem, 4vw, 3rem);
56604
- line-height: 1.12;
56605
- }
56606
-
56607
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-quiet .hero-subheadline {
56608
- font-size: clamp(1rem, 1.2vw, 1.25rem);
56609
- line-height: 1.55;
56610
- }
56611
-
56612
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-editorial .hero-headline {
56613
- font-size: clamp(2.75rem, 5.6vw, 4.75rem);
56614
- line-height: 1.06;
56615
- }
56616
-
56617
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-editorial .hero-subheadline {
56618
- font-size: clamp(1.0625rem, 1.4vw, 1.375rem);
56619
- line-height: 1.55;
56620
- }
56621
-
56622
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-headline {
56623
- font-size: clamp(3.5rem, 7.2vw, 6.25rem);
56624
- line-height: 1;
56625
- }
56626
-
56627
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-subheadline {
56628
- font-size: clamp(1.125rem, 1.5vw, 1.5rem);
56629
- line-height: 1.5;
56630
- }
56631
-
56632
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-headline {
56633
- font-size: clamp(4.25rem, 10vw, 8.5rem);
56634
- line-height: 0.94;
56635
- }
56636
-
56637
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-subheadline {
56638
- font-size: clamp(1.125rem, 1.4vw, 1.5rem);
56639
- line-height: 1.45;
56640
- }
56641
-
56642
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-medium.rb-hero-typography-poster .hero-headline {
56643
- font-size: clamp(3.5rem, 7.5vw, 6.5rem);
56644
- }
56645
-
56646
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-poster .hero-headline,
56647
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-display .hero-headline {
56648
- font-size: clamp(3rem, 6vw, 5.25rem);
56649
- line-height: 1.02;
56650
- }
56651
-
56652
- @container rb-site (max-width: 639px) {
56653
- @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
56654
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-poster .hero-headline,
56655
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-typography-display .hero-headline,
56656
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-poster .hero-headline,
56657
- :where(.theme-scope) :where([data-block="hero"]) .rb-hero-title-long.rb-hero-typography-display .hero-headline {
56658
- font-size: clamp(2.5rem, 11vw, 3.5rem);
56659
- line-height: 1.05;
56660
- }
56661
- }
56662
- }
56663
-
56664
- /* =============================================================================
56665
- * Shared: Heading Group (used by CTA, single-button, etc.)
56666
- * =============================================================================
56667
- */
56668
-
56669
- /* Eyebrow - color only (typography via .rb-eyebrow) */
56670
- :where(.theme-scope) .heading-eyebrow:not(.rb-eyebrow-treatment-accent) {
56671
- color: rgb(var(--tb-mutedText));
56672
- }
56673
-
56674
- /* =============================================================================
56675
- * Block: CTA (Phase 2)
56676
- * =============================================================================
56677
- */
56678
-
56679
- /* CTA content/body text */
56680
- :where(.theme-scope) :where([data-block="cta-full"]) .cta-content {
56681
- color: var(--section-supporting-color, rgb(var(--tb-mutedText)));
56682
- }
56683
-
56684
- /* CTA button row container */
56685
- :where(.theme-scope) :where([data-block="cta-full"]) .cta-row {
56686
- display: flex;
56687
- flex-wrap: wrap;
56688
- }
56689
-
56690
- /* =============================================================================
56691
- * Block: Body Text (content block, Phase 2)
56692
- *
56693
- * Style contract:
56694
- * - Variant styling is keyed off \`data-block-variant\` on the PageRenderer wrapper.
56695
- * - Prose sizing comes from \`rb-prose-*\` (theme-aware) in \`packages/blocks/src/theme/styles.css\`.
56696
- * =============================================================================
56697
- */
56698
-
56699
- /* Body copy rich text container */
56700
- :where(.theme-scope) :where([data-block="body-text"]) .body-copy-container {
56701
- max-width: 48rem;
56702
- margin-left: 0;
56703
- margin-right: auto;
56704
- }
56705
-
56706
- :where(.theme-scope) :where([data-block="body-text"]) .body-copy-container.rb-items-center {
56707
- margin-left: auto;
56708
- margin-right: auto;
56709
- }
56710
-
56711
- /* Body copy rich text */
56712
- :where(.theme-scope) :where([data-block="body-text"]) .body-copy-body {
56713
- color: inherit;
56714
- }
56715
-
56716
- /* Ensure editing mode doesn't silently change typography inside ProseMirror */
56717
- :where(.theme-scope) :where([data-block="body-text"]) .body-copy-body :where(.ProseMirror) {
56718
- font-size: inherit;
56719
- line-height: inherit;
56720
- }
56721
-
56722
- /* Variant: Intro (centered, wider container, larger text, relaxed leading) */
56723
- :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) .body-copy-container {
56724
- max-width: 60rem;
56725
- }
56726
-
56727
- :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) .body-copy-body {
56728
- font-size: var(--rb-prose-lg-font-size);
56729
- line-height: var(--rb-prose-lg-line-height);
56730
- }
56731
-
56732
- @container rb-site (min-width: 640px) {
56733
- @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
56734
- :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) .body-copy-body {
56735
- font-size: var(--rb-prose-xl-sm-font-size);
56736
- line-height: var(--rb-prose-xl-sm-line-height);
56737
- }
56738
- }
56739
- }
56740
-
56741
- /* Variant: Narrow (left-aligned, shorter line length) */
56742
- :where(.theme-scope) :where([data-block="body-text"][data-block-variant="narrow"]) .body-copy-container {
56743
- max-width: 34rem;
56744
- margin-left: 0;
56745
- margin-right: auto;
56746
- }
56747
-
56748
- /* Override prose sizing via theme-aware vars (see styles.css) */
56749
- :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) {
56750
- /* Mobile-first: use rb-prose-lg sizing below 640px */
56751
- --rb-prose-lg-font-size: clamp(
56752
- calc(var(--fs-body, 16px) * 1.35),
56753
- calc(var(--fs-body, 16px) * 1.1 + 1.25vw),
56754
- calc(var(--fs-body, 16px) * 1.6)
56755
- );
56756
- --rb-prose-lg-line-height: calc(var(--lh-body, 1.65) + 0.2);
56757
-
56758
- /* At >= 640px, rb-prose-xl-sm applies and becomes the dominant size */
56759
- --rb-prose-xl-sm-font-size: clamp(
56760
- calc(var(--fs-body, 16px) * 1.55),
56761
- calc(var(--fs-body, 16px) * 1.25 + 1.5vw),
56762
- calc(var(--fs-body, 16px) * 1.8)
56763
- );
56764
- --rb-prose-xl-sm-line-height: calc(var(--lh-body, 1.65) + 0.2);
56765
- }
56766
-
56767
- /* =============================================================================
56768
- * Block: Form (formCopy fragment, Phase 2)
56769
- * =============================================================================
56770
- */
56771
-
56772
- /* Form title */
56773
- :where(.theme-scope) :where([data-block="form"]) .form-copy-title {
56774
- font-size: 1.5rem;
56775
- font-weight: 600;
56776
- }
56777
-
56778
- /* Form intro text */
56779
- :where(.theme-scope) :where([data-block="form"]) .form-copy-intro {
56780
- font-size: 1rem;
56781
- color: var(--section-text-color, rgb(var(--tb-text)));
56782
- }
56783
-
56784
56929
  /* =============================================================================
56785
56930
  * Block-Level Override Utilities
56786
56931
  *
@@ -58397,14 +58542,11 @@ var containerResponsiveThemeCss = `/*
58397
58542
  --cr-on-surface-hover-bg: rgba(var(--tb-onSurface, var(--tb-text)), 0.05);
58398
58543
  }
58399
58544
 
58400
- /* Container */
58545
+ /* Container: base styling comes from the shared .rb-reg-surface
58546
+ (registration-surface.css); these overrides preserve course
58547
+ registration's pre-extraction look (fixed padding, centered). */
58401
58548
  :where(.theme-scope) :where([data-block="course-registration"]) .cr-container {
58402
- border-radius: var(--rb-block-radius);
58403
- border: 1px solid var(--cr-border);
58404
58549
  padding: 1.5rem;
58405
- background: rgb(var(--tb-surface));
58406
- color: var(--cr-on-surface);
58407
- max-width: 50rem; /* 800px */
58408
58550
  margin-inline: auto;
58409
58551
  }
58410
58552
 
@@ -59081,7 +59223,7 @@ var containerResponsiveThemeCss = `/*
59081
59223
  padding: 2rem 1rem;
59082
59224
  }
59083
59225
 
59084
- /* State icon color variants (layout from registration-shared.css) */
59226
+ /* State icon color variants (layout from registration-surface.css) */
59085
59227
  :where(.theme-scope) :where([data-block="course-registration"]) .rb-state-icon--success {
59086
59228
  background: var(--cr-success-bg);
59087
59229
  color: var(--cr-success-text);
@@ -61133,6 +61275,8 @@ function PageContent({
61133
61275
  occurrenceContext: dataContext?.occurrenceContext ?? null,
61134
61276
  entrySubrouteContext: dataContext?.entrySubrouteContext ?? null,
61135
61277
  contentEntry: dataContext?.contentEntry ?? null,
61278
+ pageSurface: dataContext?.pageSurface ?? null,
61279
+ subject: dataContext?.subject ?? null,
61136
61280
  editableRouteMetadataFieldIds: dataContext?.editableRouteMetadataFieldIds ?? null,
61137
61281
  previewStage: dataContext?.previewStage,
61138
61282
  supabaseUrl,
@@ -67443,6 +67587,14 @@ var ENDPOINT_DEFINITIONS = {
67443
67587
  responseKind: "json",
67444
67588
  errors: []
67445
67589
  },
67590
+ adminResolveSiteBillingManualReview: {
67591
+ path: "/admin/sites/{siteId}/billing/manual-reviews/{reviewId}/resolve",
67592
+ method: "POST",
67593
+ tags: ["admin", "site-{siteId}", "billing"],
67594
+ auth: "admin",
67595
+ responseKind: "json",
67596
+ errors: []
67597
+ },
67446
67598
  // Admin GSC/SEO endpoints
67447
67599
  adminGscVerifyStart: {
67448
67600
  path: "/admin/seo/gsc/properties/verify/start",