:root{color-scheme:light dark;--bg:#f5fafc;--paper:#eff4f7;--text:#171c1e;--muted:#3f484b;--line:#bfc8cb;--link:#00687a;--note:#cee7ef;--note-text:#334a51;--code:#dee3e5}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:18px/1.85 "Noto Sans SC","Microsoft YaHei",sans-serif}a{color:var(--link);text-decoration:none;overflow-wrap:anywhere}a:hover{text-decoration:underline}.header,.footer{max-width:1120px;margin:auto;padding:20px 24px}.nav{display:flex;justify-content:space-between;align-items:center}.logo{font-size:24px;font-weight:700}#menu{display:flex;gap:20px;list-style:none;margin:0;padding:0}#theme-toggle,.logo-switches,.anchor,#top-link{display:none}.main{max-width:850px;margin:24px auto;padding:24px}.post-title,.page-header h1,.home-info h1{font-size:34px;line-height:1.5;margin:12px 0 20px}.post-description{color:var(--muted)}.post-meta,.entry-footer,.breadcrumbs,.footer{font-size:14px;color:var(--muted)}.breadcrumbs svg{width:14px;height:14px;margin:0 6px}.toc{padding:14px 20px;border:1px solid var(--line);border-radius:12px;margin:28px 0;background:var(--paper)}.toc summary{cursor:pointer}.toc ul{padding-left:22px}.post-content p{margin:0 0 20px}.post-content h2{font-size:26px;line-height:1.6;margin:40px 0 18px}.post-content h3{font-size:21px}.post-content img,.post-content svg{display:block;max-width:100%;height:auto;margin:auto}.knowledge-figure{margin:28px 0}.knowledge-figure figcaption{font-size:14px;font-weight:400;line-height:1.7;color:var(--muted);margin-top:10px}.knowledge-citation{font-size:13px;line-height:0}.knowledge-citation a{font-size:13px;text-decoration:none}.knowledge-table{overflow-x:auto;border:1px solid var(--line);border-radius:12px;margin:24px 0}.knowledge-table:focus-visible{outline:2px solid var(--link)}table{border-collapse:collapse;width:100%;min-width:600px;font-size:15px}th,td{text-align:left;vertical-align:top;padding:12px 16px;border-bottom:1px solid var(--line);border-right:0}th{background:var(--code)}.knowledge-note,blockquote{margin:24px 0;padding:16px 20px;background:var(--note);color:var(--note-text);border-radius:12px}.knowledge-note p:last-child,blockquote p:last-child{margin:0}.knowledge-note-title{font-weight:600}.knowledge-flow{border:1px solid var(--line);border-radius:12px;padding:10px 20px;margin:24px 0}.knowledge-flow ol{list-style:none;counter-reset:step;padding:0}.knowledge-flow li{counter-increment:step;padding:10px 0 14px 42px;position:relative}.knowledge-flow li:before{content:counter(step);position:absolute;left:0;border:1px solid var(--link);border-radius:50%;width:28px;height:28px;text-align:center;line-height:26px;font-size:14px;color:var(--link)}pre{overflow:auto;padding:16px;border-radius:12px;font-size:14px;line-height:1.8;background:var(--code);color:var(--text)}code{font-family:Consolas,monospace}.knowledge-sources{border-top:1px solid var(--line);padding-top:20px;margin-top:40px;font-size:15px}.knowledge-sources h2{font-size:21px}.knowledge-original span{display:block;font-size:13px;color:var(--muted)}.post-tags,.terms-tags{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0}.post-tags a,.terms-tags a{font-size:14px;border:1px solid var(--line);border-radius:8px;padding:4px 10px;display:block;background:var(--paper)}.post-entry{position:relative;border:1px solid var(--line);border-radius:12px;padding:24px;margin:16px 0;background:var(--paper)}.post-entry h2{font-size:23px;margin:0 0 12px}.entry-content p{margin:0 0 16px}.entry-link{position:absolute;inset:0}.pagination{display:flex;justify-content:space-between;gap:20px}.paginav{display:flex;gap:24px}.footer{text-align:center}#reader-loading{padding:8px 20px;background:var(--note);text-align:center;font-size:13px}#flutter-host{position:fixed;inset:0;opacity:0;pointer-events:none}.blog-ready{overflow:hidden}.blog-ready #flutter-host{opacity:1;pointer-events:auto}[hidden]{display:none!important}@media(prefers-color-scheme:dark){:root{--bg:#0f1416;--paper:#171c1e;--text:#dee3e5;--muted:#bfc8cb;--line:#3f484b;--link:#84d2e7;--note:#334a51;--note-text:#cee7ef;--code:#303638}}@media(max-width:600px){body{font-size:17px}.header{padding:16px}#menu{gap:12px;font-size:14px}.main{padding:12px 20px;margin-top:8px}.post-title,.page-header h1,.home-info h1{font-size:28px}.post-content h2{font-size:23px}.knowledge-figure figcaption{font-size:13px}.post-entry{padding:18px}.post-entry h2{font-size:21px}.knowledge-flow{padding:8px 16px}}
.knowledge-diagram svg{background:#fff;border-radius:12px}

/* The basic reader follows the same Material 3 color roles and reading sizes. */
.toc{border:0}.post-entry{border:0}.knowledge-flow{background:var(--paper)}.knowledge-flow li:before{border:0;background:var(--note);color:var(--note-text)}a:focus-visible{outline:2px solid var(--link);outline-offset:3px}
/* Flutter owns scrolling; browser focus must not scroll its outer viewport. */
#flutter-host flutter-view{overflow:clip!important}

/* Generated from config/figure-style.json. */
.knowledge-diagram{max-width:640px;margin-inline:auto}.knowledge-diagram-viewport{width:100%;overflow-x:auto;scrollbar-width:auto}.knowledge-diagram-viewport svg{width:100%;min-width:480px;max-width:none}.knowledge-diagram-viewport:focus-visible{outline:2px solid var(--link);outline-offset:3px}.knowledge-figure figcaption{font-size:14px;font-weight:400;line-height:1.7}@media(max-width:600px){.knowledge-figure figcaption{font-size:13px}}
