:root{--bg-primary: #ffffff;--bg-secondary: #fbfbfb;--bg-card: #ffffff;--bg-subtle: #f5f5f7;--border-color: #eaeaea;--border-hover: #0532a8;--text-primary: #111111;--text-secondary: #404040;--text-muted: #888888;--accent-blue: #0532a8;--accent-blue-hover: #032174;--accent-blue-bg: rgba(5, 50, 168, .05);--tile-blue: #0532a8;--tile-contrast: #0f0f0f;--tile-border: transparent;--font-sans: -apple-system, BlinkMacSystemFont, "Inter", "Helvetica Neue", "Segoe UI", Arial, "LXGW WenKai Lite", "LXGW WenKai Screen", "LXGW WenKai", "霞鹜文楷", "霞鹜文楷 屏幕阅读版", "霞鹜文楷 Light", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono: "JetBrains Mono", "JetBrainsMono Nerd Font", ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace;--max-width: 1160px}html.dark{--bg-primary: #24252b;--bg-secondary: #2c2d34;--bg-card: #2c2d34;--bg-subtle: #34353f;--border-color: #3b3d48;--border-hover: #6495fd;--text-primary: #f4f4f7;--text-secondary: #b5b6c2;--text-muted: #7f8191;--accent-blue: #6495fd;--accent-blue-hover: #8eb3ff;--accent-blue-bg: rgba(100, 149, 253, .12);--tile-blue: #6495fd;--tile-contrast: #141418;--tile-border: #3b3d48}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);line-height:1.75;font-weight:300;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;transition:background-color .2s ease,color .2s ease}code,kbd,samp,pre{font-family:var(--font-mono)}.top-accent-bar{height:2px;background-color:var(--accent-blue);width:100%}a{color:var(--accent-blue);text-decoration:none;transition:color .15s ease}a:hover{color:var(--accent-blue-hover)}.site-wrapper{min-height:calc(100vh - 2px);display:flex;flex-direction:column}.site-header{border-bottom:1px solid var(--border-color);background-color:var(--bg-primary);position:sticky;top:0;z-index:50}.header-inner{max-width:var(--max-width);margin:0 auto;padding:1.35rem 2rem;display:flex;justify-content:space-between;align-items:center}.site-brand{display:flex;align-items:baseline;gap:.75rem}.brand-text{font-size:1.35rem;font-weight:400;letter-spacing:-.02em;color:var(--text-primary)}.brand-sub{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.2em;color:var(--text-muted);font-weight:400}.nav-links{display:flex;align-items:center;gap:1.6rem}.nav-item{font-size:.85rem;font-weight:400;color:var(--text-secondary);letter-spacing:.02em}.nav-item:hover{color:var(--accent-blue)}.github-link{color:var(--text-primary)}.protocol-tag{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.04em;padding:.12rem .4rem;background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-muted)!important;border-radius:1px;transition:all .15s ease}.protocol-tag:hover{border-color:var(--accent-blue);color:var(--accent-blue)!important;background:var(--accent-blue-bg)}.theme-toggle-btn{display:inline-flex;align-items:center;gap:.35rem;background:transparent;border:1px solid var(--border-color);border-radius:1px;padding:.15rem .45rem;cursor:pointer;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.12em;color:var(--text-muted);transition:all .15s ease}.theme-toggle-btn:hover{border-color:var(--accent-blue);color:var(--accent-blue);background:var(--accent-blue-bg)}.theme-icon{display:block;stroke:currentColor}html:not(.dark) .icon-sun,html:not(.dark) .theme-label-dark{display:none}html:not(.dark) .icon-moon,html:not(.dark) .theme-label-light{display:inline}html.dark .icon-moon,html.dark .theme-label-light{display:none}html.dark .icon-sun,html.dark .theme-label-dark{display:inline}.site-main{flex:1;max-width:var(--max-width);width:100%;margin:0 auto;padding:4.5rem 2rem}.site-footer{border-top:1px solid var(--border-color);padding:3rem 2rem;margin-top:6rem;background-color:var(--bg-primary)}.footer-inner{max-width:var(--max-width);margin:0 auto;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem}.footer-spec{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.16em;color:var(--text-muted);font-weight:400;margin-bottom:.25rem}.copyright{font-size:.82rem;color:var(--text-secondary);font-weight:300}.footer-links{display:flex;gap:.6rem;align-items:center;font-family:var(--font-mono);font-size:.75rem;letter-spacing:.08em}.footer-links a{color:var(--text-muted)}.footer-links a:hover{color:var(--accent-blue)}.sep{color:var(--border-color)}.prose{color:var(--text-secondary);line-height:1.85;font-size:1.02rem;font-weight:300}.prose h1,.prose h2,.prose h3,.prose h4{color:var(--text-primary);font-weight:400;letter-spacing:-.015em;margin-top:2.25rem;margin-bottom:.85rem}.prose h2{font-size:1.45rem;border-bottom:1px solid var(--text-primary);padding-bottom:.4rem}.prose h3{font-size:1.2rem}.prose p{margin-bottom:1.35rem}.prose strong{font-weight:600;color:var(--text-primary)}.prose ul,.prose ol{margin-bottom:1.35rem;padding-left:1.5rem}.prose li{margin-bottom:.35rem}.prose blockquote{border-left:2px solid var(--accent-blue);padding:.6rem 1rem;background:var(--bg-card);border-top:1px solid var(--border-color);border-right:1px solid var(--border-color);border-bottom:1px solid var(--border-color);margin:1.5rem 0;color:var(--text-secondary);font-weight:300}.prose code:not(pre code){background:var(--bg-card);color:var(--accent-blue);border:1px solid var(--border-color);padding:.12rem .35rem;border-radius:2px;font-size:.86em;font-family:var(--font-mono);font-weight:400}.prose pre{background:#f7f7fa!important;color:#1f1f24!important;border:1px solid var(--border-color);border-radius:2px;padding:1.15rem;overflow-x:auto;margin:1.5rem 0;font-family:var(--font-mono);font-size:.85rem;line-height:1.6;font-weight:300}html.dark .prose pre{background:#1c1d22!important;color:#e5e5eb!important}.prose table{width:100%;border-collapse:collapse;margin:1.8rem 0;font-size:.9rem;background:var(--bg-card)}.prose th,.prose td{border:1px solid var(--border-color);padding:.75rem .95rem;text-align:left}.prose th{background:var(--bg-secondary);color:var(--text-primary);font-weight:500;border-bottom:1px solid var(--text-primary)}.prose tr:nth-child(2n){background:var(--bg-primary)}@media(max-width:640px){.header-inner{flex-direction:column;gap:.85rem;align-items:flex-start}.nav-links{flex-wrap:wrap;gap:.65rem}}
