astro-component-kit 0.4.0 → 0.5.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 (208) hide show
  1. package/README.md +139 -27
  2. package/bin/cli.js +67 -0
  3. package/bin/installer.js +179 -0
  4. package/package.json +35 -5
  5. package/src/components/index.ts +2 -0
  6. package/src/components/lib/Galaxy3D.astro +249 -137
  7. package/src/components/lib/app/AppSidebar.astro +249 -0
  8. package/src/components/lib/app/AppTopbar.astro +284 -0
  9. package/src/components/lib/app/ArrivalsBoard.astro +176 -0
  10. package/src/components/lib/app/AuthCard.astro +213 -0
  11. package/src/components/lib/app/DataTable.astro +346 -0
  12. package/src/components/lib/app/GuestProfileCard.astro +133 -0
  13. package/src/components/lib/app/HousekeepingBoard.astro +189 -0
  14. package/src/components/lib/app/PageHeader.astro +157 -0
  15. package/src/components/lib/app/PlanUsageCard.astro +112 -0
  16. package/src/components/lib/app/RoomRack.astro +207 -0
  17. package/src/components/lib/app/SettingsSection.astro +96 -0
  18. package/src/components/lib/app/SwitchRow.astro +71 -0
  19. package/src/components/lib/app/TeamMembers.astro +190 -0
  20. package/src/components/lib/app/app-icons.ts +52 -0
  21. package/src/components/lib/app/index.ts +19 -0
  22. package/src/components/lib/charts/AreaChart.astro +4 -4
  23. package/src/components/lib/charts/BarChart.astro +3 -3
  24. package/src/components/lib/charts/ChartFrame.astro +10 -10
  25. package/src/components/lib/charts/DonutChart.astro +2 -2
  26. package/src/components/lib/charts/DumbbellChart.astro +1 -1
  27. package/src/components/lib/charts/ForecastLineChart.astro +1 -1
  28. package/src/components/lib/charts/GaugeChart.astro +1 -1
  29. package/src/components/lib/charts/HeatmapChart.astro +1 -1
  30. package/src/components/lib/charts/HorizontalBarChart.astro +2 -2
  31. package/src/components/lib/charts/KpiStatTile.astro +4 -4
  32. package/src/components/lib/charts/LinearProgressGauge.astro +4 -4
  33. package/src/components/lib/charts/MetricDeltaTable.astro +3 -3
  34. package/src/components/lib/charts/RadarMetricChart.astro +4 -4
  35. package/src/components/lib/charts/RadialBarChart.astro +1 -1
  36. package/src/components/lib/charts/RetentionCohortTable.astro +2 -2
  37. package/src/components/lib/charts/TreemapChart.astro +1 -1
  38. package/src/components/lib/ecommerce/CartDrawer.astro +483 -0
  39. package/src/components/lib/ecommerce/CartPageList.astro +290 -0
  40. package/src/components/lib/ecommerce/CartToast.astro +276 -0
  41. package/src/components/lib/ecommerce/CategoryTiles.astro +143 -0
  42. package/src/components/lib/ecommerce/CheckoutForm.astro +423 -0
  43. package/src/components/lib/ecommerce/CountdownBanner.astro +230 -0
  44. package/src/components/lib/ecommerce/FilterBar.astro +278 -0
  45. package/src/components/lib/ecommerce/FilterSidebar.astro +405 -0
  46. package/src/components/lib/ecommerce/LiveActivityToast.astro +213 -0
  47. package/src/components/lib/ecommerce/OrderSummary.astro +295 -0
  48. package/src/components/lib/ecommerce/ProductBuyBox.astro +247 -0
  49. package/src/components/lib/ecommerce/ProductCardMinimal.astro +229 -0
  50. package/src/components/lib/ecommerce/ProductGallery.astro +145 -0
  51. package/src/components/lib/ecommerce/ProductGrid.astro +118 -0
  52. package/src/components/lib/ecommerce/ProductMedia.astro +113 -0
  53. package/src/components/lib/ecommerce/ProductRating.astro +78 -0
  54. package/src/components/lib/ecommerce/ProductToolbar.astro +93 -0
  55. package/src/components/lib/ecommerce/PromoBar.astro +145 -0
  56. package/src/components/lib/ecommerce/StockIndicator.astro +127 -0
  57. package/src/components/lib/ecommerce/StoreHeader.astro +446 -0
  58. package/src/components/lib/ecommerce/StoreHero.astro +260 -0
  59. package/src/components/lib/ecommerce/StoreProductCard.astro +307 -0
  60. package/src/components/lib/ecommerce/TrustBadges.astro +101 -0
  61. package/src/components/lib/ecommerce/VariantPicker.astro +145 -0
  62. package/src/components/lib/ecommerce/cart-store.ts +151 -0
  63. package/src/components/lib/ecommerce/catalog-filter.ts +62 -0
  64. package/src/components/lib/ecommerce/index.ts +34 -0
  65. package/src/components/lib/ecommerce/product-icons.ts +28 -0
  66. package/src/components/lib/ecommerce/types.ts +70 -0
  67. package/src/components/lib/forms/AnimatedInput.astro +4 -2
  68. package/src/components/lib/forms/CustomRadioGroup.astro +3 -1
  69. package/src/components/lib/index.ts +2 -0
  70. package/src/components/lib/layout/BentoGrid3.astro +6 -4
  71. package/src/components/lib/layout/CenterFixedBox.astro +2 -2
  72. package/src/components/lib/layout/CenteredContainer.astro +4 -2
  73. package/src/components/lib/layout/ClusterHorizontal.astro +2 -2
  74. package/src/components/lib/layout/FeatureHero.astro +4 -2
  75. package/src/components/lib/layout/FooterCenteredMinimal.astro +4 -2
  76. package/src/components/lib/layout/FullBleedSection.astro +2 -2
  77. package/src/components/lib/layout/GalleryGrid4.astro +2 -2
  78. package/src/components/lib/layout/HolyGrailGrid.astro +11 -9
  79. package/src/components/lib/layout/LandingSectionSplit.astro +5 -3
  80. package/src/components/lib/layout/MasonryGrid.astro +2 -2
  81. package/src/components/lib/layout/MinimalFooterGrid.astro +1 -1
  82. package/src/components/lib/layout/ScrollSnapSection.astro +1 -1
  83. package/src/components/lib/layout/SidebarLayoutWrapper.astro +4 -2
  84. package/src/components/lib/layout/SplitScreenLayout.astro +3 -3
  85. package/src/components/lib/layout/StepLayoutVertical.astro +1 -1
  86. package/src/components/lib/layout/StickySidebarWrapper.astro +4 -2
  87. package/src/components/lib/sections/AgencyContactBrief.astro +194 -0
  88. package/src/components/lib/sections/AgencyFooterCta.astro +94 -0
  89. package/src/components/lib/sections/AgencyHeader.astro +161 -0
  90. package/src/components/lib/sections/AgencyHeroKinetic.astro +172 -0
  91. package/src/components/lib/sections/AgencyServicesList.astro +113 -0
  92. package/src/components/lib/sections/AgencyTeamGrid.astro +111 -0
  93. package/src/components/lib/sections/AgencyWorkGrid.astro +147 -0
  94. package/src/components/lib/sections/BlogGridSection.astro +9 -7
  95. package/src/components/lib/sections/ButtonsShowcase.astro +20 -18
  96. package/src/components/lib/sections/CardsShowcase.astro +28 -26
  97. package/src/components/lib/sections/CareersOpenings.astro +10 -8
  98. package/src/components/lib/sections/ChangelogSection.astro +20 -7
  99. package/src/components/lib/sections/ContactGlassForm.astro +10 -8
  100. package/src/components/lib/sections/ContactSplitMap.astro +11 -9
  101. package/src/components/lib/sections/CtaAppDownload.astro +13 -11
  102. package/src/components/lib/sections/CtaGlowBanner.astro +12 -10
  103. package/src/components/lib/sections/CtaNewsletterSection.astro +13 -11
  104. package/src/components/lib/sections/CtaSplitImage.astro +13 -11
  105. package/src/components/lib/sections/DataShowcase.astro +23 -21
  106. package/src/components/lib/sections/FaqAccordionSection.astro +8 -8
  107. package/src/components/lib/sections/FaqTwoColumn.astro +9 -7
  108. package/src/components/lib/sections/FeatureAlternatingRows.astro +10 -8
  109. package/src/components/lib/sections/FeatureBentoGrid.astro +13 -11
  110. package/src/components/lib/sections/FeatureIconGrid.astro +6 -6
  111. package/src/components/lib/sections/FeatureTabsShowcase.astro +13 -11
  112. package/src/components/lib/sections/FeatureTimelineFlow.astro +8 -6
  113. package/src/components/lib/sections/FeedbackShowcase.astro +15 -13
  114. package/src/components/lib/sections/FooterMegaSection.astro +13 -11
  115. package/src/components/lib/sections/FormsShowcase.astro +22 -20
  116. package/src/components/lib/sections/HeroDashboardPreview.astro +11 -9
  117. package/src/components/lib/sections/HeroGlass.astro +22 -20
  118. package/src/components/lib/sections/HeroGradient.astro +15 -13
  119. package/src/components/lib/sections/HeroMinimalCentered.astro +10 -10
  120. package/src/components/lib/sections/HeroShowcaseSplit.astro +18 -16
  121. package/src/components/lib/sections/HeroSplit.astro +13 -11
  122. package/src/components/lib/sections/HeroTerminal.astro +14 -12
  123. package/src/components/lib/sections/HeroWaitlist.astro +10 -8
  124. package/src/components/lib/sections/HowItWorksSteps.astro +12 -10
  125. package/src/components/lib/sections/IntegrationsGrid.astro +7 -7
  126. package/src/components/lib/sections/LayoutShowcase.astro +21 -19
  127. package/src/components/lib/sections/LogoCloudSection.astro +4 -4
  128. package/src/components/lib/sections/LogoWallGrid.astro +6 -4
  129. package/src/components/lib/sections/NavigationShowcase.astro +15 -13
  130. package/src/components/lib/sections/OverlaysShowcase.astro +21 -19
  131. package/src/components/lib/sections/PricingComparisonMatrix.astro +15 -13
  132. package/src/components/lib/sections/PricingSinglePlan.astro +13 -11
  133. package/src/components/lib/sections/PricingTierCards.astro +11 -9
  134. package/src/components/lib/sections/PricingToggleCards.astro +13 -13
  135. package/src/components/lib/sections/ShopCategoryHero.astro +103 -0
  136. package/src/components/lib/sections/ShopCollectionMosaic.astro +131 -0
  137. package/src/components/lib/sections/ShopFooterWordmark.astro +100 -0
  138. package/src/components/lib/sections/ShopHeaderEditorial.astro +396 -0
  139. package/src/components/lib/sections/ShopHeroEditorial.astro +151 -0
  140. package/src/components/lib/sections/ShopLookbook.astro +250 -0
  141. package/src/components/lib/sections/ShopNewsletterEditorial.astro +128 -0
  142. package/src/components/lib/sections/ShopProductRail.astro +150 -0
  143. package/src/components/lib/sections/ShopReviewsEditorial.astro +133 -0
  144. package/src/components/lib/sections/ShopValuesMarquee.astro +91 -0
  145. package/src/components/lib/sections/StatsCounterBand.astro +9 -7
  146. package/src/components/lib/sections/StatsDashboardSection.astro +4 -2
  147. package/src/components/lib/sections/StatsMetricShowcase.astro +9 -7
  148. package/src/components/lib/sections/TeamGridSection.astro +12 -10
  149. package/src/components/lib/sections/TestimonialCarousel.astro +10 -8
  150. package/src/components/lib/sections/TestimonialFeatured.astro +7 -5
  151. package/src/components/lib/sections/TestimonialGridSection.astro +7 -7
  152. package/src/components/lib/sections/TestimonialWallGlass.astro +11 -9
  153. package/src/components/lib/sections/TypographyShowcase.astro +10 -8
  154. package/src/components/lib/sections/index.ts +10 -0
  155. package/src/components/lib/templates/ecommerce/StoreCategoryPage.astro +160 -0
  156. package/src/components/lib/templates/ecommerce/StoreCheckoutPage.astro +98 -0
  157. package/src/components/lib/templates/ecommerce/StoreHomePage.astro +191 -0
  158. package/src/components/lib/templates/ecommerce/StoreLayout.astro +169 -0
  159. package/src/components/lib/templates/ecommerce/StoreProductPage.astro +165 -0
  160. package/src/components/lib/templates/ecommerce/data.ts +187 -0
  161. package/src/components/lib/templates/ecommerce/index.ts +14 -0
  162. package/src/components/lib/templates/ecommerce-editorial/EditorialBagPage.astro +52 -0
  163. package/src/components/lib/templates/ecommerce-editorial/EditorialCheckoutPage.astro +123 -0
  164. package/src/components/lib/templates/ecommerce-editorial/EditorialHomePage.astro +102 -0
  165. package/src/components/lib/templates/ecommerce-editorial/EditorialLayout.astro +216 -0
  166. package/src/components/lib/templates/ecommerce-editorial/EditorialProductPage.astro +205 -0
  167. package/src/components/lib/templates/ecommerce-editorial/EditorialShopPage.astro +112 -0
  168. package/src/components/lib/templates/ecommerce-editorial/data.ts +125 -0
  169. package/src/components/lib/templates/ecommerce-editorial/index.ts +16 -0
  170. package/src/components/lib/templates/saas-hotel/AppLayout.astro +83 -0
  171. package/src/components/lib/templates/saas-hotel/DashboardPage.astro +66 -0
  172. package/src/components/lib/templates/saas-hotel/GuestsPage.astro +65 -0
  173. package/src/components/lib/templates/saas-hotel/LandingPage.astro +213 -0
  174. package/src/components/lib/templates/saas-hotel/ReportsPage.astro +63 -0
  175. package/src/components/lib/templates/saas-hotel/ReservationsPage.astro +49 -0
  176. package/src/components/lib/templates/saas-hotel/RoomsPage.astro +48 -0
  177. package/src/components/lib/templates/saas-hotel/SettingsPage.astro +115 -0
  178. package/src/components/lib/templates/saas-hotel/SignInPage.astro +50 -0
  179. package/src/components/lib/templates/saas-hotel/data.ts +229 -0
  180. package/src/components/lib/templates/saas-hotel/index.ts +19 -0
  181. package/src/components/lib/templates/saas-hotel/lobby-theme.css +90 -0
  182. package/src/data/registry/app.ts +93 -0
  183. package/src/data/registry/buttons.ts +3279 -0
  184. package/src/data/registry/cards.ts +1753 -0
  185. package/src/data/registry/charts-svg.ts +557 -0
  186. package/src/data/registry/charts.ts +500 -0
  187. package/src/data/registry/data.ts +986 -0
  188. package/src/data/registry/ecommerce.ts +269 -0
  189. package/src/data/registry/feedback.ts +1824 -0
  190. package/src/data/registry/forms.ts +2513 -0
  191. package/src/data/registry/index.ts +64 -0
  192. package/src/data/registry/layout.ts +206 -0
  193. package/src/data/registry/navigation.ts +936 -0
  194. package/src/data/registry/overlays.ts +1133 -0
  195. package/src/data/registry/sections-extra.ts +397 -0
  196. package/src/data/registry/sections.ts +361 -0
  197. package/src/data/registry/sources.ts +41 -0
  198. package/src/data/registry/templates.ts +414 -0
  199. package/src/data/registry/types.ts +30 -0
  200. package/src/data/registry/typography.ts +777 -0
  201. package/src/mcp/http-server.ts +324 -0
  202. package/src/mcp/index.ts +67 -0
  203. package/src/mcp/installer.ts +178 -0
  204. package/src/mcp/registry-adapter.ts +278 -0
  205. package/src/mcp/stdio-server.ts +11 -0
  206. package/src/mcp/tools.ts +247 -0
  207. package/src/mcp/types.ts +53 -0
  208. package/src/styles/global.css +95 -0
