This week's CSS work moves browser navigation, shape decoration, and typographic rhythm closer to declarative primitives. The proposed CSS Route and Navigation Matching specification introduces @route, @navigation, :nav-source, and :link-to(), allowing view-transition direction and link styling to respond to origin, destination, and the clicked element without JavaScript event plumbing.
Shape APIs are expanding too. The experimental border-shape property accepts the same basic shapes as clip-path, but lets borders, outlines, and shadows follow the path; its two-shape form defines outer and inner boundaries for cutouts and complex frames. Ahmad Shadeed's guide to lh shows a more immediately usable primitive: spacing, masks, icons, and floated images can align to computed line height and remain stable when typography changes. These features share a useful design principle: encode the relationship in CSS itself instead of synchronizing a visual effect with hard-coded pixels or JavaScript state.
Browser convergence is still incomplete. Firefox's progress() implementation is in Nightly and scheduled for Firefox 155, CSS mixins remain at the prototyping stage, and border-shape is Chrome-only. Progressive enhancement and support checks remain part of the implementation, not an afterthought.
Two practical videos make that principle concrete. The upgraded CSS attr() can turn existing data attributes into typed colors, lengths, delays, and identifiers, while Kevin Powell passes raw application data through a custom property and keeps unit conversion, caps, and visual constants in calc() and min(). Both patterns reduce synchronization code, but typed attribute support still requires a Chrome-first progressive-enhancement path.