actual-css 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/CHANGELOG.md +67 -3
  2. package/README.md +35 -30
  3. package/dist/actual.css +73 -4946
  4. package/dist/actual.full.css +7090 -0
  5. package/dist/actual.full.js +1 -0
  6. package/dist/actual.full.min.css +1 -0
  7. package/dist/actual.js +1 -1
  8. package/dist/actual.min.css +1 -1
  9. package/docs/design-notes/cascade-layer.md +34 -13
  10. package/docs/design-notes/column-layout.md +677 -0
  11. package/docs/design-notes/forced-colors.md +3 -0
  12. package/docs/design-notes/grid.md +612 -0
  13. package/docs/design-notes/naming.md +15 -0
  14. package/docs/design-notes/widget-primitives.md +1 -0
  15. package/docs/navigation.json +5 -1
  16. package/docs/pages/components/alert.md +16 -14
  17. package/docs/pages/components/aura.md +1 -1
  18. package/docs/pages/components/avatar.md +6 -6
  19. package/docs/pages/components/badge.md +7 -7
  20. package/docs/pages/components/button.md +16 -16
  21. package/docs/pages/components/card.md +13 -9
  22. package/docs/pages/components/chat.md +8 -8
  23. package/docs/pages/components/dialog.md +7 -7
  24. package/docs/pages/components/drawer.md +3 -3
  25. package/docs/pages/components/fab.md +7 -7
  26. package/docs/pages/components/navbar.md +9 -8
  27. package/docs/pages/components/pagination.md +4 -3
  28. package/docs/pages/components/skeleton.md +4 -4
  29. package/docs/pages/components/spinner.md +5 -5
  30. package/docs/pages/components/table.md +30 -5
  31. package/docs/pages/enhancements/flyout.md +13 -13
  32. package/docs/pages/enhancements/overview.md +1 -1
  33. package/docs/pages/enhancements/scrollspy.md +6 -6
  34. package/docs/pages/enhancements/status-bar.md +5 -1
  35. package/docs/pages/enhancements/tabs.md +6 -6
  36. package/docs/pages/enhancements/tooltip.md +1 -1
  37. package/docs/pages/examples/overview.md +39 -22
  38. package/docs/pages/forms/choice-cards.md +11 -6
  39. package/docs/pages/forms/controls.md +1 -1
  40. package/docs/pages/forms/detached-actions.md +1 -1
  41. package/docs/pages/forms/floating-field.md +10 -5
  42. package/docs/pages/forms/form-actions.md +1 -1
  43. package/docs/pages/forms/input-policy.md +1 -1
  44. package/docs/pages/forms/joined-controls.md +4 -4
  45. package/docs/pages/forms/labels.md +6 -6
  46. package/docs/pages/forms/otp.md +1 -1
  47. package/docs/pages/forms/overview.md +19 -19
  48. package/docs/pages/forms/password.md +1 -1
  49. package/docs/pages/forms/range.md +1 -1
  50. package/docs/pages/forms/states-and-sizes.md +41 -45
  51. package/docs/pages/forms/sticky-actions.md +3 -3
  52. package/docs/pages/forms/switch.md +110 -2
  53. package/docs/pages/forms/validation.md +9 -9
  54. package/docs/pages/foundations/philosophy.md +1 -1
  55. package/docs/pages/foundations/theming.md +17 -2
  56. package/docs/pages/foundations/tokens.md +22 -10
  57. package/docs/pages/foundations/typography.md +50 -20
  58. package/docs/pages/guides/bootstrap.md +11 -11
  59. package/docs/pages/guides/integrating-actual-css.md +186 -0
  60. package/docs/pages/guides/introduction.md +23 -26
  61. package/docs/pages/guides/modular-import.md +173 -0
  62. package/docs/pages/guides/progressive-enhancement.md +81 -78
  63. package/docs/pages/guides/tailwind.md +6 -8
  64. package/docs/pages/layout/app-shell.md +1 -1
  65. package/docs/pages/layout/center.md +1 -1
  66. package/docs/pages/layout/choosing.md +39 -0
  67. package/docs/pages/layout/column-layout.md +206 -0
  68. package/docs/pages/layout/frame.md +6 -1
  69. package/docs/pages/layout/grid.md +100 -102
  70. package/docs/pages/layout/list.md +1 -1
  71. package/docs/pages/layout/media.md +1 -1
  72. package/docs/pages/layout/overview.md +15 -2
  73. package/docs/pages/layout/scroll-snap.md +2 -2
  74. package/docs/pages/layout/scroll-target.md +45 -0
  75. package/docs/pages/layout/sidebar-layout.md +20 -19
  76. package/docs/pages/layout/stack.md +53 -1
  77. package/docs/pages/layout/switcher.md +10 -26
  78. package/docs/pages/layout/topbar.md +2 -2
  79. package/docs/pages/patterns/actions.md +1 -1
  80. package/docs/pages/patterns/code-block.md +1 -1
  81. package/docs/pages/patterns/exclusive-accordion.md +1 -1
  82. package/docs/pages/patterns/hierarchical-nav.md +1 -1
  83. package/docs/pages/patterns/icon-input.md +1 -1
  84. package/docs/pages/patterns/intent-nesting.md +1 -1
  85. package/docs/pages/patterns/navigation-list.md +1 -1
  86. package/docs/pages/patterns/overview.md +1 -1
  87. package/docs/pages/patterns/structured-lists.md +1 -1
  88. package/docs/pages/utilities/accessibility.md +3 -3
  89. package/docs/pages/utilities/flex.md +15 -15
  90. package/docs/pages/utilities/links.md +4 -4
  91. package/docs/pages/utilities/list.md +8 -8
  92. package/docs/pages/utilities/overflow.md +8 -8
  93. package/docs/pages/utilities/overview.md +1 -1
  94. package/docs/pages/utilities/shape.md +3 -3
  95. package/docs/pages/utilities/sizing-wrapping.md +23 -16
  96. package/docs/pages/utilities/spacing.md +20 -20
  97. package/docs/pages/utilities/text.md +10 -10
  98. package/llms.txt +46 -4
  99. package/package.json +42 -13
  100. package/scripts/reserved-classes.json +261 -0
  101. package/src/cli/actual-css.js +133 -0
  102. package/src/css/actual.css +1 -31
  103. package/src/css/actual.full.css +11 -2
  104. package/src/css/components/alert.css +17 -4
  105. package/src/css/components/badge.css +18 -6
  106. package/src/css/components/breadcrumb.css +1 -1
  107. package/src/css/components/button.css +19 -1
  108. package/src/css/components/card.css +27 -2
  109. package/src/css/components/drawer.css +27 -2
  110. package/src/css/components/flyout.css +5 -0
  111. package/src/css/components/index.css +32 -27
  112. package/src/css/components/join.css +8 -1
  113. package/src/css/components/key.css +2 -0
  114. package/src/css/components/menu.css +11 -1
  115. package/src/css/components/meter.css +4 -1
  116. package/src/css/components/modal.css +5 -0
  117. package/src/css/components/pagination.css +11 -0
  118. package/src/css/components/spinner.css +5 -0
  119. package/src/css/components/status-bar.css +5 -0
  120. package/src/css/components/surface.css +5 -0
  121. package/src/css/components/table.css +6 -0
  122. package/src/css/components/tooltip.css +5 -0
  123. package/src/css/core/index.css +9 -0
  124. package/src/css/core/print.css +18 -0
  125. package/src/css/{theme.css → core/theme.css} +20 -10
  126. package/src/css/{tokens.css → core/tokens.css} +15 -2
  127. package/src/css/{variants.css → core/variants.css} +3 -2
  128. package/src/css/effects/index.css +2 -0
  129. package/src/css/forms/base.css +8 -0
  130. package/src/css/forms/choice-card.css +5 -4
  131. package/src/css/forms/choice.css +49 -37
  132. package/src/css/forms/control.css +4 -1
  133. package/src/css/forms/custom-select.css +2 -0
  134. package/src/css/{optional → forms}/floating-field.css +25 -7
  135. package/src/css/forms/index.css +10 -13
  136. package/src/css/forms/native.css +15 -2
  137. package/src/css/{optional → forms}/otp.css +20 -16
  138. package/src/css/forms/switch.css +31 -29
  139. package/src/css/layout/app-shell.css +6 -0
  140. package/src/css/layout/center.css +13 -0
  141. package/src/css/layout/cluster.css +21 -0
  142. package/src/css/layout/column-layout.css +144 -0
  143. package/src/css/layout/container-query.css +13 -0
  144. package/src/css/layout/frame.css +19 -0
  145. package/src/css/layout/grid.css +141 -0
  146. package/src/css/layout/index.css +42 -0
  147. package/src/css/layout/measure.css +9 -0
  148. package/src/css/layout/media.css +10 -0
  149. package/src/css/layout/scroll-target.css +15 -0
  150. package/src/css/layout/scroller.css +41 -0
  151. package/src/css/layout/sidebar-layout.css +31 -0
  152. package/src/css/layout/stack.css +21 -0
  153. package/src/css/layout/switcher.css +23 -0
  154. package/src/css/{optional/layout-extra.css → layout/topbar.css} +0 -20
  155. package/src/css/typography/index.css +5 -0
  156. package/src/css/typography/lead.css +7 -0
  157. package/src/css/{components → typography}/overline.css +2 -2
  158. package/src/css/{prose.css → typography/prose.css} +53 -38
  159. package/src/css/{utilities.css → utilities/base.css} +2 -0
  160. package/src/css/utilities/index.css +3 -0
  161. package/src/js/escape.js +36 -0
  162. package/src/js/flyout.js +22 -12
  163. package/src/js/full.js +26 -0
  164. package/src/js/index.js +5 -21
  165. package/src/js/surface.js +1 -31
  166. package/src/js/tooltip.js +46 -18
  167. package/src/js/validation.js +1 -1
  168. package/src/tooling/css-bundle.js +308 -0
  169. package/dist/actual-themes.min.css +0 -1
  170. package/dist/optional.css +0 -1048
  171. package/dist/optional.min.css +0 -1
  172. package/docs/pages/guides/optional-components.md +0 -33
  173. package/src/css/grid.css +0 -109
  174. package/src/css/layout.css +0 -123
  175. package/src/css/optional/index.css +0 -10
  176. package/src/css/optional/scroller.css +0 -63
  177. package/src/css/print.css +0 -47
  178. package/src/css/themes/corporate.css +0 -60
  179. package/src/css/themes/cyberpunk.css +0 -60
  180. package/src/css/themes/dim.css +0 -33
  181. package/src/css/themes/edge.css +0 -117
  182. package/src/css/themes/forest.css +0 -65
  183. package/src/css/themes/gradient.css +0 -97
  184. package/src/css/themes/index.css +0 -47
  185. package/src/css/themes/indigo.css +0 -33
  186. package/src/css/themes/lavender.css +0 -66
  187. package/src/css/themes/mono.css +0 -60
  188. package/src/css/themes/neon.css +0 -66
  189. package/src/css/themes/ocean.css +0 -60
  190. package/src/css/themes/petrol.css +0 -64
  191. package/src/css/themes/spruce.css +0 -64
  192. package/src/css/themes/square.css +0 -65
  193. package/src/css/themes/sunset.css +0 -66
  194. /package/src/css/{optional → components}/chat.css +0 -0
  195. /package/src/css/{optional → components}/fab.css +0 -0
  196. /package/src/css/{base.css → core/base.css} +0 -0
  197. /package/src/css/{focus.css → core/focus.css} +0 -0
  198. /package/src/css/{intents.css → core/intents.css} +0 -0
  199. /package/src/css/{reset.css → core/reset.css} +0 -0
  200. /package/src/css/{optional → effects}/aura.css +0 -0
  201. /package/src/css/{optional → layout}/scroll-snap.css +0 -0
  202. /package/src/css/{optional/typography-fluid.css → typography/fluid.css} +0 -0
  203. /package/src/css/{optional/utilities-extra.css → utilities/extra.css} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,8 +1,72 @@
