astro-component-kit 0.4.0 → 0.4.1

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 (180) hide show
  1. package/README.md +105 -27
  2. package/package.json +16 -3
  3. package/src/components/index.ts +2 -0
  4. package/src/components/lib/Galaxy3D.astro +249 -137
  5. package/src/components/lib/app/AppSidebar.astro +249 -0
  6. package/src/components/lib/app/AppTopbar.astro +284 -0
  7. package/src/components/lib/app/ArrivalsBoard.astro +176 -0
  8. package/src/components/lib/app/AuthCard.astro +213 -0
  9. package/src/components/lib/app/DataTable.astro +346 -0
  10. package/src/components/lib/app/GuestProfileCard.astro +133 -0
  11. package/src/components/lib/app/HousekeepingBoard.astro +189 -0
  12. package/src/components/lib/app/PageHeader.astro +157 -0
  13. package/src/components/lib/app/PlanUsageCard.astro +112 -0
  14. package/src/components/lib/app/RoomRack.astro +207 -0
  15. package/src/components/lib/app/SettingsSection.astro +96 -0
  16. package/src/components/lib/app/SwitchRow.astro +71 -0
  17. package/src/components/lib/app/TeamMembers.astro +190 -0
  18. package/src/components/lib/app/app-icons.ts +52 -0
  19. package/src/components/lib/app/index.ts +19 -0
  20. package/src/components/lib/charts/AreaChart.astro +4 -4
  21. package/src/components/lib/charts/BarChart.astro +3 -3
  22. package/src/components/lib/charts/ChartFrame.astro +10 -10
  23. package/src/components/lib/charts/DonutChart.astro +2 -2
  24. package/src/components/lib/charts/DumbbellChart.astro +1 -1
  25. package/src/components/lib/charts/ForecastLineChart.astro +1 -1
  26. package/src/components/lib/charts/GaugeChart.astro +1 -1
  27. package/src/components/lib/charts/HeatmapChart.astro +1 -1
  28. package/src/components/lib/charts/HorizontalBarChart.astro +2 -2
  29. package/src/components/lib/charts/KpiStatTile.astro +4 -4
  30. package/src/components/lib/charts/LinearProgressGauge.astro +4 -4
  31. package/src/components/lib/charts/MetricDeltaTable.astro +3 -3
  32. package/src/components/lib/charts/RadarMetricChart.astro +4 -4
  33. package/src/components/lib/charts/RadialBarChart.astro +1 -1
  34. package/src/components/lib/charts/RetentionCohortTable.astro +2 -2
  35. package/src/components/lib/charts/TreemapChart.astro +1 -1
  36. package/src/components/lib/ecommerce/CartDrawer.astro +483 -0
  37. package/src/components/lib/ecommerce/CartPageList.astro +290 -0
  38. package/src/components/lib/ecommerce/CartToast.astro +276 -0
  39. package/src/components/lib/ecommerce/CategoryTiles.astro +143 -0
  40. package/src/components/lib/ecommerce/CheckoutForm.astro +423 -0
  41. package/src/components/lib/ecommerce/CountdownBanner.astro +230 -0
  42. package/src/components/lib/ecommerce/FilterBar.astro +278 -0
  43. package/src/components/lib/ecommerce/FilterSidebar.astro +405 -0
  44. package/src/components/lib/ecommerce/LiveActivityToast.astro +213 -0
  45. package/src/components/lib/ecommerce/OrderSummary.astro +295 -0
  46. package/src/components/lib/ecommerce/ProductBuyBox.astro +247 -0
  47. package/src/components/lib/ecommerce/ProductCardMinimal.astro +229 -0
  48. package/src/components/lib/ecommerce/ProductGallery.astro +145 -0
  49. package/src/components/lib/ecommerce/ProductGrid.astro +118 -0
  50. package/src/components/lib/ecommerce/ProductMedia.astro +113 -0
  51. package/src/components/lib/ecommerce/ProductRating.astro +78 -0
  52. package/src/components/lib/ecommerce/ProductToolbar.astro +93 -0
  53. package/src/components/lib/ecommerce/PromoBar.astro +145 -0
  54. package/src/components/lib/ecommerce/StockIndicator.astro +127 -0
  55. package/src/components/lib/ecommerce/StoreHeader.astro +446 -0
  56. package/src/components/lib/ecommerce/StoreHero.astro +260 -0
  57. package/src/components/lib/ecommerce/StoreProductCard.astro +307 -0
  58. package/src/components/lib/ecommerce/TrustBadges.astro +101 -0
  59. package/src/components/lib/ecommerce/VariantPicker.astro +145 -0
  60. package/src/components/lib/ecommerce/cart-store.ts +151 -0
  61. package/src/components/lib/ecommerce/catalog-filter.ts +62 -0
  62. package/src/components/lib/ecommerce/index.ts +34 -0
  63. package/src/components/lib/ecommerce/product-icons.ts +28 -0
  64. package/src/components/lib/ecommerce/types.ts +70 -0
  65. package/src/components/lib/forms/AnimatedInput.astro +4 -2
  66. package/src/components/lib/forms/CustomRadioGroup.astro +3 -1
  67. package/src/components/lib/index.ts +2 -0
  68. package/src/components/lib/layout/BentoGrid3.astro +6 -4
  69. package/src/components/lib/layout/CenterFixedBox.astro +2 -2
  70. package/src/components/lib/layout/CenteredContainer.astro +4 -2
  71. package/src/components/lib/layout/ClusterHorizontal.astro +2 -2
  72. package/src/components/lib/layout/FeatureHero.astro +4 -2
  73. package/src/components/lib/layout/FooterCenteredMinimal.astro +4 -2
  74. package/src/components/lib/layout/FullBleedSection.astro +2 -2
  75. package/src/components/lib/layout/GalleryGrid4.astro +2 -2
  76. package/src/components/lib/layout/HolyGrailGrid.astro +11 -9
  77. package/src/components/lib/layout/LandingSectionSplit.astro +5 -3
  78. package/src/components/lib/layout/MasonryGrid.astro +2 -2
  79. package/src/components/lib/layout/MinimalFooterGrid.astro +1 -1
  80. package/src/components/lib/layout/ScrollSnapSection.astro +1 -1
  81. package/src/components/lib/layout/SidebarLayoutWrapper.astro +4 -2
  82. package/src/components/lib/layout/SplitScreenLayout.astro +3 -3
  83. package/src/components/lib/layout/StepLayoutVertical.astro +1 -1
  84. package/src/components/lib/layout/StickySidebarWrapper.astro +4 -2
  85. package/src/components/lib/sections/AgencyContactBrief.astro +194 -0
  86. package/src/components/lib/sections/AgencyFooterCta.astro +94 -0
  87. package/src/components/lib/sections/AgencyHeader.astro +161 -0
  88. package/src/components/lib/sections/AgencyHeroKinetic.astro +172 -0
  89. package/src/components/lib/sections/AgencyServicesList.astro +113 -0
  90. package/src/components/lib/sections/AgencyTeamGrid.astro +111 -0
  91. package/src/components/lib/sections/AgencyWorkGrid.astro +147 -0
  92. package/src/components/lib/sections/BlogGridSection.astro +9 -7
  93. package/src/components/lib/sections/ButtonsShowcase.astro +20 -18
  94. package/src/components/lib/sections/CardsShowcase.astro +28 -26
  95. package/src/components/lib/sections/CareersOpenings.astro +10 -8
  96. package/src/components/lib/sections/ChangelogSection.astro +14 -7
  97. package/src/components/lib/sections/ContactGlassForm.astro +10 -8
  98. package/src/components/lib/sections/ContactSplitMap.astro +11 -9
  99. package/src/components/lib/sections/CtaAppDownload.astro +13 -11
  100. package/src/components/lib/sections/CtaGlowBanner.astro +12 -10
  101. package/src/components/lib/sections/CtaNewsletterSection.astro +13 -11
  102. package/src/components/lib/sections/CtaSplitImage.astro +13 -11
  103. package/src/components/lib/sections/DataShowcase.astro +23 -21
  104. package/src/components/lib/sections/FaqAccordionSection.astro +8 -8
  105. package/src/components/lib/sections/FaqTwoColumn.astro +9 -7
  106. package/src/components/lib/sections/FeatureAlternatingRows.astro +10 -8
  107. package/src/components/lib/sections/FeatureBentoGrid.astro +13 -11
  108. package/src/components/lib/sections/FeatureIconGrid.astro +6 -6
  109. package/src/components/lib/sections/FeatureTabsShowcase.astro +13 -11
  110. package/src/components/lib/sections/FeatureTimelineFlow.astro +8 -6
  111. package/src/components/lib/sections/FeedbackShowcase.astro +15 -13
  112. package/src/components/lib/sections/FooterMegaSection.astro +13 -11
  113. package/src/components/lib/sections/FormsShowcase.astro +22 -20
  114. package/src/components/lib/sections/HeroDashboardPreview.astro +11 -9
  115. package/src/components/lib/sections/HeroGlass.astro +22 -20
  116. package/src/components/lib/sections/HeroGradient.astro +15 -13
  117. package/src/components/lib/sections/HeroMinimalCentered.astro +10 -10
  118. package/src/components/lib/sections/HeroShowcaseSplit.astro +18 -16
  119. package/src/components/lib/sections/HeroSplit.astro +13 -11
  120. package/src/components/lib/sections/HeroTerminal.astro +14 -12
  121. package/src/components/lib/sections/HeroWaitlist.astro +10 -8
  122. package/src/components/lib/sections/HowItWorksSteps.astro +12 -10
  123. package/src/components/lib/sections/IntegrationsGrid.astro +7 -7
  124. package/src/components/lib/sections/LayoutShowcase.astro +21 -19
  125. package/src/components/lib/sections/LogoCloudSection.astro +4 -4
  126. package/src/components/lib/sections/LogoWallGrid.astro +6 -4
  127. package/src/components/lib/sections/NavigationShowcase.astro +15 -13
  128. package/src/components/lib/sections/OverlaysShowcase.astro +21 -19
  129. package/src/components/lib/sections/PricingComparisonMatrix.astro +15 -13
  130. package/src/components/lib/sections/PricingSinglePlan.astro +13 -11
  131. package/src/components/lib/sections/PricingTierCards.astro +11 -9
  132. package/src/components/lib/sections/PricingToggleCards.astro +13 -13
  133. package/src/components/lib/sections/ShopCategoryHero.astro +103 -0
  134. package/src/components/lib/sections/ShopCollectionMosaic.astro +131 -0
  135. package/src/components/lib/sections/ShopFooterWordmark.astro +100 -0
  136. package/src/components/lib/sections/ShopHeaderEditorial.astro +396 -0
  137. package/src/components/lib/sections/ShopHeroEditorial.astro +151 -0
  138. package/src/components/lib/sections/ShopLookbook.astro +250 -0
  139. package/src/components/lib/sections/ShopNewsletterEditorial.astro +128 -0
  140. package/src/components/lib/sections/ShopProductRail.astro +150 -0
  141. package/src/components/lib/sections/ShopReviewsEditorial.astro +133 -0
  142. package/src/components/lib/sections/ShopValuesMarquee.astro +91 -0
  143. package/src/components/lib/sections/StatsCounterBand.astro +9 -7
  144. package/src/components/lib/sections/StatsDashboardSection.astro +4 -2
  145. package/src/components/lib/sections/StatsMetricShowcase.astro +9 -7
  146. package/src/components/lib/sections/TeamGridSection.astro +12 -10
  147. package/src/components/lib/sections/TestimonialCarousel.astro +10 -8
  148. package/src/components/lib/sections/TestimonialFeatured.astro +7 -5
  149. package/src/components/lib/sections/TestimonialGridSection.astro +7 -7
  150. package/src/components/lib/sections/TestimonialWallGlass.astro +11 -9
  151. package/src/components/lib/sections/TypographyShowcase.astro +10 -8
  152. package/src/components/lib/sections/index.ts +10 -0
  153. package/src/components/lib/templates/ecommerce/StoreCategoryPage.astro +160 -0
  154. package/src/components/lib/templates/ecommerce/StoreCheckoutPage.astro +98 -0
  155. package/src/components/lib/templates/ecommerce/StoreHomePage.astro +191 -0
  156. package/src/components/lib/templates/ecommerce/StoreLayout.astro +169 -0
  157. package/src/components/lib/templates/ecommerce/StoreProductPage.astro +165 -0
  158. package/src/components/lib/templates/ecommerce/data.ts +187 -0
  159. package/src/components/lib/templates/ecommerce/index.ts +14 -0
  160. package/src/components/lib/templates/ecommerce-editorial/EditorialBagPage.astro +52 -0
  161. package/src/components/lib/templates/ecommerce-editorial/EditorialCheckoutPage.astro +123 -0
  162. package/src/components/lib/templates/ecommerce-editorial/EditorialHomePage.astro +102 -0
  163. package/src/components/lib/templates/ecommerce-editorial/EditorialLayout.astro +216 -0
  164. package/src/components/lib/templates/ecommerce-editorial/EditorialProductPage.astro +205 -0
  165. package/src/components/lib/templates/ecommerce-editorial/EditorialShopPage.astro +112 -0
  166. package/src/components/lib/templates/ecommerce-editorial/data.ts +125 -0
  167. package/src/components/lib/templates/ecommerce-editorial/index.ts +16 -0
  168. package/src/components/lib/templates/saas-hotel/AppLayout.astro +83 -0
  169. package/src/components/lib/templates/saas-hotel/DashboardPage.astro +66 -0
  170. package/src/components/lib/templates/saas-hotel/GuestsPage.astro +65 -0
  171. package/src/components/lib/templates/saas-hotel/LandingPage.astro +213 -0
  172. package/src/components/lib/templates/saas-hotel/ReportsPage.astro +63 -0
  173. package/src/components/lib/templates/saas-hotel/ReservationsPage.astro +49 -0
  174. package/src/components/lib/templates/saas-hotel/RoomsPage.astro +48 -0
  175. package/src/components/lib/templates/saas-hotel/SettingsPage.astro +115 -0
  176. package/src/components/lib/templates/saas-hotel/SignInPage.astro +50 -0
  177. package/src/components/lib/templates/saas-hotel/data.ts +229 -0
  178. package/src/components/lib/templates/saas-hotel/index.ts +19 -0
  179. package/src/components/lib/templates/saas-hotel/lobby-theme.css +90 -0
  180. package/src/styles/global.css +95 -0
