Acceptance Criteria
RuneConfig.frameTarget ('media'|'self', default 'media' when a media section exists) routes frame chrome; card→media zone, figure/showcase→self.frame on a rune with no frame target emits a build warning.- Clip is host-owned: clipping hosts (
card/bento-cell/figure) crop a displaced/oversized guest (peek + anchor, container-query context); breakout hosts spill (bleed); the --in-bento-cell one-off is generalised; offset collapses on mobile. - An
oversized guest opts out of the media-zone width:100% normalisation (folded into the split.css opt-out list). frame facets reconcile with bento (frame-aspect→--bento-media-aspect, frame-anchor→--bento-media-anchor, grid-level frame default cascades to cells).
Approach
Media-zone contract WORK-339; packages/lumina/styles/layouts/split.css. SPEC-086 §3–§4.
Resolution
Completed: 2026-06-09
Branch: claude/spec-086-surface-chrome
What was done
RuneConfig.frameTarget ('media'|'self', default media when a media section exists) routes frame chrome to the [data-section="media"] zone or the rune root; figure → self; validated in validate.ts; build warning when no target resolves.- Shared
packages/lumina/styles/dimensions/frame.css: silhouette drop-shadow, aspect, anchor (object-position), place, oversize (guest exceeds slot), displacement (bleed/peek) + mobile collapse. split.css breakout opt-out now tracks data-displace (was data-bleed).- bento reconciliation:
frame-aspect/frame-anchor feed the existing --bento-media-aspect/--bento-media-anchor; a grid-level frame cascades to cells (bento.ts), grid never claims chrome itself.
Notes
- Oversize opt-out is realised via
frame.css specificity (the guest's width: calc(100% * oversize) outranks the media zone's width:100%), rather than a literal new arm in the split.css :is() list — same effect (the guest exceeds and is clipped). - Host-owned clip: media wells clip (WORK-339
overflow:hidden), breakout hosts (showcase-self) spill; the --in-bento-cell guard is retained on the showcase breakout selector rather than fully generalised. - CSS is verified structurally (3143 tests pass); visual polish may warrant a follow-up pass.