.blog{--surface:#101326;--surface-raised:#171b33;--surface-edge:#262b47;--text:#e4e7f3;--text-soft:#a8adc7;--text-faint:#878ea9;--accent:#a8b2ff;background:var(--nyx-void);color:var(--text);padding-top:128px;min-height:100vh}.blog-intro{padding-block:8px 44px}.blog-intro h1{font-size:clamp(34px,4vw,58px);font-weight:550;line-height:1.35;margin:18px 0 0;max-width:16ch;text-wrap:balance}.blog-intro-row{display:flex;gap:40px;justify-content:space-between;align-items:end;flex-wrap:wrap}.blog-intro-row p{font-size:15px;line-height:2;color:var(--text-soft);max-width:42ch;margin:0}.blog-intro-rule{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:34px;padding-top:16px;border-top:1px solid #303345;font-size:12px;color:var(--text-soft)}.blog-rss{display:inline-flex;gap:8px;align-items:center;margin-inline-start:auto}.blog-rss:hover{color:#bdc2ff}.blog-tags{display:flex;flex-wrap:wrap;gap:10px;padding-bottom:40px}.blog-tags a{display:inline-flex;align-items:center;gap:9px;padding:8px 14px;border:1px solid #3a3e55;border-radius:30px;font-size:13px;transition:border-color .2s,color .2s}.blog-tags a:hover{border-color:#7d84d8;color:#cdd1ff}.blog-tags b{font-weight:500;font-size:11px;color:var(--text-soft)}.blog-empty{padding-block:60px 120px;color:var(--text-soft);font-size:15px}.blog-elsewhere{padding-top:24px}.blog-elsewhere h2{font-size:22px;font-weight:550;line-height:1.5;margin:0 0 6px}.blog-elsewhere>p{font-size:15px;line-height:1.9;color:var(--text-soft);max-width:56ch;margin:0 0 34px}.post-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:30px;list-style:none;margin:0;padding:0 0 120px}.post-card{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--surface-edge);border-radius:14px;overflow:hidden;transition:border-color .25s,transform .25s}.post-card:hover{border-color:#434a78;transform:translateY(-3px)}.post-card:has(.post-card-title a:focus-visible){outline:3px solid #98a3ff;outline-offset:4px}.post-card-title a:focus-visible{outline:none}.post-card-cover{position:relative;aspect-ratio:16/10;background:var(--surface-raised);overflow:hidden}.post-card-cover img{width:100%;height:100%;object-fit:cover;transition:transform .5s}.post-card:hover .post-card-cover img{transform:scale(1.04)}.post-card-mark{display:grid;place-items:center;height:100%;padding:18px;text-align:center;font-size:15px;color:#e2e5ff;background:linear-gradient(135deg,hsl(var(--hue) 40% 27%),hsl(calc(var(--hue) + 46) 36% 15%))}.post-card-text{display:flex;flex:1;flex-direction:column;gap:10px;padding:22px 24px 24px}.post-card-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-faint);font-variant-numeric:tabular-nums}.post-card-title{font-size:20px;font-weight:550;line-height:1.75;margin:0;text-wrap:balance;transition:color .2s}.post-card-title a:after{content:"";position:absolute;inset:0}.post-card:hover .post-card-title{color:#cdd1ff}.post-card-summary{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;font-size:14px;line-height:1.95;color:var(--text-soft);margin:0}.post-card-languages{position:relative;display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}.post-card-languages a{display:block;padding:4px 12px;border:1px solid #3a3e55;border-radius:30px;font-size:12px;color:var(--text-soft);transition:border-color .2s,color .2s}.post-card-languages a:hover{border-color:#7d84d8;color:#cdd1ff}.post-card-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:auto;padding-top:16px;border-top:1px solid var(--surface-edge)}.post-card-tags{display:flex;flex-wrap:wrap;min-width:0;gap:8px;list-style:none;margin:0;padding:0;font-size:11px;color:var(--text-faint)}.post-card-tags li:not(:last-child):after{content:"،"}:root[dir=ltr] .post-card-tags li:not(:last-child):after{content:","}.byline{align-items:center;gap:10px;font-size:12px}.byline,.byline-faces{display:inline-flex}.byline-faces>*{width:26px;height:26px;border-radius:50%;object-fit:cover}.byline-faces>:not(:first-child){margin-inline-start:-8px}.author-chip{display:grid;place-items:center;background:#2b3050;color:#cdd1ff;font-size:11px;font-weight:600;border:1px solid #454a72}.byline-names a:hover{color:#bdc2ff}.post-progress{position:fixed;inset-block-start:0;inset-inline:0;height:2px;z-index:40;pointer-events:none}.post-progress i{display:block;height:100%;background:#a8b2ff;transform-origin:right center}:root[dir=ltr] .post-progress i{transform-origin:left center}.post-shell{padding-bottom:120px}.post-back{display:inline-flex;gap:10px;align-items:center;font-size:12px;color:var(--text-soft)}.post-back span{display:inline-block;transform:rotate(180deg)}.post-back:hover{color:var(--text)}.post-header{padding-block:10px 46px;max-width:78ch}.post-header h1{font-size:clamp(30px,3.9vw,54px);font-weight:550;line-height:1.45;margin:26px 0 0;text-wrap:balance}.post-summary{font-size:16px;line-height:2;color:#b6bace;margin:18px 0 0;max-width:56ch}.post-meta{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:26px;font-size:12px;color:var(--text-soft);font-variant-numeric:tabular-nums}.post-meta-rule{width:24px;height:1px;background:#3a3e55}.post-tags{display:flex;gap:8px;list-style:none;margin:18px 0 0;padding:0;flex-wrap:wrap;font-size:11px}.post-tags a{display:inline-block;padding:5px 11px;border:1px solid #343850;border-radius:20px;color:#9ba0bd}.post-tags a:hover{border-color:#7d84d8;color:#cdd1ff}.post-cover{position:relative;aspect-ratio:21/9;margin-bottom:40px;border:1px solid var(--surface-edge);border-radius:14px;overflow:hidden;background:var(--surface-raised)}.post-cover img{width:100%;height:100%;object-fit:cover}.post-layout{display:grid;grid-template-columns:minmax(0,1fr) 212px;gap:46px;align-items:start}.post-toc{position:sticky;top:118px;font-size:12px;max-height:calc(100vh - 150px);overflow-y:auto;padding-inline-end:8px}.post-toc-title{color:#7d829b;margin:0 0 12px;font-size:11px;letter-spacing:.04em}.post-toc ol{list-style:none;margin:0;padding:0;border-inline-start:1px solid #2a2e42}.post-toc li[data-depth="2"]{padding-inline-start:14px}.post-toc a{display:block;padding:7px 0;padding-inline-start:16px;margin-inline-start:-1px;border-inline-start:1px solid transparent;color:#8f94b0;line-height:1.7;transition:color .2s,border-color .2s}.post-toc a:hover{color:#cdd1ff}.post-toc a[aria-current]{color:#cdd1ff;border-inline-start-color:#a8b2ff}.post-body{background:var(--surface);color:var(--text);border:1px solid var(--surface-edge);border-radius:14px;padding:clamp(28px,4vw,62px);font-size:17px;line-height:2.1;overflow-wrap:break-word}.post-body :is(p,ul,ol,blockquote){max-width:68ch}:root[dir=ltr] .post-body{line-height:1.8}.post-body>:first-child{margin-top:0}.post-body>:last-child{margin-bottom:0}.post-body p{margin:0 0 1.5em}.post-body h2,.post-body h3,.post-body h4{position:relative;font-weight:600;line-height:1.6;margin:2.2em 0 .8em;scroll-margin-top:118px}.post-body h2{font-size:1.45em}.post-body h3{font-size:1.2em}.post-body h4{font-size:1.05em}.post-anchor{position:absolute;inset-inline-end:100%;padding-inline-end:12px;color:var(--text-faint);opacity:0;transition:opacity .2s;font-weight:400}.post-body :is(h2,h3,h4):hover .post-anchor{opacity:1}.post-body a{color:var(--accent);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.post-body a:hover{text-decoration-thickness:2px}.post-body strong{font-weight:650}.post-body :is(ul,ol){margin:0 0 1.5em;padding-inline-start:1.4em}.post-body li{margin-bottom:.5em}.post-body li::marker{color:var(--text-faint)}.post-body blockquote{margin:1.8em 0;padding-inline-start:20px;border-inline-start:2px solid var(--accent);color:var(--text-soft)}.post-body hr{border:0;border-top:1px solid var(--surface-edge);margin:2.4em 0}.post-body img{max-width:100%;height:auto;border-radius:8px;margin-block:.6em}.post-body table{width:100%;border-collapse:collapse;font-size:.92em;margin:0 0 1.6em}.post-body :is(th,td){border-bottom:1px solid var(--surface-edge);padding:10px 12px;text-align:start}.post-body th{font-weight:600;color:var(--text-soft)}.post-body :not(pre)>code{font-family:var(--nyx-font-mono);font-size:.86em;background:var(--surface-raised);color:#cdd3ee;border:1px solid var(--surface-edge);border-radius:4px;padding:2px 6px;unicode-bidi:isolate;direction:ltr}.post-code{position:relative;margin:0 0 1.7em}.post-code pre{overflow-x:auto;background:#121212;border-radius:8px;padding:20px 22px;font-size:13.5px;line-height:1.75;tab-size:2}.post-code code{font-family:var(--nyx-font-mono)}.post-code pre[data-title]:before{content:attr(data-title);position:sticky;inset-inline-start:0;display:block;margin:-20px -22px 16px;padding:9px 22px;border-bottom:1px solid #ffffff14;font-size:11px;color:#8d92a4}.post-code .line.highlighted{display:inline-block;width:100%;background:#ffffff12;box-shadow:inset 2px 0 #a8b2ff}.post-code .line.diff.add{display:inline-block;width:100%;background:#4ade8018;box-shadow:inset 2px 0 #4ade80}.post-code .line.diff.remove{display:inline-block;width:100%;background:#f8717118;box-shadow:inset 2px 0 #f87171;opacity:.65}.post-code .highlighted-word{background:#ffffff1f;border-radius:2px;padding:1px 2px}.post-code:has(.has-focused) .line:not(.focused){filter:blur(2px);opacity:.5;transition:filter .25s,opacity .25s}.post-code:has(.has-focused):hover .line:not(.focused){filter:none;opacity:1}.post-code-copy{position:absolute;inset-block-start:10px;inset-inline-end:10px;display:grid;place-items:center;width:32px;height:32px;border-radius:5px;background:#ffffff12;color:#cfd2e4;opacity:0;transition:opacity .2s,background .2s}.post-code-copy:focus-visible,.post-code:hover .post-code-copy{opacity:1}@media (hover:none){.post-code-copy{opacity:1}}.post-code-copy:hover{background:#ffffff26}.post-code-copy svg{width:15px;height:15px}.post-note{margin:1.8em 0;padding:18px 20px;border-radius:8px;background:#181d38;border-inline-start:2px solid var(--accent);font-size:.95em}.post-note[data-kind=warning]{background:#2a2118;border-inline-start-color:#e0904e}.post-note>:last-child{margin-bottom:0}.post-foot{display:grid;grid-template-columns:minmax(0,1fr) 212px;gap:46px}.post-foot>*{grid-column:1}.post-share{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:34px;padding-top:20px;border-top:1px solid #262a3c;font-size:12px;color:var(--text-soft)}.post-share :is(a,button){display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid #343850;border-radius:22px;color:#cbcfe2;transition:border-color .2s}.post-share :is(a,button):hover{border-color:#7d84d8}.post-share svg{width:14px;height:14px}.post-translations{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:22px;font-size:12px;color:var(--text-soft)}.post-translations a{border-bottom:1px solid #4a4f6b;padding-bottom:3px}.post-translations a:hover{color:#cdd1ff}.post-adjacent{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:40px}.post-adjacent a{display:flex;flex-direction:column;gap:8px;padding:20px;border:1px solid #262a3c;border-radius:5px;transition:border-color .2s}.post-adjacent a:hover{border-color:#4a5080}.post-adjacent small{font-size:11px;color:#7d829b}.post-adjacent span{font-size:14px;line-height:1.8}.post-adjacent a[rel=next]{text-align:end}.post-related{margin-top:52px}.post-related h2{font-size:15px;font-weight:500;color:var(--text-soft);margin:0 0 14px}.post-related ul{list-style:none;margin:0;padding:0}.post-related li{border-top:1px solid #262a3c}.post-related a{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:16px 0;font-size:15px;line-height:1.8}.post-related a:hover{color:#cdd1ff}.post-related small{font-size:11px;color:#7d829b;flex-shrink:0}.post-comments{margin-top:56px;padding-top:26px;border-top:1px solid #262a3c}.post-comments h2{font-size:15px;font-weight:500;margin:0}.post-comments>p{font-size:12px;color:#7d829b;margin:8px 0 20px}@media (max-width:1000px){.post-layout{grid-template-columns:1fr;gap:26px}.post-toc{position:static;max-height:none;padding:16px 18px;border:1px solid #262a3c;border-radius:5px}.post-foot{grid-template-columns:1fr}}@media (max-width:760px){.blog{padding-top:104px}.post-grid{gap:22px}.post-cover{aspect-ratio:16/10;margin-bottom:28px}.post-body{font-size:16px;line-height:2;border-inline:0;border-radius:0;margin-inline:calc(-1 * (100vw - 100%) / 2);padding-inline:22px}.post-adjacent{grid-template-columns:1fr}.post-adjacent a[rel=next]{text-align:start}.post-anchor{display:none}}@media (prefers-reduced-motion:reduce){.post-card,.post-card-cover img,.post-code:has(.has-focused) .line:not(.focused){transition:none}.post-card:hover,.post-card:hover .post-card-cover img{transform:none}}.blog-search{position:relative;padding-bottom:26px}.blog-search-field{display:flex;align-items:center;gap:12px;padding:12px 18px;border:1px solid #2c3044;border-radius:30px;transition:border-color .2s}.blog-search-field:focus-within{border-color:#6d74be}.blog-search-field svg{width:16px;height:16px;color:#7d829b;flex-shrink:0}.blog-search-field input{flex:1;min-width:0;border:0;background:none;color:var(--text);font-size:14px;outline:none}.blog-search-field input::placeholder{color:#6e7390}.blog-search-field button{display:grid;place-items:center;color:#7d829b}.blog-search-field button:hover{color:var(--text)}.blog-search-results{margin-top:12px;border:1px solid #262a3c;border-radius:8px;background:#0d101c;overflow:hidden}.blog-search-results ol{list-style:none;margin:0;padding:0}.blog-search-results li+li{border-top:1px solid #1d2131}.blog-search-results a{display:flex;flex-direction:column;gap:6px;padding:14px 18px}.blog-search-results a:hover{background:#141827}.blog-search-results strong{font-size:14px;font-weight:550}.blog-search-results span{font-size:12px;line-height:1.9;color:#9ba0bd}.blog-search-results mark{background:none;color:#cdd1ff;font-weight:600}.blog-search-results p{margin:0;padding:16px 18px;font-size:13px;color:#7d829b}