@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/blog/assets/space-grotesk-latin-400-normal.CJ-V5oYT.woff2)format("woff2"),url(/blog/assets/space-grotesk-latin-400-normal.BnQMeOim.woff)format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/blog/assets/space-grotesk-latin-500-normal.lFbtlQH6.woff2)format("woff2"),url(/blog/assets/space-grotesk-latin-500-normal.CNSSEhBt.woff)format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/blog/assets/space-grotesk-latin-700-normal.RjhwGPKo.woff2)format("woff2"),url(/blog/assets/space-grotesk-latin-700-normal.CwsQ-cCU.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/blog/assets/inter-latin-400-normal.C38fXH4l.woff2)format("woff2"),url(/blog/assets/inter-latin-400-normal.CyCys3Eg.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/blog/assets/inter-latin-500-normal.Cerq10X2.woff2)format("woff2"),url(/blog/assets/inter-latin-500-normal.BL9OpVg8.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/blog/assets/inter-latin-600-normal.LgqL8muc.woff2)format("woff2"),url(/blog/assets/inter-latin-600-normal.CiBQ2DWP.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/blog/assets/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2"),url(/blog/assets/jetbrains-mono-latin-400-normal.6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/blog/assets/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2)format("woff2"),url(/blog/assets/jetbrains-mono-latin-500-normal.CJOVTJB7.woff)format("woff")}:root,:root[data-theme=dark]{--bg:#0a0a0b;--surface:#121214;--hair:#26262a;--text:#ededea;--muted:#8a8a85;--accent:#e8a33d;--accent-hot:#f5bc63;--accent-text:#e8a33d;--on-accent:#0a0a0b;--focus:#e8a33d;--line:#ededea47;--grid:#ededea0b;--chip:#1a1a1e;--sky-top:#040405;--sky-mid:#0b0b0e;--sky-bot:#1b1509;--far:#101013;--mid:#141418;--near:#0b0b0d;--ground:#0c0c0e;--moon:#ededea;--star-o:.8;--vig:#0000009e;--win:#e8a33d;color-scheme:dark}:root[data-theme=light]{--bg:#f5f3ee;--surface:#fff;--hair:#e2e0d8;--text:#141412;--muted:#6b6b64;--accent:#b97b1e;--accent-hot:#cf8f2c;--accent-text:#8a5a10;--on-accent:#141412;--focus:#8a5a10;--line:#1414124d;--grid:#1414120f;--chip:#f5f3ee;--sky-top:#e7e1d2;--sky-mid:#f0ebde;--sky-bot:#f8e8c8;--far:#e3dcc9;--mid:#d7cfb9;--near:#c9c0a7;--ground:#d2cab4;--moon:#e8a33d;--star-o:0;--vig:#6e5a3247;--win:#b97b1e;color-scheme:light}:root{--f-head:"Space Grotesk",ui-sans-serif,system-ui,sans-serif;--f-body:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--f-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--nav-h:64px;--mini-h:52px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;height:100%}body{background:var(--bg);min-height:100%;color:var(--text);font:400 1rem/1.6 var(--f-body);-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;display:flex;overflow-x:clip}::selection{background:var(--accent);color:var(--on-accent)}img,svg{max-width:100%}a{color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:3px}h1,h2,h3{font-family:var(--f-head);letter-spacing:-.02em;margin:0;line-height:1.1}h1{font-weight:700}p{margin:0 0 1em}.lab{font:500 .72rem/1.3 var(--f-mono);letter-spacing:.08em;color:var(--muted)}.wrap{width:min(1160px,100% - 40px);margin-inline:auto}.skip{z-index:100;background:var(--accent);color:var(--on-accent);padding:10px 16px;font-weight:600;text-decoration:none;position:absolute;top:-60px;left:12px}.skip:focus{top:12px}.grain{z-index:90;pointer-events:none;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.scene{z-index:-1;pointer-events:none;width:100%;height:100%;display:block;position:fixed;inset:0}.scene .f-far{fill:var(--far)}.scene .f-mid{fill:var(--mid)}.scene .f-near{fill:var(--near)}.scene .f-ground{fill:var(--ground)}.scene .ln{fill:none;stroke:var(--line);stroke-width:1.2px}.scene .soft{opacity:.35}.scene path.f-mid,.scene path.f-near{fill:var(--mid)}.scene path.f-near{fill:var(--near)}.scene .gold{fill:var(--accent)}.scene .win{fill:var(--win);opacity:.9}.scene .slit{fill:var(--bg);opacity:.7}.scene .moon{fill:var(--moon)}.scene .stars{fill:var(--text);opacity:var(--star-o)}.nav{z-index:50;background:color-mix(in srgb,var(--bg) 92%,transparent);border-bottom:1px solid var(--hair);position:sticky;top:0}.nav-in{height:var(--nav-h);justify-content:space-between;align-items:center;display:flex}.lgi{--lga:var(--text);--lgb:var(--accent);flex:none;width:auto;height:1.55em;display:block}.brand{font-family:var(--f-head);align-items:center;gap:.4em;min-height:44px;font-size:1.2rem;text-decoration:none;display:inline-flex}.brand .b1{letter-spacing:-.02em;font-weight:700}.links{display:none}.nav.open .links{background:var(--bg);border-bottom:1px solid var(--hair);flex-direction:column;padding:8px 20px 16px;display:flex;position:absolute;top:100%;left:0;right:0}.nav.open .links a{align-items:center;width:max-content;min-height:48px;display:flex}.links a{font-size:.95rem;text-decoration:none}.links a:hover,.links a[aria-current=page]{color:var(--accent-text)}.nav-r{align-items:center;gap:8px;display:flex}.icon-btn{width:44px;height:44px;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:0;place-items:center;display:grid}.icon-btn:hover{border-color:var(--line)}.icon-btn svg{fill:none;stroke:currentColor;stroke-width:1.5px;width:20px;height:20px}.btn.nav-cta,#theme .sun{display:none}html[data-theme=light] #theme .sun{display:block}html[data-theme=light] #theme .moon{display:none}@media (width>=1180px){.links{align-items:center;gap:20px;display:flex}.btn.nav-cta{min-height:44px;display:inline-flex}.burger{display:none}}.bl{display:inline-block;position:relative}.bl-line{pointer-events:none;max-width:none;height:6px;position:absolute;bottom:-7px;overflow:visible}.bl-line path{fill:none;stroke:var(--accent);stroke-width:1px;stroke-dasharray:var(--L);stroke-dashoffset:var(--L);transition:stroke-dashoffset .3s steps(var(--s,6))}.bl:hover .bl-line path,.bl:focus-visible .bl-line path{stroke-dashoffset:0}@media (prefers-reduced-motion:reduce){.bl-line path{transition:none}}.dd{position:relative}.dd-btn{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:.4em;padding:0;font-size:.95rem;display:inline-flex}.dd-btn:hover{color:var(--accent-text)}.dd-btn .chev{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:square;width:10px;height:10px}.dd.open .dd-btn .chev{transform:rotate(180deg)}.dd-btn:hover .bl-line path,.dd-btn:focus-visible .bl-line path{stroke-dashoffset:0}.dd-menu{flex-direction:column;align-items:flex-start;display:none}.dd.open .dd-menu{display:flex}.dd-menu a{width:max-content;display:block}.nav.open .dd-btn{min-height:48px}.nav.open .dd-menu{padding-left:14px}@media (hover:none){.nav.open .dd .bl-line{display:none}}.nav.open .links a .bl-line{bottom:7px}@media (width>=1180px){.dd-menu{background:var(--bg);border:1px solid var(--line);z-index:60;min-width:176px;padding:6px 18px;position:absolute;top:calc(100% + 14px);left:50%;transform:translate(-50%)}.dd-menu:before{content:"";height:15px;position:absolute;top:-15px;left:0;right:0}.dd-menu a{padding:10px 0 12px}.dd-menu a .bl-line{bottom:5px}.dd:hover .dd-menu,.dd:focus-within .dd-menu{display:flex}}.dd-btn:hover,.dd.cur .dd-btn,.dd:focus-within .dd-btn{color:var(--accent-text)}.mini .soc a .bl-line{bottom:7px}.btn{min-height:48px;font:600 .95rem var(--f-head);cursor:pointer;border:1px solid #0000;border-radius:0;justify-content:center;align-items:center;gap:.5em;padding:0 24px;text-decoration:none;display:inline-flex}.btn-p{background:var(--accent);color:var(--on-accent)}.btn-p:hover{background:var(--accent-hot)}.btn-g{background:color-mix(in srgb,var(--bg) 40%,transparent);color:var(--text);border-color:var(--line)}.btn-g:hover{border-color:var(--text)}.chip{max-width:100%;font:500 .7rem/1 var(--f-mono);letter-spacing:.06em;border:1px solid var(--line);color:var(--muted);background:color-mix(in srgb,var(--bg) 50%,transparent);padding:6px 8px;display:inline-block}.panel{background:color-mix(in srgb,var(--surface) 90%,transparent);border:1px solid color-mix(in srgb,var(--line) 70%,transparent);position:relative}.panel:before{content:"";background:var(--line);opacity:.8;pointer-events:none;height:8px;position:absolute;top:-9px;left:-1px;right:-1px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 8'%3E%3Cpath d='M0 7.5H6V.5H18V7.5H24' fill='none' stroke='%23000'/%3E%3C/svg%3E") 0 100%/24px 8px round;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 8'%3E%3Cpath d='M0 7.5H6V.5H18V7.5H24' fill='none' stroke='%23000'/%3E%3C/svg%3E") 0 100%/24px 8px round}.mini{z-index:2;min-height:var(--mini-h);border-top:1px solid color-mix(in srgb,var(--hair) 80%,transparent);background:color-mix(in srgb,var(--bg) 90%,transparent);position:relative}.mini-in{min-height:var(--mini-h);font:400 .78rem var(--f-mono);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 24px;display:flex}.mini nav{flex-wrap:wrap;gap:0 20px;display:flex}.mini nav a{align-items:center;min-height:36px;text-decoration:none;display:inline-flex}.mini nav a:hover,.mini nav a[aria-current=page]{color:var(--accent-text)}.mini .soc{gap:2px;display:flex}.mini .soc a{place-items:center;width:36px;height:36px;display:grid}.mini .soc a:hover{color:var(--accent-text)}.mini svg.ic{fill:currentColor;width:16px;height:16px}main{z-index:1;flex:1;position:relative}.links a[aria-current=true]{color:var(--accent-text)}.scroll-progress{pointer-events:none;background:var(--accent);transform-origin:0;height:3px;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.bscene{z-index:-1;pointer-events:none;width:100%;height:100%;display:block;position:fixed;inset:0}.bscene .bs-stars{fill:var(--text);opacity:var(--star-o)}.bscene .bs-sheet{fill:color-mix(in srgb,var(--text) 6%,var(--sky-mid));stroke:color-mix(in srgb,var(--text) 14%,transparent);stroke-width:1.2px}.bscene .bs-margin{fill:none;stroke:color-mix(in srgb,var(--accent) 45%,transparent);stroke-width:1px}.bscene .bs-head{fill:color-mix(in srgb,var(--accent) 62%,transparent)}.bscene .bs-line{fill:color-mix(in srgb,var(--text) 20%,transparent)}.bscene .bs-code{fill:color-mix(in srgb,var(--text) 10%,transparent);stroke:color-mix(in srgb,var(--accent) 30%,transparent);stroke-width:1px}.bscene .bs-d0{opacity:.5}.bscene .bs-d1{opacity:.6}.bscene .bs-d2{opacity:.68}html[data-theme=light] .bscene .bs-sheet{fill:color-mix(in srgb,#fff 55%,var(--sky-mid));stroke:color-mix(in srgb,var(--text) 18%,transparent)}html[data-theme=light] .bscene .bs-d0{opacity:.62}.bscene .bs-wall{fill:var(--near)}.bscene .bs-ln{fill:none;stroke:var(--line);stroke-width:1.4px}.bscene .bs-gold,.bscene .bs-motes{fill:var(--accent)}.bscene .bs-mote{opacity:0;animation:linear infinite bs-rise}.bscene .bs-ink-line{fill:none;stroke-width:3px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0;animation:22s ease-in-out infinite bs-write}.bscene .bs-vane{fill:color-mix(in srgb,var(--text) 16%,var(--sky-mid));stroke:color-mix(in srgb,var(--text) 40%,transparent);stroke-width:1.4px;stroke-linejoin:round}.bscene .bs-vane2{fill:color-mix(in srgb,var(--text) 10%,var(--sky-mid))}.bscene .bs-barbs{fill:none;stroke:color-mix(in srgb,var(--text) 26%,transparent);stroke-width:1px}.bscene .bs-shaft{fill:none;stroke:color-mix(in srgb,var(--text) 55%,transparent);stroke-width:2.2px;stroke-linecap:round}.bscene .bs-nib{fill:var(--accent)}.bscene .bs-tip{fill:var(--accent-hot)}.bscene .bs-quill{transform-origin:0 0;animation:5.5s ease-in-out infinite bs-scribble}.bscene .bs-fl{animation:15s ease-in-out infinite alternate bs-float-a}.bscene .bs-fb{animation-name:bs-float-b;animation-duration:19s}.bscene .bs-fc{animation-name:bs-float-c;animation-duration:23s}@keyframes bs-float-a{to{transform:translate(8px,-16px)rotate(1.4deg)}}@keyframes bs-float-b{to{transform:translate(-10px,-12px)rotate(-1.6deg)}}@keyframes bs-float-c{to{transform:translate(6px,-20px)rotate(1deg)}}@keyframes bs-scribble{0%,to{transform:rotate(0)}25%{transform:rotate(-1.6deg)}50%{transform:rotate(.8deg)}75%{transform:rotate(-1deg)}}@keyframes bs-write{0%{stroke-dashoffset:1px;opacity:1}55%{stroke-dashoffset:0;opacity:1}85%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:0;opacity:0}}@keyframes bs-rise{0%{opacity:0;transform:translateY(0)}15%{opacity:.5}85%{opacity:.3}to{opacity:0;transform:translateY(-220px)}}html[data-theme=light] .bscene .bs-motes{fill:var(--accent-text)}.mist{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.mist i{opacity:.34;position:absolute}.mist i:before{content:"";filter:blur(48px);background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 38%,transparent),transparent);border-radius:50%;position:absolute;inset:0}.mist i:first-child{width:62vmax;height:30vmax;animation:58s ease-in-out infinite alternate drift-a;bottom:-8vmax;left:-14vmax}.mist i:nth-child(2){opacity:.22;width:54vmax;height:26vmax;animation:74s ease-in-out infinite alternate drift-b;bottom:4vmax;right:-16vmax}.mist i:nth-child(3){opacity:.16;width:40vmax;height:22vmax;animation:90s ease-in-out infinite alternate-reverse drift-a;top:-6vmax;left:28vw}.mist i:nth-child(3):before{background:radial-gradient(closest-side,color-mix(in srgb,var(--text) 22%,transparent),transparent)}html[data-theme=light] .mist i{opacity:.2}html[data-theme=light] .mist i:nth-child(2){opacity:.14}html[data-theme=light] .mist i:nth-child(3){opacity:.12}@keyframes drift-a{to{transform:translate(12vw,-3vmax)scale(1.12)}}@keyframes drift-b{to{transform:translate(-14vw,2vmax)scale(1.08)}}@media (prefers-reduced-motion:reduce){.mist i,.bscene .bs-fl,.bscene .bs-quill,.bscene .bs-ink-line{animation:none}.bscene .bs-mote{opacity:.25;animation:none}}.bhero{padding:clamp(48px,9vw,104px) 0 clamp(28px,4vw,44px)}.bhero h1{text-wrap:balance;max-width:14ch;margin:14px 0 18px;font-size:clamp(2.5rem,7vw,4.6rem);line-height:1.02}.bhero h1 em{color:var(--accent-text);font-style:normal}.bhero p.intro{max-width:58ch;color:color-mix(in srgb,var(--text) 82%,transparent);margin:0;font-size:clamp(1rem,1.6vw,1.15rem)}.bhero>.lab{font:600 .95rem/1 var(--f-mono);letter-spacing:.2em;color:var(--text);background:color-mix(in srgb,var(--bg) 90%,transparent);border:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-left:3px solid var(--accent);align-items:center;padding:8px 14px;display:inline-flex}.bhero-compact{padding:clamp(28px,5vw,52px) 0 clamp(8px,2vw,16px)}.bhero-compact h1{max-width:none;margin:14px 0 0;font-size:clamp(1.5rem,3.4vw,2.2rem);line-height:1.1}.bhero-compact .filters{margin-top:18px}.vh{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fmore,.f-close{display:none}#more-topics:checked+.filters .fmore{display:list-item}#more-topics:checked+.filters .f-open{display:none}#more-topics:checked+.filters .f-close{display:inline}.ftoggle .chip{cursor:pointer;user-select:none;border-style:dashed;padding:9px 12px}.ftoggle .chip:hover{border-color:var(--accent);color:var(--accent-text)}#more-topics:focus-visible+.filters .ftoggle .chip{outline:2px solid var(--focus);outline-offset:3px}.filters{flex-wrap:wrap;gap:8px;margin:26px 0 0;padding:0;list-style:none;display:flex}.filters a.chip,.tags a.chip{text-decoration:none;transition:border-color .15s,color .15s}.filters a.chip{padding:9px 12px}.filters a.chip:hover,.tags a.chip:hover{border-color:var(--accent);color:var(--accent-text)}.filters a.chip[aria-current=page]{border-color:var(--accent);color:var(--accent-text);background:color-mix(in srgb,var(--accent) 12%,transparent)}.crumbs{font:500 .72rem/1.4 var(--f-mono);letter-spacing:.06em;color:var(--muted);margin:0 0 6px}.crumbs ol{flex-wrap:wrap;gap:4px 8px;margin:0;padding:0;list-style:none;display:flex}.crumbs li+li:before{content:"/";opacity:.6;margin-right:8px}.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--accent-text)}.grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:40px 28px;margin:0;padding:12px 0 8px;list-style:none;display:grid}.card{flex-direction:column;height:100%;transition:border-color .2s;display:flex}.card:before{transition:background .2s,opacity .2s}.card:hover{border-color:var(--accent)}.card:hover:before{background:var(--accent);opacity:1}.card-cover{aspect-ratio:16/9;border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent);overflow:hidden}.card-cover img{object-fit:cover;width:100%;height:100%;display:block}.card-body{flex-direction:column;flex:1;padding:22px 22px 20px;display:flex}.card-meta{flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0 0 12px;display:flex}.chip-pin,.chip-draft{border-color:var(--accent);color:var(--accent-text);padding:4px 6px;font-size:.62rem}.chip-draft{border-style:dashed}.card-title{margin:0 0 10px;font-size:1.32rem;line-height:1.2}.card-title a{text-decoration:none}.card-title a:after{content:"";z-index:1;position:absolute;inset:0}.card-title a:hover{color:var(--accent-text)}.card-title a:focus-visible{outline:none}.card-title a:focus-visible:after{outline:2px solid var(--focus);outline-offset:4px}.card-desc{color:color-mix(in srgb,var(--text) 78%,transparent);-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;margin:0 0 16px;font-size:.95rem;line-height:1.55;display:-webkit-box;overflow:hidden}.tags{flex-wrap:wrap;gap:6px;margin:auto 0 0;padding:0;list-style:none;display:flex}.tags a{z-index:2;position:relative}.feature-slot{grid-column:1/-1}@media (width>=860px){.card-feature:has(.card-cover){flex-direction:row}.card-feature .card-cover{aspect-ratio:auto;border-bottom:0;border-right:1px solid color-mix(in srgb,var(--line) 70%,transparent);flex:0 0 46%}.card-feature .card-body{justify-content:center;padding:34px 34px 30px}.card-feature .card-title{font-size:clamp(1.6rem,2.6vw,2.1rem)}.card-feature .card-desc{font-size:1.05rem}}.empty{text-align:center;padding:36px 28px}.empty p{color:var(--muted);margin:0}.pager{font:500 .85rem var(--f-mono);justify-content:space-between;align-items:center;gap:16px;margin:56px 0 0;display:flex}.pager ol{flex-wrap:wrap;justify-content:center;gap:6px;margin:0;padding:0;list-style:none;display:flex}.pager a{text-align:center;min-width:36px;padding:8px 6px;text-decoration:none}.pager a:hover{color:var(--accent-text)}.pager-cur{text-align:center;min-width:36px;color:var(--accent-text);border:1px solid var(--accent);padding:8px 6px;display:inline-block}.pager-off{opacity:.3;padding:8px 6px}.pager-gap{text-align:center;min-width:24px;color:var(--text);opacity:.6;font-size:1.15rem;line-height:1;display:inline-block}.totop{text-align:center;font:500 .78rem var(--f-mono);letter-spacing:.06em;margin:22px 0 0}.totop a{color:var(--muted);padding:8px 12px;text-decoration:none;display:inline-block}.totop a:hover{color:var(--accent-text)}.post-head{padding:clamp(36px,6vw,72px) 0 clamp(20px,3vw,32px)}.post-head h1{text-wrap:balance;margin:12px 0 18px;font-size:clamp(2rem,5vw,3.3rem);line-height:1.06}.post-head .lead{max-width:62ch;color:color-mix(in srgb,var(--text) 84%,transparent);margin:0 0 22px;font-size:clamp(1.02rem,1.7vw,1.2rem);line-height:1.55}.byline{font:500 .74rem/1.4 var(--f-mono);letter-spacing:.06em;color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0 0 18px;display:flex}.byline a{text-decoration:none}.byline a:hover{color:var(--accent-text)}.byline .dot{opacity:.6}.post-cover{margin:clamp(26px,4vw,44px) 0 0}.post-cover img{width:100%;height:auto;display:block}.post-layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:28px;padding-bottom:clamp(40px,6vw,72px);display:grid}@media (width>=1120px){.post-layout:has(.post-aside){grid-template-columns:minmax(0,1fr) 280px;gap:44px}.post-layout:has(.post-aside) .post-main{grid-area:1/1}.post-aside{top:calc(var(--nav-h) + 24px);grid-area:1/2;position:sticky}}.post-aside{flex-direction:column;gap:22px;display:flex}.toc{margin-top:9px;padding:18px 18px 14px}.toc ol{flex-direction:column;gap:2px;margin:12px -18px 0;padding:0;list-style:none;display:flex}.toc a{color:color-mix(in srgb,var(--text) 78%,transparent);padding:5px 18px;font-size:.86rem;line-height:1.35;text-decoration:none;transition:color .15s,background .15s;display:block;position:relative}.toc a[data-near]{color:var(--text)}.toc a:hover{color:var(--accent-text)}.toc a[aria-current=location]{color:var(--accent-text);background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 16%,transparent),transparent 92%)}.toc a[aria-current=location]:before{content:"";background:var(--accent);width:2px;position:absolute;top:3px;bottom:3px;left:0}.toc-d3{display:none}.toc-d3.toc-show{display:block}.toc-d3 a{padding-left:32px;font-size:.8rem}.toc-tucked{display:none}@media (width<=1119px){.post-aside{display:none}.post-head{max-width:800px;margin-inline:auto}.post-main{justify-self:center}.more{max-width:800px;margin-inline:auto}}.doc{min-width:0;margin-top:9px;padding:clamp(22px,4.5vw,52px)}.doc-foot{border-top:1px solid var(--hair);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 28px;margin-top:44px;padding-top:22px;display:flex}.share{align-items:center;gap:2px;display:flex}.share .lab{margin-right:10px}.share a{place-items:center;width:36px;height:36px;text-decoration:none;display:grid}.share a:hover{color:var(--accent-text)}.share a .bl-line{bottom:7px}.share svg.ic{fill:currentColor;width:16px;height:16px}.cta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 28px;margin-top:36px;padding:26px 28px;transition:border-color .2s;display:flex}.cta:before{transition:background .2s,opacity .2s}.cta:hover{border-color:var(--accent)}.cta:hover:before{background:var(--accent);opacity:1}.cta h2{margin:0 0 6px;font-size:1.35rem}.cta p{color:color-mix(in srgb,var(--text) 78%,transparent);max-width:46ch;margin:0}.more{padding:0 0 clamp(48px,7vw,88px)}.more h2{margin:0 0 6px;font-size:clamp(1.4rem,2.6vw,1.9rem)}.more .grid{padding-top:30px}.prose{color:color-mix(in srgb,var(--text) 90%,transparent);overflow-wrap:break-word;font-size:1.06rem;line-height:1.78}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose h2,.prose h3,.prose h4{scroll-margin-top:calc(var(--nav-h) + 20px);color:var(--text)}.prose h2{margin:2.2em 0 .6em;padding-top:.2em;font-size:clamp(1.55rem,3vw,1.95rem)}.prose h3{margin:1.9em 0 .5em;font-size:1.28rem}.prose h4{font:700 1.04rem/1.3 var(--f-head);letter-spacing:0;margin:1.6em 0 .4em}.prose .anchor{font:500 .8em var(--f-mono);color:var(--muted);opacity:0;margin-left:.45em;text-decoration:none;transition:opacity .15s}.prose :is(h2,h3,h4):hover .anchor,.prose .anchor:focus-visible{opacity:1}.prose p{margin:0 0 1.25em}.prose a{color:var(--accent-text);text-underline-offset:.2em;text-decoration:underline 1px}.prose a:hover{color:var(--accent-hot)}.prose strong{color:var(--text);font-weight:600}.prose ul,.prose ol{margin:0 0 1.25em;padding-left:1.4em}.prose li{margin:.35em 0}.prose li::marker{color:var(--accent-text)}.prose hr{background:var(--hair);border:0;height:1px;margin:2.4em 0}.prose img{border:1px solid color-mix(in srgb,var(--line) 70%,transparent);height:auto;margin:1.8em auto;display:block}.prose blockquote{border-left:2px solid var(--accent);color:color-mix(in srgb,var(--text) 80%,transparent);margin:1.6em 0;padding:.2em 0 .2em 1.2em}.prose blockquote p:last-child{margin-bottom:0}.prose :not(pre)>code{font:500 .86em var(--f-mono);background:var(--chip);border:1px solid var(--hair);padding:.15em .4em}.prose table{border-collapse:collapse;max-width:100%;margin:1.6em 0;font-size:.94rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--hair);text-align:left;vertical-align:top;padding:10px 14px}.prose th{font:600 .82rem var(--f-mono);letter-spacing:.04em;background:var(--chip);color:var(--text)}.prose .footnotes{color:var(--muted);margin-top:3em;font-size:.9rem}.prose .footnotes h2{margin-top:0;font-size:1rem}.prose kbd{font:500 .82em var(--f-mono);border:1px solid var(--line);background:var(--chip);border-bottom-width:2px;padding:.1em .45em}.prose .callout{--c:var(--accent);border:1px solid color-mix(in srgb,var(--c) 45%,transparent);border-left:3px solid var(--c);background:color-mix(in srgb,var(--c) 9%,transparent);margin:1.7em 0;padding:16px 20px}.prose .callout>:last-child{margin-bottom:0}.prose .callout-title{font:600 .72rem/1.3 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--c);margin:0 0 .4em}.prose .callout-note{--c:#6f9bd9}.prose .callout-tip{--c:#4fb37a}.prose .callout-important{--c:var(--accent)}.prose .callout-warning{--c:#e58a3a}.prose .callout-caution{--c:#e5675c}html[data-theme=light] .prose .callout-note{--c:#2f5fa8}html[data-theme=light] .prose .callout-tip{--c:#2a7f52}html[data-theme=light] .prose .callout-warning{--c:#b35e12}html[data-theme=light] .prose .callout-caution{--c:#b3372d}:root,:root[data-theme=dark]{--astro-code-foreground:#e6e4dc;--astro-code-background:#0e0e11;--astro-code-token-constant:#8fb8f0;--astro-code-token-string:#9fd28a;--astro-code-token-comment:#7d7d76;--astro-code-token-keyword:#e8a33d;--astro-code-token-parameter:#e6e4dc;--astro-code-token-function:#f0c987;--astro-code-token-string-expression:#9fd28a;--astro-code-token-punctuation:#a8a8a0;--astro-code-token-link:#8fb8f0}:root[data-theme=light]{--astro-code-foreground:#2a2a26;--astro-code-background:#fbfaf6;--astro-code-token-constant:#2f5fa8;--astro-code-token-string:#3e7a2c;--astro-code-token-comment:#8a8a80;--astro-code-token-keyword:#8a5a10;--astro-code-token-parameter:#2a2a26;--astro-code-token-function:#7a4a00;--astro-code-token-string-expression:#3e7a2c;--astro-code-token-punctuation:#6b6b64;--astro-code-token-link:#2f5fa8}.prose pre{border:1px solid color-mix(in srgb,var(--line) 70%,transparent);font:400 .86rem/1.65 var(--f-mono);tab-size:2;-webkit-text-size-adjust:100%;margin:1.7em 0;padding:18px 20px;overflow-x:auto}.prose pre code{font:inherit;background:0 0;border:0;padding:0}.prose pre:focus-visible{outline-offset:2px}@media (width<=560px){.prose{font-size:1.02rem}.cta{padding:22px 20px}.pager{font-size:.8rem}}.post-main{width:100%;min-width:0;max-width:800px}
