.progress{background:var(--acc);z-index:90;width:0;height:3px;transition:width .1s linear;position:fixed;top:0;left:0}.article{padding:150px 0 40px}@media (width<=720px){.article{padding-top:118px}}.art-wrap{grid-template-columns:1fr minmax(0,72ch) 1fr;gap:0;max-width:1320px;margin:0 auto;padding:0 40px;display:grid}@media (width<=1080px){.art-wrap{grid-template-columns:minmax(0,1fr);padding:0 40px}}@media (width<=720px){.art-wrap{padding:0 22px}}.art-main{grid-column:2;min-width:0}@media (width<=1080px){.art-main{grid-column:1;width:100%;max-width:72ch;margin:0 auto}}.post-tag{letter-spacing:.14em;text-transform:uppercase;color:var(--acc2);align-items:center;gap:9px;margin-top:30px;font-size:12px;font-weight:700;display:inline-flex}.post-tag .fdot{background:var(--acc2);border-radius:999px;width:7px;height:7px}h1.post-h1{letter-spacing:-.03em;text-wrap:balance;margin:20px 0 0;font-size:clamp(32px,4.6vw,54px);font-weight:700;line-height:1.06}.post-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:13px;margin-top:24px;font-size:14px;font-weight:500;display:flex}.post-meta .mdot{opacity:.6;background:currentColor;border-radius:999px;width:4px;height:4px}.byline{align-items:center;gap:12px;margin-top:22px;display:flex}.by-mono{border-radius:var(--r-pill);background:var(--invert-bg);width:44px;height:44px;color:var(--invert-fg);letter-spacing:-.03em;justify-content:center;align-items:center;font-size:22px;font-weight:700;display:flex}.by-mono .c2{color:var(--acc)}.by-name{letter-spacing:-.01em;font-size:15px;font-weight:700}.by-role{color:var(--muted);font-size:13px}.toc{background:var(--card);border:1px solid var(--hairline);border-radius:var(--r-lg);margin-top:36px;padding:24px 26px}.toc .toc-k{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:700}.toc ol{counter-reset:toc;flex-direction:column;gap:2px;margin:14px 0 0;padding:0;list-style:none;display:flex}.toc li{counter-increment:toc}.toc a{border-radius:var(--r-sm);color:var(--fg);align-items:baseline;gap:12px;padding:8px 10px;font-size:15px;font-weight:500;transition:background .2s,color .2s;display:flex}.toc a:hover{background:color-mix(in srgb,var(--acc) 10%,transparent);color:var(--acc)}.toc a:before{content:counter(toc,decimal-leading-zero);color:var(--acc);opacity:.85;min-width:22px;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:700}.prose{margin-top:44px;font-size:18.5px;line-height:1.72}.prose>p{color:color-mix(in srgb,var(--fg) 90%,var(--muted));text-wrap:pretty;margin:0 0 24px}.prose>p:first-child{margin-top:0}.lede{color:var(--fg);font-size:22px;font-weight:400;line-height:1.6}.lede b{font-weight:700}.prose b,.prose strong{color:var(--fg);font-weight:700}.prose h2{letter-spacing:-.025em;text-wrap:balance;margin:56px 0 0;scroll-margin-top:90px;font-size:clamp(26px,3.2vw,34px);font-weight:700;line-height:1.12}.prose h2+p{margin-top:18px}.prose h3{letter-spacing:-.01em;margin:36px 0 0;scroll-margin-top:90px;font-size:21px;font-weight:700}.prose h3+p{margin-top:12px}.attack-h{align-items:baseline;gap:14px;display:flex}.attack-h .an{color:var(--acc);letter-spacing:0;border:1px solid color-mix(in srgb,var(--acc) 45%,transparent);border-radius:var(--r-pill);flex:none;padding:4px 11px;font-family:JetBrains Mono,monospace;font-size:15px;font-weight:700;transform:translateY(-3px)}.prose ul{flex-direction:column;gap:12px;margin:0 0 24px;padding:0;list-style:none;display:flex}.prose ul li{color:color-mix(in srgb,var(--fg) 90%,var(--muted));padding-left:26px;position:relative}.prose ul li:before{content:"";background:var(--acc);border-radius:999px;width:8px;height:8px;position:absolute;top:12px;left:2px}.prose a.link{color:var(--acc);border-bottom:1px solid color-mix(in srgb,var(--acc) 40%,transparent);transition:border-color .2s}.prose a.link:hover{border-color:var(--acc)}.prose code{background:color-mix(in srgb,var(--acc) 14%,transparent);color:var(--fg);border:1px solid color-mix(in srgb,var(--acc) 22%,transparent);white-space:nowrap;border-radius:6px;padding:.14em .42em;font-family:JetBrains Mono,monospace;font-size:.86em;font-weight:500}.rl[data-vibe=dark] .prose code{background:color-mix(in srgb,var(--acc) 26%,transparent)}.code{border-radius:var(--r-lg);border:1px solid var(--hairline);background:var(--code-bg);box-shadow:var(--shadow-md);margin:26px 0;overflow:hidden}.code-bar{border-bottom:1px solid var(--code-line);background:color-mix(in srgb,#fff 4%,var(--code-bg));align-items:center;gap:10px;padding:11px 16px;display:flex}.code-bar .dots{gap:6px;display:flex}.code-bar .dots i{background:#ece9f638;border-radius:999px;width:9px;height:9px}.code-bar .dots i:first-child{background:var(--acc)}.code-bar .lang{letter-spacing:.14em;text-transform:uppercase;color:#ece9f680;margin-left:4px;font-family:JetBrains Mono,monospace;font-size:11.5px;font-weight:600}.code-bar .role{color:#ece9f673;letter-spacing:.05em;margin-left:auto;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600}.code pre{color:var(--code-fg);tab-size:2;margin:0;padding:20px 22px;font-family:JetBrains Mono,monospace;font-size:14px;line-height:1.7;overflow-x:auto}.fix{background:color-mix(in srgb,var(--acc) 12%,var(--card));border:1px solid color-mix(in srgb,var(--acc) 34%,transparent);border-left:4px solid var(--acc);border-radius:var(--r-md);align-items:flex-start;gap:16px;margin:22px 0 30px;padding:18px 22px;display:flex}.fix .fx-k{letter-spacing:.1em;text-transform:uppercase;color:var(--acc);flex:none;padding-top:2px;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:700}.fix .fx-t{color:var(--fg);margin:0;font-size:16px;line-height:1.62}.fix .fx-t b{font-weight:700}.fix .fx-t code{white-space:nowrap}.prose blockquote{border-left:3px solid var(--acc);letter-spacing:-.01em;color:var(--fg);margin:30px 0;padding:6px 0 6px 26px;font-size:21px;font-style:italic;font-weight:500;line-height:1.5}.prose blockquote b{color:var(--acc);font-style:normal}.divider{background:var(--hairline);height:1px;margin:52px 0}.endcta{background:var(--invert-bg);color:var(--invert-fg);border-radius:var(--r-xl);margin:16px 0 0;padding:48px 44px;position:relative;overflow:hidden}@media (width<=640px){.endcta{padding:34px 26px}}.endcta .ec-k{letter-spacing:.16em;text-transform:uppercase;color:var(--acc2);font-size:12px;font-weight:700}.endcta h2{letter-spacing:-.025em;text-transform:none;max-width:26ch;color:var(--invert-fg);margin:16px 0 0;font-size:clamp(24px,2.8vw,32px);font-weight:700;line-height:1.18}.endcta p{opacity:.74;max-width:56ch;margin:16px 0 0;font-size:16px;line-height:1.6}.endcta .ec-act{margin-top:28px}.endcta .ec-mono{font-family:var(--font-sans);letter-spacing:-.02em;color:#0000;-webkit-text-stroke:1.5px #ffffff29;pointer-events:none;font-size:158px;font-weight:500;line-height:1;position:absolute;bottom:-30px;right:-18px}.rl[data-vibe=dark] .endcta .ec-mono{-webkit-text-stroke-color:#15102224}.subs2{background:var(--card);border:1px solid var(--hairline);border-radius:var(--r-xl);grid-template-columns:1fr auto;align-items:center;gap:26px;margin-top:22px;padding:28px 30px;display:grid}@media (width<=720px){.subs2{grid-template-columns:1fr;gap:18px}}.subs2 .s2-k{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:700}.subs2 h3{letter-spacing:-.01em;text-transform:lowercase;margin:8px 0 0;font-size:19px;font-weight:700}.subs2 .s2-tg{color:var(--acc);align-items:center;gap:7px;margin-top:8px;font-size:13.5px;font-weight:600;display:inline-flex}.subs2 .s2-tg .btn-i{transition:transform .35s var(--ease-out)}.subs2 .s2-tg:hover .btn-i{transform:translate(4px)}.subform{flex-wrap:wrap;gap:10px;min-width:min(100%,340px);display:flex}.subform .field{min-width:190px;color:var(--fg);background:color-mix(in srgb,var(--fg) 4%,transparent);border:1px solid var(--hairline);border-radius:var(--r-pill);flex:1;padding:13px 18px;font-family:inherit;font-size:15px;transition:border-color .2s,background .2s}.subform .field::placeholder{color:var(--muted)}.subform .field:focus{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 6%,transparent);outline:none}.subform .btn{justify-content:center}.addslot{color:var(--muted);border:1px dashed color-mix(in srgb,var(--muted) 60%,transparent);white-space:nowrap;vertical-align:baseline;border-radius:6px;padding:0 7px;font-size:12px;font-weight:600;display:inline-block}.s2-note{color:var(--muted);margin-top:10px;font-size:12px}.postnav{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:44px;display:flex}.back-lab{color:var(--acc);align-items:center;gap:9px;font-size:15px;font-weight:600;display:inline-flex}.back-lab .btn-i{transition:transform .35s var(--ease-out)}.back-lab:hover .btn-i{transform:translate(-4px)}.related{margin-top:56px}.related .rk{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:700}.rel-grid{grid-template-columns:repeat(2,1fr);gap:20px;margin-top:20px;display:grid}@media (width<=640px){.rel-grid{grid-template-columns:1fr}}.rel-card{background:var(--card);border:1px dashed var(--hairline);border-radius:var(--r-lg);flex-direction:column;justify-content:center;min-height:130px;padding:24px 26px;display:flex}.rel-card .rc-k{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:700}.rel-card .rc-t{letter-spacing:-.01em;color:var(--fg);margin:8px 0 0;font-size:17px;font-weight:700}.rel-card .rc-b{color:var(--muted);margin:8px 0 0;font-size:13.5px;line-height:1.5}footer{margin-top:80px}@media (width<=600px){.prose{font-size:17px}.lede{font-size:19px}.code pre{padding:16px;font-size:12.5px}.prose :not(pre)>code,.fix .fx-t code{white-space:normal;overflow-wrap:anywhere}.toc{padding:18px}.endcta .ec-mono{font-size:104px;bottom:-18px;right:-10px}.subform .field{font-size:16px}}