1
- # Changelog
1
+ # Actual CSS 0.4.0 — Changelog
2
2
 
3
- All notable changes will be documented here.
3
+ # 0.4.0 — unreleased
4
+
5
+ ### Added
6
+
7
+ * Modular CSS architecture with `core`, `layout`, `typography`, `forms`, `components`, `effects`, and `utilities` families, with family and individual-module imports.
8
+ * `actual-css/full` / `actual.full.*` bundles for the complete CSS and JS framework.
9
+ * `.column-layout` with `column-span-1…12` and `column-start-1…12` for explicit opt-in 12-column composition.
10
+ * Intrinsic `.switcher` and `.sidebar-layout` layout recipes, plus explicit layout-selection guidance.
11
+ * `.scroll-target` with `--scroll-target-offset` for hash links and `scrollIntoView()` below sticky UI.
12
+ * Dedicated `typography/lead.css` and `layout/measure.css`; `.measure` exposes `--measure`.
13
+ * Generated and published `reserved-classes.json` for the framework-owned class namespace.
14
+ * Native `accent-color` theming for unstyled platform controls, recomputed across `[data-theme]` islands.
15
+ * “Building with Actual CSS” integration guide covering theme tokens, layout selection, hooks, utilities, and application CSS.
16
+ * Expanded build, architecture, compatibility, browser-layout, package, and generated-output guardrails, including real `npm pack` verification.
17
+ * `brutalist` theme.
18
+ * `--soft-fg-mix` tunes soft foreground ink; at its `100%` default soft text stays the raw intent, and lowering it rebates the ink toward `--text` for palettes whose intents are too light or too saturated to carry text on their own soft surface.
19
+ * Optional `--link` overrides `.prose` link ink when a theme's `--primary` works as an accent but not as inline body text.
20
+ * `check:color-space` guardrail: an intent tinted against a theme-controlled surface or border must interpolate in `oklab`, with an `intentional-oklch` escape hatch.
21
+ * Bundle tool.
22
+
23
+ ### Changed
24
+
25
+ * The bare `actual-css` entrypoint is now the minimal core; use `actual-css/full` for all CSS families.
26
+ * `actual-css/js` is now the enhancement loader only; use `actual-css/js/full` or `actual.full.js` for the complete pre-registered runtime.
27
+ * `.grid` remains space-driven through `--grid-min`; `.grid-2/3/4/6` now express bounded structural density and degrade responsively.
28
+ * `.container-query` optionally gives `.grid-N` balanced divisor-based subdivisions (`2→1`, `3→1`, `4→2→1`, `6→3→2→1`) instead of being required for responsiveness.
29
+ * `--grid-columns` is the explicit escape hatch for exact custom tracks, including arbitrary structural counts, asymmetric ratios, and mixed intrinsic/flexible tracks; applications own their narrow behavior.
30
+ * `.sidebar-layout` now uses intrinsic flex wrapping instead of a hidden container-query/viewport breakpoint contract.
31
+ * Grid primitives remove the automatic `min-inline-size` floor from their direct children to preserve overflow-safe track sizing.
32
+ * `.card` is now a column flex container; a direct `<footer>` anchors to the bottom when extra space is available, aligning actions across equal-height cards.
33
+ * Focus is a core invariant and no longer depends on loading focus styles after components.
34
+ * Focus rings are derived from each `[data-theme]` island's own `--focus`; preset palettes only keep intentional overrides such as neon.
35
+ * `.prose` now includes sane native description-list (`dt` / `dd`) styling.
36
+ * `.lead` and `.measure` are independent from `.prose`.
37
+ * Utilities distinguish compact framework shortcuts from verbose optional property/value helpers; optional helpers include semantic gap sizes and common sizing, alignment, overflow, spacing, text, border, and surface escape hatches.
38
+ * Preset theme palettes are reference/demo material rather than package API; their bundle is generated for demos/docs instead of `dist/`.
39
+ * `llms.txt` now documents the core/full package split, layout-selection model, class manifest, and application-CSS integration workflow.
40
+ * Biome now covers `src/`, `scripts/`, and `tests/`, and lint runs as part of `build:all`.
41
+ * Use OKLab for intent/context color mixes to keep custom themes stable when surfaces or borders are chromatic.
42
+ * Docs syntax highlighting uses a purpose-built local palette instead of the theme intents, which do not hold contrast as small text under most presets and are too close together on the monochromatic ones to stay distinguishable.
43
+ * CI and browser diagnostics are updated for Bun 1.4 and verify committed `dist/`, `site/`, and `size-report.json` against fresh builds.
44
+
45
+ ### Fixed
46
+
47
+ * Forced-colors and theme-island focus/state handling.
48
+ * Grid child min-content overflow in narrow tracks.
49
+ * Drawer RTL behavior now follows resolved direction through `:dir(rtl)`.
50
+ * Badge typography uses shared font-size/density tokens instead of private literals.
51
+ * `.sr-only` now combines modern `clip-path` hiding with the legacy `clip` fallback.
52
+ * `dim` and `indigo` shadows use palette-appropriate shadow colors.
53
+ * Vendor pseudo-element handling for color inputs and meters.
54
+ * Tooltip Escape handling and LIFO surface dismissal, including pinned tooltips.
55
+ * OTP, switch, joined-control, floating-field, validation, and native color-control focus/state edge cases.
56
+ * Flyout panel lifecycle cleanup.
57
+ * Prose spacing and component focus regressions.
58
+ * Compatibility checks ignore feature names appearing only in CSS comments.
59
+ * Navbar and status-bar guidance now makes responsive trigger placement and transient-feedback semantics explicit.
60
+
61
+ ### Breaking
62
+
63
+ * `actual-css` now contains only the core. Replace it with `actual-css/full` when the previous full-framework behavior is required.
64
+ * `actual-css/js` / `actual.js` now contain only the enhancement loader. Use `actual-css/js/full` / `actual.full.js` for the previous complete runtime.
65
+ * `.grid-N` no longer means a fixed N-column grid at every width; it is a responsive structural-density preset, with balanced divisor layouts available through `.container-query`.
66
+ * `.sidebar-layout` no longer depends on `.container-query` or the old fixed breakpoint; direct children now participate in its intrinsic flex sizing contract.
67
+ * `.card` now establishes a column flex formatting context so direct structural footers can anchor to the bottom; code relying on block margin collapsing inside cards should be reviewed.
68
+ * Direct imports of `typography/prose` no longer include `.lead` or `.measure`; import `typography/lead` and `layout/measure` explicitly when needed.
4
69
 
