/* Featured off-plan projects. First light band, so cards are bare images on the page ground with no container,
   and the starting price is the largest element on each card. */

.projects {
    padding-top: var(--space-8);
}

.projects__head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--space-5);
    margin-bottom: var(--space-8);
}

.projects__title {
    margin-top: var(--space-2);
    font-size: var(--text-3xl);
}

.projects__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr));
    gap: var(--space-8) var(--space-6);
    list-style: none;
    padding: 0;
}

.project__link {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    text-decoration: none;
    color: inherit;
}

.project__media {
    position: relative;
    aspect-ratio: 4 / 3;
    margin: 0 0 var(--space-4);
    border-radius: var(--radius-md);
    overflow: hidden;
    background: var(--line);
}

.project__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--dur-slow) var(--ease-out);
}

a.project__link:hover .project__media img {
    transform: scale(1.03);
}

.project__status {
    position: absolute;
    top: var(--space-3);
    left: var(--space-3);
    padding: var(--space-1) var(--space-3);
    background: var(--surface);
    border-radius: var(--radius-pill);
    font-size: var(--text-2xs);
    font-weight: var(--fw-semibold);
    letter-spacing: 0.04em;
    color: var(--fg);
}

.project__price {
    font-size: var(--text-xl);
    font-weight: var(--fw-bold);
    letter-spacing: -0.02em;
    line-height: 1.2;
}

.project__name {
    font-size: var(--text-md);
    font-weight: var(--fw-medium);
    letter-spacing: 0;
}

.project__place {
    font-size: var(--text-sm);
    color: var(--fg-dim);
}

.project__meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2) var(--space-5);
    margin-top: var(--space-3);
    padding-top: var(--space-3);
    border-top: 1px solid var(--line);
}

.project__meta div {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.project__meta dt {
    font-size: var(--text-2xs);
    letter-spacing: 0.04em;
    color: var(--fg-dim);
}

.project__meta dd {
    margin: 0;
    font-size: var(--text-sm);
    font-weight: var(--fw-medium);
}

@media (max-width: 560px) {
    .projects__head {
        margin-bottom: var(--space-7);
    }

    .projects__grid {
        grid-template-columns: minmax(0, 1fr);
        gap: var(--space-7);
    }
}

@media (prefers-reduced-motion: no-preference) {
    .projects .project__media {
        clip-path: inset(0 0 100% 0);
    }

    .projects .project__link > :not(.project__media) {
        opacity: 0;
        transform: translateY(0.6rem);
    }

    .projects.is-visible .project__media {
        clip-path: inset(0 0 0 0);
        transition: clip-path 950ms var(--ease-out);
        transition-delay: var(--delay, 0ms);
    }

    .projects.is-visible .project__link > :not(.project__media) {
        opacity: 1;
        transform: translateY(0);
        transition:
            opacity 600ms var(--ease-out),
            transform 600ms var(--ease-out);
        transition-delay: calc(var(--delay, 0ms) + 220ms);
    }
}
