@font-face{font-family:HAL Four Grotesk;src:url(/assets/hal-four-grotesk-regular-DRRL0z_6.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:HAL Four Grotesk;src:url(/assets/hal-four-grotesk-medium-CP64RL0K.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:HAL Four Grotesk;src:url(/assets/hal-four-grotesk-heavy-BbVo3n_a.otf) format("opentype");font-weight:800;font-style:normal;font-display:swap}:root{--bg: #0a0a0a;--text: rgba(255, 255, 255, .92);--text-muted: rgba(255, 255, 255, .55);--text-faint: rgba(255, 255, 255, .32);--line: rgba(255, 255, 255, .1);--surface: rgba(255, 255, 255, .04);--font-sans: "HAL Four Grotesk", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: var(--font-sans);--gutter: clamp(20px, 5vw, 72px);--footer-clearance: 0px;color-scheme:dark}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);font-synthesis:none;line-height:1.5;background:var(--bg);color:var(--text);overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}a{color:inherit}img,video{display:block;max-width:100%}:focus-visible{outline:2px solid var(--accent, #fff);outline-offset:3px;border-radius:2px}.content{position:relative;z-index:1}.background{position:fixed;top:0;left:0;width:100%;height:100vh;height:100lvh;z-index:0;pointer-events:none}.background__layer{position:absolute;inset:0;width:100%;height:100%}.background__scrim{background:#0a0a0ab3}.eyebrow{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-muted)}.section-heading{font-size:clamp(2.5rem,8vw,6rem);font-weight:800;line-height:1;letter-spacing:-.03em;margin-bottom:clamp(24px,4vw,48px)}.intro{position:relative;min-height:100svh;display:flex;align-items:center;padding:var(--gutter);padding-bottom:calc(var(--gutter) + var(--footer-clearance))}.intro__inner{width:100%;max-width:1720px}.intro__name{font-size:clamp(3rem,11vw,9rem);font-weight:800;line-height:.95;letter-spacing:-.04em;margin:16px 0 clamp(16px,3vw,32px)}.intro__list{list-style:none;display:flex;flex-wrap:wrap;gap:8px clamp(16px,1.6vw,28px)}.intro__link{display:inline-flex;align-items:baseline;gap:8px;font-size:clamp(.95rem,1.2vw,1.25rem);white-space:nowrap;text-decoration:none;color:var(--text-muted);transition:color .25s}.intro__link:hover{color:var(--accent)}.intro__num{font-family:var(--font-mono);font-size:.7em;color:var(--text-faint)}.intro__hint{position:absolute;left:50%;bottom:calc(var(--footer-clearance) + 28px);transform:translate(-50%);font-family:var(--font-mono);font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;color:var(--text-faint)}.project{position:relative;width:100%}.project--pinned{height:100svh;overflow:hidden}.project__track{position:absolute;inset:0;will-change:transform}.slide{width:100%;height:100svh;display:flex;align-items:center;justify-content:center;padding:var(--gutter);padding-bottom:calc(var(--gutter) + var(--footer-clearance))}.project--pinned .slide{position:absolute}.slide__split{width:100%;max-width:1400px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:clamp(24px,5vw,80px);align-items:center}.slide__split .frame{margin:0}.project__info{display:flex;flex-direction:column;gap:12px}.project__index{font-family:var(--font-mono);font-size:.8rem;color:var(--accent)}.project__title{font-size:clamp(2.25rem,4.6vw,5rem);font-weight:800;line-height:.95;letter-spacing:-.03em;overflow-wrap:break-word}.project__meta{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.project__summary{max-width:42ch;color:var(--text-muted)}.project__link{align-self:flex-start;margin-top:8px;padding:8px 14px;border:1px solid var(--line);border-radius:999px;font-size:.875rem;text-decoration:none;transition:border-color .25s,color .25s}.project__link:hover{border-color:var(--accent);color:var(--accent)}.frame{display:flex;flex-direction:column;gap:12px;margin:0 auto}.frame__screen{position:relative;overflow:hidden;background:#111;border:1px solid var(--line)}.frame__screen img,.frame__screen video{width:100%;height:100%;object-fit:cover}.frame--desktop{width:min(100%,1100px,calc((100svh - 260px)*1.6))}.frame--desktop .frame__screen{aspect-ratio:16 / 10;border-radius:10px}.frame--mobile{width:min(320px,70vw,calc((100svh - 220px)*.46))}.frame--mobile .frame__screen{aspect-ratio:9 / 19.5;border-radius:32px;border-width:6px;border-color:#1d1d1d}.frame__placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:16px;background:radial-gradient(120% 80% at 50% 0%,color-mix(in srgb,var(--accent) 22%,transparent),transparent 70%),#0f0f0f}.frame__placeholder-title{font-weight:500;font-size:clamp(1rem,2vw,1.5rem)}.frame__placeholder-label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint)}.frame__caption{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.15em;text-transform:uppercase;color:var(--text-faint)}.archive,.contact{min-height:100svh;display:flex;align-items:center;padding:var(--gutter);padding-bottom:calc(var(--gutter) + var(--footer-clearance))}.archive__inner,.contact__inner{width:100%;max-width:1200px;margin:0 auto}.archive__note{font-size:clamp(1.25rem,2.4vw,1.75rem);max-width:30ch;line-height:1.3;margin-bottom:clamp(32px,5vw,56px)}.archive__note a{text-underline-offset:.2em;text-decoration-thickness:1px}.archive__lead{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-muted);margin-bottom:16px}.archive__list{list-style:none;border-top:1px solid var(--line)}.archive__row{padding:18px 0;border-bottom:1px solid var(--line);font-size:clamp(1.25rem,3vw,2rem);font-weight:500;letter-spacing:-.01em}.contact__line{display:flex;flex-wrap:wrap;align-items:center;gap:.2em .55em;font-size:clamp(1.5rem,4.6vw,4rem);font-weight:500;line-height:1.1;letter-spacing:-.025em}.contact__label{font:inherit;color:var(--text)}.contact__dot{width:.2em;height:.2em;border-radius:50%;background:var(--text-muted);flex-shrink:0}.contact__email{text-decoration:none;color:var(--text);transition:opacity .25s}.contact__email:hover{opacity:.6}.contact__links{list-style:none;display:flex;gap:24px;margin-top:32px;color:var(--text-muted)}@media(max-width:760px){.slide__split{grid-template-columns:1fr;gap:24px}.frame--desktop{width:100%}}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}.teleport-overlay{position:fixed;inset:0;background:#000;z-index:9999}.minimap{position:fixed;right:20px;top:20px;z-index:100;background:#0a0a0a4d;border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:10px 10px 8px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);opacity:.6;font-family:var(--font-mono);transition:opacity .35s,background .35s,border-color .35s}.minimap:not(.minimap--touch):hover,.minimap:has(:focus-visible),.minimap--open{background:#0a0a0ae6;border-color:#ffffff1f;opacity:1}.minimap__label{font-size:.625rem;letter-spacing:.4em;color:#ffffff59;text-transform:uppercase;text-align:center;margin-bottom:6px;opacity:0;transition:opacity .25s}.minimap:not(.minimap--touch):hover .minimap__label,.minimap:has(:focus-visible) .minimap__label,.minimap--open .minimap__label{opacity:1}.minimap__svg{display:block;overflow:visible}.minimap__path-glow{fill:none;stroke:#ffffff0d;stroke-width:10;stroke-linecap:round}.minimap__path{fill:none;stroke:#ffffff2e;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:5 4}.minimap__path--accent{stroke:var(--current);opacity:.45;transition:stroke .3s}.minimap__node{cursor:pointer}.minimap__node-dot{transform-box:fill-box;transform-origin:center;transition:r .3s,fill .3s,transform .2s}.minimap__node:hover .minimap__node-dot{transform:scale(1.35)}.minimap__node-hover-ring{fill:none;stroke:var(--accent);stroke-width:1;opacity:0;transition:opacity .2s}.minimap__node:hover .minimap__node-hover-ring{opacity:.3}.minimap__end line{stroke:#ffffff4d;stroke-width:1.5;stroke-linecap:round}.minimap__traveler{fill:#fff;opacity:.95}.minimap__traveler-ring{fill:none;stroke:#fff;stroke-width:.75;opacity:.25}.minimap__progress-track{margin-top:8px;height:2px;background:#ffffff14;border-radius:2px;overflow:hidden}.minimap__progress-fill{height:100%;background:var(--current);transform:scaleX(0);transform-origin:left;transition:background .3s}.minimap__sections{list-style:none;max-height:0;max-width:0;overflow:hidden;display:flex;flex-direction:column;gap:2px;border-top:1px solid transparent;transition:max-height .35s ease,max-width .35s ease,margin-top .35s,padding-top .35s,border-color .35s}.minimap:not(.minimap--touch):hover .minimap__sections,.minimap:has(:focus-visible) .minimap__sections,.minimap--open .minimap__sections{max-height:400px;max-width:240px;margin-top:10px;padding-top:8px;border-top-color:#ffffff0f}.minimap__section-item{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:4px;text-decoration:none;transition:background .2s,transform .18s}.minimap__section-item:hover{background:#ffffff14;transform:translate(3px)}.minimap__section-item--active{background:#ffffff0d}.minimap__section-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--accent);opacity:.35;transition:opacity .3s}.minimap__section-item:hover .minimap__section-dot,.minimap__section-item--active .minimap__section-dot{opacity:1}.minimap__section-text{font-size:.6875rem;letter-spacing:.12em;color:#ffffff73;text-transform:uppercase;white-space:nowrap;transition:color .3s}.minimap__section-item:hover .minimap__section-text{color:#fffc}.minimap__section-item--active .minimap__section-text{color:var(--accent)}@media(max-width:699px){.minimap{display:none}}
