/* Explain: App-specific layout utilities (containers, hero frames, grids). */
.tz-container {
    width: 100%;
    max-width: 1180px;
    margin-inline: auto;
    padding-inline: 1.25rem;
}

.tz-container-wide {
    width: 100%;
    max-width: 1440px;
    margin-inline: auto;
    padding-inline: 1.25rem;
}

.tz-hero-frame {
    position: relative;
    min-height: 92vh;
    min-height: 92svh;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
}

.tz-hero-media {
    position: absolute;
    inset: 0;
}

.tz-hero-media video,
.tz-hero-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: brightness(0.9) saturate(1.06);
}

.tz-hero-scrim {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(8, 59, 58, 0.3) 0%, rgba(8, 59, 58, 0.28) 42%, rgba(5, 30, 29, 0.82) 100%);
}

.tz-hero-frame h1 em {
    color: var(--primary-bright);
    text-shadow: 0 3px 22px rgba(4, 22, 21, 0.65);
}

.tz-asymmetric {
    display: grid;
    gap: 2rem;
    grid-template-columns: 1fr;
}

@media (min-width: 900px) {
    .tz-asymmetric {
        grid-template-columns: 0.95fr 1.05fr;
        align-items: center;
        gap: 3rem;
    }
}

.tz-bento {
    display: grid;
    gap: 1.25rem;
    grid-template-columns: 1fr;
}

@media (min-width: 700px) {
    .tz-bento {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .tz-bento {
        grid-template-columns: repeat(4, 1fr);
    }
    .tz-bento-span2 {
        grid-column: span 2;
    }
}

.tz-sticky-side {
    position: static;
}

@media (min-width: 1024px) {
    .tz-sticky-side {
        position: sticky;
        top: 6rem;
    }
}