@@ -21,6 +21,7 @@ const {
21
21
  } = Astro.props;
22
22
  ---
23
23
 
24
+ <div class="cq-contact-glass-form-cq">
24
25
  <section class={`contact-section ${className}`} aria-labelledby="contact-title">
25
26
  <div class="contact-bg" aria-hidden="true">
26
27
  <div class="contact-glow"></div>
@@ -115,8 +116,9 @@ const {
115
116
  </div>
116
117
  </div>
117
118
  </section>
118
-
119
+ </div>
119
120
  <style>
121
+ .cq-contact-glass-form-cq { container-type: inline-size; }
120
122
  .contact-section {
121
123
  position: relative;
122
124
  padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem);
@@ -163,7 +165,7 @@ const {
163
165
  font-weight: 700;
164
166
  letter-spacing: 0.06em;
165
167
  text-transform: uppercase;
166
- background: rgba(184, 134, 11, 0.12);
168
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent);
167
169
  color: #eab308;
168
170
  border: 1px solid rgba(234, 179, 8, 0.25);
169
171
  margin-bottom: var(--sp-4, 1rem);
@@ -218,7 +220,7 @@ const {
218
220
  gap: 1rem;
219
221
  padding: 1rem 1.25rem;
220
222
  background: rgba(15, 23, 42, 0.5);
221
- border: 1px solid rgba(255, 255, 255, 0.06);
223
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
222
224
  border-radius: 14px;
223
225
  backdrop-filter: blur(10px);
224
226
  }
@@ -227,7 +229,7 @@ const {
227
229
  width: 40px;
228
230
  height: 40px;
229
231
  border-radius: 10px;
230
- background: rgba(255, 255, 255, 0.05);
232
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.05);
231
233
  color: #eab308;
232
234
  display: flex;
233
235
  align-items: center;
@@ -261,7 +263,7 @@ const {
261
263
  .contact-form {
262
264
  background: rgba(15, 23, 42, 0.7);
263
265
  backdrop-filter: blur(24px);
264
- border: 1px solid rgba(255, 255, 255, 0.1);
266
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
265
267
  border-radius: var(--r-2xl, 24px);
266
268
  padding: clamp(1.75rem, 4vw, 2.5rem);
267
269
  box-shadow: 0 25px 50px -15px rgba(0, 0, 0, 0.7);
@@ -303,7 +305,7 @@ const {
303
305
  width: 100%;
304
306
  padding: 0.75rem 1rem;
305
307
  background: rgba(0, 0, 0, 0.35);
306
- border: 1px solid rgba(255, 255, 255, 0.1);
308
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
307
309
  border-radius: 10px;
308
310
  color: #fff;
309
311
  font-size: 0.92rem;
@@ -346,14 +348,14 @@ const {
346
348
  box-shadow: 0 6px 20px rgba(234, 179, 8, 0.45);
347
349
  }
348
350
 
349
- @media (max-width: 960px) {
351
+ @container (max-width: 960px) {
350
352
  .contact-grid {
351
353
  grid-template-columns: 1fr;
352
354
  gap: 3rem;
353
355
  }
354
356
  }
355
357
 
356
- @media (max-width: 640px) {
358
+ @container (max-width: 640px) {
357
359
  .form-row {
358
360
  grid-template-columns: 1fr;
359
361
  }
@@ -66,6 +66,7 @@ const SX = VW / 100;
66
66
  const SY = VH / 100;
67
67
  ---
68
68
 
69
+ <div class="cq-contact-split-map-cq">
69
70
  <section class={`csm csm--${variant} csm--${size} ${className}`} aria-labelledby={id}>
70
71
  <div class="csm__inner">
71
72
  <div class="csm__info">
@@ -91,8 +92,8 @@ const SY = VH / 100;
91
92
  <svg viewBox={`0 0 ${VW} ${VH}`} aria-hidden="true">
92
93
  {variant !== 'plain' && dots.map(([x, y]) => (
93
94
  variant === 'grid'
94
- ? <rect x={x * SX - 0.8} y={y * SY - 0.8} width="1.6" height="1.6" fill="rgba(255,255,255,0.14)" />
95
- : <circle cx={x * SX} cy={y * SY} r="0.75" fill="rgba(255,255,255,0.18)" />
95
+ ? <rect x={x * SX - 0.8} y={y * SY - 0.8} width="1.6" height="1.6" fill="rgb(var(--ink-rgb, 255 255 255) / 0.14)" />
96
+ : <circle cx={x * SX} cy={y * SY} r="0.75" fill="rgb(var(--ink-rgb, 255 255 255) / 0.18)" />
96
97
  ))}
97
98
  {offices.map((o) => (
98
99
  <g>
@@ -107,8 +108,9 @@ const SY = VH / 100;
107
108
  </div>
108
109
  </div>
109
110
  </section>
110
-
111
+ </div>
111
112
  <style>
113
+ .cq-contact-split-map-cq { container-type: inline-size; }
112
114
  .csm {
113
115
  --csm-py: 5.5rem;
114
116
  padding: var(--csm-py) var(--sp-6, 1.5rem);
@@ -120,20 +122,20 @@ const SY = VH / 100;
120
122
  .csm__title { margin: 0 0 0.75rem; font-size: clamp(1.9rem, 4vw, 2.75rem); font-weight: 800; letter-spacing: -0.03em; color: var(--c-text-1, #fff); }
121
123
  .csm__subtitle { margin: 0 0 2rem; font-size: 1.0625rem; line-height: 1.6; color: var(--c-text-2, #a3a3a3); }
122
124
  .csm__channels { list-style: none; margin: 0 0 2rem; padding: 0; display: grid; gap: 0.6rem; }
123
- .csm__channel { display: flex; align-items: center; gap: 0.9rem; min-height: 60px; padding: 0.6rem 0.9rem; border-radius: var(--r-md, 14px); border: 1px solid var(--c-border, rgba(255, 255, 255, 0.07)); background: rgba(255, 255, 255, 0.02); color: inherit; text-decoration: none; transition: border-color 0.2s ease, background 0.2s ease; }
124
- .csm__channel:hover { border-color: rgba(255, 255, 255, 0.2); background: rgba(255, 255, 255, 0.04); }
125
+ .csm__channel { display: flex; align-items: center; gap: 0.9rem; min-height: 60px; padding: 0.6rem 0.9rem; border-radius: var(--r-md, 14px); border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.07)); background: rgb(var(--ink-rgb, 255 255 255) / 0.02); color: inherit; text-decoration: none; transition: border-color 0.2s ease, background 0.2s ease; }
126
+ .csm__channel:hover { border-color: rgb(var(--ink-rgb, 255 255 255) / 0.2); background: rgb(var(--ink-rgb, 255 255 255) / 0.04); }
125
127
  .csm__channel:focus-visible { outline: 2px solid var(--c-primary-light, #d4a017); outline-offset: 2px; }
126
- .csm__icon { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 10px; background: var(--c-primary-glow, rgba(184, 134, 11, 0.14)); color: var(--c-primary-light, #d4a017); flex-shrink: 0; }
128
+ .csm__icon { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 10px; background: var(--c-primary-glow, color-mix(in srgb, var(--c-primary, #b8860b) 14%, transparent)); color: var(--c-primary-light, #d4a017); flex-shrink: 0; }
127
129
  .csm__label { display: block; font-size: 0.75rem; color: var(--c-text-3, #8a8a8a); }
128
130
  .csm__value { display: block; font-size: 0.9375rem; font-weight: 600; color: var(--c-text-1, #fff); }
129
131
  .csm__offices { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
130
132
  .csm__offices address { font-style: normal; font-size: 0.8125rem; line-height: 1.5; color: var(--c-text-2, #a3a3a3); }
131
133
  .csm__offices strong { display: block; font-size: 0.9375rem; color: var(--c-text-1, #fff); }
132
- .csm__map { position: relative; aspect-ratio: 16 / 11; border-radius: var(--r-xl, 24px); border: 1px solid var(--c-border, rgba(255, 255, 255, 0.07)); background: radial-gradient(circle at 50% 40%, rgba(255, 255, 255, 0.04), transparent 70%), var(--c-bg-1, #0a0a0a); overflow: hidden; }
134
+ .csm__map { position: relative; aspect-ratio: 16 / 11; border-radius: var(--r-xl, 24px); border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.07)); background: radial-gradient(circle at 50% 40%, rgb(var(--ink-rgb, 255 255 255) / 0.04), transparent 70%), var(--c-bg-1, #0a0a0a); overflow: hidden; }
133
135
  .csm__map svg { position: absolute; inset: 0; width: 100%; height: 100%; }
134
136
  .csm__ping { transform-box: fill-box; transform-origin: center; animation: csm-ping 2.4s ease-out infinite; }
135
137
  @keyframes csm-ping { from { transform: scale(0.6); opacity: 1; } to { transform: scale(2.4); opacity: 0; } }
136
- .csm__pin { position: absolute; transform: translate(-50%, calc(-100% - 12px)); padding: 0.2rem 0.55rem; border-radius: 6px; background: rgba(10, 10, 12, 0.85); border: 1px solid rgba(255, 255, 255, 0.12); font-size: 0.6875rem; font-weight: 600; color: var(--c-text-1, #fff); white-space: nowrap; }
137
- @media (max-width: 860px) { .csm__inner { grid-template-columns: 1fr; } }
138
+ .csm__pin { position: absolute; transform: translate(-50%, calc(-100% - 12px)); padding: 0.2rem 0.55rem; border-radius: 6px; background: rgba(10, 10, 12, 0.85); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12); font-size: 0.6875rem; font-weight: 600; color: var(--c-text-1, #fff); white-space: nowrap; }
139
+ @container (max-width: 860px) { .csm__inner { grid-template-columns: 1fr; } }
138
140
  @media (prefers-reduced-motion: reduce) { .csm__ping { animation: none; } }
139
141
  </style>
@@ -21,6 +21,7 @@ const {
21
21
  } = Astro.props;
22
22
  ---
23
23
 
24
+ <div class="cq-cta-app-download-cq">
24
25
  <section class={`app-download-section ${className}`} aria-labelledby="app-title">
25
26
  <div class="container">
26
27
  <div class="app-card">
@@ -72,8 +73,9 @@ const {
72
73
  </div>
73
74
  </div>
74
75
  </section>
75
-
76
+ </div>
76
77
  <style>
78
+ .cq-cta-app-download-cq { container-type: inline-size; }
77
79
  .app-download-section {
78
80
  padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem);
79
81
  background: var(--c-bg-primary, #030712);
@@ -86,7 +88,7 @@ const {
86
88
 
87
89
  .app-card {
88
90
  background: linear-gradient(135deg, rgba(15, 23, 42, 0.8) 0%, rgba(10, 15, 30, 0.9) 100%);
89
- border: 1px solid rgba(255, 255, 255, 0.1);
91
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
90
92
  border-radius: var(--r-2xl, 24px);
91
93
  padding: clamp(2rem, 5vw, 4rem);
92
94
  display: grid;
@@ -103,7 +105,7 @@ const {
103
105
  font-weight: 700;
104
106
  letter-spacing: 0.06em;
105
107
  text-transform: uppercase;
106
- background: rgba(184, 134, 11, 0.12);
108
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent);
107
109
  color: #eab308;
108
110
  border: 1px solid rgba(234, 179, 8, 0.25);
109
111
  margin-bottom: var(--sp-4, 1rem);
@@ -134,8 +136,8 @@ const {
134
136
 
135
137
  .feat-pill {
136
138
  padding: 0.4rem 0.85rem;
137
- background: rgba(255, 255, 255, 0.05);
138
- border: 1px solid rgba(255, 255, 255, 0.08);
139
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.05);
140
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
139
141
  border-radius: 9999px;
140
142
  font-size: 0.82rem;
141
143
  color: #cbd5e1;
@@ -153,7 +155,7 @@ const {
153
155
  gap: 0.75rem;
154
156
  padding: 0.65rem 1.25rem;
155
157
  background: rgba(0, 0, 0, 0.6);
156
- border: 1px solid rgba(255, 255, 255, 0.15);
158
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.15);
157
159
  border-radius: 12px;
158
160
  color: #fff;
159
161
  text-decoration: none;
@@ -161,8 +163,8 @@ const {
161
163
  }
162
164
 
163
165
  .store-btn:hover {
164
- background: rgba(255, 255, 255, 0.1);
165
- border-color: rgba(255, 255, 255, 0.3);
166
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.1);
167
+ border-color: rgb(var(--ink-rgb, 255 255 255) / 0.3);
166
168
  }
167
169
 
168
170
  .store-btn__text {
@@ -192,7 +194,7 @@ const {
192
194
  width: 250px;
193
195
  height: 400px;
194
196
  background: #020617;
195
- border: 3px solid rgba(255, 255, 255, 0.2);
197
+ border: 3px solid rgb(var(--ink-rgb, 255 255 255) / 0.2);
196
198
  border-radius: 36px;
197
199
  padding: 12px;
198
200
  box-shadow: 0 20px 50px -10px rgba(0, 0, 0, 0.8);
@@ -244,13 +246,13 @@ const {
244
246
 
245
247
  .phone-card-mini {
246
248
  padding: 0.5rem;
247
- background: rgba(255, 255, 255, 0.05);
249
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.05);
248
250
  border-radius: 8px;
249
251
  font-size: 0.72rem;
250
252
  color: #cbd5e1;
251
253
  }
252
254
 
253
- @media (max-width: 960px) {
255
+ @container (max-width: 960px) {
254
256
  .app-card {
255
257
  grid-template-columns: 1fr;
256
258
  }
@@ -27,6 +27,7 @@ const {
27
27
  } = Astro.props;
28
28
  ---
29
29
 
30
+ <div class="cq-cta-glow-banner-cq">
30
31
  <section class={`cta-banner-section ${className}`} aria-labelledby="cta-title">
31
32
  <div class="container">
32
33
  <div class="cta-banner-card">
@@ -75,8 +76,9 @@ const {
75
76
  </div>
76
77
  </div>
77
78
  </section>
78
-
79
+ </div>
79
80
  <style>
81
+ .cq-cta-glow-banner-cq { container-type: inline-size; }
80
82
  .cta-banner-section {
81
83
  padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem);
82
84
  background: var(--c-bg-primary, #030712);
@@ -127,7 +129,7 @@ const {
127
129
  font-weight: 700;
128
130
  letter-spacing: 0.06em;
129
131
  text-transform: uppercase;
130
- background: rgba(184, 134, 11, 0.15);
132
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 15%, transparent);
131
133
  color: #facc15;
132
134
  border: 1px solid rgba(234, 179, 8, 0.3);
133
135
  margin-bottom: var(--sp-4, 1.25rem);
@@ -163,7 +165,7 @@ const {
163
165
  align-items: center;
164
166
  gap: 0.5rem;
165
167
  background: rgba(0, 0, 0, 0.4);
166
- border: 1px solid rgba(255, 255, 255, 0.12);
168
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12);
167
169
  border-radius: 12px;
168
170
  padding: 0.35rem;
169
171
  max-width: 460px;
@@ -211,16 +213,16 @@ const {
211
213
  }
212
214
 
213
215
  .cta-btn--ghost {
214
- background: rgba(255, 255, 255, 0.05);
216
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.05);
215
217
  color: #fff;
216
- border: 1px solid rgba(255, 255, 255, 0.12);
218
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12);
217
219
  height: 48px;
218
220
  box-sizing: border-box;
219
221
  }
220
222
 
221
223
  .cta-btn--ghost:hover {
222
- background: rgba(255, 255, 255, 0.12);
223
- border-color: rgba(255, 255, 255, 0.25);
224
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.12);
225
+ border-color: rgb(var(--ink-rgb, 255 255 255) / 0.25);
224
226
  }
225
227
 
226
228
  .cta-trust-row {
@@ -230,7 +232,7 @@ const {
230
232
  justify-content: center;
231
233
  gap: 1.5rem;
232
234
  padding-top: 1.5rem;
233
- border-top: 1px solid rgba(255, 255, 255, 0.08);
235
+ border-top: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
234
236
  }
235
237
 
236
238
  .trust-item {
@@ -246,7 +248,7 @@ const {
246
248
  color: #eab308;
247
249
  }
248
250
 
249
- @media (max-width: 640px) {
251
+ @container (max-width: 640px) {
250
252
  .cta-form {
251
253
  flex-direction: column;
252
254
  background: transparent;
@@ -256,7 +258,7 @@ const {
256
258
  .cta-input {
257
259
  width: 100%;
258
260
  background: rgba(0, 0, 0, 0.4);
259
- border: 1px solid rgba(255, 255, 255, 0.12);
261
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12);
260
262
  border-radius: 8px;
261
263
  box-sizing: border-box;
262
264
  }
@@ -40,6 +40,7 @@ const {
40
40
  const id = `cns-${Math.random().toString(36).slice(2, 8)}`;
41
41
  ---
42
42
 
43
+ <div class="cq-cta-newsletter-section-cq">
43
44
  <section class={`cns cns--${variant} cns--${size} ${className}`} aria-labelledby={id}>
44
45
  <div class="cns__box">
45
46
  <div class="cns__copy">
@@ -65,7 +66,7 @@ const id = `cns-${Math.random().toString(36).slice(2, 8)}`;
65
66
  </form>
66
67
  </div>
67
68
  </section>
68
-
69
+ </div>
69
70
  <script>
70
71
  document.querySelectorAll<HTMLFormElement>('.cns__form').forEach((form) => {
71
72
  const input = form.querySelector<HTMLInputElement>('.cns__input');
@@ -89,6 +90,7 @@ const id = `cns-${Math.random().toString(36).slice(2, 8)}`;
89
90
  </script>
90
91
 
91
92
  <style>
93
+ .cq-cta-newsletter-section-cq { container-type: inline-size; }
92
94
  .cns {
93
95
  --cns-py: 5rem;
94
96
  padding: var(--cns-py) var(--sp-6, 1.5rem);
@@ -107,12 +109,12 @@ const id = `cns-${Math.random().toString(36).slice(2, 8)}`;
107
109
  border-radius: var(--r-xl, 28px);
108
110
  }
109
111
  .cns--gradient .cns__box {
110
- background: radial-gradient(circle at 100% 0%, rgba(144, 133, 233, 0.22), transparent 55%), radial-gradient(circle at 0% 100%, var(--c-primary-glow, rgba(184, 134, 11, 0.2)), transparent 55%), #0c0c10;
111
- border: 1px solid rgba(255, 255, 255, 0.08);
112
+ background: radial-gradient(circle at 100% 0%, rgba(144, 133, 233, 0.22), transparent 55%), radial-gradient(circle at 0% 100%, var(--c-primary-glow, color-mix(in srgb, var(--c-primary, #b8860b) 20%, transparent)), transparent 55%), #0c0c10;
113
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
112
114
  }
113
- .cns--glass .cns__box { background: rgba(255, 255, 255, 0.035); border: 1px solid var(--c-border, rgba(255, 255, 255, 0.08)); backdrop-filter: blur(16px); }
114
- .cns--bordered .cns__box { border: 1px solid rgba(255, 255, 255, 0.14); }
115
- .cns__icon { display: grid; place-items: center; width: 48px; height: 48px; margin-bottom: 1.25rem; border-radius: 14px; background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.1); color: var(--c-text-1, #fff); }
115
+ .cns--glass .cns__box { background: rgb(var(--ink-rgb, 255 255 255) / 0.035); border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.08)); backdrop-filter: blur(16px); }
116
+ .cns--bordered .cns__box { border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.14); }
117
+ .cns__icon { display: grid; place-items: center; width: 48px; height: 48px; margin-bottom: 1.25rem; border-radius: 14px; background: rgb(var(--ink-rgb, 255 255 255) / 0.06); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1); color: var(--c-text-1, #fff); }
116
118
  .cns__title { margin: 0 0 0.75rem; font-size: clamp(1.6rem, 3.5vw, 2.25rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1.15; color: var(--c-text-1, #fff); }
117
119
  .cns__subtitle { margin: 0 0 1.25rem; font-size: 1rem; line-height: 1.6; color: var(--c-text-2, #a3a3a3); }
118
120
  .cns__perks { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; }
@@ -126,7 +128,7 @@ const id = `cns-${Math.random().toString(36).slice(2, 8)}`;
126
128
  min-height: 50px;
127
129
  padding: 0 1rem;
128
130
  border-radius: var(--r-md, 12px);
129
- border: 1px solid rgba(255, 255, 255, 0.14);
131
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.14);
130
132
  background: rgba(0, 0, 0, 0.35);
131
133
  color: var(--c-text-1, #fff);
132
134
  font: inherit;
@@ -134,7 +136,7 @@ const id = `cns-${Math.random().toString(36).slice(2, 8)}`;
134
136
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
135
137
  }
136
138
  .cns__input::placeholder { color: var(--c-text-3, #737373); }
137
- .cns__input:focus { outline: none; border-color: var(--c-primary-light, #d4a017); box-shadow: 0 0 0 3px var(--c-primary-glow, rgba(184, 134, 11, 0.25)); }
139
+ .cns__input:focus { outline: none; border-color: var(--c-primary-light, #d4a017); box-shadow: 0 0 0 3px var(--c-primary-glow, color-mix(in srgb, var(--c-primary, #b8860b) 25%, transparent)); }
138
140
  .cns__input[aria-invalid='true'] { border-color: var(--chart-neg, #f06a6a); }
139
141
  .cns__btn {
140
142
  min-height: 50px;
@@ -142,7 +144,7 @@ const id = `cns-${Math.random().toString(36).slice(2, 8)}`;
142
144
  border: 0;
143
145
  border-radius: var(--r-md, 12px);
144
146
  background: var(--c-text-1, #fff);
145
- color: #0a0a0a;
147
+ color: var(--c-on-primary, #0a0a0a);
146
148
  font: inherit;
147
149
  font-weight: 650;
148
150
  cursor: pointer;
@@ -154,10 +156,10 @@ const id = `cns-${Math.random().toString(36).slice(2, 8)}`;
154
156
  .cns__msg[data-state='error'] { color: #ff9b9b; }
155
157
  .cns__msg[data-state='ok'] { color: #7ee2b8; }
156
158
  .cns__privacy { margin: 0.25rem 0 0; font-size: 0.8125rem; color: var(--c-text-3, #8a8a8a); }
157
- @media (max-width: 820px) {
159
+ @container (max-width: 820px) {
158
160
  .cns__box { grid-template-columns: 1fr; }
159
161
  }
160
- @media (max-width: 460px) {
162
+ @container (max-width: 460px) {
161
163
  .cns__field { flex-direction: column; }
162
164
  }
163
165
  </style>
@@ -47,6 +47,7 @@ const {
47
47
  const id = `csi-${Math.random().toString(36).slice(2, 8)}`;
48
48
  ---
49
49
 
50
+ <div class="cq-cta-split-image-cq">
50
51
  <section class={`csi csi--${variant} csi--${size} ${className}`} aria-labelledby={id}>
51
52
  <div class="csi__box">
52
53
  <div class="csi__copy">
@@ -70,8 +71,9 @@ const id = `csi-${Math.random().toString(36).slice(2, 8)}`;
70
71
  </div>
71
72
  </div>
72
73
  </section>
73
-
74
+ </div>
74
75
  <style>
76
+ .cq-cta-split-image-cq { container-type: inline-size; }
75
77
  .csi {
76
78
  --csi-py: 5rem;
77
79
  padding: var(--csi-py) var(--sp-6, 1.5rem);
@@ -86,19 +88,19 @@ const id = `csi-${Math.random().toString(36).slice(2, 8)}`;
86
88
  grid-template-columns: 1fr 1fr;
87
89
  border-radius: var(--r-xl, 28px);
88
90
  overflow: hidden;
89
- border: 1px solid var(--c-border, rgba(255, 255, 255, 0.08));
91
+ border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.08));
90
92
  background: var(--c-bg-1, #0a0a0a);
91
93
  }
92
- .csi--outline .csi__box { background: transparent; border-color: rgba(255, 255, 255, 0.15); }
94
+ .csi--outline .csi__box { background: transparent; border-color: rgb(var(--ink-rgb, 255 255 255) / 0.15); }
93
95
  .csi__copy { padding: clamp(2rem, 6vw, 4rem); display: flex; flex-direction: column; justify-content: center; }
94
96
  .csi__title { margin: 0 0 1rem; font-size: clamp(1.75rem, 4vw, 2.75rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1.1; color: var(--c-text-1, #fff); text-wrap: balance; }
95
97
  .csi__text { margin: 0 0 2rem; font-size: 1.0625rem; line-height: 1.6; color: var(--c-text-2, #a3a3a3); max-width: 460px; }
96
98
  .csi__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; }
97
99
  .csi__btn { display: inline-flex; align-items: center; min-height: 48px; padding: 0 1.5rem; border-radius: var(--r-md, 12px); font-weight: 650; text-decoration: none; transition: background 0.2s ease, border-color 0.2s ease; }
98
- .csi__btn--primary { background: var(--c-primary-light, #d4a017); color: #0a0a0a; }
99
- .csi__btn--primary:hover { background: var(--c-accent, #fef3c7); color: #0a0a0a; }
100
- .csi__btn--ghost { border: 1px solid rgba(255, 255, 255, 0.15); color: var(--c-text-1, #fff); }
101
- .csi__btn--ghost:hover { border-color: rgba(255, 255, 255, 0.32); color: var(--c-text-1, #fff); }
100
+ .csi__btn--primary { background: var(--c-primary-light, #d4a017); color: var(--c-on-primary, #0a0a0a); }
101
+ .csi__btn--primary:hover { background: var(--c-accent, #fef3c7); color: var(--c-on-primary, #0a0a0a); }
102
+ .csi__btn--ghost { border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.15); color: var(--c-text-1, #fff); }
103
+ .csi__btn--ghost:hover { border-color: rgb(var(--ink-rgb, 255 255 255) / 0.32); color: var(--c-text-1, #fff); }
102
104
  .csi__btn:focus-visible { outline: 2px solid var(--c-primary-light, #d4a017); outline-offset: 3px; }
103
105
  .csi__visual { position: relative; min-height: 320px; }
104
106
  .csi__visual img { width: 100%; height: 100%; object-fit: cover; display: block; }
@@ -114,13 +116,13 @@ const id = `csi-${Math.random().toString(36).slice(2, 8)}`;
114
116
  }
115
117
  .csi--mesh .csi__mesh {
116
118
  background:
117
- radial-gradient(circle at 20% 20%, rgba(212, 160, 23, 0.55), transparent 45%),
119
+ radial-gradient(circle at 20% 20%, color-mix(in srgb, var(--c-primary-light, #d4a017) 55%, transparent), transparent 45%),
118
120
  radial-gradient(circle at 80% 30%, rgba(144, 133, 233, 0.55), transparent 45%),
119
121
  radial-gradient(circle at 50% 90%, rgba(57, 135, 229, 0.5), transparent 50%),
120
122
  #121218;
121
123
  }
122
124
  .csi--solid .csi__mesh { background: linear-gradient(135deg, #1a1408, #0c0c10); }
123
- .csi--outline .csi__mesh { background: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.03) 0 12px, transparent 12px 24px); }
125
+ .csi--outline .csi__mesh { background: repeating-linear-gradient(45deg, rgb(var(--ink-rgb, 255 255 255) / 0.03) 0 12px, transparent 12px 24px); }
124
126
  .csi__chip {
125
127
  display: inline-flex;
126
128
  align-items: baseline;
@@ -128,7 +130,7 @@ const id = `csi-${Math.random().toString(36).slice(2, 8)}`;
128
130
  padding: 0.75rem 1.1rem;
129
131
  border-radius: var(--r-md, 14px);
130
132
  background: rgba(10, 10, 12, 0.6);
131
- border: 1px solid rgba(255, 255, 255, 0.14);
133
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.14);
132
134
  backdrop-filter: blur(12px);
133
135
  color: var(--c-text-2, #c4c4c4);
134
136
  font-size: 0.875rem;
@@ -139,7 +141,7 @@ const id = `csi-${Math.random().toString(36).slice(2, 8)}`;
139
141
  .csi__chip:nth-child(3) { transform: translateX(-2rem); }
140
142
  .csi__chip strong { font-size: 1.25rem; color: var(--c-text-1, #fff); font-variant-numeric: tabular-nums; }
141
143
  @keyframes csi-float { 50% { translate: 0 -8px; } }
142
- @media (max-width: 820px) {
144
+ @container (max-width: 820px) {
143
145
  .csi__box { grid-template-columns: 1fr; }
144
146
  .csi__visual { min-height: 240px; }
145
147
  }
@@ -8,6 +8,7 @@ interface Props {
8
8
  const { title = "Data Display", subtitle = "Stats, tables, and visualization elements." } = Astro.props;
9
9
  ---
10
10
 
11
+ <div class="cq-data-showcase-cq">
11
12
  <section class="data-showcase">
12
13
  <div class="container">
13
14
  <div class="showcase-header">
@@ -78,8 +79,9 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
78
79
  </div>
79
80
  </div>
80
81
  </section>
81
-
82
+ </div>
82
83
  <style>
84
+ .cq-data-showcase-cq { container-type: inline-size; }
83
85
  .data-showcase {
84
86
  padding: var(--sp-16) 0;
85
87
  position: relative;
@@ -96,8 +98,8 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
96
98
  text-transform: uppercase;
97
99
  letter-spacing: 0.1em;
98
100
  color: var(--c-primary-light);
99
- background: rgba(184,134,11,0.1);
100
- border: 1px solid rgba(184,134,11,0.25);
101
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 10%, transparent);
102
+ border: 1px solid color-mix(in srgb, var(--c-primary, #b8860b) 25%, transparent);
101
103
  border-radius: var(--r-full);
102
104
  margin-bottom: var(--sp-4);
103
105
  }
@@ -119,7 +121,7 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
119
121
  padding: var(--sp-12);
120
122
  background: rgba(10, 10, 10, 0.6);
121
123
  backdrop-filter: blur(20px);
122
- border: 1px solid rgba(255,255,255,0.08);
124
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
123
125
  border-radius: var(--r-xl);
124
126
  margin-bottom: var(--sp-6);
125
127
  box-shadow: 0 20px 60px rgba(0,0,0,0.4);
@@ -146,16 +148,16 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
146
148
  }
147
149
  .stat-card {
148
150
  padding: var(--sp-5);
149
- background: rgba(255,255,255,0.04);
151
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.04);
150
152
  backdrop-filter: blur(12px);
151
- border: 1px solid rgba(255,255,255,0.08);
153
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
152
154
  border-radius: var(--r-lg);
153
155
  text-align: center;
154
156
  transition: all 0.25s ease;
155
157
  }
156
158
  .stat-card:hover {
157
- background: rgba(255,255,255,0.07);
158
- border-color: rgba(184,134,11,0.25);
159
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.07);
160
+ border-color: color-mix(in srgb, var(--c-primary, #b8860b) 25%, transparent);
159
161
  transform: translateY(-2px);
160
162
  }
161
163
  .stat-value {
@@ -176,9 +178,9 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
176
178
 
177
179
  /* Mini Table */
178
180
  .mini-table {
179
- background: rgba(255,255,255,0.04);
181
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.04);
180
182
  backdrop-filter: blur(12px);
181
- border: 1px solid rgba(255,255,255,0.08);
183
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
182
184
  border-radius: var(--r-lg);
183
185
  overflow: hidden;
184
186
  }
@@ -186,8 +188,8 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
186
188
  display: grid;
187
189
  grid-template-columns: 1.5fr 0.8fr 1fr;
188
190
  padding: var(--sp-3) var(--sp-5);
189
- background: rgba(255,255,255,0.06);
190
- border-bottom: 1px solid rgba(255,255,255,0.08);
191
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.06);
192
+ border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
191
193
  font-size: 0.7rem;
192
194
  font-weight: 600;
193
195
  text-transform: uppercase;
@@ -198,7 +200,7 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
198
200
  display: grid;
199
201
  grid-template-columns: 1.5fr 0.8fr 1fr;
200
202
  padding: var(--sp-3) var(--sp-5);
201
- border-bottom: 1px solid rgba(255,255,255,0.04);
203
+ border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.04);
202
204
  font-size: 0.85rem;
203
205
  align-items: center;
204
206
  transition: background 0.2s ease;
@@ -207,7 +209,7 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
207
209
  border-bottom: none;
208
210
  }
209
211
  .table-row:hover {
210
- background: rgba(255,255,255,0.03);
212
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.03);
211
213
  }
212
214
  .col--name {
213
215
  color: var(--c-text-1);
@@ -250,9 +252,9 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
250
252
  /* Progress Bar */
251
253
  .progress-section {
252
254
  padding: var(--sp-5);
253
- background: rgba(255,255,255,0.04);
255
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.04);
254
256
  backdrop-filter: blur(12px);
255
- border: 1px solid rgba(255,255,255,0.08);
257
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
256
258
  border-radius: var(--r-lg);
257
259
  }
258
260
  .progress-labels {
@@ -273,16 +275,16 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
273
275
  }
274
276
  .progress-track {
275
277
  height: 8px;
276
- background: rgba(255,255,255,0.08);
278
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.08);
277
279
  border-radius: var(--r-full);
278
280
  overflow: hidden;
279
281
  }
280
282
  .progress-fill {
281
283
  width: 73%;
282
284
  height: 100%;
283
- background: linear-gradient(90deg, var(--c-primary-light), var(--c-primary), rgba(184,134,11,0.4));
285
+ background: linear-gradient(90deg, var(--c-primary-light), var(--c-primary), color-mix(in srgb, var(--c-primary, #b8860b) 40%, transparent));
284
286
  border-radius: var(--r-full);
285
- box-shadow: 0 0 12px rgba(184,134,11,0.3);
287
+ box-shadow: 0 0 12px color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
286
288
  animation: progress-pulse 2.5s ease-in-out infinite;
287
289
  }
288
290
  @keyframes progress-pulse {
@@ -293,7 +295,7 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
293
295
  .usage-code {
294
296
  text-align: center;
295
297
  padding: var(--sp-4);
296
- background: rgba(255,255,255,0.02);
298
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.02);
297
299
  border-radius: var(--r-md);
298
300
  }
299
301
  .usage-code code {
@@ -302,7 +304,7 @@ const { title = "Data Display", subtitle = "Stats, tables, and visualization ele
302
304
  color: var(--c-primary-light);
303
305
  }
304
306
 
305
- @media (max-width: 640px) {
307
+ @container (max-width: 640px) {
306
308
  .stats-row {
307
309
  grid-template-columns: 1fr;
308
310
  gap: var(--sp-3);