/* ========== HOME: PORTFOLIO GRID ========== */

/* Ocultar todo el contenido hasta que is-ready se active */
.page--home .site-header,
.page--home .site-main {
    opacity: 0;
}

body.is-ready .site-header,
body.is-ready .site-main {
    opacity: 1;
    transition: opacity 400ms ease;
}

/* Scroll snap en el html */
html {
    scroll-snap-type: y mandatory;
    scroll-behavior: smooth;
}

/* MOBILE: anular scroll-snap en html */
@media (max-width: 768px) {
    html {
        scroll-snap-type: none;
    }
}

/* ========== PORTFOLIO SECTION ========== */
.work-portfolio {
    /* Sin padding, el grid maneja su propio espaciado */
}

/* MOBILE: Altura automática según contenido */
@media (max-width: 768px) {
    .page--home .site-main {
        min-height: auto;
    }
}

/* Grid simple y libre */
.work-grid {
    display: grid;
    grid-template-columns: repeat(var(--work-cols), 1fr);
    column-gap: var(--grid-gap-x);
    row-gap: var(--grid-gap-y);
}

/* MOBILE: Padding-top fijo + espacio sobrante abajo */
@media (max-width: 768px) {
    .work-grid {
        padding-top: 0;
        margin-bottom: auto;
        row-gap: calc(var(--grid-gap-y) / 1.25);
    }

    /* Animación de padding-top cuando is-ready */
    body.is-ready .work-grid {
        animation: gridPaddingGrow 2000ms ease forwards;
    }

}

/* DESKTOP: Mantener transición para cálculo dinámico */
@media (min-width: 769px) {
    .work-grid {
        transition: padding-top 400ms ease;
    }
}

/* Animación de padding-top en mobile */
@keyframes gridPaddingGrow {
    from {
        padding-top: 300px;
    }

    to {
        padding-top: 305px;
    }
}

/* Solo las cards marcadas tienen scroll snap */
.work-card.snap-point {
    scroll-snap-align: end;
    scroll-snap-stop: always;
    padding-bottom: var(--grid-gap-y);
    /* Agrega espacio visual debajo */
    margin-bottom: calc(var(--grid-gap-y) * -1);
    /* Compensa para mantener el gap del grid */
}

/* MOBILE: anular scroll-snap en las cards */
@media (max-width: 768px) {
    .work-card.snap-point {
        scroll-snap-align: none;
        scroll-snap-stop: normal;
    }
}

/* ========== ANIMACIONES DE ENTRADA ========== */

/* Estado inicial: invisibles */
.work-card.animate-in {
    opacity: 0;
}

/* MOBILE: sin desplazamiento Y */
@media (max-width: 768px) {
    .work-card.animate-in {
        transform: none;
    }
}

/* DESKTOP: desplazamiento Y pronunciado */
@media (min-width: 769px) {
    .work-card.animate-in {
        transform: translateY(-200px);
    }
}

/* Animación */
body.is-ready .work-card.animate-in {
    animation: cardFadeIn 4000ms ease forwards;
}

/* Delays en cascada */
body.is-ready .work-card.animate-delay-1 {
    animation-delay: 0ms;
}

body.is-ready .work-card.animate-delay-2 {
    animation-delay: 150ms;
}

body.is-ready .work-card.animate-delay-3 {
    animation-delay: 300ms;
}

/* Keyframes: desktop tiene translateY, mobile solo opacity */
@keyframes cardFadeIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Accesibilidad */
@media (prefers-reduced-motion: reduce) {
    .work-card.animate-in {
        opacity: 1;
        transform: none;
        animation: none !important;
    }
}

/* ========== CARD ========== */
.work-card {
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.work-card__title {
    margin: 0;
    font-size: var(--title-size);
    font-weight: 400;
    line-height: var(--title-leading);
    min-height: var(--card-title-h);
    display: flex;
    align-items: flex-end;
    font-style: normal;
    letter-spacing: 0%;

    transition: letter-spacing 500ms ease;
}

.work-card__link {
    display: block;
    flex: 1;
    min-height: 0;
    text-decoration: none;
    color: inherit;
}

.work-card:hover .work-card__title {
    letter-spacing: 1px;
}

.work-card__media {
    aspect-ratio: 16/9;
    width: 100%;
    overflow: hidden;
    background: #f5f5f5;
}

.work-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ========== FADE OUT SUPERIOR ========== */
.page--home .site-main {
    position: relative;
}

.page--home .site-main::before {
    content: '';
    position: fixed;
    top: var(--header-h);
    left: 0;
    right: 0;
    height: 20px;
    background: linear-gradient(to bottom, rgb(255, 255, 255), rgba(255, 255, 255, 0));
    pointer-events: none;
    z-index: 9;
}