5
- This project follows Keep a Changelog and uses semver, including during 0.x.
6
70
 
7
71
  ## [0.3.1] - 2026-08-20
8
72
 
package/README.md CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  Plain CSS component framework for new projects. Semantic classes, shared variants, small tokens, theme hooks, and progressive enhancement.
4
4
 
5
- Actual CSS claims a small set (see `reserved-classes.json`) of global class names.
5
+ Actual CSS claims a documented set of global class names; the package publishes
6
+ it as [`actual-css/reserved-classes.json`](scripts/reserved-classes.json).
6
7
 
7
- For existing projects: cascade layers, import order, or an optional prefix transform.
8
+ For existing projects: use cascade layers, import order, or your own build-time
9
+ prefix transform.
8
10
 
9
11
  ## Install
10
12
 
@@ -15,38 +17,39 @@ npm install actual-css
15
17
  Import the full framework in your CSS:
16
18
 
17
19
  ```css
18
- @import "actual-css";
20
+ @import "actual-css/full";
19
21
  ```
20
22
 
23
+ `actual-css/full` ships every functional family. The bare `actual-css` entrypoint is the minimal core (reset, tokens, theme, base, intents, variants, focus, print).
24
+
21
25
  Or import only the pieces you use:
22
26
 
23
27
  ```css
24
- @import "actual-css/css/reset";
25
- @import "actual-css/css/base";
26
- @import "actual-css/css/tokens";
27
- @import "actual-css/css/theme";
28
- @import "actual-css/css/intents";
29
- @import "actual-css/css/variants";
28
+ @import "actual-css/css";
30
29
  @import "actual-css/css/layout";
31
- @import "actual-css/css/grid";
32
30
  @import "actual-css/css/components/button";
33
31
  @import "actual-css/css/components/card";
34
32
  @import "actual-css/css/forms";
35
33
  @import "actual-css/css/components/flyout";
36
34
  @import "actual-css/css/utilities";
37
- @import "actual-css/css/components/join";
38
- /* Keep the focus baseline after components and controls. */
39
- @import "actual-css/css/focus";
40
35
  ```
