/* ==========================================================================
   Baobab Studio — portfolio.css
   Galería tipo "Museum" / "Art Gallery".
   ========================================================================== */

/* ── Hero / Intro ───────────────────────────────────────────────────────── */
.portfolio-hero {
    padding: 180px clamp(1.5rem, 5vw, 6rem) var(--space-xl);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 700px;
    margin-inline: auto;
}

.portfolio-hero__title {
    font-size: var(--text-hero);
    font-weight: 300;
    letter-spacing: 0.06em;
    margin-bottom: var(--space-sm);
    color: var(--color-charcoal);
}

.portfolio-hero__subtitle {
    font-size: var(--text-md);
    font-weight: 300;
    color: var(--color-bark);
    line-height: 1.75;
    max-width: 56ch;
    margin-inline: auto;
    margin-bottom: var(--space-md);
}

/* ── Filtros de categoría ───────────────────────────────────────────────── */
.portfolio-filters {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: var(--space-sm) clamp(1.5rem, 5vw, 6rem) var(--space-lg);
    flex-wrap: wrap;
}

.portfolio-filter-btn {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    font-weight: 300;
    letter-spacing: var(--tracking-ultra);
    text-transform: uppercase;
    color: var(--color-bark);
    padding: 0.5em 1.5em;
    border: 1px solid transparent;
    transition: color var(--transition-fast), border-color var(--transition-fast);
    background: none;
    cursor: pointer;
}

.portfolio-filter-btn:hover,
.portfolio-filter-btn.is-active {
    color: var(--color-charcoal);
    border-color: var(--color-stone);
}

.portfolio-filter-btn.is-active {
    border-color: var(--color-charcoal);
}

/* ── Galería Masonry-style (CSS columns) ────────────────────────────────── */
.portfolio-gallery {
    padding: 0 clamp(0.75rem, 2vw, 2rem) var(--space-xl);
    columns: 3;
    column-gap: 8px;
}

.portfolio-item {
    break-inside: avoid;
    margin-bottom: 8px;
    position: relative;
    overflow: hidden;
    cursor: pointer;
    /* GPU layer para suavidad */
    will-change: transform;
}

/* Alturas variadas para efecto masonry */
.portfolio-item:nth-child(3n+1) { aspect-ratio: 4 / 5; }
.portfolio-item:nth-child(3n+2) { aspect-ratio: 3 / 4; }
.portfolio-item:nth-child(3n+3) { aspect-ratio: 5 / 6; }

.portfolio-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform var(--transition-slow);
}

.portfolio-item:hover img {
    transform: scale(1.05);
}

/* Overlay info */
.portfolio-item__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to bottom,
        transparent 40%,
        rgba(28,24,20,0.85) 100%
    );
    opacity: 0;
    transition: opacity var(--transition-medium);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 2rem;
}

.portfolio-item:hover .portfolio-item__overlay {
    opacity: 1;
}

.portfolio-item__category {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    font-weight: 300;
    letter-spacing: var(--tracking-ultra);
    text-transform: uppercase;
    color: var(--color-bronze);
    margin-bottom: 0.4rem;
}

.portfolio-item__title {
    font-family: var(--font-serif);
    font-size: var(--text-lg);
    font-weight: 300;
    letter-spacing: var(--tracking-wide);
    color: var(--color-cream);
    line-height: 1.2;
    margin-bottom: 0.3rem;
}

.portfolio-item__year {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    color: rgba(245,240,235,0.5);
    letter-spacing: 0.08em;
}

.portfolio-item__expand {
    position: absolute;
    top: 1.2rem;
    right: 1.2rem;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background-color: rgba(245,240,235,0.15);
    backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity var(--transition-medium), background-color var(--transition-fast);
}

.portfolio-item:hover .portfolio-item__expand {
    opacity: 1;
}

.portfolio-item__expand:hover {
    background-color: rgba(245,240,235,0.3);
}

.portfolio-item__expand svg {
    width: 14px;
    height: 14px;
    color: var(--color-cream);
}

/* ── Item oculto por filtro ─────────────────────────────────────────────── */
.portfolio-item.is-hidden {
    display: none;
}

/* ════════════════════════════════════════════════════════════════════════════
   LIGHTBOX
   ════════════════════════════════════════════════════════════════════════════ */
.portfolio-lightbox {
    position: fixed;
    inset: 0;
    z-index: 200;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--transition-medium);
}

.portfolio-lightbox.is-open {
    opacity: 1;
    pointer-events: all;
}

.lightbox__backdrop {
    position: absolute;
    inset: 0;
    background-color: rgba(28,24,20,0.96);
    cursor: zoom-out;
}

.lightbox__inner {
    position: relative;
    z-index: 1;
    max-width: min(90vw, 1200px);
    max-height: 90vh;
    display: flex;
    gap: var(--space-lg);
    align-items: center;
}

.lightbox__img-wrap {
    flex: 1;
    overflow: hidden;
    max-height: 85vh;
}

.lightbox__img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}

.lightbox__info {
    width: 260px;
    flex-shrink: 0;
    color: var(--color-cream);
}

.lightbox__category {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    letter-spacing: var(--tracking-ultra);
    text-transform: uppercase;
    color: var(--color-bronze);
    margin-bottom: 0.6rem;
}

.lightbox__title {
    font-family: var(--font-serif);
    font-size: var(--text-xl);
    font-weight: 300;
    letter-spacing: var(--tracking-wide);
    color: var(--color-cream);
    line-height: 1.2;
    margin-bottom: 0.4rem;
}

.lightbox__year {
    font-family: var(--font-sans);
    font-size: var(--text-xs);
    color: rgba(245,240,235,0.4);
    margin-bottom: 1.2rem;
}

.lightbox__desc {
    font-size: var(--text-sm);
    color: rgba(245,240,235,0.65);
    line-height: 1.75;
    max-width: 100%;
}

.lightbox__close {
    position: fixed;
    top: 1.5rem;
    right: 2rem;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-cream);
    font-size: 1.5rem;
    cursor: pointer;
    z-index: 2;
    opacity: 0.6;
    transition: opacity var(--transition-fast);
}

.lightbox__close:hover { opacity: 1; }

.lightbox__close svg {
    width: 24px;
    height: 24px;
    stroke: currentColor;
    stroke-width: 1;
}

.lightbox__nav-prev,
.lightbox__nav-next {
    position: fixed;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
    color: var(--color-cream);
    cursor: pointer;
    padding: 1rem;
    opacity: 0.5;
    transition: opacity var(--transition-fast);
}

.lightbox__nav-prev { left: 1.5rem; }
.lightbox__nav-next { right: 1.5rem; }

.lightbox__nav-prev:hover,
.lightbox__nav-next:hover { opacity: 1; }

.lightbox__nav-prev svg,
.lightbox__nav-next svg {
    width: 28px;
    height: 28px;
    stroke-width: 1;
}

/* ── Responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
    .portfolio-gallery { columns: 2; }
}

@media (max-width: 640px) {
    .portfolio-gallery { columns: 1; }
    .portfolio-item__overlay { opacity: 1; background: linear-gradient(to bottom, transparent 55%, rgba(28,24,20,0.8) 100%); }
    .lightbox__inner { flex-direction: column; }
    .lightbox__info { width: 100%; }
}
