:root{color-scheme:dark;--font-display:"Inter", system-ui, sans-serif;--font-ui:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--color-bg:#111314;--color-bg-elevated:#1b1e21;--color-bg-code:#171a1d;--color-bg-code-header:#202428;--color-text:#e4e7ea;--color-text-heading:#f3f4f5;--color-text-body:#d2d6db;--color-text-muted:#afb5bd;--color-text-subtle:#a2a9b2;--color-text-faint:#969fa9;--color-text-reversed:#111314;--color-accent:#9bd7ba;--color-accent-quiet:#9bd7ba73;--color-accent-wash:#9bd7ba29;--color-topic:var(--color-accent);--color-border:#30353a;--color-border-light:#282d32;--color-border-dark:#434a52;--color-selected:#1b1e21;--color-selected-dark:#282d32;--color-negative:#e89b92;--color-warning:#dfbd82;--color-positive:#9bd7ba;--color-filter-text:invert(.95);--color-filter-text-reversed:invert(.1)}[data-theme=light]{color-scheme:light;--color-bg:#fff;--color-bg-elevated:#f5f6f7;--color-bg-code:#f6f7f8;--color-bg-code-header:#eef0f2;--color-text:#22262b;--color-text-heading:#15181b;--color-text-body:#343a41;--color-text-muted:#5f6772;--color-text-subtle:#646d78;--color-text-faint:#69727e;--color-text-reversed:#fff;--color-accent:#25634d;--color-accent-quiet:#25634d66;--color-accent-wash:#25634d1f;--color-border:#e0e4e8;--color-border-light:#e8ebee;--color-border-dark:#cbd1d8;--color-selected:#f0f2f4;--color-selected-dark:#e4e8ec;--color-negative:#ae483e;--color-warning:#86601e;--color-positive:#25634d;--color-filter-text:invert(.1);--color-filter-text-reversed:invert(.95)}*{border-color:var(--color-border);scrollbar-color:var(--color-border-dark) transparent;scrollbar-width:thin}html{scroll-behavior:smooth}body{color:var(--color-text);font-synthesis-weight:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background-color:var(--color-accent-wash);color:var(--color-text)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}.skip-link{z-index:1001;background:var(--color-bg);color:var(--color-text);padding:12px 16px;font-size:14px;position:fixed;top:12px;left:12px;transform:translateY(calc(-100% - 20px))}.skip-link:focus{transform:translateY(0)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html,body{font-family:var(--font-ui)}body{background-color:var(--color-bg);min-height:100vh}:root{--site-shell:min(53rem, calc(100% - 48px));--shell:min(42rem, calc(100% - 48px));--rail:120px;--rail-gap:24px}.site-header{width:var(--site-shell);justify-content:space-between;align-items:center;gap:24px;margin-inline:auto;padding-top:44px;display:flex}.site-header__mark{text-decoration:none}.site-header__name{color:var(--color-text-heading);font:600 18px/1.3 var(--font-display);letter-spacing:-.04em;display:block}.site-header__nav{font:400 13px var(--font-ui);gap:24px;display:flex}.site-header__nav a{min-height:32px;color:var(--color-text-muted);align-items:center;text-decoration:none;transition:color .16s;display:inline-flex}.site-header__nav a:hover{color:var(--color-text)}.site-header__nav a.is-current{color:var(--color-text);text-decoration:underline;text-decoration-color:var(--color-border-dark);text-underline-offset:7px;text-decoration-thickness:1px}.site-header__back{align-items:center;gap:7px;display:inline-flex}.site-footer{width:var(--site-shell);border-top:1px solid var(--color-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 24px;margin-inline:auto;padding:24px 0 40px;display:flex}.site-footer__mark{color:var(--color-text-faint);font:400 11px var(--font-ui);margin:0}.site-footer__links{align-items:center;gap:24px;display:flex}.site-footer__links a,.site-footer__links button{min-height:32px;color:var(--color-text-muted);font:400 11px var(--font-ui);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;text-decoration:none;transition:color .16s;display:inline-flex}.site-footer__links a:hover,.site-footer__links button:hover{color:var(--color-text)}.site-footer__links button{width:32px}.theme-icon--sun,[data-theme=light] .theme-icon--moon{display:none}[data-theme=light] .theme-icon--sun{display:block}.reading-progress{z-index:1000;background:var(--color-accent);opacity:.7;width:0;height:1px;transition:width .1s linear;position:fixed;top:0;left:0}.article-header{width:var(--shell);margin-inline:auto;padding-top:80px}.article-header__meta{color:var(--color-text-muted);font:400 13px var(--font-ui);align-items:center;gap:11px;margin-bottom:18px;display:flex}.article-header__meta i{background:var(--color-accent);width:20px;height:1px}.article-header__title{color:var(--color-text-heading);font:600 clamp(32px, 4.2vw, 46px) / 1.15 var(--font-display);letter-spacing:-.045em;text-wrap:balance;margin:0}.article-header__title em{color:var(--color-topic);font-style:italic}.article-header__info{border-bottom:1px solid var(--color-border);color:var(--color-text-faint);font:400 13px var(--font-ui);align-items:center;gap:9px;margin-top:20px;padding-bottom:32px;display:flex}.article-body{width:var(--shell);margin-inline:auto;padding:44px 0 72px}.related-articles{width:var(--shell);margin-inline:auto;padding-bottom:88px}.related-articles__content{border-top:1px solid var(--color-border)}.related-articles__header{justify-content:space-between;align-items:baseline;padding:24px 0 8px;display:flex}.related-articles__title{color:var(--color-text-muted);font:500 15px var(--font-ui);margin:0}.related-articles__header>span{color:var(--color-text-faint);font:400 13px var(--font-display)}.related-articles__list{margin:0;padding:0;list-style:none}.related-articles__list li+li{border-top:1px solid var(--color-border-light)}.related-articles__list a{color:inherit;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:24px;padding:17px 0;text-decoration:none;display:grid}.related-articles__list time{color:var(--color-text-faint);font:400 13px var(--font-display)}.related-articles__list h3{color:var(--color-text-body);font:500 17px/1.4 var(--font-display);letter-spacing:-.025em;text-underline-offset:5px;margin:0;text-decoration:underline 1px #0000;transition:color .16s,text-decoration-color .18s}.related-articles__list a:hover h3{color:var(--color-text-heading);text-decoration-color:var(--color-topic)}.about-intro{width:var(--shell);margin-inline:auto;padding-top:80px}.about-intro__name{color:var(--color-text-heading);font:600 clamp(32px, 4.2vw, 46px) / 1.15 var(--font-display);letter-spacing:-.045em;margin:0 0 26px}.about-intro__bio{color:var(--color-text-body);font:400 17px/1.8 var(--font-ui);margin:0}.about-intro__bio em{font-style:italic}.about-section{width:var(--shell);margin-inline:auto;padding-top:48px;position:relative}.about-section__label{color:var(--color-text-heading);font:500 16px var(--font-ui);letter-spacing:-.02em;margin:0;padding-bottom:14px}.about-section__content{border-top:1px solid var(--color-border);padding-top:20px}.about-section__content--text{flex-direction:column;gap:20px;display:flex}.about-section__content--text p{color:var(--color-text-body);font:400 16px/1.8 var(--font-ui);margin:0}.about-section--last{padding-bottom:96px}.about-links{flex-wrap:wrap;gap:10px;display:flex}.about-links__btn{border:1px solid var(--color-border-dark);color:var(--color-text-muted);font:400 13px var(--font-ui);cursor:pointer;background:0 0;border-radius:2px;align-items:center;gap:8px;padding:11px 20px;text-decoration:none;transition:color .18s,border-color .18s;display:inline-flex}.about-links__btn:hover{border-color:var(--color-accent-quiet);color:var(--color-text)}.about-links__external{opacity:.45;transition:opacity .18s}.about-links__btn:hover .about-links__external{opacity:.9}@media (width<=700px){.site-header{padding-top:32px}.article-header{padding-top:40px}.article-body{padding:36px 0 56px}.related-articles__list a{gap:16px}.about-intro{padding-top:46px}.about-section{padding-top:38px}}@media (width<=600px){:root{--site-shell:calc(100% - 40px);--shell:calc(100% - 40px)}.site-header{gap:16px;padding-top:26px}.site-header__name{font-size:16px}.site-header__nav{gap:18px;font-size:12px}.site-footer{gap:12px 20px;padding-bottom:28px}.site-footer__links{gap:18px}}.prose{color:var(--color-text-body);font:400 17px/1.8 var(--font-ui);letter-spacing:-.003em;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;& p{margin:0 0 1.35em}& :is(h1,h2,h3,h4,h5,h6){color:var(--color-text-heading);font-family:var(--font-display);letter-spacing:-.016em;overflow-wrap:break-word;text-wrap:balance;font-weight:600;line-height:1.28}& h1{letter-spacing:-.024em;margin:0 0 .5em;font-size:36px}& h2{margin:2em 0 .7em;font-size:23px}& h3{margin:1.8em 0 .6em;font-size:19px}& :is(h4,h5,h6){margin:1.6em 0 .5em;font-size:17px}& :is(ul,ol,menu){list-style:revert;padding-inline-start:1.3em}& :is(ul,ol,dl,figure,table){overflow-wrap:break-word;margin-block:1.5em}& li{margin-bottom:.5em;padding-left:.2em}& li::marker{color:var(--color-text-faint)}& ul ul,& ul ol,& ol ul,& ol ol{margin-block:.5em}& hr{border:0;border-top:1px solid var(--color-border-dark);width:64px;margin:3em 0}& :is(b,strong){color:var(--color-text-heading);font-weight:600}& em{font-style:italic}& a{color:var(--color-accent);text-decoration:underline;text-decoration-color:var(--color-accent-quiet);text-decoration-skip-ink:auto;text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color .18s}& a:hover{text-decoration-color:var(--color-accent)}& blockquote{border-left:2px solid var(--color-accent);margin:2em 0;padding:0 0 0 1.5em}& blockquote p{color:var(--color-text);margin:0 0 .6em;font-size:19px;font-style:italic;line-height:1.62}& blockquote p:last-child{margin-bottom:0}& code{background-color:var(--color-bg-elevated);color:var(--color-text);font-family:var(--font-mono);letter-spacing:0;border-radius:2px;padding:.12em .35em;font-size:.85em}& pre{border:1px solid var(--color-border);border-radius:2px;margin:2em 0;overflow:hidden}& pre code{background:var(--color-bg-code);color:var(--color-text-body);border-radius:0;padding:22px 24px;font-size:14px;line-height:1.7;display:block;overflow-x:auto}& .astro-code{background-color:var(--color-bg-code)}& .astro-code span{color:var(--shiki-dark)}& pre:has(>code.mermaid){background:0 0;border:none}& .mermaid{justify-content:center;max-width:100%;margin:2.2em 0;display:flex}& .mermaid svg{max-width:100%;height:auto}& table{border-collapse:collapse;width:100%;font-size:15px}& :is(th,td){border-bottom:1px solid var(--color-border);text-align:start;padding:11px 14px}& th{color:var(--color-text-heading);font-weight:600}& del{color:var(--color-text-faint)}& ins{color:var(--color-positive);text-decoration:none}& mark{background-color:var(--color-accent-wash);color:var(--color-text)}& img{max-width:100%;height:auto;margin:2em 0}& figcaption{color:var(--color-text-faint);font:400 14px var(--font-ui);margin-top:.6em}}[data-theme=light] .prose .astro-code span{color:var(--shiki-light)}@media (width<=768px){.prose{font-size:17px}.prose h2{font-size:21px}.prose blockquote p{font-size:18px}}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{overflow-x:hidden}button,input{font:inherit}[hidden]{display:none!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
