pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}:root{--color-background:#fafaf8;--color-surface:#fff;--color-primary:#252525;--color-secondary:#737373;--color-muted:#a3a3a3;--color-border:#e8e7e3;--color-accent:#526b80;--font-sans:"Inter", sans-serif;--font-serif:"Lora", Georgia, serif;--font-mono:"JetBrains Mono", monospace;--container-width:900px;--page-padding:28px;--space-xs:8px;--space-sm:16px;--space-md:24px;--space-lg:40px;--space-xl:64px;--space-2xl:96px;--transition:.18s ease}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--color-background);min-width:320px;min-height:100vh;color:var(--color-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:15px;line-height:1.7}#root{flex-direction:column;min-height:100vh;display:flex}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{cursor:pointer}img{max-width:100%;display:block}.container{width:100%;max-width:var(--container-width);padding-inline:var(--page-padding);margin-inline:auto}.page-main{flex:1}h1,h2,h3,p{margin-top:0}h1,h2,h3{color:var(--color-primary)}h1,h2{font-family:var(--font-serif);font-weight:400}h1{letter-spacing:-2px;font-size:clamp(42px,7vw,68px);line-height:1.15}h2{font-size:30px;line-height:1.3}p{color:var(--color-secondary)}.text-link{color:var(--color-accent);transition:color var(--transition)}.text-link:hover{color:var(--color-primary)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}@media (width<=600px){:root{--page-padding:22px}h1{letter-spacing:-1.5px}h2{font-size:26px}}.site-header{padding-block:28px}.navbar{justify-content:space-between;align-items:center;gap:24px;display:flex}.navbar-brand{font-family:var(--font-serif);color:var(--color-secondary);font-size:15px;font-weight:500}.navbar-links{align-items:center;gap:28px;display:flex}.navbar-links a{color:var(--color-secondary);transition:color var(--transition);font-size:13px}.navbar-links a:hover,.navbar-links a.active{color:var(--color-primary)}.home-hero{max-width:700px;padding-top:clamp(110px,18vh,180px);padding-bottom:var(--space-2xl)}.hero-eyebrow{font-family:var(--font-mono);letter-spacing:1.2px;color:var(--color-muted);margin-bottom:24px;font-size:10px}.hero-name{font-family:var(--font-serif);letter-spacing:-3px;margin-bottom:24px;font-size:clamp(56px,9vw,88px);font-weight:400;line-height:1.08}.hero-description{max-width:520px;color:var(--color-secondary);margin-bottom:28px;font-size:16px;line-height:1.9}.hero-links{flex-wrap:wrap;gap:24px;display:flex}.hero-links a{color:var(--color-accent);transition:color var(--transition);font-size:13px}.hero-links a:hover{color:var(--color-primary)}.site-footer{border-top:1px solid var(--color-border);margin-top:auto;padding-block:28px}.footer-content{justify-content:space-between;align-items:center;gap:16px;display:flex}.footer-content p{color:var(--color-muted);margin:0;font-size:12px}.archive-page{width:100%;max-width:700px;margin:0 auto;padding-top:24px}.archive-header{margin-bottom:42px}.archive-header h1{font-family:var(--font-serif);letter-spacing:-.04em;color:var(--color-primary);margin:0;font-size:2.2rem;font-weight:400}.archive-header>p{max-width:480px;color:var(--color-secondary);margin-top:14px;line-height:1.8}.archive-list{width:100%}.archive-row{align-items:baseline;gap:12px;padding:9px 0;font-size:.95rem;display:flex}.archive-title{min-width:0;color:var(--color-primary);text-underline-offset:3px;transition:color var(--transition), text-decoration-color var(--transition);flex:1;align-items:baseline;gap:10px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;display:flex}.archive-title>span:first-child{flex-shrink:1}.archive-title:hover{color:var(--color-accent);text-decoration-color:currentColor}.archive-leader{border-bottom:1px dotted var(--color-border);flex:1;min-width:20px}.archive-meta{flex-shrink:0;align-items:baseline;gap:16px;display:flex}.archive-source{color:var(--color-muted);font-size:.8rem}.archive-date{color:var(--color-secondary);font-family:var(--font-mono);white-space:nowrap;flex-shrink:0;font-size:.75rem}.archive-empty{color:var(--color-secondary);padding-top:20px}.contact-page{width:100%;max-width:740px;margin:0 auto}.contact-header{margin-bottom:64px}.contact-header h1{font-family:var(--font-serif);letter-spacing:-.04em;margin:0;font-size:clamp(2.5rem,6vw,3.5rem);font-weight:400}.contact-header>p:last-child{max-width:520px;color:var(--color-secondary);margin-top:16px;line-height:1.8}.contact-entry{border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:24px;padding:26px 0;display:flex}.contact-entry h2{font-family:var(--font-serif);margin:0;font-size:1.3rem;font-weight:400}.contact-entry p{color:var(--color-secondary);margin:6px 0 0;font-size:.9rem}.contact-entry>a{color:var(--color-accent);text-align:right;overflow-wrap:anywhere;font-size:.9rem}.contact-entry>a:hover{text-underline-offset:4px;text-decoration:underline}.article-page{width:100%;max-width:720px;margin:0 auto}.back-link{color:var(--color-secondary);transition:color var(--transition);margin-bottom:52px;font-size:.9rem;display:inline-block}.back-link:hover{color:var(--color-accent)}.article-header{border-bottom:1px solid var(--color-border);margin-bottom:42px;padding-bottom:32px}.article-date{color:var(--color-muted);font-family:var(--font-mono);margin-bottom:18px;font-size:.75rem;display:block}.article-header h1{font-family:var(--font-serif);letter-spacing:-.035em;margin:0;font-size:clamp(2.2rem,5vw,3.2rem);font-weight:400;line-height:1.2}.article-description{color:var(--color-secondary);margin:18px 0 0;font-size:1.05rem;line-height:1.8}.markdown{width:100%;color:var(--color-primary);overflow-wrap:break-word;line-height:1.85}.markdown h2,.markdown h3,.markdown h4{font-family:var(--font-serif);margin-top:2.5em;margin-bottom:.8em;font-weight:400;line-height:1.35}.markdown h2{font-size:1.8rem}.markdown h3{font-size:1.4rem}.markdown p{margin:0 0 1.4em}.markdown ul,.markdown ol{margin-bottom:1.5em;padding-left:1.5rem}.markdown li{margin-bottom:.5em;padding-left:.3rem}.markdown blockquote{border-left:2px solid var(--color-accent);color:var(--color-secondary);margin:2em 0;padding-left:20px}.markdown pre{border:1px solid var(--color-border);border-radius:4px;margin:1.8em 0;padding:22px;font-size:.85rem;line-height:1.7;overflow-x:auto}.markdown code{font-family:var(--font-mono)}.markdown :not(pre)>code{background:#f0efec;border-radius:3px;padding:2px 5px;font-size:.85em}.markdown img{max-width:100%;height:auto;margin:2em auto;display:block}.markdown a{color:var(--color-accent);text-underline-offset:3px;text-decoration:underline}.markdown hr{border:0;border-top:1px solid var(--color-border);margin:3em 0}@media (width<=600px){.site-header{padding-block:22px}.navbar{flex-direction:column;align-items:flex-start;gap:16px}.navbar-links{flex-wrap:wrap;gap:20px}.home-hero{padding-top:100px}.hero-name{letter-spacing:-2px}.footer-content{flex-direction:column;align-items:flex-start;gap:6px}.archive-page{padding-top:12px}.archive-header{margin-bottom:32px}.archive-header h1{font-size:1.9rem}.archive-row{gap:8px;font-size:.87rem}.archive-title{gap:6px}.archive-meta{gap:10px}.archive-source{font-size:.75rem}.archive-date{font-size:.7rem}.contact-header{margin-bottom:44px}.contact-entry{flex-direction:column;align-items:flex-start;gap:12px}.contact-entry>a{text-align:left}.back-link{margin-bottom:36px}.article-header{margin-bottom:32px;padding-bottom:24px}.markdown pre{padding:16px}}@media (width<=380px){.archive-row{flex-wrap:wrap}.archive-title{flex-basis:100%}.archive-meta{margin-left:auto}}.projects-page{width:100%;max-width:740px;margin:0 auto;padding-top:24px}.projects-header{margin-bottom:56px}.projects-header .eyebrow{margin-bottom:16px}.projects-header h1{font-family:var(--font-serif);letter-spacing:-.04em;color:var(--color-primary);margin:0;font-size:clamp(2.5rem,6vw,3.5rem);font-weight:400}.projects-header>p:last-child{max-width:520px;color:var(--color-secondary);margin-top:16px;line-height:1.8}.projects-list{width:100%}.project-entry{border-top:1px solid var(--color-border);grid-template-columns:36px minmax(0,1fr);gap:20px;padding:32px 0;display:grid}.project-number{color:var(--color-muted);font-family:var(--font-mono);padding-top:5px;font-size:.75rem}.project-content{min-width:0}.project-heading{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.project-heading h2{font-family:var(--font-serif);color:var(--color-primary);margin:0;font-size:1.65rem;font-weight:400;line-height:1.35}.project-year{color:var(--color-muted);font-family:var(--font-mono);flex-shrink:0;font-size:.75rem}.project-description{max-width:570px;color:var(--color-secondary);margin:12px 0 18px;font-size:.95rem;line-height:1.8}.project-technologies{flex-wrap:wrap;gap:8px 16px;margin-bottom:18px;display:flex}.project-technologies span{color:var(--color-muted);font-family:var(--font-mono);font-size:.72rem}.project-links{flex-wrap:wrap;gap:20px;display:flex}.project-links a{color:var(--color-accent);transition:color var(--transition);font-size:.85rem}.project-links a:hover{color:var(--color-primary)}.projects-empty{color:var(--color-secondary);padding-top:24px}@media (width<=600px){.projects-page{padding-top:12px}.projects-header{margin-bottom:40px}.project-entry{grid-template-columns:25px minmax(0,1fr);gap:12px;padding:26px 0}.project-heading h2{font-size:1.4rem}.project-description{font-size:.9rem}.project-technologies{gap:8px 12px}}.navbar-brand-hidden{opacity:0;pointer-events:none}
