@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";.glow-cursor{position:relative;width:100%;height:100%;overflow:hidden}.glow-cursor__canvas{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none}.glow-cursor__content{position:relative;z-index:1;width:100%;height:100%}.glow-cursor.portfolio-cursor{position:fixed;inset:0;z-index:50;pointer-events:none}:root{--ink:#10100f;--paper:#f1f0eb;--muted:#77766f;--line:rgba(16,16,15,.18);--lime:#c7f430;font-family:Manrope,Arial,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;overflow-x:hidden}button,a,input,textarea{font:inherit}button{color:inherit}button,a{cursor:pointer;-webkit-tap-highlight-color:transparent}.mono,.section-label{font-family:DM Mono,monospace;font-size:10px;letter-spacing:.08em}.section-shell{padding:clamp(76px,11vw,160px) clamp(20px,4.5vw,72px)}.section-label{display:flex;justify-content:space-between;text-transform:uppercase}.section-label span{color:var(--muted)}.site-header{position:fixed;inset:0 0 auto;z-index:20;height:70px;padding:20px clamp(20px,3vw,48px);display:flex;justify-content:space-between;align-items:center;color:#fff;mix-blend-mode:difference;pointer-events:none}.site-header>*{pointer-events:auto}.brand,.menu-button,.desktop-nav button{background:transparent;border:0}.brand{font-size:19px;font-weight:800;letter-spacing:-.06em}.brand sup{font-size:8px}.desktop-nav{display:flex;align-items:center;gap:21px}.desktop-nav button,.desktop-nav a,.menu-button{font:600 10px DM Mono,monospace;letter-spacing:.06em;text-decoration:none;color:inherit}.desktop-nav button{padding:0}.menu-button{display:none;align-items:center;gap:7px}.mobile-nav{display:none}.hero{position:relative;min-height:100svh;padding:102px clamp(20px,4.5vw,72px) 28px;display:flex;flex-direction:column;justify-content:space-between;isolation:isolate}.hero__meta,.hero__bottom{display:flex;justify-content:space-between;gap:28px}.hero__title{position:relative;margin:6vh 0}.hero h1{margin:0;font-size:clamp(3.7rem,8.9vw,10rem);line-height:.8;letter-spacing:-.09em;font-weight:800;max-width:1120px}.hero h1:nth-child(2){margin-left:8vw}.hero h1:nth-child(3){margin-left:19vw}.hero__portrait{position:absolute;z-index:-1;right:2vw;top:-5vh;width:clamp(160px,23vw,350px);height:clamp(210px,34vw,510px);border:1px solid var(--line);background:#d8d7d0;display:grid;place-items:center;overflow:hidden}.hero__portrait img{width:100%;height:100%;object-fit:cover;filter:grayscale(1);position:absolute}.hero__portrait span{font:10px DM Mono,monospace;text-align:center;color:#6c6b64}.hero__bottom{align-items:flex-end}.hero__bottom p{max-width:400px;margin:0;font-size:14px;line-height:1.55}.mode-selector{display:flex;gap:14px;flex-wrap:wrap;justify-content:center}.mode-selector button{padding:0;border:0;background:transparent;text-align:left;color:#83827b;font-size:10px;letter-spacing:.04em}.mode-selector small{display:block;font-family:DM Mono,monospace;font-size:9px;margin-bottom:4px}.mode-selector button.active{color:var(--ink);text-decoration:underline;text-underline-offset:5px}.text-link{border:0;border-bottom:1px solid currentColor;background:transparent;padding:0 0 8px;display:inline-flex;align-items:center;gap:12px;font:700 11px DM Mono,monospace;letter-spacing:.06em}.text-link svg{width:17px}.hero__active{position:absolute;right:clamp(20px,4.5vw,72px);bottom:95px;writing-mode:vertical-rl;color:var(--muted)}.about{border-top:1px solid var(--line)}.about__grid{display:grid;grid-template-columns:1.12fr .65fr;gap:9vw;margin-top:clamp(54px,8vw,120px)}.about h2,.work h2,.skills-section h2,.github h2,.contact h2{margin:0;font-size:clamp(3.2rem,7vw,8.8rem);line-height:.83;letter-spacing:-.09em}.about h2 em,.work h2 em,.skills-section h2 em,.github h2 em,.contact h2 em{font-family:Georgia,serif;font-weight:400}.body-large{margin:0;font-size:clamp(17px,1.6vw,23px);line-height:1.5}.body-copy{font-size:14px;line-height:1.65;color:#55554f}.fact-grid{margin-top:55px;display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}.fact-grid div{padding:16px 0;border-bottom:1px solid var(--line)}.fact-grid div:nth-child(odd){padding-right:16px;border-right:1px solid var(--line)}.fact-grid div:nth-child(2n){padding-left:16px}.fact-grid strong{display:block;font:500 clamp(20px,3vw,38px) "DM Mono",monospace;letter-spacing:-.08em}.fact-grid span{font:9px DM Mono,monospace;color:var(--muted)}.expertise{background:var(--ink);color:#efeee8;padding-top:28px;overflow:hidden}.expertise>.section-shell{padding-bottom:42px}.expertise .section-label span{color:#aaa9a0}.expertise__rail{display:flex;width:max-content}.expertise-card{width:min(25vw,460px);min-height:680px;padding:25px clamp(20px,2.3vw,38px);border-right:1px solid #44423d;display:flex;flex-direction:column;position:relative}.expertise-card .mono{display:flex;justify-content:space-between;color:#aaa9a0}.expertise-card h2{margin:66px 0 25px;font-size:clamp(2.1rem,3.2vw,4rem);line-height:.89;letter-spacing:-.07em}.expertise-card h2 span{display:block}.expertise-card p{font-size:14px;line-height:1.55;color:#c6c5bc;max-width:290px}.expertise-card .text-link{margin-top:auto;color:#efeee8}.skill-cloud{display:flex;flex-wrap:wrap;gap:5px;margin-top:16px}.skill-cloud span,.project-tags span{border:1px solid currentColor;padding:5px 7px;font:9px DM Mono,monospace;letter-spacing:.04em}.expertise-card__motif{position:absolute;right:25px;top:50px;width:100px;height:100px;border:1px solid #5d5c55;display:grid;place-items:center}.expertise-card__motif i{display:block;border:1px solid #77766e;width:74%;height:74%;border-radius:50%}.expertise-card--ui .expertise-card__motif{border-radius:0;transform:rotate(45deg)}.expertise-card--mobile .expertise-card__motif{width:70px;height:130px;border-radius:10px}.expertise-card--web .expertise-card__motif{border-radius:50%}.expertise-card--data{border-top:3px solid #b0d82f}.expertise-card--ui{border-top:3px solid #a799ff}.expertise-card--mobile{border-top:3px solid #f1a46e}.expertise-card--web{border-top:3px solid #66cbd3}.work{background:#e9e8e1}.work__head{display:flex;justify-content:space-between;align-items:flex-end;gap:40px}.work__filters{display:flex;gap:14px;flex-wrap:wrap;justify-content:flex-end}.work__filters button{border:0;background:none;padding:0 0 4px;font:10px DM Mono,monospace;color:#77766f;text-transform:uppercase}.work__filters button.active{color:var(--ink);border-bottom:1px solid var(--ink)}.project-list{margin-top:100px}.work-project{display:grid;grid-template-columns:1.1fr .75fr;gap:6vw;align-items:center;margin:0 0 135px}.work-project--1{grid-template-columns:.75fr 1.1fr}.work-project--1 .work-project__visual{order:2}.work-project__visual{border:0;padding:0;background:transparent;position:relative;text-align:left}.work-project__visual>span{position:absolute;bottom:14px;left:14px;font:10px DM Mono,monospace;color:#fff;opacity:0;transition:opacity .25s}.work-project__visual:hover>span{opacity:1}.project-art{height:clamp(300px,47vw,660px);position:relative;overflow:hidden;background:#575650;color:#f7f6ef;transition:transform .4s}.work-project__visual:hover .project-art{transform:scale(.985)}.project-art--data{background:linear-gradient(135deg,#20231e,#759c5c)}.project-art--ui{background:linear-gradient(135deg,#382f5b,#a999e9)}.project-art--mobile{background:linear-gradient(135deg,#5b2b1f,#e79665)}.project-art--web{background:linear-gradient(135deg,#173437,#6eced3)}.project-art__grid{position:absolute;inset:0;opacity:.3;background-image:linear-gradient(#fff 1px,transparent 1px),linear-gradient(90deg,#fff 1px,transparent 1px);background-size:34px 34px}.project-art__index,.project-art__category{position:absolute;top:16px;font:10px DM Mono,monospace}.project-art__index{left:16px}.project-art__category{right:16px}.project-art__shape{width:55%;aspect-ratio:1;position:absolute;right:-5%;bottom:-20%;border:1px solid #fff;border-radius:50%}.project-art strong{position:absolute;left:16px;bottom:16px;font-size:clamp(22px,3vw,46px);letter-spacing:-.07em}.work-project__content>.mono{display:flex;justify-content:space-between;color:#707069}.work-project h3{margin:19px 0;font-size:clamp(2.2rem,4.6vw,5.5rem);line-height:.9;letter-spacing:-.08em}.work-project p{max-width:420px;font-size:15px;line-height:1.55;color:#55554e}.project-tags{display:flex;flex-wrap:wrap;gap:5px;margin:28px 0;color:#55554e}.work-project .text-link{margin-top:12px}.github{background:#151515;color:#eeede7}.github .section-label span{color:#aaa9a0}.github__intro{display:flex;justify-content:space-between;gap:45px;margin:80px 0}.github__intro p{max-width:360px;line-height:1.6;color:#b5b4ab;font-size:14px}.github code{color:var(--lime)}.github__notice,.contribution-fallback{padding:22px 0;border-top:1px solid #464642;border-bottom:1px solid #464642;font:11px DM Mono,monospace;color:#b4b3aa}.github-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #464642}.github-stats div{padding:24px;border-right:1px solid #464642}.github-stats div:first-child{padding-left:0}.github-stats strong{display:block;font:500 clamp(38px,6vw,82px) "DM Mono",monospace;letter-spacing:-.1em}.github-stats span{font:9px DM Mono,monospace;color:#aaa9a0}.contribution-fallback{margin-top:50px;display:flex;justify-content:space-between;gap:20px}.contribution-fallback p{margin:0;max-width:500px;line-height:1.5}.repo-list{margin-top:50px;border-top:1px solid #464642}.repo-list>a{display:flex;justify-content:space-between;gap:20px;color:inherit;text-decoration:none;padding:20px 0;border-bottom:1px solid #464642}.repo-list small,.repo-list p{font:10px DM Mono,monospace;color:#aaa9a0}.repo-list h3{margin:5px 0;font-size:25px;letter-spacing:-.05em}.repo-list p{margin:0}.repo-list__meta{display:flex;align-items:center;gap:15px;font:10px DM Mono,monospace}.repo-skeleton{padding:22px 0;font:10px DM Mono,monospace;color:#aaa9a0}.github-range{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:28px;font:10px DM Mono,monospace;color:#aaa9a0}.github-range label{color:#eeede7}.github-range__select{position:relative;display:inline-flex;align-items:center}.github-range select{appearance:none;border:1px solid #64645e;border-radius:0;background:#151515;color:#eeede7;padding:9px 30px 9px 10px;font:inherit;cursor:pointer}.github-range__select svg{position:absolute;right:9px;width:13px;height:13px;pointer-events:none;color:#eeede7}.github-range select:focus-visible{outline:2px solid var(--lime);outline-offset:3px}.skills-section{border-top:1px solid var(--line)}.skills-section h2{margin-top:80px}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);margin-top:100px;border-top:1px solid var(--line)}.skills-grid article{display:grid;grid-template-columns:120px 1fr;gap:18px;padding:20px 0;border-bottom:1px solid var(--line)}.skills-grid article:nth-child(odd){padding-right:25px;border-right:1px solid var(--line)}.skills-grid article:nth-child(2n){padding-left:25px}.skills-grid p{margin:0;font-size:14px;line-height:1.7}.experience{border-top:1px solid var(--line)}.experience>div+div{margin-top:70px;border-top:1px solid var(--line)}.experience article{display:grid;grid-template-columns:25% 1fr;gap:25px;padding:28px 0;border-bottom:1px solid var(--line)}.experience h3,.experience p{margin:0}.experience strong{font-size:12px}.experience p{margin-top:12px;line-height:1.55;color:#55554e}.contact{padding:clamp(70px,10vw,150px) clamp(20px,4.5vw,72px) 30px;background:#7894ad;min-height:95svh}.contact h2{margin:clamp(90px,15vw,200px) 0 70px}.contact__grid{display:grid;grid-template-columns:1fr 1fr;gap:9vw}.contact-links{border-top:1px solid var(--ink)}.contact-links a{display:grid;grid-template-columns:100px 1fr auto;gap:10px;padding:15px 0;border-bottom:1px solid var(--ink);color:inherit;text-decoration:none;font:10px DM Mono,monospace}.contact-links a span{font-size:11px}form label{display:block;padding:9px 0 16px;border-bottom:1px solid var(--ink);font:10px DM Mono,monospace}form input,form textarea{display:block;width:100%;border:0;outline:0;background:transparent;padding:11px 0 0;font:15px Manrope,sans-serif;resize:vertical}form input::placeholder,form textarea::placeholder{color:#294154}form button{margin-top:22px;padding:13px 0;border:0;border-bottom:1px solid var(--ink);background:none;font:700 11px DM Mono,monospace}form small{display:block;margin-top:14px;font:9px DM Mono,monospace}.site-footer{background:var(--ink);color:#eeede7;padding:22px clamp(20px,4.5vw,72px);display:grid;grid-template-columns:2fr 2fr 1fr 1fr;gap:20px;align-items:center;font:10px DM Mono,monospace}.site-footer strong{font:700 18px Manrope,sans-serif;letter-spacing:-.06em}.site-footer button{color:inherit;border:0;background:none;font:10px DM Mono,monospace;padding:0}.case-study{min-height:100vh;background:var(--paper);padding:24px clamp(20px,4.5vw,72px)}.case-study header,.case-study footer{display:flex;justify-content:space-between;align-items:center}.case-study__hero{padding:clamp(95px,13vw,170px) 0 80px}.case-study__hero h1{margin:40px 0 20px;font-size:clamp(4rem,10vw,12rem);line-height:.78;letter-spacing:-.1em}.case-study__hero>p{max-width:560px;font-size:17px;line-height:1.55;margin-bottom:60px}.project-art--large{height:min(65vw,820px)}.case-study__details{max-width:850px;margin:0 auto;padding-bottom:100px}.case-study__details article{display:grid;grid-template-columns:190px 1fr;gap:30px;padding:32px 0;border-bottom:1px solid var(--line)}.case-study__details p{margin:0;font-size:clamp(17px,2vw,27px);line-height:1.4}.case-study footer{padding:25px 0;border-top:1px solid var(--line)}.case-study footer a,.case-study footer button{color:inherit;border:0;background:none;text-decoration:none;font:10px DM Mono,monospace}@media(max-width:899px){.desktop-nav{display:none}.menu-button{display:flex}.mobile-nav{position:fixed;inset:0;background:var(--ink);color:#eeede7;display:flex;flex-direction:column;justify-content:center;padding:25px}.mobile-nav button{display:flex;align-items:start;gap:18px;color:inherit;background:none;border:0;border-bottom:1px solid #4b4b47;padding:12px 0;text-align:left;font-size:clamp(40px,12vw,80px);font-weight:800;letter-spacing:-.07em}.mobile-nav small{font:10px DM Mono,monospace;margin-top:11px}.hero h1{font-size:clamp(3.5rem,11.6vw,7rem)}.expertise__rail{overflow-x:auto;width:100%;scroll-snap-type:x mandatory}.expertise-card{width:68vw;min-height:600px;scroll-snap-align:start}.work-project,.work-project--1{grid-template-columns:1fr;gap:30px;margin-bottom:95px}.work-project--1 .work-project__visual{order:0}.work-project__content{max-width:600px}.github__intro{margin:60px 0}.contact__grid{gap:50px}.site-footer{grid-template-columns:1fr 1fr}.site-footer span:nth-of-type(2){text-align:right}.case-study__details{margin:0}.case-study__details article{grid-template-columns:150px 1fr}}@media(max-width:620px){.hero{padding-top:90px}.hero__meta span:last-child{display:none}.hero__title{margin:10vh 0}.hero h1,.hero h1:nth-child(2),.hero h1:nth-child(3){margin-left:0;font-size:clamp(3.2rem,15vw,5.5rem);line-height:.84}.hero__portrait{right:0;top:calc(100% + 28px);width:116px;height:150px}.hero__bottom{display:block}.hero__bottom p{max-width:80%;margin-bottom:55px}.mode-selector{justify-content:flex-start;gap:16px;margin-bottom:25px}.hero__active{right:20px;bottom:30px}.about__grid,.contact__grid{grid-template-columns:1fr;gap:42px}.expertise-card{width:86vw}.work__head{display:block}.work__filters{justify-content:flex-start;margin-top:42px}.project-list{margin-top:64px}.project-art{height:78vw}.github__intro{display:block}.github__intro p{margin-top:30px}.github-stats{grid-template-columns:1fr}.github-stats div{padding:18px 0;border-right:0;border-bottom:1px solid #464642}.contribution-fallback{display:block}.contribution-fallback p{margin-top:12px}.repo-list>a{display:block}.repo-list__meta{margin-top:15px}.skills-grid{grid-template-columns:1fr;margin-top:65px}.skills-grid article,.skills-grid article:nth-child(n){padding:18px 0;border-right:0}.contact-links a{grid-template-columns:80px 1fr auto}.contact-links a span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-footer{grid-template-columns:1fr;gap:10px}.site-footer span:nth-of-type(2){text-align:left}.case-study__hero h1{font-size:clamp(3.5rem,16vw,6rem)}.case-study__details article{grid-template-columns:1fr;gap:15px}.case-study footer{gap:15px;flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.theme-toggle{border:0;background:transparent;color:inherit;display:flex;align-items:center;gap:6px;padding:0;font:600 10px DM Mono,monospace;letter-spacing:.06em}.theme-toggle span{font-size:15px;line-height:10px}.theme-dark{--ink:#f0efe8;--paper:#10100f;--muted:#aaa9a2;--line:rgba(240,239,232,.19)}.theme-dark body{background:var(--paper)}.theme-dark .hero__portrait{background:#242422}.theme-dark .hero__portrait span{color:#bbb9ae}.theme-dark .mode-selector button{color:#8d8c85}.theme-dark .mode-selector button.active{color:var(--ink)}.theme-dark .about,.theme-dark .skills-section,.theme-dark .work,.theme-dark .case-study{background:#10100f;color:#f0efe8}.theme-dark .work{background:#171716}.theme-dark .work-project p,.theme-dark .body-copy,.theme-dark .experience p{color:#c0bfb7}.theme-dark .work-project__content>.mono,.theme-dark .fact-grid span{color:#aaa9a2}.theme-dark .project-tags{color:#c0bfb7}.theme-dark .work__filters button{color:#aaa9a2}.theme-dark .work__filters button.active{color:#f0efe8;border-color:#f0efe8}.theme-dark .fact-grid,.theme-dark .fact-grid div{border-color:var(--line)}.theme-dark .expertise,.theme-dark .github,.theme-dark .site-footer{background:#050505}.theme-dark .contact{color:#10100f}.theme-dark .case-study footer a,.theme-dark .case-study footer button{color:#f0efe8}@media(max-width:899px){.theme-toggle{margin-left:auto;margin-right:20px}}.expertise-card h2{min-height:3.56em}.project-art>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1);transition:filter .4s,transform .5s}.work-project__visual:hover .project-art>img{filter:grayscale(0);transform:scale(1.035)}.contribution-grid{margin-top:50px;padding:20px 0;border-top:1px solid #464642;border-bottom:1px solid #464642}.contribution-grid__heading{display:flex;justify-content:space-between;margin-bottom:26px;font:10px DM Mono,monospace;color:#aaa9a0}.contribution-grid__heading strong{font-weight:500;color:#eeede7}.contribution-grid__body{display:flex;justify-content:center;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;padding:0 0 18px}.contribution-grid__weekday{flex:none;padding-top:31px;font:8px/17px DM Mono,monospace;color:#77766e}.contribution-grid__days{display:flex;gap:5px;min-width:max-content;padding-top:22px}.contribution-week{display:grid;grid-template-rows:repeat(7,17px);gap:5px;position:relative}.contribution-month{position:absolute;top:-20px;left:0;color:#77766e;font:9px DM Mono,monospace;white-space:nowrap}.contribution-day{display:block;position:relative;width:17px;height:17px;background:#292927;transition:transform .16s ease,outline-color .16s ease;outline:1px solid transparent}.contribution-day:hover{z-index:2;transform:scale(1.22);outline-color:#f1f0eb}.contribution-day:hover:after{content:attr(data-tooltip);position:absolute;z-index:4;bottom:calc(100% + 9px);left:50%;transform:translate(-50%);padding:7px 8px;background:#f1f0eb;color:#10100f;font:9px DM Mono,monospace;white-space:nowrap;box-shadow:0 0 0 1px #10100f}.contribution-day--1{background:#4c6221}.contribution-day--2{background:#718e29}.contribution-day--3{background:#9dbe35}.contribution-day--4{background:var(--lime)}.contribution-grid__legend{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:17px;font:8px DM Mono,monospace;color:#77766e}.contribution-grid__legend .contribution-day{width:10px;height:10px}.contribution-grid__legend span{margin:0 4px}.hero__portrait img{filter:none}.hero__portrait{mask-image:linear-gradient(to right,transparent 0%,#000 24%,#000 100%);-webkit-mask-image:linear-gradient(to right,transparent 0%,#000 24%,#000 100%)}.theme-dark .hero__portrait img{filter:grayscale(1)}.desktop-nav button,.desktop-nav a,.theme-toggle{font-size:12px;font-weight:800}.theme-toggle span{font-size:17px}.expertise-card,.work-project__visual,.experience article,.contact-links a{transition:transform .28s ease,box-shadow .28s ease,background-color .28s ease}.expertise-card:hover{transform:translateY(-8px);box-shadow:0 14px #0000002e}.work-project__visual:hover{transform:translateY(-5px)}.experience article:hover{transform:translate(10px)}.contact-links a:hover{transform:translate(7px)}.text-link svg{transition:transform .22s ease}.text-link:hover svg{transform:translate(4px,-4px)}@media(max-width:1100px){.desktop-nav{display:none}.menu-button{display:flex}.theme-toggle{margin-left:auto;margin-right:20px}}@media(max-width:760px){.hero__bottom{display:block}.hero__bottom p{margin-bottom:38px}.about__grid,.contact__grid{grid-template-columns:1fr;gap:42px}.work__head{display:block}.work__filters{justify-content:flex-start;margin-top:34px}.contact{min-height:auto}.site-footer{grid-template-columns:1fr 1fr}.expertise-card{width:78vw}.experience article:hover,.contact-links a:hover,.work-project__visual:hover{transform:none}}.experience__head h2{margin:80px 0 0;font-size:clamp(3.2rem,7vw,8.8rem);line-height:.83;letter-spacing:-.09em}.experience__head h2 em{font-family:Georgia,serif;font-weight:400}.experience__timeline{margin-top:90px;border-top:1px solid var(--line)}.experience h3{font-size:clamp(1.5rem,2.8vw,3rem);line-height:.95;letter-spacing:-.06em}.experience strong{display:block;margin-top:8px;font:500 11px DM Mono,monospace;letter-spacing:.06em}.experience p{max-width:580px;margin-top:16px}@media(max-width:620px){.experience__head h2{margin-top:58px}.experience__timeline{margin-top:65px}.experience article{grid-template-columns:1fr;gap:15px;padding:24px 0}}@media(max-width:620px){.section-shell{padding:72px 16px}.site-header{height:62px;padding:16px}.brand{font-size:18px}.theme-toggle{margin-right:14px!important;font-size:11px}.theme-toggle span{font-size:15px}.menu-button{font-size:10px}.mobile-nav{padding:18px;overflow-y:auto}.mobile-nav button{font-size:clamp(34px,12vw,58px)}.section-label{gap:12px;font-size:9px}.section-label span{text-align:right}.hero{min-height:100svh;padding:82px 16px 24px}.hero__title{margin:9vh 0 7vh}.hero__portrait{top:calc(100% + 14px);width:104px;height:136px}.hero__bottom p{max-width:100%;font-size:13px;margin-bottom:42px}.mode-selector{gap:12px}.hero__active{right:16px;bottom:24px}.about__grid{margin-top:44px}.fact-grid{margin-top:38px}.fact-grid strong{font-size:clamp(22px,8vw,32px)}.expertise-card{width:88vw;min-height:560px;padding:22px}.expertise-card h2{margin-top:58px}.work__filters{gap:12px}.project-list{margin-top:52px}.work-project{margin-bottom:78px}.project-art{height:84vw;min-height:280px}.work-project h3{font-size:clamp(2.1rem,12vw,3.8rem)}.project-tags{margin:22px 0}.github__intro{margin:44px 0}.github-stats strong{font-size:clamp(38px,16vw,58px)}.contribution-grid{margin-top:36px}.contribution-grid__heading{gap:14px;align-items:flex-start}.contribution-grid__heading strong{text-align:right}.contribution-grid__body{overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:16px}.contribution-grid__weekday{position:sticky;left:0;z-index:2;background:#151515}.contribution-grid__legend{justify-content:flex-start}.repo-list{margin-top:36px}.skills-section h2,.experience__head h2{font-size:clamp(2.9rem,14vw,4.6rem)}.skills-grid{margin-top:52px}.experience__timeline{margin-top:54px}.experience p{font-size:14px}.contact{padding:72px 16px 30px}.contact h2{margin:74px 0 48px;font-size:clamp(3.1rem,15vw,5rem)}.contact-links a{grid-template-columns:64px minmax(0,1fr) 18px;gap:8px;padding:16px 0}.contact-links a span{font-size:10px}.contact-links a svg{width:16px}.contact__grid{gap:38px}.site-footer,.case-study{padding:20px 16px}.case-study__hero{padding:88px 0 58px}.case-study__hero>p{font-size:16px;margin-bottom:38px}.project-art--large{height:76vw}.case-study footer{padding:20px 0}}@media(max-width:620px){.hero{min-height:auto;gap:0;padding-bottom:42px}.hero__title{display:flex;flex-direction:column;margin:52px 0 30px}.hero h1,.hero h1:nth-child(2),.hero h1:nth-child(3){font-size:clamp(3rem,13.5vw,3.45rem);line-height:.86}.hero__portrait{position:relative;top:auto;right:auto;align-self:flex-end;width:122px;height:160px;margin:22px 0 0}.hero__bottom p{margin-bottom:30px}.hero__active{display:none}.mode-selector{margin-bottom:28px}}.expertise__carousel{width:min(calc(100% - 40px),1100px);margin:0 auto;overflow:hidden;padding:0 0 30px}.expertise__rail{display:flex;width:400%;transition:transform .7s cubic-bezier(.22,.61,.36,1);will-change:transform}.expertise-card{flex:0 0 25%;width:25%;min-height:620px}.expertise__controls{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:20px;color:#efeee8;font:700 10px DM Mono,monospace;letter-spacing:.06em}.expertise__controls>button{border:0;background:none;color:inherit;padding:12px 0}.expertise__controls>div{display:flex;gap:7px}.expertise__controls>div button{width:28px;height:3px;padding:0;border:0;background:#5b5a54}.expertise__controls>div button.active{background:var(--lime)}@media(max-width:620px){.expertise__carousel{width:calc(100% - 32px);padding:0 0 24px}.expertise-card{min-height:570px;padding:22px}.expertise__controls{font-size:9px}.expertise__controls>div button{width:20px}.expertise__controls>button{padding:14px 0}}.site-header{gap:20px}.header-status{display:flex;align-items:center;gap:6px;margin-left:auto;font-size:9px}.availability-indicator{display:inline-flex;align-items:center;gap:8px}.availability-indicator i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 3px #c7f4302e}.hero{background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:80px 80px}.hero__actions{display:flex;flex-wrap:wrap;gap:26px;margin-top:24px}.hero__actions .text-link{display:inline-flex;text-decoration:none;color:inherit}.engineering-loop{position:relative;flex:0 0 220px;width:220px;height:220px;border:1px solid var(--line);border-radius:50%;font:9px DM Mono,monospace;letter-spacing:.06em;animation:loop-spin 28s linear infinite}.engineering-loop span{position:absolute}.engineering-loop span:nth-child(1){top:13px;left:50%;transform:translate(-50%)}.engineering-loop span:nth-child(2){right:-16px;top:68px}.engineering-loop span:nth-child(3){right:15px;bottom:36px}.engineering-loop span:nth-child(4){bottom:13px;left:50%;transform:translate(-50%)}.engineering-loop span:nth-child(5){left:13px;top:68px}.engineering-loop i{position:absolute;inset:50%;display:grid;place-items:center;width:48px;height:48px;margin:-24px;border-radius:50%;background:var(--ink);color:var(--paper);font:22px Georgia,serif;font-style:normal;animation:loop-spin 5s linear infinite reverse}.skills-section{overflow:hidden}.skill-marquees{margin:70px calc(clamp(20px,4.5vw,72px)*-1) 0}.skill-marquee{display:flex;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap}.skill-marquee>div{display:flex;min-width:max-content;animation:marquee 38s linear infinite}.skill-marquee--reverse>div{animation-direction:reverse;animation-duration:43s}.skill-marquee span{display:inline-flex;align-items:center;padding:16px 0;font:700 clamp(18px,2.5vw,31px) "DM Mono",monospace;letter-spacing:-.07em}.skill-marquee b{padding:0 24px;color:var(--lime)}.skill-marquee:hover>div{animation-play-state:paused}.site-footer span{display:flex;gap:12px;flex-wrap:wrap}.site-footer a{color:inherit;text-decoration:none}.site-footer a:hover{text-decoration:underline}@keyframes loop-spin{to{transform:rotate(360deg)}}@keyframes marquee{to{transform:translate(-50%)}}@media(max-width:1100px){.header-status{display:none}}@media(max-width:620px){.hero{background-size:54px 54px}.hero__bottom{gap:26px}.engineering-loop{width:164px;height:164px;margin-left:auto;flex-basis:164px}.engineering-loop span{font-size:8px}.engineering-loop span:nth-child(2){right:-25px;top:52px}.engineering-loop span:nth-child(3){right:-8px;bottom:27px}.engineering-loop span:nth-child(5){left:4px;top:52px}.hero__actions{gap:16px}.skill-marquees{margin-top:48px}.site-footer span{display:flex;text-align:left!important}}@media(prefers-reduced-motion:reduce){.engineering-loop,.engineering-loop i,.skill-marquee>div{animation:none!important}}.work-notice{display:flex;align-items:center;justify-content:space-between;gap:32px;margin-top:54px;padding:16px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}.work-notice span{display:flex;align-items:center;gap:8px;white-space:nowrap}.work-notice i{width:7px;height:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 3px #c7f43040}.work-notice p{max-width:540px;margin:0;font-size:13px;line-height:1.5;color:#55554e}.work-notice+.project-list{margin-top:74px}@media(max-width:620px){.work-notice{display:block;margin-top:38px}.work-notice p{margin-top:12px}.work-notice+.project-list{margin-top:52px}}.hero__title h1{position:relative;z-index:1;pointer-events:none}.hero__portrait{z-index:0;padding:0;cursor:pointer}.hero__portrait:focus-visible{outline:3px solid var(--lime);outline-offset:5px}.hero__portrait img{transition:none}.hero__portrait--pixel{background:#10100f}.hero__portrait--pixel img{object-fit:contain;padding:8px;image-rendering:pixelated}.hero__pixel-transition{position:absolute;z-index:1;inset:0;display:block;pointer-events:none;background-color:#c7f43038;background-image:linear-gradient(90deg,rgba(16,16,15,.72) 1px,transparent 1px),linear-gradient(rgba(16,16,15,.72) 1px,transparent 1px);mix-blend-mode:hard-light;animation:pixelate-portrait .42s steps(7,end) forwards}@keyframes pixelate-portrait{0%{opacity:0;background-size:5px 5px}18%{opacity:.28;background-size:10px 10px}70%{opacity:.9;background-size:42px 42px}to{opacity:0;background-size:64px 64px}}@media(prefers-reduced-motion:reduce){.hero__pixel-transition{animation:none}}.header-status i,.availability-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 3px #c7f4302e}.availability-dot{margin-right:8px}.work--coming{padding-top:clamp(70px,9vw,120px);padding-bottom:clamp(70px,9vw,120px)}.work-coming__content{display:grid;grid-template-columns:minmax(120px,.4fr) 1fr;gap:10px 7vw;align-items:end;margin-top:clamp(52px,7vw,96px);padding:clamp(28px,4vw,52px) 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}.work-coming__content>span{align-self:start;display:flex;align-items:center;gap:8px}.work-coming__content i{width:8px;height:8px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 4px #c7f43040}.work-coming__content h2{grid-column:2;margin:0;font-size:clamp(4.6rem,12vw,13rem);line-height:.72;letter-spacing:-.11em}.work-coming__content p{grid-column:2;max-width:430px;margin:26px 0 0;font-size:15px;line-height:1.55;color:#55554e}@media(max-width:620px){.work--coming{padding-top:72px;padding-bottom:72px}.work-coming__content{display:block;margin-top:46px}.work-coming__content h2{margin-top:42px;font-size:clamp(4.6rem,22vw,7rem)}.work-coming__content p{margin-top:28px;font-size:14px}}.contribution-grid{overflow-x:auto;overscroll-behavior-x:contain}.contribution-grid__body{width:max-content;min-width:100%;justify-content:center;overflow:visible}.contribution-grid__weekday{position:static}@media(max-width:620px){.contribution-day:hover:after{display:none}.contribution-grid__weekday{position:static}}.contact form label{padding:13px 0 20px;font-size:11px}.contact form input,.contact form textarea{padding-top:14px;font-size:clamp(18px,1.55vw,23px);line-height:1.35}.contact form textarea{min-height:88px}.contact form input[aria-invalid=true],.contact form textarea[aria-invalid=true]{box-shadow:0 2px #8d211d}.contact form button{margin-top:30px;padding:17px 0;font-size:13px;letter-spacing:.04em}.contact form small{margin-top:16px;font-size:10px}.contact-form-error,.contact-form-hint{margin:8px 0 0;font:10px DM Mono,monospace}.contact-form-error{color:#6f1713}.contact-form-hint{color:#294154}@media(max-width:620px){.contact form input,.contact form textarea{font-size:18px}.contact form textarea{min-height:88px}.contact form button{font-size:12px}}.contact form button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:16px 26px;border:2px solid #10100f;border-radius:4px;background:#10100f;color:#f1f0eb;font-weight:700;line-height:1.4;transition:background-color .2s ease,color .2s ease,transform .2s ease}.contact form button:hover:not(:disabled){background:var(--lime);color:#10100f;transform:translateY(-2px)}.contact form button:active:not(:disabled){transform:translateY(0)}.contact form button:focus-visible{outline:3px solid #f1f0eb;outline-offset:4px}.contact form button:disabled{opacity:.65;cursor:default}@media(max-width:620px){.contact form button{width:100%;font-size:13px}}.skill-marquee span{font-size:clamp(22px,3vw,38px)}.skills-grid article{grid-template-columns:138px 1fr;padding-top:25px;padding-bottom:25px}.skills-grid article span{font-size:11px}.skills-grid p{font-size:clamp(16px,1.25vw,19px);line-height:1.65}@media(max-width:620px){.skill-marquee span{font-size:20px}.skills-grid article{grid-template-columns:1fr;padding-top:20px;padding-bottom:20px}.skills-grid article span{font-size:10px}.skills-grid p{font-size:15px}}.mono,.section-label{font-size:11px;font-weight:500}.hero__bottom p,.body-copy,.experience p,.github__intro p,.work-coming__content p,.work-notice p{font-size:15px;font-weight:500}.header-status,.work-coming__content>span,.experience strong,.github-range,.github__notice,.contribution-fallback,.repo-list small,.repo-list p,.repo-list__meta,.contact-links a,.site-footer,.contact form label,.contact form small{font-size:11px;font-weight:500}.section-shell{padding-top:clamp(60px,7vw,104px);padding-bottom:clamp(60px,7vw,104px)}.about__grid{margin-top:clamp(40px,5vw,72px)}.skills-section h2,.experience__head h2{margin-top:56px}.experience__timeline{margin-top:64px}.github__intro{margin:56px 0}.work--coming{padding-top:clamp(58px,7vw,92px);padding-bottom:clamp(58px,7vw,92px)}.work-coming__content{margin-top:clamp(40px,5vw,64px)}.contact{min-height:auto;padding-top:clamp(62px,7vw,100px)}.contact h2{margin:clamp(62px,8vw,112px) 0 54px}@media(max-width:620px){.section-shell{padding-top:56px;padding-bottom:56px}.mono,.section-label{font-size:10px}.hero__bottom p,.body-copy,.experience p,.github__intro p,.work-coming__content p,.work-notice p{font-size:14px}.skills-section h2,.experience__head h2{margin-top:44px}.experience__timeline{margin-top:52px}.contact{padding-top:58px}.contact h2{margin:58px 0 42px}}body{letter-spacing:.012em}.hero h1{line-height:.88;letter-spacing:-.055em}.about h2,.work h2,.skills-section h2,.github h2,.contact h2,.experience__head h2{line-height:.95;letter-spacing:-.015em;overflow-wrap:anywhere}.expertise-card h2{letter-spacing:-.04em}.work-project h3{line-height:1.03;letter-spacing:-.035em}.experience h3{line-height:1.1;letter-spacing:-.025em}.case-study__hero h1{letter-spacing:-.06em}.hero__bottom p,.body-copy,.experience p,.github__intro p,.work-project p{font-size:16px;line-height:1.75;letter-spacing:.005em}.body-large{line-height:1.65;letter-spacing:.005em}.about .body-copy{margin-top:22px}.work__head{margin-top:40px}.work__head h2{flex-shrink:0}.work__head .body-copy{max-width:440px;margin-bottom:0}.experience strong{margin-top:12px;line-height:1.6}.experience p{margin-top:20px}.skills-grid p{line-height:1.8}.skills-grid article{row-gap:20px}.section-label,.work-project__content>.mono{line-height:1.6;gap:16px;flex-wrap:wrap}.project-tags{gap:8px}.project-tags span{font-size:10px;line-height:1.5;padding:6px 8px}.fact-grid span,.github-stats span{display:block;margin-top:8px;line-height:1.6}.repo-list h3{margin:8px 0;line-height:1.25;overflow-wrap:anywhere}.repo-list p,.github__notice,.contribution-fallback p{line-height:1.7}.repo-list p{font-size:12px}.contact-links a,.contact form label,.contact form small,.contact-form-error,.contact-form-hint{line-height:1.65}.contact form input,.contact form textarea{line-height:1.5}.site-footer,.site-footer strong{line-height:1.6}.case-study__hero h1{line-height:.95;letter-spacing:-.08em;overflow-wrap:anywhere;margin-bottom:28px}.case-study__hero>p{font-size:18px;line-height:1.75}.case-study__details p{line-height:1.6;letter-spacing:.005em}.case-study__details article{padding-top:36px;padding-bottom:36px}.case-study__details .mono,.case-study footer{line-height:1.6}.mobile-nav button{line-height:1.15}@media(max-width:620px){.body-copy,.experience p,.github__intro p,.work-project p{font-size:15px}.skills-grid p{font-size:16px}.work__head{margin-top:32px}.work__head .body-copy{margin-top:24px}.experience p{margin-top:18px}.case-study__hero>p{font-size:17px}.case-study__details article{gap:18px;padding-top:28px;padding-bottom:28px}}.work-carousel{margin-top:clamp(52px,7vw,96px);overflow:hidden}.work-project--carousel{margin:0;min-height:clamp(380px,42vw,610px)}.work-carousel__controls{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:28px;padding-top:18px;border-top:1px solid var(--line);font:700 10px DM Mono,monospace;letter-spacing:.06em}.work-carousel__controls>button{border:0;background:transparent;padding:10px 0}.work-carousel__controls>div{display:flex;gap:7px}.work-carousel__controls>div button{width:28px;height:3px;padding:0;border:0;background:#aaa9a1}.work-carousel__controls>div button.active{background:var(--ink)}.work-carousel__controls>button:focus-visible,.work-carousel__controls>div button:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.theme-dark .work-carousel__controls>div button{background:#5b5a54}.theme-dark .work-carousel__controls>div button.active{background:var(--lime)}.theme-dark .work-carousel__controls>button:focus-visible,.theme-dark .work-carousel__controls>div button:focus-visible{outline-color:var(--lime)}@media(max-width:620px){.work-carousel{margin-top:46px}.work-project--carousel{display:block;min-height:0}.work-project--carousel .work-project__content{margin-top:28px}.work-carousel__controls{margin-top:34px;font-size:9px}.work-carousel__controls>div button{width:20px}.work-carousel__controls>button{padding:12px 0}}.project-art--placeholder{isolation:isolate}.project-art__placeholder-label{position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%,-50%);width:max-content;max-width:calc(100% - 48px);padding:11px 13px;border:1px solid rgba(247,246,239,.72);background:#10100f7a;font:700 clamp(10px,1.4vw,14px)/1.45 "DM Mono",monospace;letter-spacing:.08em;text-align:center}.work-project__actions{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-top:12px}.work-project__actions .text-link{margin-top:0;text-decoration:none;white-space:nowrap}.work-project__actions .text-link:last-child{margin-left:auto}.work-project__actions a.text-link{color:var(--ink)}.theme-dark .work-project__actions a.text-link{color:#fff}.live-project-link{min-height:52px;padding:16px 24px!important;border:2px solid var(--ink)!important;border-radius:4px!important;background:var(--ink)!important;color:var(--paper)!important;font-size:13px!important;line-height:1.4;justify-content:center;transition:background-color .2s ease,color .2s ease,transform .2s ease!important}.live-project-link:hover{background:var(--lime)!important;color:var(--ink)!important;transform:translateY(-2px)}.live-project-link:active{transform:translateY(0)}.live-project-link:focus-visible{outline:3px solid var(--ink);outline-offset:4px}.theme-dark .live-project-link{border-color:var(--paper)!important;background:var(--paper)!important;color:var(--ink)!important}.theme-dark .live-project-link:hover{border-color:var(--lime)!important;background:var(--lime)!important;color:var(--ink)!important}@media(max-width:620px){.live-project-link{min-height:50px;padding:14px 18px!important;font-size:12px!important}}@media(max-width:380px){.work-project__actions{gap:10px}.work-project__actions .text-link{font-size:10px;gap:6px}.live-project-link{padding:13px 14px!important;font-size:10px!important}}.live-project-link,.theme-dark .live-project-link{border-color:#10100f!important;background:#10100f!important;color:#f1f0eb!important}.live-project-link:hover,.theme-dark .live-project-link:hover{border-color:var(--lime)!important;background:#10100f!important;color:var(--lime)!important;box-shadow:0 0 0 3px #c7f43033,0 8px 22px #c7f43029;transform:translateY(-2px)}.live-project-link:focus-visible{outline-color:var(--lime)}.work-project__visual{display:block;width:100%}@media(max-width:620px){.site-header{gap:10px}.brand{padding:0;white-space:nowrap}.theme-toggle{margin-right:0!important;white-space:nowrap}.menu-button{padding:0;white-space:nowrap}.hero{min-height:auto;display:flex;justify-content:flex-start;gap:0;padding:88px 16px max(32px,env(safe-area-inset-bottom));background-size:54px 54px}.hero__meta{position:relative;z-index:2}.hero__title{display:flex;flex-direction:column;margin:44px 0 28px}.hero h1,.hero h1:nth-child(2),.hero h1:nth-child(3){margin-left:0;font-size:clamp(2rem,13vw,5rem);line-height:1;letter-spacing:-.085em}.hero__portrait{position:relative;z-index:0;top:auto;right:auto;align-self:flex-end;width:clamp(132px,38vw,200px);height:auto;aspect-ratio:3/4;margin:24px 0 0;mask-image:none;-webkit-mask-image:none}.hero__bottom{display:block;margin-top:0}.hero__bottom p{max-width:400px;margin:0;font-size:15px;line-height:1.7}.hero__actions{gap:12px 20px;margin-top:20px}.hero__actions .text-link{min-height:44px;align-items:center;padding:8px 0;font-size:11px;gap:8px}.hero__active{position:static;display:block;writing-mode:horizontal-tb;margin-top:28px;font-size:9px}}.contact-verification{margin-top:20px;min-width:0}.contact-verification>div{width:100%;min-height:65px}.project-art--mvolo>img,.work-project__visual:hover .project-art--mvolo>img{object-fit:contain;background:#10100f;filter:none;transform:none}.project-art--mvolo .project-art__grid,.project-art--mvolo .project-art__shape{display:none}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}