@@ -8,6 +8,7 @@ interface Props {
8
8
  const { title = "Forms", subtitle = "Form elements with clean animations and validation states." } = Astro.props;
9
9
  ---
10
10
 
11
+ <div class="cq-forms-showcase-cq">
11
12
  <section class="forms-showcase">
12
13
  <div class="container">
13
14
  <div class="showcase-header">
@@ -79,8 +80,9 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
79
80
  </div>
80
81
  </div>
81
82
  </section>
82
-
83
+ </div>
83
84
  <style>
85
+ .cq-forms-showcase-cq { container-type: inline-size; }
84
86
  .forms-showcase {
85
87
  padding: var(--sp-16) 0;
86
88
  position: relative;
@@ -97,8 +99,8 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
97
99
  text-transform: uppercase;
98
100
  letter-spacing: 0.1em;
99
101
  color: var(--c-primary-light);
100
- background: rgba(184,134,11,0.1);
101
- border: 1px solid rgba(184,134,11,0.25);
102
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 10%, transparent);
103
+ border: 1px solid color-mix(in srgb, var(--c-primary, #b8860b) 25%, transparent);
102
104
  border-radius: var(--r-full);
103
105
  margin-bottom: var(--sp-4);
104
106
  }
@@ -120,7 +122,7 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
120
122
  padding: var(--sp-12);
121
123
  background: rgba(10, 10, 10, 0.6);
122
124
  backdrop-filter: blur(20px);
123
- border: 1px solid rgba(255,255,255,0.08);
125
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
124
126
  border-radius: var(--r-xl);
125
127
  margin-bottom: var(--sp-6);
126
128
  box-shadow: 0 20px 60px rgba(0,0,0,0.4);
@@ -149,8 +151,8 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
149
151
  font-size: 0.9rem;
150
152
  font-family: var(--font-sans);
151
153
  color: var(--c-text-1);
152
- background: rgba(255,255,255,0.04);
153
- border: 1px solid rgba(255,255,255,0.1);
154
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.04);
155
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
154
156
  border-radius: var(--r-md);
155
157
  outline: none;
156
158
  transition: all 0.3s ease;
@@ -202,9 +204,9 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
202
204
  }
