:root{--bg:oklch(14% .012 155);--surface:oklch(18% .014 155);--surface-strong:oklch(22% .016 155);--line:oklch(31% .018 155);--line-soft:oklch(25% .016 155);--text:oklch(87% .012 155);--muted:oklch(68% .018 155);--dim:oklch(50% .018 155);--accent:oklch(76% .15 150);--accent-soft:oklch(76% .15 150/.13);--accent-line:oklch(76% .15 150/.32);--danger-soft:oklch(63% .11 32/.14);--shadow:0 30px 80px oklch(7% .01 155/.45);--font:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-family:var(--font);color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0;overflow-x:hidden}body::selection{color:oklch(12% .012 155);background:var(--accent)}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}img{max-width:100%;display:block}#root{min-height:100svh}main{background:radial-gradient(circle at 80% 14%, oklch(42% .045 152/.1), transparent 30rem), linear-gradient(180deg, oklch(15.5% .011 155), var(--bg) 38rem);min-height:100svh;position:relative;overflow:hidden}.ambient-grid{z-index:0;pointer-events:none;contain:paint;background-image:linear-gradient(oklch(86% .01 155/.032) 1px,#0000 1px),linear-gradient(90deg,oklch(86% .01 155/.032) 1px,#0000 1px);background-size:64px 64px;animation:42s linear infinite grid-drift;position:fixed;inset:-15% 0 0;-webkit-mask-image:linear-gradient(oklch(0% 0 0/.72),#0000 74%);mask-image:linear-gradient(oklch(0% 0 0/.72),#0000 74%)}.site-header,.hero-section,.section-strip,.content-section,.closing-section{z-index:1;width:min(1040px,100% - 40px);margin-inline:auto;position:relative}.site-header{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;min-height:76px;display:flex}.brand-mark,.site-header nav,.hero-actions,.contact-actions,.button,.project-meta span,.project-tags,.repo-stack,.repo-stats{align-items:center;display:flex}.brand-mark{color:var(--text);text-decoration:none}.brand-mark strong{font-size:1rem;font-weight:800}.site-header nav{color:var(--muted);gap:clamp(16px,3vw,34px);font-size:.92rem}.site-header nav a,.language-toggle{color:inherit;text-decoration:none;transition:color .18s,transform .18s}.site-header nav a:hover,.language-toggle:hover{color:var(--text);transform:translateY(-1px)}.language-toggle{border:1px solid var(--line-soft);font:inherit;cursor:pointer;background:0 0;border-radius:999px;padding:5px 9px;font-size:.78rem;font-weight:760}.language-toggle:focus-visible,.button:focus-visible,.brand-mark:focus-visible,.project-row:focus-visible,.repo-panel:focus-visible,.site-header nav a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.hero-section{grid-template-columns:minmax(0,1fr) minmax(300px,.52fr);align-items:center;gap:clamp(34px,5vw,68px);padding-block:clamp(34px,5vw,60px) clamp(46px,6vw,76px);display:grid}.hero-copy{max-width:720px}.eyebrow{color:var(--accent);letter-spacing:0;text-transform:none;margin:0 0 18px;font-size:.82rem;font-weight:800}h1,h2,p{margin:0}h1{max-width:15.8ch;color:var(--text);letter-spacing:0;font-size:clamp(2.6rem,5.3vw,4.55rem);line-height:1}h2{letter-spacing:0;max-width:22ch;font-size:clamp(1.85rem,3.2vw,3.05rem);line-height:1.08}.hero-lede{max-width:66ch;color:var(--muted);margin-top:22px;font-size:clamp(.98rem,1.2vw,1.08rem);line-height:1.68}.hero-actions,.contact-actions{flex-wrap:wrap;gap:12px;margin-top:28px}.button{border:1px solid #0000;border-radius:8px;justify-content:center;gap:10px;min-height:46px;padding:0 18px;font-weight:750;text-decoration:none;transition:transform .18s,background .18s,border-color .18s,box-shadow .18s}.button:hover{transform:translateY(-2px)}.button.primary{color:oklch(13% .012 155);background:var(--accent);box-shadow:0 14px 34px oklch(76% .15 150/.14)}.button.secondary{color:var(--text);border-color:var(--line);background:oklch(22% .014 155/.74)}.button.secondary:hover{border-color:var(--accent-line);background:var(--surface-strong)}.project-ledger{border:1px solid var(--line);contain:content;background:oklch(18% .012 155/.88);border-radius:8px;overflow:hidden;box-shadow:0 24px 70px oklch(7% .01 155/.34)}.stat-row{border-bottom:1px solid var(--line-soft);grid-template-columns:1fr auto;gap:18px;padding:18px 20px;transition:background .18s;display:grid}.stat-row:hover{background:oklch(24% .018 155/.42)}.stat-row:last-child{border-bottom:0}.stat-row span{color:var(--muted)}.stat-row strong{color:var(--text);font-size:clamp(1.5rem,3vw,2.4rem);line-height:1}.section-strip{border-block:1px solid var(--line-soft);flex-wrap:wrap;gap:10px;padding-block:18px;display:flex}.section-strip span,.project-tags span,.repo-stack span{border:1px solid var(--line-soft);color:var(--muted);background:oklch(19% .014 155/.74);border-radius:999px;font-size:.9rem}.section-strip span{padding:8px 12px}.reveal{will-change:transform;animation:.36s cubic-bezier(.16,1,.3,1) both settle-in}.delay-1{animation-delay:80ms}.content-section{padding-block:clamp(54px,8vw,92px)}.motion-surface{opacity:0;transform:translateY(22px)}.motion-surface.is-visible{animation:surface-in .76s cubic-bezier(.16, 1, .3, 1) var(--stagger,0s) forwards}.content-section,.closing-section{content-visibility:auto;contain-intrinsic-size:760px}.section-heading{grid-template-columns:minmax(0,700px);align-items:end;gap:10px;margin-bottom:24px;display:grid}.section-heading.compact{display:block}.section-heading h2{max-width:650px}.section-heading p:not(.eyebrow){max-width:54ch;color:var(--muted);grid-column:1;margin-top:14px;line-height:1.7}.project-list{border-top:1px solid var(--line)}.motion-list .project-row{opacity:0;animation:row-in .64s cubic-bezier(.16, 1, .3, 1) var(--stagger,0s) forwards;transform:translateY(18px)}.project-row{border-bottom:1px solid var(--line-soft);grid-template-columns:48px 54px minmax(0,1fr) minmax(126px,auto) minmax(146px,auto) 24px;align-items:center;gap:20px;padding:18px 0;text-decoration:none;transition:background .18s,transform .18s,border-color .18s,box-shadow .18s;display:grid}.project-row:hover{border-color:var(--accent-line);background:radial-gradient(circle at 14% 50%, oklch(76% .15 150/.1), transparent 13rem), linear-gradient(90deg, transparent, var(--accent-soft), transparent);transform:translate(6px)translateY(-1px);box-shadow:0 18px 50px oklch(8% .01 155/.28)}.project-rank{color:var(--dim);font-weight:800}.project-row img{background:var(--surface);border-radius:8px;width:54px;height:54px;transition:transform .22s,box-shadow .22s}.project-icon-fallback{background:linear-gradient(135deg, var(--accent-soft), transparent), var(--surface);border-radius:8px;width:54px;height:54px}.project-row:hover img,.project-row:hover .project-icon-fallback{box-shadow:0 0 0 1px var(--accent-line), 0 14px 36px oklch(76% .15 150/.12);transform:scale(1.045)rotate(-1deg)}.project-main{gap:7px;min-width:0;display:grid}.project-main strong{font-size:1.1rem}.project-main span{color:var(--muted);line-height:1.55}.project-meta{color:var(--text);gap:8px;font-weight:750;display:grid}.project-meta span{justify-content:flex-end;gap:8px}.project-meta svg{color:var(--accent)}.project-tags{flex-wrap:wrap;justify-content:flex-end;gap:8px}.project-tags span,.repo-stack span{padding:6px 10px}.row-arrow{color:var(--dim);transition:color .18s,transform .18s}.project-row:hover .row-arrow{color:var(--accent);transform:translate(2px,-2px)}.github-section{border-top:1px solid var(--line-soft)}.repo-layout{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:42px;display:grid}.repo-panel{border:1px solid var(--line);min-height:260px;color:var(--text);background:var(--surface);border-radius:8px;align-content:start;gap:18px;padding:clamp(24px,4vw,36px);text-decoration:none;transition:transform .18s,border-color .18s,background .18s;display:grid}.repo-panel:hover{border-color:var(--accent-line);background:radial-gradient(circle at 16% 16%, oklch(76% .15 150/.09), transparent 12rem), var(--surface-strong);transform:translateY(-6px)}.repo-icon{width:48px;height:48px;color:var(--accent);background:var(--accent-soft);border-radius:8px;place-items:center;display:grid}.repo-name{justify-content:space-between;align-items:baseline;gap:20px;display:flex}.repo-name strong{font-size:1.5rem}.repo-name span,.repo-panel p,.repo-stats{color:var(--muted)}.repo-panel p{max-width:58ch;line-height:1.65}.repo-stack,.repo-stats{flex-wrap:wrap;gap:8px}.repo-stats{margin-top:auto;font-size:.92rem}.closing-section{border-top:1px solid var(--line-soft);grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:clamp(26px,6vw,80px);padding-block:clamp(52px,8vw,86px);display:grid}.closing-section h2{max-width:18ch}.contact-actions{justify-content:flex-end;margin-top:0}@media (width<=920px){.hero-section,.section-heading,.closing-section{grid-template-columns:1fr}.hero-section{min-height:auto;padding-block:38px 42px}.project-ledger{max-width:560px}.project-row{grid-template-columns:38px 48px minmax(0,1fr) 22px;gap:14px}.project-meta,.project-tags{grid-column:3/-1;justify-content:flex-start}.project-meta{flex-wrap:wrap;display:flex}.project-meta span{justify-content:flex-start}.repo-layout{grid-template-columns:1fr}.contact-actions{justify-content:flex-start}}@media (width<=640px){main{background:radial-gradient(circle at 86% 8%, oklch(42% .045 152/.08), transparent 18rem), linear-gradient(180deg, oklch(15% .011 155), var(--bg) 28rem)}.site-header,.hero-section,.section-strip,.content-section,.closing-section{width:min(100% - 24px,1040px)}.site-header{flex-direction:row;align-items:center;gap:12px;min-height:62px;padding-block:0}.site-header nav{flex:1;justify-content:flex-end;gap:14px;width:auto;font-size:.84rem}.site-header nav a:first-child{display:none}.language-toggle{padding:4px 8px;font-size:.72rem}.hero-section{gap:24px;padding-block:30px}h1{max-width:13.6ch;font-size:clamp(2.15rem,10vw,2.72rem);line-height:1.02}h2{font-size:clamp(1.6rem,8vw,2.15rem)}.hero-lede{margin-top:16px;font-size:.96rem;line-height:1.58}.hero-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:22px;display:grid}.button{width:auto;min-height:44px;padding:0 12px;font-size:.95rem}.project-ledger{border-radius:7px;max-width:none;animation:none}.stat-row{gap:12px;padding:14px 16px}.stat-row span{font-size:.92rem}.stat-row strong{font-size:clamp(1.35rem,8vw,1.85rem)}.section-strip{gap:8px;padding-block:14px}.section-strip span,.project-tags span,.repo-stack span{font-size:.82rem}.section-strip span{padding:7px 10px}.content-section{padding-block:42px}.section-heading{margin-bottom:20px;display:block}.section-heading p:not(.eyebrow){margin-top:12px;font-size:.94rem;line-height:1.58}.contact-actions{width:100%}.project-row{grid-template-columns:28px 44px minmax(0,1fr);gap:12px;padding:16px 0}.row-arrow{display:none}.project-row img,.project-icon-fallback{width:44px;height:44px}.project-main{gap:5px}.project-main strong{font-size:1rem}.project-main span{-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.45;display:-webkit-box;overflow:hidden}.project-meta,.project-tags{grid-column:1/-1;padding-left:84px}.project-meta{gap:14px}.project-tags{margin-top:-2px}.repo-layout{gap:12px;margin-top:24px}.repo-panel{gap:14px;min-height:auto;padding:20px}.repo-icon{width:40px;height:40px}.repo-name{gap:4px;display:grid}.repo-name strong{font-size:1.25rem}.repo-panel p{line-height:1.55}.closing-section{gap:22px}.closing-section h2{max-width:13ch}.contact-actions{gap:10px;display:grid}}@media (width<=420px){.site-header,.hero-section,.section-strip,.content-section,.closing-section{width:min(100% - 20px,1040px)}.site-header nav{gap:11px;font-size:.8rem}h1{max-width:13ch;font-size:clamp(1.95rem,9.4vw,2.42rem)}.hero-lede{font-size:.92rem}.button{font-size:.9rem}.project-row{grid-template-columns:24px 40px minmax(0,1fr);gap:10px}.project-row img,.project-icon-fallback{width:40px;height:40px}.project-meta,.project-tags{padding-left:74px}.stat-row{padding-inline:14px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important}.motion-surface,.motion-list .project-row{opacity:1!important;filter:none!important;transform:none!important}}@keyframes settle-in{0%{transform:translateY(14px)}to{transform:translateY(0)}}@keyframes surface-in{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes row-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes grid-drift{0%{background-position:0 0,0 0}to{background-position:64px 64px,64px 64px}}
