:root{--bg:#fff;--text:#1f2329;--muted:#8a8f99;--border:#e5e6eb;--card-bg:#fff;--btn-bg:#f7f8fa;--hover-bg:#f2f3f5;--stat-bg:#f7f8fa;--accent:#165dff;--accent-bg:#165dff1f;--success:#18a058;--success-bg:#18a0581f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#16171d;--text:#e6e6e6;--muted:#9ca3af;--border:#2e303a;--card-bg:#1d1f27;--btn-bg:#2a2c36;--hover-bg:#262832;--stat-bg:#1f2028;--accent:#4080ff;--accent-bg:#4080ff2e;--success:#3ddc84;--success-bg:#3ddc842e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#16171d;--text:#e6e6e6;--muted:#9ca3af;--border:#2e303a;--card-bg:#1d1f27;--btn-bg:#2a2c36;--hover-bg:#262832;--stat-bg:#1f2028;--accent:#4080ff;--accent-bg:#4080ff2e;--success:#3ddc84;--success-bg:#3ddc842e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}body{color:var(--text);background:var(--bg);min-height:100vh;font:15px/1.5 system-ui,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,sans-serif}#app{min-height:100vh}main{max-width:1200px;margin:0 auto;padding:24px}.view h2{margin:0 0 16px;font-size:22px;font-weight:600}.placeholder{color:var(--muted)}input,textarea{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;font-family:inherit;font-size:14px}input:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.ds-split{grid-template-columns:minmax(220px,300px) 1fr;gap:16px;height:calc(100vh - 220px);min-height:440px;display:grid}.ds-pane{border:1px solid var(--border);background:var(--card-bg);border-radius:8px;padding:8px;overflow:auto}.ds-pane.ds-detail-pane{flex-direction:column;padding:0;display:flex;overflow:hidden}.ds-detail-pane>.ds-empty{margin:auto}.ds-group{color:var(--muted);letter-spacing:.04em;padding:8px 8px 4px;font-size:12px;font-weight:600}.ds-list{margin:0;padding:0;list-style:none}.ds-item{cursor:pointer;border-radius:6px;padding:10px 12px;transition:background .15s}.ds-item:hover{background:var(--hover-bg)}.ds-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.ds-item.active{background:var(--hover-bg);box-shadow:inset 3px 0 0 var(--accent)}.ds-item-name{font-weight:600}.ds-item-meta{color:var(--muted);margin-top:2px;font-size:12px}.ds-empty{text-align:center;color:var(--muted);padding:40px 24px}.ds-detail{flex-direction:column;flex:1;min-height:0;padding:16px;display:flex}.ds-detail-head,.ds-stat-row{flex-shrink:0}.ds-detail-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.ds-detail-title{margin:0;font-size:17px;font-weight:600}.ds-actions{flex-wrap:wrap;gap:8px;display:flex}.ds-stat-row{background:var(--stat-bg);border-radius:6px;flex-wrap:wrap;gap:16px;margin-bottom:12px;padding:8px 10px;font-size:14px;display:flex}.ds-bad{color:#d33}.ds-ok{color:#2a8}.ds-muted{color:var(--muted)}.ds-errors{color:#d33;margin:0 0 12px;padding-left:20px;font-size:13px}.ds-table-wrap{flex:auto;min-height:0;overflow:auto}.ds-table{border-collapse:collapse;width:100%;font-size:13px}.ds-table th,.ds-table td{border-bottom:1px solid var(--border);text-align:left;padding:5px 8px}.ds-table th{background:var(--card-bg);color:var(--muted);font-weight:500;position:sticky;top:0}.ds-preview{white-space:pre-wrap;word-break:break-word;background:var(--stat-bg);border-radius:6px;flex:auto;min-height:0;margin:0;padding:12px;font-family:inherit;font-size:14px;line-height:1.8;overflow:auto}.ds-btn{border:1px solid var(--border);background:var(--btn-bg);color:inherit;cursor:pointer;border-radius:6px;padding:6px 12px;font-size:13px}.ds-btn:hover:not(:disabled){background:var(--hover-bg)}.ds-btn:disabled{opacity:.5;cursor:not-allowed}.ds-btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.ds-btn.danger{color:#d33;border-color:#dd333380}.ds-btn.mini{padding:2px 8px;font-size:12px}@media (width<=760px){.ds-split{grid-template-columns:1fr;height:auto}.ds-pane{max-height:45vh}}.topbar[data-v-a70f3379]{border-bottom:1px solid var(--border);background:var(--card-bg);align-items:center;gap:24px;height:56px;padding:0 24px;display:flex}.brand[data-v-a70f3379]{font-weight:700}nav[data-v-a70f3379]{gap:4px;display:flex}nav a[data-v-a70f3379]{color:var(--muted);border-radius:6px;padding:6px 12px;text-decoration:none}nav a[data-v-a70f3379]:hover{background:var(--hover-bg)}nav a.router-link-active[data-v-a70f3379]{color:var(--accent);background:var(--hover-bg)}.modal-overlay[data-v-97a6d108]{z-index:1000;background:#00000073;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-panel[data-v-97a6d108]{border:1px solid var(--border);background:var(--card-bg);border-radius:10px;flex-direction:column;max-width:100%;max-height:88vh;display:flex;overflow:hidden;box-shadow:0 12px 40px #00000047}.modal-panel[data-v-97a6d108]:focus{outline:none}.modal-header[data-v-97a6d108]{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.modal-title[data-v-97a6d108]{margin:0;font-size:16px;font-weight:600}.modal-close[data-v-97a6d108]{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:22px;line-height:1}.modal-close[data-v-97a6d108]:hover{background:var(--hover-bg);color:var(--text)}.modal-body[data-v-97a6d108]{padding:16px;overflow:auto}.modal-footer[data-v-97a6d108]{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}@media (width<=760px){.modal-overlay[data-v-97a6d108]{padding:12px}}.field[data-v-ee9786ae]{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.field>label[data-v-ee9786ae]{font-size:14px;font-weight:500}.text-input[data-v-ee9786ae],.src-area[data-v-ee9786ae]{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);border-radius:6px;padding:8px;font-size:14px}.src-area[data-v-ee9786ae]{resize:vertical;height:200px;font-family:ui-monospace,monospace;font-size:13px}.summary[data-v-ee9786ae]{margin-top:4px}.summary .ds-table-wrap[data-v-ee9786ae]{max-height:260px}.ds-head[data-v-5d52a38b]{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.ds-count[data-v-5d52a38b]{color:var(--muted);font-size:13px}.ds-empty.small[data-v-5d52a38b]{text-align:left;padding:8px 12px}.field[data-v-3bfd1e10]{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.field>label[data-v-3bfd1e10]{font-size:14px;font-weight:500}.text-input[data-v-3bfd1e10],.src-area[data-v-3bfd1e10]{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);border-radius:6px;padding:8px;font-size:14px}.src-area[data-v-3bfd1e10]{resize:vertical;min-height:160px;font-family:inherit}.ds-head[data-v-bdfa96e7]{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.ds-count[data-v-bdfa96e7]{color:var(--muted);font-size:13px}.ds-empty.small[data-v-bdfa96e7]{text-align:left;padding:8px 12px}.tabs[data-v-a0f0bce7]{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.tab[data-v-a0f0bce7]{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 16px;font-size:15px}.tab[data-v-a0f0bce7]:hover{color:var(--text)}.tab.active[data-v-a0f0bce7]{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.records-panel[data-v-12896889]{font-size:14px}.empty[data-v-12896889]{color:var(--muted);margin:0}.toolbar[data-v-12896889]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.count[data-v-12896889]{color:var(--muted);font-size:13px}.table-wrap[data-v-12896889]{overflow-x:auto}.records[data-v-12896889]{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.records th[data-v-12896889],.records td[data-v-12896889]{border-bottom:1px solid var(--border);text-align:center;white-space:nowrap;padding:6px 10px}.records th[data-v-12896889]{color:var(--muted);font-size:13px;font-weight:500}.records tbody tr[data-v-12896889]:hover{background:var(--hover-bg)}.records .dict[data-v-12896889]{text-overflow:ellipsis;max-width:220px;overflow:hidden}.badge[data-v-12896889]{border-radius:999px;padding:1px 8px;font-size:12px;display:inline-block}.th-filter[data-v-12896889]{color:inherit;background:var(--bg);border:1px solid var(--border);border-radius:6px;max-width:96px;padding:1px 2px;font-family:inherit;font-size:13px}.badge.pass[data-v-12896889]{background:var(--success-bg);color:var(--success)}.badge.fail[data-v-12896889]{color:#d33;background:#d333331f}.pager[data-v-12896889]{gap:8px;margin-top:10px;display:flex}button[data-v-12896889]{border:1px solid var(--border);background:var(--btn-bg);color:inherit;cursor:pointer;border-radius:6px;padding:6px 12px}button[data-v-12896889]:disabled{opacity:.5;cursor:not-allowed}.clear[data-v-12896889]{font-size:13px}.view[data-v-07a47940]{max-width:900px;margin:0 auto;padding:2rem}.title-text[data-v-07a47940]{color:var(--muted);margin-left:.6rem;font-size:.8rem;font-weight:400}.setup[data-v-07a47940]{flex-direction:column;gap:1.5rem;display:flex}.field[data-v-07a47940]{flex-direction:column;gap:.5rem;display:flex}.field>label[data-v-07a47940]{font-weight:500}.field select[data-v-07a47940],.field textarea[data-v-07a47940],.field input[type=number][data-v-07a47940],.field input[type=text][data-v-07a47940]{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:4px;padding:.5rem;font-size:1rem}.field input[type=number][data-v-07a47940]{max-width:10rem}.field input[type=number][data-v-07a47940]:disabled{opacity:.6;cursor:not-allowed}.field-hint[data-v-07a47940]{color:var(--muted);margin:0;font-size:.85rem}.error-text[data-v-07a47940]{color:#dc3545}.field textarea[data-v-07a47940]{resize:vertical;font-family:inherit}.radio-row[data-v-07a47940]{flex-direction:column;gap:.5rem;display:flex}.radio[data-v-07a47940],.checkbox[data-v-07a47940]{cursor:pointer;align-items:center;gap:.5rem;font-weight:400;display:flex}.btn[data-v-07a47940]{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:4px;padding:.75rem 1.5rem;font-size:1rem;transition:all .2s}.btn[data-v-07a47940]:hover:not(:disabled){background:var(--hover-bg)}.btn[data-v-07a47940]:disabled{opacity:.5;cursor:not-allowed}.btn.primary[data-v-07a47940]{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary[data-v-07a47940]:hover:not(:disabled){opacity:.9}.btn.danger[data-v-07a47940],.btn.danger[data-v-07a47940]:hover:not(:disabled){color:#fff;background:#d33;border-color:#d33}.error[data-v-07a47940]{color:#dc3545;background:#dc35451a;border:1px solid #dc3545;border-radius:4px;margin-top:.5rem;padding:.75rem}.practice[data-v-07a47940]{flex-direction:column;gap:1.5rem;display:flex}.toolbar[data-v-07a47940]{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.mode-badge[data-v-07a47940]{background:var(--accent);color:#fff;border-radius:4px;padding:.2rem .6rem;font-size:.85rem}.target-inline[data-v-07a47940]{border:1px solid var(--border);background:var(--stat-bg);cursor:text;border-radius:4px;align-items:center;gap:.4rem;padding:.2rem .6rem;font-size:.9rem;display:flex}.target-inline>span[data-v-07a47940]{color:var(--muted)}.target-inline input[data-v-07a47940]{border:1px solid var(--border);background:var(--bg);width:4.5rem;color:var(--text);border-radius:4px;padding:.2rem .4rem;font-size:.9rem}.text-display[data-v-07a47940]{background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-content:flex-start;gap:.1rem;min-height:120px;padding:1.5rem;font-family:Courier New,monospace;font-size:2rem;line-height:2.5rem;display:flex}.text-display.centered[data-v-07a47940]{text-align:center;justify-content:center}.cell[data-v-07a47940]{flex-direction:column;align-items:center;display:inline-flex}.char[data-v-07a47940]{border-radius:4px;padding:.25rem .15rem;transition:all .15s;display:inline-block}.char.status-pending[data-v-07a47940]{color:var(--text)}.char.status-correct[data-v-07a47940]{color:var(--accent);background:var(--accent-bg)}.char.status-wrong[data-v-07a47940]{color:#dc3545;background:#dc354526;text-decoration:line-through}.char.status-missing[data-v-07a47940]{color:var(--muted);opacity:.5}.char.current[data-v-07a47940]{outline:2px solid var(--accent);outline-offset:-2px}.hint[data-v-07a47940]{color:var(--muted);white-space:nowrap;min-height:1rem;font-family:ui-monospace,monospace;font-size:.7rem;line-height:1rem}.text-display.with-hints .cell[data-v-07a47940]{width:1.5em}.text-display.with-hints .hint[data-v-07a47940]{white-space:normal;overflow-wrap:break-word;text-align:center}.buffer-input[data-v-07a47940]{border:1px solid var(--border);background:var(--bg);min-width:140px;color:var(--accent);border-radius:4px;flex:1;padding:.35rem .5rem;font-family:Courier New,monospace;font-size:1.25rem;font-weight:500}.buffer-input[data-v-07a47940]:focus{outline:2px solid var(--accent);outline-offset:-2px}.buffer-input.centered[data-v-07a47940]{text-align:center}.buffer-input[data-v-07a47940]::placeholder{color:#e1e1e1}.buffer[data-v-07a47940]{background:var(--bg);border:1px solid var(--border);border-radius:4px;align-items:center;gap:1rem;padding:1rem;font-family:Courier New,monospace;font-size:1.25rem;display:flex}.buffer .label[data-v-07a47940]{color:var(--muted);font-size:.9rem}.buffer .value[data-v-07a47940]{color:var(--accent);min-width:100px;font-weight:500}.stats[data-v-07a47940]{background:var(--bg);border:1px solid var(--border);border-radius:4px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem;padding:1rem;display:grid}.stat[data-v-07a47940]{text-align:center;flex-direction:column;align-items:center;gap:.25rem;display:flex}.stat-label[data-v-07a47940]{color:var(--muted);font-size:.85rem}.stat-value[data-v-07a47940]{color:var(--accent);font-size:1.25rem;font-weight:600}.completion[data-v-07a47940]{background:var(--accent-bg);border:2px solid var(--accent);text-align:center;border-radius:8px;padding:1.5rem}.completion h3[data-v-07a47940]{color:var(--accent);margin:0 0 .5rem}.completion p[data-v-07a47940]{margin:0;font-size:1.1rem}.view[data-v-7c44e8d1]{max-width:760px;margin:0 auto}.card[data-v-7c44e8d1]{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;margin-bottom:1.25rem;padding:1.25rem 1.5rem}.card h3[data-v-7c44e8d1]{margin:0 0 .25rem;font-size:1.05rem;font-weight:600}.card-hint[data-v-7c44e8d1]{color:var(--muted);margin:0 0 1rem;font-size:.85rem}.field[data-v-7c44e8d1]{margin-bottom:1rem}.field[data-v-7c44e8d1]:last-child{margin-bottom:0}.field-label[data-v-7c44e8d1]{margin-bottom:.5rem;font-weight:500;display:block}.radio-col[data-v-7c44e8d1]{flex-direction:column;gap:.5rem;display:flex}.radio[data-v-7c44e8d1],.checkbox[data-v-7c44e8d1]{cursor:pointer;align-items:flex-start;gap:.5rem;font-weight:400;line-height:1.5;display:flex}.radio input[data-v-7c44e8d1],.checkbox input[data-v-7c44e8d1]{margin-top:.2rem}.grid-2[data-v-7c44e8d1]{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;display:grid}input[type=number][data-v-7c44e8d1]{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);border-radius:4px;padding:.5rem;font-size:1rem}input[type=number][data-v-7c44e8d1]:disabled{opacity:.6;cursor:not-allowed}.note[data-v-7c44e8d1]{color:var(--muted);background:var(--stat-bg);border-radius:6px;margin:.5rem 0 0;padding:.5rem .75rem;font-size:.85rem}.actions[data-v-7c44e8d1]{justify-content:flex-end;display:flex}.btn[data-v-7c44e8d1]{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:6px;padding:.6rem 1.25rem;font-size:.95rem}.btn[data-v-7c44e8d1]:hover{background:var(--hover-bg)}
