html:has(.blog-root){background:#0a0a0c}html:has(.blog-root) body{background:#0a0a0c}@media (prefers-reduced-motion:no-preference){html:has(.blog-root){scroll-behavior:smooth}}.blog-root{--blog-bg:#0a0a0c;--blog-text:#ffffffd6;--blog-muted:#ffffff94;--blog-heading:#fff;--blog-border:#ffffff17;--blog-surface:#ffffff09;--blog-accent:#a78bfa;--blog-accent-strong:#8b5cf6;--blog-link:#c4b5fd;background:var(--blog-bg);color:var(--blog-text)}.blog-root [id]{scroll-margin-top:96px}.blog-glow{background:radial-gradient(60% 55% at 15% 0,#8b5cf633,#0000 70%),radial-gradient(45% 40% at 90% 10%,#3b82f61a,#0000 70%)}.blog-grid{background-image:linear-gradient(90deg,#8b5cf60d 1px,#0000 1px),linear-gradient(#8b5cf60d 1px,#0000 1px);background-size:64px 64px;-webkit-mask-image:radial-gradient(80% 70% at 50% 0,#000 10%,#0000 70%);mask-image:radial-gradient(80% 70% at 50% 0,#000 10%,#0000 70%)}.blog-gradient-text{background:linear-gradient(90deg,#a78bfa,#c084fc 45%,#60a5fa);color:#0000;-webkit-background-clip:text;background-clip:text}.blog-prose{max-width:36rem;color:var(--blog-text);overflow-wrap:break-word;font-size:1.0625rem;line-height:1.75}@media (min-width:640px){.blog-prose{font-size:1.125rem}}.blog-prose>*+*{margin-top:1.4em}.blog-prose h2{letter-spacing:-.015em;color:var(--blog-heading);margin-top:2.6em;font-size:1.6rem;font-weight:700;line-height:1.25}.blog-prose h3{color:var(--blog-heading);margin-top:2em;font-size:1.25rem;font-weight:650;line-height:1.35}@media (min-width:640px){.blog-prose h2{font-size:1.875rem}.blog-prose h3{font-size:1.375rem}}.blog-prose h2+*,.blog-prose h3+*{margin-top:.75em}.blog-prose a{color:var(--blog-link);text-underline-offset:3px;-webkit-text-decoration:underline #c4b5fd66;text-decoration:underline #c4b5fd66;transition:text-decoration-color .15s}.blog-prose a:hover{text-decoration-color:currentColor}.blog-prose strong{color:var(--blog-heading);font-weight:650}.blog-prose ul,.blog-prose ol{padding-left:1.4em}.blog-prose ul{list-style:outside}.blog-prose ol{list-style:decimal}.blog-prose li+li{margin-top:.45em}.blog-prose li::marker{color:var(--blog-accent)}.blog-prose blockquote{border-left:3px solid var(--blog-accent-strong);color:#ffffffeb;padding:.2em 0 .2em 1.1em;font-style:italic}.blog-prose code{color:#ddd6fe;background:#8b5cf624;border-radius:6px;padding:.12em .4em;font-size:.88em}.blog-prose pre{border:1px solid var(--blog-border);background:#ffffff08;border-radius:12px;padding:1em 1.2em;font-size:.9em;line-height:1.6;overflow-x:auto}.blog-prose pre code{background:0 0;padding:0}.blog-prose hr{background:var(--blog-border);border:0;height:1px;margin:3em 0}.blog-table-wrap{border:1px solid var(--blog-border);border-radius:14px;position:relative;overflow-x:auto}.blog-prose table{border-collapse:collapse;width:100%;font-size:.92em;line-height:1.5}.blog-prose th,.blog-prose td{text-align:left;vertical-align:top;border-bottom:1px solid var(--blog-border);padding:.75em 1em}.blog-prose thead th{color:var(--blog-heading);white-space:nowrap;background:#ffffff08;font-weight:600}.blog-prose tbody tr:last-child td{border-bottom:0}.blog-prose .blog-block{margin-top:2em;margin-bottom:2em}.blog-prose .blog-block>:first-child{margin-top:0}.blog-prose .blog-block p+p{margin-top:.8em}.blog-steps{counter-reset:blog-step;padding-left:0!important;list-style:none!important}.blog-step{counter-increment:blog-step;padding-bottom:1.5rem;padding-left:3.25rem;position:relative}.blog-step+.blog-step{margin-top:0!important}.blog-step:before{content:counter(blog-step);color:#ddd6fe;background:#8b5cf629;border:1px solid #8b5cf666;border-radius:9999px;place-items:center;width:2.1rem;height:2.1rem;font-size:.9rem;font-weight:700;display:grid;position:absolute;top:0;left:0}.blog-step:after{content:"";background:linear-gradient(#8b5cf666,#0000);width:1px;position:absolute;top:2.4rem;bottom:.3rem;left:calc(1.05rem - .5px)}.blog-step:last-child{padding-bottom:0}.blog-step:last-child:after{display:none}.blog-step>*+*{margin-top:.6em}.blog-wave rect{transform-box:fill-box;transform-origin:50%}@media (prefers-reduced-motion:no-preference){.blog-wave--live rect{animation:1.6s ease-in-out infinite blog-wave}.blog-wave--live rect:nth-child(3n){animation-delay:-.4s}.blog-wave--live rect:nth-child(3n+1){animation-delay:-.9s}}@keyframes blog-wave{0%,to{transform:scaleY(.7)}50%{transform:scaleY(1.1)}}
