@import "https://fonts.googleapis.com/css2?family=Antic&family=Fira+Code:wght@500;700&display=swap";:root{color:#f7f7f2;font-synthesis:none;background:#050505;font-family:Antic,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0}button,a{font:inherit}button{cursor:pointer;border:0}.gooey-loader{z-index:100;background:#000;animation:.62s 3.35s forwards loader-fade;position:fixed;inset:0}.gooey-loader canvas{width:100%;height:100%;display:block}.loader-label{color:#ffffff8c;letter-spacing:.18em;white-space:nowrap;font:10px/1 Fira Code,monospace;position:absolute;bottom:18%;left:50%;transform:translate(-50%)}.site-shell{background:var(--bg);min-height:100vh;color:var(--fg);--bg:#050505;--fg:#f7f7f2;--muted:#858585;--accent:#c3e41d;transition:background .45s,color .45s;overflow-x:clip}[data-theme=light] .site-shell{--bg:#f4f4ef;--fg:#111;--muted:#6d6d6a}.site-header{z-index:10;padding:25px clamp(20px,4vw,64px);position:fixed;inset:0 0 auto}.nav-wrap{justify-content:space-between;align-items:center;max-width:1500px;margin:auto;display:flex}.icon-button{color:var(--muted);background:0 0;place-items:center;padding:7px;transition:color .25s,transform .25s;display:grid}.icon-button:hover{color:var(--fg);transform:rotate(6deg)}.icon-button svg{width:30px;height:30px}.menu-area{position:relative}.menu-panel{background:color-mix(in srgb, var(--bg) 92%, transparent);border:1px solid color-mix(in srgb, var(--fg) 12%, transparent);opacity:0;pointer-events:none;transform-origin:0 0;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:12px;gap:2px;width:205px;padding:14px;transition:all .25s;display:grid;position:absolute;top:48px;left:16px;transform:translateY(-8px)scale(.97);box-shadow:0 18px 55px #0008}.menu-panel--open{opacity:1;pointer-events:auto;transform:none}.menu-panel a{color:var(--fg);letter-spacing:-.06em;padding:7px 8px;font:700 17px/1 Fira Code,monospace;text-decoration:none;transition:color .2s,padding .2s}.menu-panel a:hover,.menu-panel a.active{color:var(--accent);padding-left:12px}.signature{color:var(--fg);letter-spacing:-.16em;font:700 28px/1 Fira Code,monospace;text-decoration:none}.theme-toggle{background:color-mix(in srgb, var(--fg) 14%, transparent);border-radius:999px;justify-content:flex-end;width:58px;height:30px;padding:3px;transition:all .3s;display:flex}.theme-toggle span{width:24px;height:24px;color:var(--bg);background:var(--fg);border-radius:50%;place-items:center;transition:transform .3s;display:grid}.theme-toggle:hover span{transform:scale(1.1)}.theme-toggle svg{width:14px}.spinning-border-button{z-index:40;color:#a1a1aa;letter-spacing:.14em;text-transform:uppercase;isolation:isolate;border-radius:999px;justify-content:center;align-items:center;min-height:48px;padding:1px;font:500 11px/1 Fira Code,monospace;text-decoration:none;transition:transform .3s,box-shadow .3s;display:inline-flex;position:fixed;bottom:28px;right:clamp(20px,4vw,64px);overflow:hidden}.spinning-border-button:hover{transform:translateY(-2px);box-shadow:0 0 25px #ffffff1a}.spinning-border-beam{z-index:-1;opacity:0;background:conic-gradient(from 90deg,#0000 0% 75%,#fff 100%);transition:opacity .3s;animation:3s linear infinite spin;position:absolute;inset:-100%}.spinning-border-button:hover .spinning-border-beam{opacity:1}.spinning-border-static{z-index:-1;border-radius:inherit;background:#27272a;transition:opacity .3s;position:absolute;inset:0}.spinning-border-button:hover .spinning-border-static{opacity:0}.spinning-border-surface{border-radius:inherit;color:#a1a1aa;background:linear-gradient(#27272a,#09090b);justify-content:center;align-items:center;gap:8px;width:100%;height:100%;min-height:46px;padding:10px 24px;transition:color .3s;display:flex;position:relative;box-shadow:inset 0 1px #ffffff4d}.spinning-border-button:hover .spinning-border-surface{color:#fff}.spinning-border-label,.spinning-border-arrow{z-index:1;position:relative}.spinning-border-arrow{width:14px;height:14px;transition:transform .3s}.spinning-border-button:hover .spinning-border-arrow{transform:translate(2px)}.hero{place-items:center;min-height:100svh;padding:100px 20px 90px;display:grid;position:relative}.hero-copy{text-align:center;width:100%;position:relative}.hero-name{color:var(--accent);letter-spacing:-.12em;justify-content:center;margin:0;font:700 clamp(75px,18vw,240px)/.76 Fira Code,monospace;display:flex}.hero-name span,.tagline span{transition:opacity .65s,filter .65s,transform .65s cubic-bezier(.2,.8,.2,1);display:inline-block}.portrait-wrap{z-index:1;cursor:pointer;border-radius:999px;width:clamp(86px,10vw,138px);height:clamp(140px,15vw,222px);transition:transform .5s cubic-bezier(.2,.8,.2,1);position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.portrait-wrap:hover{transform:translate(-50%,-50%)scale(1.12)rotate(3deg)}.portrait-glow{border-radius:inherit;background:var(--accent);opacity:.18;filter:blur(26px);animation:4s ease-in-out infinite breathe;position:absolute;inset:-22px}.portrait{object-fit:cover;object-position:51% 29%;border:2px solid color-mix(in srgb, var(--accent) 70%, white);border-radius:inherit;filter:saturate(.85)contrast(1.05);width:100%;height:100%;display:block;position:relative;box-shadow:0 15px 45px #0009}.hero-footer{justify-items:center;gap:13px;display:grid;position:absolute;bottom:clamp(70px,10vh,130px);left:0;right:0}.tagline{color:var(--muted);text-align:center;margin:0;font-size:clamp(15px,2vw,22px)}.availability{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px}.availability i{background:var(--accent);width:6px;height:6px;box-shadow:0 0 10px var(--accent);border-radius:50%;margin-right:7px;display:inline-block}.scroll-cue{color:var(--muted);animation:2s ease-in-out infinite float;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.scroll-cue svg{width:27px}.sr-only{clip:rect(0,0,0,0);width:1px;height:1px;position:absolute;overflow:hidden}.spread-section{color:#141414;background:#ececeb;height:320vh;position:relative}.spread-sticky{height:100vh;position:sticky;top:0;overflow:hidden}.spread-copy{z-index:20;text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.spread-copy h2{letter-spacing:-.06em;margin:0;font:400 clamp(38px,5vw,76px)/.95 Antic,sans-serif}.spread-copy h2 span{color:#777}.spread-copy p{color:#14141499;max-width:42ch;margin:20px 0 0;font-size:clamp(16px,1.25vw,22px);line-height:1.5}.spread-cards{z-index:10;position:absolute;inset:0}.spread-card{will-change:transform;border-radius:9px;position:absolute;top:50%;left:50%;overflow:hidden;box-shadow:0 12px 30px #0001}.spread-card img{object-fit:cover;width:100%;height:100%;display:block}.spread-hint{z-index:30;color:#141414;text-align:center;letter-spacing:.2em;font:700 11px/1 Fira Code,monospace;position:absolute;bottom:4vh;left:0;right:0}.spread-hint span{margin-top:10px;font-size:20px;animation:2s ease-in-out infinite float;display:block}@keyframes breathe{0%,to{opacity:.12;transform:scale(.9)}50%{opacity:.25;transform:scale(1.1)}}@keyframes float{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,7px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes loader-fade{to{opacity:0;visibility:hidden;pointer-events:none}}.testimonials-section{color:#f7f7f2;background:#0b0b0b;height:300vh;position:relative}.testimonials-sticky{place-items:center;height:100vh;min-height:620px;padding:110px 24px 90px;display:grid;position:sticky;top:0;overflow:hidden}.testimonials-heading{z-index:3;position:absolute;top:clamp(82px,13vh,135px);left:clamp(24px,8vw,140px)}.testimonials-heading>span{color:#a3bd15;letter-spacing:.2em;font:700 10px/1 Fira Code,monospace}.testimonials-heading h2{letter-spacing:-.06em;margin:15px 0 0;font:400 clamp(38px,5vw,76px)/.92 Antic,sans-serif}.testimonials-heading em{color:#888;font-style:normal}.testimonial-stage{width:100%;height:70vh;min-height:420px;position:relative}.testimonial-card{background:radial-gradient(80% 100% at 0 0,#fff1,#0000),#151515;border:1px solid #f7f7f21f;flex-direction:column;justify-content:space-between;gap:24px;width:31%;height:205px;margin:0;padding:35px 32px 25px;display:flex;position:absolute;box-shadow:0 25px 70px #0008}.testimonial-card-1{top:4%;left:1%}.testimonial-card-2{top:25%;left:35%}.testimonial-card-3{top:46%;right:1%}.testimonial-card-line{background:#c3e41d;width:30%;height:2px;position:absolute;top:-1px;left:20%}.testimonial-quote-icon{color:#aaa;stroke-width:1px;width:23px;height:23px;position:absolute;top:34px;left:30px}.testimonial-card blockquote{color:#bcbcbc;letter-spacing:-.02em;margin:0 0 0 44px;font:400 clamp(16px,1.5vw,22px)/1.45 Antic,sans-serif}.testimonial-card figcaption{align-items:center;gap:11px;display:flex}.testimonial-card figcaption img{object-fit:cover;background:#333;border-radius:50%;width:42px;height:42px}.testimonial-card figcaption span{gap:4px;display:grid}.testimonial-card strong{font:500 13px/1 Fira Code,monospace}.testimonial-card small{color:#aaa;font-size:11px}.testimonial-progress{color:#f7f7f2;letter-spacing:.12em;align-items:center;gap:12px;font:700 10px/1 Fira Code,monospace;display:flex;position:absolute;bottom:8vh;left:clamp(24px,8vw,140px)}.testimonial-progress i{background:#f7f7f266;width:90px;height:1px;display:block}.testimonial-scroll-hint{color:#888;letter-spacing:.2em;font:700 10px/1 Fira Code,monospace;position:absolute;bottom:8vh;right:clamp(24px,8vw,140px)}.testimonial-scroll-hint span{margin-left:10px;font-size:16px}@media (width<=768px){.testimonial-stage{height:70vh}.testimonial-card{width:88%;height:175px;padding:30px 20px 19px}.testimonial-card-1{top:3%;left:6%}.testimonial-card-2{top:31%;left:6%}.testimonial-card-3{top:59%;right:6%}.testimonial-quote-icon{width:19px;height:19px;top:29px;left:18px}.testimonial-card blockquote{margin-left:31px;font-size:15px}.testimonial-card strong{font-size:11px}.testimonial-card small{font-size:10px}}.testimonials-section .testimonial-card-1{top:24%}.testimonials-section .testimonial-card-2{top:45%}.testimonials-section .testimonial-card-3{top:66%}@media (width<=768px){.testimonials-section .testimonial-card-1{top:23%}.testimonials-section .testimonial-card-2{top:48%}.testimonials-section .testimonial-card-3{top:73%}}.resume-section{color:#f7f7f2;background:#050505;padding:18vh 0 20vh;position:relative}.resume-section-inner,.footer-inner{width:min(1320px,100% - 12vw);margin:0 auto}.section-kicker{color:#c3e41d;letter-spacing:.2em;text-transform:uppercase;font:700 10px/1 Fira Code,monospace}.resume-intro h2,.skills-grid h2,.education-grid h2,.footer-inner h2{letter-spacing:-.07em;margin:18px 0 0;font:400 clamp(48px,7vw,104px)/.9 Antic,sans-serif}.resume-intro h2 em,.skills-grid h2 em,.education-grid h2 em,.footer-inner h2 em{color:#777;font-style:normal}.resume-intro p{color:#888;max-width:38ch;margin:25px 0 0;font-size:18px;line-height:1.45}.experience-list,.project-index{border-top:1px solid #f7f7f21f;margin-top:15vh}.experience-row{border-bottom:1px solid #f7f7f21f;grid-template-columns:5% 24% 1fr;gap:24px;padding:36px 0;display:grid}.experience-index,.experience-dates,.project-index-row>span{color:#777;letter-spacing:.08em;font:11px/1.4 Fira Code,monospace}.experience-dates small{color:#555;margin-top:8px;font-size:9px;display:block}.experience-row h3,.project-index-row h3,.skill-copy h3,.education-card h3{margin:0;font-size:22px;font-weight:400}.experience-row strong{color:#c3e41d;margin-top:6px;font:12px Fira Code,monospace;display:block}.experience-row p{color:#999;max-width:52ch;margin:16px 0 0;line-height:1.55}.project-index-section{color:#141414;background:#ececeb}.project-index-section .section-kicker{color:#6a8000}.project-index-section .project-index{border-color:#14141433}.project-index-row{border-bottom:1px solid #14141433;grid-template-columns:6% 17% 1fr 34% auto;align-items:center;gap:18px;padding:25px 0;display:grid}.project-index-row strong{letter-spacing:.08em;font:700 12px Fira Code,monospace}.project-index-row h3{font-size:25px}.project-index-row p{color:#666;margin:0;font-size:14px}.project-index-row svg{width:20px;transition:transform .3s}.project-index-row:hover svg{transform:translate(4px,-4px)}.skills-grid,.education-grid{grid-template-columns:1fr 1fr;align-items:start;gap:10vw;display:grid}.skill-copy{padding-top:44px}.skill-copy h3{color:#c3e41d;text-transform:uppercase;letter-spacing:.12em;margin:0 0 12px;font:700 11px Fira Code,monospace}.skill-copy h3:nth-of-type(2){margin-top:50px}.skill-copy p{color:#999;max-width:50ch;margin:0;line-height:1.7}.education-section{color:#101010;background:#c3e41d}.education-section .section-kicker{color:#101010}.education-grid h2 em{color:#5f6e09}.education-card{border-top:1px solid #10101066;gap:30px;padding-top:44px;display:flex}.education-card>span{font:11px Fira Code,monospace}.education-card h3{max-width:25ch}.education-card p{color:#445000}.site-footer{color:#f7f7f2;background:#050505;padding:18vh 0 5vh}.footer-contact{flex-wrap:wrap;gap:28px;margin:16vh 0 14vh;display:flex}.footer-contact a,.footer-contact span{color:#aaa;align-items:center;gap:10px;font-size:15px;text-decoration:none;display:inline-flex}.footer-contact svg,.footer-bottom svg{color:#c3e41d;width:16px}.footer-contact a:hover,.footer-bottom a:hover{color:#c3e41d}.footer-bottom{color:#666;letter-spacing:.08em;border-top:1px solid #f7f7f21f;justify-content:space-between;align-items:center;gap:25px;padding-top:20px;font:10px Fira Code,monospace;display:flex}.footer-bottom div{gap:25px;display:flex}.footer-bottom a{color:#aaa;align-items:center;gap:5px;text-decoration:none;display:inline-flex}.back-top{color:#666!important}@media (width<=768px){.resume-section-inner,.footer-inner{width:min(100% - 40px,620px)}.resume-section,.site-footer{padding-top:13vh;padding-bottom:15vh}.resume-intro h2,.skills-grid h2,.education-grid h2,.footer-inner h2{font-size:clamp(50px,15vw,78px)}.experience-list,.project-index{margin-top:10vh}.experience-row{grid-template-columns:12% 1fr;gap:12px;padding:28px 0}.experience-row>div{grid-column:2}.experience-dates{grid-area:1/2}.experience-index{grid-row:1/span 2}.project-index-row{grid-template-columns:12% 1fr auto;gap:10px}.project-index-row strong{grid-area:1/2}.project-index-row h3{grid-area:2/2;font-size:21px}.project-index-row p{grid-area:3/2}.project-index-row svg{grid-area:1/3/span 3}.skills-grid,.education-grid{grid-template-columns:1fr;gap:8vh}.skill-copy,.education-card{padding-top:0}.footer-contact{gap:18px;margin:10vh 0;display:grid}.footer-bottom{flex-direction:column;align-items:flex-start}.footer-bottom div{order:-1}}.testimonials-section .testimonial-card{box-shadow:none;background:radial-gradient(50% 80% at 25% 0,#f7f7f214,#0000),0 0;border:0}.testimonials-section .testimonial-card:before,.testimonials-section .testimonial-card:after{content:"";pointer-events:none;border-style:solid;border-color:#f7f7f21f;position:absolute}.testimonials-section .testimonial-card:before{border-width:1px 0;inset:-16px}.testimonials-section .testimonial-card:after{border-width:0 1px;inset:0 -16px}.testimonials-section .testimonial-card-line{background:linear-gradient(#8a8a8a,#8a8a8a) 50%/1px 100% no-repeat,linear-gradient(#8a8a8a,#8a8a8a) 50%/100% 1px no-repeat;width:14px;height:14px;top:-22px;left:-22px}.testimonials-section .testimonial-quote-icon{color:#8f8f8f;stroke-width:1px}.testimonials-section .testimonial-card blockquote{color:#aaa;font-size:clamp(16px,1.35vw,20px);line-height:1.5}.testimonials-section .testimonial-card figcaption img{outline-offset:2px;border:1px solid #f7f7f255;outline:1px solid #f7f7f21f}.testimonials-section .testimonial-card strong{color:#f7f7f2}.testimonials-section .testimonial-card small{color:#aaa}@media (width<=600px){.site-header{padding-top:18px}.hero{padding-inline:8px}.hero-name{font-size:clamp(65px,20vw,120px)}.portrait-wrap{width:70px;height:117px}.hero-footer{bottom:68px}.availability{font-size:9px}}@media (width<=768px){.hero-name{font-size:clamp(96px,25vw,180px)}.hero-footer{bottom:116px}.spinning-border-button.resume-button{min-height:43px;font-size:9px;position:absolute;bottom:18px;right:16px}.spinning-border-button.resume-button .spinning-border-surface{min-height:41px;padding:9px 15px}.spread-card{border-radius:18px}.spread-copy{z-index:50;width:100%;padding-inline:16px}.spread-copy h2{max-width:92vw;text-shadow:none;font-size:clamp(42px,11.5vw,58px);line-height:1.04}.spread-copy p{max-width:27ch;text-shadow:none;margin-top:14px;font-size:15px;line-height:1.35}.mobile-break{display:inline}}.mobile-break{display:none}@media (width<=768px){.mobile-break{display:inline}}.mobile-spread{display:none}@media (width<=768px){.spread-section{display:none}.mobile-spread{color:#141414;background:#fff;height:220svh;display:block;position:relative}.mobile-spread-sticky{height:100svh;min-height:620px;position:sticky;top:0;overflow:hidden}.mobile-card{z-index:1;object-fit:cover;border-radius:8px;display:block;position:absolute;overflow:hidden;box-shadow:0 10px 24px #0000001a}.mobile-card-1{aspect-ratio:1.72;width:42%;top:6%;left:29%}.mobile-card-2{aspect-ratio:1.18;width:28%;top:20%;left:-7%}.mobile-card-3{aspect-ratio:1.06;width:30%;top:18%;right:7%}.mobile-card-4{aspect-ratio:1.08;width:28%;top:42%;left:-10%}.mobile-card-5{aspect-ratio:1.08;width:28%;top:42%;right:-10%}.mobile-card-6{aspect-ratio:1.55;width:39%;top:67%;left:0}.mobile-card-7{aspect-ratio:1.5;width:39%;top:70%;right:0}.mobile-card-8{aspect-ratio:1.35;width:42%;top:84%;left:29%}.mobile-spread-copy{z-index:2;text-align:center;width:min(76vw,340px);position:absolute;top:43%;left:50%;transform:translate(-50%)}.mobile-spread-copy h2{letter-spacing:-.07em;margin:0;font:400 clamp(31px,8.7vw,47px)/.96 Antic,sans-serif}.mobile-spread-copy h2 span{color:#777}.mobile-spread-copy p{color:#777;max-width:29ch;margin:13px auto 0;font-size:clamp(12px,3.2vw,15px);line-height:1.35}.mobile-scroll-label{z-index:3;text-align:center;letter-spacing:.2em;font:700 10px/1 Fira Code,monospace;position:absolute;top:94%;left:0;right:0}}.project-index-row{cursor:none;position:relative}.project-hover-image{z-index:80;aspect-ratio:1.35;object-fit:cover;pointer-events:none;filter:saturate(.9)contrast(1.04);border-radius:8px;width:clamp(180px,19vw,300px);transition:opacity .25s,scale .45s cubic-bezier(.2,.8,.2,1);position:fixed;top:0;left:0;transform:translate(-50%,-50%);box-shadow:0 20px 55px #0004}@media (width<=768px){.project-index-row{cursor:default}.project-hover-image{display:none}}
