:root{--color-bg:#0f0f11;--color-bg-subtle:#17171c;--color-surface:#1e1e24;--color-border:#2c2c36;--color-text:#e2e2ea;--color-text-muted:#8888a0;--color-accent:#7b93ff;--color-accent-hover:#9aabff;--font-sans:system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:ui-monospace, "Cascadia Code", "Fira Code", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--space-16:4rem;--measure:70ch;--measure-wide:90ch;--nav-height:3.5rem;--radius:4px;--transition:.15s ease}@media (prefers-color-scheme:light){:root{--color-bg:#f8f8fc;--color-bg-subtle:#f0f0f6;--color-surface:#fff;--color-border:#d4d4e0;--color-text:#1a1a2e;--color-text-muted:#5a5a78;--color-accent:#3a56e8;--color-accent-hover:#2a46d8}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;font-size:100%;overflow-x:clip}body{background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);grid-template-rows:auto 1fr auto;min-height:100vh;margin:0;line-height:1.65;display:grid}.skip-link{top:-100%;left:var(--space-4);padding:var(--space-2) var(--space-4);background:var(--color-accent);color:#fff;border-radius:0 0 var(--radius) var(--radius);font-weight:600;font-size:var(--text-sm);z-index:200;transition:top var(--transition);text-decoration:none;position:absolute}.skip-link:focus{top:0}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:var(--radius)}a{color:var(--color-accent);text-underline-offset:3px;transition:color var(--transition);text-decoration-thickness:1px}a:hover{color:var(--color-accent-hover)}.site-nav{align-items:center;gap:var(--space-6);padding:0 var(--space-8);height:var(--nav-height);border-bottom:1px solid var(--color-border);background:var(--color-bg);z-index:100;display:flex;position:sticky;top:0}.site-nav__brand{font-weight:700;font-size:var(--text-sm);letter-spacing:.04em;color:var(--color-text);margin-right:auto;text-decoration:none}.site-nav__brand:hover{color:var(--color-accent)}.site-nav__links{gap:var(--space-6);margin:0;padding:0;list-style:none;display:flex}.site-nav__links a{color:var(--color-text-muted);font-size:var(--text-sm);letter-spacing:.03em;text-transform:uppercase;font-weight:500;text-decoration:none}.site-nav__links a:hover,.site-nav__links a[aria-current=page]{color:var(--color-text)}@media (width<=600px){.site-nav{padding:var(--space-2) var(--space-4);gap:var(--space-2);flex-wrap:wrap;height:auto}.site-nav__brand{width:100%}.site-nav__links{gap:var(--space-2) var(--space-4);flex-wrap:wrap}.site-nav__links a{font-size:var(--text-xs)}}main{padding:var(--space-12) var(--space-8);max-width:var(--measure-wide);width:100%;margin:0 auto}.site-footer{padding:var(--space-4) var(--space-8);border-top:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--text-sm)}h1,h2,h3,h4{font-weight:700;line-height:1.25}h1{font-size:var(--text-4xl)}h2{font-size:var(--text-3xl)}h3{font-size:var(--text-2xl)}code,kbd,samp{font-family:var(--font-mono);background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);padding:.1em .35em;font-size:.9em}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn{padding:var(--space-3) var(--space-6);border-radius:var(--radius);font-size:var(--text-sm);transition:background var(--transition), color var(--transition), border-color var(--transition);font-weight:600;text-decoration:none;display:inline-block}.btn--primary{background:var(--color-accent);color:var(--color-bg);border:1px solid var(--color-accent)}.btn--primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover);color:var(--color-bg)}.btn--secondary{color:var(--color-text);border:1px solid var(--color-border);background:0 0}.btn--secondary:hover{border-color:var(--color-text)}.tag{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:0 var(--space-2);font-size:var(--text-xs);font-family:var(--font-mono);line-height:1.8;display:inline-block}.section-heading{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin:0 0 var(--space-6);font-weight:600}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-6);transition:border-color var(--transition)}.project-card:hover{border-color:var(--color-accent)}.project-card__title{font-size:var(--text-xl);margin:0 0 var(--space-3);font-weight:700}.project-card__title a{text-decoration:none}.project-card__title a:hover{text-decoration:underline}.project-card__description{font-size:var(--text-sm);color:var(--color-text-muted);margin:0 0 var(--space-4);line-height:1.6}.project-card__tags{margin:0 0 var(--space-4);gap:var(--space-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.project-card__links{gap:var(--space-6);font-size:var(--text-sm);display:flex}.cv-section{margin-bottom:var(--space-12)}.cv-section h2{font-size:var(--text-2xl);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.08em;margin:0 0 var(--space-6);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border);font-weight:600}.prose h2{font-size:var(--text-2xl);margin:var(--space-8) 0 var(--space-4)}.prose h3{font-size:var(--text-xl);margin:var(--space-6) 0 var(--space-3)}.prose p{margin:0 0 var(--space-4);color:var(--color-text-muted);line-height:1.7}.prose ul,.prose ol{padding-left:var(--space-6);margin:0 0 var(--space-4)}.prose li{margin-bottom:var(--space-2);color:var(--color-text-muted);line-height:1.7}.prose strong{color:var(--color-text);font-weight:700}.prose a{color:var(--color-accent)}.prose hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-8) 0}@media print{.site-nav,.site-footer,.skip-link,.no-print{display:none!important}body{color:#000;background:#fff;font-size:11pt;line-height:1.5;display:block}main{max-width:100%;margin:0;padding:0}a{color:#000;text-decoration:underline}a[href^=http]:after,a[href^=https]:after{content:" (" attr(href) ")";color:#555;word-break:break-all;font-size:.8em}h1,h2,h3,h4{page-break-after:avoid}section,article,.cv-entry{page-break-inside:avoid}*{box-shadow:none!important}}