41
36
 
42
- `focus` is the final interactive baseline in modular builds: older browsers
43
- retain a visible `:focus` outline, while browsers with `:focus-visible` avoid
44
- showing it for pointer focus.
37
+ `actual-css/css` is the minimal core. Family manifests (`css/layout`,
38
+ `css/components`, `css/typography`, `css/effects`, `css/utilities`) and
39
+ their modules map one-to-one to `src/css/`; `css/forms` is the exception —
40
+ it points at the native-controls base, with `css/forms/all` exposing the
41
+ complete Forms family. See the
42
+ [modular import guide](docs/pages/guides/modular-import.md) for the full map.
43
+
44
+ For a flattened custom bundle, import the source entrypoints you want from
45
+ `actual-css/css` and run `npx actual-css bundle src/app.css --out public/app.css --minify`.
46
+ The CLI resolves package subpaths and relative files, then inlines them without
47
+ transpiling modern CSS.
45
48
 
46
- You can also use the compiled file directly:
49
+ You can also use the compiled full bundle directly:
47
50
 
48
51
  ```html
49
- <link rel="stylesheet" href="actual.min.css">
52
+ <link rel="stylesheet" href="actual.full.min.css">
50
53
  ```
51
54
 
52
55
  ## Usage
@@ -96,14 +99,14 @@ Undocumented `is-*` classes are runtime internals.
96
99
 
