# 27 — Shell CSS split (prep)

## Policy

Do **not** dump all of 482 body CSS onto the whole site.

## Current ship

Single self-contained `ml2-candidate.bundled.css` (`20260916w2`) enqueued **only** when `ml2_is_shell()`.

## Logical layers (inside bundle)

1. **Envelope** — header, menu, footer, office-wa, tokens, focus states  
2. **Components** — buttons, cards, TOC in reading zone, form-mount visibility  
3. **Body templates** — hero variants (`ml2-hero--text-only`), hub-links, section rhythms  

## Next split (post-review)

Extract `ml2-shell.css` + `ml2-body.css` as separate files **without @import** (Wave1 @import broke layout). Prefer two `<link>` tags from MU when splitting.

## Isolation tests done

Candidates (post single) + live 482: one header/footer; Elementor TOC hidden; form fields visible in mount; non-shell pages (home/about/contact/2530) do not load ML2 CSS.
