@layer base,utilities;@font-face{font-family:"Tritopani";src:url("../fonts/Tritopani.otf")format("opentype");font-weight:400;font-style:normal;font-display:swap}@layer base{*,*::before,*::after{box-sizing:border-box}body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,pre{margin:0}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,[role="button"]{cursor:pointer}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button;background-color:#0000;background-image:none}ol,ul,menu{list-style:none;margin:0;padding:0}}@layer base{:root{--brand:oklch(53% .14 50);--brand-deep:oklch(38% .11 50);--brand-soft:oklch(96% .025 60);--paper:oklch(98% .008 60);--paper-soft:oklch(95% .014 60);--rule:oklch(88% .012 60);--ink:oklch(22% .012 50);--ink-soft:oklch(46% .012 50);--font-body:"Bricolage Grotesque",system-ui,sans-serif;--font-signature:"Tritopani","Brush Script MT",cursive;--transition-fast:.15s;--transition-normal:.3s;--transition-slow:.5s}.dark{--brand:oklch(75% .13 55);--brand-deep:oklch(85% .1 55);--brand-soft:oklch(28% .045 50);--paper:oklch(18% .008 50);--paper-soft:oklch(22% .011 50);--rule:oklch(30% .013 50);--ink:oklch(95% .008 50);--ink-soft:oklch(72% .012 50)}html{scroll-padding-top:5rem}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{font-family:var(--font-body);background-color:var(--paper);color:var(--ink);transition:background-color var(--transition-normal),color var(--transition-normal)}h1,h2,h3,h4,h5,h6{font-family:var(--font-body)}}@layer utilities{#theme-icon-light{display:none}.dark #theme-icon-light{display:inline-block;color:currentColor}.dark #theme-icon-dark{display:none}}.site-header{position:fixed;top:0;left:0;right:0;z-index:50;background:var(--paper);border-bottom:1px solid#0000;transition:border-color .32s cubic-bezier(.22,1,.36,1);font-family:var(--font-body)}.site-header.scrolled{border-bottom-color:var(--rule)}.site-header__skip{position:absolute;inset-inline-start:0;top:0;padding:.625rem 1rem;background:var(--brand);color:var(--paper);font-weight:500;font-size:.9375rem;text-decoration:none;border-radius:0 0 4px 0;transform:translateY(-150%);transition:transform .2s cubic-bezier(.22,1,.36,1);z-index:60}.site-header__skip:focus{transform:translateY(0);outline:none}.site-header__inner{max-width:78rem;margin-inline:auto;padding-inline:clamp(1rem,3vw,2rem);min-height:clamp(56px,8vh,72px);display:flex;align-items:center;gap:clamp(1rem,2vw,1.5rem)}.site-header__wordmark{font-family:var(--font-body);font-weight:600;font-size:1.0625rem;font-variation-settings:"opsz"14,"wdth"100;letter-spacing:-.005em;color:var(--ink);text-decoration:none;white-space:nowrap;opacity:0;visibility:hidden;transform:translateY(-4px);transition:color .22s cubic-bezier(.22,1,.36,1),opacity .32s cubic-bezier(.22,1,.36,1),transform .32s cubic-bezier(.22,1,.36,1),visibility 0s linear .32s}.site-header.scrolled>.site-header__inner>.site-header__wordmark{opacity:1;visibility:visible;transform:translateY(0);transition:color .22s cubic-bezier(.22,1,.36,1),opacity .32s cubic-bezier(.22,1,.36,1),transform .32s cubic-bezier(.22,1,.36,1),visibility 0s linear 0s}.site-header__wordmark:hover,.site-header__wordmark:focus-visible{color:var(--brand)}.site-header__wordmark:focus-visible{outline:2px solid var(--brand);outline-offset:4px;border-radius:2px}@media(prefers-reduced-motion:reduce){.site-header__wordmark,.site-header.scrolled>.site-header__inner>.site-header__wordmark{transform:none;transition:color .22s cubic-bezier(.22,1,.36,1),opacity 0s,visibility 0s linear 0s}}.site-nav{display:none;margin-inline-start:auto;align-items:center;gap:clamp(1rem,2.4vw,1.75rem)}@media(min-width:768px){.site-nav{display:flex}}.site-nav__link{position:relative;padding:.5rem 0;font-size:.9375rem;font-weight:500;color:var(--ink-soft);text-decoration:none;transition:color .22s cubic-bezier(.22,1,.36,1)}.site-nav__link::after{content:"";position:absolute;left:0;right:0;bottom:.25rem;height:1px;background:currentColor;opacity:0;transform:translateY(2px);transition:opacity .22s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1)}.site-nav__link:hover,.site-nav__link:focus-visible,.site-nav__link.active{color:var(--brand)}.site-nav__link:hover::after,.site-nav__link:focus-visible::after,.site-nav__link.active::after{opacity:1;transform:translateY(0)}.site-nav__link:focus-visible{outline:2px solid var(--brand);outline-offset:6px;border-radius:2px}.site-nav__contact{position:relative;padding:.5rem 0;margin-inline-start:clamp(.25rem,.75vw,.75rem);font-family:var(--font-body);font-size:.9375rem;font-weight:600;color:var(--ink);text-decoration:none;transition:color .22s cubic-bezier(.22,1,.36,1)}.site-nav__contact::after{content:"";position:absolute;left:0;right:0;bottom:.25rem;height:1px;background:currentColor;opacity:0;transform:translateY(2px);transition:opacity .22s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1)}.site-nav__contact:hover,.site-nav__contact:focus-visible,.site-nav__contact.active{color:var(--brand)}.site-nav__contact:hover::after,.site-nav__contact:focus-visible::after,.site-nav__contact.active::after{opacity:1;transform:translateY(0)}.site-nav__contact:focus-visible{outline:2px solid var(--brand);outline-offset:6px;border-radius:2px}.theme-toggle{margin-inline-start:auto}@media(min-width:768px){.theme-toggle{margin-inline-start:0}}.theme-toggle,.mobile-menu-button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;background:transparent;border:none;border-radius:6px;color:var(--ink-soft);cursor:pointer;padding:0;transition:background-color .22s cubic-bezier(.22,1,.36,1),color .22s cubic-bezier(.22,1,.36,1)}.theme-toggle:hover,.mobile-menu-button:hover{color:var(--brand);background:var(--paper-soft)}.dark.theme-toggle,.dark.mobile-menu-button{color:var(--ink)}.dark.theme-toggle:hover,.dark.mobile-menu-button:hover{color:var(--brand);background:var(--paper-soft)}.theme-toggle:focus-visible,.mobile-menu-button:focus-visible{outline:2px solid var(--brand);outline-offset:4px}.theme-toggle__icon{width:20px;height:20px}.mobile-menu-button{display:none}@media(max-width:767px){.mobile-menu-button{display:inline-flex}}.mobile-menu-button__icon{width:20px;height:20px}.mobile-menu-button__icon--close{display:none}.mobile-menu-button[aria-expanded="true"].mobile-menu-button__icon--bars{display:none}.mobile-menu-button[aria-expanded="true"].mobile-menu-button__icon--close{display:inline-block}.mobile-menu{background:var(--paper);border-top:1px solid var(--rule);padding:.25rem clamp(1rem,3vw,2rem).75rem;flex-direction:column}.mobile-menu:not(.hidden){display:flex}@media(min-width:768px){.mobile-menu,.mobile-menu:not(.hidden){display:none}}.mobile-menu__link{padding:.875rem 0;min-height:44px;display:flex;align-items:center;font-size:1rem;font-weight:500;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--rule);transition:color .22s cubic-bezier(.22,1,.36,1)}.mobile-menu__link:last-child{border-bottom:none}.mobile-menu__link:hover,.mobile-menu__link:focus-visible{color:var(--brand)}.mobile-menu__link:focus-visible{outline:2px solid var(--brand);outline-offset:4px;border-radius:2px}.mobile-menu__link--contact{font-weight:600}.back-to-top{position:fixed;bottom:clamp(1rem,3vw,1.75rem);right:clamp(1rem,3vw,1.75rem);z-index:40;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;background:var(--brand);border:none;border-radius:999px;color:var(--paper);cursor:pointer;box-shadow:0 6px 16px oklch(22% .012 50 / .18);transition:opacity .22s cubic-bezier(.22,1,.36,1),visibility .22s,transform .22s cubic-bezier(.22,1,.36,1),background-color .22s cubic-bezier(.22,1,.36,1)}.back-to-top:hover{transform:translateY(-2px);background:var(--brand-deep)}.back-to-top:focus-visible{outline:2px solid var(--brand);outline-offset:4px}.back-to-top__icon{width:18px;height:18px}.projects{background:var(--paper-soft);color:var(--ink);padding-block:clamp(4.5rem,10vh,7.5rem);font-family:var(--font-body)}.projects__inner{max-width:62rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3rem)}.projects__header{margin-bottom:clamp(2.5rem,5vw,4rem)}.projects__heading{margin:0;font-family:var(--font-body);font-size:clamp(2.25rem,4.5vw,3.25rem);font-weight:600;font-variation-settings:"opsz"96,"wdth"100;line-height:.98;letter-spacing:-.03em;color:var(--ink)}.projects__list{list-style:none;margin:0;padding:0}.projects__list--featured{margin-bottom:clamp(1.5rem,3vw,2.5rem)}.projects__list--compact{display:grid;grid-template-columns:1fr;gap:0}@media(min-width:640px){.projects__list--compact{grid-template-columns:repeat(2,1fr);column-gap:clamp(1.5rem,3vw,2.5rem)}}.projects__row{position:relative;transition:background-color .2s cubic-bezier(.22,1,.36,1)}.projects__row--featured{padding-block:clamp(1.5rem,2.5vw,2.25rem);padding-inline:clamp(.5rem,1.5vw,1rem);margin-inline:calc(-1 * clamp(.5rem,1.5vw,1rem));border-bottom:1px solid var(--rule);display:grid;grid-template-columns:1fr;gap:clamp(.75rem,1.5vw,1.5rem);border-radius:4px}@media(min-width:768px){.projects__row--featured{grid-template-columns:minmax(0,.85fr)minmax(0,1.15fr);gap:clamp(2rem,5vw,4rem);align-items:baseline}}.projects__list--featured>.projects__row--featured:last-child{border-bottom:none}.projects__row--compact{padding-block:clamp(.875rem,1.25vw,1.125rem);padding-inline:clamp(.5rem,1.25vw,.875rem);margin-inline:calc(-1 * clamp(.5rem,1.25vw,.875rem));border-bottom:1px solid var(--rule);border-radius:4px}.projects__row:hover{background-color:oklch(58% .14 50/.04)}.projects__row:hover.projects__arrow{opacity:1;transform:translateX(0)}.projects__row:hover.projects__link{color:var(--brand)}.projects__left{display:flex;flex-direction:column;gap:.5rem}.projects__title{margin:0;font-family:var(--font-body);font-size:clamp(1.375rem,1.6vw + .6rem,1.875rem);font-weight:600;font-variation-settings:"opsz"36,"wdth"100;line-height:1.15;letter-spacing:-.02em}.projects__title--compact{font-size:clamp(1.0625rem,.6vw + .85rem,1.1875rem);font-variation-settings:"opsz"20,"wdth"100;letter-spacing:-.012em;margin-bottom:.375rem}.projects__link{display:inline-flex;align-items:baseline;gap:.5rem;color:var(--ink);text-decoration:none;transition:color .22s cubic-bezier(.22,1,.36,1)}.projects__link:hover,.projects__link:focus-visible{color:var(--brand)}.projects__link:focus-visible{outline:2px solid var(--brand);outline-offset:6px;border-radius:2px}.projects__arrow{display:inline-block;opacity:0;transform:translateX(-4px);transition:opacity .22s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1);font-size:.9em}.projects__link:hover.projects__arrow,.projects__link:focus-visible.projects__arrow{opacity:1;transform:translateX(0)}.projects__tech{margin:0;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:var(--ink-soft);line-height:1.5;text-transform:none}.projects__tech--compact{font-size:.75rem;margin-bottom:.375rem}.projects__tech span[aria-hidden]{color:var(--brand);margin-inline:.25rem;font-weight:400}.projects__description{margin:0;max-width:60ch;font-size:1rem;line-height:1.6;color:var(--ink-soft)}.projects__description--compact{font-size:.875rem;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.projects__eyebrow{margin:clamp(2.5rem,5vw,4rem)0 clamp(.75rem,1.5vw,1.25rem)0;font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--brand)}.experience{background:var(--paper);color:var(--ink);padding-block:clamp(4.5rem,10vh,7.5rem);font-family:var(--font-body)}.experience__inner{max-width:62rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3rem)}.experience__header{margin-bottom:clamp(2.5rem,5vw,4rem)}.experience__heading{margin:0;font-family:var(--font-body);font-size:clamp(2.25rem,4.5vw,3.25rem);font-weight:600;font-variation-settings:"opsz"96,"wdth"100;line-height:.98;letter-spacing:-.03em;color:var(--ink)}.experience__list{list-style:none;margin:0;padding:0;position:relative;--col-gap:clamp(2rem,4vw,3rem);--date-col:12rem;--rail-x:calc(var(--col-gap)/ 2 + var(--date-col))}@media(min-width:768px){.experience__list::before{content:"";position:absolute;top:0;bottom:0;left:var(--rail-x);width:1px;background:var(--rule);pointer-events:none}}.experience__role{position:relative;display:grid;grid-template-columns:1fr;gap:clamp(.5rem,1vw,1rem);padding-block:clamp(1.75rem,3vw,2.75rem)}@media(min-width:768px){.experience__role{grid-template-columns:var(--date-col)minmax(0,1fr);column-gap:var(--col-gap);align-items:baseline}}.experience__list>.experience__role:last-child{padding-bottom:0}.experience__list>.experience__role:first-child{padding-top:0}.experience__dates{position:relative;margin:0;font-family:var(--font-body);font-size:clamp(1.125rem,.9vw + .85rem,1.5rem);font-weight:600;font-variation-settings:"opsz"32,"wdth"100;font-variant-numeric:tabular-nums;letter-spacing:-.005em;line-height:1.1;color:var(--brand);white-space:nowrap}@media(min-width:768px){.experience__dates::after{content:"";position:absolute;right:calc(var(--col-gap)/ -2 - 5px);top:50%;width:10px;height:10px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px var(--paper);transform:translateY(-50%);transition:transform .24s cubic-bezier(.22,1,.36,1);z-index:1}.experience__role:hover.experience__dates::after{transform:translateY(-50%)scale(1.4)}}.experience__detail{display:flex;flex-direction:column;gap:clamp(.875rem,1.5vw,1.25rem)}.experience__title{margin:0;font-family:var(--font-body);font-size:clamp(1.375rem,1.6vw + .6rem,1.75rem);font-weight:600;font-variation-settings:"opsz"32,"wdth"100;line-height:1.2;letter-spacing:-.02em;color:var(--ink)}.experience__company{margin:-.25rem 0 0 0;font-size:.9375rem;font-weight:500;color:var(--ink-soft)}.experience__highlights{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.625rem;max-width:65ch}.experience__highlight{position:relative;padding-inline-start:1.125rem;font-size:.9375rem;line-height:1.55;color:var(--ink-soft)}.experience__highlight::before{content:"";position:absolute;left:0;top:.625em;width:4px;height:4px;border-radius:50%;background-color:var(--brand)}.experience__highlight a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:3px;text-decoration-thickness:1px;transition:color .22s cubic-bezier(.22,1,.36,1),text-decoration-color .22s cubic-bezier(.22,1,.36,1)}.experience__highlight a:hover,.experience__highlight a:focus-visible{color:var(--brand);text-decoration-color:var(--brand)}.experience__highlight a:focus-visible{outline:2px solid var(--brand);outline-offset:4px;border-radius:2px}.presentations{background:var(--paper-soft);color:var(--ink);padding-block:clamp(4.5rem,10vh,7.5rem);font-family:var(--font-body)}.presentations__inner{max-width:62rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3rem)}.presentations__header{margin-bottom:clamp(2.5rem,5vw,4rem)}.presentations__heading{margin:0;font-family:var(--font-body);font-size:clamp(2.25rem,4.5vw,3.25rem);font-weight:600;font-variation-settings:"opsz"96,"wdth"100;line-height:.98;letter-spacing:-.03em;color:var(--ink)}.presentations__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:clamp(2rem,4vw,3rem)clamp(1.5rem,3vw,2.5rem)}@media(min-width:640px){.presentations__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.presentations__item{display:flex;flex-direction:column;gap:.625rem}.presentations__preview{position:relative;aspect-ratio:16/9;background:var(--paper);border-radius:6px;overflow:hidden;border:1px solid var(--rule);margin-bottom:.375rem}.presentations__preview iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.presentations__item:hover.presentations__arrow{opacity:1;transform:translateX(0)}.presentations__item:hover.presentations__link{color:var(--brand)}.presentations__title{margin:0;font-family:var(--font-body);font-size:clamp(1.125rem,.7vw + .85rem,1.3125rem);font-weight:600;font-variation-settings:"opsz"22,"wdth"100;line-height:1.25;letter-spacing:-.012em;min-width:0}.presentations__link{display:inline-flex;align-items:baseline;gap:.5rem;color:var(--ink);text-decoration:none;transition:color .22s cubic-bezier(.22,1,.36,1)}.presentations__link:hover,.presentations__link:focus-visible{color:var(--brand)}.presentations__link:focus-visible{outline:2px solid var(--brand);outline-offset:6px;border-radius:2px}.presentations__arrow{display:inline-block;opacity:0;transform:translateX(-4px);transition:opacity .22s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1);font-size:.9em}.presentations__link:hover.presentations__arrow,.presentations__link:focus-visible.presentations__arrow{opacity:1;transform:translateX(0)}.presentations__date{margin:0;font-size:.75rem;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:.01em;color:var(--brand);white-space:nowrap}.presentations__description{margin:0;max-width:60ch;font-size:.9375rem;line-height:1.55;color:var(--ink-soft)}.hero{position:relative;background:var(--paper);color:var(--ink);min-height:clamp(38rem,86vh,56rem);padding-block:clamp(7rem,14vh,11rem)clamp(4rem,8vh,7rem);display:flex;align-items:center;font-family:var(--font-body);font-optical-sizing:auto}.hero-inner{width:100%;max-width:78rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3rem);display:grid;grid-template-columns:1fr;gap:clamp(2rem,5vw,3.5rem);align-items:start}@media(min-width:768px){.hero-inner{grid-template-columns:minmax(0,1.4fr)minmax(220px,320px);gap:clamp(2.5rem,6vw,5rem);align-items:center}}.hero-text{display:flex;flex-direction:column;gap:clamp(1.5rem,3vw,2.25rem);max-width:36rem}.hero-name{margin:0;display:flex;flex-direction:column;gap:clamp(.5rem,1vw,.875rem);font-family:var(--font-body);text-wrap:balance}.hero-name__primary{display:block;font-size:clamp(2.75rem,6.5vw + .5rem,5.25rem);font-weight:600;font-variation-settings:"opsz"96,"wdth"100;line-height:.96;letter-spacing:-.035em;color:var(--ink)}.hero-name__role{display:block;font-size:clamp(1rem,1.2vw + .6rem,1.375rem);font-weight:400;font-variation-settings:"opsz"14,"wdth"100;line-height:1.25;letter-spacing:0;color:var(--brand)}.hero-lede{margin:0;font-size:clamp(1.0625rem,.9vw + .75rem,1.3125rem);font-weight:400;font-variation-settings:"opsz"16,"wdth"100;line-height:1.55;color:var(--ink-soft);max-width:32ch}.hero-utility{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(.5rem,1vw,1.25rem)clamp(1rem,2vw,1.75rem)}.hero-utility__link{position:relative;display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding-block:.5rem;color:var(--ink);font-size:.9375rem;font-weight:500;text-decoration:none;transition:color .22s cubic-bezier(.22,1,.36,1)}.hero-utility__link::after{content:"";position:absolute;left:calc(1rem + .5rem);right:0;bottom:.4rem;height:1px;background:currentColor;opacity:0;transform:translateY(2px);transition:opacity .22s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1)}.hero-utility__link:hover,.hero-utility__link:focus-visible{color:var(--brand)}.hero-utility__link:hover::after,.hero-utility__link:focus-visible::after{opacity:1;transform:translateY(0)}.hero-utility__link:focus-visible{outline:2px solid var(--brand);outline-offset:6px;border-radius:2px}.hero-utility__icon{width:1rem;height:1rem;flex-shrink:0;color:var(--ink-soft);transition:color .22s cubic-bezier(.22,1,.36,1)}.hero-utility__link:hover.hero-utility__icon,.hero-utility__link:focus-visible.hero-utility__icon{color:var(--brand)}.hero-portrait{margin:0;width:clamp(180px,42vw,320px);aspect-ratio:1;border-radius:4px;overflow:hidden;background:var(--paper-soft);justify-self:start}@media(min-width:768px){.hero-portrait{justify-self:end;transform:translateY(clamp(.5rem,2vw,1.5rem))}}.hero-portrait img{width:100%;height:100%;object-fit:cover;filter:saturate(.92)contrast(1.02);display:block}@media(prefers-reduced-motion:no-preference){.hero-portrait{cursor:pointer}.hero-name__primary,.hero-name__role,.hero-lede,.hero-utility{opacity:0;transform:translateY(14px);animation:hero-enter 700ms cubic-bezier(.22,1,.36,1)forwards}.hero-name__primary{animation-delay:40ms}.hero-name__role{animation-delay:.14s}.hero-lede{animation-delay:.22s}.hero-utility{animation-delay:.32s}}@keyframes hero-enter{to{opacity:1;transform:translateY(0)}}.hero-portrait{position:relative}.hero-portrait__mosaic{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);pointer-events:none;border-radius:inherit;perspective:700px;perspective-origin:center;transform-style:preserve-3d}.hero-portrait__sticker{background-image:var(--cube-src);background-size:300% 300%;background-position-x:calc(var(--col)/ 2 * 100%);background-position-y:calc(var(--row)/ 2 * 100%);background-repeat:no-repeat;filter:saturate(.92)contrast(1.02);transform-style:preserve-3d;backface-visibility:hidden}.hero-portrait__sticker.is-turning-y{animation:cube-turn-y var(--cube-turn-duration,720ms)cubic-bezier(.22,1,.36,1)forwards}.hero-portrait__sticker.is-turning-x{animation:cube-turn-x var(--cube-turn-duration,720ms)cubic-bezier(.22,1,.36,1)forwards}.hero-portrait__mosaic.is-turning-z{animation:cube-turn-z var(--cube-turn-duration,720ms)cubic-bezier(.22,1,.36,1)forwards}.hero-portrait--assembling>picture{opacity:0}@keyframes cube-turn-y{from{transform:rotateY(0deg)}to{transform:rotateY(360deg)}}@keyframes cube-turn-x{from{transform:rotateX(0deg)}to{transform:rotateX(360deg)}}@keyframes cube-turn-z{from{transform:rotate(0deg)}to{transform:rotate(90deg)}}.chapter{display:inline-flex;align-items:center;gap:clamp(.625rem,1.25vw,.9rem);margin:0 0 clamp(.75rem,1.25vw,1.25rem)0;font-family:var(--font-body);font-size:.75rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;font-variant-numeric:tabular-nums;line-height:1;color:var(--brand)}.chapter::after{content:"";display:inline-block;width:clamp(1.75rem,4vw,3rem);height:1px;background:currentColor;opacity:.55}.about{background:var(--paper);color:var(--ink);padding-block:clamp(4.5rem,10vh,7.5rem);font-family:var(--font-body)}.about__inner{max-width:62rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3rem)}.about__header{margin-bottom:clamp(2.5rem,5vw,4rem)}.about__heading{margin:0;font-family:var(--font-body);font-size:clamp(2.25rem,4.5vw,3.25rem);font-weight:600;font-variation-settings:"opsz"96,"wdth"100;line-height:.98;letter-spacing:-.03em;color:var(--ink)}.about__body{display:flex;flex-direction:column;gap:clamp(1rem,1.75vw,1.5rem);margin-bottom:clamp(1.75rem,3vw,2.5rem)}.about__lede{margin:0;max-width:56ch;font-size:clamp(1.125rem,.9vw + .85rem,1.3125rem);font-weight:400;font-variation-settings:"opsz"18,"wdth"100;line-height:1.5;letter-spacing:-.005em;color:var(--ink);text-wrap:pretty}.about__prose{margin:0;max-width:60ch;font-size:1rem;line-height:1.65;color:var(--ink-soft);text-wrap:pretty}.about__vitals{margin:0;max-width:60ch;font-size:.875rem;font-weight:500;line-height:1.6;color:var(--ink-soft);display:flex;flex-wrap:wrap;align-items:baseline;column-gap:.4rem;row-gap:.25rem}.about__vitals-item:not(:last-child)::after{content:"·";color:var(--brand);margin-inline-start:.4rem;font-weight:400}.about__rule{height:1px;background:var(--rule);margin-block:clamp(1.75rem,3.5vw,2.75rem)}.about__skills{margin:0;padding:0;display:grid;grid-template-columns:1fr;row-gap:clamp(.875rem,1.5vw,1.25rem)}.about__skill{display:grid;grid-template-columns:1fr;gap:.125rem;align-items:baseline}@media(min-width:640px){.about__skill{grid-template-columns:9rem minmax(0,1fr);column-gap:clamp(1rem,2vw,1.75rem);gap:0}}.about__skill-label{margin:0;font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);font-variant-numeric:tabular-nums;padding-block-start:.125rem}.about__skill-value{margin:0;font-size:.9375rem;line-height:1.6;color:var(--ink);text-wrap:pretty}.about__skill-value span[aria-hidden]{color:var(--brand);margin-inline:.35rem;font-weight:400}.about__resume{display:inline-flex;align-items:baseline;gap:.5rem;font-family:var(--font-body);font-size:1rem;font-weight:600;font-variation-settings:"opsz"18,"wdth"100;letter-spacing:-.005em;color:var(--ink);text-decoration:none;transition:color .22s cubic-bezier(.22,1,.36,1)}.about__resume:hover,.about__resume:focus-visible{color:var(--brand)}.about__resume:focus-visible{outline:2px solid var(--brand);outline-offset:6px;border-radius:2px}.about__resume-arrow{display:inline-block;transform:translateX(-2px);transition:transform .22s cubic-bezier(.22,1,.36,1);font-size:.95em}.about__resume:hover.about__resume-arrow,.about__resume:focus-visible.about__resume-arrow{transform:translateX(2px)}.connect{background:var(--paper);color:var(--ink);padding-block:clamp(4.5rem,10vh,7.5rem);font-family:var(--font-body)}.connect__inner{max-width:62rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3rem)}.connect__header{margin-bottom:clamp(1.75rem,3vw,2.5rem)}.connect__heading{margin:0;font-family:var(--font-body);font-size:clamp(2.25rem,4.5vw,3.25rem);font-weight:600;font-variation-settings:"opsz"96,"wdth"100;line-height:.98;letter-spacing:-.03em;color:var(--ink)}.connect__lede{margin:0 0 clamp(2.5rem,4.5vw,3.75rem)0;max-width:56ch;font-size:clamp(1.0625rem,.7vw + .85rem,1.25rem);font-weight:400;font-variation-settings:"opsz"18,"wdth"100;line-height:1.55;letter-spacing:-.005em;color:var(--ink-soft);text-wrap:pretty}.connect__voices{margin-bottom:clamp(2.75rem,5vw,4rem);max-width:60ch;padding-inline-start:clamp(1rem,2.5vw,1.75rem)}.connect__quote{display:none;flex-direction:column}.connect__quote--active{display:flex}.connect__quote-body{margin:0 0 clamp(1rem,1.75vw,1.5rem)0;font-family:var(--font-body);font-style:italic;font-size:1rem;line-height:1.65;color:var(--ink);quotes:"“""”""‘""’";text-wrap:pretty}.connect__quote-body::before{content:open-quote}.connect__quote-body::after{content:close-quote}.connect__quote-rule{width:clamp(2.25rem,4vw,3rem);height:1px;background:var(--brand);opacity:.55;margin-bottom:.625rem}.connect__quote-author{margin:0;font-family:var(--font-body);font-size:.9375rem;font-weight:600;font-variation-settings:"opsz"18,"wdth"100;letter-spacing:-.005em;line-height:1.3;color:var(--ink)}.connect__quote-role{margin:.125rem 0 0 0;font-size:.8125rem;font-weight:500;line-height:1.4;color:var(--ink-soft)}.connect__advance{display:inline-flex;align-items:baseline;gap:.45rem;margin-top:clamp(1rem,1.75vw,1.4rem);padding:.25rem 0;background:none;border:none;font-family:var(--font-body);font-size:.8125rem;font-weight:500;letter-spacing:.04em;color:var(--ink-soft);cursor:pointer;transition:color .22s cubic-bezier(.22,1,.36,1)}.connect__advance:hover,.connect__advance:focus-visible{color:var(--brand)}.connect__advance:focus-visible{outline:2px solid var(--brand);outline-offset:4px;border-radius:2px}.connect__advance-arrow{display:inline-block;transform:translateX(-2px);transition:transform .22s cubic-bezier(.22,1,.36,1);font-size:.95em}.connect__advance:hover.connect__advance-arrow,.connect__advance:focus-visible.connect__advance-arrow{transform:translateX(2px)}.connect__close{margin:0 0 clamp(1.5rem,2.5vw,2rem)0;max-width:56ch;font-size:1rem;line-height:1.6;color:var(--ink);text-wrap:pretty}.connect__utility{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(.5rem,1vw,1.25rem)clamp(1.25rem,2.5vw,2rem)}.connect__link{position:relative;display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding-block:.5rem;color:var(--ink);font-size:.9375rem;font-weight:500;text-decoration:none;transition:color .22s cubic-bezier(.22,1,.36,1)}.connect__link::after{content:"";position:absolute;left:calc(1rem + .5rem);right:0;bottom:.4rem;height:1px;background:currentColor;opacity:0;transform:translateY(2px);transition:opacity .22s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1)}.connect__link:hover,.connect__link:focus-visible{color:var(--brand)}.connect__link:hover::after,.connect__link:focus-visible::after{opacity:1;transform:translateY(0)}.connect__link:focus-visible{outline:2px solid var(--brand);outline-offset:6px;border-radius:2px}.connect__icon{width:1rem;height:1rem;flex-shrink:0;color:var(--ink-soft);transition:color .22s cubic-bezier(.22,1,.36,1)}.connect__link:hover.connect__icon,.connect__link:focus-visible.connect__icon{color:var(--brand)}.faq{background:var(--paper-soft);color:var(--ink);padding-block:clamp(4.5rem,10vh,7.5rem);font-family:var(--font-body)}.faq__inner{max-width:62rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3rem)}.faq__header{margin-bottom:clamp(2.5rem,5vw,4rem)}.faq__heading{margin:0;font-family:var(--font-body);font-size:clamp(2.25rem,4.5vw,3.25rem);font-weight:600;font-variation-settings:"opsz"96,"wdth"100;line-height:.98;letter-spacing:-.03em;color:var(--ink)}.faq__list{display:flex;flex-direction:column;border-top:1px solid var(--rule)}.faq__item{border-bottom:1px solid var(--rule)}.faq__question{list-style:none;display:flex;align-items:baseline;gap:clamp(1rem,2.5vw,2rem);padding-block:clamp(1.125rem,2vw,1.5rem);cursor:pointer;font-family:var(--font-body);font-size:clamp(1.125rem,.7vw + .85rem,1.3125rem);font-weight:600;font-variation-settings:"opsz"22,"wdth"100;line-height:1.3;letter-spacing:-.012em;color:var(--ink);transition:color .22s cubic-bezier(.22,1,.36,1)}.faq__question::-webkit-details-marker{display:none}.faq__question::marker{content:""}.faq__question:hover{color:var(--brand)}.faq__question:focus-visible{outline:2px solid var(--brand);outline-offset:4px;border-radius:2px}.faq__question-text{flex:1 1 auto;min-width:0}.faq__chevron{flex:0 0 auto;width:1rem;height:1rem;color:var(--ink-soft);transition:color .22s cubic-bezier(.22,1,.36,1),transform .24s cubic-bezier(.22,1,.36,1)}.faq__item[open].faq__chevron{transform:rotate(180deg);color:var(--brand)}.faq__question:hover.faq__chevron{color:var(--brand)}.faq__answer{padding-block:0 clamp(1.25rem,2.25vw,1.75rem);padding-inline-end:clamp(1rem,4vw,3rem);max-width:65ch}.faq__answer p{margin:0;font-size:.9375rem;line-height:1.65;color:var(--ink-soft);text-wrap:pretty}@media(prefers-reduced-motion:no-preference){.faq__answer{animation:faq-answer-in 280ms cubic-bezier(.22,1,.36,1)}}@keyframes faq-answer-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.site-footer{background:var(--paper);color:var(--ink-soft);padding-top:clamp(1rem,2vw,1.5rem);padding-bottom:clamp(2.5rem,5vw,3.5rem);border-top:1px solid var(--rule);font-family:var(--font-body)}.site-footer__inner{max-width:62rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3rem);display:flex;flex-direction:column;gap:clamp(.75rem,1.5vw,1.25rem)}.site-footer__row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 1.5rem;margin:0}.site-footer__wordmark{margin:0;color:var(--ink);line-height:0}.signature{display:block;height:clamp(2.5rem,5vw,3.5rem);width:auto;max-width:100%;overflow:visible}.signature__stroke{fill:var(--ink)}.site-footer__copy{margin:0;font-size:.75rem;font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink-soft)}.site-footer__colophon{margin:0;font-size:.8125rem;line-height:1.6;color:var(--ink-soft);text-wrap:pretty}.site-footer__link{color:var(--ink);text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:3px;text-decoration-thickness:1px;transition:color .22s cubic-bezier(.22,1,.36,1),text-decoration-color .22s cubic-bezier(.22,1,.36,1)}.site-footer__link:hover,.site-footer__link:focus-visible{color:var(--brand);text-decoration-color:var(--brand)}.site-footer__link:focus-visible{outline:2px solid var(--brand);outline-offset:4px;border-radius:2px}.site-footer__link{--arrow-x:0}.site-footer__link:hover,.site-footer__link:focus-visible{--arrow-x:3px}.site-footer__link-arrow{display:inline-block;text-decoration:none;transform:translateX(var(--arrow-x));transition:transform .22s cubic-bezier(.22,1,.36,1)}.signature__pen{stroke-dasharray:1}.signature__pen--pending{stroke-dashoffset:1}@supports(animation-timeline:view()){@media(prefers-reduced-motion:no-preference){.about__header.chapter,.about__heading{animation:about-arrive linear both;animation-timeline:view()}.about__header.chapter{animation-range:entry 0% cover 18%}.about__heading{animation-range:entry 8% cover 28%}}}@keyframes about-arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.hidden{display:none}.invisible{visibility:hidden}.visible{visibility:visible}.opacity-0{opacity:0}.opacity-100{opacity:1}