.blog-body{display:block;min-height:100vh;padding:0}.blog-nav{position:relative;z-index:2;display:flex;gap:18px;font-family:var(--mono);font-size:.85rem;padding:22px 20px;max-width:960px;margin:0 auto}.blog-nav a{color:var(--muted);text-decoration:none;border-bottom:1px dashed transparent;transition:color .2s ease,border-color .2s ease}.blog-nav a:hover{color:var(--fg);border-bottom-color:var(--accent-2)}.blog-main{position:relative;z-index:1;width:100%;max-width:960px;margin:0 auto;padding:12px 20px 80px;animation:none;font-family:var(--sans);color:#ececf2;line-height:1.7;font-size:1rem}.blog-footer{position:relative;z-index:1;font-family:var(--mono);font-size:.78rem;color:var(--muted);text-align:center;padding:24px}.post-list{list-style:none;padding:0;margin:28px 0 0;display:grid;gap:14px}.post-list li{border:1px solid rgba(255,255,255,.06);border-radius:12px;background:#ffffff04;transition:border-color .2s ease,background .2s ease,transform .2s ease}.post-list li:hover{border-color:#7c5cff66;background:#7c5cff0f;transform:translateY(-2px)}.post-list a{display:block;padding:16px 18px;color:var(--fg);text-decoration:none}.post-list h2{margin:0 0 4px;font-size:1.1rem;font-weight:600}.post-list .post-meta{font-family:var(--mono);font-size:.78rem;color:var(--muted);display:flex;gap:10px;flex-wrap:wrap}.post-list p{margin:8px 0 0;color:#a8a7b3;font-size:.92rem}.page-title{font-size:clamp(1.8rem,5vw,2.4rem);font-weight:700;letter-spacing:-.02em;margin:12px 0 4px}.page-sub{color:var(--muted);font-family:var(--mono);font-size:.85rem;margin:0}.post-header{margin:8px 0 28px;padding-bottom:22px;border-bottom:1px solid rgba(255,255,255,.08)}.post-header h1{font-size:clamp(1.9rem,5.5vw,2.6rem);font-weight:700;letter-spacing:-.02em;margin:6px 0 10px;line-height:1.15}.post-meta{font-family:var(--mono);font-size:.8rem;color:var(--muted);display:flex;gap:12px;flex-wrap:wrap;align-items:center}.post-tags{display:flex;gap:6px;flex-wrap:wrap}.post-tags a{font-family:var(--mono);font-size:.72rem;color:var(--muted);background:#ffffff0a;border:1px solid rgba(255,255,255,.06);padding:2px 8px;border-radius:999px;text-decoration:none;transition:color .2s,border-color .2s}.post-tags a:hover{color:var(--accent-2);border-color:#0ea5b766}.prose h2{font-size:1.4rem;font-weight:700;margin:36px 0 12px;letter-spacing:-.01em;color:#fff}.prose h3{font-size:1.12rem;font-weight:600;margin:26px 0 8px;color:#fff}.prose p{margin:0 0 16px}.prose a{color:#b9a6ff;text-decoration:none;border-bottom:1px solid rgba(185,166,255,.3);transition:border-color .2s ease}.prose a:hover{border-bottom-color:#b9a6ff}.prose ul,.prose ol{padding-left:22px;margin:0 0 16px}.prose li{margin:4px 0}.prose blockquote{border-left:3px solid var(--accent);margin:16px 0;padding:4px 0 4px 14px;color:#b6b5c0;font-style:italic}.prose code{font-family:var(--mono);font-size:.88em;background:#7c5cff1f;padding:1px 6px;border-radius:4px;color:#f3eaff;border:1px solid rgba(124,92,255,.18)}.prose pre{background:#0b0b14!important;border:1px solid rgba(124,92,255,.18);padding:14px 16px;border-radius:10px;overflow-x:auto;font-size:.85rem;line-height:1.55;margin:0 0 18px;color:#f0eef7!important}.prose pre code,.prose pre code span{background:transparent;padding:0;font-size:inherit}.prose hr{border:0;border-top:1px solid rgba(255,255,255,.08);margin:28px 0}.prose img{max-width:100%;border-radius:10px;border:1px solid rgba(255,255,255,.06);margin:16px 0}.prose figure{margin:22px 0}.prose figure img{display:block;margin:0 auto}.prose figcaption{text-align:center;font-family:var(--mono);font-size:.78rem;color:var(--muted);margin-top:8px}.mermaid-wrap{background:#0b0b14;border:1px solid rgba(124,92,255,.28);border-radius:12px;padding:28px 24px;margin:0 0 24px;overflow-x:auto;text-align:center}.mermaid-wrap svg{max-width:100%;height:auto;display:inline-block;font-family:JetBrains Mono,ui-monospace,monospace!important;font-size:15px!important}.mermaid-wrap svg .nodeLabel,.mermaid-wrap svg .edgeLabel,.mermaid-wrap svg .label,.mermaid-wrap svg .messageText,.mermaid-wrap svg text{font-size:15px!important;letter-spacing:.01em!important}.mermaid-wrap svg .cluster-label{font-size:13px!important;letter-spacing:.06em!important;text-transform:uppercase}.mermaid-wrap svg .edgeLabel{padding:2px 6px!important}.mermaid-wrap svg .nodeLabel,.mermaid-wrap svg .edgeLabel,.mermaid-wrap svg .label,.mermaid-wrap svg .cluster-label,.mermaid-wrap svg .messageText,.mermaid-wrap svg .actor,.mermaid-wrap svg .actor-line,.mermaid-wrap svg .loopText,.mermaid-wrap svg .noteText,.mermaid-wrap svg text,.mermaid-wrap svg foreignObject span,.mermaid-wrap svg foreignObject div{fill:#f0eef7!important;color:#f0eef7!important;font-weight:500!important}.mermaid-wrap svg .edgeLabel rect,.mermaid-wrap svg .edgeLabel foreignObject{background:#0b0b14!important}.mermaid-wrap svg .cluster rect{fill:#7c5cff0f!important;stroke:#7c5cff66!important}.mermaid-wrap svg .node rect,.mermaid-wrap svg .node polygon,.mermaid-wrap svg .node circle,.mermaid-wrap svg .node path{fill:#1a1530!important;stroke:#b9a6ff!important;stroke-width:1.4px!important}.mermaid-wrap svg rect.actor{fill:#1a1530!important;stroke:#b9a6ff!important}.mermaid-wrap svg line,.mermaid-wrap svg path.messageLine0,.mermaid-wrap svg path.messageLine1{stroke:#b9a6ff!important}.mermaid-wrap svg .note{fill:#0ea5b726!important;stroke:#0ea5b799!important}.prose table{width:100%;border-collapse:collapse;margin:0 0 18px;font-size:.92rem}.prose th,.prose td{text-align:left;padding:8px 10px;border-bottom:1px solid rgba(255,255,255,.06)}.prose th{color:var(--muted);font-weight:500;font-size:.82rem}@media(max-width:640px){.blog-nav{padding:18px 14px;gap:14px;font-size:.82rem;flex-wrap:wrap}.blog-main{padding:8px 14px 60px;font-size:.96rem;line-height:1.65}.post-list{gap:10px;margin-top:20px}.post-list a{padding:14px}.post-list h2{font-size:1.02rem}.post-list p{font-size:.88rem}.post-header{margin:4px 0 22px;padding-bottom:18px}.post-header h1{font-size:clamp(1.5rem,7vw,2rem)}.post-meta{font-size:.74rem;gap:8px}.prose h2{font-size:1.2rem;margin:28px 0 10px}.prose h3{font-size:1.02rem;margin:22px 0 6px}.prose pre{padding:12px;font-size:.78rem;border-radius:8px;margin:0 -4px 16px}.prose code{font-size:.84em}.prose blockquote{padding-left:12px}.prose ul,.prose ol{padding-left:18px}.prose table{font-size:.86rem;display:block;overflow-x:auto}.blog-footer{padding:18px 14px;font-size:.74rem}.page-title{margin-top:8px}}[data-theme=light] .blog-main{color:#1f1f28}[data-theme=light] .blog-nav a{color:#5a5a64}[data-theme=light] .blog-nav a:hover{color:#1a1a22}[data-theme=light] .post-list li{border-color:#00000014;background:#00000005}[data-theme=light] .post-list li:hover{border-color:#7c5cff80;background:#7c5cff0f}[data-theme=light] .post-list a{color:#1a1a22}[data-theme=light] .post-list p{color:#4a4a55}[data-theme=light] .post-header{border-bottom-color:#0000001a}[data-theme=light] .post-tags a{color:#5a5a64;background:#0000000a;border-color:#00000014}[data-theme=light] .prose{color:#1f1f28}[data-theme=light] .prose h2,[data-theme=light] .prose h3{color:#0d0d14}[data-theme=light] .prose a{color:#5b3fd6;border-bottom-color:#5b3fd659}[data-theme=light] .prose a:hover{border-bottom-color:#5b3fd6}[data-theme=light] .prose code{background:#5b3fd61a;color:#3a1f9c;border-color:#5b3fd640}[data-theme=light] .prose blockquote{color:#4a4a55}[data-theme=light] .prose hr{border-top-color:#0000001a}[data-theme=light] .prose th,[data-theme=light] .prose td{border-bottom-color:#00000014}[data-theme=light] .prose img,[data-theme=light] .prose figure img{border-color:#0000001a}[data-theme=light] .post-meta,[data-theme=light] .page-sub,[data-theme=light] .blog-footer{color:#5a5a64}[data-theme=light] .mermaid-wrap{background:#fafaf6;border-color:#7c5cff66}[data-theme=light] .mermaid-wrap svg text,[data-theme=light] .mermaid-wrap svg tspan,[data-theme=light] .mermaid-wrap svg .nodeLabel,[data-theme=light] .mermaid-wrap svg .edgeLabel,[data-theme=light] .mermaid-wrap svg .label,[data-theme=light] .mermaid-wrap svg .cluster-label,[data-theme=light] .mermaid-wrap svg .messageText,[data-theme=light] .mermaid-wrap svg text.actor,[data-theme=light] .mermaid-wrap svg text.actor>tspan,[data-theme=light] .mermaid-wrap svg .actor>tspan,[data-theme=light] .mermaid-wrap svg .loopText,[data-theme=light] .mermaid-wrap svg .loopText>tspan,[data-theme=light] .mermaid-wrap svg .noteText,[data-theme=light] .mermaid-wrap svg .noteText>tspan,[data-theme=light] .mermaid-wrap svg .sequenceNumber,[data-theme=light] .mermaid-wrap svg foreignObject span,[data-theme=light] .mermaid-wrap svg foreignObject div,[data-theme=light] .mermaid-wrap svg foreignObject p{fill:#1a1a22!important;color:#1a1a22!important;font-weight:600!important}[data-theme=light] .mermaid-wrap svg .sequenceNumber{fill:#fff!important}[data-theme=light] .mermaid-wrap svg circle.sequenceNumber{fill:#5b3fd6!important}[data-theme=light] .mermaid-wrap svg .edgeLabel rect,[data-theme=light] .mermaid-wrap svg .edgeLabel foreignObject{background:#fafaf6!important}[data-theme=light] .mermaid-wrap svg .cluster rect{fill:#7c5cff0f!important;stroke:#7c5cff80!important}[data-theme=light] .mermaid-wrap svg .node rect,[data-theme=light] .mermaid-wrap svg .node polygon,[data-theme=light] .mermaid-wrap svg .node circle,[data-theme=light] .mermaid-wrap svg .node path{fill:#fff!important;stroke:#5b3fd6!important}[data-theme=light] .mermaid-wrap svg rect.actor,[data-theme=light] .mermaid-wrap svg .actor.actor-top,[data-theme=light] .mermaid-wrap svg .actor.actor-bottom{fill:#fff!important;stroke:#5b3fd6!important}[data-theme=light] .mermaid-wrap svg line,[data-theme=light] .mermaid-wrap svg path.messageLine0,[data-theme=light] .mermaid-wrap svg path.messageLine1{stroke:#5b3fd6!important}[data-theme=light] .mermaid-wrap svg .actor-line{stroke:#5b3fd6!important}[data-theme=light] .mermaid-wrap svg .flowchart-link,[data-theme=light] .mermaid-wrap svg .edgePath .path,[data-theme=light] .mermaid-wrap svg path.transition{stroke:#5b3fd6!important;fill:none!important}[data-theme=light] .mermaid-wrap svg .arrowheadPath,[data-theme=light] .mermaid-wrap svg marker path,[data-theme=light] .mermaid-wrap svg defs marker path{fill:#5b3fd6!important;stroke:#5b3fd6!important}[data-theme=light] .mermaid-wrap svg .note{fill:#0e8a9b1f!important;stroke:#0e8a9b99!important}[data-theme=light] .mermaid-wrap svg .labelBox{fill:#fff!important;stroke:#5b3fd6!important}[data-theme=light] .mermaid-wrap svg .loopLine{stroke:#5b3fd6!important}.mermaid-wrap{position:relative}.mermaid-wrap .expand-btn,.prose img{cursor:zoom-in}.mermaid-wrap .expand-btn{position:absolute;top:10px;right:10px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:#7c5cff2e;border:1px solid rgba(124,92,255,.4);color:#f0eef7;border-radius:8px;cursor:pointer;opacity:.55;transition:opacity .2s ease,background .2s ease,transform .2s ease}.mermaid-wrap:hover .expand-btn{opacity:1}.mermaid-wrap .expand-btn:hover{background:#7c5cff52;transform:translateY(-1px)}.mermaid-wrap .expand-btn svg{width:16px;height:16px}[data-theme=light] .mermaid-wrap .expand-btn{color:#1a1a22;background:#5b3fd61a;border-color:#5b3fd666}.lightbox{position:fixed;inset:0;z-index:100;background:#020204eb;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.lightbox[hidden]{display:none}.lightbox.is-open{opacity:1}[data-theme=light] .lightbox{background:#f6f4eff2}.lb-stage{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;cursor:grab;overflow:hidden;touch-action:none}.lb-stage:active{cursor:grabbing}.lb-stage>*{max-width:92vw;max-height:88vh;width:auto;height:auto;transform-origin:center center;transition:transform .05s linear;user-select:none;pointer-events:none}.lb-stage svg{background:#0b0b14;padding:18px;border-radius:10px}[data-theme=light] .lb-stage svg{background:#fafaf6}.lb-close{position:fixed;top:16px;right:18px;width:40px;height:40px;border-radius:999px;border:1px solid rgba(124,92,255,.4);background:#7c5cff2e;color:#f0eef7;font-size:1.6rem;line-height:1;cursor:pointer;z-index:2}[data-theme=light] .lb-close{color:#1a1a22;background:#5b3fd61f}.lb-controls{position:fixed;bottom:22px;left:50%;transform:translate(-50%);display:inline-flex;gap:6px;background:#0f0f16cc;border:1px solid rgba(124,92,255,.3);padding:6px;border-radius:999px;z-index:2}[data-theme=light] .lb-controls{background:#fffdf8eb;border-color:#5b3fd64d}.lb-controls button{min-width:44px;height:36px;padding:0 12px;border-radius:999px;border:0;background:transparent;color:var(--fg);font-family:var(--mono);font-size:.95rem;cursor:pointer;transition:background .15s ease}.lb-controls button:hover{background:#7c5cff33}.meta-dot{opacity:.5}.tag-pill{font-family:var(--mono);font-size:.72rem;color:var(--muted);background:#7c5cff14;border:1px solid rgba(124,92,255,.22);padding:2px 8px;border-radius:999px}[data-theme=light] .tag-pill{color:#4a4a55;background:#5b3fd614;border-color:#5b3fd640}.post-list .post-tags{margin-top:10px;gap:6px}.post-list a:hover .tag-pill{border-color:#7c5cff80}.post-nav{margin:48px 0 8px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.post-nav-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border:1px solid rgba(255,255,255,.06);border-radius:12px;background:#ffffff04;text-decoration:none;color:var(--fg);transition:border-color .2s,background .2s,transform .2s}.post-nav-card:hover{border-color:#7c5cff80;background:#7c5cff0f;transform:translateY(-2px)}.post-nav-next{text-align:right}.post-nav-label{font-family:var(--mono);font-size:.74rem;color:var(--muted);letter-spacing:.04em}.post-nav-title{font-size:.95rem;font-weight:600;line-height:1.3}[data-theme=light] .post-nav-card{border-color:#00000014;background:#00000005}[data-theme=light] .post-nav-card:hover{border-color:#7c5cff80;background:#7c5cff0f}@media(max-width:640px){.post-nav{grid-template-columns:1fr}.post-nav-next{text-align:left}}@media(max-width:640px){.mermaid-wrap:after{content:"tap 🔍to expand";position:absolute;bottom:8px;right:12px;font-family:var(--mono);font-size:.66rem;color:var(--muted);opacity:.7;pointer-events:none}.mermaid-wrap .expand-btn{opacity:1}}
