:root{--bg:#0a0a0a;--bg-secondary:#111;--bg-tertiary:#1a1a1a;--surface-0:#222;--surface-1:#333;--surface-2:#444;--text:#e0e0e0;--text-secondary:#999;--text-muted:#9a9a9a;--accent:#fff;--accent-hover:#ccc;--border:#222;--link:#9ecbff;--link-hover:#d7ecff;--link-visited:#c6a0f6;--link-underline:#4a6c8a;--prompt:#e0e0e0;--command:#fff;--code-bg:#111;--code-border:#222;--inline-code-bg:#1a1a1a;--inline-code-text:#e0e0e0}@media(prefers-color-scheme:light){:root:not([data-theme="dark"]){--bg:#fafafa;--bg-secondary:#f5f5f5;--bg-tertiary:#eee;--surface-0:#e0e0e0;--surface-1:#d0d0d0;--surface-2:#c0c0c0;--text:#111;--text-secondary:#555;--text-muted:#888;--accent:#000;--accent-hover:#333;--border:#e0e0e0;--link:#1d4f91;--link-hover:#0b2d5f;--link-visited:#6b4fb3;--link-underline:#7a9ec4;--prompt:#111;--command:#000;--code-bg:#f5f5f5;--code-border:#e0e0e0;--inline-code-bg:#eee;--inline-code-text:#111}}[data-theme="light"]{--bg:#fafafa;--bg-secondary:#f5f5f5;--bg-tertiary:#eee;--surface-0:#e0e0e0;--surface-1:#d0d0d0;--surface-2:#c0c0c0;--text:#111;--text-secondary:#555;--text-muted:#888;--accent:#000;--accent-hover:#333;--border:#e0e0e0;--link:#111;--link-hover:#000;--prompt:#111;--command:#000;--code-bg:#f5f5f5;--code-border:#e0e0e0;--inline-code-bg:#eee;--inline-code-text:#111}@font-face{font-family:'JetBrains Mono';src:url('/fonts/jetbrains-mono.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scrollbar-gutter:stable}body{font-family:'JetBrains Mono',monospace;background-color:var(--bg);color:var(--text);line-height:1.5}:where(a){color:var(--link);text-decoration:underline;text-decoration-color:var(--link-underline);text-underline-offset:.2em;transition:color .12s ease,text-decoration-color .12s ease}:where(a:visited){color:var(--link-visited)}:where(a:hover){color:var(--link-hover);text-decoration-color:var(--link-hover)}:where(a:focus-visible){outline:2px solid var(--link);outline-offset:2px;border-radius:1px}.container{max-width:1100px;margin:0 auto;padding:1.5rem 1.5rem}.content-narrow{max-width:800px;margin:0 auto}.site-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.logo-link{text-decoration:none;color:inherit}.logo-mark{display:flex;flex-direction:column;background:#000;color:#fff;padding:.35rem .5rem;font-family:'JetBrains Mono',monospace;font-size:.8rem;line-height:1.3;letter-spacing:.05em;border:1px solid var(--surface-1)}.logo-prompt{font-size:.75rem}.logo-name{font-weight:bold}.site-nav{display:flex;align-items:center;gap:1rem}.nav-link{color:var(--text-secondary);text-decoration:none;font-size:.9rem}.nav-link:hover{color:var(--text)}.theme-toggle{background:transparent;border:1px solid var(--border);color:var(--text);font-family:inherit;font-size:1rem;padding:.2rem .4rem;cursor:pointer}.theme-toggle:hover{border-color:var(--text-muted)}.theme-icon{display:inline-block}.main-content{min-height:60vh}.home-split{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.home-panel .section-title{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;margin-bottom:.25rem;padding-bottom:.5rem;border-bottom:1px solid var(--border);color:var(--text-muted)}.panel-list{display:flex;flex-direction:column;gap:0}.panel-card{position:relative;padding:.75rem 0;border-bottom:1px solid var(--border)}.panel-card:hover{background:var(--bg-secondary)}.panel-card-title{font-size:1rem;margin-bottom:.25rem}.panel-card .post-card-link::after,.post-card .post-card-link::after{content:"";position:absolute;inset:0}.panel-card:hover,.post-card:hover{cursor:pointer}.panel-card .tag,.panel-card .project-github-link,.post-card .tag,.post-card .project-github-link{position:relative;z-index:1}.panel-card-excerpt{color:var(--text-secondary);font-size:.95rem;margin-bottom:.5rem;line-height:1.5}.page-header{margin-bottom:2rem}.page-header h1{font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.page-description{color:var(--text-secondary);margin-top:.5rem;font-size:.95rem}.section-title{font-size:1.4rem;margin-bottom:1.5rem;color:var(--text)}.project-github-link{color:var(--text-secondary);text-decoration:none;font-size:.8rem}.project-github-link:hover{color:var(--text)}.project-repo-link{margin-top:.5rem}.project-repo-link a{color:var(--text-secondary);text-decoration:none}.project-repo-link a:hover{color:var(--text)}.year-heading{font-family:var(--font-mono);font-size:1.1rem;color:var(--text-muted);margin-top:2rem;margin-bottom:.5rem;padding-bottom:.25rem;border-bottom:1px solid var(--border)}.year-heading:first-child{margin-top:0}.posts-section+.posts-section{margin-top:3rem}.posts-list{display:flex;flex-direction:column;gap:0}.post-card{position:relative;padding:1rem 0;border-bottom:1px solid var(--border)}.post-card:first-child{padding-top:0}.post-card:hover{background:var(--bg-secondary)}.post-card-title{font-size:1.1rem;margin-bottom:.5rem}.post-card-link{color:var(--text);text-decoration:none}.post-card-link:hover{color:var(--accent)}.post-card-excerpt{color:var(--text-secondary);margin-bottom:.5rem;font-size:.95rem;line-height:1.5}.post-card-meta{font-size:.8rem;color:var(--text-muted);display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.separator{color:var(--surface-2)}.tag{color:var(--text-muted);font-size:.75rem;border:1px solid var(--border);padding:.1rem .35rem;display:inline-block;text-decoration:none}a.tag:hover{color:var(--text);border-color:var(--text-muted)}a.tag:visited{color:var(--text-muted)}.view-all{margin-top:1rem}.view-all-link{color:var(--text-muted);text-decoration:none;font-size:.85rem}.view-all-link:hover{color:var(--text)}.no-posts{text-align:center;padding:2rem 1rem;color:var(--text-muted)}.no-posts .hint{margin-top:1rem;font-size:.85rem}.post{max-width:70ch;margin:0 auto}.post-header{margin-bottom:2rem}.post-title{font-size:2rem;line-height:1.2;margin-bottom:.75rem;color:var(--text)}.post-meta{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;font-size:.85rem;color:var(--text-muted);margin-bottom:1rem}.post-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.post-excerpt{font-size:1.1rem;color:var(--text-secondary);line-height:1.6;margin-top:1rem;padding:.75rem;border-left:2px solid var(--border)}.post-content{font-size:.95rem;line-height:1.7;color:var(--text)}.post-content h2{font-size:1.6rem;margin-top:2.5rem;margin-bottom:.75rem;color:var(--text)}.post-content h3{font-size:1.3rem;margin-top:2rem;margin-bottom:.5rem;color:var(--text)}.post-content h4{font-size:1.1rem;margin-top:1.5rem;margin-bottom:.5rem;color:var(--text)}.post-content p{margin-bottom:1.25rem}.post-content a,.about-page .about-outro a,.about-page .about-lede a{color:var(--link);text-decoration:underline;text-decoration-color:var(--link-underline);text-decoration-thickness:1px;text-underline-offset:.2em;transition:color .12s ease,text-decoration-color .12s ease}.post-content a:visited,.about-page .about-outro a:visited,.about-page .about-lede a:visited{color:var(--link-visited)}.post-content a:hover,.about-page .about-outro a:hover,.about-page .about-lede a:hover{color:var(--link-hover);text-decoration-color:var(--link-hover)}.post-content a:focus-visible,.about-page a:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:1px}.post-content ul,.post-content ol{margin-bottom:1.25rem;padding-left:2rem}.post-content li{margin-bottom:.5rem}.post-content blockquote{border-left:2px solid var(--border);padding-left:1rem;margin:1.5rem 0;color:var(--text-secondary);font-style:italic}.post-content pre{background:var(--code-bg);border:1px solid var(--code-border);padding:1rem;overflow-x:auto;margin:1.5rem 0;font-size:.85rem;line-height:1.5;tab-size:4}.post-content code.inline-code,.post-content p code,.post-content li code{background:var(--inline-code-bg);color:var(--inline-code-text);padding:.15rem .3rem;font-size:.9em}.post-content pre code{background:none;padding:0;color:var(--text)}.post-content hr{border:0;border-top:1px solid var(--border);margin:2rem 0}.post-footer{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--border)}.update-notice{color:var(--text-muted);font-size:.85rem}.post-navigation{margin-top:3rem;padding-top:1rem;border-top:1px solid var(--border)}.post-nav-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem}.post-nav-link{display:flex;flex-direction:column;padding:.75rem;border:1px solid var(--border);text-decoration:none;color:var(--text)}.post-nav-link:hover{border-color:var(--text-muted)}.nav-label{font-size:.75rem;color:var(--text-muted);margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.05em}.nav-title{color:var(--text);font-size:.9rem}.post-nav-next{text-align:right}.site-footer{margin-top:3rem;padding-top:1rem;border-top:1px solid var(--border);text-align:center;color:var(--text-muted);font-size:.75rem}a.footer-links{color:var(--text-muted);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:.2em}a.footer-links:visited{color:var(--text-muted)}a.footer-links:hover{color:var(--text);text-decoration-color:var(--text-muted)}.about-page .about-hero{margin-bottom:2.5rem}.about-page .about-hero h1{font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:1rem}.about-page .about-lede{font-size:1.15rem;line-height:1.65;color:var(--text);max-width:60ch}.about-page .about-quote{border-left:2px solid var(--text-muted);padding:.5rem 1.25rem;margin:2.5rem 0;font-size:1.1rem;line-height:1.5;color:var(--text-secondary);font-style:italic}.about-page .about-quote em{color:var(--text);font-style:italic}.about-page .about-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:2.5rem;margin:2.5rem 0;padding:1.75rem 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.about-page .about-grid>p{grid-column:1/-1;color:var(--text-secondary);font-size:.95rem;margin:0}.about-page .about-heading{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:1rem}.about-page .about-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.about-page .about-list li{position:relative;padding-left:1.25rem;line-height:1.5;color:var(--text)}.about-page .about-list li::before{content:"›";position:absolute;left:0;color:var(--text-muted)}.about-page .about-outro{margin:2.5rem 0}.about-page .about-outro p{font-size:.95rem;line-height:1.7;color:var(--text);max-width:60ch}.about-page .about-links{margin-top:2.5rem}.about-page .link-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.about-page .link-list li{display:flex;align-items:baseline;gap:.75rem;padding:.4rem 0;border-bottom:1px dashed var(--border)}.about-page .link-list a{color:var(--link);text-decoration:underline;text-decoration-color:var(--link-underline);text-underline-offset:.2em;font-weight:500}.about-page .link-list a:visited{color:var(--link-visited)}.about-page .link-list a:hover{color:var(--link-hover);text-decoration-color:var(--link-hover)}.about-page .link-handle{color:var(--text-muted);font-size:.85rem}.home-intro{margin-bottom:2.5rem;padding-bottom:2rem;border-bottom:1px solid var(--border);max-width:65ch}.home-intro-header{margin-bottom:1.25rem}.home-name{font-size:1.5rem;font-weight:700;color:var(--text);margin-bottom:.25rem}.home-role{color:var(--text-muted);font-size:.85rem;line-height:1.4}.home-intro-primary{color:var(--text);line-height:1.7;font-size:.95rem;margin-bottom:.75rem}.home-intro-secondary{color:var(--text-secondary);line-height:1.7;font-size:.95rem;margin-bottom:1rem}.home-cv-link{display:inline-block;font-size:.85rem;color:var(--text-secondary);text-decoration:none;border:1px solid var(--border);padding:.25rem .65rem;transition:color .12s ease,border-color .12s ease}.home-cv-link:hover{color:var(--text);border-color:var(--text-muted)}.home-cv-link:visited{color:var(--text-secondary)}.cv-section-intro{color:var(--text-secondary);font-size:.95rem;line-height:1.65;margin-top:.75rem;margin-bottom:.75rem}.cv-section-intro:last-of-type{margin-bottom:1.25rem}.cv-header{margin-bottom:2rem}.cv-name{font-size:1.5rem;font-weight:700;color:var(--text);margin-bottom:.35rem}.cv-title{color:var(--text-muted);font-size:.85rem}.cv-now{margin:2rem 0;padding:.75rem 1.25rem;border-left:2px solid var(--text-muted);background:var(--bg-secondary)}.cv-now-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);margin-bottom:.4rem}.cv-now p{color:var(--text-secondary);font-size:.95rem;line-height:1.6}.cv-section{margin-top:2.5rem;padding-top:1.75rem;border-top:1px solid var(--border)}.cv-entries{display:flex;flex-direction:column}.cv-entry{display:grid;grid-template-columns:1fr auto;gap:0 1.5rem;padding:1rem 0;border-bottom:1px solid var(--border);align-items:start}.cv-entry:last-child{border-bottom:0;padding-bottom:0}.cv-entry-company{font-weight:700;color:var(--text);font-size:.95rem}.cv-entry-role{color:var(--text-secondary);font-size:.82rem;margin-top:.15rem}.cv-entry-dates{color:var(--text-muted);font-size:.78rem;white-space:nowrap;text-align:right;padding-top:.15rem}.cv-entry-desc{grid-column:1/-1;color:var(--text-secondary);font-size:.95rem;line-height:1.6;margin-top:.5rem}.cv-skills{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.cv-skill-tag{font-size:.78rem;color:var(--text-secondary);border:1px solid var(--border);padding:.2rem .55rem;line-height:1.6}.cv-cert-list{list-style:none;padding:0;margin-top:.75rem;display:flex;flex-direction:column}.cv-cert-list li{display:flex;justify-content:space-between;align-items:baseline;padding:.6rem 0;border-bottom:1px solid var(--border);font-size:.95rem;color:var(--text-secondary);gap:1rem}.cv-cert-list li:last-child{border-bottom:0}.cv-cert-year{color:var(--text-muted);font-size:.78rem;white-space:nowrap;flex-shrink:0}@media(max-width:768px){html{font-size:14px}.container{padding:1rem}.site-header{flex-direction:column;gap:1rem;align-items:flex-start}.home-split{grid-template-columns:1fr}.post-title{font-size:1.6rem}.post-nav-links{grid-template-columns:1fr}.cv-entry{grid-template-columns:1fr}.cv-entry-dates{text-align:left;margin-top:.3rem}}