@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff")}:root{font-family:Inter,Arial,sans-serif;color:#f2f3f5;background:#14212e;color-scheme:dark;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;scroll-behavior:smooth;scroll-padding-top:110px}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,summary{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit;border:0;background:transparent}button,a,input,summary{-webkit-tap-highlight-color:transparent}:is(button,a,summary,input):focus-visible{outline:2px solid #e4cfab;outline-offset:5px}svg{flex-shrink:0}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3{font-weight:600}p{line-height:1.8}.site{--ink:#14212e;--text:#f2f3f5;--muted:#b1bdc9;--gold:#d8bd93;--line:rgba(194,207,220,.17);background:var(--ink);color:var(--text);min-height:100vh;transition:background-color .18s linear}.container,.header-inner{width:min(1120px,calc(100% - 96px));margin-inline:auto}.skip{position:fixed;top:12px;left:12px;padding:12px 18px;z-index:20;background:#e4cfab;color:#232019;transform:translateY(-160%);border-radius:4px}.skip:focus{transform:translateY(0)}.header{position:sticky;top:0;z-index:10;background:var(--ink);border-bottom:1px solid var(--line);transition:background-color .18s linear}.header-inner{min-height:88px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-size:1.55rem;letter-spacing:-.06em;font-weight:600;padding-block:12px}.navigation{display:flex;gap:28px;align-items:center}.navigation a{position:relative;display:inline-flex;min-height:44px;align-items:center;font-size:.875rem;color:var(--muted);transition:color .2s}.navigation a:after{content:"";position:absolute;left:0;right:0;bottom:7px;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .25s}.navigation a:hover,.navigation a:focus-visible{color:var(--text)}.navigation a:hover:after,.navigation a:focus-visible:after{transform:scaleX(1)}.controls{display:flex;align-items:center;gap:20px}.languages{display:flex;align-items:center;color:var(--muted);font-size:.75rem}.languages button{padding:12px 5px;min-height:44px;font-size:.75rem}.languages button[aria-pressed=true]{color:var(--gold);font-weight:600}.languages span{opacity:.45}.cv-short{display:none}.hero{display:grid;grid-template-columns:1.55fr 1fr;align-items:center;gap:60px;padding:84px 0 72px}.eyebrow{font-size:.75rem;letter-spacing:.15em;font-weight:500;color:var(--gold);line-height:1.75;margin:0 0 16px}h1{font-size:clamp(2.65rem,5vw,4rem);letter-spacing:-.04em;line-height:1.14;margin-bottom:16px}.role{font-size:1.375rem;line-height:1.55;color:#d7dfe7;margin-bottom:24px}.role span{color:var(--gold);white-space:nowrap}.lead{font-size:1rem;color:var(--muted);max-width:540px;margin-bottom:30px}.focus{border-left:1px solid var(--line);padding:8px 0 8px 32px}.focus p:not(.eyebrow){font-size:1.2rem;color:#dce3eb;line-height:1.7;margin:0}.focus .location{font-size:.8125rem!important;color:var(--muted)!important;margin-top:24px!important}.actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.button{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;justify-content:center;align-items:center;min-height:46px;padding:12px 20px;border-radius:5px;border:1px solid var(--line);font-size:.875rem;font-weight:500;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;white-space:nowrap}.button>span{position:relative;z-index:2;display:flex;align-items:center;gap:10px}.button svg{transition:transform .22s ease}.primary{color:#232019;border-color:#d8bd93;background:linear-gradient(115deg,#cba775,#e4cfab 55%,#cfaf7e);background-size:200% 100%;background-position:0 0;transition:transform .22s,box-shadow .22s,background-position .4s}.ring{border-color:#d8bd935e}.ring:before{content:"";position:absolute;top:-200%;right:-200%;bottom:-200%;left:-200%;z-index:0;opacity:0;background:conic-gradient(from 0deg,transparent 0deg,transparent 250deg,rgba(216,189,147,.1) 285deg,#d8bd93 315deg,#f7e8c9 330deg,transparent 360deg);animation:ring-turn 5s linear infinite;animation-play-state:paused;transition:opacity .2s}.ring:after{content:"";position:absolute;top:1px;right:1px;bottom:1px;left:1px;z-index:1;background:var(--ink);border-radius:4px}.ring:is(:hover,:focus-visible):before{opacity:.8;animation-play-state:running}.button:is(:hover,:focus-visible){transform:translateY(-2px);box-shadow:0 5px 17px #00000026}.primary:is(:hover,:focus-visible){background-position:100% 0;box-shadow:0 5px 18px #d8bd9317}.button:is(:hover,:focus-visible) svg{transform:translate(2px)}@keyframes ring-turn{to{transform:rotate(360deg)}}.section{padding:56px 0;border-top:1px solid var(--line);scroll-margin-top:20px}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:32px}.section-heading .eyebrow{margin-bottom:10px}h2{font-size:2rem;line-height:1.25;letter-spacing:-.025em;margin:0}.section-heading>p{font-size:.875rem;color:var(--muted);max-width:240px;margin:0}.project{display:grid;grid-template-columns:38px minmax(0,1fr);gap:24px;padding:34px 0;border-top:1px solid var(--line)}.project-number{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:#d8bd9317;border-radius:4px;color:var(--gold);font-size:.8125rem}.project-title{display:flex;justify-content:space-between;align-items:baseline;gap:20px}h3{font-size:1.5rem;letter-spacing:-.02em;line-height:1.35;margin:0 0 14px}.project-type{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.project-description{color:#d7dfe7;font-size:1rem;margin:0;max-width:780px}.project-bottom{display:flex;justify-content:space-between;align-items:center;gap:22px;flex-wrap:wrap;margin-top:24px}.contribution{color:var(--muted);font-size:.8125rem}.project-links{display:flex;flex-wrap:wrap;gap:22px}.text-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0;font-size:.875rem;position:relative;transition:color .2s;color:var(--muted)}.text-link:hover,.text-link:focus-visible{color:var(--gold)}.text-link svg{transition:transform .22s}.motion .text-link:is(:hover,:focus-visible) svg{transform:translate(2px,-1px)}.project-links .text-link:first-child{color:var(--gold)}.case-study{margin-top:8px}.case-study summary,.other-work summary{display:flex;align-items:center;gap:10px;min-height:44px;width:fit-content;list-style:none;color:var(--muted);font-size:.8125rem}.case-study summary::-webkit-details-marker,.other-work summary::-webkit-details-marker{display:none}.case-study[open]>summary svg,.other-work[open]>summary svg{transform:rotate(180deg)}.case-content{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:20px 0 0;padding-left:20px;border-left:1px solid var(--line)}.case-content>div:last-child{grid-column:1/-1}.case-content h4{font-size:.875rem;margin:0 0 6px;font-weight:500;color:var(--gold)}.case-content p{font-size:.875rem;color:var(--muted);margin:0}.other-work{border-top:1px solid var(--line);padding-top:14px}.other-links{display:grid;grid-template-columns:1fr 1fr;gap:12px 32px;padding:16px 0}.other-links a{justify-content:space-between}.other-links small{display:block;font-size:.75rem;color:var(--muted);margin:6px 0}.more-github{margin-top:16px}.job{display:grid;grid-template-columns:1fr auto;gap:36px;padding:24px 0;border-top:1px solid var(--line)}.job h3{font-size:1.25rem;margin-bottom:8px;color:var(--gold)}.company{color:#d7dfe7;font-size:.875rem;margin-bottom:8px}.job-description{font-size:.875rem;color:var(--muted);margin:0;max-width:730px}.date{font-size:.8125rem;line-height:1.7;color:var(--muted);white-space:nowrap}.contact{padding:64px 0 40px}.contact h2{font-size:clamp(1.8rem,3.5vw,2.6rem);max-width:760px;margin-bottom:20px}.contact>p:not(.eyebrow){color:var(--muted);font-size:1rem;max-width:670px;margin-bottom:26px}.email{margin-top:20px;overflow-wrap:anywhere}.footer{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:28px 0 38px;color:var(--muted);font-size:.8125rem}.footer>div{display:flex;align-items:center;gap:26px}.footer .text-link{font-size:.8125rem}.still{--ink:#14212e!important;transition:none}.still *,.still *:before,.still *:after{animation:none!important;transition:none!important}.still .button{transform:none!important;box-shadow:none!important}.still .ring:before{opacity:0!important}:root[data-motion=off]{scroll-behavior:auto}@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.button{transform:none!important}.ring:before{opacity:0!important}}.demo-dialog{width:min(740px,calc(100% - 32px));max-height:85vh;border:1px solid rgba(194,207,220,.25);border-radius:10px;padding:28px;background:#161b23;color:#f2f3f5;box-shadow:0 24px 100px #0008}.demo-dialog::backdrop{background:#050a10bf;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.dialog-head .eyebrow{margin:0}.icon-button{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border-radius:4px}.tabs{display:flex;gap:8px;flex-wrap:wrap;border-bottom:1px solid #ffffff20;margin-bottom:26px}.tabs button{min-height:44px;padding:10px 16px;color:#b1bdc9;border-bottom:2px solid transparent}.tabs button[aria-selected=true]{color:#d8bd93;border-color:#d8bd93}.demo-content{font-size:1rem}.demo-content p{color:#b1bdc9}.demo-content a{display:inline-flex;gap:8px;align-items:center;min-height:44px;color:#d8bd93;font-size:.875rem}.demo-content pre{overflow:auto;background:#111720;border:1px solid #ffffff14;border-radius:5px;padding:18px;font-size:.8125rem;line-height:1.7}.test-step{border-top:1px solid #ffffff20}.test-step summary{display:flex;align-items:center;gap:10px;min-height:50px;list-style:none}.test-step small{margin-left:auto;color:#9ed3b0}.test-step>p{font-size:.875rem}.request-line{display:flex;align-items:center;gap:14px;padding:18px 0;flex-wrap:wrap}.request-line strong{color:#9ed3b0}.validation{display:flex;align-items:center;gap:10px}.validation svg{color:#9ed3b0}.mark-form{margin:24px 0 54px}.mark-form label{display:block;margin-bottom:10px}.mark-target{position:relative}.mark-target input{width:100%;background:#111720;color:#f2f3f5;padding:14px;border:1px solid #ffffff30;border-radius:5px}.mark-target.marked input{outline:2px solid #d8bd93;outline-offset:4px}.mark-caption{position:absolute;top:calc(100% + 12px);left:0;color:#d8bd93;font-size:.8125rem}.fineprint{font-size:.8125rem}@media(max-width:1000px){.container,.header-inner{width:calc(100% - 64px)}.navigation{gap:20px}.controls{gap:14px}.hero{gap:36px}.focus{padding-left:24px}.role{font-size:1.2rem}.project-bottom{gap:10px}.project-links{gap:16px}.section-heading>p{max-width:190px}}@media(max-width:760px){.container,.header-inner{width:calc(100% - 40px)}.header-inner{flex-wrap:wrap;gap:0 16px;padding-top:12px;padding-bottom:8px}.navigation{order:3;flex-basis:100%;justify-content:space-between;margin-top:4px}.controls{margin-left:auto}.header-cv{padding:10px 12px;font-size:.8125rem}.hero{display:block;padding:44px 0 40px}.hero .eyebrow{font-size:.75rem;letter-spacing:.11em}.hero h1{font-size:2.65rem}.role{font-size:1.125rem}.focus{border:0;padding:0;margin-top:30px}.focus .eyebrow{display:none}.focus p:not(.eyebrow){font-size:.875rem}.focus .location{margin-top:12px!important}.section{padding:36px 0}.section-heading{margin-bottom:24px}.section-heading>p{display:none}h2{font-size:1.6rem}.project{grid-template-columns:28px minmax(0,1fr);gap:14px;padding:26px 0}.project-number{width:27px;height:29px;font-size:.75rem}.project-title{display:block}.project h3{font-size:1.35rem;margin-bottom:8px}.project-type{display:block;margin-bottom:14px;font-size:.75rem;letter-spacing:.035em}.project-description{font-size:.9375rem}.project-bottom{display:block;margin-top:16px}.project-links{margin-top:10px;gap:4px 18px}.project-links .text-link{font-size:.8125rem}.case-content{grid-template-columns:1fr;padding-left:14px;gap:18px}.case-content>div:last-child{grid-column:auto}.job{grid-template-columns:1fr;gap:10px}.date{grid-row:1}.contact{padding-top:42px}.contact h2{max-width:430px}.footer{align-items:flex-start;flex-direction:column;gap:8px;padding-bottom:28px}.footer>div{flex-wrap:wrap;gap:10px 24px}.email{font-size:.8125rem}.other-links{grid-template-columns:1fr}.demo-dialog{padding:20px}}@media(max-width:390px){.container,.header-inner{width:calc(100% - 32px)}.cv-full{display:none}.cv-short{display:inline}.hero h1{font-size:2.4rem}.role{font-size:1rem}.hero .eyebrow{font-size:.75rem;letter-spacing:.06em}.button{padding:12px 16px}.header-cv{padding:10px 12px}.controls{gap:10px}.project-links{gap:2px 16px}}@media(pointer:coarse){.languages button{min-width:44px}.controls{gap:10px}}@media(max-width:760px){.navigation{flex-wrap:wrap}}:root{scroll-padding-top:var(--scroll-offset,110px)}.site{--ink:#122334}.controls{gap:12px}.header-motion{color:var(--gold);border:1px solid var(--line);width:44px}.header-motion:is(:hover,:focus-visible){background:#d8bd931a;border-color:#d8bd938c}.header-motion:disabled{opacity:.5;cursor:default}.navigation a[aria-current=location]{color:var(--gold)}.navigation a[aria-current=location]:after{transform:scaleX(1);height:2px}.mobile-location{display:none}.section{position:relative}.section:before{content:"";position:absolute;top:-1px;left:0;width:min(220px,35%);height:1px;background:linear-gradient(90deg,var(--gold),rgba(216,189,147,0));transform-origin:left}.motion .section:has(.section-heading[data-entered=true]):before,.motion .contact[data-entered=true]:before{animation:draw-divider .65s cubic-bezier(.2,.65,.3,1) both}@keyframes draw-divider{0%{transform:scaleX(.05);opacity:.2}to{transform:scaleX(1);opacity:1}}.project{padding:38px 0;gap:24px}.featured-project{padding-top:24px}.featured-project h3{font-size:1.75rem}.project-title{margin-bottom:18px}.project-title h3{margin:0}.project-showcase{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:36px;align-items:center}.project-result{margin-top:22px}.project-result .eyebrow{display:block;font-size:.6875rem;letter-spacing:.12em;margin-bottom:8px}.project-result p{display:flex;gap:9px;color:var(--muted);font-size:.875rem;line-height:1.7;margin-bottom:12px}.project-result svg{color:var(--gold);margin-top:3px}.example-link{color:var(--gold);font-weight:500}.project-preview{margin:0;min-width:0;border:1px solid rgba(216,189,147,.24);border-radius:8px;overflow:hidden;background:#111b27;box-shadow:0 10px 34px #0002;transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease}.project-preview{display:block}.project-preview figure{margin:0}.project-preview img{display:block;width:100%;height:auto;aspect-ratio:auto;object-fit:contain;object-position:top}.project-preview figcaption{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 15px;color:var(--muted);font-size:.75rem;line-height:1.5;border-top:1px solid var(--line)}.project-preview figcaption svg{color:var(--gold)}.project-preview:is(:hover,:focus-within){border-color:#d8bd93b8;transform:translateY(-3px);box-shadow:0 8px 30px #d8bd9314}:is(.case-study,.other-work)>summary{padding:8px 10px;margin-inline:-10px;border-radius:4px;transition:color .2s,background-color .2s}:is(.case-study,.other-work)>summary svg{transition:transform .25s ease}:is(.case-study,.other-work)>summary:is(:hover,:focus-visible),:is(.case-study,.other-work)[open]>summary{color:var(--gold);background:#d8bd9312}.test-step>summary{transition:color .2s,background-color .2s}.test-step>summary:is(:hover,:focus-visible),.test-step[open]>summary{color:var(--gold);background:#d8bd930d}.project-preview figcaption svg{transition:transform .25s ease}.motion .project-preview:is(:hover,:focus-visible) figcaption svg{transform:translate(2px,-1px)}.project-bottom{margin-top:18px}.project-links .text-link:first-child{color:var(--muted)}.project-links .text-link:first-child:is(:hover,:focus-visible){color:var(--gold)}.ring:before{animation:none;opacity:0;transition:opacity .2s;background:conic-gradient(from 0deg,transparent 0deg,transparent 235deg,rgba(216,189,147,.2) 275deg,#e4cfab 310deg,#fff3db 332deg,transparent 360deg)}.motion .ring:before{animation:ring-turn 3.8s linear infinite;animation-play-state:paused}.motion .ring:is(:hover,:focus-visible):before{opacity:1;animation-play-state:running}.ring:is(:hover,:focus-visible){border-color:#d8bd93c7}.motion .primary:is(:hover,:focus-visible){animation:gold-flow 3.6s ease-in-out infinite alternate}@keyframes gold-flow{0%{background-position:0 0}to{background-position:100% 0}}.primary:before{content:"";position:absolute;top:-30%;right:-70%;bottom:-30%;left:-70%;z-index:1;background:linear-gradient(110deg,transparent 35%,#fff7e744 48%,#fff7e780 50%,transparent 65%);transform:translate(-100%);pointer-events:none}.motion .primary:is(:hover,:focus-visible):before{animation:button-sweep 1.4s ease 1}.motion .welcome-button:before{animation:button-sweep 1.6s ease .35s 1}@keyframes button-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}.still .project-preview{transform:none!important;box-shadow:none!important}.still .section:before{transform:none;opacity:1}.demo-content[hidden]{display:none}.tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;flex-wrap:nowrap}.tabs button{padding:12px 6px;min-width:0;font-size:.9375rem}@media(max-width:1000px){.project-showcase{gap:24px}.project-title{display:block}.project-title h3{margin-bottom:8px}.project-type{display:block}.cv-full{display:none}.cv-short{display:inline}.header-cv{padding:10px 12px}}@media(max-width:760px){.hero{padding-bottom:30px}.focus{display:none}.mobile-location{display:block;font-size:.8125rem;color:var(--muted);margin:22px 0 0;line-height:1.6}.project{gap:12px;padding:28px 0}.featured-project{padding-top:20px}.featured-project h3{font-size:1.5rem}.project-showcase{grid-template-columns:1fr;gap:18px}.project-title{margin-bottom:14px}.project-type{margin-bottom:0}.project-result{margin-top:16px}.project-result p{font-size:.875rem}.project-preview figcaption{padding:10px 12px}.project-bottom{margin-top:16px}.project-links{gap:4px 16px}.controls{gap:8px}.tabs button{font-size:.8125rem;padding:12px 3px}}@media(max-width:390px){.controls{gap:6px}.header-inner{column-gap:8px}.header-cv{padding:10px}.brand{font-size:1.4rem}.languages button{padding-inline:4px}.project{grid-template-columns:1fr}.project-number{margin-bottom:0}.project-preview{border-radius:6px}}@media(prefers-reduced-motion:reduce){.project-preview{transform:none!important;box-shadow:none!important}.section:before{transform:none!important;opacity:1!important}.primary:before{display:none}}
