@riverbankcms/sdk 0.135.1 → 0.136.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 (152) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +4 -8
  3. package/dist/{PreviewEditorSidebar-D4p_5TdY.mjs → PreviewEditorSidebar-BU5ZlhQR.mjs} +4 -4
  4. package/dist/{PreviewEditorUI-D0cRoTX1.mjs → PreviewEditorUI-9XkHL-bC.mjs} +3 -3
  5. package/dist/{PreviewQueryProvider-DcgaESkm.mjs → PreviewQueryProvider-wbEpXryy.mjs} +1 -1
  6. package/dist/{SdkPreviewModeRuntime-BKLtM3Nz.mjs → SdkPreviewModeRuntime-CnWmj-2B.mjs} +50 -99
  7. package/dist/{SiteChromeCustomizeContext-61X2m7QV.mjs → SiteChromeCustomizeContext-B6d5zkog.mjs} +2299 -1149
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +8 -554
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +401 -2312
  10. package/dist/_dts/api/src/contentRuntime.d.ts +6 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +7 -0
  12. package/dist/_dts/api/src/index.d.ts +1 -0
  13. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +7 -0
  14. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +26 -0
  15. package/dist/_dts/api/src/sdkBlockContentAdmission.d.ts +5 -0
  16. package/dist/_dts/api/src/sdkThemeWire.d.ts +6 -432
  17. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +2 -3
  18. package/dist/_dts/block-form/src/utils/slug.d.ts +6 -0
  19. package/dist/_dts/blocks/src/PageRenderer.d.ts +12 -6
  20. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +48 -0
  21. package/dist/_dts/blocks/src/definitions.d.ts +14 -0
  22. package/dist/_dts/blocks/src/index.d.ts +4 -3
  23. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +40 -0
  24. package/dist/_dts/blocks/src/server.d.ts +2 -2
  25. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -0
  26. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +78 -0
  27. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +2 -18
  28. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +103 -16
  29. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  30. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
  31. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  32. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +19 -0
  34. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +52 -0
  35. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
  36. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +44 -18
  37. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +20 -3
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/VerifyingTimeoutStep.d.ts +3 -1
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +1 -0
  40. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.client.d.ts +2 -2
  41. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +40 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +43 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +3 -1
  45. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarNavigationChevron.d.ts +4 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModalContext.d.ts +3 -2
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +3 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +31 -3
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +3 -1
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +9 -1
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +4 -3
  53. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +3 -3
  54. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +0 -1
  55. package/dist/_dts/calendar/src/grid.d.ts +24 -66
  56. package/dist/_dts/calendar/src/index.d.ts +2 -2
  57. package/dist/_dts/calendar/src/timetable.d.ts +5 -9
  58. package/dist/_dts/commerce/src/purchase/allocation.d.ts +11 -0
  59. package/dist/_dts/commerce/src/purchase/index.d.ts +2 -0
  60. package/dist/_dts/commerce/src/purchase/settlement.d.ts +33 -0
  61. package/dist/_dts/commerce/src/purchase/stripeCheckoutReturnUrl.d.ts +8 -0
  62. package/dist/_dts/content-model/src/templates/defaults.d.ts +6 -0
  63. package/dist/_dts/core/src/slug.d.ts +20 -5
  64. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +1 -1
  65. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +2 -1
  66. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +6 -0
  67. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
  68. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +10 -6
  69. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +0 -1
  70. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
  71. package/dist/_dts/sdk/src/rendering/helpers/footerPageOutline.d.ts +3 -0
  72. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +3 -0
  73. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
  74. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +17 -0
  75. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +9 -3
  76. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +1 -1
  77. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -2
  78. package/dist/_dts/sdk/src/rendering/overrideResolution.d.ts +7 -4
  79. package/dist/_dts/sdk/src/version.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/cards/types.d.ts +8 -8
  81. package/dist/_dts/theme-core/src/data.d.ts +12 -0
  82. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  83. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -6
  84. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +6 -807
  85. package/dist/_dts/theme-core/src/schema.d.ts +452 -1278
  86. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +213 -1
  87. package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +0 -29
  88. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyles.d.ts +10 -0
  89. package/dist/_dts/theme-core/src/site-styles/headerLayoutTypes.d.ts +8 -5
  90. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +4 -4
  91. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +16 -2
  92. package/dist/_dts/theme-core/src/site-styles/headerStyleDefaults.d.ts +465 -0
  93. package/dist/_dts/theme-core/src/site-styles/headerStyleRecipe.d.ts +161 -0
  94. package/dist/client/{BookingConsentAgreement-Bz9znbpn.mjs → BookingConsentAgreement-DCch21a6.mjs} +2 -2
  95. package/dist/client/{DiscountCodeDisclosure-35Ru8yB9.mjs → DiscountCodeDisclosure-DIj1T59K.mjs} +1 -1
  96. package/dist/client/{EventCombined.client-BKB0ZxRR.mjs → EventCombined.client-BWVNlXTx.mjs} +226 -206
  97. package/dist/client/{EventListing.client-Dx8I21ok.mjs → EventListing.client-DVFCDe3i.mjs} +2 -2
  98. package/dist/client/{LeafletStaticMap-CEWx-Bhe.mjs → LeafletStaticMap-BY5mIHw9.mjs} +1 -1
  99. package/dist/client/{accordion-KIDsKTwS.mjs → accordion-CK29E8rG.mjs} +1 -1
  100. package/dist/client/{bookingForm-D96Rmp-5.mjs → bookingForm-DFvnet-N.mjs} +5 -5
  101. package/dist/client/bookings.mjs +86 -47
  102. package/dist/client/{carousel-YwUgyL66.mjs → carousel-BVU5NQlb.mjs} +1 -1
  103. package/dist/client/{cart-BbwuNrUT.mjs → cart-BNItcZVa.mjs} +3 -3
  104. package/dist/client/{checkout-hp1ucmEY.mjs → checkout-Bu6iCdkP.mjs} +3 -3
  105. package/dist/client/client.mjs +1950 -1031
  106. package/dist/client/{context-DljQn8L5.mjs → context-BImarOAq.mjs} +12 -0
  107. package/dist/client/{eventCalendar-DU4iNLpo.mjs → eventCalendar-DS2h-UXD.mjs} +256 -114
  108. package/dist/client/{eventCombined-CZuupW8m.mjs → eventCombined-Drt4Oq9p.mjs} +3 -3
  109. package/dist/client/{eventDetails-DPQWwCIi.mjs → eventDetails-Bl2vWgTX.mjs} +4 -3
  110. package/dist/client/{eventListing-C7oMidwS.mjs → eventListing-CS7PHY7v.mjs} +3 -3
  111. package/dist/client/{eventRegistration-zEiunlUs.mjs → eventRegistration-D-j8eNy2.mjs} +85 -41
  112. package/dist/client/{form-D2KIyCVJ.mjs → form-RMpoLTyr.mjs} +2 -2
  113. package/dist/client/{headerSection-CK5uChUK.mjs → headerSection-BYE3Lb3k.mjs} +2 -2
  114. package/dist/client/hooks.mjs +2225 -276
  115. package/dist/client/{locationMap-DLQNH1ln.mjs → locationMap-BxSr7Kkh.mjs} +2 -2
  116. package/dist/client/{newsletterForm-ZuhIG7fZ.mjs → newsletterForm-DerbXwFC.mjs} +2 -2
  117. package/dist/client/{productDetail-7hIcGeae.mjs → productDetail-4SZCLhAf.mjs} +3 -3
  118. package/dist/client/{productList-T4Cii1ot.mjs → productList-D7AP4GNq.mjs} +3 -3
  119. package/dist/client/{propsDecoder-mB0aC_Fi.mjs → propsDecoder-pzBeCh14.mjs} +94 -24
  120. package/dist/client/rendering/client.mjs +758 -464
  121. package/dist/client/rendering/islands.mjs +17 -17
  122. package/dist/client/rendering.mjs +2126 -1244
  123. package/dist/client/{scrollToBlock-Du5mHgvL.mjs → scrollToBlock-CduAKf8T.mjs} +1 -1
  124. package/dist/client/{shop-B5zAcKZn.mjs → shop-Cp5p_kGe.mjs} +6 -6
  125. package/dist/client/{shop-commerce-BKBZB6l5.mjs → shop-commerce-DicXYaYX.mjs} +5 -5
  126. package/dist/client/{shop-commerce-store-Cq4qlNtQ.mjs → shop-commerce-store-CGWnpY4K.mjs} +1 -1
  127. package/dist/client/{shopShared-DYGzEs9D.mjs → shopShared-BDf9ljkm.mjs} +3 -3
  128. package/dist/client/{useEventFilters-Bphkda8m.mjs → useEventFilters-DeeyGYuk.mjs} +3 -3
  129. package/dist/preview-next/before-render.mjs +7 -0
  130. package/dist/preview-next/client/runtime.mjs +4 -4
  131. package/dist/preview-next/keepAlive.mjs +7 -0
  132. package/dist/preview-next/middleware.mjs +7 -0
  133. package/dist/{previewAuthStore-C7ksxt5b.mjs → previewAuthStore-DbqBol0V.mjs} +7 -0
  134. package/dist/{sdk-runtime-BbIC8G4J.mjs → sdk-runtime-19MO27F0.mjs} +2 -2
  135. package/dist/{separator-CadhAtI7.mjs → separator-DaPLtJ1f.mjs} +1 -1
  136. package/dist/server/components.mjs +1527 -893
  137. package/dist/server/config-validation.mjs +65 -113
  138. package/dist/server/config.mjs +65 -113
  139. package/dist/server/data.mjs +65 -112
  140. package/dist/server/index.mjs +122 -4
  141. package/dist/server/manifest.mjs +0 -1
  142. package/dist/server/next.mjs +1432 -708
  143. package/dist/server/page-converter.mjs +58 -91
  144. package/dist/server/prebuild.mjs +1 -1
  145. package/dist/server/rendering/server.mjs +1682 -915
  146. package/dist/server/rendering.mjs +1694 -1020
  147. package/dist/server/routing.mjs +3230 -1843
  148. package/dist/server/server.mjs +21710 -19779
  149. package/dist/server/theme-bridge.mjs +656 -264
  150. package/dist/server/theme.mjs +2 -17
  151. package/dist/styles/index.css +609 -181
  152. package/package.json +1 -1
