# CSS Feature Support This document tracks fulgur's CSS property support status and any version-specific limitations. ## Effects ### `box-shadow` (v0.4.5+) Supported: - Outer shadows with `offset-x`, `offset-y`, `spread-radius`, `color` (including `rgba()` alpha, `transparent`, `currentColor`) - Multiple comma-separated shadows (painted front-to-back per CSS spec) - Combination with `border-radius` (shadow follows rounded corners; spread expands radii per spec) - Negative `spread-radius` (corners clamp sharp per CSS spec) - Gaussian `blur-radius > 0` (gradient-based 9-slice approximation) Not yet supported: - `inset` shadows: skipped with a `log::warn!` diagnostic. - `box-shadow` on inline-level elements: shadow drawing currently dispatches through the block and table draw paths, so generic inline-level backgrounds, borders, and shadows are not painted today. Use `display: block` (or `inline-block`, which routes through the block draw path) to get shadows on generic boxes. See PR `#83` and `docs/plans/2026-04-14-box-shadow.md` for implementation details. ## Layout ### `overflow` / `overflow-x` / `overflow-y` Supported: - `overflow: hidden` and `overflow: clip`: paint is clipped to the padding-box of the element. The clip is applied at draw time (`render.rs` push/pop_clip_path) and follows `border-radius` when present. - `overflow: scroll` and `overflow: auto`: PDF has no scroll concept, so these collapse to the same padding-box clip as `hidden`. - `overflow-x` / `overflow-y` per axis: each axis is honoured independently. Per CSS Overflow Module Level 3 §3, when one axis is `visible` and the other is non-`visible`, the `visible` value is promoted to `auto` — fulgur defers to Stylo for that promotion and ends up clipping both axes in that combination. - Inline-level boxes: `display: inline-block` participates in clipping via the block draw path (see fulgur-tsp / PR #131). - Tables: `