:root{--bg:#fafaf8;--surface:#fff;--surface-2:#f2f3f0;--text:#15181b;--muted:#5b626a;--border:#e4e6e2;--accent:#0f6b4f;--accent-soft:#e3f1ea;--accent-text:#fff;--panel-dark:#12302a;--panel-dark-text:#eef6f2;--radius:14px;--radius-small:10px;--shadow:0 1px 2px #1018140a, 0 8px 24px #1018140f;--max:70rem;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Plus Jakarta Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.6}@media (prefers-color-scheme:dark){:root{--bg:#0f1112;--surface:#171a1c;--surface-2:#1d2124;--text:#e9ecee;--muted:#a1a8ae;--border:#2a2f33;--accent:#3cc49a;--accent-soft:#15302a;--accent-text:#08150f;--panel-dark:#15302a;--panel-dark-text:#eef6f2;--shadow:none}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5rem}body{flex-direction:column;min-height:100vh;margin:0;display:flex}#root{flex-direction:column;flex:1;display:flex}main{flex:1}h1,h2,h3{letter-spacing:-.02em;margin:0 0 .75rem;line-height:1.15}h1{font-size:clamp(2.1rem,7vw,3.4rem);font-weight:800}h2{font-size:clamp(1.6rem,4.5vw,2.2rem);font-weight:800}h3{letter-spacing:-.01em;font-size:1.15rem;font-weight:700}p{margin:0 0 1rem}a{color:var(--accent)}img,video{max-width:100%;display:block}.container{width:100%;max-width:var(--max);margin:0 auto;padding:0 1rem}.muted{color:var(--muted)}.kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 .5rem;font-size:.8rem;font-weight:700}.header{z-index:10;background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:1rem;min-height:4rem;display:flex}.brand{color:var(--text);letter-spacing:-.01em;font-weight:800;text-decoration:none}.nav{gap:1.75rem;margin:0;padding:0;list-style:none;display:none}.nav a{color:var(--muted);font-size:.95rem;font-weight:500;text-decoration:none}.nav a:hover{color:var(--text)}.actions{flex-direction:column;gap:.75rem;margin-top:1.5rem;display:flex}.button{border:1px solid var(--accent);background:var(--accent);min-height:3rem;color:var(--accent-text);font:inherit;border-radius:999px;justify-content:center;align-items:center;padding:.65rem 1.25rem;font-weight:700;text-decoration:none;transition:transform .15s,filter .15s;display:inline-flex}.button:hover{filter:brightness(1.08);transform:translateY(-1px)}.button-ghost{color:var(--accent);background:0 0}.button-small{min-height:2.5rem;padding:.4rem 1rem;font-size:.9rem}.button-light{background:var(--panel-dark-text);border-color:var(--panel-dark-text);color:var(--panel-dark)}.button-outline-light{border-color:color-mix(in srgb, var(--panel-dark-text) 50%, transparent);color:var(--panel-dark-text);background:0 0}a:focus-visible,.button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.hero{padding-block:3rem 2rem}.hero-home{gap:2rem;display:grid}.hero-text{order:2}.badge{background:var(--accent-soft);color:var(--accent);border-radius:999px;align-items:center;gap:.5rem;margin-bottom:1.25rem;padding:.35rem .85rem;font-size:.85rem;font-weight:600;display:inline-flex}.dot{background:currentColor;border-radius:50%;width:.5rem;height:.5rem}.eyebrow{color:var(--muted);margin-bottom:.5rem;font-size:.95rem}.lead{color:var(--muted);max-width:38rem;font-size:1.125rem}.note{color:var(--muted);max-width:40rem;margin-top:1.25rem;font-size:.95rem}.portrait{aspect-ratio:1;background:linear-gradient(135deg, var(--accent-soft), var(--surface-2));border:1px solid var(--border);border-radius:50%;order:1;place-items:center;width:7rem;display:grid;overflow:hidden}.portrait img{object-fit:cover;width:100%;height:100%}.portrait-initials{color:var(--accent);letter-spacing:-.02em;font-size:2rem;font-weight:800}.stats{background:var(--border);border:1px solid var(--border);border-radius:var(--radius);gap:1px;margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.stats li{background:var(--surface);flex-direction:column;padding:1.1rem 1.25rem;display:flex}.stats strong{letter-spacing:-.02em;font-size:1.6rem;font-weight:800}.stats span{color:var(--muted);font-size:.9rem}.section{padding-block:3rem}.prose{max-width:42rem}.grid{gap:1rem;margin-top:1.5rem;display:grid}.card,.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card{overflow:hidden}.card-body,.panel{padding:1.5rem}.panel h3{margin-bottom:.4rem}.panel p{margin:0}.projects{gap:1.5rem;margin-top:1.5rem;display:grid}.project-image{background:var(--surface-2);border-bottom:1px solid var(--border)}.project-image img{width:100%;height:auto}.project h3{font-size:1.5rem}.checks{gap:.4rem;margin:0 0 1.25rem;padding:0;list-style:none;display:grid}.checks li{padding-left:1.6rem;position:relative}.checks li:before{content:"✓";color:var(--accent);font-weight:800;position:absolute;top:0;left:0}.tags{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.tags li{background:var(--surface-2);color:var(--muted);border-radius:999px;padding:.25rem .7rem;font-size:.8rem;font-weight:500}.list{max-width:42rem;padding-left:1.25rem}.list li{margin-bottom:.5rem}.about{gap:2rem;display:grid}.skills{gap:1rem;margin:0;display:grid}.skills div{border-bottom:1px solid var(--border);padding-bottom:1rem}.skills dt{margin-bottom:.2rem;font-weight:700}.skills dd{color:var(--muted);margin:0}.contact-panel{background:var(--panel-dark);color:var(--panel-dark-text);border-radius:calc(var(--radius) * 1.5);padding:2rem 1.5rem}.contact-panel .kicker{color:color-mix(in srgb, var(--panel-dark-text) 70%, transparent)}.contact-panel p{color:color-mix(in srgb, var(--panel-dark-text) 80%, transparent);max-width:34rem}.contact-list{border-top:1px solid color-mix(in srgb, var(--panel-dark-text) 20%, transparent);gap:1rem;margin:2rem 0 0;padding:1.5rem 0 0;list-style:none;display:grid}.contact-list li{flex-direction:column;display:flex}.contact-label{color:color-mix(in srgb, var(--panel-dark-text) 65%, transparent);font-size:.8rem}.contact-list a{color:var(--panel-dark-text);overflow-wrap:anywhere;font-weight:600}.screenshots{align-items:start;gap:1.5rem;display:grid}.shot{margin:0}.shot img{border-radius:var(--radius);border:1px solid var(--border);width:100%;height:auto;box-shadow:var(--shadow)}.shot-tall img{max-width:20rem;margin-inline:auto}.shot figcaption{text-align:center;margin-top:.6rem;font-size:.9rem}.video{border-radius:var(--radius);border:1px solid var(--border);width:100%;box-shadow:var(--shadow);background:#000}.video+figcaption{text-align:center;margin-top:.6rem;font-size:.9rem}.diagram{gap:1rem;margin-top:1rem;display:grid}.flow,.flow-sides{gap:1.5rem;margin:0;padding:0;list-style:none;display:grid}.flow li,.flow-sides li{flex-direction:column;gap:.25rem;display:flex}.flow li{position:relative}.flow li:not(:last-child):after{content:"↓";color:var(--muted);position:absolute;bottom:-1.45rem;left:50%;transform:translate(-50%)}.flow-sides{gap:1rem}.panel-dashed{box-shadow:none;border-style:dashed}.snippets-intro{margin-bottom:2rem}.snippet{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin:0 0 1.75rem;overflow:hidden}.snippet figcaption{border-bottom:1px solid var(--border);flex-direction:column;gap:.35rem;padding:1.25rem 1.25rem 1.1rem;display:flex}.snippet figcaption strong{letter-spacing:-.01em;font-size:1.05rem}.snippet figcaption .muted{max-width:42rem;font-size:.95rem}.snippet-number{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-size:.75rem;font-weight:700}.snippet pre{background:var(--surface-2);tab-size:4;margin:0;padding:1.25rem;font-family:ui-monospace,Cascadia Code,SF Mono,Consolas,monospace;font-size:.85rem;line-height:1.65;overflow-x:auto}.cta{border-top:1px solid var(--border);margin-top:1rem}.footer{border-top:1px solid var(--border);color:var(--muted);margin-top:2rem;font-size:.9rem}.footer-inner{flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;padding-block:1.5rem;display:flex}.footer-inner p{margin:0}.footer-links{gap:1.25rem;margin:0;padding:0;list-style:none;display:flex}.footer-links a{color:var(--muted);text-decoration:none}.footer-links a:hover{color:var(--text)}.steps{gap:1rem;margin:1.5rem 0 0;padding:0;list-style:none;display:grid}.steps li{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem;position:relative}.steps h3{margin-bottom:.4rem}.steps p{margin:0}.step-number{background:var(--accent-soft);width:2.5rem;height:2.5rem;color:var(--accent);border-radius:50%;place-items:center;margin-bottom:1rem;font-size:.9rem;font-weight:800;display:inline-grid}@keyframes fade-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, currentColor 55%, transparent)}70%{box-shadow:0 0 0 7px #0000}to{box-shadow:0 0 #0000}}.hero>*,.hero-text>*{animation:.7s cubic-bezier(.2,.7,.2,1) both fade-up}.hero-home>.hero-text{animation:none}.hero>:nth-child(2),.hero-text>:nth-child(2){animation-delay:80ms}.hero>:nth-child(3),.hero-text>:nth-child(3){animation-delay:.16s}.hero>:nth-child(4),.hero-text>:nth-child(4){animation-delay:.24s}.hero>:nth-child(n+5),.hero-text>:nth-child(n+5){animation-delay:.32s}.hero-home>.portrait{animation:.8s cubic-bezier(.2,.7,.2,1) .15s both pop-in}.badge .dot{animation:2s ease-out infinite pulse}.reveal{opacity:0;transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);transform:translateY(20px)}.reveal.is-visible{opacity:1;transform:none}.panel-hover,.project,.steps li{transition:transform .25s,box-shadow .25s,border-color .25s,opacity .7s cubic-bezier(.2,.7,.2,1)}.panel-hover:hover,.steps li:hover{border-color:color-mix(in srgb, var(--accent) 35%, var(--border));transform:translateY(-4px)}.project-image img{transition:transform .5s}.project:hover .project-image img{transform:scale(1.02)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}main{overflow-x:clip}.hero-home{isolation:isolate;position:relative}.hero-home:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(38rem 24rem at 35% 35%, color-mix(in srgb, var(--accent) 20%, transparent), transparent 70%), radial-gradient(30rem 22rem at 70% 20%, #2f80ed24, transparent 70%);height:42rem;position:absolute;top:-6rem;left:-50vw;right:-50vw}.hero-home h1{background:linear-gradient(115deg, var(--text) 35%, var(--accent) 100%);color:#0000;-webkit-background-clip:text;background-clip:text}.contact-panel{background:radial-gradient(30rem 20rem at 100% 0%, #2f80ed4d, transparent 70%), linear-gradient(135deg, var(--panel-dark), color-mix(in srgb, var(--panel-dark) 75%, #0b5a4a))}.stats strong{background:linear-gradient(115deg, var(--accent), #2f80ed);color:#0000;-webkit-background-clip:text;background-clip:text}@media (width>=40rem){.actions{flex-flow:wrap}.grid,.stats{grid-template-columns:repeat(2,1fr)}.hero{padding-block:4.5rem 3rem}.section{padding-block:4.5rem}.contact-panel{padding:3rem}.contact-list{grid-template-columns:repeat(2,1fr)}}@media (width>=56rem){.nav{display:flex}.stats{grid-template-columns:repeat(4,1fr)}.steps{grid-template-columns:repeat(3,1fr)}.hero-home{grid-template-columns:1fr 18rem;align-items:center;gap:4rem}.hero-text{order:0}.portrait{aspect-ratio:4/5;border-radius:24px;order:0;width:100%}.portrait-initials{font-size:4rem}.project{grid-template-columns:1.2fr 1fr;display:grid}.project-image{border-bottom:0;border-right:1px solid var(--border);place-items:center;padding:1.5rem;display:grid}.project-image img{border-radius:var(--radius-small);border:1px solid var(--border)}.card-body{padding:2rem}.about{grid-template-columns:1.4fr 1fr;gap:4rem}.contact-list{grid-template-columns:repeat(4,1fr)}.diagram{grid-template-columns:2fr 1fr;align-items:start}.screenshots{grid-template-columns:2fr 1fr}}
