@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@300;400;500&family=DM+Sans:wght@300;400;500&family=DM+Mono:wght@400&display=swap");:root{--paper:#f5f0e8;--ink:#0a0a0a;--accent:#c84b31;--muted:#8a8070;--serif:"Cormorant Garamond",Georgia,serif;--sans:"DM Sans",Arial,sans-serif;--mono:"DM Mono",monospace;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:106px}body{margin:0;background:var(--paper);color:var(--ink);font:300 16px/1.65 var(--sans);overflow-x:clip}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::-moz-selection{background:var(--accent);color:var(--paper)}::selection{background:var(--accent);color:var(--paper)}.container{max-width:1280px;padding-left:48px;padding-right:48px;margin-left:auto;margin-right:auto}.section{padding-top:112px;padding-bottom:112px}.section-label{font:400 12px/1.6 var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}.accent,em{color:var(--accent)}em{font-style:normal;font-weight:300}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:300;letter-spacing:-.04em}h2{font-size:clamp(40px,6vw,72px);line-height:.95;margin-bottom:32px}h3{font-size:40px;line-height:1.1;margin-bottom:0}header{position:fixed;top:0;left:0;width:100%;z-index:20;background:#f5f0e8eb;border-bottom:1px solid transparent;transition:border-color .25s;backdrop-filter:blur(12px)}body.scrolled header{border-bottom-color:#0a0a0a15}.header-inner{height:100px;padding:20px 48px;max-width:1280px;margin:auto;display:flex;justify-content:space-between;align-items:center;gap:24px}.logo{display:block;-o-object-fit:contain;object-fit:contain;width:48px;height:48px}nav{display:flex;gap:40px}nav a{font:12px var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--muted);transition:color .2s}nav a:hover,nav a[aria-current]{color:var(--accent)}.outline-button,.solid-button{display:inline-flex;align-items:center;justify-content:center;gap:18px;font:12px/1.5 var(--mono);letter-spacing:.14em;text-transform:uppercase;padding:14px 24px;border:1px solid var(--ink);transition:color .25s,background .25s}.outline-button{background:transparent}.outline-button:hover,.solid-button{background:var(--ink);color:var(--paper)}.solid-button{padding:16px 32px}.solid-button:hover{background:var(--accent);border-color:var(--accent)}.solid-button span{font-size:19px;line-height:1}.underlined{border-bottom:1px solid var(--ink);color:var(--ink);padding-bottom:2px}.hero{position:relative;min-height:100svh;padding-top:128px;padding-bottom:64px;display:flex;flex-direction:column;justify-content:flex-end}.hero-index{position:absolute;right:48px;top:132px}.hero-rule{position:absolute;left:48px;top:128px;bottom:64px;width:1px;background:#0a0a0a12;transform-origin:top}.availability{display:flex;align-items:center;gap:9px;margin-bottom:48px}.availability>span{height:8px;width:8px;border-radius:50%;background:#77c38f}h1{font-size:clamp(56px,12vw,160px);line-height:.87;margin:0;letter-spacing:-.055em}.name-line{display:block;padding-bottom:.075em;margin-bottom:-.025em;overflow:visible}.name-line>span{display:block;transform-origin:left bottom;will-change:transform;backface-visibility:hidden}.hero-details{display:flex;justify-content:space-between;align-items:end;gap:32px;margin-top:32px}.hero-details>p{font-size:18px;line-height:1.65;max-width:448px;color:var(--muted);margin-bottom:0}.location{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.location>span:last-child{font:300 24px/1.3 var(--serif)}.hero-actions{display:flex;align-items:center;gap:24px;margin-top:56px}.android-figure{position:absolute;right:16px;top:140px;width:44%;height:450px;margin:0;z-index:1}.android-canvas{width:100%;height:calc(100% - 35px);pointer-events:none;display:grid;place-items:center}.android-canvas canvas{display:block;width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none}.android-canvas canvas:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.android-credit{font-size:12px;line-height:1.5;text-align:center;color:var(--muted);padding:0 14px}.android-credit a{text-decoration:underline;text-underline-offset:3px}.android-fallback{-o-object-fit:contain;object-fit:contain;opacity:.65}.model-fallbacks{display:flex;align-items:center;justify-content:center;gap:16px;width:100%}.model-fallbacks img{width:40%;height:auto;max-height:180px}.marquee{background:var(--ink);color:var(--paper);padding:17px 0;overflow:hidden}.marquee-track{display:flex;align-items:center;width:-moz-max-content;width:max-content;will-change:transform;gap:0;animation:marquee-loop 32s linear infinite}.marquee span{font:12px var(--mono);letter-spacing:.15em;text-transform:uppercase;opacity:.7}.marquee i{font-style:normal;color:var(--accent)}.marquee-group{display:flex;flex-shrink:0;align-items:center;justify-content:space-around;min-width:100vw}.marquee-item{display:inline-flex;align-items:center;gap:48px;padding-right:48px}.about{display:grid;grid-template-columns:1fr 1fr;gap:96px}.rule-label{display:flex;align-items:center;gap:16px;margin-bottom:24px}.rule-label:after{content:"";height:1px;background:#0a0a0a15;flex:1;max-width:420px;transform-origin:left}.body-copy{color:var(--muted);line-height:1.65}.body-copy p{margin-bottom:20px}.about-copy>.outline-button{margin-top:20px}.stats{display:grid;grid-template-columns:1fr 1fr;align-self:stretch;gap:1px;background:#0a0a0a15}.stat{background:var(--paper);padding:32px;display:flex;flex-direction:column;justify-content:space-between;gap:50px;min-height:220px}.stat strong{font:300 64px/1 var(--serif)}.stat .section-label{font-size:12px}.work{position:relative}.work-stage{padding-top:75px;padding-bottom:50px}.work-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:36px}.work-heading h2{margin-bottom:0}.work-heading .rule-label{margin-bottom:18px}.work-heading .rule-label:after{width:96px;transform:none}.work-position{text-align:right}.work-controls{display:flex;gap:8px;margin-top:14px;justify-content:flex-end}.work-controls button{background:transparent;width:38px;height:38px;border:1px solid #0a0a0a40;font-size:19px;transition:background .2s,color .2s}.work-controls button:hover{background:var(--ink);color:var(--paper)}.work-controls button:disabled{opacity:.25;cursor:default}.work-window{overflow:visible}.work-track{display:grid;gap:1px}.project-card{background:var(--paper);border:1px solid #0a0a0a20;padding:40px;display:flex;gap:48px;scroll-margin-top:130px;transition:background-color .5s,color .5s,border-color .5s}.project-card:hover{border-color:var(--ink)}.project-meta{display:flex;flex-direction:column;min-width:90px;gap:3px}.project-body{flex:1;min-width:0;display:flex;flex-direction:column}.project-links{display:flex;align-items:flex-end;gap:16px;margin-top:auto}.project-links .tags{flex:1;min-width:0}.project-repository img{display:block;filter:brightness(0)}.project-card:is(:hover,:focus-within) .project-repository img{filter:brightness(0) invert(1)}.project-logo-round{border-radius:50%}.project-logo{display:block;width:112px;height:112px;-o-object-fit:contain;object-fit:contain;margin-top:18px;flex-shrink:0}.project-top{display:flex;align-items:start;justify-content:space-between;gap:24px;margin-bottom:20px}.project-top .section-label{display:block;margin-bottom:10px}.github-link{display:grid;place-items:center;border:1px solid var(--ink);width:36px;height:36px;flex-shrink:0;font-size:24px;line-height:1}.github-link:hover{color:var(--accent);border-color:var(--accent)}.github-link.project-repository{width:50px;height:50px}.project-body>p{color:var(--muted);max-width:610px;margin-bottom:26px}.tags{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px}.tags li{font:12px/1.5 var(--mono);letter-spacing:.07em;text-transform:uppercase;border:1px solid #0a0a0a20;color:var(--muted);padding:5px 11px}.work-timeline{height:1px;background:#0a0a0a20;position:relative;margin-top:26px}.work-timeline span{display:block;width:20%;height:2px;background:var(--accent);transform-origin:left}.skip-work{display:block;text-align:right;margin-top:14px;width:-moz-max-content;width:max-content;margin-left:auto}#project-1{--project-hover-bg:#14532d;--project-hover-text:#ecfdf5}#project-2{--project-hover-bg:#1a1a2e;--project-hover-text:#e8e0d0}#project-3{--project-hover-bg:#c84b31;--project-hover-text:#f5f0e8}#project-4{--project-hover-bg:#1e3a8a;--project-hover-text:#eff6ff}#project-5{--project-hover-bg:#b45309;--project-hover-text:#fffbeb}.project-card :is(h3,.section-label,.project-body>p,.tags li,.github-link){transition:color .5s,border-color .5s}.project-card:is(:hover,:focus-within){background-color:var(--project-hover-bg);color:var(--project-hover-text);border-color:var(--project-hover-bg)}.project-card:is(:hover,:focus-within) .github-link,.project-card:is(:hover,:focus-within) h3{color:var(--project-hover-text)}.project-card:is(:hover,:focus-within) .section-label{color:color-mix(in srgb,var(--project-hover-text) 65%,transparent)}.project-card:is(:hover,:focus-within) .project-body>p,.project-card:is(:hover,:focus-within) .tags li{color:color-mix(in srgb,var(--project-hover-text) 85%,transparent)}.project-card:is(:hover,:focus-within) :is(.tags li,.github-link){border-color:color-mix(in srgb,var(--project-hover-text) 30%,transparent)}.project-card:is(:hover,:focus-within) .github-link:hover{border-color:var(--project-hover-text)}.skills h2{margin-bottom:50px}.skill-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:#0a0a0a15;border:1px solid #0a0a0a15}.skill{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:28px 14px;min-height:144px;background:var(--paper);text-align:center;font-size:14px}.skill img{-o-object-fit:contain;object-fit:contain;filter:grayscale(1);transition:filter .3s}.skill:hover img{filter:grayscale(0)}.api-symbol{font-size:30px;line-height:1}.contact{display:grid;grid-template-columns:1fr 1fr;gap:96px}.contact-copy>.body-copy{max-width:440px;margin-bottom:32px}.contact-detail{display:flex;flex-direction:column;gap:6px;margin-top:24px}.contact-detail>a{overflow-wrap:anywhere}.contact-detail>a:hover,.socials a:hover{color:var(--accent)}.socials{display:flex;gap:24px;margin-top:32px;font-size:14px}.contact form{align-self:center}.contact label{display:block;margin-bottom:8px}.contact input,.contact textarea{width:100%;display:block;padding:14px 16px;background:transparent;color:var(--ink);border:1px solid #0a0a0a30;margin:0 0 24px;border-radius:0}.contact input::-moz-placeholder,.contact textarea::-moz-placeholder{color:#8a807080}.contact input::placeholder,.contact textarea::placeholder{color:#8a807080}.contact textarea{resize:vertical;min-height:130px}.contact .solid-button{width:100%;justify-content:center}.form-note{font-size:12px;color:var(--muted);margin-top:12px}footer{border-top:1px solid #0a0a0a15;display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:30px;padding-bottom:30px}footer>.section-label{font-size:12px}.page-progress{position:fixed;top:0;left:0;height:2px;background:var(--accent);width:100%;transform:scaleX(0);transform-origin:left;z-index:30;pointer-events:none}.skip-link{position:fixed;top:-100px;left:20px;background:var(--ink);color:var(--paper);padding:10px 20px;z-index:50}.skip-link:focus{top:12px}.motion .reveal{opacity:0;transform:translateY(38px);transition:opacity .8s ease,transform 1s cubic-bezier(.2,.7,.15,1);transition-delay:var(--reveal-delay,0ms)}.motion .reveal.visible{opacity:1;transform:none}.motion .rule-label:after{transform:scaleX(0);transition:transform 1.15s cubic-bezier(.2,.7,.15,1)}.motion .rule-label.visible:after{transform:scaleX(1)}.motion .work-heading .rule-label:after{transform:none}.motion .name-line>span{animation:hero-in 1.3s cubic-bezier(.2,.7,.15,1) both}.motion .name-line:nth-child(2)>span{animation-delay:.13s}.motion .availability,.motion .hero-actions,.motion .hero-details{animation:fade-in 1s ease .3s both}.motion.work-motion .work{height:var(--work-height)}.motion.work-motion .work-stage{position:sticky;top:75px;height:calc(100svh - 75px);display:flex;flex-direction:column;justify-content:center;overflow:hidden;padding-top:22px;padding-bottom:25px}.motion.work-motion .work-heading{flex-shrink:0}.motion.work-motion .work-window{overflow:hidden;perspective:1200px;margin-right:-48px;padding:8px 48px 8px 0;flex-shrink:0}.motion.work-motion .work-track{display:flex;gap:28px;will-change:transform;transform-style:preserve-3d}.motion.work-motion .project-card{flex:0 0 min(830px,83%);min-height:290px;transform-origin:center;will-change:transform,opacity}.motion.work-motion .work-timeline{flex-shrink:0}.motion.work-motion .work-heading h2{font-size:clamp(40px,5vw,64px)}@keyframes hero-in{0%{transform:translateY(110%) rotate(3deg);opacity:0}to{transform:none;opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media (max-width:950px){.container,.header-inner{padding-left:32px;padding-right:32px}nav{gap:24px}.hero-rule{left:32px}.hero-index{right:32px}.about,.contact{gap:45px}.stat{padding:24px}.skill-grid{grid-template-columns:repeat(4,1fr)}.project-card{gap:24px;padding:30px}.project-meta{min-width:45px}.motion.work-motion .work-window{margin-right:-32px;padding-right:32px}.motion.work-motion .project-card{flex-basis:88%;min-height:320px}.android-figure{width:42%;right:0;top:165px;height:350px}}@media (max-width:680px){html{scroll-padding-top:90px}.container{padding-left:24px;padding-right:24px}.section{padding-top:76px;padding-bottom:76px}.header-inner{height:82px;padding:16px 24px;gap:12px}.logo{width:40px;height:40px}nav{gap:14px}nav a{font-size:12px;letter-spacing:.02em}nav a:last-child{display:none}.hire{padding:9px 10px;font-size:12px;letter-spacing:0}.hero{min-height:90svh;padding-top:138px;padding-bottom:52px}.hero-index{top:108px;right:24px}.hero-rule{left:24px;top:136px;bottom:52px}.availability{font-size:12px;margin-bottom:46px}.availability,h1{padding-left:16px}h1{font-size:clamp(62px,16vw,105px)}.hero-details{align-items:start;flex-direction:column;gap:24px;padding-left:16px}.hero-details>p{font-size:16px}.hero-actions,.location{align-items:start}.hero-actions{gap:18px;flex-direction:column;margin-top:32px;padding-left:16px}.hero-actions .solid-button{padding:14px 24px}.about,.contact{grid-template-columns:1fr;gap:42px}.stat{min-height:180px;padding:26px;gap:30px}.stat strong{font-size:54px}.work-stage{padding-top:44px;padding-bottom:36px}.work-heading{margin-bottom:28px}.work-heading h2{font-size:48px}.project-card{display:block;padding:26px}.project-meta{flex-direction:row;gap:20px;margin-bottom:18px}.project-meta:has(.project-logo){align-items:center}.project-logo{width:64px;height:64px;margin-top:0;margin-left:auto}h3{font-size:36px}.project-body>p{font-size:16px}.project-top{gap:14px}.tags li{font-size:12px;padding:4px 8px}.skill-grid{grid-template-columns:repeat(3,1fr)}.skill{font-size:14px;padding:22px 10px;min-height:136px}.contact{padding-top:50px}.contact-copy>.body-copy{max-width:none}footer{flex-wrap:wrap;padding-top:24px;padding-bottom:24px}.motion.work-motion .work-stage{top:75px;height:calc(100svh - 75px);padding-top:18px;padding-bottom:20px}.motion.work-motion .work-heading h2{font-size:44px}.motion.work-motion .work-heading{margin-bottom:20px}.motion.work-motion .work-window{margin-right:-24px;padding-right:24px}.motion.work-motion .project-card{flex-basis:100%;min-height:330px}.motion.work-motion .work-track{gap:18px}.motion.work-motion .work-heading .rule-label{margin-bottom:12px}.motion.work-motion .work-timeline{margin-top:18px}.android-figure{position:relative;top:auto;right:auto;width:100%;height:320px;margin:16px 0 -12px}.marquee-item{gap:28px;padding-right:28px}}@media (max-height:700px){.motion.work-motion .work-heading h2{font-size:40px}.motion.work-motion .work-heading{margin-bottom:15px}.motion.work-motion .project-card{min-height:0;padding:24px}.motion.work-motion .project-body>p,.motion.work-motion .project-top{margin-bottom:16px}}.motion.work-motion.work-compact .work-stage{padding-top:12px;padding-bottom:12px}.motion.work-motion.work-compact .work-heading{margin-bottom:14px}.motion.work-motion.work-compact .work-heading h2{font-size:40px}.motion.work-motion.work-compact .project-card{padding:20px;gap:20px;min-height:0}.motion.work-motion.work-compact .project-meta{min-width:64px}.motion.work-motion.work-compact .project-logo{width:64px;height:64px}.motion.work-motion.work-compact .project-body>p,.motion.work-motion.work-compact .project-top{margin-bottom:14px}.motion.work-motion.work-compact .tags{gap:6px}.motion.work-motion.work-compact .tags li{padding:4px 8px}.motion.work-motion.work-compact .work-timeline{margin-top:14px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation:none!important;transition:none!important}.motion .reveal{opacity:1;transform:none}.page-progress{display:none}.marquee-track{animation:none}}@media (max-width:380px){nav{gap:9px}nav a{font-size:12px}.header-inner{padding-left:16px;padding-right:16px}.logo{width:34px;height:34px}}@keyframes marquee-loop{to{transform:translateX(-50%)}}