@@ -6528,7 +6528,6 @@
6528
6528
  }
6529
6529
 
6530
6530
 
6531
-
6532
6531
  /* =============================================================================
6533
6532
  * Block: Event Calendar
6534
6533
  * Uses:
@@ -6539,31 +6538,37 @@
6539
6538
  */
6540
6539
 
6541
6540
  /* Main container */
6542
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar {
6541
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-calendar {
6543
6542
  width: 100%;
6544
6543
  }
6545
6544
 
6546
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-container {
6545
+ :where(.theme-scope)
6546
+ :where([data-block='event-calendar'])
6547
+ .event-calendar-container {
6547
6548
  border: 1px solid var(--ec-border);
6548
6549
  border-radius: var(--rb-block-radius);
6549
6550
  overflow: hidden;
6550
6551
  }
6551
6552
 
6552
6553
  /* Calendar navigation */
6553
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-header {
6554
+ :where(.theme-scope)
6555
+ :where([data-block='event-calendar'])
6556
+ .event-calendar-header {
6554
6557
  display: flex;
6555
6558
  align-items: center;
6556
6559
  justify-content: space-between;
6557
6560
  margin-bottom: 1rem;
6558
6561
  }
6559
6562
 
6560
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-nav {
6563
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-calendar-nav {
6561
6564
  display: flex;
6562
6565
  align-items: center;
6563
6566
  gap: 0.5rem;
6564
6567
  }
6565
6568
 
6566
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-nav-btn {
6569
+ :where(.theme-scope)
6570
+ :where([data-block='event-calendar'])
6571
+ .event-calendar-nav-btn {
6567
6572
  display: flex;
6568
6573
  align-items: center;
6569
6574
  justify-content: center;
@@ -6578,11 +6583,15 @@
6578
6583
  transition: background-color var(--rb-block-transition) ease;
6579
6584
  }
6580
6585
 
6581
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-nav-btn:hover {
6586
+ :where(.theme-scope)
6587
+ :where([data-block='event-calendar'])
6588
+ .event-calendar-nav-btn:hover {
6582
6589
  background-color: var(--ec-nav-hover-bg);
6583
6590
  }
6584
6591
 
6585
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-title {
6592
+ :where(.theme-scope)
6593
+ :where([data-block='event-calendar'])
6594
+ .event-calendar-title {
6586
6595
  font-size: 1.125rem;
6587
6596
  font-weight: 600;
6588
6597
  min-width: 200px;
@@ -6590,13 +6599,17 @@
6590
6599
  }
6591
6600
 
6592
6601
  /* Day headers */
6593
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day-headers {
6602
+ :where(.theme-scope)
6603
+ :where([data-block='event-calendar'])
6604
+ .event-calendar-day-headers {
6594
6605
  display: grid;
6595
6606
  grid-template-columns: repeat(7, minmax(0, 1fr));
6596
6607
  background-color: var(--ec-header-bg);
6597
6608
  }
6598
6609
 
6599
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day-header {
6610
+ :where(.theme-scope)
6611
+ :where([data-block='event-calendar'])
6612
+ .event-calendar-day-header {
6600
6613
  text-align: center;
6601
6614
  padding: 0.5rem;
6602
6615
  font-size: 0.875rem;
@@ -6606,33 +6619,43 @@
6606
6619
  }
6607
6620
 
6608
6621
  /* Calendar grid */
6609
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-grid {
6622
+ :where(.theme-scope)
6623
+ :where([data-block='event-calendar'])
6624
+ .event-calendar-grid {
6610
6625
  display: grid;
6611
6626
  grid-template-columns: repeat(7, minmax(0, 1fr));
6612
6627
  }
6613
6628
 
6614
6629
  /* Day cells */
6615
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day {
6630
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-calendar-day {
6616
6631
  min-height: 100px;
6617
6632
  border-bottom: 1px solid var(--ec-border-subtle);
6618
6633
  border-right: 1px solid var(--ec-border-subtle);
6619
6634
  padding: 0.25rem;
6620
6635
  }
6621
6636
 
6622
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day:nth-child(7n) {
6637
+ :where(.theme-scope)
6638
+ :where([data-block='event-calendar'])
6639
+ .event-calendar-day:nth-child(7n) {
6623
6640
  border-right: none;
6624
6641
  }
6625
6642
 
6626
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day--today {
6643
+ :where(.theme-scope)
6644
+ :where([data-block='event-calendar'])
6645
+ .event-calendar-day--today {
6627
6646
  background-color: var(--ec-today-bg);
6628
6647
  }
6629
6648
 
6630
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day--other-month {
6649
+ :where(.theme-scope)
6650
+ :where([data-block='event-calendar'])
6651
+ .event-calendar-day--other-month {
6631
6652
  opacity: var(--ec-other-month-opacity);
6632
6653
  }
6633
6654
 
6634
6655
  /* Day number */
6635
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day-number {
6656
+ :where(.theme-scope)
6657
+ :where([data-block='event-calendar'])
6658
+ .event-calendar-day-number {
6636
6659
  font-size: 0.875rem;
6637
6660
  font-weight: 500;
6638
6661
  margin-bottom: 0.25rem;
@@ -6640,21 +6663,28 @@
6640
6663
  opacity: var(--ec-day-number-opacity);
6641
6664
  }
6642
6665
 
6643
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day--today .event-calendar-day-number {
6666
+ :where(.theme-scope)
6667
+ :where([data-block='event-calendar'])
6668
+ .event-calendar-day--today
6669
+ .event-calendar-day-number {
6644
6670
  font-weight: 700;
6645
6671
  opacity: 1;
6646
6672
  color: var(--ec-today-text);
6647
6673
  }
6648
6674
 
6649
6675
  /* Events list */
6650
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-events {
6676
+ :where(.theme-scope)
6677
+ :where([data-block='event-calendar'])
6678
+ .event-calendar-events {
6651
6679
  display: flex;
6652
6680
  flex-direction: column;
6653
6681
  gap: 0.25rem;
6654
6682
  }
6655
6683
 
6656
6684
  /* Event item - solid primary background */
6657
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event {
6685
+ :where(.theme-scope)
6686
+ :where([data-block='event-calendar'])
6687
+ .event-calendar-event {
6658
6688
  display: flex;
6659
6689
  align-items: center;
6660
6690
  gap: 0.375rem;
@@ -6675,24 +6705,32 @@
6675
6705
  transform var(--rb-block-transition) ease;
6676
6706
  }
6677
6707
 
6678
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event:hover {
6708
+ :where(.theme-scope)
6709
+ :where([data-block='event-calendar'])
6710
+ .event-calendar-event:hover {
6679
6711
  background-color: var(--ec-event-solid-hover-bg);
6680
6712
  transform: translateY(-1px);
6681
6713
  }
6682
6714
 
6683
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event:focus-visible {
6715
+ :where(.theme-scope)
6716
+ :where([data-block='event-calendar'])
6717
+ .event-calendar-event:focus-visible {
6684
6718
  outline: 2px solid var(--ec-event-solid-bg);
6685
6719
  outline-offset: 2px;
6686
6720
  }
6687
6721
 
6688
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event-time {
6722
+ :where(.theme-scope)
6723
+ :where([data-block='event-calendar'])
6724
+ .event-calendar-event-time {
6689
6725
  flex-shrink: 0;
6690
6726
  white-space: nowrap;
6691
6727
  font-weight: 600;
6692
6728
  opacity: 0.9;
6693
6729
  }
6694
6730
 
6695
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event-title {
6731
+ :where(.theme-scope)
6732
+ :where([data-block='event-calendar'])
6733
+ .event-calendar-event-title {
6696
6734
  min-width: 0;
6697
6735
  overflow: hidden;
6698
6736
  text-overflow: ellipsis;
@@ -6700,7 +6738,9 @@
6700
6738
  }
6701
6739
 
6702
6740
  /* More indicator - clickable button style */
6703
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-more {
6741
+ :where(.theme-scope)
6742
+ :where([data-block='event-calendar'])
6743
+ .event-calendar-more {
6704
6744
  font-size: 0.75rem;
6705
6745
  padding: 0.25rem 0.5rem;
6706
6746
  color: rgb(var(--tb-primary));
@@ -6712,16 +6752,22 @@
6712
6752
  transition: background-color var(--rb-block-transition) ease;
6713
6753
  }
6714
6754
 
6715
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-more:hover {
6755
+ :where(.theme-scope)
6756
+ :where([data-block='event-calendar'])
6757
+ .event-calendar-more:hover {
6716
6758
  background-color: rgba(var(--tb-primary), 0.1);
6717
6759
  }
6718
6760
 
6719
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-more:focus-visible {
6761
+ :where(.theme-scope)
6762
+ :where([data-block='event-calendar'])
6763
+ .event-calendar-more:focus-visible {
6720
6764
  outline: 2px solid rgb(var(--tb-primary));
6721
6765
  outline-offset: 2px;
6722
6766
  }
6723
6767
 
6724
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-empty {
6768
+ :where(.theme-scope)
6769
+ :where([data-block='event-calendar'])
6770
+ .event-calendar-empty {
6725
6771
  text-align: center;
6726
6772
  font-size: 0.875rem;
6727
6773
  opacity: var(--ec-empty-opacity);
@@ -6729,21 +6775,21 @@
6729
6775
  }
6730
6776
 
6731
6777
  /* Filters container */
6732
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-filters {
6778
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-filters {
6733
6779
  display: flex;
6734
6780
  flex-wrap: wrap;
6735
6781
  gap: 1rem;
6736
6782
  margin-bottom: 1.5rem;
6737
6783
  }
6738
6784
 
6739
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-filter {
6785
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-filter {
6740
6786
  display: flex;
6741
6787
  flex-direction: column;
6742
6788
  gap: 0.375rem;
6743
6789
  min-width: 180px;
6744
6790
  }
6745
6791
 
6746
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-filter-label {
6792
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-filter-label {
6747
6793
  font-size: 0.75rem;
6748
6794
  font-weight: 500;
6749
6795
  text-transform: uppercase;
@@ -6752,19 +6798,23 @@
6752
6798
  }
6753
6799
 
6754
6800
  /* Event filter select inherits base styling from .form-select, only block-specific overrides here */
6755
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-filter-select {
6801
+ :where(.theme-scope)
6802
+ :where([data-block='event-calendar'])
6803
+ .event-filter-select {
6756
6804
  /* Use theme input radius instead of block radius for consistency with other form inputs */
6757
6805
  border-radius: var(--rb-input-radius, var(--rb-block-radius));
6758
6806
  }
6759
6807
 
6760
6808
  /* Category filter buttons */
6761
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-buttons {
6809
+ :where(.theme-scope)
6810
+ :where([data-block='event-calendar'])
6811
+ .event-category-buttons {
6762
6812
  display: flex;
6763
6813
  flex-wrap: wrap;
6764
6814
  gap: 0.5rem;
6765
6815
  }
6766
6816
 
6767
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-btn {
6817
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-category-btn {
6768
6818
  padding: 0.5rem 1rem;
6769
6819
  font-size: 0.875rem;
6770
6820
  font-weight: 500;
@@ -6776,50 +6826,66 @@
6776
6826
  transition: all var(--rb-block-transition) ease;
6777
6827
  }
6778
6828
 
6779
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-btn:hover:not(:disabled) {
6829
+ :where(.theme-scope)
6830
+ :where([data-block='event-calendar'])
6831
+ .event-category-btn:hover:not(:disabled) {
6780
6832
  border-color: rgba(var(--tb-primary), 0.5);
6781
6833
  }
6782
6834
 
6783
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-btn:focus-visible {
6835
+ :where(.theme-scope)
6836
+ :where([data-block='event-calendar'])
6837
+ .event-category-btn:focus-visible {
6784
6838
  outline: 2px solid rgb(var(--tb-primary));
6785
6839
  outline-offset: 2px;
6786
6840
  }
6787
6841
 
6788
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-btn--active {
6842
+ :where(.theme-scope)
6843
+ :where([data-block='event-calendar'])
6844
+ .event-category-btn--active {
6789
6845
  background-color: rgb(var(--tb-primary));
6790
6846
  border-color: rgb(var(--tb-primary));
6791
6847
  color: var(--ec-event-solid-text);
6792
6848
  }
6793
6849
 
6794
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-btn:disabled {
6850
+ :where(.theme-scope)
6851
+ :where([data-block='event-calendar'])
6852
+ .event-category-btn:disabled {
6795
6853
  opacity: 0.5;
6796
6854
  cursor: not-allowed;
6797
6855
  }
6798
6856
 
6799
6857
  /* Allow category filter to be wider for button group */
6800
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-filter:has(.event-category-buttons) {
6858
+ :where(.theme-scope)
6859
+ :where([data-block='event-calendar'])
6860
+ .event-filter:has(.event-category-buttons) {
6801
6861
  min-width: auto;
6802
6862
  flex: 1 1 auto;
6803
6863
  }
6804
6864
 
6805
6865
  /* Combined mode container */
6806
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-combined {
6866
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-combined {
6807
6867
  width: 100%;
6808
6868
  }
6809
6869
 
6810
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-combined-content {
6870
+ :where(.theme-scope)
6871
+ :where([data-block='event-calendar'])
6872
+ .event-combined-content {
6811
6873
  display: flex;
6812
6874
  flex-direction: column;
6813
6875
  }
6814
6876
 
6815
6877
  /* Calendar view toggle (Month/Week) in Combined mode */
6816
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-view-toggle {
6878
+ :where(.theme-scope)
6879
+ :where([data-block='event-calendar'])
6880
+ .event-calendar-view-toggle {
6817
6881
  display: flex;
6818
6882
  gap: 0.25rem;
6819
6883
  margin-bottom: 1rem;
6820
6884
  }
6821
6885
 
6822
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-view-btn {
6886
+ :where(.theme-scope)
6887
+ :where([data-block='event-calendar'])
6888
+ .event-calendar-view-btn {
6823
6889
  padding: 0.5rem 1rem;
6824
6890
  font-size: 0.875rem;
6825
6891
  font-weight: 500;
@@ -6832,12 +6898,16 @@
6832
6898
  transition: all var(--rb-block-transition) ease;
6833
6899
  }
6834
6900
 
6835
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-view-btn:hover {
6901
+ :where(.theme-scope)
6902
+ :where([data-block='event-calendar'])
6903
+ .event-calendar-view-btn:hover {
6836
6904
  opacity: 1;
6837
6905
  border-color: rgba(var(--tb-primary), 0.5);
6838
6906
  }
6839
6907
 
6840
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-view-btn--active {
6908
+ :where(.theme-scope)
6909
+ :where([data-block='event-calendar'])
6910
+ .event-calendar-view-btn--active {
6841
6911
  opacity: 1;
6842
6912
  background-color: rgb(var(--tb-primary));
6843
6913
  border-color: rgb(var(--tb-primary));
@@ -6850,29 +6920,35 @@
6850
6920
  * ----------------------------------------------------------------------------- */
6851
6921
 
6852
6922
  /* Agenda week container */
6853
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-week {
6923
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-agenda-week {
6854
6924
  display: flex;
6855
6925
  flex-direction: column;
6856
6926
  gap: 0;
6857
6927
  }
6858
6928
 
6859
6929
  /* Individual day section */
6860
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day {
6930
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-agenda-day {
6861
6931
  border-bottom: 1px solid var(--ec-border-subtle);
6862
6932
  }
6863
6933
 
6864
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day:last-child {
6934
+ :where(.theme-scope)
6935
+ :where([data-block='event-calendar'])
6936
+ .event-agenda-day:last-child {
6865
6937
  border-bottom: none;
6866
6938
  }
6867
6939
 
6868
6940
  /* Day header */
6869
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-header {
6941
+ :where(.theme-scope)
6942
+ :where([data-block='event-calendar'])
6943
+ .event-agenda-day-header {
6870
6944
  padding: 0.75rem 0;
6871
6945
  background-color: var(--ec-header-bg);
6872
6946
  border-bottom: 1px solid var(--ec-border-subtle);
6873
6947
  }
6874
6948
 
6875
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-title {
6949
+ :where(.theme-scope)
6950
+ :where([data-block='event-calendar'])
6951
+ .event-agenda-day-title {
6876
6952
  font-size: 0.875rem;
6877
6953
  font-weight: 600;
6878
6954
  margin: 0;
@@ -6882,7 +6958,9 @@
6882
6958
  }
6883
6959
 
6884
6960
  /* Today badge */
6885
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-today-badge {
6961
+ :where(.theme-scope)
6962
+ :where([data-block='event-calendar'])
6963
+ .event-agenda-day-today-badge {
6886
6964
  display: inline-flex;
6887
6965
  align-items: center;
6888
6966
  padding: 0.125rem 0.5rem;
@@ -6896,24 +6974,33 @@
6896
6974
  }
6897
6975
 
6898
6976
  /* Today highlight for entire day section */
6899
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day--today .event-agenda-day-header {
6977
+ :where(.theme-scope)
6978
+ :where([data-block='event-calendar'])
6979
+ .event-agenda-day--today
6980
+ .event-agenda-day-header {
6900
6981
  background-color: var(--ec-today-bg);
6901
6982
  }
6902
6983
 
6903
6984
  /* Day content area */
6904
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-content {
6985
+ :where(.theme-scope)
6986
+ :where([data-block='event-calendar'])
6987
+ .event-agenda-day-content {
6905
6988
  padding: 0.75rem 0;
6906
6989
  }
6907
6990
 
6908
6991
  /* Events list within a day */
6909
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-events {
6992
+ :where(.theme-scope)
6993
+ :where([data-block='event-calendar'])
6994
+ .event-agenda-day-events {
6910
6995
  display: flex;
6911
6996
  flex-direction: column;
6912
6997
  gap: 0.5rem;
6913
6998
  }
6914
6999
 
6915
7000
  /* Empty day message */
6916
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-empty {
7001
+ :where(.theme-scope)
7002
+ :where([data-block='event-calendar'])
7003
+ .event-agenda-day-empty {
6917
7004
  font-size: 0.875rem;
6918
7005
  opacity: var(--ec-empty-opacity);
6919
7006
  margin: 0;
@@ -6925,7 +7012,7 @@
6925
7012
  * Rich event card for agenda view
6926
7013
  * ----------------------------------------------------------------------------- */
6927
7014
 
6928
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card {
7015
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-agenda-card {
6929
7016
  display: flex;
6930
7017
  align-items: flex-start;
6931
7018
  gap: 0.75rem;
@@ -6938,13 +7025,17 @@
6938
7025
  transition: all var(--rb-block-transition) ease;
6939
7026
  }
6940
7027
 
6941
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card:hover {
7028
+ :where(.theme-scope)
7029
+ :where([data-block='event-calendar'])
7030
+ .event-agenda-card:hover {
6942
7031
  border-color: rgba(var(--tb-primary), 0.5);
6943
7032
  background-color: var(--ec-event-bg);
6944
7033
  }
6945
7034
 
6946
7035
  /* Category color indicator */
6947
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-indicator {
7036
+ :where(.theme-scope)
7037
+ :where([data-block='event-calendar'])
7038
+ .event-agenda-card-indicator {
6948
7039
  flex-shrink: 0;
6949
7040
  width: 4px;
6950
7041
  align-self: stretch;
@@ -6953,7 +7044,9 @@
6953
7044
  }
6954
7045
 
6955
7046
  /* Card content wrapper */
6956
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-content {
7047
+ :where(.theme-scope)
7048
+ :where([data-block='event-calendar'])
7049
+ .event-agenda-card-content {
6957
7050
  flex: 1;
6958
7051
  min-width: 0;
6959
7052
  display: flex;
@@ -6962,28 +7055,36 @@
6962
7055
  }
6963
7056
 
6964
7057
  /* Header row: time + title */
6965
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-header {
7058
+ :where(.theme-scope)
7059
+ :where([data-block='event-calendar'])
7060
+ .event-agenda-card-header {
6966
7061
  display: flex;
6967
7062
  align-items: baseline;
6968
7063
  gap: 0.5rem;
6969
7064
  flex-wrap: wrap;
6970
7065
  }
6971
7066
 
6972
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-time {
7067
+ :where(.theme-scope)
7068
+ :where([data-block='event-calendar'])
7069
+ .event-agenda-card-time {
6973
7070
  font-size: 0.75rem;
6974
7071
  font-weight: 600;
6975
7072
  opacity: var(--ec-time-opacity);
6976
7073
  white-space: nowrap;
6977
7074
  }
6978
7075
 
6979
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-title {
7076
+ :where(.theme-scope)
7077
+ :where([data-block='event-calendar'])
7078
+ .event-agenda-card-title {
6980
7079
  font-size: 0.875rem;
6981
7080
  font-weight: 500;
6982
7081
  line-height: 1.3;
6983
7082
  }
6984
7083
 
6985
7084
  /* Details row: venue, price, capacity */
6986
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-details {
7085
+ :where(.theme-scope)
7086
+ :where([data-block='event-calendar'])
7087
+ .event-agenda-card-details {
6987
7088
  display: flex;
6988
7089
  align-items: center;
6989
7090
  gap: 0.75rem;
@@ -6992,26 +7093,36 @@
6992
7093
  opacity: 0.7;
6993
7094
  }
6994
7095
 
6995
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-venue {
7096
+ :where(.theme-scope)
7097
+ :where([data-block='event-calendar'])
7098
+ .event-agenda-card-venue {
6996
7099
  display: inline-flex;
6997
7100
  align-items: center;
6998
7101
  gap: 0.25rem;
6999
7102
  }
7000
7103
 
7001
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-icon {
7104
+ :where(.theme-scope)
7105
+ :where([data-block='event-calendar'])
7106
+ .event-agenda-card-icon {
7002
7107
  flex-shrink: 0;
7003
7108
  opacity: 0.7;
7004
7109
  }
7005
7110
 
7006
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-price {
7111
+ :where(.theme-scope)
7112
+ :where([data-block='event-calendar'])
7113
+ .event-agenda-card-price {
7007
7114
  font-weight: 500;
7008
7115
  }
7009
7116
 
7010
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-capacity {
7117
+ :where(.theme-scope)
7118
+ :where([data-block='event-calendar'])
7119
+ .event-agenda-card-capacity {
7011
7120
  font-weight: 500;
7012
7121
  }
7013
7122
 
7014
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-capacity--full {
7123
+ :where(.theme-scope)
7124
+ :where([data-block='event-calendar'])
7125
+ .event-agenda-card-capacity--full {
7015
7126
  color: rgb(var(--tb-error, 239 68 68));
7016
7127
  opacity: 1;
7017
7128
  }
@@ -7021,20 +7132,24 @@
7021
7132
  * Time-grid layout for recurring class schedules
7022
7133
  * ----------------------------------------------------------------------------- */
7023
7134
 
7024
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable {
7135
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-timetable {
7025
7136
  display: flex;
7026
7137
  flex-direction: column;
7027
7138
  gap: 0.75rem;
7028
7139
  }
7029
7140
 
7030
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-selector {
7141
+ :where(.theme-scope)
7142
+ :where([data-block='event-calendar'])
7143
+ .event-timetable-day-selector {
7031
7144
  display: none;
7032
7145
  gap: 0.375rem;
7033
7146
  overflow-x: auto;
7034
7147
  padding-bottom: 0.125rem;
7035
7148
  }
7036
7149
 
7037
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-tab {
7150
+ :where(.theme-scope)
7151
+ :where([data-block='event-calendar'])
7152
+ .event-timetable-day-tab {
7038
7153
  flex: 0 0 auto;
7039
7154
  padding: 0.5rem 0.75rem;
7040
7155
  border: 1px solid var(--ec-border);
@@ -7049,35 +7164,49 @@
7049
7164
  border-color var(--rb-block-transition) ease;
7050
7165
  }
7051
7166
 
7052
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-tab--active {
7167
+ :where(.theme-scope)
7168
+ :where([data-block='event-calendar'])
7169
+ .event-timetable-day-tab--active {
7053
7170
  background-color: rgb(var(--tb-primary));
7054
7171
  border-color: rgb(var(--tb-primary));
7055
7172
  color: rgb(var(--tb-primaryText, 255 255 255));
7056
7173
  }
7057
7174
 
7058
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-container {
7175
+ :where(.theme-scope)
7176
+ :where([data-block='event-calendar'])
7177
+ .event-timetable-container {
7059
7178
  border: 1px solid var(--ec-border);
7060
7179
  border-radius: var(--rb-block-radius);
7061
7180
  overflow-x: auto;
7062
7181
  overflow-y: hidden;
7063
7182
  }
7064
7183
 
7065
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-grid {
7184
+ :where(.theme-scope)
7185
+ :where([data-block='event-calendar'])
7186
+ .event-timetable-grid {
7066
7187
  display: grid;
7067
7188
  grid-template-columns: 4.5rem repeat(7, minmax(8rem, 1fr));
7068
7189
  min-width: 62rem;
7069
7190
  }
7070
7191
 
7071
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-time-rail,
7072
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day {
7192
+ :where(.theme-scope)
7193
+ :where([data-block='event-calendar'])
7194
+ .event-timetable-time-rail,
7195
+ :where(.theme-scope)
7196
+ :where([data-block='event-calendar'])
7197
+ .event-timetable-day {
7073
7198
  border-right: 1px solid var(--ec-border-subtle);
7074
7199
  }
7075
7200
 
7076
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day:last-child {
7201
+ :where(.theme-scope)
7202
+ :where([data-block='event-calendar'])
7203
+ .event-timetable-day:last-child {
7077
7204
  border-right: none;
7078
7205
  }
7079
7206
 
7080
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-heading {
7207
+ :where(.theme-scope)
7208
+ :where([data-block='event-calendar'])
7209
+ .event-timetable-day-heading {
7081
7210
  min-height: 3.25rem;
7082
7211
  margin: 0;
7083
7212
  padding: 0.75rem 0.5rem;
@@ -7092,12 +7221,17 @@
7092
7221
  font-weight: 600;
7093
7222
  }
7094
7223
 
7095
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day--today .event-timetable-day-heading {
7224
+ :where(.theme-scope)
7225
+ :where([data-block='event-calendar'])
7226
+ .event-timetable-day--today
7227
+ .event-timetable-day-heading {
7096
7228
  background-color: var(--ec-today-bg);
7097
7229
  color: var(--ec-today-text);
7098
7230
  }
7099
7231
 
7100
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-today-badge {
7232
+ :where(.theme-scope)
7233
+ :where([data-block='event-calendar'])
7234
+ .event-timetable-today-badge {
7101
7235
  padding: 0.125rem 0.375rem;
7102
7236
  border-radius: var(--rb-button-radius);
7103
7237
  background-color: rgb(var(--tb-primary));
@@ -7107,17 +7241,29 @@
7107
7241
  text-transform: uppercase;
7108
7242
  }
7109
7243
 
7110
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-time-body,
7111
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-body {
7244
+ :where(.theme-scope)
7245
+ :where([data-block='event-calendar'])
7246
+ .event-timetable-time-body,
7247
+ :where(.theme-scope)
7248
+ :where([data-block='event-calendar'])
7249
+ .event-timetable-day-body {
7112
7250
  position: relative;
7113
- height: clamp(34rem, calc(var(--event-timetable-range-minutes, 900) * 0.055rem), 56rem);
7251
+ height: clamp(
7252
+ 34rem,
7253
+ calc(var(--event-timetable-range-minutes, 900) * 0.055rem),
7254
+ 56rem
7255
+ );
7114
7256
  }
7115
7257
 
7116
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-time-body {
7258
+ :where(.theme-scope)
7259
+ :where([data-block='event-calendar'])
7260
+ .event-timetable-time-body {
7117
7261
  background-color: var(--ec-header-bg);
7118
7262
  }
7119
7263
 
7120
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-time-label {
7264
+ :where(.theme-scope)
7265
+ :where([data-block='event-calendar'])
7266
+ .event-timetable-time-label {
7121
7267
  position: absolute;
7122
7268
  left: 0.625rem;
7123
7269
  transform: translateY(-50%);
@@ -7126,14 +7272,18 @@
7126
7272
  white-space: nowrap;
7127
7273
  }
7128
7274
 
7129
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-hour-line {
7275
+ :where(.theme-scope)
7276
+ :where([data-block='event-calendar'])
7277
+ .event-timetable-hour-line {
7130
7278
  position: absolute;
7131
7279
  left: 0;
7132
7280
  right: 0;
7133
7281
  border-top: 1px solid var(--ec-border-subtle);
7134
7282
  }
7135
7283
 
7136
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event {
7284
+ :where(.theme-scope)
7285
+ :where([data-block='event-calendar'])
7286
+ .event-timetable-event {
7137
7287
  position: absolute;
7138
7288
  min-height: 2.75rem;
7139
7289
  padding: 0.375rem 0.5rem;
@@ -7153,21 +7303,35 @@
7153
7303
  transform var(--rb-block-transition) ease;
7154
7304
  }
7155
7305
 
7156
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event:hover {
7306
+ :where(.theme-scope)
7307
+ :where([data-block='event-calendar'])
7308
+ .event-timetable-event:hover {
7157
7309
  box-shadow: 0 4px 12px rgba(var(--tb-text), 0.12);
7158
7310
  transform: translateY(-1px);
7159
7311
  }
7160
7312
 
7161
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event:focus-visible {
7313
+ :where(.theme-scope)
7314
+ :where([data-block='event-calendar'])
7315
+ .event-timetable-event:focus-visible {
7162
7316
  outline: 2px solid rgb(var(--tb-primary));
7163
7317
  outline-offset: 2px;
7164
7318
  }
7165
7319
 
7166
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-time,
7167
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-title,
7168
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-teacher,
7169
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-meta,
7170
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-capacity {
7320
+ :where(.theme-scope)
7321
+ :where([data-block='event-calendar'])
7322
+ .event-timetable-event-time,
7323
+ :where(.theme-scope)
7324
+ :where([data-block='event-calendar'])
7325
+ .event-timetable-event-title,
7326
+ :where(.theme-scope)
7327
+ :where([data-block='event-calendar'])
7328
+ .event-timetable-event-teacher,
7329
+ :where(.theme-scope)
7330
+ :where([data-block='event-calendar'])
7331
+ .event-timetable-event-meta,
7332
+ :where(.theme-scope)
7333
+ :where([data-block='event-calendar'])
7334
+ .event-timetable-event-capacity {
7171
7335
  display: block;
7172
7336
  min-width: 0;
7173
7337
  overflow: hidden;
@@ -7175,36 +7339,50 @@
7175
7339
  white-space: nowrap;
7176
7340
  }
7177
7341
 
7178
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-time {
7342
+ :where(.theme-scope)
7343
+ :where([data-block='event-calendar'])
7344
+ .event-timetable-event-time {
7179
7345
  font-size: 0.6875rem;
7180
7346
  font-weight: 700;
7181
7347
  opacity: var(--ec-time-opacity);
7182
7348
  }
7183
7349
 
7184
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-title {
7350
+ :where(.theme-scope)
7351
+ :where([data-block='event-calendar'])
7352
+ .event-timetable-event-title {
7185
7353
  font-size: 0.8125rem;
7186
7354
  font-weight: 700;
7187
7355
  line-height: 1.25;
7188
7356
  }
7189
7357
 
7190
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-teacher,
7191
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-meta {
7358
+ :where(.theme-scope)
7359
+ :where([data-block='event-calendar'])
7360
+ .event-timetable-event-teacher,
7361
+ :where(.theme-scope)
7362
+ :where([data-block='event-calendar'])
7363
+ .event-timetable-event-meta {
7192
7364
  font-size: 0.6875rem;
7193
7365
  opacity: 0.72;
7194
7366
  }
7195
7367
 
7196
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-capacity {
7368
+ :where(.theme-scope)
7369
+ :where([data-block='event-calendar'])
7370
+ .event-timetable-event-capacity {
7197
7371
  font-size: 0.6875rem;
7198
7372
  font-weight: 600;
7199
7373
  opacity: 0.85;
7200
7374
  }
7201
7375
 
7202
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-capacity--full {
7376
+ :where(.theme-scope)
7377
+ :where([data-block='event-calendar'])
7378
+ .event-timetable-event-capacity--full {
7203
7379
  color: rgb(var(--tb-danger, 220 38 38));
7204
7380
  opacity: 1;
7205
7381
  }
7206
7382
 
7207
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-empty {
7383
+ :where(.theme-scope)
7384
+ :where([data-block='event-calendar'])
7385
+ .event-timetable-day-empty {
7208
7386
  margin: 0;
7209
7387
  padding: 1rem 0.5rem;
7210
7388
  text-align: center;
@@ -7212,7 +7390,9 @@
7212
7390
  opacity: var(--ec-empty-opacity);
7213
7391
  }
7214
7392
 
7215
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-empty {
7393
+ :where(.theme-scope)
7394
+ :where([data-block='event-calendar'])
7395
+ .event-timetable-empty {
7216
7396
  margin: 0.25rem 0 0;
7217
7397
  text-align: center;
7218
7398
  font-size: 0.875rem;
@@ -7220,32 +7400,46 @@
7220
7400
  }
7221
7401
 
7222
7402
  @media (max-width: 767px) {
7223
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-selector {
7403
+ :where(.theme-scope)
7404
+ :where([data-block='event-calendar'])
7405
+ .event-timetable-day-selector {
7224
7406
  display: flex;
7225
7407
  }
7226
7408
 
7227
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-container {
7409
+ :where(.theme-scope)
7410
+ :where([data-block='event-calendar'])
7411
+ .event-timetable-container {
7228
7412
  overflow: hidden;
7229
7413
  }
7230
7414
 
7231
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-grid {
7415
+ :where(.theme-scope)
7416
+ :where([data-block='event-calendar'])
7417
+ .event-timetable-grid {
7232
7418
  grid-template-columns: 4rem minmax(0, 1fr);
7233
7419
  min-width: 0;
7234
7420
  }
7235
7421
 
7236
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day[data-selected="false"] {
7422
+ :where(.theme-scope)
7423
+ :where([data-block='event-calendar'])
7424
+ .event-timetable-day[data-selected='false'] {
7237
7425
  display: none;
7238
7426
  }
7239
7427
 
7240
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day {
7428
+ :where(.theme-scope)
7429
+ :where([data-block='event-calendar'])
7430
+ .event-timetable-day {
7241
7431
  border-right: none;
7242
7432
  }
7243
7433
 
7244
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-time-rail {
7434
+ :where(.theme-scope)
7435
+ :where([data-block='event-calendar'])
7436
+ .event-timetable-time-rail {
7245
7437
  border-right: 1px solid var(--ec-border-subtle);
7246
7438
  }
7247
7439
 
7248
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-heading {
7440
+ :where(.theme-scope)
7441
+ :where([data-block='event-calendar'])
7442
+ .event-timetable-day-heading {
7249
7443
  justify-content: flex-start;
7250
7444
  padding-inline: 0.75rem;
7251
7445
  }
@@ -7257,7 +7451,7 @@
7257
7451
  * three-state availability (available / filling / waitlist), and a footer CTA.
7258
7452
  * ----------------------------------------------------------------------------- */
7259
7453
 
7260
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board {
7454
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-week-board {
7261
7455
  /* Status accent tokens — map the three availability states onto theme colours.
7262
7456
  * available -> secondary, filling -> accent, waitlist -> muted text. */
7263
7457
  --ec-status-available: rgb(var(--tb-secondary));
@@ -7274,17 +7468,20 @@
7274
7468
 
7275
7469
  /* Opt-in raised look: a soft drop shadow so the board lifts off the page.
7276
7470
  * Generic default (no [data-elevated]) stays flat. */
7277
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board[data-elevated] {
7471
+ :where(.theme-scope)
7472
+ :where([data-block='event-calendar'])
7473
+ .event-week-board[data-elevated] {
7278
7474
  box-shadow: 0 14px 34px -24px rgba(var(--tb-text), 0.35);
7279
7475
  }
7280
7476
 
7281
- /* Top bar: title + legend */
7282
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-top {
7283
- display: flex;
7477
+ /* Top bar: authored title + week navigation + legend */
7478
+ :where(.theme-scope)
7479
+ :where([data-block='event-calendar'])
7480
+ .event-week-board-top {
7481
+ display: grid;
7482
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
7284
7483
  align-items: center;
7285
- justify-content: space-between;
7286
7484
  gap: 1rem;
7287
- flex-wrap: wrap;
7288
7485
  padding: 1.1rem 1.5rem;
7289
7486
  /* surfaceAlt gives the header/footer a legible tint against the white day-grid
7290
7487
  * body — the faint `--ec-header-bg` (5% text) is invisible on light palettes. */
@@ -7292,7 +7489,10 @@
7292
7489
  border-bottom: 1px solid var(--ec-border-subtle);
7293
7490
  }
7294
7491
 
7295
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-title {
7492
+ :where(.theme-scope)
7493
+ :where([data-block='event-calendar'])
7494
+ .event-week-board-title {
7495
+ grid-column: 1;
7296
7496
  font-size: 0.8125rem;
7297
7497
  font-weight: 600;
7298
7498
  letter-spacing: 0.12em;
@@ -7300,7 +7500,67 @@
7300
7500
  color: rgb(var(--tb-primary));
7301
7501
  }
7302
7502
 
7303
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend {
7503
+ :where(.theme-scope)
7504
+ :where([data-block='event-calendar'])
7505
+ .event-week-board-navigation {
7506
+ grid-column: 2;
7507
+ display: flex;
7508
+ align-items: center;
7509
+ justify-content: center;
7510
+ gap: 0.65rem;
7511
+ }
7512
+
7513
+ :where(.theme-scope)
7514
+ :where([data-block='event-calendar'])
7515
+ .event-week-board-nav-button {
7516
+ display: inline-flex;
7517
+ align-items: center;
7518
+ justify-content: center;
7519
+ width: 2.25rem;
7520
+ height: 2.25rem;
7521
+ padding: 0;
7522
+ border: 1px solid var(--ec-border);
7523
+ border-radius: 999px;
7524
+ background: transparent;
7525
+ color: inherit;
7526
+ cursor: pointer;
7527
+ }
7528
+
7529
+ :where(.theme-scope)
7530
+ :where([data-block='event-calendar'])
7531
+ .event-week-board-nav-button:hover {
7532
+ background-color: var(--ec-hover-bg);
7533
+ }
7534
+
7535
+ :where(.theme-scope)
7536
+ :where([data-block='event-calendar'])
7537
+ .event-week-board-nav-button:focus-visible {
7538
+ outline: 2px solid rgb(var(--tb-primary));
7539
+ outline-offset: 2px;
7540
+ }
7541
+
7542
+ :where(.theme-scope)
7543
+ :where([data-block='event-calendar'])
7544
+ .event-week-board-range {
7545
+ min-width: 12rem;
7546
+ margin: 0;
7547
+ text-align: center;
7548
+ font-size: 0.875rem;
7549
+ font-weight: 600;
7550
+ }
7551
+
7552
+ :where(.theme-scope)
7553
+ :where([data-block='event-calendar'])
7554
+ .event-week-board-loading {
7555
+ font-weight: 400;
7556
+ opacity: 0.65;
7557
+ }
7558
+
7559
+ :where(.theme-scope)
7560
+ :where([data-block='event-calendar'])
7561
+ .event-week-board-legend {
7562
+ grid-column: 3;
7563
+ justify-self: end;
7304
7564
  display: flex;
7305
7565
  align-items: center;
7306
7566
  gap: 1.1rem;
@@ -7310,38 +7570,72 @@
7310
7570
  opacity: 0.75;
7311
7571
  }
7312
7572
 
7313
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend-item {
7573
+ :where(.theme-scope)
7574
+ :where([data-block='event-calendar'])
7575
+ .event-week-board-error {
7576
+ display: flex;
7577
+ align-items: center;
7578
+ justify-content: center;
7579
+ gap: 0.75rem;
7580
+ padding: 0.75rem 1.5rem;
7581
+ border-bottom: 1px solid var(--ec-border-subtle);
7582
+ color: rgb(var(--tb-error, var(--tb-text)));
7583
+ }
7584
+
7585
+ :where(.theme-scope)
7586
+ :where([data-block='event-calendar'])
7587
+ .event-week-board-error
7588
+ p {
7589
+ margin: 0;
7590
+ font-size: 0.8125rem;
7591
+ }
7592
+
7593
+ :where(.theme-scope)
7594
+ :where([data-block='event-calendar'])
7595
+ .event-week-board-legend-item {
7314
7596
  display: inline-flex;
7315
7597
  align-items: center;
7316
7598
  gap: 0.4rem;
7317
7599
  }
7318
7600
 
7319
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend-dot {
7601
+ :where(.theme-scope)
7602
+ :where([data-block='event-calendar'])
7603
+ .event-week-board-legend-dot {
7320
7604
  width: 0.55rem;
7321
7605
  height: 0.55rem;
7322
7606
  border-radius: 50%;
7323
7607
  display: inline-block;
7324
7608
  }
7325
7609
 
7326
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend-dot[data-status="available"] {
7610
+ :where(.theme-scope)
7611
+ :where([data-block='event-calendar'])
7612
+ .event-week-board-legend-dot[data-status='available'] {
7327
7613
  background-color: var(--ec-status-available);
7328
7614
  }
7329
7615
 
7330
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend-dot[data-status="filling"] {
7616
+ :where(.theme-scope)
7617
+ :where([data-block='event-calendar'])
7618
+ .event-week-board-legend-dot[data-status='filling'] {
7331
7619
  background-color: var(--ec-status-filling);
7332
7620
  }
7333
7621
 
7334
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend-dot[data-status="waitlist"] {
7622
+ :where(.theme-scope)
7623
+ :where([data-block='event-calendar'])
7624
+ .event-week-board-legend-dot[data-status='waitlist'] {
7335
7625
  background-color: var(--ec-status-waitlist);
7336
7626
  }
7337
7627
 
7338
7628
  /* Day columns grid */
7339
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-grid {
7629
+ :where(.theme-scope)
7630
+ :where([data-block='event-calendar'])
7631
+ .event-week-board-grid {
7340
7632
  display: grid;
7341
7633
  grid-template-columns: repeat(var(--event-week-board-cols), minmax(0, 1fr));
7342
7634
  }
7343
7635
 
7344
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day {
7636
+ :where(.theme-scope)
7637
+ :where([data-block='event-calendar'])
7638
+ .event-week-board-day {
7345
7639
  display: flex;
7346
7640
  flex-direction: column;
7347
7641
  min-height: 15rem;
@@ -7351,11 +7645,15 @@
7351
7645
  border-right: var(--rb-border-width, 1px) solid rgb(var(--tb-border));
7352
7646
  }
7353
7647
 
7354
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day:last-child {
7648
+ :where(.theme-scope)
7649
+ :where([data-block='event-calendar'])
7650
+ .event-week-board-day:last-child {
7355
7651
  border-right: none;
7356
7652
  }
7357
7653
 
7358
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-head {
7654
+ :where(.theme-scope)
7655
+ :where([data-block='event-calendar'])
7656
+ .event-week-board-day-head {
7359
7657
  display: flex;
7360
7658
  align-items: baseline;
7361
7659
  gap: 0.4rem;
@@ -7364,11 +7662,16 @@
7364
7662
  border-bottom: var(--rb-border-width, 1px) solid rgb(var(--tb-border));
7365
7663
  }
7366
7664
 
7367
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day--today .event-week-board-day-head {
7665
+ :where(.theme-scope)
7666
+ :where([data-block='event-calendar'])
7667
+ .event-week-board-day--today
7668
+ .event-week-board-day-head {
7368
7669
  background-color: var(--ec-today-bg);
7369
7670
  }
7370
7671
 
7371
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-abbr {
7672
+ :where(.theme-scope)
7673
+ :where([data-block='event-calendar'])
7674
+ .event-week-board-day-abbr {
7372
7675
  font-size: 0.6875rem;
7373
7676
  font-weight: 600;
7374
7677
  letter-spacing: 0.1em;
@@ -7376,18 +7679,25 @@
7376
7679
  opacity: 0.65;
7377
7680
  }
7378
7681
 
7379
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day--today .event-week-board-day-abbr {
7682
+ :where(.theme-scope)
7683
+ :where([data-block='event-calendar'])
7684
+ .event-week-board-day--today
7685
+ .event-week-board-day-abbr {
7380
7686
  opacity: 1;
7381
7687
  color: var(--ec-today-text);
7382
7688
  }
7383
7689
 
7384
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-num {
7690
+ :where(.theme-scope)
7691
+ :where([data-block='event-calendar'])
7692
+ .event-week-board-day-num {
7385
7693
  font-size: 0.8125rem;
7386
7694
  font-weight: 600;
7387
7695
  opacity: 0.5;
7388
7696
  }
7389
7697
 
7390
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-body {
7698
+ :where(.theme-scope)
7699
+ :where([data-block='event-calendar'])
7700
+ .event-week-board-day-body {
7391
7701
  display: flex;
7392
7702
  flex-direction: column;
7393
7703
  gap: 0.65rem;
@@ -7396,7 +7706,9 @@
7396
7706
  }
7397
7707
 
7398
7708
  /* Class card */
7399
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card {
7709
+ :where(.theme-scope)
7710
+ :where([data-block='event-calendar'])
7711
+ .event-week-board-card {
7400
7712
  display: flex;
7401
7713
  flex-direction: column;
7402
7714
  gap: 0.45rem;
@@ -7416,40 +7728,54 @@
7416
7728
  border-color var(--rb-block-transition) ease;
7417
7729
  }
7418
7730
 
7419
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card[data-status="filling"] {
7731
+ :where(.theme-scope)
7732
+ :where([data-block='event-calendar'])
7733
+ .event-week-board-card[data-status='filling'] {
7420
7734
  border-left-color: var(--ec-status-filling);
7421
7735
  }
7422
7736
 
7423
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card[data-status="waitlist"] {
7737
+ :where(.theme-scope)
7738
+ :where([data-block='event-calendar'])
7739
+ .event-week-board-card[data-status='waitlist'] {
7424
7740
  border-left-color: var(--ec-status-waitlist);
7425
7741
  }
7426
7742
 
7427
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card:hover {
7743
+ :where(.theme-scope)
7744
+ :where([data-block='event-calendar'])
7745
+ .event-week-board-card:hover {
7428
7746
  transform: translateY(-2px);
7429
7747
  box-shadow: 0 6px 16px -8px rgba(var(--tb-text), 0.28);
7430
7748
  border-color: rgba(var(--tb-primary), 0.4);
7431
7749
  }
7432
7750
 
7433
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card:focus-visible {
7751
+ :where(.theme-scope)
7752
+ :where([data-block='event-calendar'])
7753
+ .event-week-board-card:focus-visible {
7434
7754
  outline: 2px solid rgb(var(--tb-primary));
7435
7755
  outline-offset: 2px;
7436
7756
  }
7437
7757
 
7438
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card-title {
7758
+ :where(.theme-scope)
7759
+ :where([data-block='event-calendar'])
7760
+ .event-week-board-card-title {
7439
7761
  font-family: var(--font-heading, inherit);
7440
7762
  font-size: 0.9375rem;
7441
7763
  font-weight: 600;
7442
7764
  line-height: 1.2;
7443
7765
  }
7444
7766
 
7445
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card-time {
7767
+ :where(.theme-scope)
7768
+ :where([data-block='event-calendar'])
7769
+ .event-week-board-card-time {
7446
7770
  font-size: 0.75rem;
7447
7771
  letter-spacing: 0.01em;
7448
7772
  opacity: 0.7;
7449
7773
  }
7450
7774
 
7451
7775
  /* Capacity pill */
7452
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card-pill {
7776
+ :where(.theme-scope)
7777
+ :where([data-block='event-calendar'])
7778
+ .event-week-board-card-pill {
7453
7779
  align-self: flex-start;
7454
7780
  display: inline-flex;
7455
7781
  align-items: center;
@@ -7467,20 +7793,26 @@
7467
7793
  border-color: var(--ec-border);
7468
7794
  }
7469
7795
 
7470
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card-pill[data-status="filling"] {
7796
+ :where(.theme-scope)
7797
+ :where([data-block='event-calendar'])
7798
+ .event-week-board-card-pill[data-status='filling'] {
7471
7799
  background-color: rgba(var(--tb-accent), 0.14);
7472
7800
  color: var(--ec-status-filling);
7473
7801
  border-color: rgba(var(--tb-accent), 0.32);
7474
7802
  }
7475
7803
 
7476
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card-pill[data-status="waitlist"] {
7804
+ :where(.theme-scope)
7805
+ :where([data-block='event-calendar'])
7806
+ .event-week-board-card-pill[data-status='waitlist'] {
7477
7807
  background-color: transparent;
7478
7808
  color: rgba(var(--tb-text), 0.6);
7479
7809
  border-color: var(--ec-border);
7480
7810
  }
7481
7811
 
7482
7812
  /* Footer */
7483
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-foot {
7813
+ :where(.theme-scope)
7814
+ :where([data-block='event-calendar'])
7815
+ .event-week-board-foot {
7484
7816
  display: flex;
7485
7817
  align-items: center;
7486
7818
  justify-content: space-between;
@@ -7492,7 +7824,9 @@
7492
7824
  border-top: 1px solid var(--ec-border-subtle);
7493
7825
  }
7494
7826
 
7495
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-foot-note {
7827
+ :where(.theme-scope)
7828
+ :where([data-block='event-calendar'])
7829
+ .event-week-board-foot-note {
7496
7830
  margin: 0;
7497
7831
  font-size: 0.875rem;
7498
7832
  opacity: 0.75;
@@ -7500,46 +7834,105 @@
7500
7834
 
7501
7835
  /* Responsive: collapse day columns to a stacked list on narrow viewports */
7502
7836
  @media (max-width: 1023px) {
7503
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-grid {
7837
+ :where(.theme-scope)
7838
+ :where([data-block='event-calendar'])
7839
+ .event-week-board-top {
7840
+ grid-template-columns: 1fr;
7841
+ }
7842
+
7843
+ :where(.theme-scope)
7844
+ :where([data-block='event-calendar'])
7845
+ .event-week-board-title,
7846
+ :where(.theme-scope)
7847
+ :where([data-block='event-calendar'])
7848
+ .event-week-board-navigation,
7849
+ :where(.theme-scope)
7850
+ :where([data-block='event-calendar'])
7851
+ .event-week-board-legend {
7852
+ grid-column: 1;
7853
+ justify-self: center;
7854
+ }
7855
+
7856
+ :where(.theme-scope)
7857
+ :where([data-block='event-calendar'])
7858
+ .event-week-board-grid {
7504
7859
  grid-template-columns: 1fr;
7505
7860
  }
7506
7861
 
7507
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day {
7862
+ :where(.theme-scope)
7863
+ :where([data-block='event-calendar'])
7864
+ .event-week-board-day {
7508
7865
  min-height: 0;
7509
7866
  border-right: none;
7510
7867
  border-bottom: var(--rb-border-width, 1px) solid rgb(var(--tb-border));
7511
7868
  }
7512
7869
 
7513
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day:last-child {
7870
+ :where(.theme-scope)
7871
+ :where([data-block='event-calendar'])
7872
+ .event-week-board-day:last-child {
7514
7873
  border-bottom: none;
7515
7874
  }
7516
7875
 
7517
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day--empty {
7876
+ :where(.theme-scope)
7877
+ :where([data-block='event-calendar'])
7878
+ .event-week-board-day--empty {
7518
7879
  display: none;
7519
7880
  }
7520
7881
 
7521
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-head {
7882
+ :where(.theme-scope)
7883
+ :where([data-block='event-calendar'])
7884
+ .event-week-board-day-head {
7522
7885
  border-bottom: none;
7523
7886
  padding-bottom: 0.25rem;
7524
7887
  }
7525
7888
 
7526
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-body {
7889
+ :where(.theme-scope)
7890
+ :where([data-block='event-calendar'])
7891
+ .event-week-board-day-body {
7527
7892
  flex-direction: row;
7528
7893
  flex-wrap: wrap;
7529
7894
  padding-top: 0.35rem;
7530
7895
  }
7531
7896
 
7532
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card {
7897
+ :where(.theme-scope)
7898
+ :where([data-block='event-calendar'])
7899
+ .event-week-board-card {
7533
7900
  flex: 1 1 14rem;
7534
7901
  }
7535
7902
  }
7536
7903
 
7537
7904
  @media (max-width: 639px) {
7538
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend {
7905
+ :where(.theme-scope)
7906
+ :where([data-block='event-calendar'])
7907
+ .event-week-board-navigation {
7908
+ display: grid;
7909
+ grid-template-columns: 2.25rem minmax(0, 1fr) 2.25rem;
7910
+ width: 100%;
7911
+ }
7912
+
7913
+ :where(.theme-scope)
7914
+ :where([data-block='event-calendar'])
7915
+ .event-week-board-navigation
7916
+ > :last-child {
7917
+ grid-column: 1 / -1;
7918
+ justify-self: center;
7919
+ }
7920
+
7921
+ :where(.theme-scope)
7922
+ :where([data-block='event-calendar'])
7923
+ .event-week-board-range {
7924
+ min-width: 0;
7925
+ }
7926
+
7927
+ :where(.theme-scope)
7928
+ :where([data-block='event-calendar'])
7929
+ .event-week-board-legend {
7539
7930
  display: none;
7540
7931
  }
7541
7932
 
7542
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card {
7933
+ :where(.theme-scope)
7934
+ :where([data-block='event-calendar'])
7935
+ .event-week-board-card {
7543
7936
  flex: 1 1 100%;
7544
7937
  }
7545
7938
  }
@@ -7555,8 +7948,9 @@
7555
7948
  * Opt-in only: the band paints when the board root carries [data-banded];
7556
7949
  * the generic default is bandless.
7557
7950
  * ----------------------------------------------------------------------------- */
7558
- :where(.theme-scope) [data-slot="section"]:has(.event-calendar--week-board[data-banded])::before {
7559
- content: "";
7951
+ :where(.theme-scope)
7952
+ [data-slot='section']:has(.event-calendar--week-board[data-banded])::before {
7953
+ content: '';
7560
7954
  position: absolute;
7561
7955
  inset: 0;
7562
7956
  z-index: -9;
@@ -7608,7 +8002,7 @@
7608
8002
  * ----------------------------------------------------------------------------- */
7609
8003
 
7610
8004
  /* Modal overlay */
7611
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-overlay {
8005
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-overlay {
7612
8006
  position: fixed;
7613
8007
  inset: 0;
7614
8008
  background: var(--ec-modal-overlay-bg);
@@ -7622,12 +8016,16 @@
7622
8016
  }
7623
8017
 
7624
8018
  @keyframes ec-modal-fade-in {
7625
- from { opacity: 0; }
7626
- to { opacity: 1; }
8019
+ from {
8020
+ opacity: 0;
8021
+ }
8022
+ to {
8023
+ opacity: 1;
8024
+ }
7627
8025
  }
7628
8026
 
7629
8027
  /* Modal dialog */
7630
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal {
8028
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal {
7631
8029
  position: relative;
7632
8030
  background: var(--ec-modal-bg);
7633
8031
  border-radius: var(--rb-block-radius);
@@ -7651,17 +8049,17 @@
7651
8049
  }
7652
8050
 
7653
8051
  /* Event modal - constrained width for card */
7654
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal--event {
8052
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal--event {
7655
8053
  max-width: 26rem;
7656
8054
  }
7657
8055
 
7658
8056
  /* Day modal */
7659
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal--day {
8057
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal--day {
7660
8058
  max-width: 28rem;
7661
8059
  }
7662
8060
 
7663
8061
  /* Close button */
7664
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-close {
8062
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-close {
7665
8063
  position: absolute;
7666
8064
  top: 0.75rem;
7667
8065
  right: 0.75rem;
@@ -7682,31 +8080,35 @@
7682
8080
  z-index: 10;
7683
8081
  }
7684
8082
 
7685
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-close:hover {
8083
+ :where(.theme-scope)
8084
+ :where([data-block='event-calendar'])
8085
+ .ec-modal-close:hover {
7686
8086
  opacity: 1;
7687
8087
  background-color: rgba(var(--tb-text), 0.1);
7688
8088
  }
7689
8089
 
7690
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-close:focus-visible {
8090
+ :where(.theme-scope)
8091
+ :where([data-block='event-calendar'])
8092
+ .ec-modal-close:focus-visible {
7691
8093
  outline: 2px solid rgb(var(--tb-primary));
7692
8094
  outline-offset: 2px;
7693
8095
  }
7694
8096
 
7695
8097
  /* Modal header (for day modal) */
7696
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-header {
8098
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-header {
7697
8099
  padding: 1.5rem 1.5rem 1rem;
7698
8100
  padding-right: 3rem; /* Space for close button */
7699
8101
  border-bottom: 1px solid var(--ec-border);
7700
8102
  }
7701
8103
 
7702
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-title {
8104
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-title {
7703
8105
  font-size: 1.125rem;
7704
8106
  font-weight: 600;
7705
8107
  color: var(--ec-text);
7706
8108
  margin: 0;
7707
8109
  }
7708
8110
 
7709
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-subtitle {
8111
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-subtitle {
7710
8112
  font-size: 0.875rem;
7711
8113
  color: var(--ec-text);
7712
8114
  opacity: 0.7;
@@ -7714,17 +8116,20 @@
7714
8116
  }
7715
8117
 
7716
8118
  /* Modal content */
7717
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-content {
8119
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-content {
7718
8120
  padding: 1rem;
7719
8121
  }
7720
8122
 
7721
8123
  /* Event modal: tighter padding for card */
7722
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal--event .ec-modal-content {
8124
+ :where(.theme-scope)
8125
+ :where([data-block='event-calendar'])
8126
+ .ec-modal--event
8127
+ .ec-modal-content {
7723
8128
  padding: 0.5rem;
7724
8129
  }
7725
8130
 
7726
8131
  /* Day events list */
7727
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-day-events-list {
8132
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-day-events-list {
7728
8133
  display: flex;
7729
8134
  flex-direction: column;
7730
8135
  gap: 0.5rem;
@@ -7732,7 +8137,9 @@
7732
8137
  }
7733
8138
 
7734
8139
  /* AgendaEventCard in button mode inherits most styles, just needs cursor */
7735
- :where(.theme-scope) :where([data-block="event-calendar"]) button.event-agenda-card {
8140
+ :where(.theme-scope)
8141
+ :where([data-block='event-calendar'])
8142
+ button.event-agenda-card {
7736
8143
  cursor: pointer;
7737
8144
  text-align: left;
7738
8145
  font-family: inherit;
@@ -7740,7 +8147,9 @@
7740
8147
 
7741
8148
  /* Responsive adjustments */
7742
8149
  @media (max-width: 640px) {
7743
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-container {
8150
+ :where(.theme-scope)
8151
+ :where([data-block='event-calendar'])
8152
+ .event-calendar-container {
7744
8153
  margin-left: -1.5rem;
7745
8154
  margin-right: -1.5rem;
7746
8155
  border-left: none;
@@ -7748,28 +8157,38 @@
7748
8157
  border-radius: 0;
7749
8158
  }
7750
8159
 
7751
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day-header {
8160
+ :where(.theme-scope)
8161
+ :where([data-block='event-calendar'])
8162
+ .event-calendar-day-header {
7752
8163
  font-size: 0.75rem;
7753
8164
  padding: 0.375rem 0.125rem;
7754
8165
  }
7755
8166
 
7756
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day {
8167
+ :where(.theme-scope)
8168
+ :where([data-block='event-calendar'])
8169
+ .event-calendar-day {
7757
8170
  min-height: 88px;
7758
8171
  padding: 0.125rem;
7759
8172
  }
7760
8173
 
7761
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-title {
8174
+ :where(.theme-scope)
8175
+ :where([data-block='event-calendar'])
8176
+ .event-calendar-title {
7762
8177
  font-size: 0.9375rem;
7763
8178
  min-width: 0;
7764
8179
  }
7765
8180
 
7766
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day-number {
8181
+ :where(.theme-scope)
8182
+ :where([data-block='event-calendar'])
8183
+ .event-calendar-day-number {
7767
8184
  font-size: 0.75rem;
7768
8185
  margin-bottom: 0.125rem;
7769
8186
  padding: 0 0.125rem;
7770
8187
  }
7771
8188
 
7772
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event {
8189
+ :where(.theme-scope)
8190
+ :where([data-block='event-calendar'])
8191
+ .event-calendar-event {
7773
8192
  justify-content: center;
7774
8193
  gap: 0.25rem;
7775
8194
  padding: 0.1875rem 0.25rem;
@@ -7777,25 +8196,34 @@
7777
8196
  border-radius: calc(var(--rb-block-radius) / 3);
7778
8197
  }
7779
8198
 
7780
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event-time {
8199
+ :where(.theme-scope)
8200
+ :where([data-block='event-calendar'])
8201
+ .event-calendar-event-time {
7781
8202
  text-align: center;
7782
8203
  font-size: 0.625rem;
7783
8204
  }
7784
8205
 
7785
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event-title {
8206
+ :where(.theme-scope)
8207
+ :where([data-block='event-calendar'])
8208
+ .event-calendar-event-title {
7786
8209
  display: none;
7787
8210
  }
7788
8211
 
7789
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-more {
8212
+ :where(.theme-scope)
8213
+ :where([data-block='event-calendar'])
8214
+ .event-calendar-more {
7790
8215
  padding: 0.125rem 0.25rem;
7791
8216
  font-size: 0.6875rem;
7792
8217
  }
7793
8218
 
7794
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-header > button {
8219
+ :where(.theme-scope)
8220
+ :where([data-block='event-calendar'])
8221
+ .event-calendar-header
8222
+ > button {
7795
8223
  margin-right: 0.25rem;
7796
8224
  }
7797
8225
 
7798
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal {
8226
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal {
7799
8227
  max-width: 100%;
7800
8228
  max-height: 85vh;
7801
8229
  margin: 0 0.5rem;