203
205
  .textarea-mockup {
204
206
  padding: 0.85rem 1rem;
205
- background: rgba(255,255,255,0.04);
207
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.04);
206
208
  backdrop-filter: blur(12px);
207
- border: 1px solid rgba(255,255,255,0.1);
209
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
208
210
  border-radius: var(--r-md);
209
211
  display: flex;
210
212
  flex-direction: column;
@@ -213,7 +215,7 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
213
215
  }
214
216
  .textarea-line {
215
217
  height: 8px;
216
- background: rgba(255,255,255,0.12);
218
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.12);
217
219
  border-radius: var(--r-sm);
218
220
  width: 100%;
219
221
  }
@@ -241,12 +243,12 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
241
243
  display: flex;
242
244
  align-items: center;
243
245
  justify-content: center;
244
- box-shadow: 0 2px 8px rgba(184,134,11,0.3);
246
+ box-shadow: 0 2px 8px color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
245
247
  }
246
248
  .checkbox-check {
247
249
  width: 14px;
248
250
  height: 14px;
249
- color: #0a0a0a;
251
+ color: var(--c-on-primary, #0a0a0a);
250
252
  }
251
253
  .checkbox-label {
252
254
  font-size: 0.85rem;
@@ -261,8 +263,8 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
261
263
  .toggle-track {
262
264
  width: 44px;
263
265
  height: 24px;
264
- background: rgba(255,255,255,0.1);
265
- border: 1px solid rgba(255,255,255,0.15);
266
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.1);
267
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.15);
266
268
  border-radius: var(--r-full);
267
269
  position: relative;
268
270
  }
