:root{--background:#0b0b0b;--text-primary:#fff;--surface:#141414;--border:#2a2a2a;--text-secondary:#a0a0a0;--text-muted:#707070;--accent:#d8d8d8;--focus:#fff;--space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:32px;--space-6:48px;--space-7:64px;--space-8:96px;--space-9:128px;--container:1120px}
*{box-sizing:border-box}html{background:var(--background);color:var(--text-primary)}body{background:var(--background);min-height:100vh;color:var(--text-primary);margin:0;font-family:Geist,Arial,sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button,input,textarea,select{font:inherit}:focus-visible{outline:1px solid var(--focus);outline-offset:4px}.page-shell{flex-direction:column;min-height:100vh;display:flex}.site-main{flex:1}.container{width:min(100% - 32px, var(--container));margin:0 auto}.section{padding:var(--space-7) 0;border-top:1px solid var(--border)}.sectionHeader{justify-content:space-between;align-items:end;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.sectionKicker,.eyebrow{margin:0 0 var(--space-2);color:var(--text-muted);letter-spacing:0;text-transform:uppercase;font-family:JetBrains Mono,Consolas,monospace;font-size:.75rem}.sectionTitle{letter-spacing:0;max-width:720px;margin:0;font-size:clamp(2rem,5vw,4.5rem);line-height:1}.sectionText{max-width:680px;margin:var(--space-3) 0 0;color:var(--text-secondary);font-size:1rem}.grid{gap:var(--space-3);grid-template-columns:repeat(12,1fr);display:grid}.stack{gap:var(--space-3);display:grid}.mono{font-family:JetBrains Mono,Consolas,monospace}@media (max-width:900px){.grid{grid-template-columns:repeat(8,1fr)}.sectionHeader{display:grid}}@media (max-width:640px){.container{width:min(100% - 32px, var(--container))}.section{padding:var(--space-6) 0}.sectionHeader{gap:var(--space-3);margin-bottom:var(--space-4)}.sectionTitle{overflow-wrap:anywhere;font-size:2.25rem;line-height:1.05}.sectionText{line-height:1.7}.grid{grid-template-columns:repeat(4,1fr)}}
.siteHeader{z-index:10;border-bottom:1px solid var(--border);background:#0b0b0beb;position:sticky;top:0}.headerInner{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:64px;display:flex}.brandLink{align-items:center;gap:var(--space-2);font-weight:600;display:inline-flex}.brandIcon{object-fit:cover;border-radius:50%;width:32px;height:32px}.menuButton,.menuBackdrop{display:none}.siteNav{align-items:center;gap:var(--space-3);color:var(--text-secondary);font-size:.875rem;display:flex;overflow:visible}.desktopNavigation{align-items:center;gap:var(--space-3);display:flex}.mobileNavigation{display:none}.navLink{white-space:nowrap;border-bottom:1px solid #0000;align-items:center;min-height:40px;transition:color .2s,border-color .2s;display:inline-flex}.navLink:hover,.navLink[data-active=true]{color:var(--text-primary);border-color:var(--text-primary)}.moreNavigation{align-items:center;display:flex;position:relative}.moreButton{align-items:center;gap:var(--space-1);min-height:48px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #0000;padding:0;transition:color .2s,border-color .2s;display:inline-flex}.moreButton:hover,.moreButton[data-active=true],.moreButton[aria-expanded=true]{color:var(--text-primary);border-color:var(--text-primary)}.moreButton svg{transition:transform .2s}.moreButton[aria-expanded=true] svg{transform:rotate(180deg)}.moreNavigationPanel{top:calc(100% + var(--space-2));z-index:3;border:1px solid var(--text-muted);background:var(--surface);width:176px;display:none;position:absolute;right:0}.moreNavigationPanel[data-open=true]{display:grid}.moreNavigationLink{min-height:44px;padding:0 var(--space-3);border-bottom:1px solid var(--border);color:var(--text-secondary);border-left:1px solid #0000;align-items:center;display:flex}.moreNavigationLink:last-child{border-bottom:0}.moreNavigationLink:hover,.moreNavigationLink[data-active=true]{border-left-color:var(--text-primary);color:var(--text-primary)}.headerContactLinks{border-left:1px solid var(--border);padding-left:var(--space-2);align-items:center;display:flex}.headerContactLink{width:44px;height:44px;color:var(--text-muted);flex:0 0 44px;place-items:center;transition:color .2s,background-color .2s;display:inline-grid}.headerContactLink:hover{background:var(--surface);color:var(--text-primary)}.headerContactIcon{flex-basis:18px;width:18px;height:18px}.languageSwitcher{margin-left:var(--space-1);border:1px solid var(--border);flex:none;display:inline-flex}.languageOption{border:0;border-right:1px solid var(--border);width:40px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;place-items:center;padding:0;font-family:JetBrains Mono,Consolas,monospace;font-size:.75rem;display:inline-grid}.languageOption:last-child{border-right:0}.languageOption[aria-pressed=true]{box-shadow:inset 0 0 0 1px var(--text-primary);color:var(--text-primary)}.siteFooter{border-top:1px solid var(--border);color:var(--text-muted)}.footerInner{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:96px;font-size:.875rem;display:flex}.footerBrand{align-items:center;gap:var(--space-2);color:var(--text-primary);display:inline-flex}.footerBrand p{margin:0}.footerCopyright{color:var(--text-muted);font-family:JetBrains Mono,Consolas,monospace;font-size:.75rem}.footerInner nav{gap:var(--space-3);flex-wrap:wrap;display:flex}.footerContactLink{align-items:center;gap:var(--space-2);min-height:32px;color:var(--text-secondary);transition:color .2s;display:inline-flex}.footerContactIcon{flex-basis:16px;width:16px;height:16px}.footerInner a:hover,.footerContactLink:hover{color:var(--text-primary)}@media (max-width:640px){.headerInner{flex-direction:row;min-height:64px;padding:0}.menuButton{width:44px;height:44px;color:var(--text-primary);cursor:pointer;touch-action:manipulation;background:0 0;border:none;flex:0 0 44px;justify-content:center;align-items:center;display:inline-flex}.menuButton svg{width:24px;height:24px}.menuBackdrop{z-index:1;opacity:0;pointer-events:none;cursor:pointer;touch-action:manipulation;background:#000000b8;border:0;padding:0;transition:opacity .2s;display:block;position:fixed;inset:64px 0 0}.menuBackdrop[data-open=true]{opacity:1}.siteNav{z-index:2;padding:0 var(--space-3) var(--space-3);background:var(--surface);border-top:1px solid var(--border);border-bottom:1px solid var(--text-muted);gap:0;display:none;position:absolute;top:100%;left:0;right:0;overflow:visible}.siteNav[data-open=true]{animation:.2s ease-out mobile-nav-in;display:block}.desktopNavigation{display:none}.mobileNavigation{display:grid}.navLink{min-height:48px;padding:0 var(--space-3);border-bottom-color:var(--border);border-left:1px solid #0000}.navLink:first-child{border-top:1px solid var(--border)}.navLink:hover,.navLink[data-active=true]{border-bottom-color:var(--border);border-left-color:var(--text-primary)}.languageSwitcher{width:fit-content;margin:0}.languageOption{width:48px;height:48px}.mobileNavigationUtilities{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-3);padding:var(--space-3);border-top:1px solid var(--text-muted);flex-wrap:wrap;display:flex}.mobileHeaderContactLinks{border-left:0;padding-left:0}.mobileHeaderContactLinks .headerContactLink{flex-basis:48px;width:48px;height:48px}.footerInner{min-height:auto;padding:var(--space-4) 0;flex-direction:column;justify-content:center;align-items:center}.footerInner nav{gap:var(--space-2)}.footerContactLink{min-height:48px;padding:0 var(--space-2)}}
.buttonLink{justify-content:center;align-items:center;gap:var(--space-2);border:1px solid var(--border);min-height:48px;padding:0 var(--space-4);color:var(--text-primary);transition:background .2s,border-color .2s,color .2s;display:inline-flex}.buttonLink[data-variant=primary]{background:var(--text-primary);border-color:var(--text-primary);color:var(--background)}.buttonLink[data-variant=secondary]{background:0 0}.buttonLink[data-variant=ghost]{min-height:40px;color:var(--text-secondary);border-color:#0000;padding:0}.buttonLink:hover{border-color:var(--text-primary)}.buttonLink[data-variant=ghost]:hover{color:var(--text-primary)}.buttonIcon{background:currentColor;flex:0 0 20px;width:20px;height:20px;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.buttonIcon[data-icon=github]{-webkit-mask-image:url(/icons/github.svg);mask-image:url(/icons/github.svg)}.buttonIcon[data-icon=x]{-webkit-mask-image:url(/icons/x.svg);mask-image:url(/icons/x.svg)}.buttonIcon[data-icon=email]{-webkit-mask-image:url(/icons/email.svg);mask-image:url(/icons/email.svg)}.card{border:1px solid var(--border);background:var(--surface);min-width:0;padding:var(--space-4);display:block}.cardLink{transition:border-color .2s,transform .2s}.cardLink:hover{border-color:var(--text-secondary);transform:translateY(-4px)}.cardMeta{margin:0 0 var(--space-2);color:var(--text-muted);letter-spacing:0;text-transform:uppercase;font-family:JetBrains Mono,Consolas,monospace;font-size:.75rem}.cardTitle{overflow-wrap:anywhere;margin:0;font-size:1.25rem;line-height:1.25}.cardText{margin:var(--space-3) 0 0;color:var(--text-secondary)}.cardBody{gap:var(--space-3);margin-top:var(--space-4);display:grid}.projectImage{border:1px solid var(--border);background:#0f0f0f;grid-template-rows:auto 1fr;min-height:220px;display:grid}.projectImageTop{gap:var(--space-2);padding:var(--space-3);border-bottom:1px solid var(--border);display:flex}.projectImageTop span{border:1px solid var(--text-muted);width:8px;height:8px}.projectImageBody{align-content:end;gap:var(--space-2);padding:var(--space-4);display:grid}.projectImageBody p{overflow-wrap:anywhere;margin:0;font-size:1.5rem;line-height:1.15}.projectImageBody span,.metaValue{color:var(--text-secondary);font-family:JetBrains Mono,Consolas,monospace;font-size:.8125rem}.tagList{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.tag{border:1px solid var(--border);padding:var(--space-1) var(--space-2);color:var(--text-secondary);font-family:JetBrains Mono,Consolas,monospace;font-size:.75rem}.emptyState{border:1px solid var(--border);background:var(--surface);padding:var(--space-5)}.emptyState h2{margin:0;font-size:1.5rem}.emptyState p{max-width:560px;margin:var(--space-3) 0 var(--space-4);color:var(--text-secondary)}.contactLinks{gap:var(--space-2);flex-wrap:wrap;display:flex}@media (max-width:640px){.buttonLink{touch-action:manipulation;max-width:100%}.card{padding:var(--space-4)}.projectImage{min-height:192px}.projectImageBody{padding:var(--space-3)}.cardText{line-height:1.7}.emptyState{padding:var(--space-4)}.contactLinks .buttonLink{min-width:48px}.tag{overflow-wrap:anywhere}}
.hero{min-height:calc(100svh - 64px);padding:var(--space-7) 0;align-items:center;display:grid}.heroInner{gap:var(--space-4);grid-template-columns:minmax(0,8fr) minmax(280px,4fr);align-items:center;display:grid}.heroContent h1{letter-spacing:0;overflow-wrap:anywhere;max-width:880px;margin:0;font-size:5.5rem;line-height:.95}.projectHero h1{letter-spacing:0;overflow-wrap:anywhere;max-width:880px;margin:0;font-size:clamp(3rem,9vw,7.5rem);line-height:.95}.heroContent p:not(.eyebrow){max-width:640px;margin:var(--space-3) 0 0;color:var(--text-secondary);font-size:1.125rem}.projectHero p:not(.eyebrow){max-width:640px;margin:var(--space-4) 0 0;color:var(--text-secondary);font-size:1.125rem}.heroActions{gap:var(--space-2);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.heroPanel{border:1px solid var(--border);background:var(--surface);padding:var(--space-4)}.heroPanel h2{margin:0;font-size:1.25rem}.heroPanel p:last-child{margin:var(--space-3) 0 0;color:var(--text-secondary)}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-6{grid-column:span 6}.projectCard{align-content:start;display:grid}.projectHero{padding:var(--space-8) 0 var(--space-7)}.projectHeroGrid{gap:var(--space-5);grid-template-columns:minmax(0,7fr) minmax(320px,5fr);align-items:end;display:grid}.projectMetaGrid{gap:var(--space-4);grid-template-columns:1fr 1fr 1fr;display:grid}.metaValue{margin:0}.caseStudy{gap:var(--space-5);max-width:820px;display:grid}.caseStudySection{gap:var(--space-4);grid-template-columns:200px minmax(0,1fr);display:grid}.caseStudySection h2{margin:0;font-size:1rem}.caseStudySection p{color:var(--text-secondary);margin:0}@media (max-width:900px){.heroInner,.projectHeroGrid,.projectMetaGrid{grid-template-columns:1fr}.heroInner{gap:var(--space-4)}.heroContent h1{font-size:4.25rem}.span-3,.span-4,.span-6{grid-column:span 4}.caseStudySection{gap:var(--space-2);grid-template-columns:1fr}}@media (max-width:640px){.hero{min-height:calc(100svh - 64px);padding:var(--space-5) 0}.heroInner{gap:var(--space-3)}.heroContent h1,.projectHero h1{font-size:2.75rem;line-height:1}.heroContent p:not(.eyebrow){margin-top:var(--space-2);font-size:1rem;line-height:1.7}.projectHero{padding:var(--space-6) 0}.projectHeroGrid{gap:var(--space-4)}.projectHero p:not(.eyebrow){margin-top:var(--space-3);font-size:1rem;line-height:1.7}.heroActions{margin-top:var(--space-3);display:grid}.heroActions .buttonLink{width:100%}.projectMetaGrid{gap:var(--space-4)}.caseStudy{gap:var(--space-5)}.caseStudySection{gap:var(--space-2)}.caseStudySection p{line-height:1.7}}@media (max-width:390px){.heroContent h1,.projectHero h1{font-size:2.5rem}}
html[data-app-loading=true]{overflow:hidden}.loadingScreen{z-index:100;padding:var(--space-4);background:var(--background);opacity:1;place-items:center;transition:opacity .25s ease-out;display:grid;position:fixed;inset:0}.loadingScreen[data-loading-state=exiting]{pointer-events:none;opacity:0}.loadingScreen[data-loading-state=exiting] .loadingContent{opacity:0;transform:translateY(-4px)scale(.96)}.loadingContent{justify-items:center;gap:var(--space-3);transition:opacity .25s ease-out,transform .25s ease-out;display:grid}.loadingLogoReveal{border-radius:50%;width:64px;height:64px;animation:.52s ease-out both loading-logo-reveal;display:block;overflow:hidden}.loadingLogo{object-fit:cover;width:64px;height:64px;animation:.52s ease-out both loading-logo-settle}.loadingBrand{color:var(--text-primary);margin:0;font-size:1rem;font-weight:600;animation:.36s ease-out .28s both loading-brand-in}[data-reveal-ready=true] [data-reveal]{opacity:0;filter:none;will-change:opacity, transform, filter;transition:opacity .5s ease-out,transform .5s ease-out,filter .5s ease-out;transform:translateY(16px)}[data-reveal-ready=true] [data-reveal][data-reveal-variant=hero]{filter:blur(8px);transition-duration:.65s;transition-timing-function:cubic-bezier(.16,1,.3,1);transform:translateY(24px)}[data-reveal-ready=true] [data-reveal][data-reveal-variant=panel]{transition-duration:.62s;transition-timing-function:cubic-bezier(.16,1,.3,1);transform:translateY(20px)scale(.96)}[data-reveal-ready=true] [data-reveal][data-reveal-variant=heading]{filter:blur(6px);transition-duration:.56s;transition-timing-function:cubic-bezier(.16,1,.3,1);transform:translateY(16px)}[data-reveal-ready=true] [data-reveal][data-reveal-variant=card]{transition-duration:.62s;transition-timing-function:cubic-bezier(.16,1,.3,1);transform:translateY(24px)scale(.97)}[data-reveal-ready=true] [data-reveal][data-reveal-delay="1"]{transition-delay:90ms}[data-reveal-ready=true] [data-reveal][data-reveal-delay="2"]{transition-delay:.18s}[data-reveal-ready=true] [data-reveal][data-reveal-delay="3"]{transition-delay:.27s}[data-reveal-ready=true] [data-reveal][data-reveal-state=visible]{opacity:1;filter:none;will-change:auto;transform:translateY(0)}@keyframes mobile-nav-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes loading-logo-reveal{0%{clip-path:inset(100% 0 0)}to{clip-path:inset(0)}}@keyframes loading-logo-settle{0%{transform:translateY(8px)scale(1.08)}to{transform:translateY(0)scale(1)}}@keyframes loading-brand-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.loadingScreen,.loadingContent,.loadingLogoReveal,.loadingLogo,.loadingBrand{transition:none;animation:none}[data-reveal-ready=true] [data-reveal]{opacity:1;filter:none;transition:none;transform:none}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}

