:root{color-scheme:light;--bg:#f1f0eb;--surface:#f8f7f2;--surface-strong:#fff;--ink:#1b1d20;--muted:#72736f;--quiet:#a1a19a;--rule:#d3d1c9;--rule-strong:#b8b6ad;--accent:#596edc;--software:#657df2;--systems:#42aa92;--infra:#d18d3f;--oss:#a86ec0;--compiler:#d86d78;--serif:"Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", serif;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;--mono:"IBM Plex Mono", "Cascadia Code", "JetBrains Mono", Consolas, monospace;--fs-11:11px;--fs-12:12px;--fs-14:14px;--fs-16:16px;--fs-18:18px;--fs-22:22px;--fs-28:28px;--fs-display:clamp(32px, 3.4vw, 46px);--lh-tight:1.15;--lh-mid:1.5;--lh-body:1.75;--s-4:4px;--s-8:8px;--s-12:12px;--s-16:16px;--s-24:24px;--s-32:32px;--s-48:48px;--s-64:64px;--s-96:96px;--s-128:128px;--wrap:1288px;--gutter:24px;--header-h:84px;--player-h:0px;--graph-w:1320;--graph-h:680;--radius:0;--shadow:none;--hairline:1px solid var(--rule);--dur-1:.16s;--dur-2:.28s;--ease:cubic-bezier(.2, .8, .2, 1)}:root[data-theme=dark]{color-scheme:dark;--bg:#1b1d1c;--surface:#222524;--surface-strong:#292c2b;--ink:#e7e9ea;--muted:#b2b7bb;--quiet:#797f83;--rule:#3b4140;--rule-strong:#8b9295;--accent:#93a1ff;--software:#8497ff;--systems:#62c7ae;--infra:#dfa052;--oss:#c088d3;--compiler:#e17d87}*{box-sizing:border-box}html{scroll-behavior:smooth}body{padding-bottom:var(--player-h);background:var(--bg);color:var(--ink);font:var(--fs-16) / var(--lh-body) var(--sans);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;margin:0}button,a{font:inherit;color:inherit}a{text-underline-offset:3px}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.skip-link{position:absolute;top:0;left:-9999px}.skip-link:focus-visible{left:var(--gutter);top:var(--s-8);z-index:20;padding:var(--s-8) var(--s-12);background:var(--surface-strong);border:var(--hairline)}.wrap{width:min(var(--wrap), calc(100% - var(--gutter) * 2));margin:auto}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.icon[data-astro-cid-ccg5yoga]{width:var(--icon-size);height:var(--icon-size);flex-shrink:0;display:inline-flex}.icon[data-astro-cid-ccg5yoga] svg{fill:currentColor;width:100%;height:100%}.theme[data-astro-cid-l6lhmie6]{border:0;border-left:var(--hairline);cursor:pointer;background:0 0;justify-content:center;align-items:center;min-width:60px;min-height:44px;padding:4px 0 4px 24px;display:inline-flex}.theme[data-astro-cid-l6lhmie6]:hover{color:var(--accent)}.sun[data-astro-cid-l6lhmie6]{display:none}.moon[data-astro-cid-l6lhmie6],[data-theme=dark] .sun[data-astro-cid-l6lhmie6]{display:inline-flex}[data-theme=dark] .moon[data-astro-cid-l6lhmie6]{display:none}@media (width<=600px){.theme[data-astro-cid-l6lhmie6]{min-width:44px;padding-left:12px}}.site-header[data-astro-cid-fzpbxy5g]{min-height:var(--header-h);border-bottom:var(--hairline);justify-content:space-between;align-items:center;gap:24px;display:flex}.brand[data-astro-cid-fzpbxy5g]{font:600 32px/1 var(--sans);letter-spacing:.01em;text-decoration:none}.nav-right[data-astro-cid-fzpbxy5g]{align-items:center;gap:32px;display:flex}.nav-right[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{align-items:center;min-height:44px;font-size:16px;text-decoration:none;display:inline-flex}.nav-right[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]:hover{color:var(--accent)}@media (width<=600px){.site-header[data-astro-cid-fzpbxy5g]{flex-wrap:wrap;gap:4px;padding:16px 0 8px}.brand[data-astro-cid-fzpbxy5g]{font-size:26px}.nav-right[data-astro-cid-fzpbxy5g]{justify-content:space-between;gap:12px;width:100%}.nav-right[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{font-size:14px}}.xan9x-topology{color-scheme:inherit;--topology-bg:var(--bg,#f1f0eb);--topology-surface:var(--surface,#f8f7f2);--topology-surface-strong:var(--surface-strong,#fff);--topology-ink:var(--ink,#1b1d20);--topology-muted:var(--muted,#72736f);--topology-quiet:var(--quiet,#a1a19a);--topology-rule:var(--rule,#d3d1c9);--topology-rule-strong:var(--rule-strong,#b8b6ad);--topology-accent:var(--accent,#596edc);--topology-software:var(--software,#657df2);--topology-systems:var(--systems,#42aa92);--topology-infra:var(--infra,#d18d3f);--topology-oss:var(--oss,#a86ec0);--topology-compiler:var(--compiler,#d86d78);--topology-serif:var(--serif,"Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", serif);--topology-sans:var(--sans,-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif);--topology-mono:var(--mono,"IBM Plex Mono", "Cascadia Code", "JetBrains Mono", Consolas, monospace);--topology-fs-11:var(--fs-11,11px);--topology-fs-12:var(--fs-12,12px);--topology-fs-14:var(--fs-14,14px);--topology-fs-16:var(--fs-16,16px);--topology-fs-18:var(--fs-18,18px);--topology-fs-22:var(--fs-22,22px);--topology-fs-28:var(--fs-28,28px);--topology-fs-display:var(--fs-display,clamp(32px, 3.4vw, 46px));--topology-lh-tight:var(--lh-tight,1.15);--topology-lh-mid:var(--lh-mid,1.5);--topology-lh-body:var(--lh-body,1.75);--topology-s-4:var(--s-4,4px);--topology-s-8:var(--s-8,8px);--topology-s-12:var(--s-12,12px);--topology-s-16:var(--s-16,16px);--topology-s-24:var(--s-24,24px);--topology-s-32:var(--s-32,32px);--topology-s-48:var(--s-48,48px);--topology-s-64:var(--s-64,64px);--topology-s-96:var(--s-96,96px);--topology-s-128:var(--s-128,128px);--topology-wrap:var(--wrap,1320px);--topology-gutter:var(--gutter,28px);--topology-header-h:var(--header-h,80px);--topology-player-h:var(--player-h,0px);--topology-graph-w:var(--graph-w,1320);--topology-graph-h:var(--graph-h,680);--topology-radius:var(--radius,0);--topology-shadow:var(--shadow,none);--topology-hairline:var(--hairline,1px solid var(--topology-rule));--topology-dur-1:var(--dur-1,.16s);--topology-dur-2:var(--dur-2,.28s);--topology-ease:var(--ease,cubic-bezier(.2, .8, .2, 1))}@scope(.xan9x-topology){.breadcrumb{justify-content:flex-end;align-items:baseline;gap:var(--topology-s-8);display:flex}.crumb-btn{color:inherit;cursor:pointer;white-space:nowrap;transition:color var(--topology-dur-1) var(--topology-ease);background:0 0;border:0;padding:0}.crumb-btn:hover{color:var(--topology-ink)}.crumb-sep{color:var(--topology-quiet)}.graph-shell{margin-top:var(--topology-s-16);border-top:var(--topology-hairline);border-bottom:var(--topology-hairline);position:relative;overflow:hidden}.graph{width:100%;height:auto;aspect-ratio:var(--topology-graph-w) / var(--topology-graph-h);display:block}.link{fill:none;stroke:var(--topology-rule-strong);stroke-width:1.35px;vector-effect:non-scaling-stroke;transition:opacity var(--topology-dur-1) var(--topology-ease), stroke var(--topology-dur-1) var(--topology-ease), stroke-width var(--topology-dur-1) var(--topology-ease)}.link.path{stroke-width:1.75px}.link.context-sibling{stroke-width:1.15px}.link.relation{stroke-width:1.15px;stroke-dasharray:3 5}.link.hot{stroke-width:2.15px}.graph.animating .link{transition:none}.node{cursor:pointer}.node .hit-target{fill:#0000;stroke:none;pointer-events:all}.node .halo{pointer-events:none;fill:none;stroke:var(--node-color,var(--topology-accent));stroke-width:1px;vector-effect:non-scaling-stroke;opacity:0;transition:opacity var(--topology-dur-1) var(--topology-ease)}.node .dot{pointer-events:none;fill:var(--topology-bg);stroke:var(--node-color,var(--topology-accent));stroke-width:2px;vector-effect:non-scaling-stroke;transition:fill var(--topology-dur-1) var(--topology-ease), opacity var(--topology-dur-1) var(--topology-ease)}.node .title{pointer-events:none;fill:var(--topology-ink);font-family:var(--topology-serif);dominant-baseline:middle;transition:fill var(--topology-dur-1) var(--topology-ease), opacity var(--topology-dur-1) var(--topology-ease);font-size:18px;font-weight:700}.node .meta{pointer-events:none;fill:var(--topology-muted);font-family:var(--topology-mono);dominant-baseline:middle;font-size:10.5px}.node.root .title{font-size:17px}.node.current .title{font-size:25px}.node.current .dot{stroke-width:2.4px}.node.current .halo{opacity:.2}.node.topic:hover .halo,.node.index:hover .halo,.node:focus .halo,.node.selected .halo{opacity:.42}.node:hover .dot,.node:focus .dot,.node.selected .dot,.node:hover .title,.node:focus .title,.node.selected .title{fill:var(--node-color,var(--topology-accent))}.node.index .inner-mark{opacity:.72;fill:var(--node-color,var(--topology-accent))}.node.article .dot{fill:var(--node-color,var(--topology-accent));stroke-width:1.2px}.node.article .title{font-size:13.5px;font-weight:700}.node.article .meta{font-size:9.5px}.node.project .dot{opacity:0}.node .project-mark{opacity:0;fill:var(--topology-bg);stroke:var(--node-color,var(--topology-accent));stroke-width:1.8px;vector-effect:non-scaling-stroke}.node.project .project-mark{opacity:1}.node .inner-mark{opacity:0;pointer-events:none}.node.context-sibling .halo{opacity:0}.node.context-sibling .title{font-size:15px}.node.context-sibling .meta{font-size:9.5px}.node.context-ancestor-old .title{font-size:13px}.node.context-ancestor-old .meta{font-size:9px}.node.dim{opacity:.16}.layer-label{fill:var(--topology-quiet);font-family:var(--topology-mono);letter-spacing:.08em;text-transform:uppercase;font-size:9px}.layer-rule{stroke:var(--topology-rule);stroke-width:1px;vector-effect:non-scaling-stroke}.context-panel{z-index:5;right:var(--topology-s-24);bottom:var(--topology-s-24);width:min(420px, calc(100% - var(--topology-s-48)));background:var(--topology-surface);border:var(--topology-hairline);box-shadow:var(--topology-shadow);padding:var(--topology-s-16) var(--topology-s-24);opacity:0;pointer-events:none;transition:opacity var(--topology-dur-2) var(--topology-ease), transform var(--topology-dur-2) var(--topology-ease);position:absolute;transform:translateY(12px)}.context-panel.visible{opacity:1;pointer-events:auto;transform:none}.panel-top{justify-content:space-between;align-items:center;gap:var(--topology-s-16);margin-bottom:var(--topology-s-8);display:flex}.panel-type{color:var(--topology-quiet);font:var(--topology-fs-11) / 1.4 var(--topology-mono);letter-spacing:.08em;text-transform:uppercase}.panel-close{cursor:pointer;color:var(--topology-quiet);transition:color var(--topology-dur-1) var(--topology-ease);background:0 0;border:0;padding:0}.panel-close:hover{color:var(--topology-ink)}.context-panel h3{margin:0 0 var(--topology-s-4);font:700 var(--topology-fs-22) / var(--topology-lh-mid) var(--topology-serif)}.context-panel>p{margin:0 0 var(--topology-s-16);color:var(--topology-muted);font-size:var(--topology-fs-14);line-height:var(--topology-lh-mid)}.panel-meta{gap:var(--topology-s-16);border-top:var(--topology-hairline);padding:var(--topology-s-12) 0;color:var(--topology-quiet);font:var(--topology-fs-11) var(--topology-mono);flex-wrap:wrap;display:flex}.panel-list{border-top:var(--topology-hairline);margin:0;padding:0;list-style:none}.panel-list li{border-bottom:var(--topology-hairline)}.panel-list a{gap:var(--topology-s-12);padding:var(--topology-s-12) 0;grid-template-columns:68px minmax(0,1fr) auto;align-items:baseline;text-decoration:none;display:grid}.panel-list time{color:var(--topology-quiet);font:var(--topology-fs-11) var(--topology-mono)}.panel-list strong{font:700 var(--topology-fs-14) / var(--topology-lh-mid) var(--topology-serif)}.panel-list .arr{color:var(--topology-quiet);transition:transform var(--topology-dur-1) var(--topology-ease)}.panel-list a:hover .arr{transform:translate(3px)}.panel-more{padding:var(--topology-s-12) 0;color:var(--topology-quiet);font:var(--topology-fs-11) var(--topology-mono);display:block}.panel-related{align-items:baseline;gap:var(--topology-s-12);border-top:var(--topology-hairline);padding:var(--topology-s-12) 0;flex-wrap:wrap;display:flex}.panel-rel{cursor:pointer;color:var(--topology-muted);font-size:var(--topology-fs-14);transition:color var(--topology-dur-1) var(--topology-ease);background:0 0;border:0;padding:0}.panel-rel:hover{color:var(--topology-ink)}.panel-open{margin-top:var(--topology-s-12);color:var(--topology-muted);font-size:var(--topology-fs-14);transition:color var(--topology-dur-1) var(--topology-ease);text-decoration:none;display:inline-flex}.panel-open:hover{color:var(--topology-ink)}.map-footnote{left:var(--topology-s-16);bottom:var(--topology-s-12);color:var(--topology-quiet);font:var(--topology-fs-11) / 1.5 var(--topology-mono);letter-spacing:.08em;pointer-events:none;position:absolute}}.xan9x-topology{color:var(--topology-ink);font:var(--topology-fs-16)/var(--topology-lh-body) var(--topology-sans);position:relative}.xan9x-topology *,.xan9x-topology :before,.xan9x-topology :after{box-sizing:border-box}.xan9x-topology button,.xan9x-topology a{font:inherit;color:inherit}.xan9x-topology .graph-shell{border-top:0;margin-top:0}.xan9x-topology .breadcrumb{z-index:4;top:var(--topology-s-16);right:var(--topology-s-16);text-align:right;color:var(--topology-muted);font-size:var(--topology-fs-14);position:absolute}.xan9x-topology :focus-visible{outline:2px solid var(--topology-accent);outline-offset:4px}.xan9x-topology .context-panel[hidden]{display:none}@media (prefers-reduced-motion:reduce){.xan9x-topology *,.xan9x-topology :before,.xan9x-topology :after{transition:none!important;animation:none!important}}.map-hero[data-astro-cid-tt5wed6x]{border-bottom:var(--hairline);padding-top:40px;scroll-margin-top:24px}h1[data-astro-cid-tt5wed6x]{margin:0;font-size:32px;font-weight:600;line-height:1.4}.map-viewport[data-astro-cid-tt5wed6x]{overscroll-behavior-x:contain;overflow-x:auto}[data-astro-cid-tt5wed6x][data-topology-host]{min-width:900px}.map-hero[data-astro-cid-tt5wed6x] .xan9x-topology{--topology-serif:var(--sans)}.map-hero[data-astro-cid-tt5wed6x] .graph-shell{border-bottom:0}.map-hero[data-astro-cid-tt5wed6x] .map-footnote,.map-hero[data-astro-cid-tt5wed6x] .node.root .meta{display:none}.map-hero[data-astro-cid-tt5wed6x] .node .title{font-weight:500}.map-hero[data-astro-cid-tt5wed6x] .node.topic:not(.current):not(.context-sibling):not(.context-ancestor-old) .title{font-size:20px}.map-hero[data-astro-cid-tt5wed6x] .node.root.current .halo{opacity:0}.map-hero[data-astro-cid-tt5wed6x] .node.root.current .dot{r:12px;stroke-width:4px}.map-hero[data-astro-cid-tt5wed6x] .node.root.current .title{font-size:24px}.map-hero[data-astro-cid-tt5wed6x] .node .meta{font-size:12px}.map-hero[data-astro-cid-tt5wed6x] .link.relation{opacity:.32}.map-hero[data-astro-cid-tt5wed6x] .breadcrumb{flex-wrap:wrap;max-width:calc(100% - 32px)}.map-empty[data-astro-cid-tt5wed6x]{color:var(--muted);margin:16px 0 0}.map-controls[data-astro-cid-tt5wed6x]{display:none}@media (width<=900px){.map-controls[data-astro-cid-tt5wed6x]{align-items:center;gap:12px;margin-top:12px;display:flex}.map-controls[data-astro-cid-tt5wed6x] button[data-astro-cid-tt5wed6x]{cursor:pointer;background:0 0;border:0;min-width:44px;min-height:44px;padding:6px;font-size:14px}.map-controls[data-astro-cid-tt5wed6x] button[data-astro-cid-tt5wed6x]:disabled{color:var(--quiet);cursor:default}.pan-controls[data-astro-cid-tt5wed6x]{margin-left:auto;display:flex}.map-hero[data-astro-cid-tt5wed6x] .context-panel{width:auto;max-height:70vh;position:fixed;bottom:24px;left:24px;right:24px;overflow-y:auto}.map-hero[data-astro-cid-tt5wed6x] .breadcrumb{display:none}}@media (width<=600px){.map-hero[data-astro-cid-tt5wed6x]{padding-top:28px}h1[data-astro-cid-tt5wed6x]{font-size:24px}.map-viewport[data-astro-cid-tt5wed6x]{margin-top:12px}}.music[data-astro-cid-hxmsq4xn]{border-bottom:var(--hairline);padding:36px 0 28px;scroll-margin-top:24px}.player[data-astro-cid-hxmsq4xn]{max-width:980px;margin:0 auto}.now-playing[data-astro-cid-hxmsq4xn]{text-align:center;overflow-wrap:anywhere;min-height:30px}.track-title[data-astro-cid-hxmsq4xn]{margin:0;font-size:16px}.artist[data-astro-cid-hxmsq4xn]{color:var(--muted);margin:3px 0 0;font-size:13px}.transport[data-astro-cid-hxmsq4xn]{justify-content:center;align-items:center;gap:42px;margin:12px 0;display:flex}button[data-astro-cid-hxmsq4xn]{cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:8px;line-height:1;display:inline-flex}button[data-astro-cid-hxmsq4xn]>span[data-astro-cid-hxmsq4xn]:not([hidden]){display:inline-flex}button[data-astro-cid-hxmsq4xn]:hover:not(:disabled){color:var(--accent)}button[data-astro-cid-hxmsq4xn]:disabled{color:var(--quiet);cursor:default}.timeline[data-astro-cid-hxmsq4xn]{align-items:center;gap:14px;display:flex}.time[data-astro-cid-hxmsq4xn]{min-width:38px;color:var(--muted);font-size:14px;font-family:var(--sans)}.time[data-astro-cid-hxmsq4xn][data-duration]{text-align:right}input[data-astro-cid-hxmsq4xn]{accent-color:var(--accent);cursor:pointer;min-width:0;height:24px;margin:0}input[data-astro-cid-hxmsq4xn]:disabled{cursor:default;opacity:.45}[data-astro-cid-hxmsq4xn][data-seek]{flex:1}.volume[data-astro-cid-hxmsq4xn]{align-items:center;gap:4px;display:flex}[data-astro-cid-hxmsq4xn][data-volume]{width:80px}.status[data-astro-cid-hxmsq4xn]{text-align:center;color:var(--muted);margin:12px 0 0;font-size:14px}.playlist[data-astro-cid-hxmsq4xn]{border-top:var(--hairline);margin:28px 0 0;padding:0;list-style:none}.playlist[data-astro-cid-hxmsq4xn] button[data-astro-cid-hxmsq4xn]{text-align:left;overflow-wrap:anywhere;justify-content:flex-start;gap:16px;width:100%;padding:12px 0}.playlist[data-astro-cid-hxmsq4xn] button[data-astro-cid-hxmsq4xn][aria-current]{color:var(--accent)}.playlist[data-astro-cid-hxmsq4xn] .artist[data-astro-cid-hxmsq4xn]{margin-left:auto}.track-number[data-astro-cid-hxmsq4xn]{color:var(--muted);font:12px var(--mono)}@media (width<=600px){.music[data-astro-cid-hxmsq4xn]{padding:28px 0}.timeline[data-astro-cid-hxmsq4xn]{flex-wrap:wrap;gap:8px}.volume[data-astro-cid-hxmsq4xn]{flex-basis:100%;justify-content:flex-end}.transport[data-astro-cid-hxmsq4xn]{gap:28px}}.site-footer[data-astro-cid-nns7i3if]{color:var(--muted);flex-wrap:wrap;align-items:center;gap:32px;padding:28px 0 40px;font-size:14px;display:flex}a[data-astro-cid-nns7i3if]{min-height:44px;color:var(--accent);align-items:center;display:inline-flex}
