:root{--doc-bg:#f8fafc;--doc-bg-secondary:#ffffff;--doc-bg-tertiary:#f1f5f9;--doc-text:#0f172a;--doc-text-secondary:#475569;--doc-text-muted:#94a3b8;--doc-border:#e2e8f0;--doc-border-strong:#cbd5e1;--doc-accent:#2563eb;--doc-accent-hover:#1d4ed8;--doc-accent-soft:rgba(37, 99, 235, 0.08);--doc-accent-glow:rgba(37, 99, 235, 0.15);--doc-shadow-sm:0 1px 3px rgba(15, 23, 42, 0.06);--doc-shadow-md:0 4px 12px rgba(15, 23, 42, 0.08);--doc-shadow-lg:0 8px 30px rgba(15, 23, 42, 0.12);--doc-font-sans:'Sora', 'Noto Sans SC', -apple-system, BlinkMacSystemFont, sans-serif;--doc-font-serif:'Noto Serif SC', 'Source Han Serif SC', Georgia, serif;--doc-font-mono:'JetBrains Mono', 'Fira Code', 'SF Mono', Monaco, monospace;--doc-font-display:'Noto Serif SC', 'Sora', Georgia, serif;--doc-content-max-width:800px;--doc-line-height:1.8;--doc-font-size-base:16px;--doc-radius-sm:8px;--doc-radius-md:12px;--doc-radius-lg:12px}.dark{--doc-bg:#0f172a;--doc-bg-secondary:#1e293b;--doc-bg-tertiary:#334155;--doc-text:#f1f5f9;--doc-text-secondary:#94a3b8;--doc-text-muted:#64748b;--doc-border:#334155;--doc-border-strong:#475569;--doc-accent:#60a5fa;--doc-accent-hover:#93c5fd;--doc-accent-soft:rgba(96, 165, 250, 0.1);--doc-accent-glow:rgba(96, 165, 250, 0.18);--doc-shadow-sm:0 1px 3px rgba(0, 0, 0, 0.2);--doc-shadow-md:0 4px 12px rgba(0, 0, 0, 0.25);--doc-shadow-lg:0 8px 30px rgba(0, 0, 0, 0.35)}.container{max-width:100%!important}.book-menu{flex:0 0 14rem!important}.book-menu .book-menu-content{width:14rem!important}.book-toc{flex:0 0 14rem!important}.book-toc .book-toc-content{width:14rem!important}.book-page{max-width:none;padding:24px 32px;background:var(--doc-bg)}.book-post{background:var(--doc-bg-secondary);border-radius:12px;padding:32px 40px;margin-bottom:40px;border:1px solid var(--doc-border);box-shadow:var(--doc-shadow-sm)}.book-post-content,.markdown-inner{font-family:var(--doc-font-sans);font-size:var(--doc-font-size-base);line-height:var(--doc-line-height);color:var(--doc-text)}.book-post-content h1,.book-post-content h2,.book-post-content h3,.book-post-content h4,.book-post-content h5,.book-post-content h6,.markdown-inner h1,.markdown-inner h2,.markdown-inner h3,.markdown-inner h4,.markdown-inner h5,.markdown-inner h6{font-family:var(--doc-font-display);font-weight:600;color:var(--doc-text);margin-top:2em;margin-bottom:.75em;line-height:1.3;letter-spacing:-.025em}.book-post-content h1{font-size:2.25rem;margin-top:0}.book-post-content h2{font-size:1.75rem;padding-bottom:.5em;border-bottom:1px solid var(--doc-border-strong)}.book-post-content h3{font-size:1.375rem;color:var(--doc-text-secondary)}.book-post-content h4{font-size:1.125rem}.book-post-content h5{font-size:1rem}.book-post-content h6{font-size:.875rem;color:var(--doc-text-secondary)}.book-post-content h1 a.anchor,.book-post-content h2 a.anchor,.book-post-content h3 a.anchor,.book-post-content h4 a.anchor,.book-post-content h5 a.anchor,.book-post-content h6 a.anchor{color:inherit;text-decoration:none;opacity:0;margin-left:.5em;font-size:.85em;transition:opacity .2s}.book-post-content h1:hover a.anchor,.book-post-content h2:hover a.anchor,.book-post-content h3:hover a.anchor,.book-post-content h4:hover a.anchor,.book-post-content h5:hover a.anchor,.book-post-content h6:hover a.anchor{opacity:.5}.book-post-content p,.markdown-inner p{margin-bottom:1.25em;color:var(--doc-text)}.book-post-content strong,.markdown-inner strong{font-weight:600;color:var(--doc-text)}.book-post-content em,.markdown-inner em{font-style:italic}.book-post-content a,.markdown-inner a{color:var(--doc-accent);text-decoration:none;border-bottom:1px solid var(--doc-accent-soft);transition:all .2s ease}.book-post-content a:hover,.markdown-inner a:hover{color:var(--doc-accent-hover);border-bottom-color:var(--doc-accent)}.book-post-content ul,.book-post-content ol,.markdown-inner ul,.markdown-inner ol{margin-bottom:1.25em;padding-left:1.5em}.book-post-content li,.markdown-inner li{margin-bottom:.5em;line-height:var(--doc-line-height)}.book-post-content ul ul,.book-post-content ol ol,.book-post-content ul ol,.book-post-content ol ul,.markdown-inner ul ul,.markdown-inner ol ol,.markdown-inner ul ol,.markdown-inner ol ul{margin-top:.5em;margin-bottom:.5em}.book-post-content ul li::marker,.markdown-inner ul li::marker{color:var(--doc-accent)}.book-post-content ol li::marker,.markdown-inner ol li::marker{color:var(--doc-accent);font-weight:600}.book-post-content blockquote,.markdown-inner blockquote{margin:2em 0;padding:20px 28px;background:var(--doc-accent-soft);border-left:4px solid var(--doc-accent);border-radius:0 var(--doc-radius-sm)var(--doc-radius-sm)0;color:var(--doc-text-secondary);font-style:normal;position:relative}.book-post-content blockquote::before,.markdown-inner blockquote::before{content:'\201C';position:absolute;top:-8px;left:12px;font-size:3rem;color:var(--doc-accent-glow);font-family:var(--doc-font-serif);line-height:1;pointer-events:none}.book-post-content blockquote p:last-child,.markdown-inner blockquote p:last-child{margin-bottom:0}.book-post-content blockquote cite,.markdown-inner blockquote cite{display:block;margin-top:.5em;font-size:.875em;font-style:normal;color:var(--doc-text-muted)}.book-post-content table,.markdown-inner table{width:100%;border-collapse:collapse;margin:1.5em 0;font-size:.9375em;border-radius:var(--doc-radius-sm);overflow:hidden;border:1px solid var(--doc-border)}.book-post-content thead,.markdown-inner thead{background:var(--doc-bg-tertiary)}.book-post-content th,.markdown-inner th{font-weight:600;text-align:left;padding:14px 16px;border-bottom:2px solid var(--doc-border-strong);color:var(--doc-text)}.book-post-content td,.markdown-inner td{padding:12px 16px;border-bottom:1px solid var(--doc-border);vertical-align:top}.book-post-content tr:last-child td,.markdown-inner tr:last-child td{border-bottom:none}.book-post-content tr:hover td,.markdown-inner tr:hover td{background:var(--doc-accent-soft)}.book-post-content hr,.markdown-inner hr{border:none;height:2px;background:linear-gradient(90deg,transparent,var(--doc-border-strong),transparent);margin:3em 0}.architecture-diagram{background:var(--doc-bg);border:1px solid var(--doc-border);border-radius:var(--doc-radius-md);padding:24px;margin:24px 0;overflow-x:auto;font-family:var(--doc-font-mono);font-size:.8125rem;line-height:1.5;color:var(--doc-text)}.architecture-diagram pre{margin:0;padding:0;background:0 0;border:none;border-radius:0;box-shadow:none;font-family:inherit;font-size:inherit;line-height:inherit;color:inherit}.architecture-diagram code{background:0 0;border:none;padding:0;color:inherit;font-family:inherit;font-size:inherit}.book-post-content img,.markdown-inner img{max-width:100%;height:auto;border-radius:var(--doc-radius-md);margin:1.5em 0;box-shadow:var(--doc-shadow-md)}.book-post-date{display:flex;align-items:center;gap:8px;font-size:.875rem;color:var(--doc-text-muted);margin-bottom:1.5em}.book-post-date img{width:1em;height:1em;margin:0;box-shadow:none}.book-post h1,.book-post-title{font-family:var(--doc-font-display);font-size:2.25rem;font-weight:700;margin:0 0 12px;line-height:1.35;letter-spacing:-.025em;color:var(--doc-text)}.book-post-meta{font-size:.875rem;color:var(--doc-text-muted);margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid var(--doc-border);display:flex;align-items:center;gap:6px}.book-post-meta time,.book-post-meta .meta-item{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;background:var(--doc-accent-soft);border-radius:var(--doc-radius-sm);font-size:.8125rem;color:var(--doc-accent);font-weight:500}.book-post-section{background:0 0;padding:0;margin-bottom:32px}.book-post-section .book-post-content{margin-top:0}.read-more{display:inline-flex;align-items:center;gap:6px;margin-top:16px;font-size:.9375rem;font-weight:500;color:var(--doc-accent);text-decoration:none;transition:all .2s ease}.read-more:hover{color:var(--doc-accent-hover);gap:10px}.read-more::after{content:'\2192';transition:transform .2s ease}.read-more:hover::after{transform:translateX(4px)}.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px;font-size:.875rem;color:var(--doc-text-muted)}.meta-item{display:inline-flex;align-items:center;gap:5px;color:var(--doc-text-secondary);font-size:.8125rem}.meta-item svg{opacity:.6}.meta-item.author{font-weight:500}.book-header{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--doc-border)}.book-header h3{font-family:var(--doc-font-display);font-size:1.25rem;font-weight:600;color:var(--doc-text);margin:0}.book-footer{margin-top:48px;padding-top:24px;border-top:1px solid var(--doc-border);font-size:.875rem;color:var(--doc-text-muted)}.book-footer a{color:var(--doc-accent);display:inline-flex;align-items:center;gap:6px}.book-footer a:hover{color:var(--doc-accent-hover)}.book-footer img{width:1em;height:1em;margin:0;box-shadow:none}.book-post-nav{display:flex;justify-content:space-between;gap:16px;margin-top:48px;padding-top:24px;border-top:1px solid var(--doc-border)}.book-post-nav a{flex:1;padding:20px 24px;background:var(--doc-bg-secondary);border:1px solid var(--doc-border);border-radius:var(--doc-radius-md);color:var(--doc-text);text-decoration:none;transition:all .25s ease;font-size:.9375rem}.book-post-nav a:hover{background:var(--doc-accent-soft);border-color:var(--doc-accent);transform:translateY(-2px);box-shadow:var(--doc-shadow-md)}.book-post-nav a span{display:block;font-size:.75rem;color:var(--doc-text-muted);margin-bottom:4px}::selection{background:var(--doc-accent-glow);color:var(--doc-text)}.book-post-content a:focus-visible,.markdown-inner a:focus-visible{outline:2px solid var(--doc-accent);outline-offset:2px;border-radius:2px}.book-menu-content{background:var(--doc-bg)!important;border:none!important;box-shadow:none!important;border-right:1px solid var(--doc-border);border-radius:0;padding:20px 16px!important}.book-menu-content nav>ul{list-style:none;padding:0;margin:0}.book-menu-content nav>ul>li>a,.book-menu-content nav>ul>li>span,.book-menu-content nav>ul>li>label{font-family:var(--doc-font-sans);font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--doc-text-muted);padding:6px 12px;margin:2px 0;border-radius:var(--doc-radius-sm);transition:background .15s ease,color .15s ease;white-space:normal;word-break:break-word;display:flex;align-items:center;line-height:1.45}.book-menu-content nav>ul>li>a:hover{background:var(--doc-accent-soft);color:var(--doc-accent)}.book-menu-content nav>ul>li>a.active{background:var(--doc-accent-soft);color:var(--doc-accent);font-weight:700}.book-menu-content nav ul ul{padding-inline-start:0;margin:2px 0}.book-menu-content nav ul ul a{font-family:var(--doc-font-sans);font-size:.875rem;font-weight:400;color:var(--doc-text-secondary);padding:7px 12px 7px 20px;border-radius:var(--doc-radius-sm);transition:background .15s ease,color .15s ease;border-left:2px solid transparent;white-space:normal;word-break:break-word;display:block;line-height:1.45}.book-menu-content nav ul ul a:hover{background:var(--doc-accent-soft);color:var(--doc-accent);border-left-color:var(--doc-accent)}.book-menu-content nav ul ul a.active{color:var(--doc-accent);border-left-color:var(--doc-accent);background:var(--doc-accent-soft);font-weight:500}.book-toc-content{background:var(--doc-bg)!important;border:none!important;box-shadow:none!important;border-left:1px solid var(--doc-border);border-radius:0;padding:20px 16px!important}.book-toc-content nav>ul>li:first-child{margin-top:0}.book-toc-content nav>ul>li>a{font-family:var(--doc-font-sans);font-size:.8125rem;font-weight:500;color:var(--doc-text-secondary);padding:5px 12px;border-radius:var(--doc-radius-sm);border-left:2px solid transparent;transition:background .15s ease,color .15s ease,border-color .15s ease;display:block;white-space:normal;word-break:break-word;line-height:1.5}.book-toc-content nav>ul>li>a:hover{background:var(--doc-accent-soft);color:var(--doc-accent);border-left-color:var(--doc-accent)}.book-toc-content nav>ul>li>a.active{color:var(--doc-accent);border-left-color:var(--doc-accent);background:var(--doc-accent-soft)}.book-toc-content nav ul ul{padding-inline-start:12px}.book-toc-content nav ul ul a{font-size:.75rem;font-weight:400;color:var(--doc-text-muted);padding:4px 12px;border-radius:5px;border-left:2px solid transparent;transition:background .15s ease,color .15s ease;display:block;line-height:1.5}.book-toc-content nav ul ul a:hover{color:var(--doc-accent);border-left-color:var(--doc-accent);background:var(--doc-accent-soft)}.book-toc-content nav ul ul a.active{color:var(--doc-accent);border-left-color:var(--doc-accent)}.book-menu-content::-webkit-scrollbar,.book-toc-content::-webkit-scrollbar{width:3px}.book-menu-content::-webkit-scrollbar-track,.book-toc-content::-webkit-scrollbar-track{background:0 0}.book-menu-content::-webkit-scrollbar-thumb,.book-toc-content::-webkit-scrollbar-thumb{background:var(--doc-border);border-radius:2px}.book-menu-content::-webkit-scrollbar-thumb:hover,.book-toc-content::-webkit-scrollbar-thumb:hover{background:var(--doc-text-muted)}.book-brand{padding:4px 12px 16px!important;margin-bottom:12px!important;border-bottom:1px solid var(--doc-border)}.book-brand a{font-family:var(--doc-font-display);font-weight:700;font-size:1.0625rem;color:var(--doc-text)!important;letter-spacing:-.01em;transition:color .15s ease}.book-brand a:hover{color:var(--doc-accent)!important}.book-search{margin:8px 0 16px!important;padding:0 4px}.book-search input{background:var(--doc-bg-secondary)!important;border:1px solid var(--doc-border)!important;border-radius:var(--doc-radius-sm)!important;padding:8px 12px!important;font-size:.8125rem;font-family:var(--doc-font-sans);color:var(--doc-text);transition:border-color .15s ease,box-shadow .15s ease}.book-search input:focus{border-color:var(--doc-accent)!important;box-shadow:0 0 0 3px var(--doc-accent-glow);outline:none}.book-search input::placeholder{color:var(--doc-text-muted)}.book-section-flat{margin:20px 0 4px!important}.book-section-flat>a,.book-section-flat>span,.book-section-flat>label{font-size:.7rem!important;font-weight:700!important;text-transform:uppercase;letter-spacing:.1em;color:var(--doc-text-muted)!important;padding:4px 12px!important;display:block}.book-post-content pre,.book-post-content .highlight,.markdown-inner pre,.markdown-inner .highlight,.chroma{background:#1e1e2e!important;border:1px solid rgba(255,255,255,6%);border-radius:12px;padding:0;margin:28px 0;overflow:hidden;box-shadow:0 4px 24px rgba(0,0,0,.12);transition:transform .2s ease,box-shadow .2s ease}.book-post-content pre:hover,.book-post-content .highlight:hover,.markdown-inner pre:hover,.markdown-inner .highlight:hover{transform:translateY(-1px);box-shadow:0 8px 32px rgba(0,0,0,.16)}.book-post-content pre code,.book-post-content .highlight code,.markdown-inner pre code,.markdown-inner .highlight code,.chroma code{display:block;padding:20px;font-family:jetbrains mono,fira code,monospace;font-size:13.5px;line-height:1.7;color:#cdd6f4;background:0 0!important;overflow-x:auto}.book-post-content code:not(pre code),.markdown-inner code:not(pre code){font-family:jetbrains mono,monospace;font-size:.875em;padding:3px 8px;background:rgba(137,180,250,.12);border:1px solid rgba(137,180,250,.2);border-radius:4px;color:#89b4fa}.book-post-content pre code::-webkit-scrollbar,.book-post-content .highlight code::-webkit-scrollbar,.chroma code::-webkit-scrollbar{height:6px}.book-post-content pre code::-webkit-scrollbar-track,.book-post-content .highlight code::-webkit-scrollbar-track,.chroma code::-webkit-scrollbar-track{background:0 0}.book-post-content pre code::-webkit-scrollbar-thumb,.book-post-content .highlight code::-webkit-scrollbar-thumb,.chroma code::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:3px}.book-post-content pre code::-webkit-scrollbar-thumb:hover,.book-post-content .highlight code::-webkit-scrollbar-thumb:hover,.chroma code::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.25)}.book-post-content pre ::selection,.book-post-content .highlight ::selection,.book-post-content pre code::selection,.book-post-content .highlight code::selection,.chroma ::selection{background:rgba(137,180,250,.3)!important;color:#cdd6f4!important}.chroma .hl{background:rgba(203,166,247,.15);display:block}.chroma .k{color:#cba6f7}.chroma .kn{color:#cba6f7}.chroma .o{color:#89dceb}.chroma .c{color:#6c7086;font-style:italic}.chroma .ch{color:#6c7086;font-style:italic}.chroma .cm{color:#6c7086;font-style:italic}.chroma .cp{color:#f38ba8}.chroma .cpf{color:#f38ba8}.chroma .c1{color:#6c7086;font-style:italic}.chroma .cs{color:#6c7086;font-style:italic}.chroma .gd{color:#f38ba8}.chroma .ge{font-style:italic}.chroma .ges{font-style:italic}.chroma .gh{color:#89b4fa;font-weight:400}.chroma .gi{color:#a6e3a1}.chroma .go{color:#bac2de}.chroma .gp{color:#89b4fa;font-weight:400}.chroma .gr{color:#f38ba8}.chroma .gs{font-weight:700}.chroma .gt{color:#f38ba8}.chroma .h{color:#89b4fa}.chroma .nd{color:#f9e2af}.chroma .nf{color:#89b4fa}.chroma .fm{color:#89b4fa}.chroma .py{color:#89b4fa}.chroma .nb{color:#89b4fa}.chroma .bp{color:#89b4fa}.chroma .nc{color:#f9e2af;font-weight:700}.chroma .nn{color:#f9e2af}.chroma .no{color:#f38ba8}.chroma .nv{color:#fab387}.chroma .vc{color:#fab387}.chroma .vg{color:#fab387}.chroma .vi{color:#fab387}.chroma .vm{color:#fab387}.chroma .l{color:#fab387}.chroma .ld{color:#a6e3a1}.chroma .m{color:#fab387}.chroma .mb{color:#fab387}.chroma .mf{color:#fab387}.chroma .mh{color:#fab387}.chroma .mi{color:#fab387}.chroma .il{color:#fab387}.chroma .mo{color:#fab387}.chroma .sa{color:#a6e3a1}.chroma .sb{color:#a6e3a1}.chroma .sc{color:#a6e3a1}.chroma .dl{color:#a6e3a1}.chroma .sd{color:#a6e3a1;font-style:italic}.chroma .s2{color:#a6e3a1}.chroma .se{color:#f9e2af;font-weight:700}.chroma .sh{color:#a6e3a1}.chroma .si{color:#f9e2af}.chroma .sx{color:#a6e3a1}.chroma .sr{color:#a6e3a1}.chroma .s1{color:#a6e3a1}.chroma .ss{color:#a6e3a1}.chroma .ta{color:#f9e2af}.chroma .bs{color:#a6e3a1}.chroma .p{color:#cdd6f4}.chroma .w{color:#6c7086}.chroma .nt{color:#cba6f7}.chroma .nx{color:#89b4fa}.chroma .ni{color:#f38ba8}.chroma .na{color:#89b4fa}.chroma .ne{color:#f9e2af}.chroma .nl{color:#cdd6f4}.chroma .py{color:#cdd6f4}@media screen and (min-width:96rem){main.container.flex{gap:1.5rem;padding:1.5rem}.book-menu .book-menu-content,.book-toc .book-toc-content{top:1.5rem!important}}@media screen and (max-width:56rem){.book-menu{margin-inline-start:-14rem!important}#menu-control:checked~main .book-menu .book-menu-content{transform:translateX(14rem)!important}body[dir=rtl] #menu-control:checked~main .book-menu .book-menu-content{transform:translateX(-14rem)!important}}@media(max-width:1024px){.book-post{padding:28px 32px}}@media(max-width:768px){.book-page{padding:16px}.book-post{padding:20px 16px;border-radius:8px}.book-post h1{font-size:1.875rem}.book-post-content h1{font-size:1.75rem}.book-post-content h2{font-size:1.5rem}.book-post-content h3{font-size:1.25rem}.book-post-content pre code,.book-post-content .highlight code,.markdown-inner pre code,.markdown-inner .highlight code,.chroma code{padding:16px;font-size:12.5px}}