97
100
  **Theme hooks** — public tokens for color, radius, shadow, motion, and typography. Reference presets in `src/css/themes/` are demo material, not default CSS or public package entrypoints.
98
101
 
99
- ## Optional CSS
100
-
101
- ```css
102
- @import "actual-css/css/layer";
103
- @import "actual-css/css/optional/index";
104
- ```
102
+ ## Modular CSS
105
103
 
106
- Browse [`src/css/optional/`](src/css/optional/) for available modules such as custom scrollbars, scroll snap rails, extra utilities, and optional layout helpers.
104
+ The family manifests are the module catalog: `core`, `layout`, `typography`,
105
+ `forms`, `components`, `effects`, and `utilities` under `src/css/`, each with
106
+ an `index.css` manifest and per-module files. Import a manifest to get the
107
+ family, or a single file for one module. See the
108
+ [modular import guide](docs/pages/guides/modular-import.md) for the full map
109
+ of module names to import paths.
107
110
 
108
111
  ## JavaScript enhancers
109
112
 
@@ -114,7 +117,7 @@ Presentation (`class`) and behaviour (`data-enhance`) are separate layers — im
114
117
  Use the full module:
115
118
 
116
119
  ```html
117
- <script src="actual.js" type="module"></script>
120
+ <script src="actual.full.js" type="module"></script>
118
121
  ```
