@donotdev/ui 0.0.13 → 0.0.15

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 (163) hide show
  1. package/dist/components/auth/AuthMenu.d.ts.map +1 -1
  2. package/dist/components/auth/AuthMenu.js +19 -20
  3. package/dist/components/common/FeatureCard.d.ts +3 -1
  4. package/dist/components/common/FeatureCard.d.ts.map +1 -1
  5. package/dist/components/common/FeatureCard.js +2 -2
  6. package/dist/components/common/ProgressBar.js +2 -2
  7. package/dist/components/common/TechBento.d.ts +14 -2
  8. package/dist/components/common/TechBento.d.ts.map +1 -1
  9. package/dist/components/common/TechBento.js +8 -9
  10. package/dist/components/cookie-consent/CookieConsent.d.ts.map +1 -1
  11. package/dist/components/cookie-consent/CookieConsent.js +3 -4
  12. package/dist/components/layout/components/DropdownNavigation.d.ts.map +1 -1
  13. package/dist/components/layout/components/DropdownNavigation.js +3 -12
  14. package/dist/components/layout/components/FloatingLanguageSwitcher.js +1 -1
  15. package/dist/components/layout/components/Notifications.d.ts +1 -3
  16. package/dist/components/layout/components/Notifications.d.ts.map +1 -1
  17. package/dist/components/layout/components/Notifications.js +4 -2
  18. package/dist/components/layout/components/header/AppBranding.d.ts.map +1 -1
  19. package/dist/components/layout/components/header/AppBranding.js +2 -1
  20. package/dist/components/layout/components/header/AppIcon.d.ts.map +1 -1
  21. package/dist/components/layout/components/header/AppIcon.js +5 -2
  22. package/dist/components/layout/components/header/CacheSettings.d.ts.map +1 -1
  23. package/dist/components/layout/components/header/CacheSettings.js +3 -1
  24. package/dist/components/layout/components/header/HeaderNavigation.d.ts +6 -0
  25. package/dist/components/layout/components/header/HeaderNavigation.d.ts.map +1 -1
  26. package/dist/components/layout/components/header/HeaderNavigation.js +12 -2
  27. package/dist/components/layout/components/index.d.ts +3 -0
  28. package/dist/components/layout/components/index.d.ts.map +1 -1
  29. package/dist/components/layout/components/index.js +3 -0
  30. package/dist/components/license/LicenseWatermark.d.ts.map +1 -1
  31. package/dist/components/license/LicenseWatermark.js +3 -1
  32. package/dist/crud/components/CrudCardLink.d.ts +17 -0
  33. package/dist/crud/components/CrudCardLink.d.ts.map +1 -0
  34. package/dist/crud/components/CrudCardLink.js +17 -0
  35. package/dist/crud/components/EntityCardList.d.ts +1 -1
  36. package/dist/crud/components/EntityCardList.d.ts.map +1 -1
  37. package/dist/crud/components/EntityCardList.js +38 -90
  38. package/dist/crud/components/EntityDisplayRenderer.d.ts +1 -1
  39. package/dist/crud/components/EntityDisplayRenderer.d.ts.map +1 -1
  40. package/dist/crud/components/EntityDisplayRenderer.js +11 -3
  41. package/dist/crud/components/EntityFormRenderer.d.ts +1 -1
  42. package/dist/crud/components/EntityFormRenderer.d.ts.map +1 -1
  43. package/dist/crud/components/EntityFormRenderer.js +34 -40
  44. package/dist/crud/components/EntityList.d.ts +1 -1
  45. package/dist/crud/components/EntityList.d.ts.map +1 -1
  46. package/dist/crud/components/EntityList.js +1 -1
  47. package/dist/crud/components/EntityRecommendations.d.ts +29 -0
  48. package/dist/crud/components/EntityRecommendations.d.ts.map +1 -0
  49. package/dist/crud/components/EntityRecommendations.js +32 -0
  50. package/dist/crud/components/index.d.ts +2 -1
  51. package/dist/crud/components/index.d.ts.map +1 -1
  52. package/dist/crud/components/index.js +1 -0
  53. package/dist/dndev.css +1021 -196
  54. package/dist/index.js +4 -4
  55. package/dist/internal/common/RouteErrorFallback.d.ts.map +1 -1
  56. package/dist/internal/devtools/components/AuthDebugButton.js +1 -1
  57. package/dist/internal/devtools/components/DesignTab.d.ts.map +1 -1
  58. package/dist/internal/devtools/components/DesignTab.js +3 -2
  59. package/dist/internal/devtools/components/LayoutReset.d.ts.map +1 -1
  60. package/dist/internal/devtools/components/LayoutReset.js +2 -0
  61. package/dist/internal/devtools/components/StoresTab.d.ts.map +1 -1
  62. package/dist/internal/devtools/components/StoresTab.js +3 -0
  63. package/dist/internal/devtools/utils/envVarDiscovery.d.ts +1 -0
  64. package/dist/internal/devtools/utils/envVarDiscovery.d.ts.map +1 -1
  65. package/dist/internal/devtools/utils/envVarDiscovery.js +5 -0
  66. package/dist/internal/devtools/utils/virtualModuleInspector.d.ts.map +1 -1
  67. package/dist/internal/devtools/utils/virtualModuleInspector.js +27 -21
  68. package/dist/internal/initializers/BaseStoresInitializer.d.ts.map +1 -1
  69. package/dist/internal/initializers/BaseStoresInitializer.js +30 -6
  70. package/dist/internal/layout/components/AutoMetaTags.d.ts.map +1 -1
  71. package/dist/internal/layout/components/AutoMetaTags.js +10 -8
  72. package/dist/internal/layout/components/FontPreloadLinks.d.ts +16 -0
  73. package/dist/internal/layout/components/FontPreloadLinks.d.ts.map +1 -0
  74. package/dist/internal/layout/components/FontPreloadLinks.js +32 -0
  75. package/dist/internal/layout/components/PerformanceHints.d.ts +7 -12
  76. package/dist/internal/layout/components/PerformanceHints.d.ts.map +1 -1
  77. package/dist/internal/layout/components/PerformanceHints.js +8 -12
  78. package/dist/internal/layout/components/footer/useLegalLinks.d.ts +6 -5
  79. package/dist/internal/layout/components/footer/useLegalLinks.d.ts.map +1 -1
  80. package/dist/internal/layout/components/footer/useLegalLinks.js +6 -2
  81. package/dist/internal/layout/zones/DnDevFooter.d.ts +6 -0
  82. package/dist/internal/layout/zones/DnDevFooter.d.ts.map +1 -1
  83. package/dist/internal/layout/zones/DnDevFooter.js +10 -4
  84. package/dist/internal/layout/zones/DnDevHeader.d.ts +7 -0
  85. package/dist/internal/layout/zones/DnDevHeader.d.ts.map +1 -1
  86. package/dist/internal/layout/zones/DnDevHeader.js +7 -0
  87. package/dist/internal/layout/zones/DnDevMergedBar.d.ts +7 -0
  88. package/dist/internal/layout/zones/DnDevMergedBar.d.ts.map +1 -1
  89. package/dist/internal/layout/zones/DnDevMergedBar.js +9 -0
  90. package/dist/internal/layout/zones/DnDevSidebar.d.ts +4 -0
  91. package/dist/internal/layout/zones/DnDevSidebar.d.ts.map +1 -1
  92. package/dist/internal/layout/zones/DnDevSidebar.js +13 -1
  93. package/dist/internal/providers/NavigationProvider.d.ts.map +1 -1
  94. package/dist/internal/providers/NavigationProvider.js +3 -5
  95. package/dist/next.d.ts +1 -0
  96. package/dist/next.d.ts.map +1 -1
  97. package/dist/next.js +1 -0
  98. package/dist/providers/ViteAppProviders.d.ts.map +1 -1
  99. package/dist/providers/ViteAppProviders.js +3 -5
  100. package/dist/routing/AuthGuard.d.ts +1 -1
  101. package/dist/routing/AuthGuard.d.ts.map +1 -1
  102. package/dist/routing/AuthGuard.js +3 -1
  103. package/dist/routing/GoTo.d.ts.map +1 -1
  104. package/dist/routing/GoTo.js +3 -1
  105. package/dist/routing/GoToDialog.d.ts.map +1 -1
  106. package/dist/routing/GoToDialog.js +2 -7
  107. package/dist/routing/GoToInput.d.ts +0 -3
  108. package/dist/routing/GoToInput.d.ts.map +1 -1
  109. package/dist/routing/GoToInput.js +8 -7
  110. package/dist/routing/Link.js +1 -1
  111. package/dist/routing/NavigationItem.d.ts +29 -7
  112. package/dist/routing/NavigationItem.d.ts.map +1 -1
  113. package/dist/routing/NavigationItem.js +22 -6
  114. package/dist/routing/hooks/hooks.next.js +1 -1
  115. package/dist/routing/hooks/hooks.vite.js +1 -1
  116. package/dist/routing/hooks/useNavigate.next.d.ts +1 -1
  117. package/dist/routing/hooks/useNavigate.next.d.ts.map +1 -1
  118. package/dist/routing/hooks/useNavigate.next.js +1 -7
  119. package/dist/routing/hooks/useNavigate.vite.d.ts +1 -1
  120. package/dist/routing/hooks/useNavigate.vite.d.ts.map +1 -1
  121. package/dist/routing/hooks/useNavigate.vite.js +1 -7
  122. package/dist/routing/hooks/useRedirectGuard.next.d.ts.map +1 -1
  123. package/dist/routing/hooks/useRedirectGuard.next.js +9 -8
  124. package/dist/routing/hooks/useRedirectGuard.vite.d.ts.map +1 -1
  125. package/dist/routing/hooks/useRedirectGuard.vite.js +9 -8
  126. package/dist/routing/hooks/useSearchParams.next.d.ts +18 -1
  127. package/dist/routing/hooks/useSearchParams.next.d.ts.map +1 -1
  128. package/dist/routing/hooks/useSearchParams.next.js +16 -0
  129. package/dist/routing/hooks/useSearchParams.vite.d.ts +16 -0
  130. package/dist/routing/hooks/useSearchParams.vite.d.ts.map +1 -1
  131. package/dist/routing/hooks/useSearchParams.vite.js +17 -1
  132. package/dist/routing/index.d.ts.map +1 -1
  133. package/dist/routing/index.js +2 -0
  134. package/dist/routing/useNavigation.d.ts +30 -0
  135. package/dist/routing/useNavigation.d.ts.map +1 -1
  136. package/dist/routing/useNavigation.js +40 -3
  137. package/dist/routing/useRouteDiscovery.d.ts +6 -17
  138. package/dist/routing/useRouteDiscovery.d.ts.map +1 -1
  139. package/dist/routing/useRouteDiscovery.js +16 -9
  140. package/dist/styles/index.css +284 -88
  141. package/dist/utils/index.d.ts +1 -0
  142. package/dist/utils/index.d.ts.map +1 -1
  143. package/dist/utils/index.js +1 -0
  144. package/dist/utils/sanitizeSvg.d.ts +13 -0
  145. package/dist/utils/sanitizeSvg.d.ts.map +1 -0
  146. package/dist/utils/sanitizeSvg.js +47 -0
  147. package/dist/utils/useBillingVisibility.d.ts.map +1 -1
  148. package/dist/utils/useBillingVisibility.js +0 -7
  149. package/dist/utils/useCrudSafe.d.ts +0 -2
  150. package/dist/utils/useCrudSafe.d.ts.map +1 -1
  151. package/dist/utils/useFormStoreSafe.d.ts +5 -16
  152. package/dist/utils/useFormStoreSafe.d.ts.map +1 -1
  153. package/dist/utils/useFormStoreSafe.js +6 -37
  154. package/dist/vite-routing/AppRoutes.d.ts +19 -8
  155. package/dist/vite-routing/AppRoutes.d.ts.map +1 -1
  156. package/dist/vite-routing/AppRoutes.js +0 -3
  157. package/dist/vite-routing/RootLayout.d.ts.map +1 -1
  158. package/dist/vite-routing/RootLayout.js +10 -15
  159. package/package.json +16 -12
  160. package/assets/fonts/fonts.css +0 -206
  161. package/dist/routing/Navigate.d.ts +0 -10
  162. package/dist/routing/Navigate.d.ts.map +0 -1
  163. package/dist/routing/Navigate.js +0 -10
