.blog-shell{--ink-0:#07090c;--ink-1:#0c1015;--ink-2:#121821;--ink-3:#1a2130;--ink-4:#242c3c;--line:rgba(255,255,255,0.06);--line-2:rgba(255,255,255,0.10);--line-3:rgba(255,255,255,0.18);--fg:#e7ecf4;--fg-2:#aab3c3;--fg-3:#707a8d;--fg-4:#4a5365;--accent:oklch(72% 0.18 152);--accent-ink:oklch(22% 0.06 152);--accent-soft:oklch(72% 0.18 152/0.14);--accent-line:oklch(72% 0.18 152/0.35);--accent-glow:oklch(72% 0.18 152/0.22);--violet-glow:oklch(70% 0.18 295/0.22);--blue:oklch(72% 0.18 245);--radius-sm:6px;--blog-radius:10px;--radius-lg:14px;--radius-xl:18px;background:var(--ink-0);color:var(--fg);font-family:var(--font-inter),"Inter",system-ui,sans-serif}.blog-shell .mono{font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace}.blog-page{max-width:1280px;margin:0 auto;padding:0 32px}.blog-shell .pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:99px;border:1px solid var(--line-2);background:transparent;color:var(--fg-2);font-size:12px;font-weight:500;letter-spacing:.01em;cursor:pointer;transition:all .15s ease;font-family:inherit}.blog-shell .pill:hover{border-color:var(--line-3);color:var(--fg)}.blog-shell .pill.active{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}.blog-shell .pill .count{font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:11px;opacity:.55;margin-left:2px}.blog-shell .cta-pill{padding:8px 16px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px;border:0;cursor:pointer;transition:filter .15s ease;font-family:inherit}.blog-shell .cta-pill:hover{filter:brightness(1.08)}.blog-shell .eyebrow{font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-3)}.blog-hero{padding:80px 0 48px;border-bottom:1px solid var(--line);margin-bottom:48px;position:relative}.blog-hero .eyebrow{margin-bottom:18px;display:inline-flex}.blog-hero h1{margin:0 0 14px;font-size:56px;font-weight:600;letter-spacing:-.03em;line-height:1.05;max-width:760px;color:var(--fg)}.blog-hero h1 em{font-style:normal;color:var(--accent)}.blog-hero p{margin:0;max-width:540px;color:var(--fg-2);font-size:17px;line-height:1.5}.blog-hero .topic-row{display:flex;gap:8px;margin-top:28px;flex-wrap:wrap}.blog-shell .search-bar{margin:32px 0 24px;display:flex;align-items:center;gap:10px;padding:6px;background:var(--ink-1);border:1px solid var(--line-2);border-radius:12px;max-width:640px}.blog-shell .search-bar svg{margin-left:8px;color:var(--fg-3);flex-shrink:0}.blog-shell .search-bar input{flex:1;padding:10px 12px;background:transparent;border:0;outline:none;font-size:14px;color:var(--fg);font-family:inherit}.blog-shell .search-bar input::placeholder{color:var(--fg-4)}.blog-shell .search-bar .kbd{font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:10.5px;color:var(--fg-4);padding:4px 8px;border-radius:6px;border:1px solid var(--line-2);background:var(--ink-2)}.blog-featured{display:grid;grid-template-columns:1.35fr 1fr;gap:32px;padding:24px;border-radius:16px;background:var(--ink-1);border:1px solid var(--line-2);margin-bottom:56px;align-items:center;position:relative;overflow:hidden;color:var(--fg)}.blog-featured:before{content:"";position:absolute;inset:0;background:radial-gradient(600px 280px at 90% 10%,var(--violet-glow),transparent 60%);pointer-events:none;opacity:.5}.blog-featured>*{position:relative;z-index:1}.blog-featured .meta-row{display:flex;align-items:center;gap:12px;margin-bottom:14px;font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:11.5px;color:var(--fg-3);letter-spacing:.04em;flex-wrap:wrap}.blog-featured .meta-row .featured-tag{color:var(--accent);text-transform:uppercase;letter-spacing:.12em;font-size:10.5px}.blog-featured .meta-row .dot{width:4px;height:4px;border-radius:99px;background:var(--fg-4)}.blog-featured h2{margin:0 0 14px;font-size:32px;font-weight:600;letter-spacing:-.025em;line-height:1.15}.blog-featured h2 a{color:var(--fg);text-decoration:none;transition:color .15s ease}.blog-featured h2 a:hover{color:var(--accent)}.blog-featured .excerpt{font-size:15px;color:var(--fg-2);line-height:1.55;margin:0 0 22px;max-width:540px}.blog-featured .read{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-weight:500;font-size:14px;text-decoration:none;transition:gap .15s ease}.blog-featured .read:hover{gap:9px}.blog-shell .thumb{aspect-ratio:16/10;position:relative;overflow:hidden;border-radius:12px;background:var(--ink-2);border:1px solid var(--line-2)}.blog-shell .post-card .thumb{border-radius:0;border:0;border-bottom:1px solid var(--line);background:var(--ink-2)}.blog-shell .thumb-inner{position:absolute;inset:14px;border-radius:6px;display:flex;flex-direction:column;padding:10px;background:var(--ink-1);border:1px solid var(--line-2);overflow:hidden}.blog-shell .thumb-inner .hdr{height:18px;border-radius:4px;margin-bottom:8px}.blog-shell .thumb-inner .line{height:5px;border-radius:99px;background:var(--ink-4);margin-bottom:4px}.blog-shell .thumb-inner .line.first{background:var(--fg-4);width:70%}.blog-shell .thumb-inner .line.l85{width:85%}.blog-shell .thumb-inner .line.l60{width:60%;margin-bottom:8px}.blog-shell .thumb-inner .btn{height:16px;border-radius:99px;width:60px;margin-top:auto}.blog-section-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:28px;gap:16px}.blog-section-head h3{margin:0;font-size:22px;font-weight:600;letter-spacing:-.018em;color:var(--fg)}.blog-section-head .count{font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:12px;color:var(--fg-4);letter-spacing:.06em}.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-bottom:80px}@media (max-width:980px){.blog-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.blog-grid{grid-template-columns:1fr}}.post-card{background:var(--ink-1);border:1px solid var(--line-2);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;transition:border-color .18s ease,transform .18s ease;text-decoration:none;color:var(--fg)}.post-card:hover{border-color:var(--line-3);transform:translateY(-2px)}.post-card .body{padding:18px 20px 22px;display:flex;flex-direction:column;flex:1;gap:10px}.post-card .body .topic{font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:10.5px;color:var(--accent);letter-spacing:.1em;text-transform:uppercase;display:inline-flex;align-items:center;gap:6px}.post-card .body h4{margin:0;font-size:17px;font-weight:600;letter-spacing:-.015em;line-height:1.3;color:var(--fg);transition:color .15s ease}.post-card:hover .body h4{color:var(--accent)}.post-card .body p{margin:0;font-size:13.5px;color:var(--fg-2);line-height:1.55;flex:1}.post-card .meta{display:flex;align-items:center;gap:8px;font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:11px;color:var(--fg-4);letter-spacing:.05em;padding-top:10px;border-top:1px solid var(--line);margin-top:auto}.post-card .meta .dot{width:3px;height:3px;border-radius:99px;background:var(--fg-4)}.blog-empty{text-align:center;padding:60px 0;color:var(--fg-3)}.blog-empty .msg{font-size:14px;margin-bottom:12px}.newsletter{margin:80px 0 100px;padding:48px;border-radius:18px;background:linear-gradient(140deg,var(--ink-2),var(--ink-1));border:1px solid var(--line-2);display:grid;grid-template-columns:1fr auto;align-items:center;gap:32px;position:relative;overflow:hidden}.newsletter:before{content:"";position:absolute;inset:0;background:radial-gradient(500px 240px at 5% 100%,var(--accent-glow),transparent 60%);pointer-events:none}.newsletter>*{position:relative;z-index:1}.newsletter h3{margin:0 0 8px;font-size:26px;font-weight:600;letter-spacing:-.02em;color:var(--fg)}.newsletter p{margin:0;color:var(--fg-2);font-size:14.5px;max-width:520px;line-height:1.5}.newsletter .form{display:flex;gap:8px;align-items:center}.newsletter input{width:280px;padding:12px 14px;background:var(--ink-1);border:1px solid var(--line-2);border-radius:10px;color:var(--fg);font-size:13.5px;outline:none;font-family:inherit;transition:border-color .15s ease,box-shadow .15s ease}.newsletter input::placeholder{color:var(--fg-4)}.newsletter input:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}@media (max-width:800px){.newsletter{grid-template-columns:1fr}.newsletter .form{width:100%}.newsletter input{flex:1;width:auto}}.post-shell{max-width:1280px;margin:0 auto;padding:32px;display:grid;grid-template-columns:200px minmax(0,720px) 240px;gap:48px;align-items:start}@media (max-width:1100px){.post-shell{grid-template-columns:1fr;gap:32px}.post-shell .post-rail-left,.post-shell .post-rail-right{display:none}}.post-rail-left{position:sticky;top:96px}.post-rail-left .back-blog{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:8px;background:var(--ink-2);border:1px solid var(--line-2);color:var(--fg-2);font-size:13px;font-weight:500;text-decoration:none;transition:color .15s ease,border-color .15s ease}.post-rail-left .back-blog:hover{color:var(--fg);border-color:var(--line-3)}.post-rail-right{position:sticky;top:96px}.toc{border-left:1px solid var(--line-2);padding-left:16px}.toc-title{font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:10.5px;color:var(--fg-4);letter-spacing:.14em;text-transform:uppercase;margin-bottom:14px}.toc ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.toc li a{font-size:12.5px;color:var(--fg-3);line-height:1.45;display:block;padding-left:12px;margin-left:-16px;border-left:2px solid transparent;transition:all .15s ease;text-decoration:none}.toc li a:hover{color:var(--fg);border-left-color:var(--line-3)}.toc li a.active{color:var(--accent);border-left-color:var(--accent)}.toc-share{margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}.toc-share .icon-btns{display:flex;gap:6px;margin-left:-8px}.toc-share .icon-btn{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:var(--ink-2);border:1px solid var(--line-2);color:var(--fg-2);cursor:pointer;transition:all .15s ease}.toc-share .icon-btn:hover{color:var(--fg);border-color:var(--line-3)}.post-head{padding-bottom:32px;border-bottom:1px solid var(--line);margin-bottom:40px}.post-head .topic{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:11.5px;color:var(--accent);letter-spacing:.12em;text-transform:uppercase;margin-bottom:22px}.post-head .topic .topic-meta{color:var(--fg-3);letter-spacing:.08em}.post-head h1{margin:0 0 24px;font-size:44px;font-weight:600;letter-spacing:-.025em;line-height:1.1;color:var(--fg)}.post-head .deck{font-size:19px;color:var(--fg-2);line-height:1.5;margin:0 0 28px;max-width:680px}.post-head .author-row{display:flex;align-items:center;gap:12px}.author-row .av{width:38px;height:38px;border-radius:99px;background:linear-gradient(135deg,var(--accent),var(--blue));color:var(--accent-ink);display:grid;place-items:center;font-size:13px;font-weight:700}.author-row .who .name{font-size:13.5px;font-weight:600;color:var(--fg)}.author-row .who .meta{font-size:11px;color:var(--fg-4);margin-top:2px}.author-row .read-time,.author-row .who .meta{font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;letter-spacing:.06em}.author-row .read-time{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--fg-3);padding:5px 10px;border-radius:99px;border:1px solid var(--line-2)}.post-body{font-size:16px;line-height:1.7;color:var(--fg)}.post-body>*+*{margin-top:18px}.post-body p{margin:0;color:var(--fg)}.post-body h2,.post-body p strong{color:var(--fg);font-weight:600}.post-body h2{margin:56px 0 0;font-size:26px;letter-spacing:-.018em;line-height:1.2;scroll-margin-top:100px}.post-body h2+p{margin-top:14px}.post-body h3{margin:32px 0 0;font-size:18px;font-weight:600;letter-spacing:-.012em;color:var(--fg)}.post-body ol,.post-body ul{margin:0;padding-left:22px;color:var(--fg)}.post-body ol li,.post-body ul li{margin:6px 0}.post-body ul li::marker{color:var(--fg-4)}.post-body li a,.post-body p a,.post-body td a{color:var(--accent);border-bottom:1px solid var(--accent-line);text-decoration:none;transition:border-bottom-color .15s ease}.post-body li a:hover,.post-body p a:hover,.post-body td a:hover{border-bottom-color:var(--accent)}.post-body a.cta-pill{color:var(--accent-ink);border-bottom:0}.post-body blockquote{margin:32px 0;padding:20px 24px;border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 10px 10px 0;font-size:17px;line-height:1.55;color:var(--fg)}.post-body blockquote p{margin:0}.post-body code{font-size:.875em;background:var(--ink-2);border:1px solid var(--line);border-radius:4px;padding:1px 6px}.post-body code,.post-body pre{font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace}.post-body pre{background:var(--ink-1);border:1px solid var(--line-2);border-radius:10px;padding:16px;overflow-x:auto;font-size:13px;line-height:1.6}.post-body pre code{background:transparent;border:0;padding:0}.post-body .compat-table,.post-body table{width:100%;border-collapse:separate;border-spacing:0;background:var(--ink-1);border:1px solid var(--line-2);border-radius:12px;overflow:hidden;margin:24px 0;display:table}.post-body table td,.post-body table th{padding:14px 18px;text-align:left;font-size:13.5px;border-bottom:1px solid var(--line)}.post-body table th{font-weight:500;color:var(--fg-3);font-family:var(--font-jetbrains-mono),"JetBrains Mono",monospace;font-size:11px;text-transform:uppercase;letter-spacing:.1em;background:var(--ink-2)}.post-body table tbody tr:last-child td{border-bottom:0}.post-body table tbody tr:hover{background:var(--ink-2)}.inline-cta{margin:56px 0;padding:32px;border-radius:14px;background:linear-gradient(140deg,var(--ink-2),var(--ink-1));border:1px solid var(--accent-line);text-align:center;position:relative;overflow:hidden}.inline-cta:before{content:"";position:absolute;inset:0;background:radial-gradient(400px 200px at 50% 0,var(--accent-glow),transparent 65%);pointer-events:none}.inline-cta>*{position:relative}.inline-cta h3{margin:0 0 8px;font-size:22px;font-weight:600;letter-spacing:-.018em;color:var(--fg)}.inline-cta p{margin:0 0 20px;color:var(--fg-2);font-size:14px}.faq-list{display:flex;flex-direction:column;gap:8px;margin-top:16px}.faq-item{border:1px solid var(--line-2);background:var(--ink-1);border-radius:10px;overflow:hidden}.faq-item summary{padding:16px 18px;cursor:pointer;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:space-between;list-style:none;color:var(--fg);transition:color .15s ease}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:after{content:"+";font-size:20px;color:var(--fg-3);font-weight:300;transition:transform .2s ease}.faq-item[open] summary:after{transform:rotate(45deg)}.faq-item summary:hover{color:var(--accent)}.faq-item[open] summary{color:var(--accent);border-bottom:1px solid var(--line)}.faq-item .a{padding:14px 18px 18px;font-size:13.5px;color:var(--fg-2);line-height:1.6}.related-section{margin-top:80px;padding-top:40px;border-top:1px solid var(--line)}.related-section h3{margin:0 0 24px;font-size:18px;font-weight:600;letter-spacing:-.015em;color:var(--fg)}.related-section .blog-grid{margin-bottom:0}.reading-progress{position:fixed;top:48px;left:0;right:0;height:2px;background:transparent;z-index:49;pointer-events:none}.reading-progress .fill{height:100%;background:var(--accent);width:0;transition:width .05s linear}@media (max-width:720px){.blog-hero{padding:48px 0 32px}.blog-hero h1{font-size:40px}.blog-featured{grid-template-columns:1fr}.post-head h1{font-size:32px}}