Feature plan: Step 1 · Step 2 · Step 3 · Step 4

Stage 1 - Iframe layout rules

  • Changes:

    • Added a .media-embed-card__iframe rule to public/assets/site.css: block display, full width, 16:9 aspect ratio, auto height, no border.

  • Verification:

    • Selector grep: only the embed iframe class is targeted; no generic iframe or details rules added.

    • php tests/run.php: 9 failures with the change and 9 without it (stashed baseline), none in media-embed tests (LocalAppSmoke x2, OfflineSnapshot x4, QuoteCardDisplayNumber, WriteApiSmoke x2); no regression.

  • Notes:

    • Visual browser check is pending and is covered with the theme pass in Stage 3.

Stage 2 - Expando polish and overflow safety

  • Changes:

    • Added scoped rules to public/assets/site.css for .media-embed-card--inline-player: block display with max-width: 100%, pointer cursor on the summary, and top margin on the iframe in the [open] state only.

  • Verification:

    • Selector review: all new rules are scoped to the inline-player card classes; collapsed-state spacing is untouched, and the plain and Instagram cards are not selected.

    • php tests/run.php --filter MediaEmbed is not available; the full suite is unchanged from Stage 1 (9 pre-existing unrelated failures), and the media-embed tests pass.

    • 360px and desktop browser check: pending, covered with the theme pass in Stage 3.

  • Notes:

    • The iframe's width: 100% and the card's max-width: 100% together prevent horizontal overflow.

Stage 3 - Theme check

  • Changes:

    • None. No theme override was needed.

  • Verification:

    • Static review: grep of every file in public/assets/ for iframe, details and summary selectors found none that can match the embed card (all are scoped to other components such as account-key, invitations, private-message and sqlite pages), and no theme-*.css file styles iframe at all.

    • Full test suite: unchanged at the 9 pre-existing unrelated failures; all 50 media-embed test checks pass.

    • Visual check in a browser across themes and at 360px: not performed in this session; it is the remaining release-condition item for the reviewer.

  • Notes:

    • Because the rules are class-scoped and no theme restyles iframes, theme drift is unlikely, but it has not been confirmed visually.