package/dist/dndev.css CHANGED
@@ -125,6 +125,15 @@
125
125
  --popover: var(--card);
126
126
  --popover-foreground: var(--card-foreground);
127
127
 
128
+ /*
129
+ * Root card snapshot — computed once on :root from --card/--card-foreground,
130
+ * then inherited unchanged. Variant blocks (e.g. primary) override --card but
131
+ * never touch these, so data-variant='default' can reset --card back to the
132
+ * root value even when nested inside another variant.
133
+ */
134
+ --card-base: var(--card);
135
+ --card-foreground-base: var(--card-foreground);
136
+
128
137
  /* ===========================
129
138
  BORDER RADIUS - 3 VALUES ONLY
130
139
  =========================== */
@@ -220,6 +229,16 @@
220
229
  -6px 12px 24px -6px var(--shadow-color),
221
230
  -3px 6px 12px -3px var(--shadow-color-light);
222
231
 
232
+ /* Root shadow snapshots — same principle as --card-base (see above) */
233
+ --shadow-md-base: var(--shadow-md);
234
+ --shadow-xl-base: var(--shadow-xl);
235
+
236
+ /* Per-variant shadows — essences override these with different colors/shapes */
237
+ --shadow-primary: var(--shadow-md);
238
+ --shadow-primary-xl: var(--shadow-xl);
239
+ --shadow-secondary: var(--shadow-md);
240
+ --shadow-secondary-xl: var(--shadow-xl);
241
+
223
242
  /* Interactive shadows */
224
243
  --shadow-interactive: 0 0 0 3px
225
244
  color-mix(in oklab, var(--ring) 20%, transparent);
