/* Galería */
.gallery { padding-block: clamp(32px, 4vw, 56px) var(--section-y); }

.filters {
    position: sticky;
    top: var(--header-h);
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: var(--space-4);
    padding-block: 12px;
    background: var(--color-bg);
    border-bottom: 1px solid var(--color-sand);
}
.filters__list { display: flex; flex-wrap: wrap; gap: 4px; }
.filter {
    min-height: 44px;
    padding: 8px 14px;
    background: transparent;
    border: 1px solid transparent;
    cursor: pointer;
    font-stretch: 88%;
    font-weight: 500;
    transition: background-color .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease);
}
.filter:hover { border-color: var(--color-ink); }
.filter[aria-pressed="true"] { background: var(--color-primary); color: var(--color-white); font-weight: 600; }
.filters__count { flex: none; font-size: .9375rem; color: var(--color-stone); }

/* Masonry con columnas CSS: conserva dimensiones y no necesita JS para maquetar */
.masonry { column-count: 4; column-gap: 8px; }
.masonry__cell { break-inside: avoid; margin-bottom: 8px; }
.masonry__cell[hidden] { display: none; }
@keyframes cell-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.js .masonry__cell.is-shown { animation: cell-in .45s var(--ease) both; }

.g-item { position: relative; display: block; color: var(--color-white); text-decoration: none; }
.g-item .zoom img { display: block; }
.g-item__caption {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 28px 12px 10px;
    background: linear-gradient(0deg, rgba(10,14,12,.82), rgba(10,14,12,0));
    font-weight: 600;
    font-stretch: 88%;
    line-height: 1.2;
    opacity: 0;
    transition: opacity .3s var(--ease);
}
.g-item__caption small { font-size: .8125rem; font-weight: 400; }
.g-item:hover .g-item__caption, .g-item:focus-visible .g-item__caption { opacity: 1; }

.gallery__note { margin-top: var(--space-3); max-width: 76ch; font-size: .9375rem; color: var(--color-stone); }

.gallery-cta { background: var(--color-travertine); }
.gallery-cta__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-3); padding-block: clamp(40px, 6vw, 80px); }
.gallery-cta .section-title { max-width: 16ch; }

/* Lightbox */
.lightbox {
    position: fixed;
    inset: 0;
    z-index: 300;
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr) 64px;
    grid-template-rows: 64px minmax(0, 1fr) auto;
    background: rgba(8, 20, 14, .97);
    color: var(--color-white);
}
.lightbox[hidden] { display: none; }
.lightbox__stage { grid-column: 2; grid-row: 2; display: grid; place-items: center; min-height: 0; }
.lightbox__img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; opacity: 0; transition: opacity .3s var(--ease); }
.lightbox__img.is-ready { opacity: 1; }
.lightbox__btn { display: grid; place-items: center; width: 56px; height: 56px; background: none; border: 0; color: var(--color-white); cursor: pointer; transition: background-color .2s; }
.lightbox__btn:hover { background: rgba(255,255,255,.12); }
.lightbox__btn .icon { width: 28px; height: 28px; }
.lightbox__close { grid-column: 3; grid-row: 1; justify-self: end; }
.lightbox__prev { grid-column: 1; grid-row: 2; align-self: center; justify-self: center; }
.lightbox__next { grid-column: 3; grid-row: 2; align-self: center; justify-self: center; }
.lightbox__meta { grid-column: 1 / -1; grid-row: 3; display: flex; justify-content: space-between; gap: 16px; padding: 12px 20px 16px; font-size: .9375rem; }
.lightbox__title { font-weight: 600; }
.lightbox__tag { margin-left: 8px; color: rgba(255,255,255,.76); }
body.lb-open { overflow: hidden; }

@media (max-width: 1023px) {
    .masonry { column-count: 3; }
    .filters { flex-wrap: nowrap; }
    .filters__count { display: none; }
    .filters__list { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); }
    .filter { flex: none; }
}

@media (max-width: 767px) {
    .masonry { column-count: 2; column-gap: 4px; }
    .masonry__cell { margin-bottom: 4px; }
    .g-item__caption { opacity: 1; padding: 22px 8px 6px; font-size: .875rem; }
    .g-item__caption small { display: none; }
    .lightbox { grid-template-columns: 1fr 1fr; grid-template-rows: 56px minmax(0, 1fr) 56px auto; }
    .lightbox__stage { grid-column: 1 / -1; grid-row: 2; }
    .lightbox__close { grid-column: 2; grid-row: 1; }
    .lightbox__prev { grid-column: 1; grid-row: 3; }
    .lightbox__next { grid-column: 2; grid-row: 3; }
    .lightbox__meta { grid-row: 4; padding: 8px 16px 12px; }
}