119
122
 
120
123
  Or import only the enhancers you need:
@@ -127,18 +130,20 @@ import "actual-css/js/mask";
127
130
  import "actual-css/js/tooltip";
128
131
  ```
129
132
 
130
- The package does not maintain separate partial bundles. Modular entrypoints map to source files, so each project can compose the framework shape it needs. To customize the full runtime, comment the imports you do not want in `src/js/index.js` and rebuild the JavaScript bundle. JavaScript modules are safe to import during server-side rendering; outside a browser, registration is a no-op.
133
+ The package does not maintain separate partial bundles. Modular entrypoints map to source files, so each project can compose the framework shape it needs. To customize the full runtime, comment the imports you do not want in `src/js/full.js` and rebuild the JavaScript bundle. JavaScript modules are safe to import during server-side rendering; outside a browser, registration is a no-op.
131
134
 
132
135
  For project-specific behavior, use `actual-css/js/enhance` and the small input helpers rather than patching built-in modules. See [Progressive Enhancements](docs/pages/enhancements/overview.md) for custom filters, textarea autogrow, ajax forms, and htmx-like patterns.
133
136
 
134
137
  ## Distribution
135
138
 
136
- * `dist/actual.css` — readable modern CSS.
137
- * `dist/actual.min.css` — the same CSS, minified for production.
139
+ * `dist/actual.css` — readable core CSS.
140
+ * `dist/actual.min.css` — the core, minified for production.
141
+ * `dist/actual.full.css` — readable full-bundle CSS (every family).
142
+ * `dist/actual.full.min.css` — the full bundle, minified for production.
138
143
 
139
144
  Modern syntax such as `light-dark()`, `color-mix()`, `@container`, `:has()`, `100dvh`, and `100vi` is preserved in the distributed files.
140
145
 
141
- Actual CSS does not currently ship a separate compatibility build. It is designed as progressive enhancement: modern features are guarded with `@supports` where needed, while older browsers still receive core layout, forms, and components.
146
+ Actual CSS does not currently ship a separate compatibility build. It is designed as progressive enhancement: modern features are guarded with `@supports` where needed, while older browsers still receive the core styles and the layout, forms, and components.
142
147
 
143
148
  For more conservative fallbacks, import and compose the source entrypoints directly.
144
149