Hero Cover
Full-viewport cover. Height fills 100svh - header.
SCSS
.module--hero[data-style="cover"] {
min-height: calc(100svh - var(--header-height));
img, video { object-fit: cover; width: 100vw; }
media-player { position: relative; overflow: hidden; }
media-player iframe {
position: absolute; top: 50%; left: 50%;
transform: translate(-50%, -50%);
}
}


Full-Width — Landscape
Landscape 16:9 media with autoplay and poster fallback.
SCSS
.media-showcase__hero--wide {
.module__media { aspect-ratio: 16 / 9; }
video, media-player, iframe, img {
inline-size: 100%; block-size: 100%;
object-fit: cover;
}
}


Ultra-Wide 21:9
Custom 21:9 aspect ratio with video controls enabled.
SCSS
/* aspect_ratio_desktop: 'other'
container_width_desktop: 21
container_height_desktop: 9
→ --aspect-ratio-desktop: 21 / 9 */
.media-showcase__hero--ultrawide .module__media {
aspect-ratio: 21 / 9;
}


Grid — 3 Columns
Media at landscape, square, and portrait aspect ratios.
SCSS
[data-size="landscape"] .component { --aspect-ratio-desktop: 16/9; }
[data-size="square"] .component { --aspect-ratio-desktop: 1/1; }
[data-size="portrait"] .component { --aspect-ratio-desktop: 3/4; }






Tiles — Asymmetric Composition
Asymmetric tile grid with a portrait tile and two stacked tiles that match its height.
SCSS
.module--tiles .tiles__wrapper {
display: grid;
gap: var(--grid-gap);
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
> :first-child { grid-row: 1 / -1; }
> * { min-height: 0; }
> * .module { height: 100%; }
}






Masonry Gallery — CSS Columns
Media using CSS column-count for true masonry flow.
SCSS
.module--masonry[data-style="tiles"] .grid {
display: block;
column-count: 3;
column-fill: balance;
column-gap: var(--grid-gap);
> * { break-inside: avoid; }
}






























Local Asset — landscape.mp4
Theme-bundled MP4 from assets/src/videos/ via STYLESHEET_PATH_URI. Independent of ACF & Media Library.
SCSS
.media-showcase__hero--wide {
.module__media { aspect-ratio: 16 / 9; }
video, media-player {
inline-size: 100%; block-size: 100%;
object-fit: cover;
}
}

