@font-face{font-family:Inter;src:url(/fonts/Inter-Variable.woff2) format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-Variable.woff2) format("woff2-variations");font-weight:100 800;font-style:normal;font-display:swap}:root{--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--step--1: clamp(.83rem, .78rem + .22vw, .95rem);--step-0: clamp(1rem, .94rem + .3vw, 1.18rem);--step-1: clamp(1.25rem, 1.1rem + .65vw, 1.6rem);--step-2: clamp(1.6rem, 1.34rem + 1.2vw, 2.4rem);--step-3: clamp(2.1rem, 1.55rem + 2.6vw, 3.6rem);--step-4: clamp(2.6rem, 1.6rem + 4.6vw, 5.2rem);--space-3xs: .25rem;--space-2xs: .5rem;--space-xs: .75rem;--space-s: 1rem;--space-m: 1.5rem;--space-l: 2.5rem;--space-xl: 4rem;--space-2xl: 6rem;--space-3xl: 9rem;--measure: 68ch;--maxw: 1140px;--radius: 4px;--border-w: 1px;--ease: cubic-bezier(.22, .61, .36, 1);--dur: .22s;--accent: #4ade80;--accent-strong: #22c55e;--accent-ink: #052e16}:root,:root[data-theme=dark]{color-scheme:dark;--bg: #0b0d0f;--bg-raised: #121518;--bg-sunken: #07090a;--surface: #15191d;--border: #232a30;--border-strong: #313a42;--text: #e8edf1;--text-dim: #9aa6b0;--text-faint:#6b7882;--link: #7be3a3;--shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 30px rgba(0,0,0,.35)}:root[data-theme=light]{color-scheme:light;--bg: #fbfcfd;--bg-raised: #ffffff;--bg-sunken: #f1f4f6;--surface: #ffffff;--border: #e2e8ec;--border-strong: #cbd5dc;--text: #0d1318;--text-dim: #4a5862;--text-faint:#7b8893;--link: #047857;--accent: #16a34a;--accent-strong: #15803d;--accent-ink: #ffffff;--shadow: 0 1px 2px rgba(16,24,32,.06), 0 10px 30px rgba(16,24,32,.08)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}body{font-family:var(--font-sans);font-size:var(--step-0);line-height:1.65;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"cv05" 1,"cv08" 1,"ss01" 1;min-height:100vh;display:flex;flex-direction:column}img,picture,svg,video{display:block;max-width:100%;height:auto}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none}h1,h2,h3,h4{line-height:1.1;font-weight:680;letter-spacing:-.02em;text-wrap:balance}p{text-wrap:pretty}a{color:var(--link);text-decoration-thickness:1px;text-underline-offset:3px}a:hover{text-decoration-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}::selection{background:var(--accent);color:var(--accent-ink)}.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--space-m)}.wrap--narrow{max-width:760px}.section{padding-block:var(--space-2xl)}.section+.section{padding-top:0}.flow>*+*{margin-top:var(--space-s)}.flow-l>*+*{margin-top:var(--space-l)}.eyebrow{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-strong);font-weight:600}.eyebrow:before{content:"// ";color:var(--text-faint)}.section-head{margin-bottom:var(--space-l)}.section-head h2{font-size:var(--step-2);margin-top:var(--space-2xs)}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:var(--space-s);top:-100px;z-index:1000;background:var(--accent);color:var(--accent-ink);padding:var(--space-2xs) var(--space-s);border-radius:var(--radius);font-weight:600;transition:top var(--dur) var(--ease)}.skip-link:focus{top:var(--space-s)}.btn{display:inline-flex;align-items:center;gap:var(--space-2xs);font-family:var(--font-mono);font-size:var(--step--1);font-weight:600;letter-spacing:.01em;padding:.7em 1.2em;border-radius:var(--radius);border:var(--border-w) solid var(--border-strong);color:var(--text);background:var(--surface);text-decoration:none;transition:transform var(--dur) var(--ease),border-color var(--dur) var(--ease),background var(--dur) var(--ease),color var(--dur) var(--ease)}.btn:hover{transform:translateY(-2px);border-color:var(--accent)}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn--primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.btn .arrow{transition:transform var(--dur) var(--ease)}.btn:hover .arrow{transform:translate(3px)}.site-header{position:sticky;top:0;z-index:100;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(140%) blur(10px);border-bottom:var(--border-w) solid var(--border)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-m);min-height:64px}.brand{display:inline-flex;align-items:baseline;gap:.5ch;font-family:var(--font-mono);font-weight:700;font-size:var(--step-0);letter-spacing:-.01em;text-decoration:none;color:var(--text)}.brand .brand__mark{color:var(--accent-strong)}.brand .brand__caret{color:var(--accent);animation:blink 1.2s steps(2,start) infinite}@keyframes blink{50%{opacity:0}}.primary-nav{display:flex;align-items:center;gap:var(--space-xs)}.primary-nav ul{list-style:none;padding:0;margin:0;display:flex;gap:var(--space-2xs);align-items:center}.primary-nav a{display:inline-block;padding:var(--space-3xs) var(--space-2xs);font-size:var(--step--1);color:var(--text-dim);text-decoration:none;border-radius:var(--radius);transition:color var(--dur) var(--ease)}.primary-nav a:hover,.primary-nav .current-menu-item>a{color:var(--text)}.primary-nav .current-menu-item>a{box-shadow:inset 0 -2px 0 var(--accent)}.theme-toggle{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:var(--radius);border:var(--border-w) solid var(--border);color:var(--text-dim);transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.theme-toggle:hover{color:var(--text);border-color:var(--border-strong)}.theme-toggle .icon{width:18px;height:18px}.theme-toggle .icon-sun{display:none}.theme-toggle .icon-moon{display:block}:root[data-theme=light] .theme-toggle .icon-sun{display:block}:root[data-theme=light] .theme-toggle .icon-moon{display:none}.nav-toggle{display:none}@media (max-width: 760px){.nav-toggle{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:var(--radius);border:var(--border-w) solid var(--border);color:var(--text)}.primary-nav ul{position:fixed;inset:64px 0 auto;flex-direction:column;align-items:stretch;gap:0;background:var(--bg-raised);border-bottom:var(--border-w) solid var(--border);padding:var(--space-2xs);transform:translateY(-120%);transition:transform var(--dur) var(--ease);box-shadow:var(--shadow)}.primary-nav ul[data-open=true]{transform:translateY(0)}.primary-nav a{padding:var(--space-xs) var(--space-s);font-size:var(--step-0)}}.hero{padding-block:clamp(var(--space-2xl),12vh,var(--space-3xl));position:relative;overflow:hidden}.hero__inner{max-width:880px}.hero__pitch{font-size:var(--step-4);font-weight:720;letter-spacing:-.03em;line-height:1.02}.hero__pitch .hl{color:var(--accent-strong);background:linear-gradient(transparent 64%,color-mix(in srgb,var(--accent) 26%,transparent) 0)}.hero__sub{margin-top:var(--space-m);font-size:var(--step-1);color:var(--text-dim);max-width:56ch}.hero__meta{margin-top:var(--space-s);font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-faint);display:flex;flex-wrap:wrap;gap:var(--space-2xs) var(--space-s)}.hero__meta .dot{color:var(--accent)}.hero__cta{margin-top:var(--space-l);display:flex;flex-wrap:wrap;gap:var(--space-xs)}.reveal{opacity:0;transform:translateY(14px)}.reveal.is-in{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .6s var(--ease)}.reveal[data-delay="1"]{transition-delay:80ms}.reveal[data-delay="2"]{transition-delay:.16s}.reveal[data-delay="3"]{transition-delay:.24s}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:var(--space-m)}.project-card{position:relative;display:flex;flex-direction:column;background:var(--bg-raised);border:var(--border-w) solid var(--border);border-radius:calc(var(--radius) * 2);overflow:hidden;transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.project-card:hover{border-color:var(--border-strong);transform:translateY(-4px);box-shadow:var(--shadow)}.project-card:focus-within{border-color:var(--accent)}.project-card__media{aspect-ratio:16 / 10;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,var(--bg-sunken)),var(--bg-sunken));border-bottom:var(--border-w) solid var(--border);overflow:hidden}.project-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}.project-card:hover .project-card__media img{transform:scale(1.03)}.project-card__media-fallback{width:100%;height:100%;display:grid;place-items:center;font-family:var(--font-mono);color:var(--text-faint);font-size:var(--step-2);letter-spacing:-.04em}.project-card__body{padding:var(--space-m);display:flex;flex-direction:column;flex:1;gap:var(--space-2xs)}.project-card__title{font-size:var(--step-1)}.project-card__title a{color:var(--text);text-decoration:none}.project-card__title a:after{content:"";position:absolute;inset:0}.project-card__excerpt{color:var(--text-dim);font-size:var(--step--1);flex:1}.project-card__foot{margin-top:var(--space-2xs);display:flex;align-items:center;justify-content:space-between;gap:var(--space-s)}.status-pill{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;font-weight:600;padding:.25em .6em;border-radius:100px;border:var(--border-w) solid var(--border-strong);color:var(--text-dim)}.status-pill[data-status*=development i],.status-pill[data-status*=progress i]{color:var(--accent-strong);border-color:color-mix(in srgb,var(--accent) 50%,transparent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.tags{display:flex;flex-wrap:wrap;gap:var(--space-3xs);list-style:none;padding:0;margin:0}.tag{font-family:var(--font-mono);font-size:.72rem;color:var(--text-dim);padding:.2em .55em;border:var(--border-w) solid var(--border);border-radius:var(--radius);background:var(--surface);text-decoration:none;white-space:nowrap}.tag:hover{border-color:var(--accent);color:var(--text)}.filter-bar{display:flex;flex-wrap:wrap;gap:var(--space-2xs);margin-bottom:var(--space-l);padding-bottom:var(--space-m);border-bottom:var(--border-w) solid var(--border)}.filter-btn{font-family:var(--font-mono);font-size:var(--step--1);padding:.4em .9em;border-radius:100px;border:var(--border-w) solid var(--border);color:var(--text-dim);transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.filter-btn:hover{color:var(--text);border-color:var(--border-strong)}.filter-btn[aria-pressed=true]{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.filter-count{color:var(--text-faint);font-family:var(--font-mono);font-size:var(--step--1);margin-left:auto;align-self:center}.project-card.is-hidden{display:none}.filter-empty{color:var(--text-dim);font-family:var(--font-mono);padding:var(--space-l) 0}.filter-empty[hidden]{display:none}.cs-hero{padding-block:var(--space-xl) var(--space-l);border-bottom:var(--border-w) solid var(--border)}.cs-hero__title{font-size:var(--step-3);margin-top:var(--space-2xs)}.cs-hero__sub{margin-top:var(--space-s);font-size:var(--step-1);color:var(--text-dim);max-width:var(--measure)}.cs-hero__actions{margin-top:var(--space-l);display:flex;flex-wrap:wrap;gap:var(--space-xs)}.cs-shot{margin-block:var(--space-xl);border-radius:calc(var(--radius)*2);overflow:hidden;border:var(--border-w) solid var(--border);box-shadow:var(--shadow)}.cs-layout{display:grid;gap:var(--space-xl);grid-template-columns:1fr}@media (min-width: 920px){.cs-layout{grid-template-columns:1fr 280px;align-items:start}}.cs-body{max-width:var(--measure);font-size:var(--step-0)}.cs-body h2{font-size:var(--step-2);margin-top:var(--space-xl)}.cs-body h3{font-size:var(--step-1);margin-top:var(--space-l)}.cs-body>*+*{margin-top:var(--space-s)}.cs-body ul,.cs-body ol{padding-left:1.25em}.cs-body li+li{margin-top:var(--space-3xs)}.cs-body code{font-family:var(--font-mono);font-size:.9em;background:var(--bg-sunken);border:var(--border-w) solid var(--border);padding:.1em .4em;border-radius:var(--radius)}.cs-body pre{font-family:var(--font-mono);font-size:var(--step--1);background:var(--bg-sunken);border:var(--border-w) solid var(--border);padding:var(--space-s);border-radius:var(--radius);overflow-x:auto}.cs-body blockquote{border-left:3px solid var(--accent);padding-left:var(--space-s);color:var(--text-dim);font-style:italic}.cs-aside{position:sticky;top:84px;border:var(--border-w) solid var(--border);border-radius:calc(var(--radius)*2);background:var(--bg-raised);padding:var(--space-m)}.cs-aside dl{margin:0}.cs-aside dt{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin-top:var(--space-s)}.cs-aside dt:first-child{margin-top:0}.cs-aside dd{margin:var(--space-3xs) 0 0;font-size:var(--step--1)}.cs-aside .result-figure{color:var(--accent-strong);font-weight:600}.cs-aside .divider{height:1px;background:var(--border);margin-block:var(--space-m)}.cs-nav{display:flex;justify-content:space-between;gap:var(--space-m);margin-top:var(--space-2xl);padding-top:var(--space-l);border-top:var(--border-w) solid var(--border);font-family:var(--font-mono);font-size:var(--step--1)}.cs-nav a{color:var(--text-dim);text-decoration:none}.cs-nav a:hover{color:var(--text)}.skill-list{display:flex;flex-wrap:wrap;gap:var(--space-2xs);list-style:none;padding:0;margin:0}.skill-list .tag{font-size:var(--step--1);padding:.4em .8em}.timeline{list-style:none;padding:0;margin:0;border-left:2px solid var(--border)}.timeline li{position:relative;padding:0 0 var(--space-l) var(--space-l)}.timeline li:before{content:"";position:absolute;left:-7px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--accent)}.timeline .when{font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-faint)}.timeline .what{font-weight:640;margin-top:var(--space-3xs)}.portrait{border-radius:calc(var(--radius)*2);border:var(--border-w) solid var(--border);overflow:hidden;background:var(--bg-sunken)}.contact-cta{text-align:center;border:var(--border-w) solid var(--border);border-radius:calc(var(--radius)*3);background:radial-gradient(120% 120% at 50% 0%,color-mix(in srgb,var(--accent) 10%,transparent),transparent 60%),var(--bg-raised);padding:var(--space-2xl) var(--space-m)}.contact-cta h2{font-size:var(--step-3)}.contact-cta p{color:var(--text-dim);max-width:48ch;margin-inline:auto;margin-top:var(--space-s)}.contact-cta .btn{margin-top:var(--space-l)}.contact-mail{display:inline-block;margin-top:var(--space-m);font-family:var(--font-mono);font-size:var(--step-1);color:var(--text);text-decoration:none;border-bottom:2px solid var(--accent);letter-spacing:-.01em}.contact-mail:hover{color:var(--accent-strong)}.contact-links{margin-top:var(--space-l);display:flex;justify-content:center;flex-wrap:wrap;gap:var(--space-s);font-family:var(--font-mono);font-size:var(--step--1)}.contact-links a{color:var(--text-dim);text-decoration:none}.contact-links a:hover{color:var(--text)}.site-footer{margin-top:auto;border-top:var(--border-w) solid var(--border);background:var(--bg-sunken);padding-block:var(--space-l)}.site-footer__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-s);font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-faint)}.site-footer a{color:var(--text-dim);text-decoration:none}.site-footer a:hover{color:var(--text)}.pagination{display:flex;gap:var(--space-2xs);flex-wrap:wrap;margin-top:var(--space-xl);font-family:var(--font-mono)}.pagination .page-numbers{display:inline-grid;place-items:center;min-width:40px;height:40px;padding:0 .6em;border:var(--border-w) solid var(--border);border-radius:var(--radius);color:var(--text-dim);text-decoration:none}.pagination .page-numbers.current{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.pagination .page-numbers:hover:not(.current){border-color:var(--border-strong);color:var(--text)}.search-form{display:flex;gap:var(--space-2xs)}.search-form input[type=search]{flex:1;padding:.6em .9em;border-radius:var(--radius);border:var(--border-w) solid var(--border);background:var(--surface)}.search-form input[type=search]:focus-visible{border-color:var(--accent)}.error-404{text-align:center;padding-block:var(--space-3xl)}.error-404 .code{font-family:var(--font-mono);font-size:var(--step-4);color:var(--accent-strong);letter-spacing:-.04em}.entry-content{max-width:var(--measure)}.entry-content>*+*{margin-top:var(--space-s)}.entry-content h2{font-size:var(--step-2);margin-top:var(--space-xl)}.entry-content h3{font-size:var(--step-1);margin-top:var(--space-l)}.page-title{font-size:var(--step-3)}.page-intro{color:var(--text-dim);font-size:var(--step-1);max-width:var(--measure);margin-top:var(--space-s)}.primary-nav a[aria-current=page]{color:var(--text)}.primary-nav a[aria-current=page]{box-shadow:inset 0 -2px 0 var(--accent)}.primary-nav a.is-active{color:var(--text);box-shadow:inset 0 -2px 0 var(--accent)}.prose{max-width:var(--measure);font-size:var(--step-0)}.prose>*+*{margin-top:var(--space-s)}.prose h2{font-size:var(--step-2);margin-top:var(--space-xl)}.prose h3{font-size:var(--step-1);margin-top:var(--space-l)}.prose ul,.prose ol{padding-left:1.25em}.prose li+li{margin-top:var(--space-3xs)}.prose code{font-family:var(--font-mono);font-size:.9em;background:var(--bg-sunken);border:var(--border-w) solid var(--border);padding:.1em .4em;border-radius:var(--radius)}.prose pre{font-family:var(--font-mono);font-size:var(--step--1);background:var(--bg-sunken);border:var(--border-w) solid var(--border);padding:var(--space-s);border-radius:var(--radius);overflow-x:auto}.prose pre code{background:none;border:0;padding:0}.prose blockquote{border-left:3px solid var(--accent);padding-left:var(--space-s);color:var(--text-dim);font-style:italic}.prose a{color:var(--link)}.site-footer__inner{font-family:var(--font-mono)}.footer-nav{display:flex;gap:var(--space-s);list-style:none;padding:0;margin:0;flex-wrap:wrap}.footer-nav a{color:var(--text-dim);text-decoration:none}.footer-nav a:hover{color:var(--text)}:target{scroll-margin-top:84px}section[id]{scroll-margin-top:84px}
