:root{--bg: #f6f1e6;--panel: #fffdf7;--panel-2: #efe7d6;--border: #e3d9c4;--text: #2a2620;--muted: #8c8070;--accent: #c23b2e;--accent-ink: #a82e23;--accent-weak: #f2ddd4;--accent-2: #5c7a94;--grid: #e7d0c8;--ink: #2a2620;--ghost: #ece2d0;--shadow: 0 4px 22px rgba(96,74,42,.1);--shadow-sm: 0 2px 8px rgba(96,74,42,.08);--radius: 16px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-serif: "Songti SC", "STSong", "Noto Serif CJK SC", "Noto Serif", Georgia, "Times New Roman", serif;--font-cjk: "Kaiti SC", "KaiTi", "STKaiti", "Noto Serif CJK SC", "Songti SC", serif}:root[data-theme=dark]{--bg: #17140f;--panel: #201b14;--panel-2: #2a2318;--border: #392f22;--text: #ece3d3;--muted: #a89a83;--accent: #e06a5b;--accent-ink: #e8867a;--accent-weak: #3a2620;--accent-2: #82a3c0;--grid: #3c2f29;--ink: #ece3d3;--ghost: #2f2820;--shadow: 0 8px 26px rgba(0,0,0,.45);--shadow-sm: 0 2px 10px rgba(0,0,0,.35)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #17140f;--panel: #201b14;--panel-2: #2a2318;--border: #392f22;--text: #ece3d3;--muted: #a89a83;--accent: #e06a5b;--accent-ink: #e8867a;--accent-weak: #3a2620;--accent-2: #82a3c0;--grid: #3c2f29;--ink: #ece3d3;--ghost: #2f2820;--shadow: 0 8px 26px rgba(0,0,0,.45);--shadow-sm: 0 2px 10px rgba(0,0,0,.35)}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{overflow-x:hidden}input,select,button{min-width:0}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;background-image:radial-gradient(rgba(120,90,40,.04) 1px,transparent 1px);background-size:22px 22px}a{color:var(--accent-2);text-decoration:none}a:hover{text-decoration:underline}.appbar{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid var(--border)}.appbar-inner{max-width:1120px;margin:0 auto;display:flex;align-items:center;gap:14px;padding:12px 20px}.brand{font-family:var(--font-serif);font-weight:700;font-size:20px;letter-spacing:.3px;display:flex;align-items:center;gap:10px;color:var(--text)}.brand:hover{text-decoration:none}.brand .seal{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;background:var(--accent);color:#fff8f0;border-radius:9px;font-family:var(--font-cjk);font-size:22px;box-shadow:var(--shadow-sm)}nav.tabs{display:flex;gap:2px;flex-wrap:wrap;flex:1}nav.tabs a{color:var(--muted);padding:8px 12px;border-radius:10px;font-size:14px;font-weight:600}nav.tabs a:hover{color:var(--text);background:var(--panel-2);text-decoration:none}nav.tabs a.active{color:var(--accent);background:var(--accent-weak)}.appbar .toggles{display:flex;gap:8px}.iconbtn{cursor:pointer;border:1px solid var(--border);background:var(--panel);color:var(--text);padding:8px 11px;border-radius:10px;font-size:13px;font-weight:700;box-shadow:var(--shadow-sm)}.iconbtn:hover{border-color:var(--accent);color:var(--accent)}main{max-width:1120px;margin:0 auto;padding:26px 20px 90px}h1.page{font-family:var(--font-serif);font-size:28px;margin:2px 0 6px;font-weight:700;letter-spacing:.3px}p.lead{color:var(--muted);margin:0 0 18px}.toolbar{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:13px;box-shadow:var(--shadow)}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.grow{flex:1;min-width:200px}input[type=text],input[type=search]{width:100%;padding:13px 15px;font-size:17px;border-radius:12px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-family:inherit}input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}select{padding:8px 10px;border-radius:10px;border:1px solid var(--border);background:var(--panel);color:var(--text);font:inherit}button{cursor:pointer;border:1px solid var(--border);background:var(--panel);color:var(--text);padding:11px 15px;border-radius:12px;font-size:14px;font-weight:600;font-family:inherit;transition:transform .12s,border-color .12s,background .12s;box-shadow:var(--shadow-sm)}button:hover{border-color:var(--accent);color:var(--accent)}button:active{transform:translateY(1px)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff8f0}button.primary:hover{background:var(--accent-ink);color:#fff8f0}.ctrl{display:flex;gap:18px;flex-wrap:wrap;align-items:center;color:var(--muted);font-size:13px}.ctrl label{display:flex;align-items:center;gap:7px;cursor:pointer;user-select:none}input[type=range]{accent-color:var(--accent)}input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{padding:7px 13px;border-radius:999px;background:var(--panel);border:1px solid var(--border);font-family:var(--font-cjk);font-size:17px;cursor:pointer;box-shadow:var(--shadow-sm)}.chip:hover{border-color:var(--accent);color:var(--accent)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px;margin-top:22px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;align-items:center;gap:11px;box-shadow:var(--shadow)}.stage{position:relative;width:200px;height:200px}.stage svg.grid{position:absolute;inset:0;width:200px;height:200px;pointer-events:none}.stage .target{position:absolute;inset:0}.info{font-size:14px;color:var(--muted);text-align:center;min-height:20px}.info b{color:var(--accent);font-family:var(--font-sans)}.card-btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.card-btns button{padding:8px 11px;font-size:13px}.missing{width:200px;height:200px;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);font-size:13px;border:1px dashed var(--border);border-radius:12px;padding:10px}.hz-svg{display:block}.hero{background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--border);border-radius:22px;padding:34px 28px;box-shadow:var(--shadow);position:relative;overflow:hidden}.hero:after{content:"字";position:absolute;right:-12px;bottom:-46px;font-family:var(--font-cjk);font-size:220px;color:var(--accent);opacity:.06;line-height:1;pointer-events:none}.hero h1{font-family:var(--font-serif);font-size:clamp(26px,5vw,40px);margin:0 0 8px;font-weight:700;letter-spacing:.5px}.hero p{color:var(--muted);margin:0 0 18px;max-width:46ch}.hero-search{display:flex;gap:10px;max-width:460px}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin-top:22px}.tile{display:flex;gap:14px;align-items:flex-start;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);color:var(--text)}.tile:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-3px);transition:.15s;box-shadow:var(--shadow)}.tile .ic{flex:none;width:46px;height:46px;display:flex;align-items:center;justify-content:center;font-size:24px;background:var(--accent-weak);border-radius:12px;font-family:var(--font-cjk)}.tile h3{font-family:var(--font-serif);margin:2px 0 4px;font-size:17px}.tile p{margin:0;color:var(--muted);font-size:14px}.count-note{margin-top:22px;color:var(--muted);font-size:14px}.hits{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:11px;margin-top:16px}.hit{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:10px 8px;text-align:center;cursor:pointer;box-shadow:var(--shadow-sm)}.hit:hover{border-color:var(--accent);transform:translateY(-2px);transition:.12s}.hit .c{font-family:var(--font-cjk);font-size:36px;line-height:1.1}.hit .p{font-size:12px;color:var(--muted)}.rad-groups{margin-top:16px}.rad-group h4{font-family:var(--font-serif);margin:16px 0 8px;color:var(--muted);font-size:13px;font-weight:700}.rad-list{display:flex;flex-wrap:wrap;gap:7px}.rad{padding:7px 10px;border-radius:11px;border:1px solid var(--border);background:var(--panel);cursor:pointer;font-family:var(--font-cjk);font-size:19px;box-shadow:var(--shadow-sm)}.rad:hover{border-color:var(--accent);color:var(--accent)}.rad.active{border-color:var(--accent);background:var(--accent);color:#fff8f0}.rad small{font-size:10px;opacity:.7;font-family:var(--font-sans)}.detail-head{display:flex;gap:22px;flex-wrap:wrap;align-items:flex-start}.detail-meta{flex:1;min-width:240px}.detail-meta dl{display:grid;grid-template-columns:max-content 1fr;gap:8px 16px;margin:0}.detail-meta dt{color:var(--muted);font-weight:600}.section-title{font-family:var(--font-serif);margin:30px 0 12px;font-size:18px;font-weight:700;padding-bottom:8px;border-bottom:2px solid var(--accent-weak)}h1.page.glyph{font-family:var(--font-cjk);font-size:40px}.comp-formula{font-size:22px;line-height:2;margin:6px 0 18px}.comp-formula .cf-part{font-family:var(--font-cjk);background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:3px 10px;white-space:nowrap;box-shadow:var(--shadow-sm)}.comp-formula .cf-part i{font-family:var(--font-sans);font-size:14px;color:var(--muted);font-style:normal}.comp-formula .cf-target{border-color:var(--accent);color:var(--accent)}.comp-formula b{color:var(--muted);margin:0 3px}.comp-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:13px}.comp{position:relative;display:block;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:14px;text-align:center;color:var(--text);box-shadow:var(--shadow)}a.comp:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-3px);transition:.15s}.comp.comp-off{opacity:.65}.comp .spk{position:absolute;top:7px;right:7px;padding:3px 7px;font-size:12px;line-height:1;border-radius:9px;box-shadow:none}.comp .g{font-family:var(--font-cjk);font-size:46px;line-height:1.1}.comp .r{font-weight:700;margin-top:2px;color:var(--accent)}.comp .m{color:var(--muted);font-size:13px;margin-top:5px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.comp .note{color:var(--accent-2);font-size:12px;margin-top:5px}.diagram{display:grid;gap:9px;margin-top:18px}.diagram-cell{background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:5px;box-shadow:var(--shadow-sm)}.diagram-cell .hz-svg{width:100%;height:auto}.hw-wrap{display:flex;gap:20px;flex-wrap:wrap;margin-top:16px}#hw-pad{touch-action:none;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.hw-sugg{flex:1;min-width:220px}.hw-sugg h3{font-family:var(--font-serif)}.ws-row{display:flex;gap:0;border-left:1px solid var(--grid)}.ws-cell{border:1px solid var(--grid);border-left:0}.ws-sheet{background:#fff;color:#111;padding:16px;border-radius:10px;box-shadow:var(--shadow)}.ws-line{display:flex;align-items:center;gap:10px;margin-bottom:6px}.ws-pinyin{width:62px;font-size:13px;color:#444}.tabbar,.sheet,.sheet-backdrop{display:none}@media (max-width: 720px){nav.tabs{display:none}main{padding-bottom:100px}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(12px);border-top:1px solid var(--border);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}.tabbar a,.tabbar button{flex:1 1 0;min-width:0;background:none;border:none;box-shadow:none;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;font-weight:600;padding:6px 2px;border-radius:10px;cursor:pointer;font-family:inherit}.tabbar a .ti,.tabbar button .ti{font-size:20px;line-height:1}.tabbar .tl{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tabbar a.active{color:var(--accent)}.tabbar a:hover,.tabbar button:hover{color:var(--accent);text-decoration:none}.sheet-backdrop{display:block;position:fixed;inset:0;z-index:45;background:#0000006b;opacity:0;pointer-events:none;transition:opacity .2s}.sheet-backdrop.open{opacity:1;pointer-events:auto}.sheet{display:block;position:fixed;left:0;right:0;bottom:0;z-index:46;background:var(--panel);border-radius:20px 20px 0 0;border-top:1px solid var(--border);padding:10px 14px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -10px 30px #00000040;transform:translateY(110%);transition:transform .22s ease}.sheet-backdrop.open+.sheet{transform:translateY(0)}.sheet .grip{width:42px;height:5px;background:var(--border);border-radius:3px;margin:6px auto 12px}.sheet a{display:flex;align-items:center;gap:12px;padding:13px 10px;color:var(--text);border-radius:12px;font-weight:600}.sheet a:hover{background:var(--panel-2);text-decoration:none}.sheet a .ti{font-size:20px;width:26px;text-align:center}.detail-head{gap:16px}.hero{padding:26px 20px}}@media print{.appbar,.tabbar,.toolbar,.no-print,footer{display:none!important}main{padding:0;max-width:none}.ws-sheet{border-radius:0;padding:0;box-shadow:none}body{background:#fff;background-image:none}}footer{max-width:1120px;margin:0 auto;padding:22px 20px;color:var(--muted);font-size:12px;border-top:1px solid var(--border)}footer a{color:var(--accent-2)}
