:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f7f8f9;--surface:#fff;--ink:#0d1214;--muted:#56616a;--line:#0a19231c;--accent-1:#0d9488;--accent-2:#0284c7;--accent-3:#7c3aed;--amber:#d97706;--button-1:#0f766e;--button-2:#0369a1;--button-ink:#fff;--glow:.22;--grid:#0a19230d;--measure:76rem;--sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0a0c0e;--surface:#101316;--ink:#f4f6f7;--muted:#a1a8af;--line:#ffffff17;--accent-1:#5eead4;--accent-2:#38bdf8;--accent-3:#a78bfa;--amber:#fbbf24;--button-1:#5eead4;--button-2:#38bdf8;--button-ink:#04120f;--glow:.3;--grid:#ffffff09}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:5rem}body{background:var(--bg);color:var(--ink);font:1.0625rem/1.6 var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit;text-underline-offset:.2em}:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}.page{isolation:isolate;position:relative;overflow-x:clip}.backdrop{z-index:-1;pointer-events:none;height:52rem;inset:0 0 auto;overflow:hidden}.backdrop,.backdrop:before,.glow{position:absolute}.backdrop:before{content:"";background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:4rem 4rem;inset:0;-webkit-mask-image:radial-gradient(70% 75% at 50% 0,#000,#0000);mask-image:radial-gradient(70% 75% at 50% 0,#000,#0000)}.glow{background:radial-gradient(ellipse 45% 50% at 22% 50%,var(--accent-1),transparent),radial-gradient(ellipse 45% 50% at 55% 45%,var(--accent-2),transparent),radial-gradient(ellipse 45% 50% at 85% 50%,var(--accent-3),transparent);height:46rem;opacity:var(--glow);animation:24s ease-in-out infinite alternate drift;inset:-22rem -10% auto}@keyframes drift{to{transform:translate(5%,2rem)}}.gradient{background:linear-gradient(100deg,var(--accent-1),var(--accent-2) 70%,var(--accent-3));color:#0000;-webkit-background-clip:text;background-clip:text}.wrap{width:min(100% - 2rem,var(--measure));margin-inline:auto}.top{z-index:10;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 72%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);position:sticky;top:0}.top-inner{justify-content:space-between;align-items:center;gap:1rem;min-height:4rem;font-size:.9375rem;display:flex}.top a{color:var(--muted);text-decoration:none;transition:color .15s}.top .name,.top a:hover{color:var(--ink)}.top .name{letter-spacing:-.01em;align-items:center;gap:.6rem;font-weight:600;display:inline-flex}.mark{background:linear-gradient(135deg,var(--button-1),var(--button-2));border-radius:.45rem;place-items:center;width:1.625rem;height:1.625rem;display:grid}.mark:before{content:"";background:var(--button-ink);width:.28rem;height:.875rem}.top nav{gap:2rem;display:none}.lang{border:1px solid var(--line);background:var(--surface);border-radius:.6rem;flex-shrink:0;gap:.125rem;padding:.1875rem;font-size:.8125rem;font-weight:600;display:flex}.top .lang a{border-radius:.4rem;padding:.2rem .6rem}.top .lang a[aria-current]{background:linear-gradient(100deg,var(--button-1),var(--button-2));color:var(--button-ink)}.hero{text-align:center;padding-block:calc(clamp(3.5rem,10vw,7.5rem)) calc(clamp(3rem,8vw,6rem))}.badge{border:1px solid color-mix(in srgb,var(--accent-1) 40%,transparent);background:color-mix(in srgb,var(--accent-1) 10%,transparent);border-radius:99rem;margin:0 0 1.25rem;padding:.2rem .75rem;font-size:.875rem;font-weight:500;display:inline-block}h1,h2,h3{letter-spacing:-.025em;text-wrap:balance;margin:0;font-weight:600;line-height:1.12}h1{letter-spacing:-.035em;font-size:calc(clamp(2.5rem,6.5vw,5.25rem));line-height:1.05}h1 .gradient{padding-bottom:.08em;display:block}.lead{max-width:40rem;color:var(--muted);margin:1.5rem auto 2rem;font-size:calc(clamp(1.125rem,2vw,1.25rem))}.actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.button{border:1px solid var(--line);background:var(--surface);border-radius:.6rem;padding:.7rem 1.2rem;font-weight:600;line-height:1.4;text-decoration:none;transition:transform .15s,border-color .15s,box-shadow .2s;display:inline-block}.button:hover{border-color:color-mix(in srgb,var(--accent-2) 55%,transparent);transform:translateY(-1px)}.button.primary{background:linear-gradient(100deg,var(--button-1),var(--button-2)) border-box;color:var(--button-ink);box-shadow:0 .5rem 2rem -.75rem var(--accent-2);border-color:#0000}.button.primary:hover{box-shadow:0 .75rem 2.5rem -.5rem var(--accent-2)}.command{border:1px solid var(--line);color:var(--muted);font:.875rem/1.6 var(--mono);overflow-wrap:anywhere;border-radius:.6rem;gap:.75rem;margin-top:.75rem;padding:.5rem .9rem;text-decoration:none;transition:color .15s,border-color .15s;display:inline-flex}.command:hover{border-color:color-mix(in srgb,var(--accent-1) 55%,transparent);color:var(--ink)}.command span{color:var(--accent-1)}section{border-top:1px solid var(--line);padding-block:calc(clamp(3rem,7vw,5.5rem))}h2{margin-bottom:calc(clamp(1.75rem,4vw,2.75rem));font-size:calc(clamp(1.875rem,4vw,3rem))}h3{letter-spacing:-.015em;margin-bottom:.5rem;font-size:1.25rem}h4{margin:0 0 .25rem;font-size:1rem;font-weight:600}ol,ul{margin:0;padding:0;list-style:none}section p{color:var(--muted);margin:0}.cards{gap:1rem;display:grid}.card{--tint:var(--accent-1);border:1px solid var(--line);background:linear-gradient(to bottom right,color-mix(in srgb,var(--tint) 14%,transparent) 5%,transparent 50%),var(--surface);border-radius:1rem;padding:1.5rem;transition:transform .2s,border-color .2s}.card:hover{border-color:color-mix(in srgb,var(--tint) 55%,transparent);transform:translateY(-2px)}.card:nth-child(2){--tint:var(--accent-2)}.card:nth-child(3){--tint:var(--amber)}.card svg{fill:none;width:1.75rem;height:1.75rem;stroke:var(--tint);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;margin-bottom:1.25rem;display:block}.stacks{gap:1rem;display:grid}.stack-group{border:1px solid var(--line);background:var(--surface);border-radius:1rem;padding:1.5rem}.stack-group h3{letter-spacing:-.01em;margin-bottom:1rem;font-size:1.0625rem}.chips{flex-wrap:wrap;gap:.5rem;display:flex}.chips li{border:1px solid color-mix(in srgb,var(--accent-2) 30%,transparent);background:color-mix(in srgb,var(--accent-2) 9%,transparent);font:.8125rem/1.6 var(--mono);border-radius:99rem;padding:.2rem .7rem}.section-lead{max-width:44rem;margin-block:calc(clamp(1.75rem,4vw,2.75rem)/-2) 2rem;font-size:calc(clamp(1.0625rem,2vw,1.25rem))}.card:nth-child(4){--tint:var(--accent-3)}.job-meta{font:.8125rem/1.6 var(--mono);margin-bottom:.75rem}.card .job-meta{color:var(--tint)}.points{color:var(--muted);gap:.5rem;margin-top:1rem;display:grid}.points li{padding-left:1.125rem;position:relative}.points li:before{content:"";background:var(--tint);border-radius:50%;width:.375rem;height:.375rem;position:absolute;top:.7em;left:0}.project{border:1px solid var(--line);background:linear-gradient(to bottom right,color-mix(in srgb,var(--accent-3) 12%,transparent) 5%,transparent 45%),var(--surface);border-radius:1rem;display:grid}.project-intro{padding:calc(clamp(1.5rem,3vw,2.5rem))}.project-intro h3{letter-spacing:-.025em;margin-bottom:.75rem;font-size:calc(clamp(1.5rem,3vw,2.125rem))}.contact-mail,.project-intro h3 a{text-decoration:none}.project-intro h3 a:after{content:" →";color:var(--accent-2);margin-left:.25em;transition:transform .15s;display:inline-block}.project-intro h3 a:hover:after{transform:translate(.2em)}.project-parts{border-top:1px solid var(--line);display:grid}.project-parts li{padding:1.5rem calc(clamp(1.5rem,3vw,2rem))}.project-parts li+li{border-top:1px solid var(--line)}.steps{counter-reset:step;gap:2rem;display:grid}.steps li{counter-increment:step;position:relative}.steps li:before{content:counter(step);background:linear-gradient(135deg,var(--button-1),var(--button-2));width:2.25rem;height:2.25rem;color:var(--button-ink);border-radius:50%;place-items:center;margin-bottom:1rem;font-size:.9375rem;font-weight:700;display:grid}.contact{padding-block-end:calc(clamp(3.5rem,8vw,6rem))}.contact-panel{background:radial-gradient(ellipse 70% 90% at 50% 0,color-mix(in srgb,var(--accent-2) 20%,transparent),transparent) padding-box,linear-gradient(var(--surface),var(--surface)) padding-box,linear-gradient(135deg,var(--accent-1),var(--accent-2) 50%,var(--accent-3)) border-box;text-align:center;border:1px solid #0000;border-radius:1.25rem;padding:calc(clamp(2.5rem,7vw,5rem)) calc(clamp(1.25rem,4vw,3rem))}.contact-panel h2{margin-bottom:1rem}.contact-panel h2+p{max-width:34rem;margin-inline:auto}.contact-mail{letter-spacing:-.025em;overflow-wrap:anywhere;margin-top:1.5rem;font-size:calc(clamp(1.25rem,5vw,2.5rem));font-weight:600;display:inline-block}.contact-mail:hover{text-decoration:underline;-webkit-text-decoration-color:var(--accent-2);text-decoration-color:var(--accent-2)}footer{border-top:1px solid var(--line);color:var(--muted);padding-block:1.5rem 2.5rem;font-size:.875rem}@media (width>=40rem){.project-parts,.stacks,.steps{grid-template-columns:repeat(2,1fr)}.project-parts li+li{border-top:0}.project-parts li:nth-child(2n){border-left:1px solid var(--line)}.project-parts li:nth-child(n+3){border-top:1px solid var(--line)}}@media (width>=60rem){.top nav{display:flex}.cards{grid-template-columns:repeat(3,1fr)}.cards.jobs{grid-template-columns:repeat(2,1fr)}.project{grid-template-columns:2fr 3fr}.project-parts{border-top:0;border-left:1px solid var(--line)}.stacks,.steps{grid-template-columns:repeat(4,1fr)}.steps li:not(:last-child):after{content:"";background:linear-gradient(90deg,var(--accent-2),var(--line));height:1px;position:absolute;top:1.125rem;left:3rem;right:-1rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{transition:none!important;animation:none!important}}@media (forced-colors:active){.gradient{color:canvastext;background:0 0}}
