@font-face{font-family:Host Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/host-grotesk-latin-ext-400-normal.2lWav77k.woff2)format("woff2"),url(/_astro/host-grotesk-latin-ext-400-normal.HDUo2C87.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Host Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/host-grotesk-latin-400-normal.qDxuE_yq.woff2)format("woff2"),url(/_astro/host-grotesk-latin-400-normal.B5l3BUS2.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Host Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/host-grotesk-latin-ext-500-normal.ll0qUnSO.woff2)format("woff2"),url(/_astro/host-grotesk-latin-ext-500-normal.G3nlyK26.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Host Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/host-grotesk-latin-500-normal.B7155YqD.woff2)format("woff2"),url(/_astro/host-grotesk-latin-500-normal.CYkrbnPr.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Host Grotesk;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/host-grotesk-latin-ext-400-italic.Cy542TQR.woff2)format("woff2"),url(/_astro/host-grotesk-latin-ext-400-italic.DAvwP7_z.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Host Grotesk;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/host-grotesk-latin-400-italic.Bs-kq6BB.woff2)format("woff2"),url(/_astro/host-grotesk-latin-400-italic.BD0Wk_Hl.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Host Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/host-grotesk-latin-ext-600-normal.8Phxb3ZY.woff2)format("woff2"),url(/_astro/host-grotesk-latin-ext-600-normal.Be3M_oM0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Host Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/host-grotesk-latin-600-normal.D4yVz22u.woff2)format("woff2"),url(/_astro/host-grotesk-latin-600-normal.Ba3Meoq5.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Host Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/host-grotesk-latin-ext-700-normal.CGci74iz.woff2)format("woff2"),url(/_astro/host-grotesk-latin-ext-700-normal.u2nbVBTF.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Host Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/host-grotesk-latin-700-normal.C2wxdkf9.woff2)format("woff2"),url(/_astro/host-grotesk-latin-700-normal.Ckiqqr0A.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--yellow:#f7b731;--green:#20bf6b;--blue:#4b7bec;--red:#eb3b5a;--red-dark:#bc3357;--green-dark:#1b9b54;--yellow-dark:#d3922a;--blue-dark:#3f69bc;--dark-blue:#242c3e;--white:#f8faff;--light-grey:#d3d3d3;--black:#1a202f;--grey:#898d97;--font:"Host Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--page-max:1130px;--gutter:80px;--radius-card:16px;--radius-btn:12px;--radius-pill:45px;--fs-body:14.5px;--fs-small:12.5px;--fs-caption:12.5px;--fs-sheet-intro:16px;--fs-sheet-h3:16px;--fs-sheet-h2:20px;--lh-body:1.3;--grey-text:var(--grey);--green-text:var(--green)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scrollbar-gutter:stable}html.is-locked{overflow:hidden}body{background:var(--white);color:var(--dark-blue);font-family:var(--font);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p,ul{margin:0}ul{padding:0;list-style:none}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;text-align:inherit;background:0 0;border:0;padding:0}:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:100%;max-width:var(--page-max);padding-inline:var(--gutter);margin-inline:auto}.band-dark{background:var(--dark-blue);color:var(--white)}.t-60{font-size:60px;font-weight:700;line-height:1.07}.t-40{font-size:40px;font-weight:700;line-height:1.07}.t-24{font-size:24px;font-weight:700;line-height:1.24}.t-24-regular{font-size:24px;font-weight:400;line-height:1.24}.btn{border-radius:var(--radius-btn);height:40px;font-weight:700;font-size:var(--fs-body);white-space:nowrap;cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:12px;padding:0 22px;line-height:1;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.btn--dark{background:var(--dark-blue);color:var(--white)}.btn--dark:hover{background:var(--black)}.btn--outline{border-color:var(--dark-blue);color:var(--dark-blue)}.btn--outline:hover{border-color:var(--black);color:var(--black);background:#1a202f0a}.btn--red{background:var(--red);height:43px;color:var(--white)}.btn--red:hover{background:var(--red-dark)}.btn--green{background:var(--green);height:34px;color:var(--white)}.btn--green:hover{background:var(--green-dark)}.btn--outline-light{border-color:var(--white);height:40px;color:var(--white);gap:6px;padding:0 13px}.btn--outline-light:hover{border-color:var(--light-grey);color:var(--grey);background:#d3d3d305}.btn--outline-light .btn__icon img{transition:filter .15s}.btn--outline-light:hover .btn__icon img{filter:brightness(.55)}.btn__icon{flex:none;justify-content:center;align-items:center;width:15px;height:15px;display:inline-flex}.btn__icon img{max-width:none}.u-link{font-size:var(--fs-body);background:0 0;flex-direction:column;gap:4px;line-height:1.3;display:inline-flex}.u-link:after{content:"";opacity:0;background:currentColor;height:1px;transition:opacity .15s;display:block}.u-link:hover:after,.u-link:focus-visible:after{opacity:1}.u-link[aria-current=page]{font-weight:700;line-height:1.067}.chip{border:.75px solid var(--dark-blue);border-radius:var(--radius-pill);height:21px;font-size:var(--fs-small);white-space:nowrap;justify-content:center;align-items:center;padding:0 11px;font-weight:500;line-height:1;display:inline-flex}.chips{flex-wrap:wrap;gap:6px 4px;display:flex}.chip--tag{background:#e9ebf1;border:0;height:24px;padding:0 14px}.card .chips,.sheet__top .chips{gap:4px}.card--compact .chips{gap:4px 3px}.filter-chip{border:.75px solid var(--dark-blue);border-radius:var(--radius-pill);height:25px;font-size:var(--fs-small);white-space:nowrap;justify-content:center;align-items:center;gap:7px;padding:0 14px;font-weight:500;line-height:1;transition:background-color .15s,color .15s;display:inline-flex}button.filter-chip:not([aria-pressed=true]):hover{background:#242c3e14}.filter-chip[aria-pressed=true]{background:var(--dark-blue);color:var(--white)}button.filter-chip[aria-pressed=true]:hover{background:var(--black);border-color:var(--black)}.nav{z-index:20;background:var(--white);border-bottom:1px solid var(--light-grey);position:sticky;top:0}.nav__inner{justify-content:space-between;align-items:center;gap:24px;padding-block:24px;display:flex}.brand{white-space:nowrap;align-items:center;gap:12px;font-size:21px;font-weight:600;line-height:1;display:inline-flex}.brand img{width:27.44px;height:23.52px}.nav__right{align-items:center;gap:40px;display:flex}.nav__links{align-items:center;gap:40px;padding-top:4px;display:flex}.nav__toggle{border-radius:12px;flex:none;justify-content:center;align-items:center;width:44px;height:44px;margin-right:-10px;display:none}.nav__toggle-bars,.nav__toggle-bars:before,.nav__toggle-bars:after{background:var(--dark-blue);width:20px;height:2px;transition:transform .25s var(--ease-out), background-color .2s ease;border-radius:2px;display:block}.nav__toggle-bars{position:relative}.nav__toggle-bars:before,.nav__toggle-bars:after{content:"";position:absolute;left:0}.nav__toggle-bars:before{top:-6px}.nav__toggle-bars:after{top:6px}.nav.is-open .nav__toggle-bars{background:0 0}.nav.is-open .nav__toggle-bars:before{transform:translateY(6px)rotate(45deg)}.nav.is-open .nav__toggle-bars:after{transform:translateY(-6px)rotate(-45deg)}.hero__row{justify-content:space-between;align-items:stretch;gap:24px;display:flex}.hero__copy{flex-direction:column;gap:32px;padding-block:70px;display:flex}.hero__heading{flex-direction:column;gap:14px;display:flex}.hero__title .eyebrow{font-size:40px;font-weight:700;line-height:1.07;display:block}.hero__title .headline{font-size:60px;font-weight:700;line-height:1.07;display:block}.hero__title .keep{white-space:nowrap}.hero__lead{font-size:24px;line-height:1.24}.hero__actions{flex-wrap:wrap;gap:8px;display:flex}.social-rail{flex-direction:column;justify-content:flex-end;gap:4px;padding-block:70px;display:flex}.social{width:32px;height:32px;transition:top .15s;display:block;position:relative;top:0}.social:hover,.social:focus-visible{top:-2px}.social__glyph{background-color:var(--c);width:100%;height:100%;-webkit-mask:var(--icon) center / contain no-repeat;mask:var(--icon) center / contain no-repeat;transition:background-color .15s;display:block}.social:hover .social__glyph,.social:focus-visible .social__glyph{background-color:var(--c-hover)}.social--gmail{--icon:url(/icons/gmail.svg);--c:var(--red);--c-hover:var(--red-dark)}.social--upwork{--icon:url(/icons/upwork.svg);--c:var(--yellow);--c-hover:var(--yellow-dark)}.social--whatsapp{--icon:url(/icons/whatsapp.svg);--c:var(--green);--c-hover:var(--green-dark)}.social--linkedin{--icon:url(/icons/linkedin.svg);--c:var(--blue);--c-hover:var(--blue-dark)}.social-row{gap:4px;display:flex}.stack{padding-block:30px 50px}.stack__inner{flex-direction:column;gap:18px;display:flex}.stack__head{justify-content:space-between;align-items:center;display:flex}.stack__head img{width:70px;height:70px}.stack__groups{flex-direction:column;gap:30px;display:flex}.stack__group{flex-direction:column;gap:16px;min-width:0;display:flex}.marquee{overflow:hidden}.marquee__track{gap:8px;width:max-content;animation:42s linear infinite marquee;display:flex}.marquee:hover .marquee__track,.marquee:focus-within .marquee__track{animation-play-state:paused}.marquee__track[data-dir=reverse]{animation-duration:36s;animation-direction:reverse}@keyframes marquee{to{transform:translate(calc(-50% - 4px))}}.skill-chip{border:1px solid var(--white);border-radius:var(--radius-pill);height:32px;font-size:var(--fs-body);white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 12px;line-height:1;display:inline-flex}.skill-chip img{width:auto;height:15.5px}@media (prefers-reduced-motion:reduce){.marquee__track{flex-wrap:wrap;width:auto;animation:none}.marquee__track [aria-hidden=true]{display:none}}.section{padding-block:50px;scroll-margin-top:91px}.section__head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:40px;display:flex}.card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.card-grid--extras{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding-block:40px 70px}.card{isolation:isolate;text-align:left;flex-direction:column;width:100%;min-width:0;display:flex}.card__photo{aspect-ratio:475/250;border-radius:var(--radius-card) var(--radius-card) 0 0;background:var(--card-color,var(--light-grey));z-index:2;margin-bottom:-1px;position:relative;overflow:hidden}.card__photo img{max-width:none;width:calc(var(--w) * 1%);height:calc(var(--h) * 1%);left:calc(var(--l) * 1%);top:calc(var(--t) * 1%);object-fit:fill;transition:transform .4s;position:absolute}.card__body{background:var(--white);border:1px solid var(--light-grey);border-radius:0 0 var(--radius-card) var(--radius-card);z-index:1;flex-direction:column;flex:1;gap:16px;padding:22px;transition:border-color .2s,box-shadow .2s;display:flex}.card__text{flex-direction:column;gap:10px;display:flex}.card__title{font-size:24px;font-weight:700;line-height:1.24}.card__desc{font-size:var(--fs-body);line-height:var(--lh-body)}.card--compact .card__photo{aspect-ratio:312.67/220}.card--compact .card__text{gap:7px}.card--compact .card__desc{font-size:var(--fs-caption);font-weight:400;line-height:1.29}.card{border-radius:var(--radius-card);transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s cubic-bezier(.2,.8,.2,1)}button.card{cursor:pointer}button.card:focus-visible{transform:translateY(-1px);box-shadow:0 20px 36px -14px #242c3e47,0 6px 14px -6px #242c3e24}button.card:focus-visible .card__photo img{transform:scale(1.07)}@media (hover:hover){button.card:hover,.card--compact:hover{transform:translateY(-1px);box-shadow:0 20px 36px -14px #242c3e47,0 6px 14px -6px #242c3e24}button.card:hover .card__photo img,.card--compact:hover .card__photo img{transform:scale(1.07)}}.card[hidden]{display:none}.card.is-entering{animation:.3s both card-in}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}}.page-head{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.page-head__copy{flex-direction:column;flex:1;gap:20px;padding-block:70px 40px;display:flex}.page-head__copy p{max-width:460px}.page-head__art{padding-top:40px}.page-head__art img{width:100px;height:100px;transform:scaleX(-1)}.sort-bar{flex-direction:column;gap:16px;display:flex}.sort-bar hr{border:0;border-top:1px solid var(--light-grey);width:100%;margin:0}.sort-bar__row{align-items:center;gap:10px;display:flex}.sort-bar__chips{flex-wrap:wrap;gap:4px;display:flex}.about-hero{align-items:flex-start;gap:70px;padding-block:70px 50px;display:flex}.about-hero__side{flex-direction:column;flex:none;align-items:center;gap:18px;width:clamp(220px,27vw,320px);display:flex}.portrait{aspect-ratio:290/353;background:#f1c58d;border-radius:10px;width:100%;position:relative;overflow:hidden}.portrait img{width:133.77%;max-width:none;height:161.56%;position:absolute;top:-19.17%;left:-16%}.about-hero__name{flex-direction:column;align-items:center;gap:6px;display:flex}.status-pill{border:.75px solid var(--green);border-radius:var(--radius-pill);height:25px;color:var(--green-text);font-size:var(--fs-small);justify-content:center;align-items:center;gap:7px;padding:0 20px;font-weight:500;line-height:1;display:inline-flex}.status-pill img{width:5.46px;height:5.46px}.about-hero__main{flex-direction:column;flex:1;gap:50px;min-width:0;display:flex}.about-hero__intro{flex-direction:column;align-items:flex-start;gap:31px;display:flex}.about-hero__heading{flex-direction:column;gap:24px;display:flex}.about-hero__heading .role{font-size:18px;font-weight:500;line-height:1.24}.accent{color:var(--green)}.about-hero__bio{flex-direction:column;gap:1.3em;display:flex}.about-hero__bio p{line-height:1.55}.about-hero__actions{justify-content:flex-end;gap:8px;display:flex}.rule{border:0;border-top:1px solid var(--light-grey);width:100%;margin:0}.about-body{flex-direction:column;gap:50px;padding-bottom:110px;display:flex}.timeline{align-items:flex-start;gap:70px;display:flex}.timeline__label{flex:none;width:122px}.timeline__list{--entry-gap:44px;gap:var(--entry-gap);flex-direction:column;flex:1;min-width:0;display:flex}.entry{align-items:flex-start;gap:24px;display:flex}.entry__marker{flex:none;width:6px;height:8px;margin-top:4px}.entry__content{flex-direction:column;flex:1;gap:19px;min-width:0;display:flex}.entry__head{flex-direction:column;gap:4px;display:flex}.entry__period{color:var(--green-text);font-weight:700}.entry__org{color:var(--grey-text)}.entry__honor{color:var(--dark-blue);text-wrap:balance;margin-top:8px;font-weight:600;line-height:1.3}@supports (text-box:trim-both cap alphabetic){.entry__period,.entry__org,.entry__honor,.entry__content>p{text-box:trim-both cap alphabetic}.entry__marker{margin-top:0}}@media (width<=960px){@supports (text-box:trim-both cap alphabetic){.entry{--line-gap:11px}.entry__head{gap:var(--line-gap)}.entry__head h3{text-box:trim-both cap alphabetic}.entry__head h3,.entry__org,.entry__honor,.entry__content>p{line-height:calc(1cap + var(--line-gap))}.entry__honor{margin-top:0}.entry__content{gap:var(--line-gap)}.entry__content>.chips{margin-top:8px}}}.entry{position:relative}.entry:not(:last-child):before{content:"";top:16px;bottom:calc(8px - var(--entry-gap));background:var(--light-grey);width:1px;position:absolute;left:2.5px}.entry__content>p{max-width:75ch}.entry__kind,.entry__org-short{display:none}@media (width<=760px){.timeline__list,.entry{gap:0}.entry+.entry{margin-top:48px}.entry__marker,.entry:not(:last-child):before{display:none}.entry__kind,.entry__org-short{display:inline}.entry__org-full{display:none}@media (width<=480px){.entry__part{text-wrap:balance;display:block}.entry__sep{display:none}}.entry__period{font-size:var(--fs-small)}@supports (text-box:trim-both cap alphabetic){.entry__head{gap:10px}.entry__period{margin-bottom:4px}.entry__head h3{line-height:1.2}.entry__org{line-height:1.5}.entry__honor{margin-top:4px;line-height:1.4}.entry__content>p{line-height:1.55}.entry__content{gap:24px}.entry__content>.chips{row-gap:8px;margin-top:0}}}.about-body .chips{gap:6px}.about-body .chip{height:24px;color:var(--dark-blue);background:#242c3e12;border:0;padding:0 12px}.skills-block{flex-direction:column;gap:30px;display:flex}.skills-block__cols{gap:70px;display:flex}.skills-block__col{flex-direction:column;flex:1;gap:14px;min-width:0;display:flex}.skills-block__col h3{font-size:21.447px;font-weight:700;line-height:1.07}.footer{padding-block:50px}.footer__inner{flex-direction:column;gap:40px;display:flex}.footer__top{justify-content:space-between;align-items:stretch;gap:32px;min-height:248px;display:flex}.footer__cta{flex-direction:column;justify-content:center;align-items:flex-start;gap:32px;display:flex}.footer__cta p{max-width:307px}.email-pill{background:var(--blue);border-radius:19px;align-items:center;gap:32px;padding:8px 10px 8px 20px;display:inline-flex;overflow:hidden}.email-pill a.email{line-height:1}.email-pill a.email:hover{text-decoration:underline}.footer__aside{flex-direction:column;justify-content:space-between;align-items:flex-end;display:flex}.footer__aside-bottom{flex-direction:column;align-items:flex-end;gap:14px;display:flex}.footer__logo{width:104px;height:89.15px}.footer__logo-small{display:none}.footer__bottom{flex-direction:column;gap:18px;display:flex}.footer__bottom hr{border:0;border-top:1px solid var(--white);width:100%;margin:0}.footer__row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.footer__nav{align-items:center;gap:9px;display:flex}.footer__nav .dot{background:var(--white);border-radius:50%;width:2px;height:2px}.project-dialog{width:100%;max-width:none;height:100%;max-height:none;color:var(--dark-blue);overscroll-behavior:contain;background:0 0;border:0;margin:0;padding:0;overflow-y:auto}.project-dialog:not([open]){display:none}.project-dialog::backdrop{background:rgba(26, 32, 47, var(--backdrop-a,.62))}.project-dialog[open]::backdrop{animation:.25s ease-out both backdrop-in}.sheet{--sheet-radius:32px;background:var(--white);border-radius:var(--sheet-radius) var(--sheet-radius) 0 0;width:min(864px,100%);min-height:calc(100% - 40px);margin:40px auto 0;animation:.28s cubic-bezier(.2,.8,.2,1) both sheet-in;position:relative;box-shadow:0 -12px 48px -8px #0e121c66,0 -2px 10px #0e121c24}@keyframes sheet-in{0%{opacity:0;transform:translateY(24px)}}@keyframes sheet-in-up{0%{transform:translateY(100%)}}@keyframes backdrop-in{0%{opacity:0}}.project-dialog.is-closing{scrollbar-gutter:stable;overflow:hidden}.project-dialog.is-closing .sheet{pointer-events:none;will-change:transform;animation:.24s cubic-bezier(.32,.72,0,1) forwards sheet-out}.project-dialog.is-closing::backdrop{animation:.2s ease-out forwards backdrop-out}@keyframes sheet-out{to{transform:translateY(var(--out,100vh))}}@keyframes backdrop-out{to{opacity:0}}.sheet__head{z-index:3;background:var(--white);border-radius:var(--sheet-radius) var(--sheet-radius) 0 0;flex-direction:column;gap:16px;padding:32px 32px 12px;display:flex;position:sticky;top:0}.sheet__top{justify-content:space-between;align-items:center;gap:12px;display:flex}.sheet__title{color:var(--dark-blue);font-size:32px;font-weight:700;line-height:1.1}.sheet__head hr{border:0;border-top:1px solid var(--light-grey);width:100%;margin:0}.close-btn{--close:32px;width:var(--close);height:var(--close);background:var(--light-grey);border-radius:50%;flex:none;justify-content:center;align-items:center;transition:background-color .15s;display:inline-flex}.close-btn:hover{background:var(--grey)}.close-btn img{width:12.33px;height:12.33px}.sheet__body{flex-direction:column;gap:32px;padding:4px 40px 0;display:flex}.sheet__body--last{padding-bottom:32px}@media (width>=661px) and (height>=600px){.project-dialog[open]:has(.sheet__body--last):not(.is-docked){padding:20px;display:flex}.project-dialog:not(.is-docked) .sheet:has(.sheet__body--last){border-radius:var(--sheet-radius);flex-direction:column;min-height:0;max-height:100%;margin:auto;display:flex;box-shadow:0 40px 80px -24px #0e121c8c,0 16px 32px -12px #0e121c52,0 2px 8px #0e121c29}.project-dialog:not(.is-docked) .sheet:has(.sheet__body--last) .sheet__head{flex:none}.project-dialog:not(.is-docked) .sheet__body--last{flex:auto;min-height:0}.project-dialog:not(.is-docked) .sheet__body--last .carousel .gallery{height:min(clamp(120px,100dvh - 520px,380px),min(864px,100vw - 40px)/2.1 - 38.0952px)}}@media (width>=661px) and (height>=600px) and (height<=740px){.project-dialog:not(.is-docked) .sheet:has(.sheet__body--last) .sheet__head{padding-top:24px}.project-dialog:not(.is-docked) .sheet__body--last{gap:24px;padding-bottom:24px}.project-dialog:not(.is-docked) .sheet__body--last .carousel .gallery{height:min(clamp(120px,100dvh - 504px,380px),min(864px,100vw - 40px)/2.1 - 38.0952px)}}.carousel{flex-direction:column;flex:none;display:flex;position:relative}.carousel__note{color:var(--grey-text);font-size:var(--fs-small);align-items:flex-start;gap:7px;margin-top:12px;font-weight:500;line-height:1.35;display:flex}.carousel__note svg{flex:none;margin-top:1px}.gallery{border-radius:var(--radius-card);background:var(--project-color,var(--green));flex:none;height:380px;position:relative;overflow:hidden}.gallery__slide{object-fit:cover;object-position:var(--focus,50% 50%);opacity:0;width:100%;height:100%;transition:opacity .3s;position:absolute;inset:0}.gallery__slide.is-active{opacity:1}.gallery--photos{background:var(--light-grey)}.gallery--contain,.gallery--photos.gallery--contain{background:var(--project-color)}.gallery--contain .gallery__slide{object-fit:contain;height:calc(100% - 32px);inset:16px 0}.gallery--contain:after{display:none}.gallery--width,.gallery--photos.gallery--width{background:var(--project-color)}.gallery--width .gallery__slide{object-fit:fill;height:auto;inset:50% 0 auto;transform:translateY(-50%)}.gallery--width:after{display:none}.gallery--photos:after{content:"";border-radius:inherit;pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #242c3e29}.gallery__zoom{border-radius:inherit;cursor:zoom-in;position:absolute;inset:0}.gallery__zoom--link{cursor:pointer}.gallery__nav{width:36px;height:36px;transition:opacity .25s ease, background-color .2s ease, transform .2s var(--ease-out);background:#1a202f66;border-radius:50%;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}@media (hover:hover) and (pointer:fine){.gallery__nav{opacity:0}.gallery:hover .gallery__nav,.gallery:focus-within .gallery__nav{opacity:1}}.gallery__nav:hover{background:#1a202f9e}.gallery__nav:active{transform:translateY(-50%)scale(.94)}.gallery__nav--prev{left:14px}.gallery__nav--next{right:14px}.gallery__nav img{width:8px;height:14px;transition:transform .2s var(--ease-out)}.gallery__nav--prev:hover img{transform:translate(-2px)}.gallery__nav--next:hover img{transform:translate(2px)}.gallery__count{color:var(--white);font-size:var(--fs-small);font-variant-numeric:tabular-nums;pointer-events:none;background:#1a202fa8;border-radius:999px;padding:5px 10px;font-weight:500;line-height:1;position:absolute;top:12px;right:12px}.case-lead{align-items:stretch;gap:32px;display:flex}.carousel+.case-lead{margin-top:3px}.case-lead__intro{flex-direction:column;flex:1;justify-content:space-between;gap:20px;min-width:0;display:flex}.case-lead__intro p:first-child{font-size:var(--fs-sheet-intro);line-height:1.4}.case-lead__meta{color:var(--grey-text);font-size:var(--fs-small);text-wrap:balance;font-weight:500;line-height:1.29}.case-lead__cta{align-self:flex-start;margin-bottom:auto}.case-lead__divider{background:var(--light-grey);flex:none;width:1px}.case-lead__highlights{flex-direction:column;flex:1;gap:12px;min-width:0;display:flex}.case-lead__highlights h3{font-size:var(--fs-sheet-h3);font-weight:700;line-height:1.24}.case-lead__tags{margin-top:auto;padding-top:20px}.case-section{flex-direction:column;gap:12px;display:flex}.case-section h2{font-size:var(--fs-sheet-h2);font-weight:700;line-height:1.24}.case-section__body{flex-direction:column;gap:1.3em;display:flex}.case-section--side{grid-template-columns:minmax(0, 1fr) min(var(--figure-w,349px), var(--figure-cap,44.5%));column-gap:var(--figure-gap,40px);grid-template-rows:auto 1fr;align-items:start;row-gap:12px;display:grid}.case-section--side h2{grid-area:1/1}.case-section--side .case-section__body{grid-area:2/1}.case-section--side .case-figure{grid-area:1/2/span 2}.case-section--side-body .case-figure{grid-row:2}.case-split{grid-template-columns:min(var(--figure-w,349px), var(--figure-cap,44.5%)) minmax(0, 1fr);column-gap:var(--figure-gap,40px);align-items:start;display:grid}.case-split__col{flex-direction:column;gap:32px;min-width:0;display:flex}.case-figure{margin:0}.case-section__tail{display:none}@media (width>=680px) and (width<=960px){.case-split{grid-template-columns:152px minmax(0,1fr);align-items:center;row-gap:32px}.case-split__col{display:contents}.case-split__col>:nth-child(n+2){grid-column:1/-1}.case-section--side .case-section__tail{grid-area:3/1/auto/-1;margin-top:4px;display:block}.case-section--side li.is-tail{display:none}}.case-stack{flex-direction:column;gap:12px;display:flex}.case-figure__zoom{cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block}.case-figure img{width:100%;height:auto;display:block}.case-section__body p{line-height:1.55}.case-section .bullets{line-height:1.5}.case-lead__highlights .bullets{line-height:1.4}.case-section .bullets li+li,.case-lead__highlights .bullets li+li,.case-section .bullets li>ul{margin-top:4px}.bullets,.bullets ul{padding-left:21.75px;list-style:outside}.bullets strong{font-weight:700}.sheet__foot{flex-direction:column;gap:16px;padding:32px 40px;display:flex}.sheet__foot hr{border:0;border-top:1px solid var(--light-grey);width:100%;margin:0}.sheet__pager{justify-content:space-between;align-items:center;display:flex}.sheet__pager .btn{min-width:125px}.sheet__pager .btn:hover,.sheet__pager .btn:focus-visible{background:#1a202f12}.sheet__pager .btn__icon{transition:transform .25s var(--ease-out)}.sheet__pager .btn[data-dir=prev]:hover .btn__icon,.sheet__pager .btn[data-dir=prev]:focus-visible .btn__icon{transform:translate(-4px)}.sheet__pager .btn[data-dir=next]:hover .btn__icon,.sheet__pager .btn[data-dir=next]:focus-visible .btn__icon{transform:translate(4px)}.lightbox{background:0 0;border:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;overflow:hidden}.lightbox:not([open]){display:none}.lightbox::backdrop{background:#0e121c}.lightbox__stage{cursor:zoom-in;touch-action:none;user-select:none;justify-content:center;align-items:center;padding:72px 80px;animation:.2s both lightbox-in;display:flex;position:absolute;inset:0;overflow:hidden}@keyframes lightbox-in{0%{opacity:0}}.lightbox__stage.is-zoomed{cursor:zoom-out}.lightbox__stage.is-panning{cursor:grabbing}.lightbox__img{max-width:100%;max-height:100%;transition:transform .25s var(--ease-out);will-change:transform;-webkit-user-drag:none;border-radius:6px;display:block}.lightbox__btn{width:var(--lb-btn,40px);height:var(--lb-btn,40px);color:var(--dark-blue);transition:background-color .2s ease, opacity .2s ease, transform .2s var(--ease-out);background:#f8faffeb;border-radius:50%;justify-content:center;align-items:center;display:inline-flex;box-shadow:0 6px 16px -6px #0000008c,0 1px 2px #0003}.lightbox__btn:hover{background:var(--white)}.lightbox__btn:active{transform:scale(.94)}.lightbox__btn:disabled{opacity:.4;pointer-events:none}.lightbox__close{position:absolute;top:20px;right:20px}.lightbox__nav{top:calc(50% - var(--lb-btn,40px) / 2);position:absolute}.lightbox__nav--prev{left:20px}.lightbox__nav--next{right:20px}.lightbox__nav img{width:8px;height:14px}.lightbox__zoom{gap:8px;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.lightbox__count{top:calc(29px + (var(--lb-btn,40px) - 40px) / 2);color:#f8faffcc;font-variant-numeric:tabular-nums;margin:0;font-size:14px;font-weight:500;position:absolute;left:24px}.lightbox.is-single .lightbox__nav,.lightbox.is-single .lightbox__count{display:none}@media (width<=960px){:root{--gutter:40px;--fs-body:16px;--fs-small:13.5px;--fs-caption:14px;--fs-sheet-intro:18px;--fs-sheet-h3:18px;--fs-sheet-h2:22px;--lh-body:1.45;--grey-text:#6b7080;--green-text:#15803f}h1,h2,h3{text-wrap:balance}p,li{text-wrap:pretty}.sheet__top{align-items:flex-start}.close-btn{--close:24px;margin-top:-1.5px}.close-btn img{width:9px;height:9px}.case-figure__zoom{border-radius:14px;overflow:hidden}.btn,.btn--red,.btn--green,.btn--outline-light{height:44px}.social{width:40px;height:40px}.social-rail,.social-row{gap:8px}.social:before{content:"";position:absolute;inset:-2px}button.filter-chip{height:32px;padding:0 14px;position:relative}button.filter-chip:before{content:"";position:absolute;inset:-7px 0}.sort-bar__chips{gap:8px 4px}.brand{position:relative}.brand:before{content:"";position:absolute;inset:-12px -6px}.email-pill a.email{padding-block:14px}.card--compact .card__desc{line-height:1.4}.card-grid--extras{grid-template-columns:repeat(2,minmax(0,1fr))}.footer__cta p{max-width:340px}.hero__title .eyebrow{font-size:32px}.hero__title .headline{font-size:48px}.about-hero{gap:40px}.skills-block__cols{gap:32px}}@media (width<=760px){:root{--gutter:20px}.t-60,.hero__title .headline{font-size:40px}.t-40,.hero__title .eyebrow{font-size:28px}.hero__lead,.t-24-regular{font-size:20px}.hero__title span,.hero__lead{text-wrap:balance}@media (width<=379px){.hero__lead br{display:none}}.nav__inner{flex-wrap:wrap;gap:12px;padding-block:16px}.nav__right{justify-content:space-between;gap:16px;width:100%}.nav__links{gap:24px}.brand{gap:10px;font-size:18px}.brand img{width:24px;height:auto}html.js .nav__inner{flex-wrap:nowrap;padding-block:10px}html.js .nav__toggle{display:inline-flex}html.js .nav__right{width:auto;padding:4px var(--gutter) 24px;background:var(--white);border-bottom:1px solid var(--light-grey);visibility:hidden;opacity:0;transition:opacity .2s ease, transform .25s var(--ease-out), visibility 0s linear .25s;flex-direction:column;align-items:stretch;gap:20px;position:absolute;top:100%;left:0;right:0;transform:translateY(-8px);box-shadow:0 24px 32px -24px #242c3e59}html.js .nav.is-open .nav__right{visibility:visible;opacity:1;transition-delay:0s;transform:none}html.js .nav__links{flex-direction:column;align-items:stretch;gap:0;padding-top:0}html.js .nav__links .u-link{font-size:var(--fs-body);border-bottom:1px solid var(--light-grey);padding:14px 0;display:flex}html.js .nav__links .u-link:after{display:none}html.js .nav__right .btn{width:100%;height:48px}html.js .nav__links .u-link{text-align:center;align-items:center}@media (width>=560px){html.js .nav__right{left:auto;right:var(--gutter);border:1px solid var(--light-grey);border-radius:16px;width:260px;padding:4px 20px 20px;top:calc(100% + 8px);box-shadow:0 18px 40px -14px #242c3e59}}@media (width<=480px){.hero__actions .btn{flex:auto}}.stack{padding-block:40px}.section{padding-block:48px;scroll-margin-top:64px}.section__head{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:28px}.section__head>.btn--outline{height:auto;color:var(--grey-text);text-underline-offset:5px;background:0 0;border:0;border-radius:0;gap:8px;padding:0;font-weight:600;line-height:1.3;text-decoration:underline 1px;transition:color .15s;position:relative}.section__head>.btn--outline .btn__icon img{opacity:.6;transition:opacity .15s}.section__head>.btn--outline:hover,.section__head>.btn--outline:active{color:var(--dark-blue);background:0 0}.section__head>.btn--outline:hover .btn__icon img,.section__head>.btn--outline:active .btn__icon img{opacity:1}.section__head>.btn--outline:before{content:"";position:absolute;inset:-12px -8px}.page-head__copy{padding-block:40px 24px}.page-head{gap:16px}.page-head__art{flex:none;padding-top:20px}.page-head__art img{aspect-ratio:1;width:clamp(52px,17vw,66.67px);height:auto}.sort-bar__row{flex-direction:column;align-items:flex-start}.about-hero{padding-block:40px}@media (width<=639px){.about-hero{flex-direction:column}.about-hero__side{align-self:center;width:min(340px,100%)}.about-hero__name p,.about-hero__intro>.filter-chip{display:none}.about-hero__actions{flex-wrap:wrap;justify-content:flex-start}@media (width<=480px){.about-hero__actions .btn{flex:1 1 0;min-width:0;padding:0 14px}}}.timeline{flex-direction:column;gap:24px}.timeline__label{width:auto}.skills-block__cols{flex-direction:column}.footer{padding-block:48px}.footer__top{gap:24px;min-height:0}.email-pill{gap:16px}.gallery__slide{object-position:var(--focus-phone,var(--focus,50% 50%))}.sheet__head{padding:24px 20px 12px}.sheet__title{font-size:28px}.sheet__body{padding:4px 20px 0}.sheet__body--last{padding-bottom:28px}.sheet__foot{padding:28px 20px}.case-lead{flex-direction:column}.case-lead__divider{width:100%;height:1px}.gallery{height:260px}.lightbox__stage{padding:72px 12px 88px}.lightbox__nav{top:auto;bottom:24px}}@media (width<=660px){.project-dialog[open]{align-items:flex-end;display:flex;overflow:clip}.sheet{--sheet-radius:28px;--sheet-top:max(10dvh, 76px);width:100%;height:auto;max-height:calc(100dvh - var(--sheet-top));overscroll-behavior:contain;min-height:0;margin:0 auto;animation:.28s cubic-bezier(.33,1,.68,1) both sheet-in-up;overflow-y:auto}}@media (width>=661px) and (width<=960px){.project-dialog.is-sheet[open]{align-items:flex-end;display:flex;overflow:clip}.project-dialog.is-sheet .sheet{--sheet-top:max(8dvh, 108px);width:min(864px,100%);height:auto;max-height:calc(100dvh - var(--sheet-top));overscroll-behavior:contain;min-height:0;margin:0 auto;animation:.28s cubic-bezier(.33,1,.68,1) both sheet-in-up;overflow-y:auto}}@media (width>=661px) and (width<=760px){.project-dialog.is-sheet .sheet{--sheet-top:max(10dvh, 76px)}}@media (width<=679px){.case-section--side{flex-direction:column;display:flex}.case-split{flex-direction:column;gap:24px;display:flex}.case-split .case-figure{width:min(100%,252px)}.case-section--side .case-figure{width:100%;margin-top:8px}.case-figure{margin-inline:auto}}@media (height<=500px){.nav{position:relative}.section{scroll-margin-top:0}.sheet__head{gap:8px;padding-top:12px;padding-bottom:8px}.sheet__title{font-size:24px}}@media (height<=500px) and (width>=661px){.sheet{min-height:calc(100% - 16px);margin-top:16px}}@media (height<=500px) and (width<=660px){.sheet{--sheet-top:20px}}@media (width>=560px) and (width<=680px){.card__body{padding:18px}.card__title{font-size:21px}}@media (width<=640px){.footer{padding-block:48px 33px}.footer__top{--u:min(48px, calc((100vw - 56px) / 6.55));--s:calc(var(--u) * .8875 - 2.5px);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title social""lead lead""hello hello""resume resume";align-items:start;gap:0 16px;min-height:0;display:grid}.footer__cta,.footer__aside,.footer__aside-bottom{display:contents}.footer__cta h2{font-size:var(--u);grid-area:title}.footer__cta p{text-wrap:balance;grid-area:lead;max-width:none;margin-top:32px}.footer__logo{display:none}.social-row{grid-area:social;grid-template-columns:repeat(2, var(--s));gap:5px;display:grid}.social-row .social{width:var(--s);height:var(--s)}.social-row .social:before{inset:min(-2px, calc((44px - var(--s)) / -2))}.email-pill{--pill-fs:max(12px, min(14.5px, calc((100vw - 40px) / 23.6)));width:100%;font-size:var(--pill-fs);border-radius:1.236em;grid-area:hello;justify-content:space-between;align-items:center;gap:1.04em;margin-top:47px;padding:.52em .65em .52em 1.3em;display:flex}.email-pill a.email{overflow-wrap:anywhere;flex:auto;min-width:0;padding:0;font-size:1em;line-height:1.226;position:relative}.email-pill .btn--green{border-radius:.78em;flex:none;height:2.862em;padding:0 1.431em;font-size:1em;position:relative}.email-pill a.email:before{content:"";position:absolute;inset:-15px -6px}.email-pill .btn--green:before{content:"";position:absolute;inset:-6px -4px}.footer__aside .btn--outline-light{grid-area:resume;height:48px;margin-top:10px}.footer__bottom{gap:11px;padding-block:7px}.footer__row{align-items:center}.footer__nav{display:none}.footer__logo-small{flex:none;width:33px;height:auto;display:block}}@media (width<=349px){.email-pill{gap:.7em;padding-left:1em}.email-pill .btn--green{padding-inline:1.15em}}@media (width<=559px){.hero__row{flex-direction:column}.hero__copy{padding-block:40px 16px}.social-rail{flex-direction:row;justify-content:flex-end;padding-block:0 40px}.card-grid,.card-grid--extras{grid-template-columns:minmax(0,1fr)}.stack__head img{width:56px;height:56px}}@media (hover:none),(pointer:coarse){.u-link{position:relative}.u-link:before{content:"";position:absolute;inset:-12px -8px}.btn,.btn--red,.btn--green,.btn--outline-light{min-height:44px}.brand{position:relative}.brand:before{content:"";position:absolute;inset:-12px -6px}.social{width:40px;height:40px}.social-rail,.social-row{gap:8px}.social:before{content:"";position:absolute;inset:-2px}button.filter-chip,.email-pill a.email{position:relative}button.filter-chip:before{content:"";position:absolute;inset:-11px 0}.email-pill a.email:before{content:"";position:absolute;inset:-15px 0}.close-btn{position:relative}.close-btn:before{content:"";inset:calc((44px - var(--close)) / -2);position:absolute}.gallery__nav{width:44px;height:44px}.lightbox{--lb-btn:44px}html{-webkit-tap-highlight-color:transparent}button.card:active{transform:scale(.985)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.sheet,.lightbox__stage,.card.is-entering{animation:none}*{transition-duration:.01ms!important}}:root{--ease-out:cubic-bezier(.16, 1, .3, 1)}.rise{margin-block:-.1em;padding-block:.1em;display:block;overflow:hidden}.rise>span{display:block}h1:has(>.rise),h2:has(>.rise){flex-direction:column;display:flex}@supports (text-box:trim-both cap alphabetic){.footer__cta h2{gap:calc(1.07em - 1cap)}.footer__cta h2 .rise,.page-head__copy h1 .rise,.about-hero__heading h1 .rise{margin-block:-.1em -.3em;padding-block:.1em .3em}.footer__cta h2 .rise>span,.footer__cta p,.page-head__copy h1 .rise>span,.about-hero__heading h1 .rise>span{text-box:trim-both cap alphabetic}.about-hero__bio p:first-child{text-box:trim-start cap alphabetic}.about-hero__bio p:last-child{text-box:trim-end cap alphabetic}}@media screen and (prefers-reduced-motion:no-preference){html.js [data-reveal=rise]>span{transform:translateY(calc(100% + .4em))}html.js [data-reveal=rise].is-in>span{transition:transform 1.05s var(--ease-out) var(--d,0s);transform:none}html.js [data-reveal=fade]{opacity:0}html.js [data-reveal=fade].is-in{opacity:1;transition:opacity .9s var(--ease-out) var(--d,0s)}html.js .card[data-reveal=photo] .card__photo,html.js .portrait[data-reveal=photo]{opacity:0}html.js .card[data-reveal=photo] .card__photo img,html.js .portrait[data-reveal=photo] img{scale:1.1}html.js .card[data-reveal=photo] .card__body{opacity:0}html.js .card[data-reveal=photo].is-in .card__photo,html.js .portrait[data-reveal=photo].is-in{opacity:1;transition:opacity 1s var(--ease-out) var(--d,0s)}html.js .card[data-reveal=photo].is-in .card__photo img{transition:scale 1.6s var(--ease-out) var(--d,0s), transform .4s ease;scale:1}html.js .portrait[data-reveal=photo].is-in img{transition:scale 1.6s var(--ease-out) var(--d,0s);scale:1}html.js .card[data-reveal=photo].is-in .card__body{opacity:1;transition:opacity .8s var(--ease-out) calc(var(--d,0s) + .2s)}html.js .entry[data-reveal=entry] .entry__marker{scale:0}html.js .entry[data-reveal=entry] .entry__content{opacity:0}html.js .entry[data-reveal=entry]:before{transform-origin:top;transform:scaleY(0)}html.js .entry[data-reveal=entry].is-in .entry__marker{transition:scale .6s var(--ease-out) var(--d,0s);scale:1}html.js .entry[data-reveal=entry].is-in .entry__content{opacity:1;transition:opacity .9s var(--ease-out) calc(var(--d,0s) + .12s)}html.js .entry[data-reveal=entry].is-in:before{transition:transform 1.2s var(--ease-out) calc(var(--d,0s) + .18s);transform:none}}
