@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/inter-latin.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-latin.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter-latin.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-latin.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans Condensed;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-sans-condensed-latin.woff2)format("woff2")}:root{--portfolio-font-sans:"Inter", ui-sans-serif, system-ui, sans-serif;--portfolio-font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;--portfolio-font-display:"IBM Plex Sans Condensed", "Arial Narrow", var(--portfolio-font-sans);--pf-ink:#0a0a0a;--pf-paper:#f4f4f0;--pf-blue:#2071b3;--pf-ease:cubic-bezier(.16, .84, .44, 1)}.pf-page,.pf-page *,.pf-page :before,.pf-page :after{box-sizing:border-box}.pf-page{font-family:var(--portfolio-font-sans);color:var(--pf-paper);background:var(--pf-ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;scroll-snap-type:y proximity;margin:0;padding:0}.pf-page img{max-width:100%;display:block}.pf-page main{display:block}.pf-page p{margin:0}.pf-page ul{margin:0;padding:0}.pf-page a{color:inherit}.pf-visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pf-scene{min-height:100svh;position:relative}.pf-scene--snap{scroll-snap-align:start;scroll-snap-stop:always}.pf-scene--loud{overflow:hidden}.pf-scene-img{object-fit:cover;object-position:center;width:100%;height:100%;position:absolute;inset:0}.pf-scrim{z-index:1;pointer-events:none;position:absolute;inset:0}.pf-scrim--bottom{background:linear-gradient(#0a0a0a00 12%,#0a0a0aad 45%,#0a0a0af2 75%,#0a0a0af7 100%)}.pf-scrim--both{background:linear-gradient(#0a0a0a9e 0%,#0a0a0a00 30%),linear-gradient(#0a0a0a00 58%,#0a0a0adb 100%)}.pf-trigger{cursor:zoom-in;display:block;position:absolute;inset:0}.pf-trigger:focus-visible{outline:2px solid var(--pf-paper);outline-offset:-4px}.pf-expand-plus{z-index:2;font-family:var(--portfolio-font-sans);color:var(--pf-paper);text-shadow:0 1px 8px #0a0a0a99;pointer-events:none;font-size:clamp(5.1rem,12.6vw,7.5rem);font-weight:300;line-height:1;transition:transform .2s;position:absolute;bottom:clamp(.8rem,2.5vw,1.5rem);right:clamp(.8rem,2.5vw,1.5rem)}@media (hover:hover){.pf-trigger:hover .pf-expand-plus,.pf-trigger:focus-visible .pf-expand-plus{transform:scale(1.08)}}.pf-glass{-webkit-backdrop-filter:blur(18px)saturate(150%);background:#0a0a0a47;border-radius:1.1rem;padding:.55em .85em}@supports not (backdrop-filter:blur(1px)){.pf-glass{background:#0a0a0a99}}.pf-glass--fit{width:fit-content}.pf-corner-stack{z-index:2;pointer-events:none;flex-direction:column;align-items:flex-end;gap:.4em;display:flex;position:absolute;top:clamp(1.25rem,4vw,2.5rem);right:clamp(1.25rem,4vw,2.5rem)}.pf-meta-corner{font-family:var(--portfolio-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#f4f4f0cc;text-shadow:0 1px 6px #0a0a0a80;font-size:clamp(.7rem,1.4vw,.85rem)}.pf-credit-tag{font-family:var(--portfolio-font-mono);letter-spacing:.06em;text-transform:uppercase;color:#f4f4f0b8;text-shadow:0 1px 6px #0a0a0a80;font-size:.68rem}.pf-hero-content{z-index:2;pointer-events:none;flex-direction:column;justify-content:flex-end;gap:clamp(1rem,3vw,1.75rem);padding:clamp(1.5rem,5vw,4rem);display:flex;position:absolute;inset:0}.pf-h1{flex-direction:column;gap:.5em;margin:0;display:flex}.pf-h1-proj{font-family:var(--portfolio-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#f4f4f0d9;font-size:clamp(.85rem,1.8vw,1.05rem)}.pf-h1-pkg{font-family:var(--portfolio-font-display);letter-spacing:-.01em;text-shadow:0 2px 16px #0a0a0a59;max-width:18ch;font-size:clamp(2.6rem,9vw,7.5rem);font-weight:500;line-height:.98}.pf-h1-area{font-family:var(--portfolio-font-mono);letter-spacing:.06em;color:#f4f4f0b3;font-size:clamp(.8rem,1.6vw,1rem)}.pf-role{font-family:var(--portfolio-font-mono);color:#f4f4f0d9;max-width:52ch;font-size:clamp(.78rem,1.6vw,.95rem);line-height:1.6}.pf-hero-fig-cap{font-family:var(--portfolio-font-mono);letter-spacing:.04em;color:#f4f4f099;max-width:calc(100% - 4.5rem);font-size:clamp(.68rem,1.3vw,.82rem)}.pf-slate{z-index:2;font-family:var(--portfolio-font-mono);letter-spacing:.08em;color:#f4f4f0e6;text-shadow:0 1px 6px #0a0a0ab3;pointer-events:none;font-size:clamp(1rem,2.4vw,1.4rem);position:absolute;top:clamp(1.25rem,4vw,2.5rem);left:clamp(1.25rem,4vw,2.5rem)}.pf-caption{z-index:2;font-family:var(--portfolio-font-display);pointer-events:none;max-width:32ch;font-size:clamp(1.15rem,2.8vw,1.85rem);font-weight:500;line-height:1.15;position:absolute;bottom:clamp(1.25rem,4vw,2.5rem);left:clamp(1.25rem,4vw,2.5rem);right:clamp(5.5rem,14vw,8.5rem)}.pf-caption.pf-glass{width:fit-content;padding:.65em 1em}.pf-scene--split{flex-direction:column;min-height:0;display:flex}@media (width>=760px){.pf-scene--split{flex-direction:row;min-height:100svh}}.pf-half{flex:50%;min-height:62vh;position:relative;overflow:hidden}@media (width>=760px){.pf-half{min-height:100%}}.pf-half .pf-slate{font-size:clamp(.85rem,2vw,1.15rem);top:clamp(1rem,3vw,1.75rem);left:clamp(1rem,3vw,1.75rem)}.pf-half .pf-expand-plus{font-size:clamp(3rem,6.3vw,4.5rem);bottom:clamp(.7rem,2vw,1.2rem);right:clamp(.7rem,2vw,1.2rem)}.pf-half .pf-caption{max-width:none;font-size:clamp(.95rem,2.2vw,1.3rem);bottom:clamp(1rem,3vw,1.75rem);left:clamp(1rem,3vw,1.75rem);right:clamp(4.25rem,9vw,6rem)}.pf-scene--facts{align-items:center;padding:clamp(2rem,8vw,6rem);display:flex}.pf-facts-inner{width:100%;max-width:58rem;margin:0 auto}.pf-kicker{font-family:var(--portfolio-font-mono);letter-spacing:.1em;text-transform:uppercase;opacity:.55;margin:0 0 clamp(1rem,3vw,1.5rem);font-size:clamp(.72rem,1.4vw,.85rem)}.pf-facts-grid{grid-template-columns:1fr;gap:1.1rem 2.5rem;margin:0 0 clamp(1.75rem,5vw,2.5rem);list-style:none;display:grid}@media (width>=640px){.pf-facts-grid{grid-template-columns:1fr 1fr}}.pf-fact{flex-direction:column;margin:0;display:flex}.pf-facts-grid dt{font-family:var(--portfolio-font-mono);letter-spacing:.1em;text-transform:uppercase;opacity:.55;margin-bottom:.25rem;font-size:.68rem;font-weight:400}.pf-facts-grid dd{margin:0;font-size:clamp(1rem,2vw,1.2rem);font-weight:500}.pf-facts-desc{font-family:var(--portfolio-font-sans);color:#0a0a0ad1;max-width:52ch;font-size:clamp(.95rem,1.8vw,1.1rem);line-height:1.6}.pf-card-paper{background:var(--pf-paper);color:var(--pf-ink)}.pf-card-ink{background:var(--pf-ink);color:var(--pf-paper)}.pf-card-blue{background:var(--pf-blue);color:var(--pf-paper)}.pf-scene--keyword{background:var(--pf-ink);flex-direction:column;display:flex}@media (width>=820px){.pf-scene--keyword{flex-direction:row}}.pf-keyword-media{flex:1.1;min-height:46vh;position:relative;overflow:hidden}@media (width>=820px){.pf-keyword-media{min-height:auto}}.pf-keyword-media .pf-slate{font-size:clamp(.85rem,2vw,1.15rem);top:clamp(1rem,3vw,1.75rem);left:clamp(1rem,3vw,1.75rem)}.pf-caption-small{z-index:2;font-family:var(--portfolio-font-mono);color:#f4f4f0d9;pointer-events:none;font-size:clamp(.72rem,1.4vw,.85rem);line-height:1.5;position:absolute;bottom:clamp(1rem,3vw,1.75rem);left:clamp(1rem,3vw,1.75rem);right:clamp(6.5rem,16vw,8.5rem)}.pf-keyword-copy{flex-direction:column;flex:1;justify-content:center;gap:1.5rem;padding:clamp(2rem,6vw,4rem);display:flex}.pf-keyword-eyebrow{font-family:var(--portfolio-font-mono);letter-spacing:.14em;text-transform:uppercase;opacity:.6;font-size:.72rem}.pf-keyword-list{flex-direction:column;gap:1.15rem;list-style:none;display:flex}.pf-keyword-list li{grid-template-columns:2.4em 1fr;align-items:baseline;gap:.75rem;font-size:clamp(1rem,2vw,1.15rem);line-height:1.3;display:grid}.pf-keyword-list li span{font-family:var(--portfolio-font-mono);letter-spacing:.06em;opacity:.5;font-size:.78rem}.pf-statement-content{z-index:2;pointer-events:none;flex-direction:column;justify-content:flex-end;gap:.85rem;padding:clamp(1.5rem,5vw,4rem);display:flex;position:absolute;inset:0}.pf-statement-head{font-family:var(--portfolio-font-display);letter-spacing:-.01em;color:#fff;text-shadow:0 2px 16px #0a0a0a73;max-width:16ch;font-size:clamp(2rem,6vw,4.25rem);font-weight:500;line-height:1.05}.pf-statement-sub{font-family:var(--portfolio-font-mono);color:#f4f4f0d9;max-width:50ch;font-size:clamp(.8rem,1.6vw,1rem);line-height:1.6}.pf-scene--grouped{background:var(--pf-ink);flex-direction:column;justify-content:center;gap:clamp(1.25rem,3vw,2rem);padding:clamp(2rem,6vw,4rem) clamp(1.25rem,4vw,2.5rem);display:flex}.pf-cluster-kicker{font-family:var(--portfolio-font-mono);letter-spacing:.1em;text-transform:uppercase;opacity:.55;width:100%;max-width:64rem;margin:0 auto;font-size:clamp(.72rem,1.4vw,.85rem)}.pf-grouped-summary{font-family:var(--portfolio-font-sans);color:#f4f4f0d1;width:100%;max-width:60ch;margin:.5rem auto 0;font-size:clamp(.95rem,1.8vw,1.1rem);line-height:1.6}.pf-grouped-grid{grid-template-columns:1fr;gap:clamp(1rem,3vw,1.75rem);width:100%;max-width:64rem;margin:0 auto;display:grid}.pf-grouped-grid[data-count="3"]{grid-template-columns:1fr}@media (width>=700px){.pf-grouped-grid{grid-template-columns:1fr 1fr}.pf-grouped-grid[data-count="3"]{grid-template-columns:repeat(3,1fr)}}.pf-grouped-frame{flex-direction:column;gap:clamp(.5rem,1.2vw,.7rem);display:flex}.pf-grouped-media{aspect-ratio:4/3;position:relative;overflow:hidden}.pf-grouped-media .pf-expand-plus{font-size:clamp(2.2rem,7vw,3.2rem);bottom:clamp(.6rem,2vw,1rem);right:clamp(.6rem,2vw,1rem)}.pf-grouped-credit{top:clamp(2.75rem,7vw,3.5rem);right:clamp(.6rem,2vw,1rem)}.pf-fig-caption{font-family:var(--portfolio-font-mono);color:#f4f4f0b8;text-wrap:pretty;font-size:.74rem;line-height:1.5}.pf-scene--text{align-items:center;padding:clamp(2.5rem,8vw,6rem);display:flex}.pf-text-inner{width:100%;max-width:46rem;margin:0 auto}.pf-text-eyebrow{font-family:var(--portfolio-font-mono);letter-spacing:.1em;text-transform:uppercase;opacity:.6;margin:0 0 1rem;font-size:clamp(.72rem,1.4vw,.85rem)}.pf-text-head{font-family:var(--portfolio-font-display);letter-spacing:-.01em;margin:0 0 1.1rem;font-size:clamp(1.6rem,4.4vw,2.75rem);font-weight:500;line-height:1.08}.pf-text-body{font-family:var(--portfolio-font-sans);max-width:58ch;font-size:clamp(.98rem,1.8vw,1.1rem);line-height:1.65}.pf-text-body+.pf-text-body{margin-top:1rem}.pf-text-list{flex-direction:column;gap:.6rem;margin-top:1.4rem;list-style:none;display:flex}.pf-text-list li{font-family:var(--portfolio-font-sans);grid-template-columns:1fr auto;align-items:baseline;gap:1rem;font-size:clamp(.92rem,1.6vw,1.02rem);line-height:1.5;display:grid}.pf-text-list li span{font-family:var(--portfolio-font-mono);letter-spacing:.06em;text-transform:uppercase;opacity:.55;white-space:nowrap;font-size:.72rem}.pf-scene--closing{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:clamp(2.5rem,8vw,6rem) clamp(1.5rem,6vw,4rem) clamp(5.5rem,11vw,7.5rem);display:flex}.pf-closing-inner{max-width:44rem}.pf-closing-line{font-family:var(--portfolio-font-display);letter-spacing:-.01em;margin:0 0 .75rem;font-size:clamp(1.9rem,5.4vw,3.4rem);font-weight:500;line-height:1.05}.pf-closing-address{font-family:var(--portfolio-font-mono);letter-spacing:.04em;opacity:.65;margin:0;font-size:clamp(.8rem,1.6vw,1rem)}.pf-closing-facts{text-align:left;max-width:34rem;margin:clamp(2rem,5vw,3rem) auto 0}.pf-closing-facts .pf-facts-grid{margin-bottom:0}.pf-closing-credits{font-family:var(--portfolio-font-mono);letter-spacing:.04em;opacity:.5;margin-top:clamp(1.5rem,4vw,2.25rem);font-size:.74rem}.pf-family-strip{justify-content:center;padding:clamp(1.5rem,4vw,2.5rem) 1.5rem;display:flex}.pf-family-link{text-align:center;margin-top:clamp(2rem,5vw,3rem);position:relative}.pf-scene .pf-family-link--absolute{margin-top:0;position:absolute;bottom:clamp(1.5rem,4vw,2.5rem);left:0;right:0}.pf-family-link a{font-family:var(--portfolio-font-mono);letter-spacing:.04em;text-underline-offset:.2em;opacity:.8;font-size:clamp(.78rem,1.5vw,.92rem);text-decoration:underline 1px}.pf-family-link a:hover{opacity:1}dialog.pf-lightbox{width:100%;max-width:none;height:100%;max-height:none;color:var(--pf-paper);font-family:var(--portfolio-font-sans);background:0 0;border:none;margin:0;padding:0;position:fixed;inset:0}dialog.pf-lightbox::backdrop{background:#0a0a0af0}dialog.pf-lightbox[open]{justify-content:center;align-items:center;padding:clamp(1.25rem,5vw,3.5rem);display:flex}.pf-lightbox-panel{flex-direction:column;align-items:center;gap:.85rem;max-width:100%;max-height:100%;display:flex;position:relative}.pf-lightbox-panel img{object-fit:contain;width:auto;max-width:100%;height:auto;max-height:66svh}.pf-lightbox-cap{font-family:var(--portfolio-font-display);text-align:center;max-width:60ch;font-size:clamp(1rem,2.2vw,1.3rem);font-weight:500}.pf-lightbox-desc{font-family:var(--portfolio-font-mono);text-align:center;opacity:.75;max-width:56ch;font-size:.82rem;line-height:1.55}.pf-lightbox-credit{font-family:var(--portfolio-font-mono);letter-spacing:.06em;text-transform:uppercase;opacity:.55;font-size:.7rem}.pf-lightbox-close{z-index:2;width:clamp(2.75rem,6vw,3.5rem);height:clamp(2.75rem,6vw,3.5rem);font-family:var(--portfolio-font-sans);color:var(--pf-paper);cursor:pointer;text-shadow:0 1px 8px #0a0a0a99;background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:clamp(2rem,4.5vw,2.75rem);font-weight:300;line-height:1;display:flex;position:fixed;top:clamp(1rem,3vw,2rem);right:clamp(1rem,3vw,2rem)}.pf-lightbox-close:hover{opacity:.7}.pf-lightbox-close:focus-visible{outline:2px solid var(--pf-paper);outline-offset:4px;border-radius:50%}.pf-reveal,.pf-reveal-img{opacity:1;transform:none}html.pf-js .pf-reveal{opacity:0;transform:translateY(18px)}html.pf-js .pf-reveal-img{transform:scale(1.06)}@media (prefers-reduced-motion:no-preference){html.pf-js .pf-reveal{transition:opacity .8s var(--pf-ease), transform .8s var(--pf-ease)}html.pf-js .pf-reveal-img{transition:transform 1.3s var(--pf-ease)}}html.pf-js .pf-reveal.pf-in-view{opacity:1;transform:none}html.pf-js .pf-reveal-img.pf-in-view{transform:scale(1)}@media (prefers-reduced-motion:reduce){html.pf-js .pf-reveal{opacity:1;transition:none;transform:none}html.pf-js .pf-reveal-img{transition:none;transform:none}}@media (prefers-reduced-motion:no-preference){.pf-hero-content>*{animation:pf-hero-up .9s var(--pf-ease) both}.pf-hero-content>:nth-child(2){animation-delay:80ms}.pf-hero-content>:nth-child(3){animation-delay:.14s}.pf-corner-stack{animation:1s .2s both pf-hero-fade}@keyframes pf-hero-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes pf-hero-fade{0%{opacity:0}to{opacity:1}}}
