/* Shared project cards: three on desktop, two on tablet, one on mobile. */
.projects .project-grid,.portfolio-list.project-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2.75rem 1.75rem;align-items:start}
.projects .project-card{min-width:0;grid-row:auto;grid-column:auto;width:100%;margin:0}
.projects .project-card img,.portfolio-list.project-index img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:2px}
.projects .project-card a{display:block}.projects .project-meta{display:flex;flex-direction:column;gap:.55rem;padding:1.1rem 0 0;position:static;background:none;color:var(--foreground)}
.projects .project-meta small,.portfolio-list.project-index small{font-size:.75rem;line-height:1.6;letter-spacing:.09em;text-transform:uppercase;color:var(--muted-foreground)}
.projects .project-meta strong{font-family:var(--font-display),sans-serif;font-size:clamp(1.25rem,1.8vw,1.6rem);font-weight:600;line-height:1.3}
.portfolio-list.project-index{padding-block:0 5rem}.portfolio-list.project-index article{display:flex;flex-direction:column;align-items:stretch;gap:1.15rem;min-width:0}.portfolio-list.project-index article>a{display:block;overflow:hidden}.portfolio-list.project-index h2{font-size:clamp(1.35rem,2vw,1.8rem);line-height:1.3;margin:.5rem 0 .8rem}.portfolio-list.project-index p{font-size:1rem;line-height:1.7;margin:0 0 1rem}.portfolio-list.project-index article>div{display:flex;flex-direction:column;align-items:flex-start}.project-index .text-link{font-size:.875rem}.project-card a:focus-visible,.project-index a:focus-visible{outline:2px solid var(--primary);outline-offset:5px}
@media(max-width:1000px){.projects .project-grid,.portfolio-list.project-index{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.5rem 1.5rem}}
@media(max-width:600px){.projects .project-grid,.portfolio-list.project-index{grid-template-columns:minmax(0,1fr);gap:2.5rem}.projects .project-card img,.portfolio-list.project-index img{aspect-ratio:4/3}.projects .project-meta strong{font-size:1.5rem}}
.project-filter-bar{margin-bottom:2.5rem;scroll-margin-top:7rem}.project-filters{display:flex;flex-wrap:wrap;gap:.65rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.project-filters a{display:inline-flex;align-items:center;gap:.8rem;padding:.8rem 1.1rem;border:1px solid var(--border);border-radius:2px;font-size:.875rem;line-height:1.4;min-height:44px}.project-filters a[aria-current]{background:var(--primary);color:white;border-color:var(--primary)}.project-filters a:hover{border-color:var(--primary)}.project-filters a:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.project-filters span{font-size:.75rem;opacity:.75}.project-filter-bar>p{font-size:.875rem;color:var(--muted-foreground);margin:1rem 0 0}.project-empty{padding-block:1rem 4rem}.project-empty h2{font-size:clamp(1.5rem,3vw,2rem)}.project-empty p{color:var(--muted-foreground)}
.project-archive-cta{margin-top:3.5rem;padding-top:2rem;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:2rem}.project-archive-cta p{max-width:42rem;color:var(--muted-foreground);line-height:1.7}.project-archive-cta .button{flex:none}
.project-gallery{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(.75rem,1.5vw,1.5rem);padding-block:0 clamp(4rem,8vw,8rem)}.project-gallery figure{grid-column:span 6;overflow:hidden;background:#e9edef}.project-gallery .gallery-feature{grid-column:1/-1}.project-gallery figure:nth-child(5n+2),.project-gallery figure:nth-child(5n+5){grid-column:span 5}.project-gallery figure:nth-child(5n+3),.project-gallery figure:nth-child(5n+4){grid-column:span 7}.project-gallery img{display:block;width:100%;height:clamp(19rem,38vw,36rem);object-fit:cover;transition:transform .6s ease}.project-gallery .gallery-feature img{height:clamp(25rem,55vw,49rem)}.project-gallery figure:hover img{transform:scale(1.015)}
@media(max-width:760px){.project-archive-cta{align-items:flex-start;flex-direction:column;margin-top:2.5rem}.project-gallery{grid-template-columns:1fr;gap:1rem}.project-gallery figure,.project-gallery .gallery-feature,.project-gallery figure:nth-child(n){grid-column:1}.project-gallery img,.project-gallery .gallery-feature img{height:auto;max-height:none;aspect-ratio:4/3}.project-gallery figure:nth-child(3n) img{aspect-ratio:3/4}.project-archive-cta .button{width:100%;text-align:center}}