@@ -523,7 +542,6 @@ body {
523
542
  /* Reset and base styles */
524
543
 
525
544
  :root {
526
- font-family: var(--font-sans);
527
545
  -webkit-font-smoothing: antialiased;
528
546
  -moz-osx-font-smoothing: grayscale;
529
547
  text-rendering: optimizeLegibility;
@@ -537,9 +555,10 @@ body {
537
555
  box-sizing: border-box;
538
556
  }
539
557
 
540
- /* Set core body defaults */
558
+ /* Set core body defaults — font-family here so theme tokens on :root cascade cleanly */
541
559
 
542
560
  body {
561
+ font-family: var(--font-family, var(--font-sans));
543
562
  min-height: 100dvh;
544
563
  line-height: var(--line-height);
545
564
  text-rendering: optimizeSpeed;
@@ -614,17 +633,21 @@ h6 {
614
633
  color: var(--foreground);
615
634
  background: transparent;
616
635
  text-wrap: balance; /* Equalize line lengths, prevent orphans */
636
+ text-transform: var(--text-transform-heading, none);
637
+ letter-spacing: var(--letter-spacing-heading, normal);
617
638
  }
618
639
 
619
- h1 {
640
+ :is(h1, h2, h3, h4, h5, h6) {
620
641
  font-family: var(--font-headline);
642
+ }
643
+
644
+ h1 {
621
645
  font-size: var(--font-size-3xl);
622
646
  font-weight: var(--font-weight-bold);
623
647
  letter-spacing: -0.02em;
624
648
  }
625
649
 
626
650
  h2 {
627
- font-family: var(--font-headline);
628
651
  font-size: var(--font-size-2xl);
629
652
  font-weight: var(--font-weight-bold);
630
653
  letter-spacing: -0.01em;
@@ -1055,10 +1078,20 @@ em {
1055
1078
  * - accent: Highlighted/active state (--accent colors, sets context for children)
1056
1079
  * - destructive: Error/danger state (--destructive colors)
1057
1080
  *
1058
- * Variants only override --card and --card-foreground.
1081
+ * Variants override --card and --card-foreground.
1082
+ * Primary/secondary also override --shadow-md/--shadow-xl for per-variant shadows.
1083
+ * Default resets --card from --card-base (root snapshot) so nested default cards
1084
+ * inside other variants get the root card color, not the parent's.
1059
1085
  * Surface glow gradient is computed from --theme-is-dark flag and not affected by variants.
1060
1086
  */
1061
1087
 
1088
+ .dndev-surface[data-variant='default'] {
1089
+ --card: var(--card-base);
1090
+ --card-foreground: var(--card-foreground-base);
1091
+ --shadow-md: var(--shadow-md-base);
1092
+ --shadow-xl: var(--shadow-xl-base);
1093
+ }
1094
+
1062
1095
  .dndev-surface[data-variant='muted'] {
1063
1096
  --card: var(--muted);
1064
1097
  --card-foreground: var(--muted-foreground);
@@ -1068,12 +1101,16 @@ em {
1068
1101
  .dndev-surface[data-variant='primary'] {
1069
1102
  --card: var(--primary);
1070
1103
  --card-foreground: var(--primary-foreground);
1104
+ --shadow-md: var(--shadow-primary);
1105
+ --shadow-xl: var(--shadow-primary-xl);
1071
1106
  border-color: var(--primary);
1072
1107
  }
1073
1108
 
1074
1109
  .dndev-surface[data-variant='secondary'] {
1075
1110
  --card: var(--secondary);
1076
1111
  --card-foreground: var(--secondary-foreground);
1112
+ --shadow-md: var(--shadow-secondary);
1113
+ --shadow-xl: var(--shadow-secondary-xl);
1077
1114
  border-color: var(--secondary);
1078
1115
  }
1079
1116
 
@@ -1355,6 +1392,7 @@ em {
1355
1392
  border-radius: var(--radius-interactive);
1356
1393
  font-size: var(--font-size-base);
1357
1394
  font-weight: var(--font-weight-medium);
1395
+ text-transform: var(--text-transform-button, none);
1358
1396
  transition: var(--transition-fast);
1359
1397
  cursor: pointer;
1360
1398
  border: var(--border-hairline) solid transparent;
@@ -1645,6 +1683,7 @@ em {
1645
1683
  overflow: hidden;
1646
1684
  text-overflow: ellipsis;
1647
1685
  white-space: nowrap;
1686
+ text-transform: var(--text-transform-label, none);
1648
1687
  }
1649
1688
 
1650
1689
  /* Compact mode - always hide label */
@@ -1710,7 +1749,8 @@ em {
1710
1749
 
1711
1750
  .dndev-control[data-state='checked'],.dndev-control[data-state='on'],.dndev-control[data-pressed='true'] {
1712
1751
  background-color: var(--control-border);
1713
- color: var(--background);
1752
+ /* --card not --background: inverted text must be opaque (--background can be transparent in some themes) */
1753
+ color: var(--card);
1714
1754
  }
1715
1755
 
1716
1756
  /* CONTROL GROUP - Shared pattern for grouped controls (RadioGroup, Checkbox groups) */
@@ -2016,7 +2056,7 @@ em {
2016
2056
  height: var(--icon-md);
2017
2057
  border: 2px solid currentColor;
2018
2058
  border-radius: var(--radius-full);
2019
- border-right-color: transparent;
2059
+ border-inline-end-color: transparent;
2020
2060
  animation: spin 1s linear infinite;
2021
2061
  }
2022
2062
 
@@ -2356,7 +2396,6 @@ em {
2356
2396
  flex-shrink: 0;
2357
2397
  overflow: hidden;
2358
2398
  border-radius: var(--radius-full);
2359
- border: 1px solid var(--border);
2360
2399
  }
2361
2400
 
2362
2401
  .dndev-avatar-image {
@@ -2813,8 +2852,7 @@ em {
2813
2852
  .dndev-calendar-nav {
2814
2853
  position: absolute;
2815
2854
  top: 0;
2816
- left: 0;
2817
- right: 0;
2855
+ inset-inline: 0;
2818
2856
  height: var(--touch-target);
2819
2857
  pointer-events: none;
2820
2858
  z-index: 1;
@@ -2844,13 +2882,13 @@ em {
2844
2882
  }
2845
2883
 
2846
2884
  .dndev-calendar-nav-previous {
2847
- left: 0;
2885
+ inset-inline-start: 0;
2848
2886
  border-start-start-radius: 0;
2849
2887
  border-end-start-radius: 0;
2850
2888
  }
2851
2889
 
2852
2890
  .dndev-calendar-nav-next {
2853
- right: 0;
2891
+ inset-inline-end: 0;
2854
2892
  border-start-end-radius: 0;
2855
2893
  border-end-end-radius: 0;
2856
2894
  }
@@ -3096,13 +3134,10 @@ em {
3096
3134
  background: var(--muted);
3097
3135
  }
3098
3136
 
3099
- .dndev-cta[data-tone='elevated'] {
3100
- background: var(--background);
3101
- }
3102
-
3103
3137
  .dndev-cta[data-tone='contrast'] {
3104
3138
  background: var(--foreground);
3105
- color: var(--background);
3139
+ /* --card not --background: inverted text must be opaque (--background can be transparent in some themes) */
3140
+ color: var(--card);
3106
3141
  }
3107
3142
 
3108
3143
  .dndev-cta[data-tone='accent'] {
@@ -3157,7 +3192,8 @@ em {
3157
3192
 
3158
3193
  .dndev-cta-actions .dndev-interactive[data-variant='primary'] {
3159
3194
  background: var(--foreground);
3160
- color: var(--background);
3195
+ /* --card not --background: inverted text must be opaque */
3196
+ color: var(--card);
3161
3197
  border-color: var(--foreground);
3162
3198
  }
3163
3199
 
@@ -3175,7 +3211,8 @@ em {
3175
3211
 
3176
3212
  :is(.dndev-cta-actions .dndev-interactive[data-variant='outline']):hover {
3177
3213
  background: var(--foreground);
3178
- color: var(--background);
3214
+ /* --card not --background: inverted text must be opaque */
3215
+ color: var(--card);
3179
3216
  border-color: var(--foreground);
3180
3217
  }
3181
3218
 
@@ -3390,7 +3427,7 @@ em {
3390
3427
  justify-content: space-between;
3391
3428
  align-items: center;
3392
3429
  width: 100%;
3393
- text-align: left;
3430
+ text-align: start;
3394
3431
  }
3395
3432
 
3396
3433
  .dndev-combobox-trigger button {
@@ -3547,6 +3584,10 @@ em {
3547
3584
  flex-shrink: 0;
3548
3585
  }
3549
3586
 
3587
+ .dndev-combobox-create-btn:hover {
3588
+ opacity: 0.8;
3589
+ }
3590
+
3550
3591
  .dndev-combobox-open .dndev-input-with-trailing-icon .dndev-input-icon svg,
3551
3592
  .dndev-combobox-open .dndev-input-with-trailing-icon .dndev-input-icon > * {
3552
3593
  transform: rotate(180deg);
@@ -3732,8 +3773,9 @@ em {
3732
3773
  }
3733
3774
 
3734
3775
  .dndev-code-line-number {
3735
- line-height: inherit;
3736
- /* Inherit from parent */
3776
+ line-height: 1.5;
3777
+ min-height: 1.5em;
3778
+ font-size: inherit;
3737
3779
  }
3738
3780
 
3739
3781
  .dndev-code-code {
@@ -3753,7 +3795,21 @@ em {
3753
3795
  .dndev-code-code code {
3754
3796
  line-height: inherit;
3755
3797
  font-size: inherit;
3756
- /* Match parent font-size */
3798
+ }
3799
+
3800
+ /* Shiki wraps each line in <span class="line"> — force consistent sizing */
3801
+
3802
+ .dndev-code-code .line {
3803
+ display: block;
3804
+ line-height: 1.5;
3805
+ font-size: inherit;
3806
+ min-height: 1.5em;
3807
+ }
3808
+
3809
+ /* Empty Shiki lines still need height to stay in sync with line numbers */
3810
+
3811
+ .dndev-code-code .line:empty::after {
3812
+ content: '\00a0';
3757
3813
  }
3758
3814
 
3759
3815
  /* packages/components/src/atomic/Command/Command.css */
@@ -3917,7 +3973,7 @@ em {
3917
3973
  order: 3;
3918
3974
  font-size: var(--font-size-xs);
3919
3975
  color: var(--muted-foreground);
3920
- padding-left: calc(var(--icon-md) + var(--gap-sm));
3976
+ padding-inline-start: calc(var(--icon-md) + var(--gap-sm));
3921
3977
  }
3922
3978
 
3923
3979
  .dndev-command-favorite-button {
@@ -4203,6 +4259,54 @@ em {
4203
4259
  }
4204
4260
  }
4205
4261
 
4262
+ /* Responsive templateColumns via custom properties */
4263
+
4264
+ .dndev-grid-component[data-responsive-tpl='true'] {
4265
+ grid-template-columns: var(--grid-tpl-mobile);
4266
+ }
4267
+
4268
+ @media (min-width: 768px) {
4269
+ .dndev-grid-component[data-responsive-tpl='true'] {
4270
+ grid-template-columns: var(--grid-tpl-tablet);
4271
+ }
4272
+ }
4273
+
4274
+ @media (min-width: 1024px) {
4275
+ .dndev-grid-component[data-responsive-tpl='true'] {
4276
+ grid-template-columns: var(--grid-tpl-laptop);
4277
+ }
4278
+ }
4279
+
4280
+ @media (min-width: 1440px) {
4281
+ .dndev-grid-component[data-responsive-tpl='true'] {
4282
+ grid-template-columns: var(--grid-tpl-desktop);
4283
+ }
4284
+ }
4285
+
4286
+ /* Responsive grid areas via custom properties */
4287
+
4288
+ .dndev-grid-component[data-responsive-areas='true'] {
4289
+ grid-template-areas: var(--grid-areas-mobile);
4290
+ }
4291
+
4292
+ @media (min-width: 768px) {
4293
+ .dndev-grid-component[data-responsive-areas='true'] {
4294
+ grid-template-areas: var(--grid-areas-tablet);
4295
+ }
4296
+ }
4297
+
4298
+ @media (min-width: 1024px) {
4299
+ .dndev-grid-component[data-responsive-areas='true'] {
4300
+ grid-template-areas: var(--grid-areas-laptop);
4301
+ }
4302
+ }
4303
+
4304
+ @media (min-width: 1440px) {
4305
+ .dndev-grid-component[data-responsive-areas='true'] {
4306
+ grid-template-areas: var(--grid-areas-desktop);
4307
+ }
4308
+ }
4309
+
4206
4310
  /* Spacing from CSS variables */
4207
4311
 
4208
4312
  .dndev-grid-component[data-gap='none'] {
@@ -4516,7 +4620,8 @@ em {
4516
4620
  height: 44px;
4517
4621
  border: none;
4518
4622
  border-radius: var(--radius-full);
4519
- background-color: var(--background);
4623
+ /* --card not --background: surface must be opaque */
4624
+ background-color: var(--card);
4520
4625
  color: var(--foreground);
4521
4626
  cursor: pointer;
4522
4627
  opacity: 0;
@@ -5083,7 +5188,7 @@ input[type='number'] {
5083
5188
  }
5084
5189
 
5085
5190
  .dndev-nav-menu-content {
5086
- left: 0;
5191
+ inset-inline-start: 0;
5087
5192
  top: 0;
5088
5193
  width: 100%;
5089
5194
  }
@@ -5098,7 +5203,7 @@ input[type='number'] {
5098
5203
 
5099
5204
  .dndev-nav-menu-viewport-wrapper {
5100
5205
  position: absolute;
5101
- left: 0;
5206
+ inset-inline-start: 0;
5102
5207
  top: 100%;
5103
5208
  display: flex;
5104
5209
  justify-content: center;
@@ -5138,7 +5243,7 @@ input[type='number'] {
5138
5243
  height: var(--gap-sm);
5139
5244
  width: var(--gap-sm);
5140
5245
  transform: rotate(45deg);
5141
- border-top-left-radius: 2px;
5246
+ border-start-start-radius: 2px;
5142
5247
  background-color: var(--border);
5143
5248
  box-shadow: var(--shadow-md);
5144
5249
  }
@@ -5309,19 +5414,34 @@ input[type='number'] {
5309
5414
  }
5310
5415
 
5311
5416
  .dndev-pagination-size-label {
5312
- margin-right: var(--gap-sm);
5417
+ margin-inline-end: var(--gap-sm);
5313
5418
  }
5314
5419
 
5315
5420
  .dndev-pagination-nav {
5316
5421
  justify-content: flex-end;
5317
5422
  width: auto;
5318
- margin-left: auto;
5319
- /* Push to right */
5423
+ margin-inline-start: auto;
5424
+ /* Push to end */
5320
5425
  }
5321
5426
  }
5322
5427
 
5323
5428
  /* packages/components/src/atomic/Popover/Popover.css */
5324
5429
 
5430
+ /* Popover content width constraints and wrapping */
5431
+
5432
+ /* Targets Radix UI PopoverContent element */
5433
+
5434
+ [data-radix-popover-content],
5435
+ .dndev-floating[data-radix-popover-content] {
5436
+ max-width: min(90vw, 400px);
5437
+ width: -moz-max-content;
5438
+ width: max-content;
5439
+ min-width: 0;
5440
+ word-wrap: break-word;
5441
+ overflow-wrap: break-word;
5442
+ white-space: normal;
5443
+ }
5444
+
5325
5445
  /* packages/components/src/atomic/Progress/Progress.css */
5326
5446
 
5327
5447
  .dndev-progress {
@@ -5666,9 +5786,10 @@ input[type='number'] {
5666
5786
  /* Content wrapper: constrained + centered + padded */
5667
5787
 
5668
5788
  .dndev-section-content {
5669
- /* Respects PageContainer's --content-width */
5789
+ /* Respects PageContainer's --content-width (passed through breakthrough root) */
5670
5790
  max-width: var(--content-width);
5671
5791
  margin-inline: auto;
5792
+ min-width: 0; /* Allow shrinking so max-width wins when content would force wider */
5672
5793
  /* Padding with section background - responsive to match PageContainer */
5673
5794
  padding-inline: var(--gap-md);
5674
5795
  padding-top: var(--gap-lg);
@@ -5916,6 +6037,9 @@ input[type='number'] {
5916
6037
 
5917
6038
  /* Sheet positioning by side - SPATIAL METAPHOR */
5918
6039
 
6040
+ /* Physical properties intentional: Sheet anchors to viewport edges regardless of text direction.
6041
+ Logical inset-inline would incorrectly swap sides in RTL for left/right sheet variants. */
6042
+
5919
6043
  /* RIGHT / LEFT (Desktop Panels) */
5920
6044
 
5921
6045
  .dndev-sheet-content[data-side='right'],.dndev-sheet-content[data-side='left'] {
@@ -5956,8 +6080,7 @@ input[type='number'] {
5956
6080
  max-height: 92dvh;
5957
6081
  /* Never touch top edge */
5958
6082
  width: 100%;
5959
- margin-left: auto;
5960
- margin-right: auto;
6083
+ margin-inline: auto;
5961
6084
 
5962
6085
  /* On larger screens, constrain width */
5963
6086
  }
@@ -5976,16 +6099,16 @@ input[type='number'] {
5976
6099
  top: 0;
5977
6100
  border-bottom: var(--border-hairline) solid var(--line-1);
5978
6101
  /* Rounded bottom corners only */
5979
- border-bottom-left-radius: var(--radius-lg);
5980
- border-bottom-right-radius: var(--radius-lg);
6102
+ border-end-start-radius: var(--radius-lg);
6103
+ border-end-end-radius: var(--radius-lg);
5981
6104
  }
5982
6105
 
5983
6106
  .dndev-sheet-content[data-side='bottom'] {
5984
6107
  bottom: 0;
5985
6108
  border-top: var(--border-hairline) solid var(--line-1);
5986
6109
  /* Rounded top corners only */
5987
- border-top-left-radius: var(--radius-lg);
5988
- border-top-right-radius: var(--radius-lg);
6110
+ border-start-start-radius: var(--radius-lg);
6111
+ border-start-end-radius: var(--radius-lg);
5989
6112
  }
5990
6113
 
5991
6114
  /* DRAG HANDLE PILL - Visual affordance for draggable sheets */
@@ -6304,7 +6427,8 @@ input[type='number'] {
6304
6427
  min-width: 1.25rem;
6305
6428
  min-height: 1.25rem;
6306
6429
  border-radius: var(--radius-full);
6307
- background-color: var(--background);
6430
+ /* --card not --background: surface must be opaque (--background can be transparent in some themes) */
6431
+ background-color: var(--card);
6308
6432
  border: 2px solid var(--primary);
6309
6433
  box-shadow: var(--shadow-md);
6310
6434
  transition: all var(--dur-fast) var(--ease-in-out);
@@ -6375,7 +6499,8 @@ input[type='number'] {
6375
6499
  font-size: var(--font-size-xs);
6376
6500
  font-weight: var(--font-weight-medium);
6377
6501
  color: var(--foreground);
6378
- background-color: var(--background);
6502
+ /* --card not --background: surface must be opaque */
6503
+ background-color: var(--card);
6379
6504
  padding: 0.125rem 0.375rem;
6380
6505
  border-radius: var(--radius-interactive);
6381
6506
  box-shadow: var(--shadow-sm);
@@ -6399,7 +6524,7 @@ input[type='number'] {
6399
6524
  height: 1em;
6400
6525
  border: 2px solid transparent;
6401
6526
  border-top-color: var(--primary);
6402
- border-right-color: var(--primary);
6527
+ border-inline-end-color: var(--primary);
6403
6528
  border-radius: 50%;
6404
6529
  animation: spin 0.6s linear infinite;
6405
6530
  display: inline-block;
@@ -6409,42 +6534,42 @@ input[type='number'] {
6409
6534
 
6410
6535
  .dndev-spinner[data-variant='default'] {
6411
6536
  border-top-color: var(--foreground);
6412
- border-right-color: var(--foreground);
6537
+ border-inline-end-color: var(--foreground);
6413
6538
  }
6414
6539
 
6415
6540
  .dndev-spinner[data-variant='muted'] {
6416
6541
  border-top-color: var(--muted-foreground);
6417
- border-right-color: var(--muted-foreground);
6542
+ border-inline-end-color: var(--muted-foreground);
6418
6543
  }
6419
6544
 
6420
6545
  .dndev-spinner[data-variant='primary'] {
6421
6546
  border-top-color: var(--primary);
6422
- border-right-color: var(--primary);
6547
+ border-inline-end-color: var(--primary);
6423
6548
  }
6424
6549
 
6425
6550
  .dndev-spinner[data-variant='secondary'] {
6426
6551
  border-top-color: var(--secondary);
6427
- border-right-color: var(--secondary);
6552
+ border-inline-end-color: var(--secondary);
6428
6553
  }
6429
6554
 
6430
6555
  .dndev-spinner[data-variant='accent'] {
6431
6556
  border-top-color: var(--accent);
6432
- border-right-color: var(--accent);
6557
+ border-inline-end-color: var(--accent);
6433
6558
  }
6434
6559
 
6435
6560
  .dndev-spinner[data-variant='success'] {
6436
6561
  border-top-color: var(--success);
6437
- border-right-color: var(--success);
6562
+ border-inline-end-color: var(--success);
6438
6563
  }
6439
6564
 
6440
6565
  .dndev-spinner[data-variant='warning'] {
6441
6566
  border-top-color: var(--warning);
6442
- border-right-color: var(--warning);
6567
+ border-inline-end-color: var(--warning);
6443
6568
  }
6444
6569
 
6445
6570
  .dndev-spinner[data-variant='destructive'] {
6446
6571
  border-top-color: var(--destructive);
6447
- border-right-color: var(--destructive);
6572
+ border-inline-end-color: var(--destructive);
6448
6573
  }
6449
6574
 
6450
6575
  /* Overlay variant - full-page loading */
@@ -6728,6 +6853,8 @@ input[type='number'] {
6728
6853
  display: flex;
6729
6854
  align-items: center;
6730
6855
  justify-content: space-between;
6856
+ gap: var(--gap-md);
6857
+ margin-top: var(--gap-md);
6731
6858
  }
6732
6859
 
6733
6860
  .dndev-stepper-info {
@@ -7167,19 +7294,20 @@ input[type='number'] {
7167
7294
  word-break: break-word;
7168
7295
  border: var(--border-hairline) solid var(--line-2); /* Show clickable area */
7169
7296
 
7170
- /* Fallback (no variant): inactive = primary, active = foreground/background */
7297
+ /* Fallback (no variant): inactive = primary, active = foreground/card */
7171
7298
  background-color: var(--primary);
7172
7299
  color: var(--primary-foreground);
7173
7300
  }
7174
7301
 
7175
7302
  .dndev-interactive[data-role='tab-trigger'][data-state='active'] {
7176
- background-color: var(--background);
7303
+ /* --card not --background: active tab surface must be opaque (--background can be transparent in some themes) */
7304
+ background-color: var(--card);
7177
7305
  color: var(--foreground);
7178
7306
  box-shadow: var(--shadow-sm);
7179
7307
  border-color: var(--primary);
7180
7308
  }
7181
7309
 
7182
- /* Default/Primary variant: inactive = primary, active = foreground/background */
7310
+ /* Default/Primary variant: inactive = primary, active = foreground/card */
7183
7311
 
7184
7312
  .dndev-interactive[data-role='tab-trigger'][data-variant='default'],.dndev-interactive[data-role='tab-trigger'][data-variant='primary'] {
7185
7313
  background-color: var(--primary);
@@ -7187,13 +7315,14 @@ input[type='number'] {
7187
7315
  }
7188
7316
 
7189
7317
  [data-state='active']:is(.dndev-interactive[data-role='tab-trigger'][data-variant='default'],.dndev-interactive[data-role='tab-trigger'][data-variant='primary']) {
7190
- background-color: var(--background);
7318
+ /* --card not --background: active tab surface must be opaque */
7319
+ background-color: var(--card);
7191
7320
  color: var(--foreground);
7192
7321
  box-shadow: var(--shadow-sm);
7193
7322
  border-color: var(--primary);
7194
7323
  }
7195
7324
 
7196
- /* Secondary variant: inactive = secondary, active = foreground/background */
7325
+ /* Secondary variant: inactive = secondary, active = foreground/card */
7197
7326
 
7198
7327
  .dndev-interactive[data-role='tab-trigger'][data-variant='secondary'] {
7199
7328
  background-color: var(--secondary);
@@ -7201,13 +7330,14 @@ input[type='number'] {
7201
7330
  }
7202
7331
 
7203
7332
  .dndev-interactive[data-role='tab-trigger'][data-variant='secondary'][data-state='active'] {
7204
- background-color: var(--background);
7333
+ /* --card not --background: active tab surface must be opaque */
7334
+ background-color: var(--card);
7205
7335
  color: var(--foreground);
7206
7336
  box-shadow: var(--shadow-sm);
7207
7337
  border-color: var(--secondary);
7208
7338
  }
7209
7339
 
7210
- /* Accent variant: inactive = accent, active = foreground/background */
7340
+ /* Accent variant: inactive = accent, active = foreground/card */
7211
7341
 
7212
7342
  .dndev-interactive[data-role='tab-trigger'][data-variant='accent'] {
7213
7343
  background-color: var(--accent);
@@ -7215,7 +7345,8 @@ input[type='number'] {
7215
7345
  }
7216
7346
 
7217
7347
  .dndev-interactive[data-role='tab-trigger'][data-variant='accent'][data-state='active'] {
7218
- background-color: var(--background);
7348
+ /* --card not --background: active tab surface must be opaque */
7349
+ background-color: var(--card);
7219
7350
  color: var(--foreground);
7220
7351
  box-shadow: var(--shadow-sm);
7221
7352
  border-color: var(--accent);
@@ -7235,7 +7366,7 @@ input[type='number'] {
7235
7366
  border-color: var(--primary);
7236
7367
  }
7237
7368
 
7238
- /* Warning variant: inactive = warning, active = foreground/background */
7369
+ /* Warning variant: inactive = warning, active = foreground/card */
7239
7370
 
7240
7371
  .dndev-interactive[data-role='tab-trigger'][data-variant='warning'] {
7241
7372
  background-color: var(--warning);
@@ -7243,13 +7374,14 @@ input[type='number'] {
7243
7374
  }
7244
7375
 
7245
7376
  .dndev-interactive[data-role='tab-trigger'][data-variant='warning'][data-state='active'] {
7246
- background-color: var(--background);
7377
+ /* --card not --background: active tab surface must be opaque */
7378
+ background-color: var(--card);
7247
7379
  color: var(--foreground);
7248
7380
  box-shadow: var(--shadow-sm);
7249
7381
  border-color: var(--warning);
7250
7382
  }
7251
7383
 
7252
- /* Success variant: inactive = success, active = foreground/background */
7384
+ /* Success variant: inactive = success, active = foreground/card */
7253
7385
 
7254
7386
  .dndev-interactive[data-role='tab-trigger'][data-variant='success'] {
7255
7387
  background-color: var(--success);
@@ -7257,13 +7389,14 @@ input[type='number'] {
7257
7389
  }
7258
7390
 
7259
7391
  .dndev-interactive[data-role='tab-trigger'][data-variant='success'][data-state='active'] {
7260
- background-color: var(--background);
7392
+ /* --card not --background: active tab surface must be opaque */
7393
+ background-color: var(--card);
7261
7394
  color: var(--foreground);
7262
7395
  box-shadow: var(--shadow-sm);
7263
7396
  border-color: var(--success);
7264
7397
  }
7265
7398
 
7266
- /* Destructive variant: inactive = destructive, active = foreground/background */
7399
+ /* Destructive variant: inactive = destructive, active = foreground/card */
7267
7400
 
7268
7401
  .dndev-interactive[data-role='tab-trigger'][data-variant='destructive'] {
7269
7402
  background-color: var(--destructive);
@@ -7271,7 +7404,8 @@ input[type='number'] {
7271
7404
  }
7272
7405
 
7273
7406
  .dndev-interactive[data-role='tab-trigger'][data-variant='destructive'][data-state='active'] {
7274
- background-color: var(--background);
7407
+ /* --card not --background: active tab surface must be opaque */
7408
+ background-color: var(--card);
7275
7409
  color: var(--foreground);
7276
7410
  box-shadow: var(--shadow-sm);
7277
7411
  border-color: var(--destructive);
@@ -7318,7 +7452,7 @@ input[type='number'] {
7318
7452
  align-items: center;
7319
7453
  justify-content: center;
7320
7454
  padding: 0;
7321
- margin-left: 2px;
7455
+ margin-inline-start: 2px;
7322
7456
  background: transparent;
7323
7457
  border: none;
7324
7458
  cursor: pointer;
@@ -7481,7 +7615,11 @@ input[type='number'] {
7481
7615
  border-radius: var(--radius-interactive);
7482
7616
  }
7483
7617
 
7484
- /* Level overrides */
7618
+ /* Level overrides — headline font for all heading levels */
7619
+
7620
+ .dndev-text-base[data-level^='h'] {
7621
+ font-family: var(--font-headline);
7622
+ }
7485
7623
 
7486
7624
  .dndev-text-base[data-level='h1'] {
7487
7625
  font-size: var(--font-size-3xl);
@@ -7831,7 +7969,8 @@ input[type='number'] {
7831
7969
  z-index: var(--z-tooltip);
7832
7970
  /* Inverted colors for high contrast - industry standard (Vercel, GitHub, Stripe) */
7833
7971
  background: var(--foreground);
7834
- color: var(--background);
7972
+ /* --card not --background: inverted text must be opaque (--background can be transparent in some themes) */
7973
+ color: var(--card);
7835
7974
  box-shadow: var(--shadow-lg); /* Stronger shadow for visibility */
7836
7975
  padding: 0.375rem 0.5rem; /* 6px 8px - industry standard */
7837
7976
  font-size: var(--font-size-xs); /* 12px */
@@ -8471,6 +8610,12 @@ input[type='number'] {
8471
8610
 
8472
8611
  /* Tone backgrounds - apply directly to section element (like CallToAction) */
8473
8612
 
8613
+ /* Ghost (default) - transparent, allows background images to show through */
8614
+
8615
+ .dndev-section-full-width[data-tone='ghost'],.dndev-section-full-width:not([data-tone]) {
8616
+ background: transparent;
8617
+ }
8618
+
8474
8619
  .dndev-section-full-width[data-tone='base'] {
8475
8620
  background: var(--background);
8476
8621
  }
@@ -8479,16 +8624,37 @@ input[type='number'] {
8479
8624
  background: var(--muted);
8480
8625
  }
8481
8626
 
8482
- .dndev-section-full-width[data-tone='elevated'] {
8627
+ .dndev-section-full-width[data-tone='contrast'] {
8483
8628
  background: var(--background);
8629
+ color: var(--foreground);
8484
8630
  }
8485
8631
 
8486
- .dndev-section-full-width[data-tone='contrast'] {
8632
+ .dndev-section-full-width[data-tone='accent'] {
8633
+ background: color-mix(in oklab, var(--accent) 5%, transparent);
8634
+ }
8635
+
8636
+ /* HeroSection tone backgrounds - same system as Section/CallToAction */
8637
+
8638
+ /* Ghost (default) - transparent, allows background images to show through */
8639
+
8640
+ .dndev-hero-section[data-tone='ghost'],.dndev-hero-section:not([data-tone]) {
8641
+ background: transparent;
8642
+ }
8643
+
8644
+ .dndev-hero-section[data-tone='base'] {
8645
+ background: var(--background);
8646
+ }
8647
+
8648
+ .dndev-hero-section[data-tone='muted'] {
8649
+ background: var(--muted);
8650
+ }
8651
+
8652
+ .dndev-hero-section[data-tone='contrast'] {
8487
8653
  background: var(--background);
8488
8654
  color: var(--foreground);
8489
8655
  }
8490
8656
 
8491
- .dndev-section-full-width[data-tone='accent'] {
8657
+ .dndev-hero-section[data-tone='accent'] {
8492
8658
  background: color-mix(in oklab, var(--accent) 5%, transparent);
8493
8659
  }
8494
8660
 
@@ -8701,10 +8867,7 @@ h4[data-variant='code'] {
8701
8867
  }
8702
8868
 
8703
8869
  .dndev-inset-0 {
8704
- top: 0;
8705
- right: 0;
8706
- bottom: 0;
8707
- left: 0;
8870
+ inset: 0;
8708
8871
  }
8709
8872
 
8710
8873
  .dndev-inset-y-0 {
@@ -8712,8 +8875,8 @@ h4[data-variant='code'] {
8712
8875
  bottom: 0;
8713
8876
  }
8714
8877
 
8715
- .dndev-left-0 {
8716
- left: 0;
8878
+ .dndev-inset-inline-start-0 {
8879
+ inset-inline-start: 0;
8717
8880
  }
8718
8881
 
8719
8882
  .dndev-min-h-0 {
@@ -9330,9 +9493,12 @@ main[role='main'][data-routing-animation='none'] {
9330
9493
  /* Desktop: opt-in via data-footer-mode="scroll" */
9331
9494
 
9332
9495
  .dndev-layout[data-footer-mode='scroll'] {
9333
- overflow-y: auto;
9496
+ height: auto;
9497
+ min-height: 100dvh;
9498
+ max-height: none;
9499
+ overflow-y: visible;
9334
9500
  overflow-x: hidden;
9335
- grid-template-rows: var(--header-height) 1fr auto;
9501
+ grid-template-rows: var(--header-height) minmax(calc(100dvh - var(--header-height)), auto) auto;
9336
9502
  }
9337
9503
 
9338
9504
  .dndev-layout[data-footer-mode='scroll'] header[role='banner'] {
@@ -9350,11 +9516,13 @@ main[role='main'][data-routing-animation='none'] {
9350
9516
  .dndev-layout[data-footer-mode='scroll'] main[role='main'] {
9351
9517
  overflow-y: visible;
9352
9518
  overflow-x: hidden;
9519
+ contain: style;
9353
9520
  }
9354
9521
 
9355
9522
  .dndev-layout[data-footer-mode='scroll'] footer[role='contentinfo'] {
9356
9523
  grid-column: 2 / -1;
9357
9524
  height: auto;
9525
+ margin-top: var(--gap-lg);
9358
9526
  }
9359
9527
 
9360
9528
  :is(.dndev-layout[data-footer-mode='scroll'] footer[role='contentinfo']) > * {
@@ -9366,9 +9534,12 @@ main[role='main'][data-routing-animation='none'] {
9366
9534
 
9367
9535
  @media (width <=1023px) {
9368
9536
  .dndev-layout {
9369
- overflow-y: auto;
9537
+ height: auto;
9538
+ min-height: 100dvh;
9539
+ max-height: none;
9540
+ overflow-y: visible;
9370
9541
  overflow-x: hidden;
9371
- grid-template-rows: var(--header-height) 1fr auto;
9542
+ grid-template-rows: var(--header-height) minmax(calc(100dvh - var(--header-height)), auto) auto;
9372
9543
  }
9373
9544
 
9374
9545
  .dndev-layout header[role='banner'] {
@@ -9379,10 +9550,12 @@ main[role='main'][data-routing-animation='none'] {
9379
9550
  .dndev-layout main[role='main'] {
9380
9551
  overflow-y: visible;
9381
9552
  overflow-x: hidden;
9553
+ contain: style;
9382
9554
  }
9383
9555
 
9384
9556
  .dndev-layout footer[role='contentinfo'] {
9385
9557
  height: auto;
9558
+ margin-top: var(--gap-lg);
9386
9559
  }
9387
9560
 
9388
9561
  :is(.dndev-layout footer[role='contentinfo']) > * {
@@ -9416,6 +9589,7 @@ header[role='banner'] {
9416
9589
  position: relative;
9417
9590
  z-index: var(--z-header);
9418
9591
  contain: layout style;
9592
+ overflow: visible; /* Allow absolutely positioned children's shadows to extend beyond bounds */
9419
9593
 
9420
9594
  /* Container queries support for responsive components */
9421
9595
  container-type: inline-size;
@@ -9429,7 +9603,6 @@ header[role='banner'] {
9429
9603
  padding-inline-start: var(--content-padding);
9430
9604
  padding-inline-end: var(--content-padding);
9431
9605
 
9432
- /* Theme-aware styling - 100% controlled by theme system */
9433
9606
  background: var(--background);
9434
9607
  border-bottom: var(--border-hairline) solid var(--border);
9435
9608
 
@@ -9451,7 +9624,11 @@ header[role='banner'] {
9451
9624
  height: 100%;
9452
9625
  max-height: 100%;
9453
9626
  gap: var(--gap-sm);
9454
- overflow: hidden;
9627
+ overflow: visible; /* Allow shadows to show */
9628
+ /* Theme-controlled padding for shadows that extend beyond bounds (e.g., brutalist hard-offset shadows) */
9629
+ /* Shadows extend rightward, so only end padding needed */
9630
+ /* Defaults to 0 for themes with diffused shadows that don't extend beyond bounds */
9631
+ padding-inline-end: var(--header-shadow-padding, 0);
9455
9632
  }
9456
9633
 
9457
9634
  .header-end {
@@ -9463,7 +9640,11 @@ header[role='banner'] {
9463
9640
  max-height: 100%;
9464
9641
  margin-inline-start: auto;
9465
9642
  gap: var(--gap-sm);
9466
- overflow: hidden;
9643
+ overflow: visible; /* Allow shadows to show */
9644
+ /* Theme-controlled padding for shadows that extend beyond bounds (e.g., brutalist hard-offset shadows) */
9645
+ /* Shadows extend rightward, so only end padding needed */
9646
+ /* Defaults to 0 for themes with diffused shadows that don't extend beyond bounds */
9647
+ padding-inline-end: var(--header-shadow-padding, 0);
9467
9648
  }
9468
9649
 
9469
9650
  /* Viewport-centered center content - absolutely positioned overlay */
@@ -9476,6 +9657,10 @@ header[role='banner'] .header-center {
9476
9657
  width: -moz-fit-content;
9477
9658
  width: fit-content;
9478
9659
  z-index: 1;
9660
+ /* Theme-controlled padding for shadows that extend beyond bounds (e.g., brutalist hard-offset shadows) */
9661
+ /* Shadows extend rightward, so only end padding needed */
9662
+ /* Defaults to 0 for themes with diffused shadows that don't extend beyond bounds */
9663
+ padding-inline-end: var(--header-shadow-padding, 0);
9479
9664
  }
9480
9665
 
9481
9666
  /* ===========================
@@ -9766,7 +9951,6 @@ footer[role='contentinfo'] {
9766
9951
  min-height: var(--footer-height);
9767
9952
  z-index: var(--z-footer);
9768
9953
 
9769
- /* Theme-aware styling - 100% controlled by theme system */
9770
9954
  background: var(--background);
9771
9955
  border-top: var(--border-hairline) solid var(--border);
9772
9956
 
@@ -9829,8 +10013,7 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
9829
10013
 
9830
10014
  .merged-bar {
9831
10015
  position: fixed;
9832
- left: 0;
9833
- right: 0;
10016
+ inset-inline: 0;
9834
10017
  display: none;
9835
10018
  /* Hidden by default - CSS shows on mobile */
9836
10019
  align-items: center;
@@ -9839,8 +10022,8 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
9839
10022
  contain: layout style;
9840
10023
 
9841
10024
  /* Safe area padding for notched devices */
9842
- padding-left: max(var(--content-padding), env(safe-area-inset-left));
9843
- padding-right: max(var(--content-padding), env(safe-area-inset-right));
10025
+ padding-inline-start: max(var(--content-padding), env(safe-area-inset-left));
10026
+ padding-inline-end: max(var(--content-padding), env(safe-area-inset-right));
9844
10027
  }
9845
10028
 
9846
10029
  .merged-bar[data-position='top'] {
@@ -10185,6 +10368,7 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10185
10368
  .dndev-container {
10186
10369
  width: 100%;
10187
10370
  max-width: var(--content-width);
10371
+ min-width: 0; /* Allow shrinking in flex so max-width wins */
10188
10372
  flex: 1 1 auto;
10189
10373
 
10190
10374
  /* First child spacing when enabled */
@@ -10300,7 +10484,6 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10300
10484
 
10301
10485
  .dndev-container > .dndev-section-full-width,
10302
10486
  .dndev-container > .dndev-cta,
10303
- .dndev-container > .dndev-hero-section,
10304
10487
  .dndev-container > .dndev-tech-bento {
10305
10488
  /* Break out of PageContainer padding and max-width constraint */
10306
10489
  /* Account for sidebar: --sidebar-width is 0px for presets without sidebar */
@@ -10310,6 +10493,19 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10310
10493
  /* Eat gap BEFORE section only */
10311
10494
  margin-top: calc(-1 * var(--gap-lg));
10312
10495
  margin-bottom: 0;
10496
+ /* Pass through so inner content (e.g. .dndev-section-content) can use it */
10497
+ --content-width: var(--max-content-width, 100%);
10498
+ }
10499
+
10500
+ /* HeroSection: only breakthrough when it has fullHeight (needs full viewport background) */
10501
+
10502
+ .dndev-container > .dndev-hero-section[style*='height'] {
10503
+ width: calc(100dvw - var(--sidebar-width));
10504
+ max-width: calc(100dvw - var(--sidebar-width));
10505
+ margin-inline: calc((-50dvw + var(--sidebar-width) / 2) + 50%);
10506
+ margin-top: calc(-1 * var(--gap-lg));
10507
+ margin-bottom: 0;
10508
+ --content-width: var(--max-content-width, 100%);
10313
10509
  }
10314
10510
 
10315
10511
  .footer-mobile-button:hover {
@@ -10507,224 +10703,853 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10507
10703
  display: inline;
10508
10704
  }
10509
10705
 
10510
- /* 2. Fonts */
10706
+ /* 2. Fonts from @fontsource (bundled; no external fetch, no public/fonts required) */
10511
10707
 
10512
- /* packages/ui/assets/fonts/fonts.css */
10708
+ /* inter-cyrillic-ext-300-normal */
10513
10709
 
10514
10710
  @font-face {
10515
- font-family: Roboto;
10711
+ font-family: 'Inter';
10516
10712
  font-style: normal;
10517
- font-weight: 400;
10518
10713
  font-display: swap;
10519
- src: url('/fonts/Roboto-400-latin.woff2') format('woff2');
10520
- unicode-range: U+0000-00FF; /* Basic Latin - loads first for performance */
10714
+ font-weight: 300;
10715
+ src: url(./files/inter-cyrillic-ext-300-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-300-normal.woff) format('woff');
10716
+ unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
10521
10717
  }
10522
10718
 
10719
+ /* inter-cyrillic-300-normal */
10720
+
10523
10721
  @font-face {
10524
- font-family: Roboto;
10722
+ font-family: 'Inter';
10525
10723
  font-style: normal;
10526
- font-weight: 700;
10527
10724
  font-display: swap;
10528
- src: url('/fonts/Roboto-700-latin.woff2') format('woff2');
10529
- unicode-range: U+0000-00FF; /* Basic Latin - loads first for performance */
10725
+ font-weight: 300;
10726
+ src: url(./files/inter-cyrillic-300-normal.woff2) format('woff2'), url(./files/inter-cyrillic-300-normal.woff) format('woff');
10727
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
10530
10728
  }
10531
10729
 
10532
- /* ✅ CRITICAL: Extended character sets load on-demand when needed */
10730
+ /* inter-greek-ext-300-normal */
10731
+
10732
+ @font-face {
10733
+ font-family: 'Inter';
10734
+ font-style: normal;
10735
+ font-display: swap;
10736
+ font-weight: 300;
10737
+ src: url(./files/inter-greek-ext-300-normal.woff2) format('woff2'), url(./files/inter-greek-ext-300-normal.woff) format('woff');
10738
+ unicode-range: U+1F00-1FFF;
10739
+ }
10533
10740
 
10534
- /* These load automatically when browser encounters characters in these ranges */
10741
+ /* inter-greek-300-normal */
10535
10742
 
10536
10743
  @font-face {
10537
- font-family: Roboto;
10744
+ font-family: 'Inter';
10538
10745
  font-style: normal;
10539
- font-weight: 400;
10540
10746
  font-display: swap;
10541
- src: url('/fonts/Roboto-400-latin-ext.woff2') format('woff2');
10542
- unicode-range:
10543
- U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113,
10544
- U+2C60-2C7F, U+A720-A7FF;
10747
+ font-weight: 300;
10748
+ src: url(./files/inter-greek-300-normal.woff2) format('woff2'), url(./files/inter-greek-300-normal.woff) format('woff');
10749
+ unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
10545
10750
  }
10546
10751
 
10752
+ /* inter-vietnamese-300-normal */
10753
+
10547
10754
  @font-face {
10548
- font-family: Roboto;
10755
+ font-family: 'Inter';
10549
10756
  font-style: normal;
10550
- font-weight: 700;
10551
10757
  font-display: swap;
10552
- src: url('/fonts/Roboto-700-latin-ext.woff2') format('woff2');
10553
- unicode-range:
10554
- U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113,
10555
- U+2C60-2C7F, U+A720-A7FF;
10758
+ font-weight: 300;
10759
+ src: url(./files/inter-vietnamese-300-normal.woff2) format('woff2'), url(./files/inter-vietnamese-300-normal.woff) format('woff');
10760
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
10556
10761
  }
10557
10762
 
10558
- /* Cyrillic */
10763
+ /* inter-latin-ext-300-normal */
10559
10764
 
10560
10765
  @font-face {
10561
- font-family: Roboto;
10766
+ font-family: 'Inter';
10562
10767
  font-style: normal;
10563
- font-weight: 400;
10564
10768
  font-display: swap;
10565
- src: url('/fonts/Roboto-400-cyrillic.woff2') format('woff2');
10566
- unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
10769
+ font-weight: 300;
10770
+ src: url(./files/inter-latin-ext-300-normal.woff2) format('woff2'), url(./files/inter-latin-ext-300-normal.woff) format('woff');
10771
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
10567
10772
  }
10568
10773
 
10774
+ /* inter-latin-300-normal */
10775
+
10569
10776
  @font-face {
10570
- font-family: Roboto;
10777
+ font-family: 'Inter';
10571
10778
  font-style: normal;
10572
- font-weight: 700;
10573
10779
  font-display: swap;
10574
- src: url('/fonts/Roboto-700-cyrillic.woff2') format('woff2');
10575
- unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
10780
+ font-weight: 300;
10781
+ src: url(./files/inter-latin-300-normal.woff2) format('woff2'), url(./files/inter-latin-300-normal.woff) format('woff');
10782
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
10576
10783
  }
10577
10784
 
10578
- /* Cyrillic Extended */
10785
+ /* inter-cyrillic-ext-400-normal */
10579
10786
 
10580
10787
  @font-face {
10581
- font-family: Roboto;
10788
+ font-family: 'Inter';
10582
10789
  font-style: normal;
10790
+ font-display: swap;
10583
10791
  font-weight: 400;
10792
+ src: url(./files/inter-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-400-normal.woff) format('woff');
10793
+ unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
10794
+ }
10795
+
10796
+ /* inter-cyrillic-400-normal */
10797
+
10798
+ @font-face {
10799
+ font-family: 'Inter';
10800
+ font-style: normal;
10584
10801
  font-display: swap;
10585
- src: url('/fonts/Roboto-400-cyrillic-ext.woff2') format('woff2');
10586
- unicode-range:
10587
- U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
10802
+ font-weight: 400;
10803
+ src: url(./files/inter-cyrillic-400-normal.woff2) format('woff2'), url(./files/inter-cyrillic-400-normal.woff) format('woff');
10804
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
10588
10805
  }
10589
10806
 
10807
+ /* inter-greek-ext-400-normal */
10808
+
10590
10809
  @font-face {
10591
- font-family: Roboto;
10810
+ font-family: 'Inter';
10592
10811
  font-style: normal;
10593
- font-weight: 700;
10594
10812
  font-display: swap;
10595
- src: url('/fonts/Roboto-700-cyrillic-ext.woff2') format('woff2');
10596
- unicode-range:
10597
- U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
10813
+ font-weight: 400;
10814
+ src: url(./files/inter-greek-ext-400-normal.woff2) format('woff2'), url(./files/inter-greek-ext-400-normal.woff) format('woff');
10815
+ unicode-range: U+1F00-1FFF;
10598
10816
  }
10599
10817
 
10600
- /* Greek */
10818
+ /* inter-greek-400-normal */
10601
10819
 
10602
10820
  @font-face {
10603
- font-family: Roboto;
10821
+ font-family: 'Inter';
10604
10822
  font-style: normal;
10823
+ font-display: swap;
10605
10824
  font-weight: 400;
10825
+ src: url(./files/inter-greek-400-normal.woff2) format('woff2'), url(./files/inter-greek-400-normal.woff) format('woff');
10826
+ unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
10827
+ }
10828
+
10829
+ /* inter-vietnamese-400-normal */
10830
+
10831
+ @font-face {
10832
+ font-family: 'Inter';
10833
+ font-style: normal;
10606
10834
  font-display: swap;
10607
- src: url('/fonts/Roboto-400-greek.woff2') format('woff2');
10608
- unicode-range: U+0370-03FF;
10835
+ font-weight: 400;
10836
+ src: url(./files/inter-vietnamese-400-normal.woff2) format('woff2'), url(./files/inter-vietnamese-400-normal.woff) format('woff');
10837
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
10609
10838
  }
10610
10839
 
10840
+ /* inter-latin-ext-400-normal */
10841
+
10611
10842
  @font-face {
10612
- font-family: Roboto;
10843
+ font-family: 'Inter';
10613
10844
  font-style: normal;
10614
- font-weight: 700;
10615
10845
  font-display: swap;
10616
- src: url('/fonts/Roboto-700-greek.woff2') format('woff2');
10617
- unicode-range: U+0370-03FF;
10846
+ font-weight: 400;
10847
+ src: url(./files/inter-latin-ext-400-normal.woff2) format('woff2'), url(./files/inter-latin-ext-400-normal.woff) format('woff');
10848
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
10618
10849
  }
10619
10850
 
10620
- /* Greek Extended */
10851
+ /* inter-latin-400-normal */
10621
10852
 
10622
10853
  @font-face {
10623
- font-family: Roboto;
10854
+ font-family: 'Inter';
10624
10855
  font-style: normal;
10856
+ font-display: swap;
10625
10857
  font-weight: 400;
10858
+ src: url(./files/inter-latin-400-normal.woff2) format('woff2'), url(./files/inter-latin-400-normal.woff) format('woff');
10859
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
10860
+ }
10861
+
10862
+ /* inter-cyrillic-ext-600-normal */
10863
+
10864
+ @font-face {
10865
+ font-family: 'Inter';
10866
+ font-style: normal;
10867
+ font-display: swap;
10868
+ font-weight: 600;
10869
+ src: url(./files/inter-cyrillic-ext-600-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-600-normal.woff) format('woff');
10870
+ unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
10871
+ }
10872
+
10873
+ /* inter-cyrillic-600-normal */
10874
+
10875
+ @font-face {
10876
+ font-family: 'Inter';
10877
+ font-style: normal;
10878
+ font-display: swap;
10879
+ font-weight: 600;
10880
+ src: url(./files/inter-cyrillic-600-normal.woff2) format('woff2'), url(./files/inter-cyrillic-600-normal.woff) format('woff');
10881
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
10882
+ }
10883
+
10884
+ /* inter-greek-ext-600-normal */
10885
+
10886
+ @font-face {
10887
+ font-family: 'Inter';
10888
+ font-style: normal;
10626
10889
  font-display: swap;
10627
- src: url('/fonts/Roboto-400-greek-ext.woff2') format('woff2');
10890
+ font-weight: 600;
10891
+ src: url(./files/inter-greek-ext-600-normal.woff2) format('woff2'), url(./files/inter-greek-ext-600-normal.woff) format('woff');
10628
10892
  unicode-range: U+1F00-1FFF;
10629
10893
  }
10630
10894
 
10895
+ /* inter-greek-600-normal */
10896
+
10897
+ @font-face {
10898
+ font-family: 'Inter';
10899
+ font-style: normal;
10900
+ font-display: swap;
10901
+ font-weight: 600;
10902
+ src: url(./files/inter-greek-600-normal.woff2) format('woff2'), url(./files/inter-greek-600-normal.woff) format('woff');
10903
+ unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
10904
+ }
10905
+
10906
+ /* inter-vietnamese-600-normal */
10907
+
10908
+ @font-face {
10909
+ font-family: 'Inter';
10910
+ font-style: normal;
10911
+ font-display: swap;
10912
+ font-weight: 600;
10913
+ src: url(./files/inter-vietnamese-600-normal.woff2) format('woff2'), url(./files/inter-vietnamese-600-normal.woff) format('woff');
10914
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
10915
+ }
10916
+
10917
+ /* inter-latin-ext-600-normal */
10918
+
10919
+ @font-face {
10920
+ font-family: 'Inter';
10921
+ font-style: normal;
10922
+ font-display: swap;
10923
+ font-weight: 600;
10924
+ src: url(./files/inter-latin-ext-600-normal.woff2) format('woff2'), url(./files/inter-latin-ext-600-normal.woff) format('woff');
10925
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
10926
+ }
10927
+
10928
+ /* inter-latin-600-normal */
10929
+
10930
+ @font-face {
10931
+ font-family: 'Inter';
10932
+ font-style: normal;
10933
+ font-display: swap;
10934
+ font-weight: 600;
10935
+ src: url(./files/inter-latin-600-normal.woff2) format('woff2'), url(./files/inter-latin-600-normal.woff) format('woff');
10936
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
10937
+ }
10938
+
10939
+ /* inter-cyrillic-ext-700-normal */
10940
+
10631
10941
  @font-face {
10632
- font-family: Roboto;
10942
+ font-family: 'Inter';
10633
10943
  font-style: normal;
10944
+ font-display: swap;
10634
10945
  font-weight: 700;
10946
+ src: url(./files/inter-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/inter-cyrillic-ext-700-normal.woff) format('woff');
10947
+ unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
10948
+ }
10949
+
10950
+ /* inter-cyrillic-700-normal */
10951
+
10952
+ @font-face {
10953
+ font-family: 'Inter';
10954
+ font-style: normal;
10635
10955
  font-display: swap;
10636
- src: url('/fonts/Roboto-700-greek-ext.woff2') format('woff2');
10637
- unicode-range: U+1F00-1FFF;
10956
+ font-weight: 700;
10957
+ src: url(./files/inter-cyrillic-700-normal.woff2) format('woff2'), url(./files/inter-cyrillic-700-normal.woff) format('woff');
10958
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
10638
10959
  }
10639
10960
 
10640
- /* Vietnamese */
10961
+ /* inter-greek-ext-700-normal */
10641
10962
 
10642
10963
  @font-face {
10643
- font-family: Roboto;
10964
+ font-family: 'Inter';
10644
10965
  font-style: normal;
10645
- font-weight: 400;
10646
10966
  font-display: swap;
10647
- src: url('/fonts/Roboto-400-vietnamese.woff2') format('woff2');
10648
- unicode-range:
10649
- U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
10650
- U+01AF-01B0, U+1EA0-1EF9, U+20AB;
10967
+ font-weight: 700;
10968
+ src: url(./files/inter-greek-ext-700-normal.woff2) format('woff2'), url(./files/inter-greek-ext-700-normal.woff) format('woff');
10969
+ unicode-range: U+1F00-1FFF;
10651
10970
  }
10652
10971
 
10972
+ /* inter-greek-700-normal */
10973
+
10653
10974
  @font-face {
10654
- font-family: Roboto;
10975
+ font-family: 'Inter';
10655
10976
  font-style: normal;
10977
+ font-display: swap;
10656
10978
  font-weight: 700;
10979
+ src: url(./files/inter-greek-700-normal.woff2) format('woff2'), url(./files/inter-greek-700-normal.woff) format('woff');
10980
+ unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
10981
+ }
10982
+
10983
+ /* inter-vietnamese-700-normal */
10984
+
10985
+ @font-face {
10986
+ font-family: 'Inter';
10987
+ font-style: normal;
10657
10988
  font-display: swap;
10658
- src: url('/fonts/Roboto-700-vietnamese.woff2') format('woff2');
10659
- unicode-range:
10660
- U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
10661
- U+01AF-01B0, U+1EA0-1EF9, U+20AB;
10989
+ font-weight: 700;
10990
+ src: url(./files/inter-vietnamese-700-normal.woff2) format('woff2'), url(./files/inter-vietnamese-700-normal.woff) format('woff');
10991
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
10662
10992
  }
10663
10993
 
10664
- /* ===========================
10665
- Inter - Modern Sans-Serif (Variable Font)
10666
- Weights: 400-700
10667
- =========================== */
10994
+ /* inter-latin-ext-700-normal */
10995
+
10996
+ @font-face {
10997
+ font-family: 'Inter';
10998
+ font-style: normal;
10999
+ font-display: swap;
11000
+ font-weight: 700;
11001
+ src: url(./files/inter-latin-ext-700-normal.woff2) format('woff2'), url(./files/inter-latin-ext-700-normal.woff) format('woff');
11002
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11003
+ }
10668
11004
 
10669
- /* Latin - loads first */
11005
+ /* inter-latin-700-normal */
10670
11006
 
10671
11007
  @font-face {
10672
- font-family: Inter;
11008
+ font-family: 'Inter';
10673
11009
  font-style: normal;
10674
- font-weight: 400 700;
10675
- font-display: swap; /* Changed from optional to swap - we preload this font */
10676
- src: url('/fonts/Inter-latin.woff2') format('woff2');
10677
- unicode-range:
10678
- U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
10679
- U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
10680
- U+2215, U+FEFF, U+FFFD;
11010
+ font-display: swap;
11011
+ font-weight: 700;
11012
+ src: url(./files/inter-latin-700-normal.woff2) format('woff2'), url(./files/inter-latin-700-normal.woff) format('woff');
11013
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
10681
11014
  }
10682
11015
 
10683
- /* Latin Extended - on-demand */
11016
+ /* playfair-display-cyrillic-400-normal */
10684
11017
 
10685
11018
  @font-face {
10686
- font-family: Inter;
11019
+ font-family: 'Playfair Display';
10687
11020
  font-style: normal;
10688
- font-weight: 400 700;
10689
11021
  font-display: swap;
10690
- src: url('/fonts/Inter-latin-ext.woff2') format('woff2');
10691
- unicode-range:
10692
- U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
10693
- U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
10694
- U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
11022
+ font-weight: 400;
11023
+ src: url(./files/playfair-display-cyrillic-400-normal.woff2) format('woff2'), url(./files/playfair-display-cyrillic-400-normal.woff) format('woff');
11024
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
10695
11025
  }
10696
11026
 
10697
- /* ===========================
10698
- Playfair Display - Serif (Variable Font)
10699
- Weights: 400-700
10700
- =========================== */
11027
+ /* playfair-display-vietnamese-400-normal */
11028
+
11029
+ @font-face {
11030
+ font-family: 'Playfair Display';
11031
+ font-style: normal;
11032
+ font-display: swap;
11033
+ font-weight: 400;
11034
+ src: url(./files/playfair-display-vietnamese-400-normal.woff2) format('woff2'), url(./files/playfair-display-vietnamese-400-normal.woff) format('woff');
11035
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11036
+ }
10701
11037
 
10702
- /* Latin - loads first */
11038
+ /* playfair-display-latin-ext-400-normal */
10703
11039
 
10704
11040
  @font-face {
10705
11041
  font-family: 'Playfair Display';
10706
11042
  font-style: normal;
10707
- font-weight: 400 700;
10708
11043
  font-display: swap;
10709
- src: url('/fonts/PlayfairDisplay-latin.woff2') format('woff2');
10710
- unicode-range:
10711
- U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
10712
- U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
10713
- U+2215, U+FEFF, U+FFFD;
11044
+ font-weight: 400;
11045
+ src: url(./files/playfair-display-latin-ext-400-normal.woff2) format('woff2'), url(./files/playfair-display-latin-ext-400-normal.woff) format('woff');
11046
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
10714
11047
  }
10715
11048
 
10716
- /* Latin Extended - on-demand */
11049
+ /* playfair-display-latin-400-normal */
10717
11050
 
10718
11051
  @font-face {
10719
11052
  font-family: 'Playfair Display';
10720
11053
  font-style: normal;
10721
- font-weight: 400 700;
10722
11054
  font-display: swap;
10723
- src: url('/fonts/PlayfairDisplay-latin-ext.woff2') format('woff2');
10724
- unicode-range:
10725
- U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
10726
- U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
10727
- U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
11055
+ font-weight: 400;
11056
+ src: url(./files/playfair-display-latin-400-normal.woff2) format('woff2'), url(./files/playfair-display-latin-400-normal.woff) format('woff');
11057
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
11058
+ }
11059
+
11060
+ /* playfair-display-cyrillic-500-normal */
11061
+
11062
+ @font-face {
11063
+ font-family: 'Playfair Display';
11064
+ font-style: normal;
11065
+ font-display: swap;
11066
+ font-weight: 500;
11067
+ src: url(./files/playfair-display-cyrillic-500-normal.woff2) format('woff2'), url(./files/playfair-display-cyrillic-500-normal.woff) format('woff');
11068
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
11069
+ }
11070
+
11071
+ /* playfair-display-vietnamese-500-normal */
11072
+
11073
+ @font-face {
11074
+ font-family: 'Playfair Display';
11075
+ font-style: normal;
11076
+ font-display: swap;
11077
+ font-weight: 500;
11078
+ src: url(./files/playfair-display-vietnamese-500-normal.woff2) format('woff2'), url(./files/playfair-display-vietnamese-500-normal.woff) format('woff');
11079
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11080
+ }
11081
+
11082
+ /* playfair-display-latin-ext-500-normal */
11083
+
11084
+ @font-face {
11085
+ font-family: 'Playfair Display';
11086
+ font-style: normal;
11087
+ font-display: swap;
11088
+ font-weight: 500;
11089
+ src: url(./files/playfair-display-latin-ext-500-normal.woff2) format('woff2'), url(./files/playfair-display-latin-ext-500-normal.woff) format('woff');
11090
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11091
+ }
11092
+
11093
+ /* playfair-display-latin-500-normal */
11094
+
11095
+ @font-face {
11096
+ font-family: 'Playfair Display';
11097
+ font-style: normal;
11098
+ font-display: swap;
11099
+ font-weight: 500;
11100
+ src: url(./files/playfair-display-latin-500-normal.woff2) format('woff2'), url(./files/playfair-display-latin-500-normal.woff) format('woff');
11101
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
11102
+ }
11103
+
11104
+ /* playfair-display-cyrillic-600-normal */
11105
+
11106
+ @font-face {
11107
+ font-family: 'Playfair Display';
11108
+ font-style: normal;
11109
+ font-display: swap;
11110
+ font-weight: 600;
11111
+ src: url(./files/playfair-display-cyrillic-600-normal.woff2) format('woff2'), url(./files/playfair-display-cyrillic-600-normal.woff) format('woff');
11112
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
11113
+ }
11114
+
11115
+ /* playfair-display-vietnamese-600-normal */
11116
+
11117
+ @font-face {
11118
+ font-family: 'Playfair Display';
11119
+ font-style: normal;
11120
+ font-display: swap;
11121
+ font-weight: 600;
11122
+ src: url(./files/playfair-display-vietnamese-600-normal.woff2) format('woff2'), url(./files/playfair-display-vietnamese-600-normal.woff) format('woff');
11123
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11124
+ }
11125
+
11126
+ /* playfair-display-latin-ext-600-normal */
11127
+
11128
+ @font-face {
11129
+ font-family: 'Playfair Display';
11130
+ font-style: normal;
11131
+ font-display: swap;
11132
+ font-weight: 600;
11133
+ src: url(./files/playfair-display-latin-ext-600-normal.woff2) format('woff2'), url(./files/playfair-display-latin-ext-600-normal.woff) format('woff');
11134
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11135
+ }
11136
+
11137
+ /* playfair-display-latin-600-normal */
11138
+
11139
+ @font-face {
11140
+ font-family: 'Playfair Display';
11141
+ font-style: normal;
11142
+ font-display: swap;
11143
+ font-weight: 600;
11144
+ src: url(./files/playfair-display-latin-600-normal.woff2) format('woff2'), url(./files/playfair-display-latin-600-normal.woff) format('woff');
11145
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
11146
+ }
11147
+
11148
+ /* playfair-display-cyrillic-700-normal */
11149
+
11150
+ @font-face {
11151
+ font-family: 'Playfair Display';
11152
+ font-style: normal;
11153
+ font-display: swap;
11154
+ font-weight: 700;
11155
+ src: url(./files/playfair-display-cyrillic-700-normal.woff2) format('woff2'), url(./files/playfair-display-cyrillic-700-normal.woff) format('woff');
11156
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
11157
+ }
11158
+
11159
+ /* playfair-display-vietnamese-700-normal */
11160
+
11161
+ @font-face {
11162
+ font-family: 'Playfair Display';
11163
+ font-style: normal;
11164
+ font-display: swap;
11165
+ font-weight: 700;
11166
+ src: url(./files/playfair-display-vietnamese-700-normal.woff2) format('woff2'), url(./files/playfair-display-vietnamese-700-normal.woff) format('woff');
11167
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11168
+ }
11169
+
11170
+ /* playfair-display-latin-ext-700-normal */
11171
+
11172
+ @font-face {
11173
+ font-family: 'Playfair Display';
11174
+ font-style: normal;
11175
+ font-display: swap;
11176
+ font-weight: 700;
11177
+ src: url(./files/playfair-display-latin-ext-700-normal.woff2) format('woff2'), url(./files/playfair-display-latin-ext-700-normal.woff) format('woff');
11178
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11179
+ }
11180
+
11181
+ /* playfair-display-latin-700-normal */
11182
+
11183
+ @font-face {
11184
+ font-family: 'Playfair Display';
11185
+ font-style: normal;
11186
+ font-display: swap;
11187
+ font-weight: 700;
11188
+ src: url(./files/playfair-display-latin-700-normal.woff2) format('woff2'), url(./files/playfair-display-latin-700-normal.woff) format('woff');
11189
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
11190
+ }
11191
+
11192
+ /* roboto-cyrillic-ext-400-normal */
11193
+
11194
+ @font-face {
11195
+ font-family: 'Roboto';
11196
+ font-style: normal;
11197
+ font-display: swap;
11198
+ font-weight: 400;
11199
+ src: url(./files/roboto-cyrillic-ext-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-400-normal.woff) format('woff');
11200
+ unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
11201
+ }
11202
+
11203
+ /* roboto-cyrillic-400-normal */
11204
+
11205
+ @font-face {
11206
+ font-family: 'Roboto';
11207
+ font-style: normal;
11208
+ font-display: swap;
11209
+ font-weight: 400;
11210
+ src: url(./files/roboto-cyrillic-400-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-400-normal.woff) format('woff');
11211
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
11212
+ }
11213
+
11214
+ /* roboto-greek-ext-400-normal */
11215
+
11216
+ @font-face {
11217
+ font-family: 'Roboto';
11218
+ font-style: normal;
11219
+ font-display: swap;
11220
+ font-weight: 400;
11221
+ src: url(./files/roboto-greek-ext-400-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-400-normal.woff) format('woff');
11222
+ unicode-range: U+1F00-1FFF;
11223
+ }
11224
+
11225
+ /* roboto-greek-400-normal */
11226
+
11227
+ @font-face {
11228
+ font-family: 'Roboto';
11229
+ font-style: normal;
11230
+ font-display: swap;
11231
+ font-weight: 400;
11232
+ src: url(./files/roboto-greek-400-normal.woff2) format('woff2'), url(./files/roboto-greek-400-normal.woff) format('woff');
11233
+ unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
11234
+ }
11235
+
11236
+ /* roboto-math-400-normal */
11237
+
11238
+ @font-face {
11239
+ font-family: 'Roboto';
11240
+ font-style: normal;
11241
+ font-display: swap;
11242
+ font-weight: 400;
11243
+ src: url(./files/roboto-math-400-normal.woff2) format('woff2'), url(./files/roboto-math-400-normal.woff) format('woff');
11244
+ unicode-range: U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;
11245
+ }
11246
+
11247
+ /* roboto-symbols-400-normal */
11248
+
11249
+ @font-face {
11250
+ font-family: 'Roboto';
11251
+ font-style: normal;
11252
+ font-display: swap;
11253
+ font-weight: 400;
11254
+ src: url(./files/roboto-symbols-400-normal.woff2) format('woff2'), url(./files/roboto-symbols-400-normal.woff) format('woff');
11255
+ unicode-range: U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;
11256
+ }
11257
+
11258
+ /* roboto-vietnamese-400-normal */
11259
+
11260
+ @font-face {
11261
+ font-family: 'Roboto';
11262
+ font-style: normal;
11263
+ font-display: swap;
11264
+ font-weight: 400;
11265
+ src: url(./files/roboto-vietnamese-400-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-400-normal.woff) format('woff');
11266
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11267
+ }
11268
+
11269
+ /* roboto-latin-ext-400-normal */
11270
+
11271
+ @font-face {
11272
+ font-family: 'Roboto';
11273
+ font-style: normal;
11274
+ font-display: swap;
11275
+ font-weight: 400;
11276
+ src: url(./files/roboto-latin-ext-400-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-400-normal.woff) format('woff');
11277
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11278
+ }
11279
+
11280
+ /* roboto-latin-400-normal */
11281
+
11282
+ @font-face {
11283
+ font-family: 'Roboto';
11284
+ font-style: normal;
11285
+ font-display: swap;
11286
+ font-weight: 400;
11287
+ src: url(./files/roboto-latin-400-normal.woff2) format('woff2'), url(./files/roboto-latin-400-normal.woff) format('woff');
11288
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
11289
+ }
11290
+
11291
+ /* roboto-cyrillic-ext-700-normal */
11292
+
11293
+ @font-face {
11294
+ font-family: 'Roboto';
11295
+ font-style: normal;
11296
+ font-display: swap;
11297
+ font-weight: 700;
11298
+ src: url(./files/roboto-cyrillic-ext-700-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-ext-700-normal.woff) format('woff');
11299
+ unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
11300
+ }
11301
+
11302
+ /* roboto-cyrillic-700-normal */
11303
+
11304
+ @font-face {
11305
+ font-family: 'Roboto';
11306
+ font-style: normal;
11307
+ font-display: swap;
11308
+ font-weight: 700;
11309
+ src: url(./files/roboto-cyrillic-700-normal.woff2) format('woff2'), url(./files/roboto-cyrillic-700-normal.woff) format('woff');
11310
+ unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
11311
+ }
11312
+
11313
+ /* roboto-greek-ext-700-normal */
11314
+
11315
+ @font-face {
11316
+ font-family: 'Roboto';
11317
+ font-style: normal;
11318
+ font-display: swap;
11319
+ font-weight: 700;
11320
+ src: url(./files/roboto-greek-ext-700-normal.woff2) format('woff2'), url(./files/roboto-greek-ext-700-normal.woff) format('woff');
11321
+ unicode-range: U+1F00-1FFF;
11322
+ }
11323
+
11324
+ /* roboto-greek-700-normal */
11325
+
11326
+ @font-face {
11327
+ font-family: 'Roboto';
11328
+ font-style: normal;
11329
+ font-display: swap;
11330
+ font-weight: 700;
11331
+ src: url(./files/roboto-greek-700-normal.woff2) format('woff2'), url(./files/roboto-greek-700-normal.woff) format('woff');
11332
+ unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
11333
+ }
11334
+
11335
+ /* roboto-math-700-normal */
11336
+
11337
+ @font-face {
11338
+ font-family: 'Roboto';
11339
+ font-style: normal;
11340
+ font-display: swap;
11341
+ font-weight: 700;
11342
+ src: url(./files/roboto-math-700-normal.woff2) format('woff2'), url(./files/roboto-math-700-normal.woff) format('woff');
11343
+ unicode-range: U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;
11344
+ }
11345
+
11346
+ /* roboto-symbols-700-normal */
11347
+
11348
+ @font-face {
11349
+ font-family: 'Roboto';
11350
+ font-style: normal;
11351
+ font-display: swap;
11352
+ font-weight: 700;
11353
+ src: url(./files/roboto-symbols-700-normal.woff2) format('woff2'), url(./files/roboto-symbols-700-normal.woff) format('woff');
11354
+ unicode-range: U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;
11355
+ }
11356
+
11357
+ /* roboto-vietnamese-700-normal */
11358
+
11359
+ @font-face {
11360
+ font-family: 'Roboto';
11361
+ font-style: normal;
11362
+ font-display: swap;
11363
+ font-weight: 700;
11364
+ src: url(./files/roboto-vietnamese-700-normal.woff2) format('woff2'), url(./files/roboto-vietnamese-700-normal.woff) format('woff');
11365
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11366
+ }
11367
+
11368
+ /* roboto-latin-ext-700-normal */
11369
+
11370
+ @font-face {
11371
+ font-family: 'Roboto';
11372
+ font-style: normal;
11373
+ font-display: swap;
11374
+ font-weight: 700;
11375
+ src: url(./files/roboto-latin-ext-700-normal.woff2) format('woff2'), url(./files/roboto-latin-ext-700-normal.woff) format('woff');
11376
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11377
+ }
11378
+
11379
+ /* roboto-latin-700-normal */
11380
+
11381
+ @font-face {
11382
+ font-family: 'Roboto';
11383
+ font-style: normal;
11384
+ font-display: swap;
11385
+ font-weight: 700;
11386
+ src: url(./files/roboto-latin-700-normal.woff2) format('woff2'), url(./files/roboto-latin-700-normal.woff) format('woff');
11387
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
11388
+ }
11389
+
11390
+ /* space-grotesk-vietnamese-300-normal */
11391
+
11392
+ @font-face {
11393
+ font-family: 'Space Grotesk';
11394
+ font-style: normal;
11395
+ font-display: swap;
11396
+ font-weight: 300;
11397
+ src: url(./files/space-grotesk-vietnamese-300-normal.woff2) format('woff2'), url(./files/space-grotesk-vietnamese-300-normal.woff) format('woff');
11398
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11399
+ }
11400
+
11401
+ /* space-grotesk-latin-ext-300-normal */
11402
+
11403
+ @font-face {
11404
+ font-family: 'Space Grotesk';
11405
+ font-style: normal;
11406
+ font-display: swap;
11407
+ font-weight: 300;
11408
+ src: url(./files/space-grotesk-latin-ext-300-normal.woff2) format('woff2'), url(./files/space-grotesk-latin-ext-300-normal.woff) format('woff');
11409
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11410
+ }
11411
+
11412
+ /* space-grotesk-latin-300-normal */
11413
+
11414
+ @font-face {
11415
+ font-family: 'Space Grotesk';
11416
+ font-style: normal;
11417
+ font-display: swap;
11418
+ font-weight: 300;
11419
+ src: url(./files/space-grotesk-latin-300-normal.woff2) format('woff2'), url(./files/space-grotesk-latin-300-normal.woff) format('woff');
11420
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
11421
+ }
11422
+
11423
+ /* space-grotesk-vietnamese-400-normal */
11424
+
11425
+ @font-face {
11426
+ font-family: 'Space Grotesk';
11427
+ font-style: normal;
11428
+ font-display: swap;
11429
+ font-weight: 400;
11430
+ src: url(./files/space-grotesk-vietnamese-400-normal.woff2) format('woff2'), url(./files/space-grotesk-vietnamese-400-normal.woff) format('woff');
11431
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11432
+ }
11433
+
11434
+ /* space-grotesk-latin-ext-400-normal */
11435
+
11436
+ @font-face {
11437
+ font-family: 'Space Grotesk';
11438
+ font-style: normal;
11439
+ font-display: swap;
11440
+ font-weight: 400;
11441
+ src: url(./files/space-grotesk-latin-ext-400-normal.woff2) format('woff2'), url(./files/space-grotesk-latin-ext-400-normal.woff) format('woff');
11442
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11443
+ }
11444
+
11445
+ /* space-grotesk-latin-400-normal */
11446
+
11447
+ @font-face {
11448
+ font-family: 'Space Grotesk';
11449
+ font-style: normal;
11450
+ font-display: swap;
11451
+ font-weight: 400;
11452
+ src: url(./files/space-grotesk-latin-400-normal.woff2) format('woff2'), url(./files/space-grotesk-latin-400-normal.woff) format('woff');
11453
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
11454
+ }
11455
+
11456
+ /* space-grotesk-vietnamese-500-normal */
11457
+
11458
+ @font-face {
11459
+ font-family: 'Space Grotesk';
11460
+ font-style: normal;
11461
+ font-display: swap;
11462
+ font-weight: 500;
11463
+ src: url(./files/space-grotesk-vietnamese-500-normal.woff2) format('woff2'), url(./files/space-grotesk-vietnamese-500-normal.woff) format('woff');
11464
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11465
+ }
11466
+
11467
+ /* space-grotesk-latin-ext-500-normal */
11468
+
11469
+ @font-face {
11470
+ font-family: 'Space Grotesk';
11471
+ font-style: normal;
11472
+ font-display: swap;
11473
+ font-weight: 500;
11474
+ src: url(./files/space-grotesk-latin-ext-500-normal.woff2) format('woff2'), url(./files/space-grotesk-latin-ext-500-normal.woff) format('woff');
11475
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11476
+ }
11477
+
11478
+ /* space-grotesk-latin-500-normal */
11479
+
11480
+ @font-face {
11481
+ font-family: 'Space Grotesk';
11482
+ font-style: normal;
11483
+ font-display: swap;
11484
+ font-weight: 500;
11485
+ src: url(./files/space-grotesk-latin-500-normal.woff2) format('woff2'), url(./files/space-grotesk-latin-500-normal.woff) format('woff');
11486
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
11487
+ }
11488
+
11489
+ /* space-grotesk-vietnamese-600-normal */
11490
+
11491
+ @font-face {
11492
+ font-family: 'Space Grotesk';
11493
+ font-style: normal;
11494
+ font-display: swap;
11495
+ font-weight: 600;
11496
+ src: url(./files/space-grotesk-vietnamese-600-normal.woff2) format('woff2'), url(./files/space-grotesk-vietnamese-600-normal.woff) format('woff');
11497
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11498
+ }
11499
+
11500
+ /* space-grotesk-latin-ext-600-normal */
11501
+
11502
+ @font-face {
11503
+ font-family: 'Space Grotesk';
11504
+ font-style: normal;
11505
+ font-display: swap;
11506
+ font-weight: 600;
11507
+ src: url(./files/space-grotesk-latin-ext-600-normal.woff2) format('woff2'), url(./files/space-grotesk-latin-ext-600-normal.woff) format('woff');
11508
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11509
+ }
11510
+
11511
+ /* space-grotesk-latin-600-normal */
11512
+
11513
+ @font-face {
11514
+ font-family: 'Space Grotesk';
11515
+ font-style: normal;
11516
+ font-display: swap;
11517
+ font-weight: 600;
11518
+ src: url(./files/space-grotesk-latin-600-normal.woff2) format('woff2'), url(./files/space-grotesk-latin-600-normal.woff) format('woff');
11519
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
11520
+ }
11521
+
11522
+ /* space-grotesk-vietnamese-700-normal */
11523
+
11524
+ @font-face {
11525
+ font-family: 'Space Grotesk';
11526
+ font-style: normal;
11527
+ font-display: swap;
11528
+ font-weight: 700;
11529
+ src: url(./files/space-grotesk-vietnamese-700-normal.woff2) format('woff2'), url(./files/space-grotesk-vietnamese-700-normal.woff) format('woff');
11530
+ unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
11531
+ }
11532
+
11533
+ /* space-grotesk-latin-ext-700-normal */
11534
+
11535
+ @font-face {
11536
+ font-family: 'Space Grotesk';
11537
+ font-style: normal;
11538
+ font-display: swap;
11539
+ font-weight: 700;
11540
+ src: url(./files/space-grotesk-latin-ext-700-normal.woff2) format('woff2'), url(./files/space-grotesk-latin-ext-700-normal.woff) format('woff');
11541
+ unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
11542
+ }
11543
+
11544
+ /* space-grotesk-latin-700-normal */
11545
+
11546
+ @font-face {
11547
+ font-family: 'Space Grotesk';
11548
+ font-style: normal;
11549
+ font-display: swap;
11550
+ font-weight: 700;
11551
+ src: url(./files/space-grotesk-latin-700-normal.woff2) format('woff2'), url(./files/space-grotesk-latin-700-normal.woff) format('woff');
11552
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
10728
11553
  }
10729
11554
 
10730
11555
  /* Ensure valid CSS file termination for Turbopack */