:root{--color-text: #0a0a0a;--color-text-secondary: #5f5e5a;--color-text-muted: #888888;--color-border: #d0d0d0;--color-border-soft: #e5e5e5;--color-bg: #ffffff;--color-accent: #191970;--color-accent-soft: #aeaecb;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;--font-brand: "Spectral", Georgia, serif}*{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-sans);font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;scroll-behavior:smooth}body{background:var(--color-bg);color:var(--color-text);line-height:1.6}::selection{background:var(--color-accent);color:#fff}a{color:var(--color-accent);text-decoration:underline;text-decoration-color:var(--color-accent-soft);text-underline-offset:3px;transition:text-decoration-color .15s ease,color .15s ease}a:hover{text-decoration-color:var(--color-accent)}img{max-width:100%;height:auto;display:block}.container{max-width:720px;margin:0 auto;padding:3rem 2rem}.container-wide{max-width:1100px;margin:0 auto;padding:3rem 2rem}@media(max-width:640px){.container,.container-wide{padding:2rem 1.25rem}}.topbar{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4rem}.topbar .brand{font-family:var(--font-brand);font-weight:300;font-size:21px;color:var(--color-text);text-decoration:none;letter-spacing:.1px;transition:color .15s ease}.topbar .brand:hover{color:var(--color-accent)}.topbar nav{display:flex;gap:24px;font-size:14px}.topbar nav a{color:var(--color-text-secondary);text-decoration:none;transition:color .15s ease}.topbar nav a.active{color:var(--color-text)}.topbar nav a:hover{color:var(--color-accent)}@media(max-width:480px){.topbar{flex-direction:column;align-items:flex-start;gap:14px;margin-bottom:3rem}.topbar nav{gap:18px}}.divider{border:none;border-top:.5px solid var(--color-border);margin:3rem 0}.section-label{font-size:12px;font-weight:500;letter-spacing:1px;color:var(--color-text-muted);text-transform:uppercase;margin:0 0 1.75rem}.intro{margin-bottom:4rem;max-width:600px}.intro p{font-size:15px;line-height:1.7;margin-bottom:1rem;color:var(--color-text)}.intro p:last-child{margin-bottom:0}.posts-list{display:grid;grid-template-columns:110px 1fr;row-gap:22px;column-gap:32px;font-size:14px;align-items:baseline}.posts-list .post-date{color:var(--color-text-muted);font-size:13px}.posts-list .post-title{color:var(--color-accent);text-decoration:none;font-weight:500;line-height:1.45;font-size:15px}.posts-list .post-title:hover{text-decoration:underline;text-decoration-color:var(--color-accent)}@media(max-width:640px){.posts-list{grid-template-columns:1fr;row-gap:4px}.posts-list .post-date{font-size:12px}.posts-list .post-title{margin-bottom:16px}}.contacts{display:grid;grid-template-columns:110px 1fr;row-gap:14px;column-gap:32px;font-size:14px}.contacts .key{color:var(--color-text-muted);font-size:12px;text-transform:uppercase;letter-spacing:.8px}@media(max-width:480px){.contacts{grid-template-columns:80px 1fr;column-gap:20px}}.footer{margin-top:4rem;font-size:12px;color:var(--color-text-muted)}.article-layout{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:3.5rem;align-items:start}@media(max-width:1024px){.article-layout{grid-template-columns:1fr;gap:0}}.article-header{margin-bottom:2.5rem;padding-bottom:1.25rem;border-bottom:.5px solid var(--color-accent)}.article-header h1{font-size:28px;font-weight:500;line-height:1.25;letter-spacing:-.4px;margin-bottom:.5rem;color:var(--color-text)}.article-header .meta{font-size:13px;color:var(--color-text-muted)}.article-header .description{font-size:15px;color:var(--color-text-secondary);line-height:1.55;margin-top:.75rem}@media(max-width:640px){.article-header h1{font-size:24px}}.toc-mobile{display:none;margin-bottom:2rem;padding:1rem 1.25rem;border:.5px solid var(--color-accent);border-radius:6px;background:#fafaf8}@media(max-width:1024px){.toc-mobile{display:block}}.toc-mobile summary{cursor:pointer;font-size:13px;font-weight:500;color:var(--color-text);list-style:none;display:flex;justify-content:space-between;align-items:center}.toc-mobile summary::-webkit-details-marker{display:none}.toc-mobile summary:after{content:"▾";color:var(--color-accent);font-size:11px;transition:transform .2s ease}.toc-mobile[open] summary:after{transform:rotate(180deg)}.toc-mobile .toc-list{margin-top:1rem;padding-top:1rem;border-top:.5px solid var(--color-accent);font-size:13px;line-height:1.5}.toc-mobile .toc-list a{display:block;padding:4px 0;color:var(--color-text-secondary);text-decoration:none;font-weight:500}.toc-mobile .toc-list a.lvl-3{padding-left:14px;color:var(--color-text-muted);font-size:12px;font-weight:400}.toc-mobile .toc-list a:hover{color:var(--color-accent)}.toc-desktop{position:sticky;top:2rem;align-self:start}@media(max-width:1024px){.toc-desktop{display:none}}.toc-desktop .toc-label{font-size:11px;color:var(--color-text-muted);letter-spacing:1px;text-transform:uppercase;margin-bottom:1rem}.toc-desktop .toc-list{border-left:1px solid var(--color-accent);font-size:13px}.toc-desktop .toc-list a{display:block;text-decoration:none;margin-left:-1px;border-left:1px solid transparent;transition:color .15s ease,border-color .15s ease;line-height:1.4}.toc-desktop .toc-list a.lvl-2{padding:5px 0 5px 14px;color:var(--color-text-secondary);font-weight:500}.toc-desktop .toc-list a.lvl-3{padding:4px 0 4px 24px;color:var(--color-text-muted);font-size:12px}.toc-desktop .toc-list a:hover{color:var(--color-accent)}.toc-desktop .toc-list a.active{color:var(--color-accent);border-left-color:var(--color-accent);font-weight:500}.article-content{font-size:15px;line-height:1.75;color:var(--color-text);min-width:0}.article-content>*+*{margin-top:1.1rem}.article-content h2{font-size:20px;font-weight:500;margin-top:3rem;margin-bottom:1.25rem;letter-spacing:-.2px;line-height:1.3;padding-top:2rem;border-top:.5px solid var(--color-accent);scroll-margin-top:2rem}.article-content h3{font-size:17px;font-weight:500;margin-top:2rem;margin-bottom:.75rem;scroll-margin-top:2rem}.article-content p{margin-bottom:1.1rem}.article-content strong{font-weight:600}.article-content em{font-style:italic}.article-content a{color:var(--color-accent);text-decoration:underline;text-decoration-color:var(--color-accent-soft);text-underline-offset:3px}.article-content a:hover{text-decoration-color:var(--color-accent)}.article-content ul{list-style:none;padding-left:0;margin:1.25rem 0}.article-content ul li{position:relative;padding-left:32px;margin-bottom:.5rem}.article-content ul li:before{content:"—";position:absolute;left:0;top:0;color:var(--color-text-muted)}.article-content ol{list-style:none;padding-left:0;margin:1.25rem 0;counter-reset:ol-counter}.article-content ol li{position:relative;padding-left:52px;margin-bottom:.5rem;counter-increment:ol-counter}.article-content ol li:before{content:counter(ol-counter,decimal-leading-zero);position:absolute;left:0;top:.4em;font-family:var(--font-mono);font-size:12px;color:var(--color-text-muted);letter-spacing:.5px;line-height:1}.article-content li ul,.article-content li ol{margin-top:.5rem;margin-bottom:.5rem}.article-content blockquote{margin:1.5rem 0;padding-left:1.25rem;border-left:2px solid var(--color-border);color:var(--color-text-secondary);font-style:italic}.article-content img{margin:1.75rem 0;border-radius:4px;border:.5px solid var(--color-border-soft)}.article-content figure{margin:1.75rem 0}.article-content figcaption{font-size:13px;color:var(--color-text-muted);margin-top:.5rem;text-align:center}.article-content code{font-family:var(--font-mono);font-size:.92em;background:#f5f5f4;padding:.15em .35em;border-radius:3px;border:.5px solid var(--color-border-soft)}.article-content pre{margin:1.5rem 0;padding:1rem 1.2rem;border-radius:6px;border:.5px solid var(--color-border-soft);font-size:13px;line-height:1.55;overflow-x:auto}.article-content pre code{background:transparent;border:none;padding:0;font-size:inherit}.article-footer{margin-top:4rem;padding-top:1.5rem;border-top:.5px solid var(--color-border-soft);font-size:14px}.article-footer a{color:var(--color-text-secondary);text-decoration:none}.article-footer a:hover{color:var(--color-accent)}
