:root{--code-bg: #0a0e14;--code-text: #d6dae2;--code-line: #1f2630;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "MiSans", "Microsoft YaHei", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, "PingFang SC", "Microsoft YaHei", monospace;--bg: #f6f8fa;--bg-soft: #ffffff;--bg-inset: #eaeef2;--text: #1f2328;--text-2: #59636e;--line: #d1d9e0;--accent: #0891b2;--accent-soft: rgba(8, 145, 178, .08);--grid: rgba(8, 145, 178, .055)}html[data-palette=blueprint]{--bg: #f6f8fa;--bg-soft: #ffffff;--bg-inset: #eaeef2;--text: #1f2328;--text-2: #59636e;--line: #d1d9e0;--accent: #0891b2;--accent-soft: rgba(8, 145, 178, .08);--grid: rgba(8, 145, 178, .055)}html[data-palette=blueprint][data-mode=dark]{--bg: #0d1117;--bg-soft: #161b22;--bg-inset: #010409;--text: #e6edf3;--text-2: #8b949e;--line: #30363d;--accent: #22d3ee;--accent-soft: rgba(34, 211, 238, .1);--grid: rgba(34, 211, 238, .04)}html[data-palette=phosphor]{--bg: #f4f8f5;--bg-soft: #ffffff;--bg-inset: #e9efe9;--text: #1c241d;--text-2: #5c6b5e;--line: #cfd9d0;--accent: #047857;--accent-soft: rgba(4, 120, 87, .08);--grid: rgba(4, 120, 87, .055)}html[data-palette=phosphor][data-mode=dark]{--bg: #0a0f0c;--bg-soft: #121814;--bg-inset: #050806;--text: #dcebe0;--text-2: #87a08d;--line: #27382c;--accent: #34d399;--accent-soft: rgba(52, 211, 153, .1);--grid: rgba(52, 211, 153, .045)}html[data-palette=amber]{--bg: #faf7f2;--bg-soft: #ffffff;--bg-inset: #f0eae0;--text: #241d13;--text-2: #6e6152;--line: #ddd2c2;--accent: #b45309;--accent-soft: rgba(180, 83, 9, .08);--grid: rgba(180, 83, 9, .05)}html[data-palette=amber][data-mode=dark]{--bg: #12100b;--bg-soft: #1a1710;--bg-inset: #0a0805;--text: #ece5d8;--text-2: #a3977f;--line: #38301f;--accent: #fbbf24;--accent-soft: rgba(251, 191, 36, .1);--grid: rgba(251, 191, 36, .04)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:16px;line-height:1.85;transition:background .2s,color .2s}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(1200px 400px at 50% -100px,var(--accent-soft),transparent 70%),linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:100% 100%,28px 28px,28px 28px}::selection{background:var(--accent-soft);color:var(--text)}#progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--accent);z-index:100;transition:width .1s linear;box-shadow:0 0 8px var(--accent)}.layout{display:grid;grid-template-columns:260px minmax(0,72ch) 232px;gap:40px;max-width:1440px;margin:0 auto;padding:0 32px;align-items:start}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:36px 8px 24px 0;border-right:1px solid var(--line)}.site-name{font-family:var(--font-mono);font-size:1.1rem;font-weight:700;letter-spacing:.02em;color:var(--text);text-decoration:none;display:block;margin-bottom:2px}.site-name .blk{color:var(--accent)}.site-sub{font-family:var(--font-mono);font-size:.74rem;color:var(--text-2);margin-bottom:26px;letter-spacing:.04em}.side-h{font-family:var(--font-mono);font-size:.68rem;font-weight:700;color:var(--text-2);text-transform:uppercase;letter-spacing:.18em;margin:24px 0 8px 12px}.side-h:before{content:"// ";color:var(--accent)}.nav a{display:flex;align-items:center;gap:8px;padding:6px 12px;margin:2px 0;color:var(--text-2);text-decoration:none;font-size:.92rem;border-left:2px solid transparent;transition:color .15s,background .15s,border-color .15s}.nav a .no{font-family:var(--font-mono);font-size:.7rem;color:var(--text-2);opacity:.7;min-width:1.6em}.nav a:hover{color:var(--accent);background:var(--accent-soft)}.nav a.active{color:var(--accent);border-left-color:var(--accent);background:var(--accent-soft);font-weight:600}.nav a.active .no{color:var(--accent);opacity:1}.tag-nav a{display:flex;justify-content:space-between;align-items:center;padding:4px 12px;color:var(--text-2);text-decoration:none;font-size:.86rem;transition:color .15s,background .15s}.tag-nav a:hover{color:var(--accent);background:var(--accent-soft)}.tag-nav a .t{font-family:var(--font-mono)}.tag-nav a .t:before{content:"#";color:var(--accent);margin-right:1px}.tag-count{font-family:var(--font-mono);font-size:.7rem;background:var(--bg-soft);border:1px solid var(--line);padding:0 6px;color:var(--text-2)}.sidebar-foot{margin-top:auto;padding:12px;font-family:var(--font-mono);font-size:.72rem;color:var(--text-2);border-top:1px solid var(--line);line-height:1.9}.sidebar-foot a{color:var(--accent);text-decoration:none}.sidebar-foot a:hover{text-decoration:underline}.foot-beian{margin-top:2px;line-height:1.8}.foot-beian a{display:inline-block;margin-right:8px}.foot-ver{opacity:.55;margin-top:2px;letter-spacing:.06em}.theme-ctl{display:flex;align-items:center;gap:10px;margin-bottom:22px}.topbar .theme-ctl{margin-bottom:0}.mode-btn{font-family:var(--font-mono);background:var(--bg-soft);border:1px solid var(--line);color:var(--text-2);border-radius:2px;padding:3px 10px;cursor:pointer;font-size:.8rem;transition:border-color .15s,color .15s;line-height:1.4}.mode-btn:hover{border-color:var(--accent);color:var(--accent)}.swatches{display:flex;gap:7px}.swatch{width:14px;height:14px;border-radius:2px;padding:0;cursor:pointer;background:var(--sw);border:1px solid transparent;box-shadow:0 0 0 1px var(--line);transition:transform .15s,border-color .15s}.swatch:hover{transform:scale(1.18)}.swatch.active{border-color:var(--text);transform:scale(1.18)}.gear-link{margin-left:auto;display:inline-flex;align-items:center;color:var(--text-2);text-decoration:none;opacity:.55;transition:opacity .2s,color .15s;padding:2px}.gear-link:hover{opacity:1;color:var(--accent)}.main{padding:36px 0 96px;min-width:0}.toc{position:sticky;top:36px;padding:36px 0 24px;font-size:.82rem;max-height:100vh;overflow-y:auto}.toc-h{font-family:var(--font-mono);font-size:.68rem;font-weight:700;color:var(--text-2);text-transform:uppercase;letter-spacing:.18em;margin-bottom:10px}.toc-h:before{content:"// ";color:var(--accent)}.toc a{display:block;padding:4px 10px;color:var(--text-2);text-decoration:none;border-left:2px solid var(--line);transition:color .15s,border-color .15s;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toc a.lv3{padding-left:24px;font-size:.78rem}.toc a:hover{color:var(--accent)}.toc a.active{color:var(--accent);border-left-color:var(--accent);font-weight:600;background:var(--accent-soft)}.toc-empty{font-size:.8rem;color:var(--text-2);padding:4px 10px;font-family:var(--font-mono)}.topbar{display:none;position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:1px solid var(--line);padding:10px 20px;align-items:center;gap:16px}.topbar .site-name{font-size:.95rem;margin:0}.topbar nav{display:flex;gap:14px;margin-left:auto}.topbar nav a{font-family:var(--font-mono);color:var(--text-2);text-decoration:none;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}.topbar nav a:hover{color:var(--accent)}.page-h{font-family:var(--font-mono);font-size:.95rem;font-weight:700;margin-bottom:4px;text-transform:uppercase;letter-spacing:.1em}.page-h:before{content:"▌";color:var(--accent);margin-right:8px}.page-h-sub{font-family:var(--font-mono);color:var(--text-2);font-size:.78rem;margin-bottom:28px;letter-spacing:.04em}.year-h{display:flex;align-items:center;gap:12px;font-family:var(--font-mono);font-size:.78rem;font-weight:700;color:var(--text-2);margin:30px 0 12px;letter-spacing:.12em}.year-h:after{content:"";flex:1;border-top:1px dashed var(--line)}.year-h b{color:var(--accent);font-weight:700}.post-row{display:block;text-decoration:none;color:inherit;background:var(--bg-soft);border:1px solid var(--line);border-radius:3px;padding:16px 18px;margin-bottom:10px;transition:border-color .15s,transform .15s;position:relative}.post-row:hover{border-color:var(--accent);transform:translate(3px)}.post-row:hover .row-arrow{opacity:1;transform:translate(0)}.row-top{display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;margin-bottom:8px;text-transform:uppercase}.row-no{color:var(--accent);font-weight:700}.row-sep{color:var(--line)}.row-tag{color:var(--text-2)}.row-tag:before{content:"#";color:var(--accent)}.row-arrow{margin-left:auto;color:var(--accent);opacity:0;transform:translate(-6px);transition:opacity .15s,transform .15s}.post-title{font-size:1.1rem;font-weight:700;line-height:1.5;margin-bottom:4px}.post-row:hover .post-title{color:var(--accent)}.post-meta{font-family:var(--font-mono);font-size:.76rem;color:var(--text-2);margin-bottom:6px;letter-spacing:.04em}.post-desc{font-size:.89rem;color:var(--text-2);margin-bottom:2px}.tag{display:inline-block;font-family:var(--font-mono);font-size:.72rem;color:var(--accent);background:var(--accent-soft);border:1px solid var(--line);padding:1px 9px;border-radius:2px;margin-right:6px;text-decoration:none;letter-spacing:.04em}.tag:before{content:"#"}a.tag:hover{border-color:var(--accent)}.tag-lg{font-size:.86rem;padding:4px 12px}.tag-cloud{display:flex;flex-wrap:wrap;gap:10px}.archive-row{display:flex;align-items:baseline;gap:16px;padding:8px 10px;border-left:2px solid transparent;text-decoration:none;transition:border-color .15s,background .15s}.archive-row:hover{border-left-color:var(--accent);background:var(--accent-soft)}.archive-date{font-family:var(--font-mono);font-size:.78rem;color:var(--text-2);flex-shrink:0;width:88px;letter-spacing:.04em}.archive-title{color:var(--text);font-size:.95rem;font-weight:500}.archive-row:hover .archive-title{color:var(--accent)}.empty{text-align:center;padding:56px 16px;color:var(--text-2);font-size:.92rem;line-height:2}.empty code{font-family:var(--font-mono);color:var(--accent);font-size:.85em}.main-foot{display:none}@media(max-width:1023px){.main-foot{display:block;margin-top:56px;padding-top:16px;border-top:1px dashed var(--line);font-family:var(--font-mono);font-size:.72rem;color:var(--text-2);text-align:center;line-height:2;letter-spacing:.04em}.main-foot a{color:var(--text-2);text-decoration:none}.main-foot a:hover{color:var(--accent)}}@media(max-width:1279px){.layout{grid-template-columns:260px minmax(0,1fr)}.toc{display:none}}@media(max-width:1023px){.layout{grid-template-columns:minmax(0,1fr);padding:0 20px}.sidebar{display:none}.topbar{display:flex}.main{padding-top:26px}}.hidden{display:none!important}
