.pw{position:relative;z-index:2;height:100svh;scroll-snap-align:start}.pw[data-live]{height:240lvh;scroll-snap-align:none;pointer-events:none}.pw[data-live] .pw-frame{pointer-events:auto}.pw[data-live]+.pf-section{position:relative;z-index:1;margin-top:-100lvh}.pw[data-live]+.pf-section .pf-item:first-of-type{scroll-snap-align:start;scroll-snap-stop:always}@media (hover:none),(max-width:900px){html[data-portfolio] footer{scroll-snap-align:none}}.pw-frame{position:sticky;top:0;height:100svh;overflow:hidden;color:var(--foreground);touch-action:pan-y}.pw[data-live] .pw-frame{height:100lvh}.pw-bg{background:var(--background)}.pw-bg,.pw-stage{position:absolute;inset:0}.pw-wall{position:absolute;inset:-70% -40%;cursor:grab}.pw-tile{position:absolute;overflow:hidden;background:var(--muted);will-change:transform}.pw-tile img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;pointer-events:none}.pw-tile i{position:absolute;inset:0;background:var(--background);opacity:.5;transition:opacity .6s ease}.pw-wall.is-focus .pw-tile i{opacity:.8}.pw-wall.is-focus .pw-tile.is-lit i{opacity:0}.pw-title{position:absolute;inset:0;display:grid;place-items:center;padding:0 1.5rem;text-align:center;pointer-events:none;will-change:transform,opacity}.pw-mark{display:block;margin:0 auto 1.4rem;height:clamp(56px,9vh,96px);width:auto;overflow:visible}.pw-mark path{fill:none;stroke:var(--foreground);stroke-width:22;stroke-linejoin:round}.pw-title h1{margin:0;font-family:var(--font-1);font-weight:300;font-size:clamp(2.9rem,9vw,10rem);line-height:.9;letter-spacing:-.045em}.pw-ln{display:block;overflow:hidden;will-change:transform;padding-bottom:.24em;margin-bottom:-.18em}.pw-ln>span{display:inline-block}.pw-sub{margin:1rem 0 0;font-size:.95rem}.pw-card,.pw-sub{color:var(--foreground)}.pw-card{position:absolute;left:clamp(16px,4vw,56px);bottom:clamp(16px,5vh,56px);padding:20px 24px;background:color-mix(in srgb,var(--card) 90%,transparent);backdrop-filter:blur(8px);pointer-events:none;opacity:0;transform:translateY(12px);transition:opacity .4s,transform .5s cubic-bezier(.16,1,.3,1)}.pw-card.is-on{opacity:1;transform:none}.pw-card__k{font-size:var(--text-xs);color:var(--primary)}.pw-card__h{display:block;margin-top:6px;font-weight:300;font-size:clamp(1.5rem,2.6vw,2.4rem);letter-spacing:-.02em}.pw-hints{position:absolute;left:0;right:0;bottom:calc(100lvh - 100svh + clamp(18px, 4vh, 40px));display:flex;justify-content:center;align-items:center;gap:16px;font-size:var(--text-2xs);letter-spacing:.06em;color:var(--foreground);text-shadow:0 1px 12px var(--background);pointer-events:none}.pw-line{position:relative;display:block;width:1px;height:34px;background:color-mix(in srgb,var(--foreground) 25%,transparent);overflow:hidden}.pw-line:after{content:"";position:absolute;left:0;top:-40%;width:1px;height:40%;background:var(--foreground);animation:pwRunDown 1.8s cubic-bezier(.6,0,.4,1) infinite}@keyframes pwRunDown{to{top:100%}}.pw-tc{display:none}@media (hover:none){.pw-pc{display:none}.pw-tc{display:inline}}.pw:not([data-live]) .pw-hints{display:none}@media (max-width:700px){.pw-hints{flex-direction:column;gap:10px}.pw-card{bottom:auto;top:88px}}@media (scripting:enabled) and (prefers-reduced-motion:no-preference){.pw-hints>*,.pw-ln>span,.pw-mark,.pw-sub{animation:pwShowAnyway 0s 4s both}}@keyframes pwShowAnyway{0%{opacity:0}to{opacity:1}}.portfolio-page{background:var(--background)}html[data-portfolio]{scroll-snap-type:y mandatory}html[data-portfolio] .footer,html[data-portfolio] footer{scroll-snap-align:start}.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.info-tile{border-radius:0}.pf-item{text-decoration:none;color:inherit;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-light);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:var(--text-2xs);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:var(--text-2xs);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}.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}}