.section-progress{display:block;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left}.sectionnav{position:fixed;inset:auto 0 0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:1.3rem 5vw;mix-blend-mode:difference;opacity:0;visibility:hidden}.sectionnav__brand{border:0;background:none;padding:0;cursor:pointer;color:#fff;opacity:.85;font-family:Space Grotesk,sans-serif;font-weight:700;font-size:clamp(.85rem,1.5vw,1rem);letter-spacing:.02em}.sectionnav__brand-accent{opacity:.6}.sectionnav__links{display:flex;list-style:none;margin:0;padding:0;gap:clamp(1.1rem,2.5vw,2.2rem)}.sectionnav__links a{position:relative;display:inline-block;padding-bottom:2px;color:#fff;opacity:.55;text-transform:uppercase;text-decoration:none;font-size:clamp(.7rem,1.2vw,.82rem);font-weight:700;letter-spacing:.16em;transition:opacity .25s ease}.sectionnav__num{margin-right:.4em;font-weight:400;opacity:.6;font-size:.85em}.sectionnav__progress{position:absolute;left:0;bottom:0}.sectionnav__links a:hover,.sectionnav__links a:focus-visible{opacity:1}.sectionnav__link--active{opacity:1!important}@media(max-width:640px){.sectionnav{padding:1rem 4vw}.sectionnav__num{display:none}.sectionnav__links{gap:clamp(.6rem,3vw,1.1rem)}.sectionnav__links a{font-size:clamp(.58rem,2.6vw,.7rem);letter-spacing:.08em}}.navbar{position:absolute;inset:auto 0 4vh;z-index:10;pointer-events:none}.navbar__nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;width:100%;padding-inline:5vw;gap:.75rem;pointer-events:auto}.navbar__bar{width:calc(100% - 10vw);height:3px;margin:0 auto 1.1rem;background:linear-gradient(90deg,transparent,#1e293b 25%,#1e293b 75%,transparent);transform:scaleX(0);transform-origin:center;opacity:0}.navbar__brand{grid-column:1;justify-self:start;color:#1e293b;opacity:.9;font-family:Space Grotesk,sans-serif;font-weight:800;font-size:clamp(.45rem,1.5vw,1.05rem);letter-spacing:.02em}.navbar__social{grid-column:2;justify-self:center}.navbar__pages{grid-column:3;justify-self:end}.navbar__brand,.navbar__social li,.navbar__pages li{opacity:0;transform:translateY(10px)}.navbar__social,.navbar__pages{display:flex;list-style:none;margin:0;padding:0;gap:1rem;flex-wrap:wrap}.navbar__social li:not(:first-child):before,.navbar__pages li:not(:first-child):before{content:"/";display:inline-block;margin-right:1rem;color:#1e293b;opacity:.6;font-weight:400}.navbar__nav a{position:relative;display:inline-block;padding-bottom:1px;color:#1e293b;opacity:.9;text-transform:uppercase;text-decoration:none;font-size:clamp(.75rem,1.3vw,.9rem);font-weight:800;letter-spacing:.16em;transition:opacity .25s ease}.navbar__nav a:after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:#1e293b;transition:width .3s ease}.navbar__nav a:hover,.navbar__nav a:focus-visible{opacity:1}.navbar__nav a:hover:after,.navbar__nav a:focus-visible:after{width:100%}@media(max-width:640px){.navbar{position:static;inset:auto}.navbar__nav{grid-template-columns:1fr;justify-items:center;gap:.6rem}.navbar__brand,.navbar__social,.navbar__pages{grid-column:1;justify-self:center}.navbar__brand{font-size:.05rem;letter-spacing:.01em}.navbar__pages{flex-wrap:nowrap;gap:.6rem;margin-top:.5rem}.navbar__pages a{font-size:clamp(.6rem,2.6vw,.75rem)}.navbar__pages li:not(:first-child):before{margin-right:.6rem}}.gfx-rule{display:block;width:var(--gfx-rule-len, clamp(56px, 7vw, 96px));height:var(--gfx-rule-thick, 2px);background:linear-gradient(90deg,var(--gfx-rule-stops, var(--accent-stops)));transform-origin:left center;will-change:transform}.gfx-rule--v{width:var(--gfx-rule-thick, 2px);height:var(--gfx-rule-len, clamp(56px, 7vw, 96px));background-image:linear-gradient(180deg,var(--gfx-rule-stops, var(--accent-stops)));transform-origin:center top}.gfx-rule--full{--gfx-rule-len: 100%}.gfx-rule--dim{--gfx-rule-stops: var(--accent-stops-dim)}.gfx-rule--plain{background-image:none;background-color:#f4f7f540}.gfx-crop{position:absolute;width:var(--gfx-crop-size, 16px);height:var(--gfx-crop-size, 16px);background:linear-gradient(#f4f7f5,#f4f7f5) 0 0 / 100% 1px no-repeat,linear-gradient(#f4f7f5,#f4f7f5) 0 0 / 1px 100% no-repeat;opacity:var(--gfx-crop-opacity, .8)}.gfx-crop--tl{top:var(--gfx-crop-y, 10px);left:var(--gfx-crop-x, 10px)}.gfx-crop--tr{top:var(--gfx-crop-y, 10px);right:var(--gfx-crop-x, 10px);transform:rotate(90deg)}.gfx-crop--br{right:var(--gfx-crop-x, 10px);bottom:var(--gfx-crop-y, 10px);transform:rotate(180deg)}.gfx-crop--bl{bottom:var(--gfx-crop-y, 10px);left:var(--gfx-crop-x, 10px);transform:rotate(270deg)}.gfx-crop--hair{--gfx-crop-size: 10px;--gfx-crop-opacity: .4}.gfx-dash{position:absolute;--gfx-dash-ink: rgba(244, 247, 245, var(--gfx-dash-alpha, .26))}.gfx-dash--v{width:var(--gfx-dash-thick, 1px);background-image:linear-gradient(180deg,var(--gfx-dash-ink) 50%,transparent 50%);background-size:100% var(--gfx-dash-gap, 8px)}.gfx-dash--h{height:var(--gfx-dash-thick, 1px);background-image:linear-gradient(90deg,var(--gfx-dash-ink) 50%,transparent 50%);background-size:var(--gfx-dash-gap, 8px) 100%}.gfx-dash--dots{--gfx-dash-thick: 2px}.gfx-dash--dots.gfx-dash--v,.gfx-dash--dots.gfx-dash--h{background-image:radial-gradient(circle,var(--gfx-dash-ink) 1px,transparent 1.2px)}.gfx-dash--accent{background-color:transparent;background-image:linear-gradient(90deg,var(--accent-stops));-webkit-mask-image:var(--gfx-dash-mask);mask-image:var(--gfx-dash-mask)}.gfx-dash--accent.gfx-dash--v{--gfx-dash-mask: linear-gradient(180deg, #000 50%, transparent 50%);-webkit-mask-size:100% var(--gfx-dash-gap, 8px);mask-size:100% var(--gfx-dash-gap, 8px)}.gfx-dash--accent.gfx-dash--h{--gfx-dash-mask: linear-gradient(90deg, #000 50%, transparent 50%);-webkit-mask-size:var(--gfx-dash-gap, 8px) 100%;mask-size:var(--gfx-dash-gap, 8px) 100%}.gfx-perf{position:absolute;background-image:radial-gradient(circle,var(--gfx-perf-ink, #030303) var(--gfx-perf-hole, 3px),transparent calc(var(--gfx-perf-hole, 3px) + .5px))}.gfx-perf--v{width:var(--gfx-perf-band, 8px);background-size:var(--gfx-perf-band, 8px) var(--gfx-perf-step, 11px)}.gfx-perf--h{height:var(--gfx-perf-band, 8px);background-size:var(--gfx-perf-step, 11px) var(--gfx-perf-band, 8px)}.gfx-mark{position:absolute;display:flex;align-items:center;justify-content:center;width:var(--gfx-mark-size, 30px);height:var(--gfx-mark-size, 30px);outline:1px solid rgba(244,247,245,.18);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:calc(var(--gfx-mark-size, 30px) * .48);line-height:1;color:#f4f7f573}.gfx-mark--circle{border-radius:50%}.gfx-mark--bare{outline:none}.gfx-mark--accent{outline-color:color-mix(in srgb,var(--accent-green) 55%,transparent);color:var(--accent-lime)}.gfx-mark--solid{outline:none;background:linear-gradient(120deg,var(--accent-stops));color:#04120c}.gfx-stamp{display:inline-flex;align-items:center;gap:.5em;padding:.32rem .7rem;outline:1px solid rgba(244,247,245,.22);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;white-space:nowrap;color:#f4f7f56b;transform:rotate(var(--gfx-stamp-tilt, -6deg))}.gfx-stamp--accent{outline-color:color-mix(in srgb,var(--accent-green) 55%,transparent);color:var(--accent-lime)}.gfx-stamp--solid{outline:none;background:linear-gradient(120deg,var(--accent-stops));color:#04120c}.gfx-stamp--bare{padding:0;outline:none}.gfx-ticks{position:absolute;--gfx-ticks-ink: rgba(244, 247, 245, var(--gfx-ticks-alpha, .3))}.gfx-ticks--h{height:var(--gfx-ticks-len, 8px);background-image:repeating-linear-gradient(90deg,var(--gfx-ticks-ink) 0 1px,transparent 1px var(--gfx-ticks-step, 10px))}.gfx-ticks--v{width:var(--gfx-ticks-len, 8px);background-image:repeating-linear-gradient(180deg,var(--gfx-ticks-ink) 0 1px,transparent 1px var(--gfx-ticks-step, 10px))}.gfx-ticks--bars{--gfx-ticks-len: 22px;--gfx-ticks-alpha: .55}.gfx-ticks--bars.gfx-ticks--h{background-image:repeating-linear-gradient(90deg,var(--gfx-ticks-ink) 0 2px,transparent 2px 7px),repeating-linear-gradient(90deg,var(--gfx-ticks-ink) 0 1px,transparent 1px 4px)}.gfx-ticks--bars.gfx-ticks--v{background-image:repeating-linear-gradient(180deg,var(--gfx-ticks-ink) 0 2px,transparent 2px 7px),repeating-linear-gradient(180deg,var(--gfx-ticks-ink) 0 1px,transparent 1px 4px)}.hero{background:#000;overflow:hidden;clip-path:inset(0% 0% 0% 0%);will-change:clip-path}.hero__loader{position:absolute;inset:0;z-index:3;background:#000;display:flex;align-items:flex-end;justify-content:center}.hero__loader-readout{position:absolute;bottom:calc(12vh + 1.6em);left:5vw;display:flex;align-items:baseline;gap:.75em;font-family:Space Grotesk,sans-serif;color:#f4f7f58c}.hero__loader-label{font-size:clamp(.65rem,.85vw,.8rem);letter-spacing:.14em;text-transform:uppercase}.hero__loader-count{font-size:clamp(.9rem,1.2vw,1.1rem);font-variant-numeric:tabular-nums;color:#f4f7f5}.hero__loader-track{position:absolute;bottom:12vh;right:5vw;left:5vw;height:2px;background:#f4f7f526}.hero__loader-bar{position:absolute;top:0;left:0;width:100%;height:2px;background:#fff;transform-origin:left center;transform:scaleX(0);will-change:transform}@media(max-width:640px){.hero__loader-readout,.hero__loader-track{left:6vw;right:6vw;bottom:8vh}}.hero__scan{position:absolute;top:0;left:0;right:0;height:100%;background:#fff;mix-blend-mode:difference;pointer-events:none;z-index:2;transform:translateY(100%)}.hero__scroll{--chevron: clamp(5px, .75vh, 8px);position:absolute;left:50%;bottom:2vh;transform:translate(-50%,50%);z-index:1;display:flex;flex-direction:column;align-items:center;opacity:0;visibility:hidden;pointer-events:none}.hero__scroll-chevron{width:var(--chevron);height:var(--chevron);border-right:1.5px solid #1e293b;border-bottom:1.5px solid #1e293b;transform:scaleX(1.6) rotate(45deg);opacity:.18;will-change:opacity}.hero__scroll-chevron+.hero__scroll-chevron{margin-top:calc(var(--chevron) * -.38)}.hero__type{position:absolute;top:6vh;left:5vw;z-index:1;max-width:34ch;min-height:3.1em;color:#000;font-family:Space Grotesk,sans-serif;font-weight:500;font-size:clamp(.75rem,.95vw,.85rem);line-height:1.55;opacity:0;visibility:hidden}.hero__type-em{font-family:Cormorant Infant,serif;font-style:italic;font-weight:500;font-size:1.2em;color:#000}.hero__type-cursor{display:inline-block;margin-left:1px;animation:hero-type-blink .9s steps(1) infinite}@keyframes hero-type-blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.hero__type-cursor{animation:none}}.hero__bg{position:absolute;top:-10%;left:0;right:0;height:120%;z-index:0;opacity:0;visibility:hidden;pointer-events:none;overflow:hidden}.hero__bg canvas{display:block;width:100%;height:100%}.hero__bottom{position:absolute;inset:auto 0 10vh;z-index:1;display:flex;flex-direction:column}.hero__row{display:flex;justify-content:space-between;align-items:baseline;width:100%;padding-inline:5vw;margin:0}.hero__word{--hero-size: clamp(3rem, 11vw, 30rem);display:inline-flex;color:#fff;line-height:1;white-space:nowrap;font-size:var(--hero-size)}.hero__word--first{font-family:Space Grotesk,sans-serif;font-weight:700;letter-spacing:-.01em}.hero__word--last{font-family:Cormorant Infant,serif;font-style:italic;font-weight:500;font-size:calc(var(--hero-size) * 1.3)}.hero__letter-wrap{display:inline-block;overflow:hidden;line-height:1;padding-right:.06em;margin-right:-.06em}.hero__letter{display:inline-block;transform:translateY(110%);opacity:0;will-change:transform,opacity}.hero__semi{display:inline-block;color:#3d3d3d;opacity:0;transform:scale(.4);cursor:pointer;will-change:transform,opacity}@media(max-width:640px){.hero__scroll{--chevron: 6px;bottom:1.5vh}.hero__type{max-width:70vw;min-height:4.65em;top:4vh}.hero__stack{position:absolute;inset:auto 0 3vh;z-index:1;display:flex;flex-direction:column;align-items:center;gap:2.5vh}.hero__bottom{position:static;inset:auto}.hero__row{flex-direction:column;align-items:center;gap:.5rem}.hero__word{--hero-size: clamp(2.6rem, 15vw, 4.5rem)}}.whatido{background:#030303;display:flex;clip-path:inset(0% 0% 0% 0%);will-change:clip-path}.whatido__grid{position:absolute;inset:0;width:100%;height:100%;background-image:linear-gradient(rgba(244,247,245,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(244,247,245,.018) 1px,transparent 1px);background-size:40px 40px;pointer-events:none;transform-origin:center;will-change:transform,opacity}.whatido__inner{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:4vw;width:100%;padding:0 6vw;perspective:1200px}.whatido__col{max-width:26vw;will-change:transform,opacity}.whatido__col--right{text-align:right}.whatido__meta{display:flex;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;padding-bottom:.6rem;border-bottom:1px solid rgba(244,247,245,.15);color:#f4f7f58c;font-family:Space Grotesk,sans-serif;font-weight:700;font-size:clamp(.65rem,.9vw,.75rem);letter-spacing:.14em;text-transform:uppercase}.whatido__title{margin:0 0 1.5rem;font-family:Cormorant Infant,serif;font-style:italic;font-weight:500;font-size:clamp(2.6rem,5.2vw,5.5rem);line-height:1;white-space:nowrap}.whatido__letter-wrap{display:inline-block;overflow:hidden;line-height:1;perspective:400px}.whatido__letter{display:inline-block;background:linear-gradient(100deg,var(--accent-stops));background-clip:text;-webkit-background-clip:text;color:transparent;will-change:transform,opacity}.whatido__word-wrap{display:inline-block;overflow:hidden;line-height:1.6}.whatido__word{display:inline-block;will-change:transform,opacity}.whatido__divider{height:1px;margin-bottom:1.5rem;background:#f4f7f540;transform:scaleX(0);transform-origin:left center}.whatido__col--right .whatido__divider{transform-origin:right center}.whatido__text{max-width:42ch;margin:0 0 0 auto;color:#f4f7f5;font-family:Space Grotesk,sans-serif;font-weight:400;font-size:clamp(.9rem,1.2vw,1.05rem);line-height:1.6}.whatido__col--left .whatido__text{margin-left:0}@media(max-width:900px){.whatido{align-items:stretch;padding:12vh 0;overflow-y:auto}.whatido__inner{flex-direction:column;justify-content:space-between;align-items:stretch;min-height:100%;gap:8vh;padding:0 8vw}.whatido__col,.whatido__col--right{max-width:100%;text-align:left}.whatido__title{white-space:normal;font-size:clamp(2rem,6vw,3rem)}.whatido__divider,.whatido__col--right .whatido__divider{transform-origin:left center}.whatido__text,.whatido__col--left .whatido__text{margin-left:0}}.aboutme{display:flex;flex-direction:column;overflow:hidden;pointer-events:none;will-change:opacity;z-index:20!important}.aboutme__block{width:100%;height:calc(50dvh + 1px);flex-shrink:0;background:#000;will-change:transform;z-index:-1}.aboutme__block--top{transform:translate(-100%)}.aboutme__block--bottom{transform:translate(100%)}.aboutme__backdrop{position:absolute;inset:0;background:#030303;opacity:0;will-change:opacity}.aboutme__frame{position:absolute;inset:0;z-index:1;display:grid;grid-template-columns:minmax(280px,34%) 1fr;align-items:center;gap:clamp(24px,3vw,56px);width:min(1280px,88vw);margin:0 auto}.aboutme__ticket{display:flex;height:clamp(320px,62vh,560px);background:#080a09;opacity:0;will-change:transform,opacity}.aboutme__stub{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-between;flex-shrink:0;width:clamp(48px,4.5vw,68px);padding:2.2vh 0}.aboutme__stub-holes{left:0;top:0;bottom:0}.aboutme__stub-edge{right:0;top:6%;bottom:6%}.aboutme__stub-text{writing-mode:vertical-rl;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:clamp(.65rem,.9vw,.8rem);letter-spacing:.42em;text-transform:uppercase;color:#f4f7f58c}.aboutme__arrows{font-size:1.1rem;line-height:1;color:color-mix(in srgb,var(--accent-green) 75%,transparent)}.aboutme__ticket-body{position:relative;display:flex;flex-direction:column;justify-content:center;gap:2.2vh;flex:1;min-width:0;padding:3vh clamp(18px,2vw,32px)}.aboutme__mark{top:3vh;right:clamp(18px,2vw,32px);will-change:transform,opacity}.aboutme__info-line{margin:0;font-family:Space Grotesk,sans-serif;font-size:clamp(.78rem,1vw,.9rem);line-height:1.6;color:#f4f7f599}.aboutme__photo{position:relative;width:100%;height:clamp(200px,34vh,340px);overflow:hidden;will-change:clip-path}.aboutme__photo-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 30%;filter:contrast(1.05) saturate(1.05) brightness(.94)}.aboutme__panel{position:relative;display:flex;flex-direction:column;justify-content:center;height:clamp(320px,62vh,560px);min-width:0;padding:0 clamp(20px,3vw,56px);background:#080a09;opacity:0;will-change:transform,opacity}.aboutme__deco{will-change:opacity}.aboutme__heading{margin:0 0 2vh;font-family:Cormorant Infant,serif;font-style:italic;font-weight:500;font-size:clamp(2.2rem,4.6vw,4.4rem);line-height:1.02;color:#f4f7f5}.aboutme__heading-break{display:block}.aboutme__letter-wrap{display:inline-block;overflow:hidden;line-height:1.02}.aboutme__letter{display:inline-block}.aboutme__rule{margin-bottom:2.6vh}.aboutme__sub{max-width:48ch;margin:0;font-family:Space Grotesk,sans-serif;font-size:clamp(.95rem,1.2vw,1.05rem);line-height:1.7;color:#f4f7f5b3;will-change:transform,opacity}@media(max-width:900px){.aboutme__frame{grid-template-columns:minmax(200px,40%) 1fr;gap:0}.aboutme__ticket,.aboutme__panel{height:clamp(280px,56dvh,460px)}}@media(max-width:640px){.aboutme__frame{grid-template-columns:1fr;align-items:stretch;gap:1.6dvh;width:86vw;padding:2dvh 0 calc(56px + 2dvh)}.aboutme__ticket{height:clamp(260px,42dvh,360px)}.aboutme__photo{height:clamp(150px,26dvh,230px)}.aboutme__photo-img{object-position:50% 25%}.aboutme__stub{padding:1.6dvh 0}.aboutme__ticket-body{gap:1.4dvh;padding:2dvh clamp(18px,6vw,28px)}.aboutme__panel{height:auto;padding:3dvh clamp(18px,6vw,28px)}.aboutme__heading{font-size:clamp(1.6rem,7.5vw,2rem);margin-bottom:1.2dvh}.aboutme__rule{margin-bottom:1.4dvh}.aboutme__sub{font-size:.9rem;line-height:1.5}}.projects{--projects-deadzone: 4.5rem;background:#030303;display:flex;flex-direction:column;overflow:hidden;will-change:opacity}.projects__header{position:relative;z-index:1;display:flex;flex-direction:column;gap:1.6vh;padding:9vh 6vw 2.6vh;border-bottom:1px solid rgba(244,247,245,.14);will-change:transform,opacity}.projects__heading{margin:0;font-family:Cormorant Infant,serif;font-style:italic;font-weight:500;font-size:clamp(2.6rem,5.4vw,5.2rem);line-height:1;color:#f4f7f5}.projects__meta{display:flex;align-items:center;gap:2.4vw}.projects__filters{display:flex;flex-wrap:wrap;gap:.4em;flex-shrink:0}.projects__filter{padding:.55em 1em;border:1px solid rgba(244,247,245,.18);border-radius:1px;background:transparent;font-family:Space Grotesk,sans-serif;font-size:clamp(.62rem,.85vw,.75rem);letter-spacing:.1em;text-transform:uppercase;color:#f4f7f580;white-space:nowrap;cursor:pointer}.projects__filter:hover{border-color:#f4f7f566;color:#f4f7f5}.projects__filter--active{border-color:transparent;background:linear-gradient(90deg,var(--accent-stops));color:#030303}.projects__filter:focus-visible{outline:1px solid var(--accent-green);outline-offset:2px}.projects__marquee{flex:1;min-width:0;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.projects__marquee-track{display:flex;width:max-content;will-change:transform}.projects__marquee-row{display:flex;align-items:center;flex-shrink:0;white-space:nowrap}.projects__marquee-item{display:inline-flex;align-items:center;gap:1.4em;padding:0 1.4em;font-family:Space Grotesk,sans-serif;font-size:clamp(.7rem,1vw,.85rem);letter-spacing:.1em;text-transform:uppercase;color:#f4f7f566}.projects__marquee-star{font-size:.6em;color:#f4f7f566}.projects__progress{position:absolute;right:1.8vw;top:1.6vh;bottom:1.6vh;z-index:3;display:flex;flex-direction:column;align-items:center;gap:.7em;pointer-events:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:clamp(.75rem,1vw,.9rem);color:#f4f7f573}.projects__progress-index{position:relative;color:#f4f7f5;padding-bottom:.4em}.projects__progress-index:after{content:"";position:absolute;left:50%;bottom:0;width:1.4em;height:2px;translate:-50% 0;background:linear-gradient(90deg,var(--accent-stops))}.projects__progress-track{position:relative;width:2px;flex:1;min-height:0;background:#f4f7f526;border-radius:2px;overflow:hidden;transform-origin:top center;will-change:transform}.projects__progress-fill{position:absolute;inset:0;transform-origin:top center;transform:scaleY(0);background:linear-gradient(180deg,var(--accent-stops-rev));will-change:transform}.projects__list-viewport{position:relative;z-index:1;flex:1;overflow:hidden;padding:0 6vw;margin-bottom:var(--projects-deadzone)}.projects__list{list-style:none;margin:0;padding:0;width:100%;display:flex;flex-direction:column;justify-content:flex-start;will-change:transform}.projects__list>li{height:var(--projects-row-h, clamp(98px, 10.4vw, 168px));flex-shrink:0;container-type:size}.projects__row{position:relative;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:2vw;height:100%;padding:.8vh 0;border-bottom:1px solid rgba(244,247,245,.12);opacity:0;color:inherit;text-decoration:none;will-change:transform,opacity}.projects__row>.projects__title{min-width:0}.projects__list--active .projects__row{cursor:none}.projects__row:hover{z-index:2}.projects__row:focus-visible{outline:1px solid var(--accent-green);outline-offset:-4px}.projects__cursor-pill{position:fixed;top:0;left:0;z-index:50;background:#0b1013;box-shadow:0 12px 28px -12px #000c;pointer-events:none;will-change:transform,opacity;outline-color:#f4f7f580;color:#f4f7f5}.projects__cursor-arrow{width:42%;height:42%;overflow:visible}@media(hover:none){.projects__cursor-pill{display:none}}@media(prefers-reduced-motion:reduce){.projects__cursor-pill{display:none}.projects__list--active .projects__row{cursor:pointer}}.projects__title{position:relative;margin:0;display:flex;max-width:100%;overflow:hidden;font-family:Cormorant Infant,serif;font-style:italic;font-weight:500;font-size:min(clamp(1.7rem,3.5vw,3.2rem),38cqh);line-height:1;color:#f4f7f5;padding-bottom:.12em;mask-image:linear-gradient(90deg,#000 85%,transparent 100%);-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent 100%)}.projects__letter-wrap{display:inline-block;flex-shrink:0;overflow:hidden;line-height:1}.projects__letter{display:inline-block;will-change:transform,opacity}.projects__title-underline{position:absolute;left:0;bottom:0;height:2px;width:100%;background:linear-gradient(90deg,var(--accent-stops));transform-origin:left center;transform:scaleX(0);will-change:transform}.projects__tag{justify-self:end;font-family:Space Grotesk,sans-serif;font-size:clamp(.6rem,.75vw,.7rem);color:#f4f7f58c;text-transform:uppercase;letter-spacing:.1em}.projects__thumb{position:relative;width:clamp(180px,19.5vw,340px);height:min(clamp(104px,11vw,190px),125cqh);overflow:hidden;border:1px solid rgba(244,247,245,.28);border-radius:1px;clip-path:inset(50% 0% 50% 0%);pointer-events:none;will-change:clip-path}.projects__thumb-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.projects__thumb-overlay{position:absolute;inset:0;background:linear-gradient(155deg,#0f3b3433,#03080752);mix-blend-mode:multiply}.projects__thumb-scan{position:absolute;inset:0;background:#fff;mix-blend-mode:difference;opacity:0}@media(max-width:1100px){.projects__meta{flex-wrap:wrap;row-gap:1.4vh}.projects__marquee{flex-basis:100%;width:100%;padding-top:1vh;border-top:1px solid rgba(244,247,245,.1)}}@media(max-width:640px){.projects__header{padding:9vh 8vw 2.4vh}.projects__meta{align-items:flex-start;gap:4vw}.projects__filters{flex:1}.projects__filter{padding:.45em .75em;letter-spacing:.06em}.projects__row{grid-template-columns:1fr;gap:.6vh}.projects__tag{justify-self:start}.projects__thumb{display:none}.projects__list-viewport{padding:0 9vw 0 6vw}.projects__progress{right:2.5vw;font-size:.68rem}}.skills{background:#000;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:6vw;padding:0 7vw;overflow:hidden;will-change:opacity}.skills__intro{position:relative;z-index:1;max-width:34rem}.skills__headline{margin:0;font-family:Cormorant Infant,serif;font-style:italic;font-weight:500;font-size:clamp(2rem,3.8vw,3.8rem);line-height:1.06;color:#f4f7f5}.skills__line{display:block;overflow:hidden}.skills__line-inner{display:block;will-change:transform}.skills__rule{margin:2.6rem 0 2rem;opacity:0;will-change:transform,opacity}.skills__meta{margin:0;display:flex;flex-direction:column;gap:1.1rem}.skills__meta-row{display:grid;grid-template-columns:clamp(88px,9vw,120px) 1fr;align-items:baseline;gap:1rem;padding-top:1.1rem;border-top:1px solid rgba(244,247,245,.1);opacity:0;will-change:transform,opacity}.skills__meta-term{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:color-mix(in srgb,var(--accent-green) 85%,transparent)}.skills__meta-value{margin:0;font-family:Space Grotesk,sans-serif;font-size:clamp(.9rem,1.15vw,1.05rem);line-height:1.5;color:#f4f7f5c7}.skills__list-wrap{position:relative;z-index:1;min-width:0}.skills__list{position:relative;max-height:74vh;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 5%,#000 95%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 5%,#000 95%,transparent 100%)}.skills__list::-webkit-scrollbar{display:none}.skills__scrollbar{position:absolute;top:0;bottom:0;right:-1.4rem;width:2px;background:#f4f7f51a;opacity:0;pointer-events:none}.skills__scrollbar-thumb{display:block;height:100%;background:linear-gradient(180deg,var(--accent-stops-dim));transform-origin:top center;will-change:transform}.skills__cat{border-bottom:1px solid rgba(244,247,245,.1);opacity:0;will-change:transform,opacity}.skills__cat-head{position:relative;display:flex;align-items:baseline;justify-content:space-between;gap:1rem;width:100%;padding:1.4rem 0;border:0;background:none;text-align:left;cursor:pointer;will-change:transform}.skills__cat-underline{position:absolute;inset:auto 0 -1px;height:1px;background:linear-gradient(90deg,var(--accent-stops-dim));transform:scaleX(0);transform-origin:left center;will-change:transform}.skills__cat-name{font-family:Space Grotesk,sans-serif;font-weight:500;font-size:clamp(1.3rem,2.2vw,2rem);letter-spacing:-.01em;color:#f4f7f599;will-change:transform}.skills__cat--open .skills__cat-name{color:#f4f7f5}.skills__cat-icon{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.3rem;line-height:1;color:#f4f7f573;will-change:transform}.skills__cat--open .skills__cat-icon{color:var(--accent-lime)}.skills__techs{margin:0;padding:.2rem 0 1.9rem 1.3rem;border-left:1px solid transparent;list-style:none;display:flex;flex-wrap:wrap;gap:.9rem 1.8rem}.skills__cat--open .skills__techs{border-image:linear-gradient(180deg,var(--accent-stops-dim)) 1}.skills__tech{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:clamp(.72rem,.9vw,.82rem);letter-spacing:.1em;text-transform:uppercase;color:#f4f7f580;will-change:transform,opacity}@media(max-width:900px){.skills{grid-template-columns:1fr;align-content:center;gap:4vh;padding:0 8vw}.skills__rule{margin:1.6rem 0 1.3rem}.skills__meta{gap:.7rem}.skills__meta-row{grid-template-columns:1fr;gap:.3rem;padding-top:.7rem}.skills__list{max-height:40vh}.skills__scrollbar{right:-.9rem;width:3px}}.contact{--fs-micro: .62rem;--fs-meta: .7rem;--fs-action: .78rem;--fs-body: clamp(.88rem, 1.05vw, 1rem);background:#030303;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:5vw;padding:0 7vw;overflow:hidden;perspective:1200px}.contact__left{position:relative;z-index:1;max-width:34rem;will-change:transform}.contact__headline{margin:0;font-family:Space Grotesk,sans-serif;font-weight:700;font-size:clamp(2.8rem,7.6vw,6.6rem);line-height:.92;letter-spacing:-.03em;color:#f4f7f5}.contact__line-row{display:flex;align-items:baseline}.contact__word{display:block;overflow:hidden;padding-bottom:.06em}.contact__word-inner{display:block;will-change:transform}.contact__word--serif{font-family:Cormorant Infant,serif;font-style:italic;font-weight:500;letter-spacing:-.01em}.contact__dot{background:linear-gradient(120deg,var(--accent-stops));-webkit-background-clip:text;background-clip:text;color:transparent;will-change:transform,opacity}.contact__bar{margin:2rem 0 1.6rem}.contact__sub{margin:0 0 2.2rem;max-width:30rem;font-family:Space Grotesk,sans-serif;font-size:var(--fs-body);line-height:1.6;color:#f4f7f59e;will-change:opacity}.contact__channels{display:flex;flex-wrap:wrap;gap:.8rem;margin-bottom:2rem}.contact__channel{display:flex;flex-direction:column;gap:.25rem;padding:.75rem 1.1rem;border:1px solid rgba(244,247,245,.14);background:#080a09;text-decoration:none;will-change:transform,opacity}.contact__channel:hover{border-color:transparent;background:linear-gradient(#080a09,#080a09) padding-box,linear-gradient(120deg,var(--accent-stops)) border-box}.contact__channel-term{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-micro);letter-spacing:.2em;text-transform:uppercase;background:linear-gradient(90deg,var(--accent-stops));-webkit-background-clip:text;background-clip:text;color:transparent}.contact__channel-value{font-family:Space Grotesk,sans-serif;font-size:var(--fs-body);color:#f4f7f5db}.contact__socials{display:flex;flex-wrap:wrap;gap:1.6rem;margin:0;padding:0;list-style:none}.contact__social{will-change:transform,opacity}.contact__social a{display:flex;align-items:baseline;gap:.5rem;font-family:Space Grotesk,sans-serif;font-weight:700;font-size:var(--fs-meta);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:#f4f7f599}.contact__social a:hover{color:#f4f7f5}.contact__social-handle{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-micro);letter-spacing:.06em;text-transform:none;color:#f4f7f552}.contact__card{position:relative;z-index:1;border:1px solid rgba(244,247,245,.1);background:#080a09;overflow:hidden;transform-origin:center top;will-change:transform,opacity}.contact__mark{top:10px;right:10px}.contact__stub{position:relative;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem clamp(1.4rem,2.6vw,2.4rem);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-micro);letter-spacing:.22em;text-transform:uppercase;color:#f4f7f561}.contact__stub-edge{left:0;right:0;bottom:0}.contact__divider{left:52vw;top:16vh;bottom:16vh;z-index:1;transform-origin:center top;will-change:transform,opacity}.contact__meter{height:2px;background:#f4f7f514}.contact__meter-fill{display:block;height:100%;background:linear-gradient(90deg,var(--accent-stops));transform-origin:left center;will-change:transform}.contact__form{position:relative;padding:clamp(1.4rem,2.6vw,2.4rem)}.contact__body{position:relative;display:flex;flex-direction:column;gap:clamp(1rem,1.8vh,1.5rem);padding-left:1.4rem}.contact__rail{position:absolute;left:0;top:0;width:2px;height:100px;background:linear-gradient(180deg,var(--accent-stops));transform-origin:left top;will-change:transform,opacity}.contact__row{display:flex;flex-direction:column;gap:.4rem;position:relative;will-change:transform,opacity}.contact__label{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-micro);letter-spacing:.2em;text-transform:uppercase;color:#f4f7f573;will-change:transform}.contact__field{position:relative;display:block}.contact__input{display:block;width:100%;padding:.55rem 0;border:0;border-bottom:1px solid rgba(244,247,245,.14);background:none;outline:none;font-family:Space Grotesk,sans-serif;font-size:var(--fs-body);color:#f4f7f5}.contact--kbd .contact__input:focus-visible{outline:1px solid color-mix(in srgb,var(--accent-green) 55%,transparent);outline-offset:4px}.contact__input::placeholder{color:#f4f7f53d}.contact__input--area{resize:none;line-height:1.5}.contact__line{position:absolute;left:0;bottom:0;width:100%;height:1px;background:linear-gradient(90deg,var(--accent-stops));transform-origin:left center;will-change:transform}.contact__row--error .contact__input{border-bottom-color:#f87171}.contact__row--error .contact__label{color:#f87171}.contact__err{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-micro);letter-spacing:.04em;color:#f87171}.contact__err:empty{display:none}.contact__chips{display:flex;flex-wrap:wrap;gap:.5rem;padding-top:.2rem}.contact__chip{position:relative;padding:.42rem .9rem;border:1px solid rgba(244,247,245,.14);background:none;cursor:pointer;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-meta);letter-spacing:.08em;color:#f4f7f599;overflow:hidden}.contact__chip-bg{position:absolute;inset:0;background:linear-gradient(120deg,var(--accent-stops));transform:scaleX(0);transform-origin:left center;will-change:transform}.contact__chip-text{position:relative}.contact__row--actions{flex-direction:row;align-items:center;gap:1.2rem;padding-top:.4rem}.contact__submit{position:relative;padding:.85rem 1.6rem;border:1px solid rgba(244,247,245,.14);background:none;cursor:pointer;overflow:hidden;will-change:transform}.contact__submit:hover{border-color:transparent;background:linear-gradient(#080a09,#080a09) padding-box,linear-gradient(90deg,var(--accent-stops)) border-box}.contact__submit-fill{position:absolute;inset:0;background:linear-gradient(90deg,var(--accent-stops));transform:scaleX(0);transform-origin:left center;will-change:transform}.contact__submit-text{position:relative;font-family:Space Grotesk,sans-serif;font-weight:700;font-size:var(--fs-action);letter-spacing:.1em;text-transform:uppercase;color:#f4f7f5}.contact__alt{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-meta);color:#f4f7f56b;text-decoration:none;padding-bottom:2px;background:linear-gradient(90deg,var(--accent-stops-dim)) left bottom / 100% 1px no-repeat}.contact__alt:hover{color:#f4f7f5cc;background-image:linear-gradient(90deg,var(--accent-stops))}.contact__sent{position:absolute;inset:clamp(1.4rem,2.6vw,2.4rem);display:flex;flex-direction:column;justify-content:center;gap:.8rem;will-change:transform,opacity}.contact__sent-title{margin:0;font-family:Cormorant Infant,serif;font-style:italic;font-size:clamp(1.6rem,3vw,2.4rem);color:#f4f7f5}.contact__sent-text{margin:0;font-family:Space Grotesk,sans-serif;font-size:var(--fs-body);line-height:1.6;color:#f4f7f599}.contact__sent-text a{color:var(--accent-lime)}.contact__again{align-self:flex-start;margin-top:.6rem;padding:0 0 3px;border:0;background:linear-gradient(90deg,var(--accent-stops)) left bottom / 100% 1px no-repeat;cursor:pointer;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-meta);color:#f4f7f5bf}@media(max-width:980px){.contact{grid-template-columns:1fr;align-items:start;align-content:center;gap:min(2vh,14px);padding:min(8vh,48px) 8vw min(6vh,36px);overflow-y:auto}.contact__socials,.contact__divider{display:none}.contact__headline{font-size:clamp(2.2rem,8vw,3.4rem)}.contact__bar{margin:.9rem 0}.contact__sub{max-width:none;margin:0 0 1.1rem}.contact__channels{margin-bottom:0;gap:.5rem}.contact__channel{padding:.5rem .8rem}.contact__row--actions{flex-wrap:wrap;gap:.8rem}}@media(max-width:640px),(max-width:980px)and (max-height:750px){.contact{--fs-body: .82rem;padding:min(3vh,16px) 6vw min(3vh,16px);gap:min(1vh,8px)}.contact__headline{font-size:clamp(1.7rem,8.5vw,2.4rem)}.contact__bar{margin:.5rem 0}.contact__sub{margin:0 0 .6rem;line-height:1.4}.contact__channels{flex-wrap:nowrap;gap:.4rem}.contact__channel{flex:1;min-width:0;gap:.15rem;padding:.4rem .6rem}.contact__channel-value{display:block;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-meta)}.contact__stub{padding:.45rem clamp(.8rem,4vw,1.2rem)}.contact__form{padding:clamp(.8rem,4vw,1.2rem)}.contact__body{gap:.36rem;padding-left:1rem}.contact__row{gap:.16rem}.contact__input{padding:.4rem 0}.contact__input--area{line-height:1.35}.contact__chips{padding-top:.1rem}.contact__chip{padding:.32rem .7rem}.contact__row--actions{padding-top:0}.contact__submit{padding:.55rem 1.2rem}}.gallery{border:1px solid rgba(244,247,245,.1);background:#080a09;will-change:transform,opacity}.gallery__stub{position:relative;display:flex;align-items:center;gap:1rem;padding:.75rem 1.1rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:#f4f7f561}.gallery__stub-edge{left:0;right:0;bottom:0}.gallery__counter{margin-left:auto;color:#f4f7f599}.gallery__nav{display:flex;gap:.4rem}.gallery__nav button{width:1.9rem;height:1.9rem;border:1px solid rgba(244,247,245,.16);background:none;color:#f4f7f5b3;font-size:1rem;line-height:1;cursor:pointer;will-change:transform}.gallery__nav button:hover{border-color:transparent;background:linear-gradient(#080a09,#080a09) padding-box,linear-gradient(120deg,var(--accent-stops)) border-box;color:#f4f7f5}.gallery__frame{position:relative;padding:14px}.gallery__viewport{overflow:hidden;height:min(66vh,44vw);background:#050706}.gallery__track{display:flex;height:100%;will-change:transform}.gallery__slide{flex:0 0 100%;width:100%;height:100%;object-fit:contain;will-change:transform,opacity}.gallery__slide--zoomable{cursor:zoom-in}.gallery__thumbs{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 14px}.gallery__thumb{position:relative;width:clamp(64px,7vw,96px);aspect-ratio:4 / 3;padding:0;border:1px solid rgba(244,247,245,.14);background:#050706;cursor:pointer;overflow:hidden;opacity:.4;will-change:transform,opacity}.gallery__thumb img,.gallery__thumb video{width:100%;height:100%;object-fit:cover;display:block}.gallery__thumb-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#03080773;font-size:.7rem;color:#f4f7f5}.gallery__thumb.is-active{border-color:transparent;padding:1px;background:linear-gradient(#050706,#050706) padding-box,linear-gradient(120deg,var(--accent-stops)) border-box}.gallery__cursor{position:fixed;top:0;left:0;z-index:50;background:#0b1013;box-shadow:0 12px 28px -12px #000c;pointer-events:none;opacity:0;visibility:hidden;will-change:transform,opacity;outline-color:#f4f7f580;color:#f4f7f5}.gallery__cursor-glyph{width:46%;height:46%;overflow:visible}.gallery:has(dialog[open])~.gallery__cursor{display:none}.gallery__lightbox-stage[data-zoomed="1"]~.gallery__cursor .gallery__cursor-plus{opacity:0}.is-cursor-marked,.is-cursor-marked *{cursor:none}.gallery__lightbox{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:0;border:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;background:#030807f0;color:#f4f7f5}.gallery__lightbox:not([open]){display:none}.gallery__lightbox::backdrop{background:#000000d9}.gallery__lightbox-stage{overflow:hidden;display:flex;align-items:center;justify-content:center;width:92vw;height:78dvh;cursor:zoom-in;touch-action:none;will-change:transform,opacity}.gallery__lightbox-stage[data-zoomed="1"]:not(.is-cursor-marked){cursor:grab}.gallery__lightbox-media{display:block;width:100%;height:100%;object-fit:contain;will-change:transform}.gallery__lightbox-bar{display:flex;align-items:center;gap:1rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:#f4f7f561;will-change:transform,opacity}.gallery__lightbox-bar .gallery__counter{margin-left:0}.gallery__lightbox-hint{letter-spacing:.16em}@media(max-width:900px){.gallery__viewport{height:min(54vh,62vw)}}@media(max-width:640px){.gallery__lightbox-hint{display:none}}.projectdetail{position:fixed;inset:0;z-index:300;overflow-y:auto;background:#030303;clip-path:circle(0% at 50% 50%);opacity:0;visibility:hidden;will-change:clip-path,opacity;scrollbar-width:thin;scrollbar-color:rgba(244,247,245,.55) rgba(244,247,245,.15)}.projectdetail::-webkit-scrollbar{width:10px}.projectdetail::-webkit-scrollbar-track,.projectdetail::-webkit-scrollbar-thumb{background-clip:content-box;border-left:4px solid transparent;border-right:4px solid transparent}.projectdetail::-webkit-scrollbar-track{background-color:#f4f7f526}.projectdetail::-webkit-scrollbar-thumb{background-color:#f4f7f58c}.projectdetail__inner{position:relative;min-height:100%;max-width:1280px;margin:0 auto;padding:10vh 5vw 10vh}.projectdetail__close{position:fixed;top:3.5vh;right:max(5vw,calc((100vw - 1280px)/2));z-index:2;display:flex;align-items:center;gap:.6em;padding:.65em 1.2em;border:1px solid rgba(244,247,245,.18);background:#030807d1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:#f4f7f5b8;cursor:pointer;will-change:transform,opacity}.projectdetail__close:hover,.projectdetail__action:hover,.projectdetail__tech--npm:hover{border-color:transparent;background:linear-gradient(#080a09,#080a09) padding-box,linear-gradient(120deg,var(--accent-stops)) border-box;color:#f4f7f5}.projectdetail__close-glyph{font-size:1.15em;line-height:1}.projectdetail__head{display:flex;flex-direction:column;gap:.85rem}.projectdetail__eyebrow{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.62rem;letter-spacing:.22em;text-transform:uppercase;background:linear-gradient(90deg,var(--accent-stops));-webkit-background-clip:text;background-clip:text;color:transparent;will-change:transform,opacity}.projectdetail__title{margin:0;font-family:Cormorant Infant,serif;font-style:italic;font-weight:500;font-size:clamp(2.6rem,6vw,5.4rem);line-height:.95;color:#f4f7f5;will-change:transform,opacity}.projectdetail__rule-wrap,.projectdetail__desc,.projectdetail__actions,.projectdetail__techs-block{will-change:transform,opacity}.projectdetail__rule-wrap{margin:.3rem 0 .4rem}.projectdetail__lead{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,26rem);gap:clamp(1.5rem,4vw,4rem);align-items:start}.projectdetail__desc{margin:0;max-width:56ch;font-family:Space Grotesk,sans-serif;font-size:clamp(.95rem,1.2vw,1.08rem);line-height:1.65;color:#f4f7f5a8}.projectdetail__actions{display:flex;flex-direction:column;gap:.55rem}.projectdetail__action{display:flex;align-items:center;gap:.85rem;padding:.8rem .95rem;border:1px solid rgba(244,247,245,.14);background:#080a09;text-decoration:none;color:#f4f7f5db;will-change:transform}.projectdetail__action-icon{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:2.2rem;height:2.2rem;outline:1px solid rgba(244,247,245,.14);color:#f4f7f566}.projectdetail__action:hover .projectdetail__action-icon{color:var(--accent-lime)}.projectdetail__action-icon svg{width:1.1rem;height:1.1rem}.projectdetail__action-text{display:flex;flex-direction:column;gap:.2rem;min-width:0}.projectdetail__action-label{font-family:Space Grotesk,sans-serif;font-weight:700;font-size:.76rem;letter-spacing:.12em;text-transform:uppercase}.projectdetail__action-note{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.6rem;color:#f4f7f557;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.projectdetail__action-arrow{margin-left:auto;font-size:.95rem;color:#f4f7f566}.projectdetail__action:hover .projectdetail__action-arrow{color:var(--accent-lime)}.projectdetail__hr{position:relative;display:block;margin:clamp(2rem,4vh,3.2rem) 0}.projectdetail__techs-block{margin-top:clamp(1.6rem,3.5vh,2.6rem)}.projectdetail__block-title{margin:0 0 .9rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.62rem;letter-spacing:.22em;text-transform:uppercase;color:#f4f7f573}.projectdetail__techs{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none}.projectdetail__tech{display:inline-flex;align-items:center;gap:.6rem;padding:.5rem .85rem;border:1px solid rgba(244,247,245,.12);background:#080a09;font-family:Space Grotesk,sans-serif;font-size:clamp(.8rem,1vw,.9rem);color:#f4f7f5b3;text-decoration:none}.projectdetail__tech--npm{color:#f4f7f5e6;cursor:pointer}.projectdetail__tech-mark{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.52rem;letter-spacing:.16em;text-transform:uppercase;background:linear-gradient(90deg,var(--accent-stops));-webkit-background-clip:text;background-clip:text;color:transparent}.projectdetail__tip{position:fixed;top:0;left:0;z-index:3;width:min(22rem,74vw);padding:.8rem .9rem .9rem;border:1px solid rgba(244,247,245,.16);background:#060a09f5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none;opacity:0;visibility:hidden;will-change:transform,opacity}.projectdetail__tip-edge{left:0;right:0;top:0}.projectdetail__tip-head{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.64rem;letter-spacing:.06em;color:var(--accent-lime)}.projectdetail__tip-body{margin:.45rem 0 0;font-family:Space Grotesk,sans-serif;font-size:.78rem;line-height:1.5;color:#f4f7f599}@media(max-width:900px){.projectdetail__lead{grid-template-columns:1fr;gap:1.5rem}}@media(max-width:640px){.projectdetail__inner{padding:10vh 6vw 8vh}.projectdetail__close{top:2.5vh;right:6vw}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-gray-200:oklch(92.8% .006 264.531);--spacing:.25rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.isolate{isolation:isolate}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.h-20{height:calc(var(--spacing) * 20)}.h-dvh{height:100dvh}.h-screen{height:100vh}.w-screen{width:100vw}.shrink{flex-shrink:1}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.resize{resize:both}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.gap-4{gap:calc(var(--spacing) * 4)}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.bg-gray-200{background-color:var(--color-gray-200)}.text-wrap{text-wrap:wrap}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2)format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff)format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2)format("woff2"),url(/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff)format("woff")}@font-face{font-family:Cormorant Infant;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-infant-latin-500-italic-B3rgy-vc.woff2)format("woff2"),url(/assets/cormorant-infant-latin-500-italic-BjSVXPNE.woff)format("woff")}:root{--accent-cyan:#0891b2;--accent-green:#34d399;--accent-lime:#a3e635;--accent-stops:var(--accent-cyan), var(--accent-green) 55%, var(--accent-lime);--accent-stops-rev:var(--accent-lime), var(--accent-green) 45%, var(--accent-cyan);--accent-stops-dim:var(--accent-cyan), var(--accent-green) 55%, var(--accent-lime)}@supports (color:color-mix(in lab,red,red)){:root{--accent-stops-dim:color-mix(in srgb, var(--accent-cyan) 40%, transparent), color-mix(in srgb, var(--accent-green) 40%, transparent) 55%, color-mix(in srgb, var(--accent-lime) 40%, transparent)}}html,body{height:100%;overflow:hidden}[data-stack]{z-index:1}[data-stack]:first-child{z-index:6}[data-stack]:nth-child(2){z-index:5}[data-stack]:nth-child(3){z-index:4}[data-stack]:nth-child(4){z-index:3}[data-stack]:nth-child(5){z-index:2}[data-stack]:nth-child(6){z-index:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