@@ -274,7 +276,7 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
274
276
  height: 18px;
275
277
  background: linear-gradient(135deg, var(--c-primary-light), var(--c-primary));
276
278
  border-radius: 50%;
277
- box-shadow: 0 2px 6px rgba(184,134,11,0.4);
279
+ box-shadow: 0 2px 6px color-mix(in srgb, var(--c-primary, #b8860b) 40%, transparent);
278
280
  transition: all 0.25s ease;
279
281
  }
280
282
  .toggle-label {
@@ -295,9 +297,9 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
295
297
  }
296
298
  .select-display {
297
299
  padding: 0.85rem 1rem;
298
- background: rgba(255,255,255,0.04);
300
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.04);
299
301
  backdrop-filter: blur(12px);
300
- border: 1px solid rgba(255,255,255,0.1);
302
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
301
303
  border-radius: var(--r-md);
302
304
  display: flex;
303
305
  align-items: center;
@@ -306,8 +308,8 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
306
308
  transition: all 0.25s ease;
307
309
  }
308
310
  .select-display:hover {
309
- border-color: rgba(184,134,11,0.3);
310
- background: rgba(255,255,255,0.06);
311
+ border-color: color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
312
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.06);
311
313
  }
312
314
  .select-value {
313
315
  font-size: 0.9rem;
@@ -323,7 +325,7 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
323
325
  .usage-code {
324
326
  text-align: center;
325
327
  padding: var(--sp-4);
326
- background: rgba(255,255,255,0.02);
328
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.02);
327
329
  border-radius: var(--r-md);
328
330
  }
