:root{--bg:#faf7f1;--bg2:#fff;--bg-soft:#f1ede4;--bg-soft-hover:#e5dfd2;--bg2-soft:#ffffff80;--ink:#2b2824;--ink-soft:#55504a;--muted:#857e72;--faint:#d8d2c5;--rule:#e9e2d5;--rule-strong:#d5ccb9;--accent:#2e9e6b;--accent-deep:#237a52;--accent-soft:#2e9e6b1a;--accent2:#e8930c;--accent2-soft:#e8930c1f;--c-new:#e5484d;--c-half:#d98e04;--c-over:#8e6bd8;--c-none:#8a8478;--c-info:#5b6b8c;--c-info-soft:#eef1f6;--overlay:#0a0a0ceb;--stroke-canvas:#fffdf8;--stroke-grid:#e7c9c2;--stroke-grid-dash:#f0d5cf;--stroke-todo:#eee8db;--fs-xs:12px;--fs-sm:13px;--fs-md:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:26px;--fs-hero:40px;--fs-read:clamp(32px, 2.6vw, 40px);--fs-char-list:44px;--fs-char-hero:88px;--font-kai:"Kaiti SC", "KaiTi", "STKaiti", "楷体", serif;--font-mono:ui-monospace, "Cascadia Mono", Consolas, "Courier New", monospace;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--r-sm:8px;--r-md:12px;--r-lg:18px;--r-pill:999px;--shadow-sm:0 1px 3px #2b28240d, 0 1px 2px #2b28240a;--shadow-md:0 3px 12px #2b282417;--shadow-pop:0 12px 40px #2b28242e;--t-fast:.15s ease;--t-med:.25s ease;--z-bar:50;--z-sheet:100;--z-full:200;--z-toast:300}html{height:100%}html,body{max-width:100vw;overflow-x:hidden}body{min-height:100%;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;font-family:PingFang SC,Microsoft YaHei,Noto Sans SC,system-ui,-apple-system,Segoe UI,sans-serif;display:flex}*{box-sizing:border-box;margin:0;padding:0}a{color:inherit;text-decoration:none}.card{background:var(--bg2);border:1px solid var(--rule);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.chip{align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-3);border:1px solid var(--rule);border-radius:var(--r-pill);background:var(--bg2);font-size:var(--fs-sm);color:var(--muted);line-height:1.4;display:inline-flex}.radical-link{color:var(--accent-deep);text-underline-offset:3px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.radical-link:hover{color:var(--accent)}.pinyin-read{font:inherit;color:var(--accent-deep);cursor:pointer;text-underline-offset:3px;background:0 0;border:none;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.pinyin-read:hover{color:var(--accent)}
