/* Explain: Immersive layout utilities and gallery structure */
.texture-section {
    position: relative;
    overflow: hidden;
}

.texture-section::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(rgba(47, 51, 54, 0.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(47, 51, 54, 0.03) 1px, transparent 1px);
    background-size: 34px 34px;
    mask-image: radial-gradient(circle at 30% 10%, black 0%, transparent 62%);
}

.texture-section > * {
    position: relative;
    z-index: 1;
}

.hero-cinema::after {
    content: "";
    position: absolute;
    inset: auto 0 0 0;
    height: 28%;
    pointer-events: none;
    background: radial-gradient(ellipse at bottom, rgba(245, 166, 35, 0.18), transparent 58%);
}

.gallery-mosaic {
    display: grid;
    grid-auto-rows: 260px;
    gap: 1rem;
}

.gallery-frame {
    overflow: hidden;
    border-radius: 1.75rem;
    background: rgba(255, 255, 255, 0.08);
    box-shadow: var(--shadow-soft);
}

@media (min-width: 768px) {
    .gallery-mosaic {
        grid-template-columns: repeat(6, 1fr);
        grid-auto-rows: 220px;
    }

    .gallery-frame:nth-child(1) {
        grid-column: span 4;
        grid-row: span 2;
    }

    .gallery-frame:nth-child(2) {
        grid-column: span 2;
    }

    .gallery-frame:nth-child(3) {
        grid-column: span 2;
    }

    .gallery-frame:nth-child(n+4) {
        grid-column: span 2;
    }
}

@media (max-width: 767px) {
    .hero-cinema {
        min-height: 92vh;
    }
}

@keyframes slowZoom {
    0% { transform: scale(1.0); }
    100% { transform: scale(1.02); }
}

.animate-slow-zoom {
    animation: slowZoom 25s ease-in-out infinite alternate;
}

.reveal-up {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s cubic-bezier(0.2, 0.8, 0.2, 1), transform 0.8s cubic-bezier(0.2, 0.8, 0.2, 1);
}

.reveal-up.in-view {
    opacity: 1;
    transform: translateY(0);
}
