.projects{padding:calc(var(--nav-height) + var(--space-4xl)) var(--space-lg) calc(var(--footer-height) + var(--space-4xl));min-height:100vh}.projects__header{margin-bottom:var(--space-3xl);justify-content:space-between;align-items:flex-end;display:flex}.projects__title{font-size:var(--text-5xl);letter-spacing:-.02em;font-weight:700;line-height:.95}.projects__count{font-size:var(--text-sm);letter-spacing:.1em;opacity:.5;font-weight:400}.projects__filter{gap:var(--space-lg);margin-bottom:var(--space-2xl);padding-bottom:var(--space-sm);border-bottom:1px solid #0000001a;display:flex}.projects__filter-btn{font-size:var(--text-sm);letter-spacing:.05em;text-transform:uppercase;opacity:.4;background:0 0;border:none;padding:0;font-family:inherit;font-weight:400;transition:opacity .3s}.projects__filter-btn--active,.projects__filter-btn:hover{opacity:1}.projects__grid{gap:var(--space-2xl);grid-template-columns:1fr 1fr;display:grid}.projects__item{position:relative}.projects__item-image{aspect-ratio:16/10;width:100%;margin-bottom:var(--space-sm);background:#f0f0f0;position:relative;overflow:hidden}.projects__item-image img{object-fit:cover;width:100%;height:100%;transition:transform .6s cubic-bezier(.16,1,.3,1)}.projects__item:hover .projects__item-image img{transform:scale(1.05)}.projects__item-meta{justify-content:space-between;align-items:center;display:flex}.projects__item-name{font-size:var(--text-md);letter-spacing:.02em;font-weight:500}.projects__item-type{font-size:var(--text-xs);letter-spacing:.1em;opacity:.5;font-weight:400}.projects__item-tech{gap:var(--space-xs);margin-top:var(--space-xs);display:flex}.projects__item-tech span{font-size:var(--text-xs);letter-spacing:.05em;opacity:.4}.projects__item-tech span:before{content:"["}.projects__item-tech span:after{content:"]"}@media (max-width:768px){.projects__grid{grid-template-columns:1fr}.projects__header{align-items:flex-start;gap:var(--space-sm);flex-direction:column}.projects__filter{gap:var(--space-sm);flex-wrap:wrap}}@media (max-width:480px){.projects__filter{gap:var(--space-xs)}}
