.hero-stack[data-v-07703b6a]{overflow-anchor:none}.hero-stack .hero-release[data-v-07703b6a]{block-size:var(--hero-start);background-color:#0000}.hero-stack .hero[data-v-07703b6a]{inset:var(--hero-top) 0 auto;z-index:1;inline-size:100%;block-size:var(--hero-visual);position:fixed}@media (prefers-reduced-motion:reduce){.hero-stack .hero[data-v-07703b6a]{position:relative;inset:auto}}.hero-stack .hero__clip[data-v-07703b6a]{isolation:isolate;background-color:var(--ink);grid-template:1fr/1fr;block-size:100%;display:grid;position:relative;overflow:clip}.hero-stack .hero__background-frame[data-v-07703b6a],.hero-stack .hero__content[data-v-07703b6a]{grid-area:1/1;min-block-size:0;min-inline-size:0}.hero-stack .hero__background-frame[data-v-07703b6a]{transform-origin:50% 0;place-self:stretch stretch;animation:.9s cubic-bezier(.22,1,.36,1) both hero-bg-settle-07703b6a;overflow:clip}@media (prefers-reduced-motion:reduce){.hero-stack .hero__background-frame[data-v-07703b6a]{animation:none}}.hero-stack .hero__background[data-v-07703b6a]{object-fit:cover;object-position:50% 0%;filter:grayscale(.8);will-change:transform;inline-size:100%;max-inline-size:none;display:block}@media (prefers-reduced-motion:reduce){.hero-stack .hero__background[data-v-07703b6a]{will-change:auto}}.hero-stack .hero__content[data-v-07703b6a]{mix-blend-mode:difference;align-self:stretch;block-size:100%;max-block-size:100%;inline-size:100%;padding:1.5vw;display:flex}.hero-stack .hero__content h1[data-v-07703b6a]{block-size:100%;min-block-size:0;inline-size:100%;min-inline-size:0;font-family:var(--font-display);letter-spacing:-.04em;text-align:center;text-transform:uppercase;font-optical-sizing:auto;color:#fff;flex-direction:column;flex:auto;margin:0;font-style:normal;font-weight:400;line-height:0;animation:.45s cubic-bezier(.22,1,.36,1) both hero-title-enter-07703b6a;display:flex}@media (prefers-reduced-motion:reduce){.hero-stack .hero__content h1[data-v-07703b6a]{animation:none}}.hero-stack .hero__title-label[data-v-07703b6a]{clip-path:inset(50%);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.hero-stack .hero__title[data-v-07703b6a]{inline-size:100%;block-size:var(--title-height);max-block-size:100%;display:block;overflow:hidden}.hero-stack .hero__title text[data-v-07703b6a]{fill:currentColor;font-weight:inherit;font-family:inherit;font-style:inherit;font-variation-settings:inherit;letter-spacing:inherit;text-transform:inherit;-webkit-user-select:none;user-select:none}.hero-stack .hero__motion[data-v-07703b6a]{z-index:2;color:#fff;font:650 .85rem/1 var(--font-body);letter-spacing:.02em;-webkit-backdrop-filter:blur(8px);cursor:pointer;appearance:none;background:#1a15208c;border:1px solid #ffffff73;border-radius:999px;padding:.65rem 1rem;position:absolute;inset-block-end:max(1rem, env(safe-area-inset-bottom,0px));inset-inline-start:50%;translate:-50%}.hero-stack .hero__motion[data-v-07703b6a]:focus-visible{outline-offset:3px;outline:2px solid #fff}@keyframes hero-title-enter-07703b6a{0%{opacity:0;transform:translateY(.35rem)}}@keyframes hero-bg-settle-07703b6a{0%{transform:scale(1.03)}}.about[data-v-50a4e963]{grid-template-columns:1fr;gap:2.5rem;display:grid}.about .display[data-v-50a4e963]{max-inline-size:18ch}.about .prose[data-v-50a4e963]{max-inline-size:42ch}.about .about__stack[data-v-50a4e963]{margin-block-start:2rem}.about .about__stack ul[data-v-50a4e963]{flex-wrap:wrap;gap:.65rem;margin:0;padding:0;list-style:none;display:flex}.about .about__stack li[data-v-50a4e963]{border:1px solid var(--sand);background-color:var(--cream-muted);border-radius:999px;padding:.45rem .8rem;font-size:.9rem;line-height:1.2}.about .about__copy a[data-v-50a4e963]{color:var(--ink);text-underline-offset:.2em;font-weight:700}.about .about__portrait[data-v-50a4e963]{border-radius:var(--radius);background-color:var(--ink);min-block-size:18rem;overflow:hidden}.about .about__portrait img[data-v-50a4e963]{object-fit:cover;object-position:center top;block-size:100%;min-block-size:18rem;inline-size:100%}@media (width>=50rem){.about[data-v-50a4e963]{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:center}.about .about__portrait img[data-v-50a4e963]{min-block-size:28rem}}.work .prose[data-v-9ad071c0]{max-inline-size:46ch}.work .work__grid[data-v-9ad071c0]{grid-template-columns:1fr;gap:1.25rem;margin-block:2.5rem 0;margin-inline:0;padding:0;list-style:none;display:grid}.work .work__grid>li[data-v-9ad071c0]{min-inline-size:0;overflow:visible}.work article.work__card[data-v-9ad071c0],.work a.work__card[data-v-9ad071c0]{aspect-ratio:1;border:1px solid var(--sand);border-radius:var(--radius);background-color:var(--ink);color:var(--cream);isolation:isolate;outline:none;text-decoration:none;transition:border-color .25s;display:block;position:relative;overflow:visible}.work a.work__card[data-v-9ad071c0]{cursor:pointer}.work a.work__card[data-v-9ad071c0]:focus-visible{--focus-ring:var(--ink);--focus-radius:calc(var(--radius) + 3px);--focus-inset:-5px;z-index:1;border-color:var(--ink);outline:none}.work a.work__card[data-v-9ad071c0]:focus-visible:after{z-index:3}.work a.work__card:focus-visible .work__image[data-v-9ad071c0]{transform:scale(1.05)}.work .work__media[data-v-9ad071c0]{z-index:0;border-radius:inherit;position:absolute;inset:0;overflow:hidden}.work .work__image[data-v-9ad071c0]{object-fit:cover;block-size:100%;inline-size:100%;transition:transform .4s;position:absolute;inset:0;transform:scale(1)}.work .work__scrim[data-v-9ad071c0]{pointer-events:none;background:linear-gradient(#0000 0%,#1a152073 38%,#1a1520e0 64%,#1a1520fa 100%);position:absolute;inset:0}.work .work__body[data-v-9ad071c0]{z-index:1;pointer-events:none;flex-direction:column;gap:.5rem;padding:1rem 1.1rem 1.15rem;display:flex;position:absolute;inset-block-end:0;inset-inline:0}.work .work__meta[data-v-9ad071c0]{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.work .work__stack[data-v-9ad071c0],.work .work__status[data-v-9ad071c0]{letter-spacing:.08em;text-transform:uppercase;border-radius:999px;padding:.28rem .55rem;font-size:.68rem;font-weight:700;line-height:1.2}.work .work__stack[data-v-9ad071c0]{color:var(--cream);background:#ffffff1a;border:1px solid #ffffff2e}.work .work__status[data-v-9ad071c0]{color:#f4d38a;background:#f4c66c24;border:1px solid #f4c66c59}.work .work__card h3[data-v-9ad071c0]{color:var(--cream);text-wrap:balance;margin:0;font-size:clamp(1.1rem,2.2vw,1.3rem);font-weight:650;line-height:1.15}.work .work__summary[data-v-9ad071c0]{color:#f4f1ece6;text-wrap:pretty;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.86rem;line-height:1.45;display:-webkit-box;overflow:hidden}@media (hover:hover){.work a.work__card[data-v-9ad071c0]:hover{border-color:var(--ink)}.work a.work__card:hover .work__image[data-v-9ad071c0]{transform:scale(1.05)}}@media (prefers-reduced-motion:reduce){.work .work__image[data-v-9ad071c0]{transition:none}.work a.work__card:focus-visible .work__image[data-v-9ad071c0],.work a.work__card:hover .work__image[data-v-9ad071c0],.work .work__references a[data-v-9ad071c0]:hover,.work .work__references a[data-v-9ad071c0]:focus-visible{transform:none}}.work .work__github[data-v-9ad071c0]{color:var(--ink);text-underline-offset:.2em;border-radius:var(--focus-radius);outline:none;margin-block-start:2rem;font-weight:700;display:inline-block}.work .work__references[data-v-9ad071c0]{margin-block-start:3rem}.work .work__references ul[data-v-9ad071c0]{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:1.5rem 0 0;padding:0;list-style:none;display:grid}.work .work__references a[data-v-9ad071c0]{border:1px solid var(--sand);border-radius:var(--radius);background-color:#fff;outline:none;justify-content:center;align-items:center;min-block-size:4rem;padding:.75rem;transition:border-color .2s,transform .2s;display:flex;position:relative}.work .work__references a[data-v-9ad071c0]:hover,.work .work__references a[data-v-9ad071c0]:focus-visible{--focus-radius:calc(var(--radius) + 2px);--focus-inset:-4px;border-color:var(--ink);transform:translateY(-1px)}.work .work__references a[data-v-9ad071c0]:focus-visible{z-index:1;outline:none}.work .work__references img[data-v-9ad071c0]{object-fit:contain;filter:grayscale();opacity:.85;max-block-size:2rem;max-inline-size:100%;transition:filter .25s,opacity .25s}.work .work__references a:hover img[data-v-9ad071c0],.work .work__references a:focus-visible img[data-v-9ad071c0]{filter:grayscale(0);opacity:1}@media (width>=50rem){.work .work__grid[data-v-9ad071c0]{grid-template-columns:repeat(2,minmax(0,1fr))}.work .work__references ul[data-v-9ad071c0]{grid-template-columns:repeat(3,minmax(0,1fr))}}.value .display[data-v-a690f950]{max-inline-size:16ch;margin-block-end:1.5rem}.value .prose[data-v-a690f950]{max-inline-size:54ch;font-size:1.08rem}.value ul[data-v-a690f950]{grid-template-columns:1fr;gap:.9rem;margin:2rem 0 0;padding:0;list-style:none;display:grid}.value li[data-v-a690f950]{border-radius:var(--radius);background-color:#ffffff0a;border:1px solid #ffffff2e;padding:1rem}.value h3[data-v-a690f950]{color:var(--cream);margin:0 0 .45rem;font-size:1.1rem;font-weight:650}.value li p[data-v-a690f950]{color:var(--copy-on-ink);text-wrap:balance;margin:0;line-height:1.55}@media (width>=50rem){.value ul[data-v-a690f950]{grid-template-columns:repeat(2,minmax(0,1fr))}}.connect[data-v-d2e8309a]{padding-block-end:clamp(3rem,8vw,5rem)}.connect .display[data-v-d2e8309a]{max-inline-size:none}.connect .prose[data-v-d2e8309a]{max-inline-size:38ch;margin-block:0 1.25rem;font-size:1.08rem}.connect .connect__layout[data-v-d2e8309a]{grid-template-columns:1fr;align-items:start;gap:2.5rem;display:grid}.connect .connect__email[data-v-d2e8309a]{border-radius:999px;align-items:stretch;max-inline-size:100%;transition:box-shadow .2s;display:inline-flex}.connect .connect__email[data-v-d2e8309a]:focus-within{box-shadow:0 0 0 2px var(--cream), 0 0 0 4px var(--ink)}.connect .connect__email-link[data-v-d2e8309a],.connect .connect__email-copy[data-v-d2e8309a]{background-color:var(--ink);min-block-size:2.75rem;color:var(--cream);cursor:pointer;border:0;outline:none;justify-content:center;align-items:center;font-family:inherit;font-weight:650;line-height:1;transition:background-color .2s;display:inline-flex}.connect .connect__email-link[data-v-d2e8309a]:focus-visible,.connect .connect__email-copy[data-v-d2e8309a]:focus-visible{background-color:#2a2430;outline:none}.connect .connect__email-link[data-v-d2e8309a]:focus-visible:after,.connect .connect__email-copy[data-v-d2e8309a]:focus-visible:after{content:none}.connect .connect__email-link[data-v-d2e8309a]{border-radius:999px 0 0 999px;gap:.5rem;padding:.7rem 1.1rem;text-decoration:none}.connect .connect__email-link svg[data-v-d2e8309a]{block-size:1.1rem;inline-size:1.1rem}.connect .connect__email-copy[data-v-d2e8309a]{border-inline-start:1px solid #fff3;border-radius:0 999px 999px 0;inline-size:2.75rem;padding:0}.connect .connect__email-copy svg[data-v-d2e8309a]{block-size:1.1rem;inline-size:1.1rem}.connect .connect__email-link[data-v-d2e8309a]:hover,.connect .connect__email-copy[data-v-d2e8309a]:hover{background-color:#2a2430}.connect .connect__intro[data-v-d2e8309a]{min-inline-size:0;position:relative}.connect .connect__meta[data-v-d2e8309a]{color:var(--stone);margin:1rem 0 0;font-size:.9rem}.connect .connect__meta a[data-v-d2e8309a]{color:var(--ink);text-underline-offset:.2em;font-weight:700}.connect .connect__aside[data-v-d2e8309a]{gap:1.25rem;min-inline-size:0;display:grid}.connect .connect__links[data-v-d2e8309a]{border:1px solid var(--sand);border-radius:var(--radius);background-color:var(--cream-muted);gap:1.25rem;padding:1.25rem;display:grid}.connect .connect__footer[data-v-d2e8309a]{display:contents}.connect .connect__brand[data-v-d2e8309a]{inline-size:100%;color:var(--ink);font-family:var(--font-display);letter-spacing:-.04em;text-align:center;text-transform:uppercase;font-optical-sizing:auto;cursor:pointer;background:0 0;border:0;margin:0;padding:0;font-style:normal;font-weight:400;line-height:0;transition:color .2s;display:block}.connect .connect__brand-svg[data-v-d2e8309a]{block-size:clamp(1.75rem,3.5vw,2.75rem);inline-size:100%;display:block}.connect .connect__brand-svg text[data-v-d2e8309a]{fill:currentColor;font-weight:inherit;font-family:inherit;font-style:inherit;font-variation-settings:inherit;letter-spacing:inherit;text-transform:inherit;-webkit-user-select:none;user-select:none}.connect .connect__brand[data-v-d2e8309a]:focus-visible{--focus-radius:var(--radius);--focus-inset:-.35rem}.connect .connect__brand[data-v-d2e8309a]:hover{color:var(--stone)}.connect .connect__group[data-v-d2e8309a]{min-inline-size:0}.connect .connect__group-label[data-v-d2e8309a]{color:var(--stone);letter-spacing:.16em;text-transform:uppercase;margin:0 0 .6rem;font-size:.8rem;font-weight:700}.connect ul[data-v-d2e8309a]{flex-wrap:wrap;gap:.5rem 1rem;margin:0;padding:0;list-style:none;display:flex}.connect li a[data-v-d2e8309a]{color:var(--ink);text-underline-offset:.2em;font-weight:650;text-decoration:underline}@media (width>=50rem){.connect .connect__layout[data-v-d2e8309a]{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:stretch;gap:clamp(2rem,5vw,4rem)}.connect .connect__aside[data-v-d2e8309a]{grid-template-rows:auto 1fr;align-self:stretch;gap:clamp(1.5rem,3vw,2.5rem)}.connect .connect__links[data-v-d2e8309a]{padding:1.5rem}.connect .connect__footer[data-v-d2e8309a]{align-self:end;display:grid}.connect .connect__brand[data-v-d2e8309a]{align-self:end}}.site-cursor[data-v-875dd9aa]{z-index:9999;color:#fff;mix-blend-mode:difference;pointer-events:none;opacity:0;will-change:transform;contain:layout paint;place-items:center;block-size:2.75rem;inline-size:2.75rem;transition:opacity .15s;display:grid;position:fixed;inset-block-start:0;inset-inline-start:0}.site-cursor--visible[data-v-875dd9aa]{opacity:1}.site-cursor__stage[data-v-875dd9aa]{backface-visibility:hidden;border-radius:999px;place-items:center;block-size:100%;inline-size:100%;display:grid;overflow:clip;transform:translateZ(0)}.site-cursor__dot[data-v-875dd9aa]{transform-origin:50%;backface-visibility:hidden;will-change:transform;background-color:currentColor;border-radius:999px;grid-area:1/1;block-size:.75rem;inline-size:.75rem;transition:transform .18s;transform:translateZ(0)scale(1)}.site-cursor__ring[data-v-875dd9aa]{opacity:0;visibility:hidden;pointer-events:none;grid-area:1/1;block-size:2rem;inline-size:2rem;transition:opacity .18s,transform .18s,visibility 0s linear .18s;transform:translateZ(0)scale(.85)}.site-cursor__arc[data-v-875dd9aa]{transform-origin:50%}.site-cursor--interactive .site-cursor__dot[data-v-875dd9aa]{transform:translateZ(0)scale(1.67)}.site-cursor--interactive .site-cursor__ring[data-v-875dd9aa]{opacity:1;visibility:visible;transition:opacity .18s,transform .18s,visibility;animation:2.4s linear infinite site-cursor-ring-spin-875dd9aa;transform:translateZ(0)scale(1)}.site-cursor--pressed .site-cursor__dot[data-v-875dd9aa]{transform:translateZ(0)scale(.72)}.site-cursor--interactive.site-cursor--pressed .site-cursor__dot[data-v-875dd9aa]{transform:translateZ(0)scale(1.35)}.site-cursor--interactive.site-cursor--pressed .site-cursor__ring[data-v-875dd9aa]{transform:translateZ(0)scale(.92)}.site-cursor__caret[data-v-875dd9aa]{opacity:0;visibility:hidden;transform-origin:50%;backface-visibility:hidden;will-change:transform;pointer-events:none;background-color:currentColor;border-radius:0;grid-area:1/1;block-size:1.5rem;inline-size:1.5px;transition:opacity .14s,transform .14s,visibility 0s linear .14s;transform:translateZ(0)scaleY(.45)}.site-cursor--text .site-cursor__ring[data-v-875dd9aa]{opacity:0;visibility:hidden;transition:opacity .12s,transform .12s,visibility 0s linear .12s;animation:none;transform:translateZ(0)scale(.7)}.site-cursor--text .site-cursor__dot[data-v-875dd9aa]{transform:translateZ(0)scale(0)}.site-cursor--text .site-cursor__caret[data-v-875dd9aa]{opacity:1;visibility:visible;transition:opacity .14s,transform .14s,visibility;transform:translateZ(0)scaleY(1)}.site-cursor--scrolling .site-cursor__ring[data-v-875dd9aa]{opacity:0;visibility:hidden;transition:opacity .12s,transform .12s,visibility 0s linear .12s;animation:none;transform:translateZ(0)scale(.7)}.site-cursor--scrolling .site-cursor__dot[data-v-875dd9aa]{transform:translateZ(0) scale(var(--scroll-pill-scale-x,.53), var(--scroll-pill-scale-y,1.55));transition:none}@keyframes site-cursor-ring-spin-875dd9aa{to{transform:translateZ(0)scale(1)rotate(360deg)}}@layer reset{*,:before,:after{box-sizing:border-box}html,body,#app{overflow-anchor:none;min-block-size:100svh;max-inline-size:100%;margin:0}img{max-inline-size:100%;display:block}}@layer tokens{:root{--ink:#1a1520;--cream:#f4f1ec;--cream-muted:#ebe6de;--stone:#5c564e;--copy:#3f3a34;--sand:#cfc8bc;--copy-on-ink:#ddd6cc;--focus-ring:var(--ink);--focus-radius:.55rem;--focus-inset:-.35rem;--font-display:Galgo, sans-serif;--font-body:ui-sans-serif, system-ui, -apple-system, sans-serif;--display:clamp(2.4rem, 6vw, 4.4rem);--display-xl:clamp(2.6rem, 7vw, 5rem);--section-gutter:clamp(1.25rem, 5vw, 4rem);--section-space:clamp(3rem, 8vw, 6.5rem);--section-space-lg:clamp(3.5rem, 9vw, 7rem);--radius:.4rem;--hero-start:72svh;--hero-visual:72svh;--hero-top:0px;--title-height:0px}}@layer base{html{background-color:var(--ink);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;scroll-behavior:smooth}body{font-family:var(--font-body);background-color:var(--cream);color:var(--ink);overflow-x:hidden}html.custom-cursor,html.custom-cursor *{cursor:none!important}#app{background-color:var(--cream)}h2,h3{text-wrap:balance}a:focus-visible,button:focus-visible,summary:focus-visible,[href]:focus-visible,[tabindex]:not([tabindex="-1"]):focus-visible{outline-offset:0;isolation:isolate;outline:none;position:relative}a:focus-visible:after,button:focus-visible:after,summary:focus-visible:after,[href]:focus-visible:after,[tabindex]:not([tabindex="-1"]):focus-visible:after{content:"";inset:var(--focus-inset);z-index:1;border:2px solid var(--focus-ring);border-radius:var(--focus-radius);pointer-events:none;position:absolute;-webkit-mask-image:conic-gradient(from 8deg,#000 0deg 72deg,#0000 72deg 188deg,#000 188deg 260deg,#0000 260deg 360deg);mask-image:conic-gradient(from 8deg,#000 0deg 72deg,#0000 72deg 188deg,#000 188deg 260deg,#0000 260deg 360deg)}a:not([class]):focus-visible,.prose a:focus-visible,.connect__meta a:focus-visible,.connect__links a:focus-visible,.work__github:focus-visible{border-radius:var(--focus-radius);display:inline-block}.skip-link{z-index:100;border-radius:var(--radius);background-color:var(--ink);color:var(--cream);padding:.65rem .9rem;font-weight:700;text-decoration:none;transition:transform .2s;position:absolute;inset-block-start:1rem;inset-inline-start:1rem;transform:translateY(-200%)}.skip-link:focus-visible{--focus-ring:var(--cream);--focus-radius:var(--radius);transform:translateY(0)}.skip-link:focus-visible:after{--focus-inset:-3px}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer components{.section{inline-size:100%;padding-block:var(--section-space);padding-inline:var(--section-gutter);color:var(--ink);background-color:var(--cream);scroll-margin-block-start:1rem}.section.section--muted{background-color:var(--cream-muted)}.section.section--ink{--focus-ring:var(--cream);color:var(--cream);background-color:var(--ink)}.section.section--ink .eyebrow{color:var(--sand)}.section.section--ink .prose{color:var(--copy-on-ink)}.section.section--spacious{padding-block:var(--section-space-lg)}.eyebrow{color:var(--stone);letter-spacing:.16em;text-transform:uppercase;margin-block:0 .75rem;font-size:.8rem;font-weight:700}.display{font-family:var(--font-display);font-size:var(--display);text-transform:uppercase;text-wrap:balance;margin-block:0 1.25rem;font-weight:400;line-height:.9}.display.display--xl{font-size:var(--display-xl);line-height:.88}.prose{color:var(--copy);text-wrap:pretty;margin-block:0 1rem;font-size:1.05rem;line-height:1.65}.prose:last-child{margin-block-end:0}.prose--balance{text-wrap:balance}}@font-face{font-family:Galgo;src:url(/fonts/GalgoVF.woff2)format("woff2"),url(/fonts/GalgoVF.woff)format("woff");font-weight:200 700;font-style:normal;font-display:swap}
