.portfolio-page{background:var(--white);color:var(--anthracite)}
.pp-hero{position:relative;height:100svh;min-height:42rem;background:var(--black);color:var(--white);overflow:hidden}
.pp-slides,.pp-slide{position:absolute;inset:0}.pp-slide{opacity:0;visibility:hidden;transition:opacity 1.1s ease,visibility 1.1s}.pp-slide.is-active{opacity:1;visibility:visible;z-index:1}
.pp-slide:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#10111290,transparent 45%,#101112c9)}
.pp-slide>img{width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(var(--pp-hero-scale,1.03));filter:saturate(.55);transition:transform 1.4s cubic-bezier(.22,1,.36,1)}
.pp-hero-heading{position:absolute;z-index:2;left:var(--gutter);top:clamp(8rem,19svh,13rem);pointer-events:none}
.pp-hero-heading>.eyebrow{font-size:.55rem;letter-spacing:.18em;margin:0 0 1.5rem}.pp-hero-heading h1{font:normal clamp(3.5rem,8.5vw,10rem)/1 var(--display);letter-spacing:-.045em;margin:0}
.pp-feature{position:absolute;z-index:2;bottom:8.5rem;left:var(--gutter);right:var(--gutter)}
.pp-feature>p{font-size:.55rem;letter-spacing:.16em;text-transform:uppercase}.pp-feature h2{font:400 clamp(2.4rem,4.5vw,5rem)/1.1 var(--display);letter-spacing:-.03em;margin:.8rem 0 1rem}.pp-feature>a{display:inline-flex;align-items:center;gap:2rem;min-height:44px;font-size:.55rem;letter-spacing:.15em}.pp-feature>a span{font-size:1.5rem}
.pp-hero-bottom{position:absolute;left:var(--gutter);right:var(--gutter);bottom:2rem;z-index:3;display:flex;justify-content:space-between;align-items:center;font-size:.55rem;letter-spacing:.15em}.pp-hero-controls{display:flex;gap:1.4rem;align-items:center}.pp-hero-controls button{background:none;border:1px solid #ffffff40;width:44px;height:44px;color:#fff;cursor:pointer;font-size:1rem;transition:background .4s}.pp-hero-controls button:hover{background:#383e42}.pp-hero-bottom>a{min-height:44px;display:flex;align-items:center;gap:1rem}
.pp-catalog{padding:5rem var(--gutter) 8rem;scroll-margin-top:1rem}.pp-breadcrumb{display:flex;gap:.75rem;font-size:.65rem;color:#697075;margin-bottom:4rem}
.pp-catalog-heading{display:grid;grid-template-columns:1.2fr 1fr;gap:5vw;align-items:end;margin-bottom:4rem}.pp-catalog-heading .eyebrow{font-size:.55rem;letter-spacing:.14em}.pp-catalog-heading h2{font:400 clamp(3rem,5.5vw,6rem)/1.04 var(--display);letter-spacing:-.04em;margin:1.5rem 0 0}.pp-catalog-heading h2 em{font-weight:normal}.pp-catalog-heading>p{font-size:.9rem;line-height:1.9;max-width:29rem;margin:0}
.pp-filterbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-block:1px solid #383e4228;padding:1.2rem 0;margin-bottom:3rem}.pp-filterbar>div{position:relative;display:flex;flex-wrap:wrap;gap:.35rem}.pp-filterbar button{position:relative;z-index:1;display:flex;align-items:center;gap:1rem;border:0;background:none;font:400 .8rem var(--body);color:#62696e;min-height:48px;padding:.8rem 1.25rem;cursor:pointer;transition:color .45s,background .45s;border-radius:2px}.pp-filterbar button:hover{color:var(--anthracite);background:#383e420a}.pp-filterbar button[aria-pressed=true]{color:var(--white);background:var(--anthracite)}.pp-filters-ready button[aria-pressed=true]{background:transparent}.pp-filter-marker{position:absolute;left:0;top:0;background:var(--anthracite);border-radius:2px;pointer-events:none}.pp-filters-ready .pp-filter-marker{transition:transform .65s cubic-bezier(.22,1,.36,1),width .65s cubic-bezier(.22,1,.36,1),height .65s cubic-bezier(.22,1,.36,1)}.pp-filter-count{font-size:.5rem;letter-spacing:.06em;opacity:.65}.pp-filterbar>span{font-size:.6rem;white-space:nowrap}
.pp-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5rem 4vw;align-items:start}.pp-card{min-width:0;scroll-margin-top:2rem}.pp-card[hidden]{display:none}.pp-card:nth-child(even){padding-top:8rem}
.pp-card-image{position:relative;display:block;aspect-ratio:4/5;background:var(--anthracite);overflow:hidden}.pp-card:nth-child(4n+2) .pp-card-image,.pp-card:nth-child(4n+3) .pp-card-image{aspect-ratio:1.22}.pp-card-image>img{display:block;width:100%;height:100%;object-fit:cover;transition:transform 1.3s cubic-bezier(.22,1,.36,1);filter:saturate(.6)}.pp-card-image:hover>img{transform:scale(1.04)}
.pp-card-view{position:absolute;right:1.25rem;bottom:1.25rem;padding:.8rem 1rem;background:#101112de;color:#fff;font-size:.55rem;letter-spacing:.12em;opacity:0;translate:0 10px;transition:opacity .5s,translate .6s}.pp-card-image:hover .pp-card-view,.pp-card-image:focus-visible .pp-card-view{opacity:1;translate:0 0}
.pp-card-meta{display:flex;justify-content:space-between;gap:1rem;margin:1.2rem 0 .7rem;font-size:.5rem;letter-spacing:.13em;text-transform:uppercase;color:#62696e}.pp-card h3{font:400 clamp(1.8rem,2.8vw,3.4rem)/1.12 var(--display);letter-spacing:-.025em;margin:0}.pp-card h3 a{display:flex;justify-content:space-between;gap:1rem;align-items:center}.pp-card h3 span{font:400 1.3rem var(--body)}
.pp-card.pp-reveal{opacity:0;transform:translateY(35px);transition:opacity .9s,transform 1.1s cubic-bezier(.22,1,.36,1)}.pp-card.pp-reveal.is-visible{opacity:1;transform:none}.pp-empty{padding-block:3rem;font-size:1rem}
.pp-detail{padding:0;border:0;background:var(--white);color:var(--anthracite);width:70rem;max-width:calc(100% - 3rem);max-height:calc(100dvh - 3rem);overflow:auto;overscroll-behavior:contain}.pp-detail[open]{display:grid;grid-template-columns:1.15fr 1fr;animation:pp-detail-in .6s cubic-bezier(.22,1,.36,1) both}.pp-detail::backdrop{background:#101112b3;backdrop-filter:blur(7px)}.pp-detail figure{margin:0;min-height:34rem;background:var(--anthracite)}.pp-detail figure img{width:100%;height:100%;object-fit:cover;display:block}.pp-detail-copy{padding:4rem 3rem;align-self:center}.pp-detail-copy>.eyebrow{font-size:.55rem;line-height:1.8}.pp-detail-copy h2{font:400 clamp(2rem,3.5vw,4rem)/1.08 var(--display);letter-spacing:-.035em;margin:1.5rem 0}.pp-detail-copy>p:not(.eyebrow){font-size:.9rem;line-height:1.9}.pp-detail-copy>a{display:flex;align-items:center;gap:1rem;font-size:.55rem;letter-spacing:.12em;min-height:44px;margin-top:2rem}.pp-detail-close{position:absolute;right:1rem;top:1rem;z-index:3;width:44px;height:44px;border:0;background:var(--black);color:#fff;font-size:1.8rem;cursor:pointer}body.pp-detail-open{overflow:hidden}
.portfolio-page a:focus-visible,.portfolio-page button:focus-visible{outline:2px solid currentColor;outline-offset:5px}.pp-detail-close:focus-visible{outline-offset:3px}
@keyframes pp-detail-in{from{opacity:0;translate:0 25px}to{opacity:1;translate:0 0}}
@media(max-width:63.99rem){.pp-catalog-heading{grid-template-columns:1fr;gap:2rem}.pp-grid{gap:3rem 3vw}.pp-card:nth-child(even){padding-top:4rem}.pp-detail[open]{grid-template-columns:1fr}.pp-detail figure{height:45svh;min-height:0}.pp-detail-copy{padding:2.5rem}.pp-detail-copy h2{font-size:3rem}}
@media(max-width:39.99rem){.pp-hero{min-height:40rem}.pp-hero-heading{top:9rem}.pp-hero-heading h1{font-size:3.8rem}.pp-feature{bottom:8rem}.pp-feature h2{font-size:2.6rem}.pp-hero-bottom{bottom:5.7rem}.pp-hero-controls{gap:.8rem}.pp-hero-bottom>a{font-size:.45rem}.pp-catalog{padding-block:3rem 5rem}.pp-breadcrumb{margin-bottom:3rem}.pp-catalog-heading h2{font-size:3.2rem}.pp-filterbar{align-items:start;flex-direction:column}.pp-filterbar>div{gap:1rem}.pp-filterbar button{font-size:.7rem}.pp-grid{grid-template-columns:1fr;gap:3rem}.pp-card:nth-child(even){padding-top:0}.pp-card-image{aspect-ratio:1}.pp-card-view{opacity:1;translate:none;font-size:.5rem}.pp-detail{max-width:calc(100% - 1.5rem);max-height:calc(100dvh - 1.5rem)}.pp-detail-copy{padding:2rem 1.5rem}.pp-detail-copy h2{font-size:2.6rem}}
@media(max-width:39.99rem){.pp-filterbar>div{width:100%;gap:.25rem;flex-wrap:nowrap}.pp-filterbar button{flex:1;justify-content:center;min-width:0;padding:.7rem .35rem;font-size:.62rem;gap:.3rem;white-space:nowrap}.pp-filterbar>span{align-self:flex-end}.pp-filter-count{font-size:.45rem}}
@media(prefers-reduced-motion:reduce){.pp-slide,.pp-slide>img,.pp-card-image>img,.pp-card-view,.pp-card.pp-reveal{transition:none;transform:none}.pp-filters-ready .pp-filter-marker,.pp-filterbar button{transition:none}.pp-card.pp-reveal{opacity:1}.pp-detail[open]{animation:none}}
