.modal-mask[data-v-70bf8965]{z-index:var(--z-modal,100);background:#00000061;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal[data-v-70bf8965]{background:var(--bg);border:1px solid var(--border);border-radius:12px;width:100%;max-width:460px;max-height:86vh;padding:18px 20px 22px;overflow:auto}.modal-head[data-v-70bf8965]{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.modal-head h2[data-v-70bf8965]{margin:0;font-size:16px}.icon-btn[data-v-70bf8965]{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:5px;padding:5px;display:inline-flex}.icon-btn[data-v-70bf8965]:hover{color:var(--text);background:var(--bg-muted)}.block[data-v-70bf8965]{border-top:1px solid var(--border);margin-top:14px;padding-top:14px}.block h3[data-v-70bf8965]{margin:0 0 8px;font-size:13px;font-weight:600}.theme-row[data-v-70bf8965]{gap:8px;display:flex}.theme-btn[data-v-70bf8965]{height:32px;font:inherit;color:var(--text-dim);background:var(--bg);border:1px solid var(--border);cursor:pointer;border-radius:6px;flex:1;font-size:12px}.theme-btn.active[data-v-70bf8965]{color:var(--primary-btn);border-color:var(--primary-btn);background:color-mix(in srgb, var(--primary-btn) 8%, transparent)}.model-line[data-v-70bf8965]{align-items:center;gap:8px;margin:0 0 6px;font-size:13px;display:flex}.model-line code[data-v-70bf8965]{background:var(--bg-muted);border-radius:4px;padding:2px 6px;font-size:12px}.muted[data-v-70bf8965]{color:var(--text-dim);margin:0 0 6px;font-size:12px;line-height:1.7}.muted a[data-v-70bf8965]{color:var(--primary-btn)}@media (max-width:720px){.modal-mask[data-v-70bf8965]{padding:12px}.modal[data-v-70bf8965]{max-height:90dvh;padding:16px}.theme-btn[data-v-70bf8965]{height:40px}}.fb-mask[data-v-ad8a4784]{z-index:80;background:#0000006b;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.fb[data-v-ad8a4784]{border:1px solid var(--line);background:var(--bg);border-radius:12px;width:min(520px,100%);padding:18px 20px 16px;box-shadow:0 18px 50px #00000038}.fb__head[data-v-ad8a4784]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.fb__head h2[data-v-ad8a4784]{margin:0;font-size:15px}.fb__close[data-v-ad8a4784]{color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:4px;display:inline-flex}.fb__close[data-v-ad8a4784]:hover{color:var(--text);background:var(--bg-muted)}.fb__kinds[data-v-ad8a4784]{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.fb__kind[data-v-ad8a4784]{border:1px solid var(--line);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:999px;padding:5px 10px;font-size:12px}.fb__kind--on[data-v-ad8a4784]{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.fb__body[data-v-ad8a4784],.fb__contact[data-v-ad8a4784]{box-sizing:border-box;border:1px solid var(--line);width:100%;color:var(--text);font:inherit;background:var(--bg-muted);resize:vertical;border-radius:7px;padding:9px 10px;font-size:13px}.fb__contact[data-v-ad8a4784]{resize:none;margin-top:8px}.fb__body[data-v-ad8a4784]:focus,.fb__contact[data-v-ad8a4784]:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.fb__error[data-v-ad8a4784]{color:#d64545;margin:8px 0 0;font-size:12px}.fb__foot[data-v-ad8a4784]{color:var(--text-dim);justify-content:space-between;align-items:center;margin-top:10px;font-size:11px;display:flex}.fb__submit[data-v-ad8a4784]{color:#fff;background:var(--accent);cursor:pointer;border:0;border-radius:7px;padding:7px 16px;font-size:13px}.fb__submit[data-v-ad8a4784]:disabled{opacity:.55;cursor:not-allowed}.fb__done[data-v-ad8a4784]{text-align:center;padding:18px 0 8px}.fb__done p[data-v-ad8a4784]{color:var(--text-dim);margin:0 0 16px;font-size:13px}@media (max-width:720px){.fb-mask[data-v-ad8a4784]{padding:12px}.fb[data-v-ad8a4784]{max-height:90dvh;padding:16px;overflow-y:auto}.fb__body[data-v-ad8a4784],.fb__contact[data-v-ad8a4784]{font-size:16px}.fb__submit[data-v-ad8a4784]{height:40px;padding:0 18px}}.toast-host[data-v-bcc878d3]{top:calc(var(--header-h) + 12px);z-index:var(--z-toast);pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast-host__item[data-v-bcc878d3]{border-radius:var(--r-pill);background:var(--text);max-width:480px;color:var(--bg);box-shadow:var(--shadow-lg);animation:toast-in var(--dur) var(--ease);padding:9px 18px;font-size:13px;line-height:1.5}@media (max-width:720px){.toast-host[data-v-bcc878d3]{top:calc(var(--header-h) + 8px);width:calc(100vw - 24px)}.toast-host__item[data-v-bcc878d3]{text-align:center;max-width:100%}}.app[data-v-9f59eb5a]{min-height:100vh;flex-direction:column;min-height:100dvh;display:flex}.app-header[data-v-9f59eb5a]{z-index:var(--z-sticky);background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0}.app-header__inner[data-v-9f59eb5a]{height:var(--header-h);padding-left:max(var(--page-pad), env(safe-area-inset-left));padding-right:max(var(--page-pad), env(safe-area-inset-right));justify-content:space-between;align-items:center;gap:16px;display:flex}.app-brand[data-v-9f59eb5a]{white-space:nowrap;flex:0 auto;align-items:center;gap:10px;min-width:0;text-decoration:none;display:inline-flex;overflow:hidden}.app-brand__mark[data-v-9f59eb5a]{width:22px;height:22px;color:var(--primary-btn);flex:none}.app-title[data-v-9f59eb5a]{letter-spacing:-.1px;min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;font-size:14px;font-weight:600;overflow:hidden}.app-subtitle[data-v-9f59eb5a]{color:var(--text-dim);border-left:1px solid var(--border);white-space:nowrap;flex:none;padding-left:10px;font-size:12px}.app-actions[data-v-9f59eb5a]{white-space:nowrap;flex:none;align-items:center;gap:2px;margin-left:auto;margin-right:-10px;display:flex}.app-settings[data-v-9f59eb5a]{font:inherit;white-space:nowrap;color:var(--text-dim);cursor:pointer;transition:color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);background:0 0;border:1px solid #0000;border-radius:6px;flex:none;align-items:center;gap:5px;padding:5px 10px;font-size:13px;text-decoration:none;display:inline-flex}.app-settings[data-v-9f59eb5a]:hover{color:var(--text);background:var(--bg-muted)}.app-main[data-v-9f59eb5a]{flex:1}.app-user[data-v-9f59eb5a]{min-width:0;max-width:120px;color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;margin:0 4px 0 8px;font-size:13px;overflow:hidden}.app-quota[data-v-9f59eb5a]{color:var(--text-dim);white-space:nowrap;flex:none;margin-right:4px;font-size:11px}.app-footer[data-v-9f59eb5a]{padding:18px var(--page-pad) 22px;color:var(--text-dim);border-top:1px solid var(--border);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 16px;font-size:11px;display:flex}.app-footer__links[data-v-9f59eb5a]{gap:12px;display:inline-flex}.app-footer a[data-v-9f59eb5a],.app-footer__feedback[data-v-9f59eb5a]{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:none}.app-footer__feedback[data-v-9f59eb5a]:hover,.app-footer a[data-v-9f59eb5a]:hover{color:var(--text)}@media (max-width:1120px){.app-header__inner[data-v-9f59eb5a]{gap:12px}.app-actions[data-v-9f59eb5a]{gap:0}.app-settings[data-v-9f59eb5a]{padding:5px 8px}}@media (max-width:960px){.app-subtitle[data-v-9f59eb5a]{display:none}}@media (max-width:860px){.app-user[data-v-9f59eb5a]{display:none}}@media (max-width:720px){.app-header__inner[data-v-9f59eb5a]{padding-left:max(12px, env(safe-area-inset-left));padding-right:max(12px, env(safe-area-inset-right));gap:10px}.app-brand[data-v-9f59eb5a]{gap:8px}.app-title[data-v-9f59eb5a]{font-size:15px}.app-brand__mark[data-v-9f59eb5a]{width:24px;height:24px}.app-quota[data-v-9f59eb5a]{display:none}.app-actions[data-v-9f59eb5a]{gap:2px;margin-right:-7px}.app-settings[data-v-9f59eb5a]{border-radius:8px;justify-content:center;width:38px;height:38px;padding:0}.app-action__label[data-v-9f59eb5a]{display:none}.app-footer[data-v-9f59eb5a]{padding:16px var(--page-pad) calc(18px + env(safe-area-inset-bottom));text-align:center;gap:8px 14px;line-height:1.6}}@media (max-width:360px){.app-header__inner[data-v-9f59eb5a]{padding-left:max(10px, env(safe-area-inset-left));padding-right:max(10px, env(safe-area-inset-right));gap:8px}.app-settings[data-v-9f59eb5a]{width:34px;height:34px}.app-title[data-v-9f59eb5a]{font-size:14px}.app-brand__mark[data-v-9f59eb5a]{width:22px;height:22px}}:root{--bg:#fff;--bg-subtle:#fafafa;--bg-muted:#f4f4f5;--text:#18181b;--text-secondary:#3f3f46;--text-dim:#71717a;--text-faint:#a1a1aa;--border:#e4e4e7;--border-strong:#d4d4d8;--primary:#5b5bd6;--primary-strong:#4f4fc9;--primary-hover:#4343b5;--primary-btn:#5b5bd6;--primary-btn-hover:#4f4fc9;--primary-bg:#f4f4fe;--primary-bg-strong:#e7e7fc;--primary-border:#cdcdf6;--primary-soft:#a9a9ee;--tag-level-text:#4f52d4;--tag-style-text:#7c3aed;--mastery-red:#ef4444;--mastery-yellow:#f59e0b;--mastery-green:#22c55e;--red-bg:#fef2f2;--amber-bg:#fffbeb;--amber-border:#fde68a;--amber-text:#b45309;--green-strong:#16a34a;--green-hover:#15803d;--green-bg:#f0fdf4;--green-border:#bbf7d0;--red-tint:#fef2f2;--amber-tint:#fffbeb;--green-tint:#f0fdf4;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-pill:999px;--shadow-xs:0 1px 1px #0f172a0a;--shadow-sm:0 1px 2px #0f172a0f;--shadow-md:0 1px 2px #0f172a0a, 0 4px 12px #0f172a14;--shadow-lg:0 4px 8px #0f172a0f, 0 12px 32px #0f172a1f;--shadow-xl:0 8px 16px #0f172a14, 0 24px 56px #0f172a29;--shadow-drawer:-8px 0 24px #0f172a14;--mask-bg:#0f172a66;--ring-primary:0 0 0 3px #5b5bd624;--ink-rgb:15 23 42;--primary-rgb:91 91 214;--z-sticky:100;--z-drawer:200;--z-modal:300;--z-toast:400;--header-h:57px;--page-max:1200px;--page-pad:32px;--ease:cubic-bezier(.4, 0, .2, 1);--dur-fast:.15s;--dur:.25s;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0}::selection{background:var(--primary-bg-strong)}.btn{font:inherit;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);white-space:nowrap;cursor:pointer;transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);justify-content:center;align-items:center;gap:6px;padding:7px 16px;font-size:13px;font-weight:500;line-height:1.4;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--border-strong);background:var(--bg-subtle)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{box-shadow:0 0 0 3px rgb(var(--primary-rgb) / 25%);outline:none}.btn--primary{background:var(--primary-btn);border-color:var(--primary-btn);color:#fff}.btn--primary:hover:not(:disabled){background:var(--primary-btn-hover);border-color:var(--primary-btn-hover)}.btn--success{background:var(--green-strong);border-color:var(--green-strong);color:#fff}.btn--success:hover:not(:disabled){background:var(--green-hover);border-color:var(--green-hover)}.btn--sm{padding:5px 10px;font-size:12px}.btn--lg{border-radius:10px;padding:10px 22px;font-size:14px;font-weight:600}.mask{z-index:var(--z-modal);background:var(--mask-bg);animation:mask-in var(--dur-fast) var(--ease);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@keyframes mask-in{0%{opacity:0}}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:.9s linear infinite spin}.lucide{vertical-align:-2px}.spinner{border:2px solid var(--border-strong);border-top-color:var(--primary);border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}.skeleton{border-radius:var(--r-md);background:linear-gradient(90deg, var(--bg-muted) 25%, var(--bg-subtle) 37%, var(--bg-muted) 63%);background-size:400% 100%;animation:1.4s infinite skeleton-shine}@keyframes skeleton-shine{0%{background-position:100%}to{background-position:0}}button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}[tabindex]:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.chip:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.btn:focus-visible{outline:none}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f141a;--bg-subtle:#151b23;--bg-muted:#1c242e;--text:#e8edf3;--text-secondary:#c3cbd6;--text-dim:#a2adbc;--text-faint:#7d8797;--border:#262e39;--border-strong:#36404d;--primary:#9d9df5;--primary-strong:#9d9df5;--primary-hover:#babaf8;--primary-btn:#5b5bd6;--primary-btn-hover:#6c6ce0;--primary-bg:#1a1a33;--primary-bg-strong:#222247;--primary-border:#343466;--primary-soft:#4d4da8;--tag-level-text:#aeb6fb;--tag-style-text:#c9b8fa;--mastery-red:#f87171;--mastery-yellow:#fbbf24;--mastery-green:#4ade80;--red-bg:#2a1517;--red-tint:#1f1214;--amber-bg:#241b0d;--amber-tint:#1e170c;--amber-border:#4a3a16;--amber-text:#f0b24a;--green-strong:#16a34a;--green-hover:#4ade80;--green-bg:#12261a;--green-tint:#102017;--green-border:#1f4a2f;--shadow-xs:0 1px 1px #0000004d;--shadow-sm:0 1px 2px #0006;--shadow-md:0 1px 2px #00000059, 0 4px 12px #00000073;--shadow-lg:0 4px 8px #0006, 0 12px 32px #0000008c;--shadow-xl:0 8px 16px #00000073, 0 24px 56px #000000a6;--shadow-drawer:-8px 0 24px #0000008c;--mask-bg:#000000a6;--ring-primary:0 0 0 3px #9d9df540;--ink-rgb:0 0 0;--primary-rgb:157 157 245;--vf-node-bg:#151b23;--vf-node-text:#e8edf3;--vf-connection-path:#3d4756;--vf-handle:#5b6675}html[data-theme=dark] body{background:var(--bg)}html[data-theme=dark] ::selection{background:#2e2e66}html[data-theme=dark] .vue-flow__controls-button{background:var(--bg-subtle);border-bottom:1px solid var(--border);color:var(--text-dim);fill:currentColor}html[data-theme=dark] .vue-flow__controls-button:hover{background:var(--bg-muted);color:var(--text)}html[data-theme=dark] .vue-flow__handle{background:var(--vf-handle)}html[data-theme=dark] .vue-flow__edge-textbg{fill:var(--bg-subtle)}html[data-theme=dark] input,html[data-theme=dark] textarea,html[data-theme=dark] select{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}input:focus-visible{border-color:var(--primary);box-shadow:var(--ring-primary);outline:none}textarea:focus-visible{border-color:var(--primary);box-shadow:var(--ring-primary);outline:none}@media (max-width:720px){:root{--header-h:54px;--page-pad:16px}html{text-size-adjust:100%}body{overflow-x:clip}}
