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
@@ -174,7 +174,7 @@ const faqs = [
174
174
  font-weight: 700;
175
175
  letter-spacing: 0.06em;
176
176
  text-transform: uppercase;
177
- background: rgba(184, 134, 11, 0.12);
177
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent);
178
178
  color: #eab308;
179
179
  border: 1px solid rgba(234, 179, 8, 0.25);
180
180
  margin-bottom: var(--sp-4, 1rem);
@@ -208,7 +208,7 @@ const faqs = [
208
208
  .faq-tab {
209
209
  padding: 0.5rem 1.1rem;
210
210
  background: rgba(15, 23, 42, 0.6);
211
- border: 1px solid rgba(255, 255, 255, 0.08);
211
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
212
212
  border-radius: 9999px;
213
213
  color: #94a3b8;
214
214
  font-size: 0.85rem;
@@ -219,7 +219,7 @@ const faqs = [
219
219
 
220
220
  .faq-tab:hover {
221
221
  color: #fff;
222
- border-color: rgba(255, 255, 255, 0.2);
222
+ border-color: rgb(var(--ink-rgb, 255 255 255) / 0.2);
223
223
  }
224
224
 
225
225
  .faq-tab--active {
@@ -239,14 +239,14 @@ const faqs = [
239
239
  .faq-item {
240
240
  background: rgba(15, 23, 42, 0.5);
241
241
  backdrop-filter: blur(16px);
242
- border: 1px solid rgba(255, 255, 255, 0.08);
242
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
243
243
  border-radius: 16px;
244
244
  overflow: hidden;
245
245
  transition: border-color 0.3s ease, background 0.3s ease;
246
246
  }
247
247
 
248
248
  .faq-item:hover {
249
- border-color: rgba(255, 255, 255, 0.18);
249
+ border-color: rgb(var(--ink-rgb, 255 255 255) / 0.18);
250
250
  }
251
251
 
252
252
  .faq-item[open] {
@@ -302,7 +302,7 @@ const faqs = [
302
302
  gap: 1.5rem;
303
303
  padding: 1.75rem 2rem;
304
304
  background: rgba(15, 23, 42, 0.6);
305
- border: 1px solid rgba(255, 255, 255, 0.1);
305
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
306
306
  border-radius: 20px;
307
307
  flex-wrap: wrap;
308
308
  }
@@ -331,8 +331,8 @@ const faqs = [
331
331
 
332
332
  .support-btn {
333
333
  padding: 0.75rem 1.4rem;
334
- background: rgba(255, 255, 255, 0.08);
335
- border: 1px solid rgba(255, 255, 255, 0.15);
334
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.08);
335
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.15);
336
336
  border-radius: 10px;
337
337
  color: #fff;
338
338
  font-size: 0.9rem;
@@ -44,6 +44,7 @@ const uid = Math.random().toString(36).slice(2, 8);
44
44
  const id = `ftc-${uid}`;
45
45
  ---
46
46
 
47
+ <div class="cq-faq-two-column-cq">
47
48
  <section class={`ftc ftc--${variant} ftc--${size} ${className}`} aria-labelledby={id}>
48
49
  <div class="ftc__inner">
49
50
  <div class="ftc__intro">
@@ -69,8 +70,9 @@ const id = `ftc-${uid}`;
69
70
  </div>
70
71
  </div>
71
72
  </section>
72
-
73
+ </div>
73
74
  <style>
75
+ .cq-faq-two-column-cq { container-type: inline-size; }
74
76
  .ftc {
75
77
  --ftc-py: 5.5rem;
76
78
  padding: var(--ftc-py) var(--sp-6, 1.5rem);
@@ -82,14 +84,14 @@ const id = `ftc-${uid}`;
82
84
  .ftc__intro { position: sticky; top: 6rem; }
83
85
  .ftc__title { margin: 0 0 1rem; font-size: clamp(1.9rem, 4vw, 2.5rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1.12; color: var(--c-text-1, #fff); }
84
86
  .ftc__subtitle { margin: 0 0 1.75rem; font-size: 1rem; line-height: 1.65; color: var(--c-text-2, #a3a3a3); }
85
- .ftc__support { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 46px; padding: 0 1.25rem; border-radius: var(--r-md, 12px); border: 1px solid rgba(255, 255, 255, 0.14); color: var(--c-text-1, #fff); font-weight: 600; text-decoration: none; transition: border-color 0.2s ease; }
86
- .ftc__support:hover { border-color: rgba(255, 255, 255, 0.32); color: var(--c-text-1, #fff); }
87
+ .ftc__support { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 46px; padding: 0 1.25rem; border-radius: var(--r-md, 12px); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.14); color: var(--c-text-1, #fff); font-weight: 600; text-decoration: none; transition: border-color 0.2s ease; }
88
+ .ftc__support:hover { border-color: rgb(var(--ink-rgb, 255 255 255) / 0.32); color: var(--c-text-1, #fff); }
87
89
  .ftc__support:focus-visible { outline: 2px solid var(--c-primary-light, #d4a017); outline-offset: 2px; }
88
90
  .ftc__list { display: grid; }
89
91
  .ftc--cards .ftc__list { gap: 0.75rem; }
90
- .ftc--bordered .ftc__item { border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
91
- .ftc--bordered .ftc__item:first-child { border-top: 1px solid rgba(255, 255, 255, 0.08); }
92
- .ftc--cards .ftc__item { border-radius: var(--r-md, 14px); background: rgba(255, 255, 255, 0.025); border: 1px solid var(--c-border, rgba(255, 255, 255, 0.07)); padding-inline: 1.25rem; }
92
+ .ftc--bordered .ftc__item { border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08); }
93
+ .ftc--bordered .ftc__item:first-child { border-top: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08); }
94
+ .ftc--cards .ftc__item { border-radius: var(--r-md, 14px); background: rgb(var(--ink-rgb, 255 255 255) / 0.025); border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.07)); padding-inline: 1.25rem; }
93
95
  .ftc__q {
94
96
  display: flex;
95
97
  justify-content: space-between;
@@ -111,7 +113,7 @@ const id = `ftc-${uid}`;
111
113
  .ftc__a p { margin: 0; font-size: 0.9875rem; line-height: 1.7; color: var(--c-text-2, #a3a3a3); }
112
114
  .ftc__item[open] .ftc__a { animation: ftc-in 0.25s ease; }
113
115
  @keyframes ftc-in { from { opacity: 0; transform: translateY(-4px); } }
114
- @media (max-width: 820px) {
116
+ @container (max-width: 820px) {
115
117
  .ftc__inner { grid-template-columns: 1fr; }
116
118
  .ftc__intro { position: static; }
117
119
  }
@@ -55,6 +55,7 @@ const id = `far-${Math.random().toString(36).slice(2, 8)}`;
55
55
  const bars = [38, 62, 48, 80, 66, 92, 74];
56
56
  ---
57
57
 
58
+ <div class="cq-feature-alternating-rows-cq">
58
59
  <section class={`far far--${variant} far--${size} ${className}`} aria-labelledby={id}>
59
60
  <h2 id={id} class="far__sr">{title}</h2>
60
61
  <div class="far__inner">
@@ -105,8 +106,9 @@ const bars = [38, 62, 48, 80, 66, 92, 74];
105
106
  })}
106
107
  </div>
107
108
  </section>
108
-
109
+ </div>
109
110
  <style>
111
+ .cq-feature-alternating-rows-cq { container-type: inline-size; }
110
112
  .far {
111
113
  --far-py: 5.5rem;
112
114
  padding: var(--far-py) var(--sp-6, 1.5rem);
@@ -134,10 +136,10 @@ const bars = [38, 62, 48, 80, 66, 92, 74];
134
136
  overflow: hidden;
135
137
  }
136
138
  .far--glass .far__visual {
137
- background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.06), transparent 60%), rgba(255, 255, 255, 0.02);
138
- border: 1px solid var(--c-border, rgba(255, 255, 255, 0.07));
139
+ background: radial-gradient(circle at 30% 20%, rgb(var(--ink-rgb, 255 255 255) / 0.06), transparent 60%), rgb(var(--ink-rgb, 255 255 255) / 0.02);
140
+ border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.07));
139
141
  }
140
- .far--outline .far__visual { border: 1px dashed rgba(255, 255, 255, 0.14); }
142
+ .far--outline .far__visual { border: 1px dashed rgb(var(--ink-rgb, 255 255 255) / 0.14); }
141
143
  .far__chart { display: flex; align-items: flex-end; gap: 10px; width: 100%; height: 70%; }
142
144
  .far__chart span {
143
145
  flex: 1;
@@ -155,7 +157,7 @@ const bars = [38, 62, 48, 80, 66, 92, 74];
155
157
  padding: 1.5rem;
156
158
  border-radius: var(--r-md, 12px);
157
159
  background: #0b0b0d;
158
- border: 1px solid rgba(255, 255, 255, 0.06);
160
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
159
161
  font-family: var(--font-mono, monospace);
160
162
  font-size: 0.8125rem;
161
163
  line-height: 1.75;
@@ -173,8 +175,8 @@ const bars = [38, 62, 48, 80, 66, 92, 74];
173
175
  gap: 0.75rem;
174
176
  padding: 0.85rem 1rem;
175
177
  border-radius: var(--r-md, 12px);
176
- background: rgba(255, 255, 255, 0.03);
177
- border: 1px solid rgba(255, 255, 255, 0.07);
178
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.03);
179
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.07);
178
180
  font-family: var(--font-mono, monospace);
179
181
  font-size: 0.8125rem;
180
182
  color: var(--c-text-1, #fff);
@@ -182,7 +184,7 @@ const bars = [38, 62, 48, 80, 66, 92, 74];
182
184
  .far__stack span::before { content: ''; width: 20px; height: 20px; border-radius: 6px; background: var(--c); }
183
185
  .far__stack span:nth-child(2) { margin-left: 1.5rem; }
184
186
  .far__stack span:nth-child(3) { margin-left: 3rem; }
185
- @media (max-width: 820px) {
187
+ @container (max-width: 820px) {
186
188
  .far__row { grid-template-columns: 1fr; }
187
189
  .far__row--rev .far__copy { order: 0; }
188
190
  }
@@ -21,6 +21,7 @@ const {
21
21
  } = Astro.props;
22
22
  ---
23
23
 
24
+ <div class="cq-feature-bento-grid-cq">
24
25
  <section class={`bento-section ${className}`} aria-labelledby="bento-title">
25
26
  <div class="bento-bg" aria-hidden="true">
26
27
  <div class="bento-glow bento-glow--1"></div>
@@ -139,8 +140,9 @@ const {
139
140
  </div>
140
141
  </div>
141
142
  </section>
142
-
143
+ </div>
143
144
  <style>
145
+ .cq-feature-bento-grid-cq { container-type: inline-size; }
144
146
  .bento-section {
145
147
  position: relative;
146
148
  padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem);
@@ -199,7 +201,7 @@ const {
199
201
  font-weight: 700;
200
202
  letter-spacing: 0.06em;
201
203
  text-transform: uppercase;
202
- background: rgba(184, 134, 11, 0.12);
204
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent);
203
205
  color: #eab308;
204
206
  border: 1px solid rgba(234, 179, 8, 0.25);
205
207
  margin-bottom: var(--sp-4, 1rem);
@@ -233,7 +235,7 @@ const {
233
235
  background: rgba(15, 23, 42, 0.6);
234
236
  backdrop-filter: blur(20px);
235
237
  -webkit-backdrop-filter: blur(20px);
236
- border: 1px solid rgba(255, 255, 255, 0.08);
238
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
237
239
  border-radius: var(--r-xl, 20px);
238
240
  padding: 2rem;
239
241
  display: flex;
@@ -245,7 +247,7 @@ const {
245
247
 
246
248
  .bento-card:hover {
247
249
  transform: translateY(-4px);
248
- border-color: rgba(255, 255, 255, 0.18);
250
+ border-color: rgb(var(--ink-rgb, 255 255 255) / 0.18);
249
251
  box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.6);
250
252
  }
251
253
 
@@ -306,13 +308,13 @@ const {
306
308
  padding: 1rem;
307
309
  background: rgba(0, 0, 0, 0.3);
308
310
  border-radius: 12px;
309
- border: 1px solid rgba(255, 255, 255, 0.05);
311
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.05);
310
312
  }
311
313
 
312
314
  .speed-score {
313
315
  text-align: center;
314
316
  padding-right: 1.5rem;
315
- border-right: 1px solid rgba(255, 255, 255, 0.1);
317
+ border-right: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
316
318
  }
317
319
 
318
320
  .score-number {
@@ -364,7 +366,7 @@ const {
364
366
  .a11y-pill {
365
367
  padding: 0.6rem 0.85rem;
366
368
  background: rgba(0, 0, 0, 0.3);
367
- border: 1px solid rgba(255, 255, 255, 0.06);
369
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
368
370
  border-radius: 8px;
369
371
  font-size: 0.82rem;
370
372
  color: #cbd5e1;
@@ -380,7 +382,7 @@ const {
380
382
  width: 22px;
381
383
  height: 22px;
382
384
  border-radius: 50%;
383
- border: 2px solid rgba(255, 255, 255, 0.2);
385
+ border: 2px solid rgb(var(--ink-rgb, 255 255 255) / 0.2);
384
386
  }
385
387
  .color-dot--gold { background: #eab308; }
386
388
  .color-dot--indigo { background: #6366f1; }
@@ -391,7 +393,7 @@ const {
391
393
  padding: 0.75rem;
392
394
  background: rgba(0, 0, 0, 0.5);
393
395
  border-radius: 8px;
394
- border: 1px solid rgba(255, 255, 255, 0.06);
396
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
395
397
  font-size: 0.8rem;
396
398
  color: #93c5fd;
397
399
  font-family: var(--font-mono, monospace);
@@ -424,7 +426,7 @@ const {
424
426
  50% { transform: scale(1.4); opacity: 0.6; }
425
427
  }
426
428
 
427
- @media (max-width: 960px) {
429
+ @container (max-width: 960px) {
428
430
  .bento-grid {
429
431
  grid-template-columns: 1fr;
430
432
  }
@@ -439,7 +441,7 @@ const {
439
441
  }
440
442
  .speed-score {
441
443
  border-right: none;
442
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
444
+ border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
443
445
  padding-right: 0;
444
446
  padding-bottom: 0.75rem;
445
447
  width: 100%;
@@ -113,14 +113,14 @@ const id = `fig-${Math.random().toString(36).slice(2, 8)}`;
113
113
  transition: border-color 0.25s ease, background 0.25s ease, transform 0.25s ease;
114
114
  }
115
115
  .fig--card .fig__card {
116
- background: linear-gradient(160deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.01));
117
- border: 1px solid var(--c-border, rgba(255, 255, 255, 0.07));
116
+ background: linear-gradient(160deg, rgb(var(--ink-rgb, 255 255 255) / 0.04), rgb(var(--ink-rgb, 255 255 255) / 0.01));
117
+ border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.07));
118
118
  }
119
- .fig--bordered .fig__card { border: 1px solid rgba(255, 255, 255, 0.1); }
119
+ .fig--bordered .fig__card { border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1); }
120
120
  .fig--plain .fig__card { padding: 0.5rem 0; }
121
121
  .fig--card .fig__card:hover, .fig--card .fig__card:focus-within,
122
122
  .fig--bordered .fig__card:hover, .fig--bordered .fig__card:focus-within {
123
- border-color: rgba(212, 160, 23, 0.35);
123
+ border-color: color-mix(in srgb, var(--c-primary-light, #d4a017) 35%, transparent);
124
124
  transform: translateY(-3px);
125
125
  }
126
126
  .fig__icon {
@@ -130,8 +130,8 @@ const id = `fig-${Math.random().toString(36).slice(2, 8)}`;
130
130
  height: 46px;
131
131
  margin-bottom: 1.25rem;
132
132
  border-radius: var(--r-md, 12px);
133
- background: var(--c-primary-glow, rgba(184, 134, 11, 0.12));
134
- border: 1px solid rgba(212, 160, 23, 0.25);
133
+ background: var(--c-primary-glow, color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent));
134
+ border: 1px solid color-mix(in srgb, var(--c-primary-light, #d4a017) 25%, transparent);
135
135
  color: var(--c-primary-light, #d4a017);
136
136
  }
137
137
  .fig__card-title { margin: 0 0 0.5rem; font-size: 1.125rem; font-weight: 650; color: var(--c-text-1, #fff); letter-spacing: -0.01em; }
@@ -37,6 +37,7 @@ const uid = Math.random().toString(36).slice(2, 8);
37
37
  const id = `fts-${uid}`;
38
38
  ---
39
39
 
40
+ <div class="cq-feature-tabs-showcase-cq">
40
41
  <section class={`fts fts--${variant} fts--${size} ${className}`} aria-labelledby={id}>
41
42
  <div class="fts__inner">
42
43
  <header class="fts__head">
@@ -79,7 +80,7 @@ const id = `fts-${uid}`;
79
80
  </div>
80
81
  </div>
81
82
  </section>
82
-
83
+ </div>
83
84
  <script>
84
85
  document.querySelectorAll<HTMLElement>('[data-fts]').forEach((root) => {
85
86
  const tabs = Array.from(root.querySelectorAll<HTMLButtonElement>('[role="tab"]'));
@@ -106,6 +107,7 @@ const id = `fts-${uid}`;
106
107
  </script>
107
108
 
108
109
  <style>
110
+ .cq-feature-tabs-showcase-cq { container-type: inline-size; }
109
111
  .fts {
110
112
  --fts-py: 5.5rem;
111
113
  padding: var(--fts-py) var(--sp-6, 1.5rem);
@@ -133,13 +135,13 @@ const id = `fts-${uid}`;
133
135
  }
134
136
  .fts__tab:hover { color: var(--c-text-1, #fff); }
135
137
  .fts__tab:focus-visible { outline: 2px solid var(--c-primary-light, #d4a017); outline-offset: 2px; }
136
- .fts--pills .fts__list { width: fit-content; margin-inline: auto; padding: 0.35rem; border-radius: var(--r-full, 999px); background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.07); }
137
- .fts--pills .fts__tab[aria-selected='true'] { background: var(--c-text-1, #fff); color: #0a0a0a; }
138
- .fts--underline .fts__list { border-bottom: 1px solid rgba(255, 255, 255, 0.08); gap: 1.5rem; }
138
+ .fts--pills .fts__list { width: fit-content; margin-inline: auto; padding: 0.35rem; border-radius: var(--r-full, 999px); background: rgb(var(--ink-rgb, 255 255 255) / 0.04); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.07); }
139
+ .fts--pills .fts__tab[aria-selected='true'] { background: var(--c-text-1, #fff); color: var(--c-on-primary, #0a0a0a); }
140
+ .fts--underline .fts__list { border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08); gap: 1.5rem; }
139
141
  .fts--underline .fts__tab { border-radius: 0; padding: 0 0.25rem; border-bottom: 2px solid transparent; margin-bottom: -1px; }
140
142
  .fts--underline .fts__tab[aria-selected='true'] { color: var(--c-text-1, #fff); border-bottom-color: var(--c-primary-light, #d4a017); }
141
- .fts--cards .fts__tab { border-radius: var(--r-md, 12px); border-color: rgba(255, 255, 255, 0.08); }
142
- .fts--cards .fts__tab[aria-selected='true'] { border-color: var(--c-primary-light, #d4a017); color: var(--c-text-1, #fff); background: var(--c-primary-glow, rgba(184, 134, 11, 0.12)); }
143
+ .fts--cards .fts__tab { border-radius: var(--r-md, 12px); border-color: rgb(var(--ink-rgb, 255 255 255) / 0.08); }
144
+ .fts--cards .fts__tab[aria-selected='true'] { border-color: var(--c-primary-light, #d4a017); color: var(--c-text-1, #fff); background: var(--c-primary-glow, color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent)); }
143
145
 
144
146
  .fts__panel {
145
147
  display: grid;
@@ -148,8 +150,8 @@ const id = `fts-${uid}`;
148
150
  align-items: center;
149
151
  padding: clamp(1.5rem, 4vw, 3rem);
150
152
  border-radius: var(--r-xl, 24px);
151
- background: linear-gradient(160deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.01));
152
- border: 1px solid var(--c-border, rgba(255, 255, 255, 0.07));
153
+ background: linear-gradient(160deg, rgb(var(--ink-rgb, 255 255 255) / 0.045), rgb(var(--ink-rgb, 255 255 255) / 0.01));
154
+ border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.07));
153
155
  animation: fts-in 0.35s ease;
154
156
  }
155
157
  .fts__panel[hidden] { display: none; }
@@ -168,13 +170,13 @@ const id = `fts-${uid}`;
168
170
  gap: 0.5rem;
169
171
  min-height: 200px;
170
172
  border-radius: var(--r-lg, 20px);
171
- background: radial-gradient(circle at 50% 30%, var(--c-primary-glow, rgba(184, 134, 11, 0.16)), transparent 70%), rgba(255, 255, 255, 0.02);
172
- border: 1px solid rgba(255, 255, 255, 0.06);
173
+ background: radial-gradient(circle at 50% 30%, var(--c-primary-glow, color-mix(in srgb, var(--c-primary, #b8860b) 16%, transparent)), transparent 70%), rgb(var(--ink-rgb, 255 255 255) / 0.02);
174
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
173
175
  text-align: center;
174
176
  padding: 1.5rem;
175
177
  }
176
178
  .fts__stat-value { font-size: clamp(2.75rem, 6vw, 4rem); font-weight: 800; letter-spacing: -0.04em; color: var(--c-text-1, #fff); font-variant-numeric: tabular-nums; line-height: 1; }
177
179
  .fts__stat-label { font-size: 0.875rem; color: var(--c-text-2, #a3a3a3); }
178
- @media (max-width: 760px) { .fts__panel { grid-template-columns: 1fr; } }
180
+ @container (max-width: 760px) { .fts__panel { grid-template-columns: 1fr; } }
179
181
  @media (prefers-reduced-motion: reduce) { .fts__panel { animation: none; } }
180
182
  </style>
@@ -48,6 +48,7 @@ const steps = [
48
48
  ];
49
49
  ---
50
50
 
51
+ <div class="cq-feature-timeline-flow-cq">
51
52
  <section class={`timeline-section ${className}`} aria-labelledby="timeline-title">
52
53
  <div class="timeline-bg" aria-hidden="true">
53
54
  <div class="timeline-glow"></div>
@@ -83,8 +84,9 @@ const steps = [
83
84
  </div>
84
85
  </div>
85
86
  </section>
86
-
87
+ </div>
87
88
  <style>
89
+ .cq-feature-timeline-flow-cq { container-type: inline-size; }
88
90
  .timeline-section {
89
91
  position: relative;
90
92
  padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem);
@@ -131,7 +133,7 @@ const steps = [
131
133
  font-weight: 700;
132
134
  letter-spacing: 0.06em;
133
135
  text-transform: uppercase;
134
- background: rgba(184, 134, 11, 0.12);
136
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent);
135
137
  color: #eab308;
136
138
  border: 1px solid rgba(234, 179, 8, 0.25);
137
139
  margin-bottom: var(--sp-4, 1rem);
@@ -199,7 +201,7 @@ const steps = [
199
201
  flex: 1;
200
202
  background: rgba(15, 23, 42, 0.6);
201
203
  backdrop-filter: blur(20px);
202
- border: 1px solid rgba(255, 255, 255, 0.08);
204
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
203
205
  border-radius: 20px;
204
206
  padding: 2rem;
205
207
  transition: transform 0.3s ease, border-color 0.3s ease;
@@ -207,7 +209,7 @@ const steps = [
207
209
 
208
210
  .step-card__body:hover {
209
211
  transform: translateX(4px);
210
- border-color: rgba(255, 255, 255, 0.18);
212
+ border-color: rgb(var(--ink-rgb, 255 255 255) / 0.18);
211
213
  }
212
214
 
213
215
  .step-tag {
@@ -234,7 +236,7 @@ const steps = [
234
236
  .step-code {
235
237
  padding: 0.75rem 1rem;
236
238
  background: rgba(0, 0, 0, 0.5);
237
- border: 1px solid rgba(255, 255, 255, 0.08);
239
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
238
240
  border-radius: 10px;
239
241
  font-family: var(--font-mono, monospace);
240
242
  font-size: 0.85rem;
@@ -242,7 +244,7 @@ const steps = [
242
244
  overflow-x: auto;
243
245
  }
244
246
 
245
- @media (max-width: 640px) {
247
+ @container (max-width: 640px) {
246
248
  .flow-line {
247
249
  display: none;
248
250
  }
@@ -8,6 +8,7 @@ interface Props {
8
8
  const { title = "Feedback", subtitle = "Badges, alerts, and notification components." } = Astro.props;
9
9
  ---
10
10
 
11
+ <div class="cq-feedback-showcase-cq">
11
12
  <section class="feedback-showcase">
12
13
  <div class="container">
13
14
  <div class="showcase-header">
@@ -66,8 +67,9 @@ const { title = "Feedback", subtitle = "Badges, alerts, and notification compone
66
67
  </div>
67
68
  </div>
68
69
  </section>
69
-
70
+ </div>
70
71
  <style>
72
+ .cq-feedback-showcase-cq { container-type: inline-size; }
71
73
  .feedback-showcase {
72
74
  padding: var(--sp-16) 0;
73
75
  position: relative;
@@ -84,8 +86,8 @@ const { title = "Feedback", subtitle = "Badges, alerts, and notification compone
84
86
  text-transform: uppercase;
85
87
  letter-spacing: 0.1em;
86
88
  color: var(--c-primary-light);
87
- background: rgba(184,134,11,0.1);
88
- border: 1px solid rgba(184,134,11,0.25);
89
+ background: color-mix(in srgb, var(--c-primary, #b8860b) 10%, transparent);
90
+ border: 1px solid color-mix(in srgb, var(--c-primary, #b8860b) 25%, transparent);
89
91
  border-radius: var(--r-full);
90
92
  margin-bottom: var(--sp-4);
91
93
  }
@@ -107,7 +109,7 @@ const { title = "Feedback", subtitle = "Badges, alerts, and notification compone
107
109
  padding: var(--sp-12);
108
110
  background: rgba(10, 10, 10, 0.6);
109
111
  backdrop-filter: blur(20px);
110
- border: 1px solid rgba(255,255,255,0.08);
112
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
111
113
  border-radius: var(--r-xl);
112
114
  margin-bottom: var(--sp-6);
113
115
  box-shadow: 0 20px 60px rgba(0,0,0,0.4);
@@ -192,13 +194,13 @@ const { title = "Feedback", subtitle = "Badges, alerts, and notification compone
192
194
  }
193
195
  .badge--new {
194
196
  background: linear-gradient(135deg, var(--c-primary-light), var(--c-primary));
195
- color: #0a0a0a;
196
- box-shadow: 0 2px 10px rgba(184,134,11,0.25);
197
+ color: var(--c-on-primary, #0a0a0a);
198
+ box-shadow: 0 2px 10px color-mix(in srgb, var(--c-primary, #b8860b) 25%, transparent);
197
199
  }
198
200
  .badge--beta {
199
- background: rgba(255,255,255,0.08);
201
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.08);
200
202
  color: var(--c-text-1);
201
- border: 1px solid rgba(255,255,255,0.12);
203
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12);
202
204
  }
203
205
  .badge--count {
204
206
  background: rgba(239,68,68,0.15);
@@ -215,9 +217,9 @@ const { title = "Feedback", subtitle = "Badges, alerts, and notification compone
215
217
  gap: 0.75rem;
216
218
  width: 100%;
217
219
  padding: 1rem;
218
- background: rgba(255,255,255,0.06);
220
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.06);
219
221
  backdrop-filter: blur(12px);
220
- border: 1px solid rgba(255,255,255,0.1);
222
+ border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
221
223
  border-radius: var(--r-lg);
222
224
  box-shadow: 0 8px 30px rgba(0,0,0,0.3);
223
225
  animation: fadeSlideIn 0.5s ease 0.45s both;
@@ -268,7 +270,7 @@ const { title = "Feedback", subtitle = "Badges, alerts, and notification compone
268
270
  .spinner {
269
271
  width: 1.5rem;
270
272
  height: 1.5rem;
271
- border: 2px solid rgba(184,134,11,0.2);
273
+ border: 2px solid color-mix(in srgb, var(--c-primary, #b8860b) 20%, transparent);
272
274
  border-top-color: var(--c-primary-light);
273
275
  border-radius: 50%;
274
276
  animation: spin 0.8s linear infinite;
@@ -300,7 +302,7 @@ const { title = "Feedback", subtitle = "Badges, alerts, and notification compone
300
302
  .usage-code {
301
303
  text-align: center;
302
304
  padding: var(--sp-4);
303
- background: rgba(255,255,255,0.02);
305
+ background: rgb(var(--ink-rgb, 255 255 255) / 0.02);
304
306
  border-radius: var(--r-md);
305
307
  }
306
308
  .usage-code code {
@@ -309,7 +311,7 @@ const { title = "Feedback", subtitle = "Badges, alerts, and notification compone
309
311
  color: var(--c-primary-light);
310
312
  }
311
313
 
312
- @media (max-width: 640px) {
314
+ @container (max-width: 640px) {
313
315
  .feedback-stack { max-width: 100%; gap: var(--sp-4); }
314
316
  .preview-stage { padding: var(--sp-8) var(--sp-4); }
315
317
  .preview-stage__inner { min-height: auto; }
@@ -58,6 +58,7 @@ const icons = {
58
58
  const id = `fms-${Math.random().toString(36).slice(2, 8)}`;
59
59
  ---
60
60
 
61
+ <div class="cq-footer-mega-section-cq">
61
62
  <footer class={`fms fms--${variant} fms--${size} ${className}`} aria-labelledby={id}>
62
63
  <h2 id={id} class="fms__sr">Site footer</h2>
63
64
  <div class="fms__inner">
@@ -108,32 +109,33 @@ const id = `fms-${Math.random().toString(36).slice(2, 8)}`;
108
109
  </div>
109
110
  </div>
110
111
  </footer>
111
-
112
+ </div>
112
113
  <style>
114
+ .cq-footer-mega-section-cq { container-type: inline-size; }
113
115
  .fms {
114
116
  --fms-py: 4.5rem;
115
117
  padding: var(--fms-py) var(--sp-6, 1.5rem) 2rem;
116
118
  background: var(--c-bg-1, #0a0a0a);
117
- border-top: 1px solid rgba(255, 255, 255, 0.06);
119
+ border-top: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
118
120
  }
119
121
  .fms--sm { --fms-py: 3rem; }
120
122
  .fms--lg { --fms-py: 6rem; }
121
- .fms--bordered .fms__inner { padding: clamp(1.5rem, 4vw, 3rem); border-radius: var(--r-xl, 28px); border: 1px solid var(--c-border, rgba(255, 255, 255, 0.08)); background: rgba(255, 255, 255, 0.015); }
123
+ .fms--bordered .fms__inner { padding: clamp(1.5rem, 4vw, 3rem); border-radius: var(--r-xl, 28px); border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.08)); background: rgb(var(--ink-rgb, 255 255 255) / 0.015); }
122
124
  .fms--minimal { background: transparent; border-top: 0; }
123
125
  .fms--minimal .fms__news { display: none; }
124
126
  .fms__sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
125
127
  .fms__inner { max-width: 1180px; margin: 0 auto; }
126
- .fms__top { display: grid; grid-template-columns: 1.2fr 2fr; gap: clamp(2rem, 6vw, 5rem); padding-bottom: 3rem; border-bottom: 1px solid rgba(255, 255, 255, 0.07); }
128
+ .fms__top { display: grid; grid-template-columns: 1.2fr 2fr; gap: clamp(2rem, 6vw, 5rem); padding-bottom: 3rem; border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.07); }
127
129
  .fms__logo { display: inline-flex; align-items: center; gap: 0.6rem; min-height: 44px; font-size: 1.25rem; font-weight: 800; letter-spacing: -0.02em; color: var(--c-text-1, #fff); text-decoration: none; }
128
130
  .fms__tagline { margin: 0.75rem 0 1.75rem; max-width: 320px; font-size: 0.9375rem; line-height: 1.6; color: var(--c-text-2, #a3a3a3); }
129
131
  .fms__news-label { display: block; margin-bottom: 0.5rem; font-size: 0.8125rem; font-weight: 600; color: var(--c-text-1, #fff); }
130
- .fms__news-field { display: flex; max-width: 340px; border-radius: var(--r-md, 12px); border: 1px solid rgba(255, 255, 255, 0.12); background: rgba(0, 0, 0, 0.3); overflow: hidden; transition: border-color 0.2s ease; }
132
+ .fms__news-field { display: flex; max-width: 340px; border-radius: var(--r-md, 12px); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12); background: rgba(0, 0, 0, 0.3); overflow: hidden; transition: border-color 0.2s ease; }
131
133
  .fms__news-field:focus-within { border-color: var(--c-primary-light, #d4a017); }
132
134
  .fms__news-field input { flex: 1; min-width: 0; min-height: 46px; padding: 0 0.9rem; border: 0; background: transparent; color: var(--c-text-1, #fff); font: inherit; font-size: 0.9375rem; }
133
135
  .fms__news-field input:focus { outline: none; }
134
136
  .fms__news-field input::placeholder { color: var(--c-text-3, #737373); }
135
- .fms__news-field button { width: 46px; border: 0; background: rgba(255, 255, 255, 0.06); color: var(--c-text-1, #fff); cursor: pointer; transition: background 0.2s ease; }
136
- .fms__news-field button:hover { background: var(--c-primary-light, #d4a017); color: #0a0a0a; }
137
+ .fms__news-field button { width: 46px; border: 0; background: rgb(var(--ink-rgb, 255 255 255) / 0.06); color: var(--c-text-1, #fff); cursor: pointer; transition: background 0.2s ease; }
138
+ .fms__news-field button:hover { background: var(--c-primary-light, #d4a017); color: var(--c-on-primary, #0a0a0a); }
137
139
  .fms__news-field button:focus-visible { outline: 2px solid var(--c-primary-light, #d4a017); outline-offset: -2px; }
138
140
  .fms__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 2rem; }
139
141
  .fms__col-title { margin: 0 0 1rem; font-size: 0.8125rem; font-weight: 650; letter-spacing: 0.06em; text-transform: uppercase; color: var(--c-text-1, #fff); }
@@ -144,12 +146,12 @@ const id = `fms-${Math.random().toString(36).slice(2, 8)}`;
144
146
  .fms a:focus-visible { outline: 2px solid var(--c-primary-light, #d4a017); outline-offset: 2px; border-radius: 4px; }
145
147
  .fms__bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; padding-top: 1.75rem; }
146
148
  .fms__copy { margin: 0; font-size: 0.8125rem; }
147
- .fms__status { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 36px; padding: 0 0.85rem; border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.08); font-size: 0.8125rem; }
149
+ .fms__status { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 36px; padding: 0 0.85rem; border-radius: 999px; border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08); font-size: 0.8125rem; }
148
150
  .fms__status:hover { color: var(--c-text-1, #fff); }
149
151
  .fms__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--chart-pos, #34c38f); box-shadow: 0 0 8px var(--chart-pos, #34c38f); }
150
152
  .fms__socials { list-style: none; margin: 0; padding: 0; display: flex; gap: 0.25rem; }
151
153
  .fms__socials a { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 10px; color: var(--c-text-2, #a3a3a3); transition: color 0.2s ease, background 0.2s ease; }
152
- .fms__socials a:hover { color: var(--c-text-1, #fff); background: rgba(255, 255, 255, 0.06); }
153
- @media (max-width: 860px) { .fms__top { grid-template-columns: 1fr; } }
154
- @media (max-width: 560px) { .fms__bottom { flex-direction: column; align-items: flex-start; } }
154
+ .fms__socials a:hover { color: var(--c-text-1, #fff); background: rgb(var(--ink-rgb, 255 255 255) / 0.06); }
155
+ @container (max-width: 860px) { .fms__top { grid-template-columns: 1fr; } }
156
+ @container (max-width: 560px) { .fms__bottom { flex-direction: column; align-items: flex-start; } }
155
157
  </style>