329
331
  .usage-code code {
@@ -332,7 +334,7 @@ const { title = "Forms", subtitle = "Form elements with clean animations and val
332
334
  color: var(--c-primary-light);
333
335
  }
334
336
 
335
- @media (max-width: 640px) {
337
+ @container (max-width: 640px) {
336
338
  .form-grid {
337
339
  grid-template-columns: 1fr;
338
340
  gap: var(--sp-4);
@@ -40,6 +40,7 @@ const {
40
40
  const id = `hdp-${Math.random().toString(36).slice(2, 8)}`;
41
41
  ---
42
42
 
43
+ <div class="cq-hero-dashboard-preview-cq">
43
44
  <section class={`hdp hdp--${variant} hdp--${size} ${className}`} aria-labelledby={id}>
44
45
  <div class="hdp__glow" aria-hidden="true"></div>
45
46
  <div class="hdp__copy">
@@ -72,8 +73,9 @@ const id = `hdp-${Math.random().toString(36).slice(2, 8)}`;
72
73
  </div>
73
74
  </div>
74
75
  </section>
75
-
76
+ </div>
76
77
  <style>
78
+ .cq-hero-dashboard-preview-cq { container-type: inline-size; }
77
79
  .hdp {
78
80
  --hdp-py: 5.5rem;
79
81
  position: relative;
@@ -131,15 +133,15 @@ const id = `hdp-${Math.random().toString(36).slice(2, 8)}`;
131
133
  .hdp__btn:focus-visible { outline: 2px solid var(--c-primary-light, #d4a017); outline-offset: 3px; }
132
134
  .hdp__btn--primary { background: var(--chart-1, #3987e5); color: #fff; }
133
135
  .hdp__btn--primary:hover { background: #5598e7; color: #fff; }
134
- .hdp__btn--ghost { color: var(--c-text-1, #fff); border: 1px solid rgba(255, 255, 255, 0.14); }
135
- .hdp__btn--ghost:hover { border-color: rgba(255, 255, 255, 0.3); color: var(--c-text-1, #fff); }
136
+ .hdp__btn--ghost { color: var(--c-text-1, #fff); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.14); }
137
+ .hdp__btn--ghost:hover { border-color: rgb(var(--ink-rgb, 255 255 255) / 0.3); color: var(--c-text-1, #fff); }
136
138
 
137
139
  .hdp__mock {
138
140
  position: relative;
139
141
  max-width: 1080px;
140
142
  margin: 0 auto;
141
143
  border-radius: var(--r-xl, 24px) var(--r-xl, 24px) 0 0;
142
- border: 1px solid rgba(255, 255, 255, 0.1);
144
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
143
145
  border-bottom: 0;
144
146
  background: #0a0a0c;
145
147
  overflow: hidden;
@@ -147,7 +149,7 @@ const id = `hdp-${Math.random().toString(36).slice(2, 8)}`;
147
149
  }
148
150
  .hdp--floating .hdp__mock {
149
151
  border-radius: var(--r-xl, 24px);
150
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
152
+ border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
151
153
  margin-bottom: var(--hdp-py);
152
154
  mask-image: none;
153
155
  transform: perspective(1600px) rotateX(8deg);
@@ -159,20 +161,20 @@ const id = `hdp-${Math.random().toString(36).slice(2, 8)}`;
159
161
  align-items: center;
160
162
  gap: 0.45rem;
161
163
  padding: 0.8rem 1rem;
162
- border-bottom: 1px solid rgba(255, 255, 255, 0.06);
164
+ border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
163
165
  }
164
- .hdp__chrome span { width: 10px; height: 10px; border-radius: 50%; background: rgba(255, 255, 255, 0.12); }
166
+ .hdp__chrome span { width: 10px; height: 10px; border-radius: 50%; background: rgb(var(--ink-rgb, 255 255 255) / 0.12); }
165
167
  .hdp__chrome p {
166
168
  margin: 0 auto;
167
169
  padding: 0.25rem 1rem;
168
170
  border-radius: 6px;
169
- background: rgba(255, 255, 255, 0.04);
171
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.04);
170
172
  font-size: 0.75rem;
171
173
  color: var(--c-text-3, #737373);
172
174
  }
173
175
  .hdp__screen { display: grid; gap: 1rem; padding: 1.25rem; }
174
176
  .hdp__kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
175
- @media (max-width: 760px) {
177
+ @container (max-width: 760px) {
176
178
  .hdp__kpis { grid-template-columns: 1fr; }
177
179
  .hdp__kpis > :global(*:nth-child(n + 2)) { display: none; }
178
180
  .hdp--floating .hdp__mock { transform: none; }
@@ -11,6 +11,7 @@ const {
11
11
  } = Astro.props;
12
12
  ---
13
13
 
14
+ <div class="cq-hero-glass-cq">
14
15
  <section class="hero-glass">
15
16
  <div class="hero-glass__bg" aria-hidden="true">
16
17
  <div class="hero-glass__orb hero-glass__orb--1"></div>
@@ -44,8 +45,9 @@ const {
44
45
  </div>
45
46
  </div>
46
47
  </section>
47
-
48
+ </div>
48
49
  <style>
50
+ .cq-hero-glass-cq { container-type: inline-size; }
49
51
  .hero-glass {
50
52
  position: relative;
51
53
  min-height: 90vh;
@@ -58,9 +60,9 @@ const {
58
60
  .hero-glass__bg {
59
61
  position: absolute;
60
62
  inset: 0;
61
- background: radial-gradient(ellipse at 20% 50%, rgba(184,134,11,0.12) 0%, transparent 50%),
62
- radial-gradient(ellipse at 80% 20%, rgba(184,134,11,0.08) 0%, transparent 50%),
63
- radial-gradient(ellipse at 50% 80%, rgba(184,134,11,0.06) 0%, transparent 50%);
63
+ background: radial-gradient(ellipse at 20% 50%, color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent) 0%, transparent 50%),
64
+ radial-gradient(ellipse at 80% 20%, color-mix(in srgb, var(--c-primary, #b8860b) 8%, transparent) 0%, transparent 50%),
65
+ radial-gradient(ellipse at 50% 80%, color-mix(in srgb, var(--c-primary, #b8860b) 6%, transparent) 0%, transparent 50%);
64
66
  }
65
67
  .hero-glass__orb {
66
68
  position: absolute;
@@ -71,18 +73,18 @@ const {
71
73
  .hero-glass__orb--1 {
72
74
  width: 400px; height: 400px;
73
75
  top: 10%; left: 15%;
74
- background: rgba(184,134,11,0.15);
76
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 15%, transparent);
75
77
  }
76
78
  .hero-glass__orb--2 {
77
79
  width: 300px; height: 300px;
78
80
  top: 40%; right: 10%;
79
- background: rgba(184,134,11,0.1);
81
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 10%, transparent);
80
82
  animation-delay: 2s;
81
83
  }
82
84
  .hero-glass__orb--3 {
83
85
  width: 250px; height: 250px;
84
86
  bottom: 15%; left: 40%;
85
- background: rgba(184,134,11,0.08);
87
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 8%, transparent);
86
88
  animation-delay: 4s;
87
89
  }
88
90
  @keyframes orbFloat {
@@ -99,10 +101,10 @@ const {
99
101
  background: rgba(10, 10, 10, 0.6);
100
102
  backdrop-filter: blur(24px);
101
103
  -webkit-backdrop-filter: blur(24px);
102
- border: 1px solid rgba(255,255,255,0.1);
104
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
103
105
  border-radius: var(--r-xl);
104
106
  box-shadow: 0 24px 80px rgba(0,0,0,0.5),
105
- inset 0 1px 0 rgba(255,255,255,0.05);
107
+ inset 0 1px 0 rgb(var(--ink-rgb, 255 255 255) / 0.05);
106
108
  display: flex;
107
109
  flex-direction: column;
108
110
  align-items: center;
@@ -146,22 +148,22 @@ const {
146
148
  }
147
149
  .hero-glass__btn--primary {
148
150
  background: linear-gradient(135deg, var(--c-primary-light), var(--c-primary));
149
- color: #0a0a0a;
151
+ color: var(--c-on-primary, #0a0a0a);
150
152
  border: none;
151
- box-shadow: 0 4px 20px rgba(184,134,11,0.3);
153
+ box-shadow: 0 4px 20px color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
152
154
  }
153
155
  .hero-glass__btn--primary:hover {
154
156
  transform: translateY(-2px);
155
- box-shadow: 0 8px 30px rgba(184,134,11,0.45);
157
+ box-shadow: 0 8px 30px color-mix(in srgb, var(--c-primary, #b8860b) 45%, transparent);
156
158
  }
157
159
  .hero-glass__btn--secondary {
158
- background: rgba(255,255,255,0.05);
160
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.05);
159
161
  color: var(--c-text-1);
160
- border: 1px solid rgba(255,255,255,0.12);
162
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12);
161
163
  }
162
164
  .hero-glass__btn--secondary:hover {
163
- background: rgba(255,255,255,0.1);
164
- border-color: rgba(184,134,11,0.3);
165
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.1);
166
+ border-color: color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
165
167
  transform: translateY(-2px);
166
168
  }
167
169
  .hero-glass__trust {
@@ -171,14 +173,14 @@ const {
171
173
  font-size: 0.8rem;
172
174
  color: var(--c-text-3);
173
175
  padding-top: var(--sp-3);
174
- border-top: 1px solid rgba(255,255,255,0.06);
176
+ border-top: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
175
177
  }
176
178
  .hero-glass__avatars { display: flex; }
177
179
  .hero-glass__avatar {
178
180
  width: 28px; height: 28px;
179
181
  border-radius: 50%;
180
182
  background: linear-gradient(135deg, var(--c-primary), var(--c-primary-light));
181
- color: #0a0a0a;
183
+ color: var(--c-on-primary, #0a0a0a);
182
184
  display: flex;
183
185
  align-items: center;
184
186
  justify-content: center;
@@ -189,11 +191,11 @@ const {
189
191
  }
190
192
  .hero-glass__avatar:first-child { margin-left: 0; }
191
193
  .hero-glass__avatar--more {
192
- background: rgba(255,255,255,0.1);
194
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.1);
193
195
  color: var(--c-text-3);
194
196
  }
195
197
 
196
- @media (max-width: 640px) {
198
+ @container (max-width: 640px) {
197
199
  .hero-glass { min-height: 75vh; padding: var(--sp-8) var(--sp-4); }
198
200
  .hero-glass__card { padding: var(--sp-6); }
199
201
  .hero-glass__actions { flex-direction: column; width: 100%; max-width: 260px; }
@@ -11,6 +11,7 @@ const {
11
11
  } = Astro.props;
12
12
  ---
13
13
 
14
+ <div class="cq-hero-gradient-cq">
14
15
  <section class="hero-gradient">
15
16
  <div class="hero-gradient__bg" aria-hidden="true"></div>
16
17
  <div class="hero-gradient__content">
@@ -29,8 +30,9 @@ const {
29
30
  </div>
30
31
  </div>
31
32
  </section>
32
-
33
+ </div>
33
34
  <style>
35
+ .cq-hero-gradient-cq { container-type: inline-size; }
34
36
  .hero-gradient {
35
37
  position: relative;
36
38
  min-height: 90vh;
@@ -45,10 +47,10 @@ const {
45
47
  inset: 0;
46
48
  background: linear-gradient(
47
49
  135deg,
48
- rgba(184, 134, 11, 0.25) 0%,
50
+ color-mix(in srgb, var(--c-primary, #b8860b) 25%, transparent) 0%,
49
51
  transparent 40%,
50
52
  transparent 60%,
51
- rgba(184, 134, 11, 0.15) 100%
53
+ color-mix(in srgb, var(--c-primary, #b8860b) 15%, transparent) 100%
52
54
  );
53
55
  animation: gradientShift 8s ease-in-out infinite alternate;
54
56
  }
@@ -74,8 +76,8 @@ const {
74
76
  text-transform: uppercase;
75
77
  letter-spacing: 0.08em;
76
78
  color: var(--c-primary-light);
77
- background: rgba(184,134,11,0.12);
78
- border: 1px solid rgba(184,134,11,0.3);
79
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent);
80
+ border: 1px solid color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
79
81
  border-radius: var(--r-full);
80
82
  }
81
83
  .hero-gradient__title {
@@ -116,26 +118,26 @@ const {
116
118
  }
117
119
  .hero-btn--primary {
118
120
  background: linear-gradient(135deg, var(--c-primary-light), var(--c-primary));
119
- color: #0a0a0a;
120
- box-shadow: 0 4px 24px rgba(184,134,11,0.3);
121
+ color: var(--c-on-primary, #0a0a0a);
122
+ box-shadow: 0 4px 24px color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
121
123
  }
122
124
  .hero-btn--primary:hover {
123
125
  transform: translateY(-2px);
124
- box-shadow: 0 8px 32px rgba(184,134,11,0.45);
126
+ box-shadow: 0 8px 32px color-mix(in srgb, var(--c-primary, #b8860b) 45%, transparent);
125
127
  }
126
128
  .hero-btn--glass {
127
- background: rgba(255,255,255,0.05);
129
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.05);
128
130
  backdrop-filter: blur(12px);
129
131
  color: var(--c-text-1);
130
- border: 1px solid rgba(255,255,255,0.12);
132
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12);
131
133
  }
132
134
  .hero-btn--glass:hover {
133
- background: rgba(255,255,255,0.1);
134
- border-color: rgba(184,134,11,0.3);
135
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.1);
136
+ border-color: color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
135
137
  transform: translateY(-2px);
136
138
  }
137
139
 
138
- @media (max-width: 640px) {
140
+ @container (max-width: 640px) {
139
141
  .hero-gradient { min-height: 70vh; padding: var(--sp-8) var(--sp-4); }
140
142
  .hero-gradient__actions { flex-direction: column; width: 100%; max-width: 280px; }
141
143
  .hero-btn { width: 100%; justify-content: center; }
@@ -89,13 +89,13 @@ const parts = title.split(/\*(.+?)\*/);
89
89
  .hmc__bg { position: absolute; inset: 0; pointer-events: none; }
90
90
  .hmc--glow .hmc__bg {
91
91
  background:
92
- radial-gradient(ellipse 60% 50% at 50% 0%, var(--c-primary-glow, rgba(184, 134, 11, 0.14)), transparent 70%),
92
+ radial-gradient(ellipse 60% 50% at 50% 0%, var(--c-primary-glow, color-mix(in srgb, var(--c-primary, #b8860b) 14%, transparent)), transparent 70%),
93
93
  radial-gradient(ellipse 40% 30% at 50% 100%, rgba(57, 135, 229, 0.08), transparent 70%);
94
94
  }
95
95
  .hmc--grid .hmc__bg {
96
96
  background-image:
97
- linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
98
- linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
97
+ linear-gradient(rgb(var(--ink-rgb, 255 255 255) / 0.04) 1px, transparent 1px),
98
+ linear-gradient(90deg, rgb(var(--ink-rgb, 255 255 255) / 0.04) 1px, transparent 1px);
99
99
  background-size: 48px 48px;
100
100
  mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, #000, transparent);
101
101
  }
@@ -107,14 +107,14 @@ const parts = title.split(/\*(.+?)\*/);
107
107
  min-height: 36px;
108
108
  padding: 0.35rem 0.9rem;
109
109
  border-radius: var(--r-full, 999px);
110
- border: 1px solid var(--c-border, rgba(255, 255, 255, 0.08));
111
- background: rgba(255, 255, 255, 0.03);
110
+ border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.08));
111
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.03);
112
112
  color: var(--c-text-2, #a3a3a3);
113
113
  font-size: 0.8125rem;
114
114
  text-decoration: none;
115
115
  transition: border-color 0.2s ease, color 0.2s ease;
116
116
  }
117
- .hmc__pill:hover { border-color: rgba(255, 255, 255, 0.2); color: var(--c-text-1, #fff); }
117
+ .hmc__pill:hover { border-color: rgb(var(--ink-rgb, 255 255 255) / 0.2); color: var(--c-text-1, #fff); }
118
118
  .hmc__dot { width: 6px; height: 6px; border-radius: 50%; background: var(--c-primary-light, #d4a017); box-shadow: 0 0 10px var(--c-primary-light, #d4a017); }
119
119
  .hmc__title {
120
120
  margin: 1.75rem 0 1.25rem;
@@ -154,10 +154,10 @@ const parts = title.split(/\*(.+?)\*/);
154
154
  }
155
155
  .hmc__btn:hover { transform: translateY(-1px); }
156
156
  .hmc__btn:focus-visible, .hmc__pill:focus-visible { outline: 2px solid var(--c-primary-light, #d4a017); outline-offset: 3px; }
157
- .hmc__btn--primary { background: var(--c-primary-light, #d4a017); color: #0a0a0a; }
158
- .hmc__btn--primary:hover { background: var(--c-accent, #fef3c7); color: #0a0a0a; }
159
- .hmc__btn--ghost { border: 1px solid rgba(255, 255, 255, 0.14); color: var(--c-text-1, #fff); }
160
- .hmc__btn--ghost:hover { border-color: rgba(255, 255, 255, 0.32); color: var(--c-text-1, #fff); }
157
+ .hmc__btn--primary { background: var(--c-primary-light, #d4a017); color: var(--c-on-primary, #0a0a0a); }
158
+ .hmc__btn--primary:hover { background: var(--c-accent, #fef3c7); color: var(--c-on-primary, #0a0a0a); }
159
+ .hmc__btn--ghost { border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.14); color: var(--c-text-1, #fff); }
160
+ .hmc__btn--ghost:hover { border-color: rgb(var(--ink-rgb, 255 255 255) / 0.32); color: var(--c-text-1, #fff); }
161
161
  .hmc__trust {
162
162
  display: flex;
163
163
  flex-wrap: wrap;
@@ -31,6 +31,7 @@ const {
31
31
  } = Astro.props;
32
32
  ---
33
33
 
34
+ <div class="cq-hero-showcase-split-cq">
34
35
  <section class="split-hero">
35
36
  <div class="split-hero__inner">
36
37
  <div class="split-hero__content">
@@ -84,8 +85,9 @@ const {
84
85
  </div>
85
86
  </div>
86
87
  </section>
87
-
88
+ </div>
88
89
  <style>
90
+ .cq-hero-showcase-split-cq { container-type: inline-size; }
89
91
  .split-hero {
90
92
  position: relative;
91
93
  padding: 6rem 1.5rem;
@@ -114,8 +116,8 @@ const {
114
116
  align-items: center;
115
117
  gap: 8px;
116
118
  padding: 0.35rem 0.85rem;
117
- background: rgba(184, 134, 11, 0.12);
118
- border: 1px solid rgba(184, 134, 11, 0.35);
119
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent);
120
+ border: 1px solid color-mix(in srgb, var(--c-primary, #b8860b) 35%, transparent);
119
121
  border-radius: var(--r-full, 9999px);
120
122
  font-size: 0.75rem;
121
123
  font-weight: 800;
@@ -171,22 +173,22 @@ const {
171
173
  .btn--primary {
172
174
  background: linear-gradient(135deg, #d4a017, #b8860b);
173
175
  color: #050505;
174
- box-shadow: 0 4px 20px rgba(184, 134, 11, 0.35);
176
+ box-shadow: 0 4px 20px color-mix(in srgb, var(--c-primary, #b8860b) 35%, transparent);
175
177
  }
176
178
  .btn--primary:hover {
177
179
  transform: translateY(-2px);
178
- box-shadow: 0 8px 30px rgba(184, 134, 11, 0.5);
180
+ box-shadow: 0 8px 30px color-mix(in srgb, var(--c-primary, #b8860b) 50%, transparent);
179
181
  }
180
182
 
181
183
  .btn--secondary {
182
- background: rgba(255, 255, 255, 0.04);
184
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.04);
183
185
  backdrop-filter: blur(12px);
184
- border: 1px solid rgba(255, 255, 255, 0.1);
186
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
185
187
  color: var(--c-text-1, #ffffff);
186
188
  }
187
189
  .btn--secondary:hover {
188
- background: rgba(255, 255, 255, 0.08);
189
- border-color: rgba(255, 255, 255, 0.2);
190
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.08);
191
+ border-color: rgb(var(--ink-rgb, 255 255 255) / 0.2);
190
192
  transform: translateY(-2px);
191
193
  }
192
194
 
@@ -196,7 +198,7 @@ const {
196
198
  gap: 10px;
197
199
  padding: 0.6rem 1.1rem;
198
200
  background: rgba(0, 0, 0, 0.4);
199
- border: 1px solid rgba(255, 255, 255, 0.08);
201
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
200
202
  border-radius: var(--r-md, 10px);
201
203
  font-family: var(--font-mono, monospace);
202
204
  font-size: 0.85rem;
@@ -211,7 +213,7 @@ const {
211
213
  .glass-device {
212
214
  background: rgba(14, 14, 18, 0.85);
213
215
  backdrop-filter: blur(24px);
214
- border: 1px solid rgba(255, 255, 255, 0.12);
216
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12);
215
217
  border-radius: var(--r-xl, 24px);
216
218
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.6);
217
219
  overflow: hidden;
@@ -223,7 +225,7 @@ const {
223
225
  gap: 6px;
224
226
  padding: 0.8rem 1rem;
225
227
  background: rgba(0, 0, 0, 0.3);
226
- border-bottom: 1px solid rgba(255, 255, 255, 0.06);
228
+ border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
227
229
  }
228
230
 
229
231
  .d-dot { width: 10px; height: 10px; border-radius: 50%; }
@@ -252,8 +254,8 @@ const {
252
254
 
253
255
  .mock-icon {
254
256
  font-size: 2.5rem;
255
- background: rgba(184, 134, 11, 0.15);
256
- border: 1px solid rgba(184, 134, 11, 0.3);
257
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 15%, transparent);
258
+ border: 1px solid color-mix(in srgb, var(--c-primary, #b8860b) 30%, transparent);
257
259
  width: 64px;
258
260
  height: 64px;
259
261
  border-radius: 50%;
@@ -280,7 +282,7 @@ const {
280
282
  gap: 24px;
281
283
  margin-top: 1rem;
282
284
  padding-top: 1rem;
283
- border-top: 1px solid rgba(255, 255, 255, 0.08);
285
+ border-top: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
284
286
  width: 100%;
285
287
  justify-content: center;
286
288
  }
@@ -295,7 +297,7 @@ const {
295
297
  .mock-metrics span { font-size: 0.7rem; color: var(--c-text-3, #737373); text-transform: uppercase; }
296
298
  .mock-metrics strong { font-size: 1.1rem; color: var(--c-primary-light, #d4a017); }
297
299
 
298
- @media (max-width: 900px) {
300
+ @container (max-width: 900px) {
299
301
  .split-hero__inner {
300
302
  grid-template-columns: 1fr;
301
303
  gap: 3rem;
@@ -11,6 +11,7 @@ const {
11
11
  } = Astro.props;
12
12
  ---
13
13
 
14
+ <div class="cq-hero-split-cq">
14
15
  <section class="hero-split">
15
16
  <div class="hero-split__content">
16
17
  <span class="hero-split__badge">Open Source · MIT</span>
@@ -57,8 +58,9 @@ const {
57
58
  </div>
58
59
  </div>
59
60
  </section>
60
-
61
+ </div>
61
62
  <style>
63
+ .cq-hero-split-cq { container-type: inline-size; }
62
64
  .hero-split {
63
65
  display: grid;
64
66
  grid-template-columns: 1fr 1fr;
@@ -83,8 +85,8 @@ const {
83
85
  text-transform: uppercase;
84
86
  letter-spacing: 0.1em;
85
87
  color: var(--c-primary-light);
86
- background: rgba(184,134,11,0.1);
87
- border: 1px solid rgba(184,134,11,0.25);
88
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 10%, transparent);
89
+ border: 1px solid color-mix(in srgb, var(--c-primary, #b8860b) 25%, transparent);
88
90
  border-radius: var(--r-full);
89
91
  }
90
92
  .hero-split__title {
@@ -122,13 +124,13 @@ const {
122
124
  }
123
125
  .hero-split__btn--primary {
124
126
  background: linear-gradient(135deg, var(--c-primary-light), var(--c-primary));
125
- color: #0a0a0a;
127
+ color: var(--c-on-primary, #0a0a0a);
126
128
  border: none;
127
- box-shadow: 0 4px 20px rgba(184,134,11,0.25);
129
+ box-shadow: 0 4px 20px color-mix(in srgb, var(--c-primary, #b8860b) 25%, transparent);
128
130
  }
129
131
  .hero-split__btn--primary:hover {
130
132
  transform: translateY(-2px);
131
- box-shadow: 0 8px 30px rgba(184,134,11,0.4);
133
+ box-shadow: 0 8px 30px color-mix(in srgb, var(--c-primary, #b8860b) 40%, transparent);
132
134
  }
133
135
  .hero-split__btn--ghost {
134
136
  background: transparent;
@@ -168,7 +170,7 @@ const {
168
170
  max-width: 500px;
169
171
  }
170
172
  .hero-split__mock-card {
171
- background: rgba(255,255,255,0.03);
173
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.03);
172
174
  border: 1px solid var(--c-border);
173
175
  border-radius: var(--r-lg);
174
176
  overflow: hidden;
@@ -178,7 +180,7 @@ const {
178
180
  .hero-split__mock-line {
179
181
  height: 8px;
180
182
  border-radius: 4px;
181
- background: rgba(255,255,255,0.06);
183
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.06);
182
184
  margin-bottom: var(--sp-3);
183
185
  }
184
186
  .hero-split__mock-line--wide { width: 80%; }
@@ -193,11 +195,11 @@ const {
193
195
  .hero-split__mock-box {
194
196
  height: 60px;
195
197
  border-radius: var(--r-sm);
196
- background: rgba(184,134,11,0.08);
197
- border: 1px solid rgba(184,134,11,0.15);
198
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 8%, transparent);
199
+ border: 1px solid color-mix(in srgb, var(--c-primary, #b8860b) 15%, transparent);
198
200
  }
199
201
 
200
- @media (max-width: 768px) {
202
+ @container (max-width: 768px) {
201
203
  .hero-split {
202
204
  grid-template-columns: 1fr;
203
205
  gap: var(--sp-8);