.portfolio-page{background:var(--background)}html[data-portfolio]{scroll-snap-type:y mandatory}.portfolio-hero,html[data-portfolio] .footer,html[data-portfolio] footer{scroll-snap-align:start}.portfolio-hero{position:relative;height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--background);overflow:hidden;padding:0 2rem}.portfolio-hero:after,.portfolio-hero:before{content:"";position:absolute;width:52px;height:52px;pointer-events:none}.portfolio-hero:before{top:2.5rem;left:2.5rem;border-top:1px solid color-mix(in srgb,var(--primary) 30%,transparent);border-left:1px solid color-mix(in srgb,var(--primary) 30%,transparent)}.portfolio-hero:after{bottom:2.5rem;right:2.5rem;border-bottom:1px solid color-mix(in srgb,var(--primary) 30%,transparent);border-right:1px solid color-mix(in srgb,var(--primary) 30%,transparent)}.portfolio-hero__inner{text-align:left;max-width:1150px;position:relative;z-index:1;margin:0 auto}.portfolio-hero__eyebrow{display:block;font-size:.65rem;letter-spacing:.42em;text-transform:uppercase;color:var(--primary);margin:0 0 3rem;opacity:0;animation:pFadeUp .8s ease .1s forwards}.portfolio-hero__title{font-family:var(--font-1);font-size:clamp(2.8rem,6.2vw,6rem);font-weight:var(--font-extrabold);color:var(--foreground);line-height:1.05;letter-spacing:-.025em;margin:0 0 3rem}.portfolio-hero__line{display:block;overflow:hidden}.portfolio-hero__line span{display:block;transform:translateY(110%);animation:pLineReveal 1.2s cubic-bezier(.16,1,.3,1) forwards}.portfolio-hero__line:first-child span{animation-delay:.28s}.portfolio-hero__line:nth-child(2) span{animation-delay:.48s}.portfolio-hero__title em{font-style:italic;color:var(--primary)}.portfolio-hero__divider{width:52px;height:1px;background:var(--primary);margin:0 0 3rem;opacity:0;animation:pFadeUp .8s ease .78s forwards}.portfolio-hero__sub{font-size:clamp(.9rem,1.4vw,1.08rem);color:color-mix(in srgb,var(--foreground) 40%,transparent);line-height:1.8;max-width:520px;margin:0;opacity:0;animation:pFadeUp .8s ease 1s forwards}.portfolio-hero__scroll{position:absolute;bottom:2.5rem;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:.6rem;opacity:0;animation:pFadeUp .8s ease 1.35s forwards}.portfolio-hero__scroll-label{font-size:.58rem;letter-spacing:.38em;text-transform:uppercase;color:color-mix(in srgb,var(--foreground) 28%,transparent)}.portfolio-hero__scroll-line{width:1px;height:52px;background:linear-gradient(to bottom,var(--primary),transparent);animation:scrollPulse 2.4s ease-in-out 1.6s infinite}@keyframes pFadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes pLineReveal{to{transform:translateY(0)}}@keyframes scrollPulse{0%,to{opacity:.3}50%{opacity:.9;transform:scaleY(1.1) translateY(3px)}}.pf-section{background:var(--background)}.pf-state{text-align:center;font-size:.8rem;letter-spacing:.2em;text-transform:uppercase;color:color-mix(in srgb,var(--foreground) 30%,transparent);padding:8rem 2rem}.pf-state--error{color:var(--destructive);text-transform:none;letter-spacing:0;font-size:1rem}.pf-item{scroll-snap-align:start;display:flex;flex-direction:row;height:100vh;height:100svh;cursor:pointer;overflow:hidden;border-bottom:1px solid color-mix(in srgb,var(--foreground) 6%,transparent)}.pf-item:focus-visible{outline:2px solid var(--primary);outline-offset:-6px}.pf-item__media{flex:none;width:66%;height:100%;position:relative;overflow:hidden;background:var(--muted)}.pf-item__img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none;transform:scale(1.04);filter:brightness(.92) saturate(.95);transition:transform 1.6s cubic-bezier(.16,1,.3,1),filter 1.4s ease;will-change:transform,filter}.pf-item.is-visible .pf-item__img{transform:scale(1);filter:brightness(1) saturate(1)}.pf-item:hover .pf-item__img{transform:scale(1.03);filter:brightness(.9) saturate(1.05)}.pf-item__veil{position:absolute;inset:0;background:color-mix(in srgb,var(--foreground) 0,transparent);transition:background .5s ease;pointer-events:none}.pf-item:hover .pf-item__veil{background:color-mix(in srgb,var(--foreground) 8%,transparent)}.pf-item__info{width:34%;display:flex;flex-direction:column;justify-content:center;gap:1.4rem;padding:0 6%;position:relative;background:var(--card);overflow:hidden;border-left:1px solid color-mix(in srgb,var(--foreground) 7%,transparent)}.pf-item__info:before{content:"";position:absolute;top:0;left:0;width:2px;height:0;background:var(--primary);transition:height .9s cubic-bezier(.16,1,.3,1) .4s}.pf-item.is-visible .pf-item__info:before{height:100%}.pf-item__num{position:absolute;top:1.6rem;right:6%;font-family:var(--font-1);font-size:clamp(4rem,7vw,7rem);font-weight:var(--font-light);color:color-mix(in srgb,var(--foreground) 7%,transparent);line-height:1;letter-spacing:-.04em;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:0;transform:translateY(16px);transition:opacity .8s ease,transform .8s cubic-bezier(.16,1,.3,1)}.pf-item.is-visible .pf-item__num{opacity:1;transform:translateY(0)}.pf-item__body{display:flex;flex-direction:column;gap:.6rem;overflow:hidden}.pf-item__title{font-family:var(--font-1);font-size:clamp(1.7rem,2.5vw,2.8rem);font-weight:var(--font-black);color:var(--foreground);margin:0;line-height:1.12;letter-spacing:-.015em;opacity:0;transform:translateY(20px);transition:opacity .85s ease .12s,transform .85s cubic-bezier(.16,1,.3,1) .12s}.pf-item.is-visible .pf-item__title{opacity:1;transform:translateY(0)}.pf-item__loc{font-size:.62rem;letter-spacing:.28em;text-transform:uppercase;color:var(--primary);margin:0;opacity:0;transform:translateY(14px);transition:opacity .7s ease .24s,transform .7s ease .24s}.pf-item.is-visible .pf-item__loc{opacity:1;transform:translateY(0)}.pf-item__desc{font-size:.88rem;line-height:1.72;color:color-mix(in srgb,var(--foreground) 50%,transparent);margin:.3rem 0 0;max-width:340px;opacity:0;transform:translateY(12px);transition:opacity .7s ease .34s,transform .7s ease .34s}.pf-item.is-visible .pf-item__desc{opacity:1;transform:translateY(0)}.pf-item__cta{display:inline-flex;align-items:center;gap:.65rem;font-size:.6rem;font-weight:600;letter-spacing:.32em;text-transform:uppercase;color:color-mix(in srgb,var(--foreground) 30%,transparent);opacity:0;transform:translateY(10px);transition:opacity .6s ease .45s,transform .6s ease .45s,color .3s ease 0s,gap .3s cubic-bezier(.16,1,.3,1) 0s}.pf-item.is-visible .pf-item__cta{opacity:1;transform:translateY(0)}.pf-item:hover .pf-item__cta{color:var(--foreground);gap:1rem}.pf-item__cta svg{width:18px;height:18px;flex-shrink:0;transition:transform .35s cubic-bezier(.16,1,.3,1)}.pf-item:hover .pf-item__cta svg{transform:translateX(4px)}@media (max-width:900px){html[data-portfolio]{scroll-snap-type:none}.pf-item{flex-direction:column;height:auto;min-height:auto;scroll-snap-align:none}.pf-item__media{width:100%;height:52svh}.pf-item__info{width:100%;padding:3rem 6%;border-left:none;border-top:1px solid color-mix(in srgb,var(--foreground) 7%,transparent)}.pf-item__num{font-size:4rem}}@media (max-width:580px){.pf-item__info{padding:2.5rem 5%}.pf-item__title{font-size:clamp(1.5rem,6vw,2.2rem)}}@media (prefers-reduced-motion:reduce){html[data-portfolio]{scroll-snap-type:none}.portfolio-hero__divider,.portfolio-hero__eyebrow,.portfolio-hero__line span,.portfolio-hero__scroll,.portfolio-hero__sub{animation:none!important;opacity:1!important;transform:none!important}.portfolio-hero__scroll-line{animation:none!important}.pf-item__img{transform:scale(1)!important;transition:none!important}.pf-item__cta,.pf-item__desc,.pf-item__loc,.pf-item__num,.pf-item__title{opacity:1!important;transform:none!important;transition:none!important}}