.portfolio {
    --portfolio-columns: 3;
    --portfolio-grid-row: 4px;
    display: grid;
    grid-template-columns: repeat(var(--portfolio-columns), minmax(0, 1fr));
    grid-auto-rows: var(--portfolio-grid-row);
    grid-auto-flow: dense;
    column-gap: var(--gallery-gap);
    row-gap: 0;
    width: 100%;
    min-height: 1px;
}
.portfolio .portfolio-item {
    position: relative;
    align-self: start;
    width: 100%;
    margin: 0;
}
.portfolio:not(.is-revealed) .portfolio-item {
    opacity: 0;
    visibility: hidden;
}
.portfolio.is-revealed .portfolio-item {
    visibility: visible;
}
.portfolio-item {
    display: block;
    padding: 0;
    border: 0;
    background: transparent;
    text-align: left;
    cursor: default;
    overflow: hidden;
}
.portfolio-item::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    background: rgba(112, 72, 38, .10);
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--motion-fast) ease;
}
.portfolio-item__image {
    display: block;
    width: 100%;
    height: auto;
    user-select: none;
    -webkit-user-drag: none;
}
@media (hover: hover) and (pointer: fine) {
    .portfolio-item:hover::after {
        opacity: 1;
    }
}
.portfolio-item:focus-visible::after {
    opacity: 1;
}
.portfolio-item:focus-visible {
    outline: 1px solid #111;
    outline-offset: 2px;
}

.portfolio-filters {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 7px 18px;
    margin: 0 0 clamp(18px, 2.4vw, 34px);
}
.portfolio-filter {
    padding: 3px 0;
    border: 0;
    border-bottom: 1px solid transparent;
    background: transparent;
    color: inherit;
    font-size: 12px;
    letter-spacing: .045em;
    cursor: pointer;
    opacity: .42;
    transition: opacity var(--motion-fast) ease, border-color var(--motion-fast) ease;
}
.portfolio-filter:hover,
.portfolio-filter:focus-visible,
.portfolio-filter.is-active {
    opacity: 1;
}
.portfolio-filter.is-active { border-bottom-color: currentColor; }
.portfolio-filter:focus-visible { outline: 1px solid currentColor; outline-offset: 4px; }
.portfolio-item[hidden] { display: none !important; }
.portfolio-empty {
    margin: clamp(32px, 6vw, 80px) 0;
    text-align: center;
    opacity: .45;
}

.portfolio.is-filtering .portfolio-item {
    transition: opacity 220ms ease;
}
.portfolio.is-filtering .portfolio-item:not([hidden]) { opacity: 1; }
