.v-project-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:clamp(1.5rem,3vw,2.25rem)}.v-projects{--v-project-cols: 3;display:grid;grid-template-columns:repeat(var(--v-project-cols),minmax(0,1fr));gap:clamp(1rem,2.5vw,2rem)}.v-projects--cols-2{--v-project-cols: 2}.v-projects--cols-4{--v-project-cols: 4}.v-project__link{display:block;color:inherit;text-decoration:none}.v-project__media{position:relative;display:block;overflow:hidden;aspect-ratio:4 / 5;border-radius:var(--v-radius-lg);background:var(--v-surface-2)}.v-projects--square .v-project__media{aspect-ratio:1}.v-projects--landscape .v-project__media{aspect-ratio:3 / 2}.v-project__img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .8s var(--v-ease)}.v-project__link:hover .v-project__img,.v-project__link:focus-visible .v-project__img{transform:scale(1.04)}.v-project__body{display:grid;gap:.3rem;padding-top:1rem}.v-project__cat{color:var(--v-muted);font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.v-project__title{margin:0;color:inherit;font-family:var(--v-font-heading);font-size:clamp(1.15rem,1.8vw,1.45rem);font-weight:600;letter-spacing:-.02em;line-height:1.2}.v-projects--natural{display:block;columns:var(--v-project-cols) 260px;column-gap:clamp(1rem,2.5vw,2rem)}.v-projects--natural .v-project{break-inside:avoid;margin-bottom:clamp(1rem,2.5vw,2rem)}.v-projects--natural .v-project__media{aspect-ratio:auto}.v-projects--natural .v-project__img{height:auto}.v-projects--overlay .v-project__link{position:relative}.v-projects--overlay .v-project__body{position:absolute;inset:auto 0 0;padding:clamp(1rem,2vw,1.5rem);border-radius:0 0 var(--v-radius-lg) var(--v-radius-lg);background:linear-gradient(to top,rgb(0 0 0 / .62),transparent);color:#fff}.v-projects--overlay .v-project__cat{color:#ffffffc7}@media(hover:hover)and (min-width:783px){.v-projects--overlay .v-project__body{opacity:0;transform:translateY(8px);transition:opacity .35s ease,transform .35s var(--v-ease)}.v-projects--overlay .v-project__link:hover .v-project__body,.v-projects--overlay .v-project__link:focus-visible .v-project__body{opacity:1;transform:none}}.v-projects__empty{color:var(--v-muted)}.v-project-cover{margin:0 0 clamp(2rem,4vw,3.5rem);overflow:hidden;border-radius:var(--v-radius-lg)}.v-project-cover img{display:block;width:100%;height:auto;max-height:80vh;object-fit:cover}.v-project-nav{max-width:760px;margin:clamp(2.5rem,5vw,4rem) auto 0}.v-related-projects{border-top:1px solid var(--v-border)}@media(max-width:1024px){.v-projects--cols-4{--v-project-cols: 3}}@media(max-width:782px){.v-projects,.v-projects--cols-3,.v-projects--cols-4{--v-project-cols: 2}}@media(max-width:480px){.v-projects:not(.v-projects--natural){grid-template-columns:minmax(0,1fr)}}
