:root{--background:#ffffff;--color:#434648;--color-heading:#0d122b;--color-muted:#6b7886;--accent:#003fff;--accent-hover:#0036c7;--border-color:#ececec;--code-bg:#d8dbe2;--code-color:#333638;--mark-bg:#fffba0;--mark-color:#0d122b;--blockquote-color:#525b66;--blockquote-border:#c4c8cc;--link-underline:#d2c7c7;--pill-bg:rgba(0, 63, 255, 0.07);--pill-color:#003fff;--surface:#fafafb;--pre-bg:#1a1b21;--pre-color:#fbf1c7}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--background:#131418;--color:#babdc4;--color-heading:#eaeaea;--color-muted:#767f87;--accent:#77a8fd;--accent-hover:#5292ff;--border-color:#1b1d25;--code-bg:#2d2d2d;--code-color:#c2c4ca;--mark-bg:rgba(119, 168, 253, 0.28);--mark-color:#eaeaea;--blockquote-color:#9b9ba3;--blockquote-border:#4a4d56;--link-underline:#4a4d56;--pill-bg:rgba(119, 168, 253, 0.12);--pill-color:#77a8fd;--surface:#181a1f}}:root[data-theme=dark]{--background:#131418;--color:#babdc4;--color-heading:#eaeaea;--color-muted:#767f87;--accent:#77a8fd;--accent-hover:#5292ff;--border-color:#1b1d25;--code-bg:#2d2d2d;--code-color:#c2c4ca;--mark-bg:rgba(119, 168, 253, 0.28);--mark-color:#eaeaea;--blockquote-color:#9b9ba3;--blockquote-border:#4a4d56;--link-underline:#4a4d56;--pill-bg:rgba(119, 168, 253, 0.12);--pill-color:#77a8fd;--surface:#181a1f}html{box-sizing:border-box;scroll-padding-top:30px}*,*::before,*::after{box-sizing:inherit}body,h1,h2,h3,h4,h5,h6,p,blockquote,pre,hr,dl,dd,ol,ul,figure{margin:0;padding:0}body{background-color:var(--background);color:var(--color);font-family:Inter,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,sans-serif;font-size:1rem;line-height:1.7;letter-spacing:-.008em;font-feature-settings:"kern" 1,"liga" 1,"calt" 1,"ss01" 1;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;transition:background-color .3s ease,color .3s ease}.container{display:flex;flex-direction:column;margin:auto;padding:40px;max-width:864px;min-height:100vh}.content{display:flex;flex-direction:column;flex:1 0 auto}@media(max-width:899px){.container{max-width:740px}}@media(max-width:699px){.container{padding:20px;max-width:100%}}.header{display:flex;flex-direction:column;z-index:200}.header__inner{display:flex;align-items:center;justify-content:space-between;gap:10px}.header__logo{display:flex;flex:1}.logo{display:flex;align-items:center;padding:5px 10px;border-radius:5px;background:var(--accent);color:var(--background);font-weight:600;letter-spacing:-.01em;text-decoration:none;transition:background-color .3s ease,color .3s ease}.logo:hover{background:var(--accent-hover);color:var(--background);text-decoration:none}.menu{margin:20px 0}.menu__inner{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.menu__inner li:not(:last-of-type){padding-right:10px;margin-right:10px;border-right:1px solid var(--accent);flex:none}.menu__inner a{color:var(--accent);text-decoration:none;opacity:.85}.menu__inner a:hover{opacity:1;text-decoration:none}.menu__inner a.active{opacity:1;font-weight:600}@media(max-width:560px){.header__inner{flex-wrap:wrap}.header__logo{order:1;flex:1}.theme-toggle{order:2;margin:0}.menu{order:3;flex-basis:100%;margin:14px 0 6px}.menu__inner{justify-content:flex-start}}.theme-toggle{display:grid;align-items:center;justify-items:center;align-self:center;margin:20px 0 20px 10px;padding:.4rem;background:0 0;border:none;color:var(--accent);cursor:pointer;transition:color .3s ease,opacity .2s ease}.theme-toggle:hover{opacity:.75}.theme-toggle svg{grid-area:1/1;display:block;transition:opacity .4s ease,transform .4s ease}.theme-toggle-light{opacity:0;transform:rotate(-90deg)scale(.75);pointer-events:none}.theme-toggle-dark{opacity:1;transform:none}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle-dark{opacity:0;transform:rotate(-90deg)scale(.75);pointer-events:none}:root:not([data-theme=light]) .theme-toggle-light{opacity:1;transform:none;pointer-events:auto}}:root[data-theme=dark] .theme-toggle-dark{opacity:0;transform:rotate(-90deg)scale(.75);pointer-events:none}:root[data-theme=dark] .theme-toggle-light{opacity:1;transform:none;pointer-events:auto}h1,h2,h3,h4,h5,h6{font-family:Figtree,Inter,sans-serif;color:var(--color-heading);font-weight:500;letter-spacing:-.015em;line-height:1.25;transition:color .3s ease}a{color:var(--accent);text-decoration:none;transition:color .3s ease}a:hover{color:var(--accent-hover);text-decoration:underline;text-decoration-thickness:1px}strong,b{font-weight:650;color:var(--color-heading)}p{margin-bottom:20px}hr{width:100%;height:1px;border:none;background:var(--border-color)}mark{background:var(--mark-bg);color:var(--mark-color);border-radius:2px}::selection{background:var(--mark-bg);color:var(--mark-color)}img{display:block;max-width:100%;height:auto}figure{margin-bottom:25px}figcaption{margin-top:6px;font-size:.85rem;font-style:italic;color:var(--color-muted);text-align:center}blockquote{margin:30px 0;padding:2px 0 2px 1.1rem;border-left:4px solid var(--blockquote-border);color:var(--blockquote-color);font-family:Figtree,Inter,sans-serif}blockquote p:last-child{margin-bottom:0}.hero-intro p{font-family:Figtree,Inter,sans-serif;font-size:1.15rem;font-weight:350;line-height:1.6;letter-spacing:-.01em;margin-bottom:12px}.hero-intro strong{color:var(--accent);font-weight:600}.hero-intro::after,.index-content::after{content:"\25C6";display:block;text-align:center;color:var(--accent);font-size:.45rem;line-height:1;padding:2px 0;opacity:.7;background:linear-gradient(var(--border-color),var(--border-color))0/calc(50% - 14px)1px no-repeat,linear-gradient(var(--border-color),var(--border-color))100%/calc(50% - 14px)1px no-repeat}.hero-intro::after{margin:10px 0 16px}.index-content::after{margin:10px 0 20px}.posts{display:flex;flex-direction:column;gap:12px;width:100%;margin-top:20px}.index-post-outer{padding:10px 12px;margin-left:-14px;border-left:2px solid transparent;border-radius:2px;transition:border-color .2s ease,background-color .2s ease}.index-post-outer:hover{border-left-color:var(--accent);background-color:var(--surface)}.index-post-title{margin:0 0 6px;font-size:1.3rem;line-height:1.3;color:var(--accent)}.index-post-title a{color:inherit;text-decoration:none}.index-post-title a:hover{text-decoration:underline;text-decoration-thickness:1px}.index-post-meta{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:.8rem;row-gap:4px;margin-bottom:8px;font-size:.9rem;color:var(--color-muted)}.post-date,.index-post-read-time{font-variant-numeric:tabular-nums;white-space:nowrap}.index-post-tags,.post-tags{display:inline-flex;flex-wrap:wrap;gap:6px}.index-post-description{margin:0;color:var(--color)}.tag-pill{display:inline-block;padding:2px 8px;border-radius:3px;font-size:.82rem;background-color:var(--pill-bg);color:var(--pill-color);text-decoration:none;transition:background-color .2s ease,color .2s ease}.tag-pill:hover{background-color:var(--accent);color:var(--background);text-decoration:none}.page-heading{margin:10px 0 20px;padding-bottom:8px;font-size:1.8rem;color:var(--accent);border-bottom:1px solid var(--accent)}.page-heading__kind{color:var(--color-muted);font-size:.9rem;text-transform:uppercase;letter-spacing:.08em;display:block}.post{width:100%;margin:10px auto}.post-title{margin:10px 0 12px;padding-bottom:8px;font-size:2rem;color:var(--accent);border-bottom:1px solid var(--accent)}.post-meta{display:flex;flex-wrap:wrap;margin-bottom:10px;font-size:.9rem;color:var(--color-muted);font-variant-numeric:tabular-nums}.post-meta-sep{margin:0 .5rem;opacity:.6}.post-tags{margin-bottom:24px}.post-content{min-width:0}.post-content h2{font-size:1.45rem;margin:36px 0 10px}.post-content h3{font-size:1.2rem;margin:28px 0 8px}.post-content h4{font-size:1.05rem;margin:24px 0 8px}.post-content ul,.post-content ol{margin:0 0 20px 24px;padding:0}.post-content li{margin-bottom:6px}.post-content img{margin:10px 0;border-radius:3px}.post-content a,.index-content a,.hero-intro a{text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:2px;text-decoration-color:var(--link-underline);transition:color .3s ease,text-decoration-color .2s ease}.post-content a:hover,.index-content a:hover,.hero-intro a:hover{text-decoration-color:initial}.hanchor{margin-left:8px;font-size:.85em;color:var(--accent);opacity:0;text-decoration:none;transition:opacity .2s ease}h1:hover .hanchor,h2:hover .hanchor,h3:hover .hanchor,h4:hover .hanchor{opacity:1}.table-container{width:100%;overflow-x:auto}table{width:100%;max-width:100%;margin:24px 0;border-collapse:collapse;font-size:.92rem;font-variant-numeric:tabular-nums}th,td{padding:5px 8px;border:1px solid var(--border-color);text-align:left}th{color:var(--accent);font-weight:650}code,kbd{font-family:fira code,Menlo,Monaco,Consolas,monospace;font-size:.875em;font-feature-settings:"liga" 0,"calt" 0}:not(pre)>code,kbd{padding:1px 4px;border-radius:2px;border:1px solid rgba(128,128,128,.12);background-color:var(--code-bg);color:var(--code-color);white-space:pre-wrap;transition:background-color .3s ease,color .3s ease}pre{display:block;margin:20px 0;padding:12px 16px;border-radius:4px;overflow-x:auto;background-color:var(--pre-bg);color:var(--pre-color);font-size:.85rem;line-height:1.6}pre code{display:block;border:0;padding:0;background:0 0;color:inherit;white-space:pre}pre::-webkit-scrollbar{height:.5rem}pre::-webkit-scrollbar-track{background:#2b2c33}pre::-webkit-scrollbar-thumb{background:#5a5c66;border-radius:.3rem}.table-of-contents{margin-bottom:30px;padding:16px 20px 12px;background-color:var(--surface);border-left:3px solid var(--accent);font-size:.9rem;line-height:1.6}.table-of-contents h2{margin:0 0 4px;font-size:1rem;color:var(--accent)}.table-of-contents ul{margin:0;padding-left:18px;list-style:none}.table-of-contents>nav>ul{padding-left:0}.table-of-contents a{color:var(--color);text-decoration:none}.table-of-contents a:hover{color:var(--accent);text-decoration:underline}@media(min-width:1320px){.post-body.has-toc{display:grid;grid-template-columns:180px minmax(0,1fr);gap:0 30px;margin-left:-210px;width:calc(100% + 210px)}.post-body.has-toc .table-of-contents{position:sticky;top:20px;align-self:start;max-height:calc(100vh - 40px);overflow-y:auto;margin-bottom:0;padding:0;background:0 0;border-left:none;font-size:.8rem}.post-body.has-toc .table-of-contents h2{font-size:.85rem;margin-bottom:6px}.post-body.has-toc .table-of-contents a{display:block;padding:2px 0;color:var(--color-muted)}}.post-nav{display:flex;margin-top:60px;border-top:1px solid var(--border-color);line-height:1.4}.post-nav-item{display:block;width:50%;padding:12px 0;text-decoration:none;box-sizing:border-box}.post-nav-item:nth-child(even){text-align:right;padding-left:20px}.post-nav-item:nth-child(odd){padding-right:20px}.post-nav-item .nav-arrow{display:block;margin-bottom:3px;font-size:.85rem;color:var(--color-muted)}.post-nav-item .post-title{display:block;margin:0;padding:0;border:none;font-family:Figtree,Inter,sans-serif;font-size:1rem;color:var(--color-heading)}.post-nav-item:hover .post-title{color:var(--accent)}@media(max-width:699px){.post-nav{display:block}.post-nav-item{width:100%}.post-nav-item:nth-child(even){text-align:left;padding-left:0;border-top:1px solid var(--border-color)}}.term-list{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:10px 14px}.term-list li{display:inline-flex;align-items:baseline;gap:5px}.term-list__count{font-size:.8rem;color:var(--color-muted);font-variant-numeric:tabular-nums}.pagination{margin-top:50px}.pagination__title{display:flex;position:relative;margin:60px 0 20px}.pagination__title-h{margin:0 auto;padding:5px 10px;background:var(--background);color:var(--color-muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center;gap:10px}.pagination__buttons a{display:flex;gap:8px;padding:8px 16px;border:1px solid var(--border-color);border-radius:8px;text-decoration:none}.pagination__buttons a:hover{border-color:var(--accent);text-decoration:none}.not-found{display:flex;flex-direction:column;justify-content:center;height:60vh;text-align:center}.not-found__title{font-size:5rem;font-weight:700;line-height:1.1;text-shadow:1px 0 0 var(--accent)}.not-found__phrase{color:var(--color)}.footer{flex-grow:0;margin-top:40px;padding:40px 0 10px;border-top:1px solid var(--border-color)}.footer__signoff{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:28px}.footer__wordmark{font-family:Figtree,Inter,sans-serif;font-size:1.3rem;font-weight:400;letter-spacing:.05em;color:var(--accent);text-decoration:none;opacity:.8}.footer__wordmark:hover{opacity:1;text-decoration:none}.footer__tagline{font-size:.82rem;font-style:italic;color:var(--color-muted)}.footer__inner{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}@media(max-width:699px){.footer__inner{flex-direction:column}}.footer__social{display:flex;flex-direction:row;gap:12px}.footer__social a{display:block;color:var(--color-muted);opacity:.7;transition:opacity .2s ease,color .3s ease}.footer__social a:hover{opacity:1;color:var(--accent)}.footer__social svg{width:20px;height:20px;display:block}.footer__copyright{font-size:.8rem;color:var(--color-muted)}@media print{.header,.footer,.pagination,.post-nav,.theme-toggle{display:none}.container{max-width:100%;padding:0}}.chroma{background-color:transparent!important;color:var(--pre-color)!important}pre.chroma{background-color:var(--pre-bg)!important}.highlight pre.chroma{margin:20px 0}.chroma .lntable{width:100%}.bg{color:#ebdbb2;background-color:#282828}.chroma{color:#ebdbb2;background-color:#282828;-webkit-text-size-adjust:none}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#3d3d3d}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#756d59}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#756d59}.chroma .line{display:flex}.chroma .k{color:#fe8019}.chroma .kc{color:#fe8019}.chroma .kd{color:#fe8019}.chroma .kn{color:#fe8019}.chroma .kp{color:#fe8019}.chroma .kr{color:#fe8019}.chroma .kt{color:#fabd2f}.chroma .na{color:#b8bb26;font-weight:700}.chroma .no{color:#d3869b}.chroma .ni{color:#fabd2f}.chroma .ne{color:#fb4934}.chroma .nl{color:#fb4934}.chroma .nn{color:#b8bb26}.chroma .nt{color:#fb4934}.chroma .nb{color:#fabd2f}.chroma .bp{color:#fabd2f}.chroma .nf{color:#fabd2f}.chroma .fm{color:#fabd2f}.chroma .s{color:#b8bb26}.chroma .sa{color:#b8bb26}.chroma .sb{color:#b8bb26}.chroma .sc{color:#b8bb26}.chroma .dl{color:#b8bb26}.chroma .sd{color:#b8bb26}.chroma .s2{color:#b8bb26}.chroma .se{color:#b8bb26}.chroma .sh{color:#b8bb26}.chroma .si{color:#b8bb26}.chroma .sx{color:#b8bb26}.chroma .sr{color:#b8bb26}.chroma .s1{color:#b8bb26}.chroma .ss{color:#83a598}.chroma .m{color:#d3869b}.chroma .mb{color:#d3869b}.chroma .mf{color:#d3869b}.chroma .mh{color:#d3869b}.chroma .mi{color:#d3869b}.chroma .il{color:#d3869b}.chroma .mo{color:#d3869b}.chroma .o{color:#fe8019}.chroma .ow{color:#fe8019}.chroma .or{color:#fe8019}.chroma .c{color:#928374;font-style:italic}.chroma .ch{color:#928374;font-style:italic}.chroma .cm{color:#928374;font-style:italic}.chroma .c1{color:#928374;font-style:italic}.chroma .cs{color:#928374;font-style:italic}.chroma .cp{color:#8ec07c}.chroma .cpf{color:#8ec07c;font-style:italic}.chroma .gd{color:#282828;background-color:#fb4934}.chroma .ge{color:#83a598;text-decoration:underline}.chroma .gr{background-color:#fb4934;font-weight:700}.chroma .gh{color:#b8bb26;font-weight:700}.chroma .gi{color:#282828;background-color:#b8bb26}.chroma .go{color:#504945}.chroma .gp{color:#ebdbb2}.chroma .gs{color:#ebdbb2}.chroma .gu{color:#b8bb26;font-weight:700}.chroma .gt{background-color:#fb4934;font-weight:700}