:root{color-scheme:light;--font-sans: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, "Noto Sans", "Liberation Sans", sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--r-xs: 10px;--r-sm: 12px;--r-md: 14px;--r-lg: 18px;--r-xl: 22px;--bg: #f6f7fb;--surface: #ffffff;--surface-2: #fbfcff;--surface-3: #f3f6ff;--text: #111827;--muted: #6b7280;--muted-2: #8b94a7;--border: #e6eaf2;--border-2: #d9dfeb;--primary: #2563eb;--primary-600: #1d4ed8;--primary-50: rgba(37, 99, 235, .08);--danger: #ef4444;--danger-50: rgba(239, 68, 68, .1);--success: #22c55e;--success-50: rgba(34, 197, 94, .12);--warning: #f59e0b;--warning-50: rgba(245, 158, 11, .14);--shadow-xs: 0 1px 0 rgba(17, 24, 39, .04), 0 1px 2px rgba(17, 24, 39, .06);--shadow-sm: 0 2px 8px rgba(17, 24, 39, .08);--shadow-md: 0 12px 26px rgba(17, 24, 39, .1);--shadow-lg: 0 18px 44px rgba(17, 24, 39, .14);--focus: rgba(37, 99, 235, .25);--focus-strong: rgba(37, 99, 235, .45);--t-fast: .12s;--t: .16s;--topbar-h: 56px;--sidebar-w: 240px;--content-max: 1120px}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}#app{min-height:100%}a{color:inherit;text-decoration:none}::selection{background:var(--primary-50)}*{-webkit-tap-highlight-color:transparent}img,svg,video{max-width:100%;height:auto}hr{border:none;height:1px;background:var(--border)}:where(a,button,input,select,textarea,[tabindex]):focus{outline:none}:where(a,button,input,select,textarea,[tabindex]):focus-visible{box-shadow:0 0 0 4px var(--focus);border-radius:var(--r-sm)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card--raised{box-shadow:var(--shadow-md)}.card--soft{background:var(--surface-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid var(--border-2);background:var(--surface);color:var(--text);border-radius:var(--r-md);padding:10px 14px;min-height:42px;cursor:pointer;font-weight:800;letter-spacing:.1px;box-sizing:border-box;user-select:none;-webkit-user-select:none;transition:transform var(--t-fast) ease,background var(--t) ease,border-color var(--t) ease,box-shadow var(--t) ease,color var(--t) ease,opacity var(--t) ease}.btn:hover{background:var(--surface-2);border-color:var(--border-2);box-shadow:var(--shadow-xs)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}.btn:focus-visible{box-shadow:0 0 0 4px var(--focus);border-color:#2563eb73}.btn--primary{background:var(--primary);color:#fff;border-color:#2563eb8c;box-shadow:0 10px 20px #2563eb2e}.btn--primary:hover{background:var(--primary-600);border-color:#2563ebbf}.btn--primary:disabled{box-shadow:none}.btn--danger{background:#fff;color:var(--danger);border-color:#ef444459}.btn--danger:hover{background:var(--danger-50);border-color:#ef44448c}.btn--ghost{background:transparent;border-color:transparent;box-shadow:none}.btn--ghost:hover{background:var(--surface-2);border-color:var(--border)}.input,.select,textarea{width:100%;border:1px solid var(--border-2);border-radius:var(--r-md);padding:11px 12px;min-height:42px;line-height:18px;outline:none;background:var(--surface);color:var(--text);box-sizing:border-box;transition:border-color var(--t) ease,box-shadow var(--t) ease,background var(--t) ease}.select{padding-right:38px}textarea{resize:vertical;min-height:110px}.input::placeholder,textarea::placeholder{color:#9aa3b2}.input:focus,.select:focus,textarea:focus{border-color:#2563eb8c;box-shadow:0 0 0 4px var(--focus);background:var(--surface-2)}:where(input,select,textarea)[aria-invalid=true]{border-color:#ef44448c;box-shadow:0 0 0 4px #ef44442e;background:#ef44440a}.label{font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:800;letter-spacing:.2px}.muted{color:var(--muted);font-size:12px;font-weight:800}.hint{color:var(--muted-2);font-size:12px}.badge{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);background:var(--surface-2);border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900;line-height:1;white-space:nowrap}.badge:before{content:"";width:7px;height:7px;border-radius:999px;background:var(--border-2)}.badge--admin{border-color:#ef444447;background:var(--danger-50);color:#991b1b}.badge--admin:before{background:var(--danger)}.badge--teacher{border-color:#f59e0b47;background:var(--warning-50);color:#92400e}.badge--teacher:before{background:var(--warning)}.badge--student{border-color:#2563eb47;background:var(--primary-50);color:#1d4ed8}.badge--student:before{background:var(--primary)}.badge--true{border-color:#22c55e47;background:var(--success-50);color:#166534}.badge--true:before{background:var(--success)}.badge--false{border-color:#ef444447;background:var(--danger-50);color:#991b1b}.badge--false:before{background:var(--danger)}.table{width:100%;border-collapse:separate;border-spacing:0;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-xs);overflow:hidden}.table{display:table}.table th,.table td{border-bottom:1px solid var(--border);padding:12px;text-align:left;vertical-align:middle;font-size:13px}.table th{font-size:12px;color:var(--muted);font-weight:900;background:var(--surface-2);position:sticky;top:0;z-index:1}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--surface-3)}.table td:first-child,.table th:first-child{padding-left:14px}.table td:last-child,.table th:last-child{padding-right:14px}.table-wrap{width:100%;overflow-x:auto;border-radius:var(--r-lg);-webkit-overflow-scrolling:touch}.table-wrap .table{min-width:720px}.ellipsis{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}code{font-family:var(--font-mono);background:var(--surface-3);border:1px solid var(--border);padding:2px 6px;border-radius:10px;font-size:.95em}.prose{color:var(--text);line-height:1.7;font-size:14px}.prose h1,.prose h2,.prose h3{line-height:1.25;margin:18px 0 10px;letter-spacing:-.2px}.prose h1{font-size:22px}.prose h2{font-size:18px}.prose h3{font-size:16px}.prose p{margin:10px 0}.prose a{color:var(--primary-600);text-decoration:underline;text-decoration-color:#2563eb59;text-underline-offset:2px}.prose hr{border:none;height:1px;background:var(--border);margin:16px 0}.prose blockquote{margin:12px 0;padding:10px 12px;border-left:4px solid rgba(37,99,235,.35);background:var(--surface-2);border-radius:var(--r-md);color:#374151}.prose ul,.prose ol{margin:10px 0 10px 22px}.prose li{margin:6px 0}.prose pre{margin:12px 0;padding:14px;border-radius:var(--r-lg);border:1px solid var(--border);background:#0b1220;color:#e5e7eb;overflow:auto;box-shadow:var(--shadow-xs)}.prose pre code{background:transparent;border:none;padding:0;font-family:var(--font-mono);font-size:13px;line-height:1.55}.chip{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);font-size:12px;font-weight:900;color:var(--muted);white-space:nowrap}.fade-in{animation:fadeIn var(--t) ease both}@keyframes fadeIn{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}*::-webkit-scrollbar{height:10px;width:10px}*::-webkit-scrollbar-thumb{background:#11182724;border-radius:999px;border:2px solid rgba(255,255,255,.65)}*::-webkit-scrollbar-thumb:hover{background:#11182738}@media(max-width:420px){.btn{padding:10px 12px;min-height:42px}.ellipsis{max-width:220px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important;animation:none!important}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.toasts[data-v-d97077ca]{position:fixed;top:14px;right:14px;display:grid;gap:10px;z-index:10000;pointer-events:none}.toast[data-v-d97077ca]{width:min(360px,calc(100vw - 28px));background:#111827;color:#fff;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:10px 12px;box-shadow:0 12px 30px #00000040;cursor:pointer;pointer-events:auto;outline:none;animation:toastIn-d97077ca .16s ease-out both}.toast[data-v-d97077ca]:focus-visible{box-shadow:0 0 0 3px #3b82f659,0 12px 30px #00000040}@keyframes toastIn-d97077ca{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.toast[data-v-d97077ca]{animation:none}}.toast__title[data-v-d97077ca]{font-weight:700;font-size:13px}.toast__msg[data-v-d97077ca]{margin-top:4px;font-size:13px;color:#ffffffe0;line-height:1.35}.toast--success[data-v-d97077ca]{border-color:#22c55e59}.toast--error[data-v-d97077ca]{border-color:#ef444459}.toast--warning[data-v-d97077ca]{border-color:#f59e0b59}.toast--info[data-v-d97077ca]{border-color:#3b82f659}@media(max-width:640px){.toasts[data-v-d97077ca]{top:auto;right:auto;left:50%;bottom:calc(12px + env(safe-area-inset-bottom,0px));transform:translate(-50%);width:min(420px,calc(100vw - 20px))}.toast[data-v-d97077ca]{width:100%}@keyframes toastIn-d97077ca{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}}.page[data-v-3b59399e]{min-height:100vh;display:grid;place-items:center;padding:clamp(12px,2.2vw,20px);background:radial-gradient(1200px 600px at 20% 10%,rgba(59,130,246,.1),transparent 55%),radial-gradient(900px 520px at 90% 30%,rgba(34,197,94,.08),transparent 60%);padding-top:calc(clamp(12px,2.2vw,20px) + env(safe-area-inset-top));padding-bottom:calc(clamp(12px,2.2vw,20px) + env(safe-area-inset-bottom))}.box[data-v-3b59399e]{width:100%;max-width:420px;padding:16px;border-radius:18px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.title[data-v-3b59399e]{font-size:20px;font-weight:900;letter-spacing:-.01em}.subtitle[data-v-3b59399e]{margin-top:2px;color:var(--muted);font-size:13px;margin-bottom:14px}.form[data-v-3b59399e]{display:grid;gap:12px}.field[data-v-3b59399e]{display:grid;gap:6px}.err[data-v-3b59399e]{font-size:12px;color:#b91c1c;line-height:1.25}.btn[data-v-3b59399e]{width:100%;padding:10px 12px}.hint[data-v-3b59399e]{margin-top:12px;font-size:12px;color:var(--muted)}@media(max-width:420px){.page[data-v-3b59399e]{place-items:stretch;padding-left:12px;padding-right:12px}.box[data-v-3b59399e]{max-width:100%;padding:14px;margin-top:min(12vh,72px)}.title[data-v-3b59399e]{font-size:18px}}@media(max-height:700px){.page[data-v-3b59399e]{place-items:start}.box[data-v-3b59399e]{margin-top:24px}}.page[data-v-8b63c6fe]{display:grid;place-items:center;min-height:100vh;padding:clamp(12px,2.2vw,20px);padding-top:calc(clamp(12px,2.2vw,20px) + env(safe-area-inset-top));padding-bottom:calc(clamp(12px,2.2vw,20px) + env(safe-area-inset-bottom));background:var(--bg)}.box[data-v-8b63c6fe]{width:min(520px,100%);padding:16px;border-radius:18px}.h1[data-v-8b63c6fe]{font-size:18px;font-weight:900;letter-spacing:-.01em}.form[data-v-8b63c6fe]{margin-top:14px;display:grid;gap:12px}.field[data-v-8b63c6fe]{display:grid;gap:6px}.actions[data-v-8b63c6fe]{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap;align-items:center}.actions .btn[data-v-8b63c6fe]{flex:1 1 220px;min-width:180px}@media(max-width:420px){.page[data-v-8b63c6fe]{place-items:stretch}.box[data-v-8b63c6fe]{width:100%;padding:14px}.actions[data-v-8b63c6fe]{gap:8px}.actions .btn[data-v-8b63c6fe]{flex-basis:100%;min-width:0}}@media(max-height:700px){.page[data-v-8b63c6fe]{place-items:start}.box[data-v-8b63c6fe]{margin-top:24px}}.err[data-v-8b63c6fe]{margin-top:12px;color:#b91c1c;font-weight:700;line-height:1.25}.shell[data-v-1c3ecb14]{min-height:100vh;display:grid;grid-template-rows:56px 1fr;background:var(--bg)}.topbar[data-v-1c3ecb14]{background:#ffffffe6;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;position:sticky;top:0;z-index:20;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.topbar__left[data-v-1c3ecb14]{display:flex;align-items:center;gap:10px;min-width:0}.topbar__right[data-v-1c3ecb14]{display:flex;gap:12px;align-items:center;min-width:0}.brand[data-v-1c3ecb14]{display:flex;flex-direction:column;line-height:1.1;min-width:0}.brand__title[data-v-1c3ecb14]{font-weight:900;font-size:15px;letter-spacing:-.01em}.brand__subtitle[data-v-1c3ecb14]{font-size:12px;color:var(--muted)}.iconbtn[data-v-1c3ecb14]{width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:#fff;display:inline-grid;place-items:center;color:var(--text);cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .12s ease}.iconbtn[data-v-1c3ecb14]:hover{background:#f9fafb}.iconbtn[data-v-1c3ecb14]:active{transform:translateY(1px)}.iconbtn[data-v-1c3ecb14]:focus-visible{outline:none;box-shadow:0 0 0 3px #2563eb2e;border-color:#2563eb59}.topbar__burger[data-v-1c3ecb14]{display:none}.who[data-v-1c3ecb14]{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:#fff;height:40px;box-sizing:border-box;min-width:0}.who__dot[data-v-1c3ecb14]{width:8px;height:8px;border-radius:99px;background:var(--success);box-shadow:0 0 0 3px #22c55e1f}.who__name[data-v-1c3ecb14]{font-weight:800;font-size:12px;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.body[data-v-1c3ecb14]{display:grid;grid-template-columns:220px 1fr;min-height:0;height:calc(100vh - 56px)}.sidebar[data-v-1c3ecb14]{background:#fff;border-right:1px solid var(--border);padding:12px;position:sticky;top:56px;height:calc(100vh - 56px);overflow:auto;overscroll-behavior:contain}.menu[data-v-1c3ecb14]{display:grid;gap:8px}.menu__item[data-v-1c3ecb14]{display:block;padding:10px 12px;border-radius:12px;border:1px solid var(--border);font-weight:800;font-size:13px;color:var(--text);background:#fff;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease}.menu__item[data-v-1c3ecb14]:hover{background:#f9fafb}.menu__item[data-v-1c3ecb14]:active{transform:translateY(1px)}.menu__item[data-v-1c3ecb14]:focus-visible{outline:none;box-shadow:0 0 0 3px #2563eb2e;border-color:#2563eb59}.menu__item.is-active[data-v-1c3ecb14]{border-color:#2563eb59;box-shadow:0 0 0 3px #2563eb1f}.content[data-v-1c3ecb14]{min-width:0;overflow:auto;overscroll-behavior:contain;padding:clamp(12px,1.6vw,20px)}.content[data-v-1c3ecb14]>*{max-width:1120px;margin-left:auto;margin-right:auto}.drawer[data-v-1c3ecb14]{position:fixed;inset:0;z-index:50;pointer-events:none}.drawer__overlay[data-v-1c3ecb14]{position:absolute;inset:0;background:#0f172a6b;opacity:0;transition:opacity .16s ease}.drawer__panel[data-v-1c3ecb14]{position:absolute;top:0;left:0;height:100%;width:min(86vw,320px);background:#fff;border-right:1px solid var(--border);padding:12px;padding-top:calc(12px + env(safe-area-inset-top));padding-bottom:calc(12px + env(safe-area-inset-bottom));transform:translate(-105%);transition:transform .2s ease;box-sizing:border-box;overflow:auto;overscroll-behavior:contain}.drawer__head[data-v-1c3ecb14]{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;background:#fff;border-bottom:1px solid rgba(15,23,42,.06);margin:0 -12px 12px;padding:6px 12px 12px}.drawer__title[data-v-1c3ecb14]{font-weight:900;font-size:14px}.drawer.is-open[data-v-1c3ecb14]{pointer-events:auto}.drawer.is-open .drawer__overlay[data-v-1c3ecb14]{opacity:1}.drawer.is-open .drawer__panel[data-v-1c3ecb14]{transform:translate(0)}@media(max-width:960px){.body[data-v-1c3ecb14]{grid-template-columns:1fr;height:auto;min-height:0}.sidebar--desktop[data-v-1c3ecb14]{display:none}.topbar__burger[data-v-1c3ecb14]{display:inline-grid}.content[data-v-1c3ecb14]{overflow:visible;padding:12px}.content[data-v-1c3ecb14]>*{max-width:100%}.who__name[data-v-1c3ecb14]{max-width:160px}.brand__subtitle[data-v-1c3ecb14]{display:none}}@media(max-width:420px){.topbar[data-v-1c3ecb14]{padding:0 10px}.who[data-v-1c3ecb14]{display:none}.brand__title[data-v-1c3ecb14]{font-size:14px}}.overlay[data-v-bd2ceff4]{position:fixed;inset:0;background:#11182773;display:grid;place-items:center;padding:16px;z-index:9000}.modal[data-v-bd2ceff4]{width:100%;max-width:520px;padding:14px}.head[data-v-bd2ceff4]{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.head__title[data-v-bd2ceff4]{font-weight:900}.iconBtn[data-v-bd2ceff4]{border:1px solid var(--border);background:#fff;border-radius:10px;width:34px;height:34px;cursor:pointer}.iconBtn[data-v-bd2ceff4]:hover{background:#f9fafb}.form[data-v-bd2ceff4]{display:grid;gap:12px}.field[data-v-bd2ceff4]{display:grid;gap:6px}.err[data-v-bd2ceff4]{font-size:12px;color:#b91c1c}.actions[data-v-bd2ceff4]{margin-top:6px;display:flex;justify-content:flex-end;gap:10px}@media(max-width:520px){.overlay[data-v-bd2ceff4]{place-items:end center;padding:10px}.modal[data-v-bd2ceff4]{max-width:100%;border-radius:16px;padding:12px;box-shadow:0 -18px 40px #0000002e}.actions[data-v-bd2ceff4]{flex-direction:column-reverse;gap:8px}.actions .btn[data-v-bd2ceff4]{width:100%}}.page[data-v-bd6b6d8a]{display:grid;gap:12px}.bar[data-v-bd6b6d8a]{padding:12px;display:grid;gap:12px}.bar__filters[data-v-bd6b6d8a]{display:grid;grid-template-columns:260px 180px 180px auto;gap:10px;align-items:end}.f[data-v-bd6b6d8a]{width:auto}.f--btn[data-v-bd6b6d8a]{display:flex;align-items:end}.bar__actions[data-v-bd6b6d8a]{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.tableWrap[data-v-bd6b6d8a]{padding:0;overflow:hidden;min-height:220px}.loadingRow[data-v-bd6b6d8a]{padding:10px 12px;border-bottom:1px solid var(--border);color:var(--muted);font-size:13px}.tableScroll[data-v-bd6b6d8a]{overflow:auto;-webkit-overflow-scrolling:touch}.row[data-v-bd6b6d8a]{cursor:pointer}.empty[data-v-bd6b6d8a]{padding:16px 10px;color:var(--muted);text-align:center}.loginCell[data-v-bd6b6d8a]{display:flex;align-items:center;gap:10px;min-width:0}.loginText[data-v-bd6b6d8a]{max-width:240px}.linkBtn[data-v-bd6b6d8a]{border:none;background:transparent;color:var(--primary);font-weight:800;font-size:12px;cursor:pointer;padding:0;flex:0 0 auto}.linkBtn[data-v-bd6b6d8a]:hover{text-decoration:underline}.pager[data-v-bd6b6d8a]{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px;flex-wrap:wrap}.pager__right[data-v-bd6b6d8a]{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.sizeSel[data-v-bd6b6d8a]{width:92px}.pageBox[data-v-bd6b6d8a]{display:flex;gap:8px;align-items:center}.pageInp[data-v-bd6b6d8a]{width:90px;padding:8px 10px;height:40px}@media(max-width:980px){.bar__filters[data-v-bd6b6d8a]{grid-template-columns:1fr 1fr}}@media(max-width:680px){.bar__filters[data-v-bd6b6d8a]{grid-template-columns:1fr}.f--btn .btn[data-v-bd6b6d8a]{width:100%}.bar__actions[data-v-bd6b6d8a]{justify-content:stretch}.bar__actions .btn[data-v-bd6b6d8a]{width:100%}.table[data-v-bd6b6d8a]{display:block}.table thead[data-v-bd6b6d8a]{display:none}.table tbody[data-v-bd6b6d8a]{display:grid;gap:10px;padding:10px}.row[data-v-bd6b6d8a]{display:grid;gap:8px;padding:12px;border:1px solid var(--border);border-radius:14px;background:#fff}.td[data-v-bd6b6d8a]{display:grid;grid-template-columns:140px 1fr;gap:10px;align-items:baseline;padding:0!important;border-bottom:none!important;min-width:0}.td[data-v-bd6b6d8a]:before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:900}.loginText[data-v-bd6b6d8a]{max-width:100%}.ellipsis[data-v-bd6b6d8a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}}@media(max-width:420px){.td[data-v-bd6b6d8a]{grid-template-columns:1fr;gap:4px}.pager__right[data-v-bd6b6d8a]{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px;justify-content:stretch}.pager__right .btn[data-v-bd6b6d8a],.sizeSel[data-v-bd6b6d8a]{width:100%}.pageBox[data-v-bd6b6d8a]{grid-column:1 / -1;justify-content:space-between}.pageInp[data-v-bd6b6d8a]{width:110px}}.drawerOverlay[data-v-f6953478]{position:fixed;inset:0;background:#11182766;z-index:8000;display:grid;justify-items:end;padding:0}.drawer[data-v-f6953478]{width:min(560px,100vw);height:100vh;border-radius:0;border-left:1px solid var(--border);box-shadow:var(--shadow);overflow:hidden;display:grid;grid-template-rows:auto 1fr}.head[data-v-f6953478]{position:sticky;top:0;z-index:2;background:#fff;border-bottom:1px solid var(--border);padding:14px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.head__left[data-v-f6953478]{min-width:0}.head__title[data-v-f6953478]{font-weight:900;font-size:16px;line-height:1.1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.head__subtitle[data-v-f6953478]{margin-top:6px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dot[data-v-f6953478]{width:4px;height:4px;border-radius:99px;background:#d1d5db}.iconBtn[data-v-f6953478]{border:1px solid var(--border);background:#fff;border-radius:10px;width:36px;height:36px;cursor:pointer;flex:0 0 auto}.iconBtn[data-v-f6953478]:hover{background:#f9fafb}.body[data-v-f6953478]{padding:14px;overflow:auto;display:grid;gap:14px}.section[data-v-f6953478]{border:1px solid var(--border);border-radius:14px;background:#fff;padding:12px}.section__title[data-v-f6953478]{font-weight:900;font-size:13px;margin-bottom:10px}.section__hint[data-v-f6953478]{color:var(--muted);font-size:12px;margin-top:-6px;margin-bottom:10px}.grid[data-v-f6953478]{display:grid;gap:10px;grid-template-columns:1fr 1fr}.kv[data-v-f6953478]{border:1px solid var(--border);border-radius:12px;padding:10px;background:#fff;min-width:0}.kv--wide[data-v-f6953478]{grid-column:1 / -1}.val[data-v-f6953478]{font-weight:800;font-size:13px;display:flex;align-items:center;gap:10px;min-width:0}.label[data-v-f6953478]{font-size:12px;color:var(--muted);font-weight:800}.mono[data-v-f6953478]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.linkBtn[data-v-f6953478]{border:none;background:transparent;color:var(--primary);font-weight:900;font-size:12px;cursor:pointer;padding:0;flex:0 0 auto}.linkBtn[data-v-f6953478]:hover{text-decoration:underline}.form[data-v-f6953478]{display:grid;gap:12px}.field[data-v-f6953478]{display:grid;gap:6px}.actions[data-v-f6953478]{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding-top:2px}.loading[data-v-f6953478]{display:grid;place-items:center;gap:10px;padding:26px}.spinner[data-v-f6953478]{width:22px;height:22px;border-radius:50%;border:3px solid rgba(17,24,39,.12);border-top-color:#2563ebbf;animation:spin-f6953478 .8s linear infinite}@keyframes spin-f6953478{to{transform:rotate(360deg)}}.empty[data-v-f6953478]{padding:18px;display:grid;gap:10px}.empty__title[data-v-f6953478]{font-weight:900}.empty__hint[data-v-f6953478]{color:var(--muted);font-size:13px}.switch[data-v-f6953478]{display:inline-flex;align-items:center;position:relative;width:46px;height:28px}.switch input[data-v-f6953478]{display:none}.switch__track[data-v-f6953478]{width:46px;height:28px;border-radius:999px;border:1px solid var(--border);background:#f3f4f6;position:relative;transition:.2s}.switch__track[data-v-f6953478]:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:999px;background:#fff;border:1px solid var(--border);transition:.2s}.switch input:checked+.switch__track[data-v-f6953478]{background:#22c55e2e;border-color:#22c55e59}.switch input:checked+.switch__track[data-v-f6953478]:after{transform:translate(18px)}@media(max-width:520px){.drawerOverlay[data-v-f6953478]{justify-items:stretch}.drawer[data-v-f6953478]{width:100vw}.grid[data-v-f6953478]{grid-template-columns:1fr}.kv--wide[data-v-f6953478]{grid-column:auto}.actions[data-v-f6953478]{width:100%;display:grid;grid-template-columns:1fr;gap:8px;justify-content:stretch}.actions .btn[data-v-f6953478]{width:100%}.head__title[data-v-f6953478]{white-space:normal;word-break:break-word}}.shell[data-v-4d8385e0]{min-height:100vh;display:grid;grid-template-rows:56px 1fr;background:var(--bg)}.topbar[data-v-4d8385e0]{background:#ffffffe6;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;position:sticky;top:0;z-index:20;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.topbar__left[data-v-4d8385e0]{display:flex;align-items:center;gap:10px;min-width:0}.topbar__right[data-v-4d8385e0]{display:flex;gap:12px;align-items:center;min-width:0}.brand[data-v-4d8385e0]{display:flex;flex-direction:column;line-height:1.1;min-width:0}.brand__title[data-v-4d8385e0]{font-weight:900;font-size:15px;letter-spacing:-.01em}.brand__subtitle[data-v-4d8385e0]{font-size:12px;color:var(--muted)}.iconbtn[data-v-4d8385e0]{width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:#fff;display:inline-grid;place-items:center;color:var(--text);cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .12s ease}.iconbtn[data-v-4d8385e0]:hover{background:#f9fafb}.iconbtn[data-v-4d8385e0]:active{transform:translateY(1px)}.iconbtn[data-v-4d8385e0]:focus-visible{outline:none;box-shadow:0 0 0 3px #2563eb2e;border-color:#2563eb59}.topbar__burger[data-v-4d8385e0]{display:none}.who[data-v-4d8385e0]{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:#fff;height:40px;box-sizing:border-box;min-width:0}.who__dot[data-v-4d8385e0]{width:8px;height:8px;border-radius:99px;background:var(--success);box-shadow:0 0 0 3px #22c55e1f}.who__name[data-v-4d8385e0]{font-weight:800;font-size:12px;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.body[data-v-4d8385e0]{display:grid;grid-template-columns:240px 1fr;min-height:0;height:calc(100vh - 56px)}.sidebar[data-v-4d8385e0]{background:#fff;border-right:1px solid var(--border);padding:12px;position:sticky;top:56px;height:calc(100vh - 56px);overflow:auto;overscroll-behavior:contain}.menu[data-v-4d8385e0]{display:grid;gap:8px}.menu__item[data-v-4d8385e0]{display:block;padding:10px 12px;border-radius:12px;border:1px solid var(--border);font-weight:800;font-size:13px;color:var(--text);background:#fff;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease}.menu__item[data-v-4d8385e0]:hover{background:#f9fafb}.menu__item[data-v-4d8385e0]:active{transform:translateY(1px)}.menu__item[data-v-4d8385e0]:focus-visible{outline:none;box-shadow:0 0 0 3px #2563eb2e;border-color:#2563eb59}.menu__item.is-active[data-v-4d8385e0]{border-color:#2563eb59;box-shadow:0 0 0 3px #2563eb1f}.content[data-v-4d8385e0]{min-width:0;overflow:auto;overscroll-behavior:contain;padding:clamp(12px,1.6vw,20px)}.content[data-v-4d8385e0]>*{max-width:1120px;margin-left:auto;margin-right:auto}.drawer[data-v-4d8385e0]{position:fixed;inset:0;z-index:50;pointer-events:none}.drawer__overlay[data-v-4d8385e0]{position:absolute;inset:0;background:#0f172a6b;opacity:0;transition:opacity .16s ease}.drawer__panel[data-v-4d8385e0]{position:absolute;top:0;left:0;height:100%;width:min(86vw,320px);background:#fff;border-right:1px solid var(--border);padding:12px;padding-top:calc(12px + env(safe-area-inset-top));padding-bottom:calc(12px + env(safe-area-inset-bottom));transform:translate(-105%);transition:transform .2s ease;box-sizing:border-box;overflow:auto;overscroll-behavior:contain}.drawer__head[data-v-4d8385e0]{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;background:#fff;border-bottom:1px solid rgba(15,23,42,.06);margin:0 -12px 12px;padding:10px 12px}.drawer__title[data-v-4d8385e0]{font-weight:900;font-size:14px}.drawer.is-open[data-v-4d8385e0]{pointer-events:auto}.drawer.is-open .drawer__overlay[data-v-4d8385e0]{opacity:1}.drawer.is-open .drawer__panel[data-v-4d8385e0]{transform:translate(0)}@media(max-width:960px){.body[data-v-4d8385e0]{grid-template-columns:1fr;height:auto;min-height:0}.sidebar--desktop[data-v-4d8385e0]{display:none}.topbar__burger[data-v-4d8385e0]{display:inline-grid}.content[data-v-4d8385e0]{overflow:visible;padding:12px}.content[data-v-4d8385e0]>*{max-width:100%}.who__name[data-v-4d8385e0]{max-width:160px}.brand__subtitle[data-v-4d8385e0]{display:none}}@media(max-width:420px){.topbar[data-v-4d8385e0]{padding:0 10px}.who[data-v-4d8385e0]{display:none}.brand__title[data-v-4d8385e0]{font-size:14px}}.page[data-v-d03da5ef]{display:grid;gap:12px}.head[data-v-d03da5ef]{padding:12px;display:flex;align-items:center;justify-content:space-between}.title[data-v-d03da5ef]{font-size:16px;font-weight:900}.subtitle[data-v-d03da5ef]{margin-top:4px;font-size:13px;color:var(--muted)}.grid[data-v-d03da5ef]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.box[data-v-d03da5ef]{padding:14px;min-width:0}.box__title[data-v-d03da5ef]{font-weight:900;margin-bottom:12px}.kv[data-v-d03da5ef]{display:grid;gap:6px;padding:10px;border:1px solid var(--border);border-radius:12px;margin-bottom:10px;min-width:0}.val[data-v-d03da5ef]{font-weight:900;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stats[data-v-d03da5ef]{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:10px}.stat[data-v-d03da5ef]{padding:12px;border:1px solid var(--border);border-radius:12px}.stat__label[data-v-d03da5ef]{font-size:12px;color:var(--muted);font-weight:800}.stat__value[data-v-d03da5ef]{margin-top:6px;font-size:22px;font-weight:900}@media(max-width:900px){.grid[data-v-d03da5ef]{grid-template-columns:1fr}}@media(max-width:520px){.head[data-v-d03da5ef],.box[data-v-d03da5ef]{padding:12px}.kv[data-v-d03da5ef]{padding:10px}.val[data-v-d03da5ef]{white-space:normal;word-break:break-word}}.overlay[data-v-7d4ae80a]{position:fixed;inset:0;background:#11182773;display:grid;place-items:center;padding:16px;z-index:9000}.modal[data-v-7d4ae80a]{width:100%;max-width:560px;padding:14px}.head[data-v-7d4ae80a]{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.head__title[data-v-7d4ae80a]{font-weight:900}.iconBtn[data-v-7d4ae80a]{border:1px solid var(--border);background:#fff;border-radius:10px;width:36px;height:36px;cursor:pointer}.iconBtn[data-v-7d4ae80a]:hover{background:#f9fafb}.form[data-v-7d4ae80a]{display:grid;gap:12px}.field[data-v-7d4ae80a]{display:grid;gap:6px}.err[data-v-7d4ae80a]{font-size:12px;color:#b91c1c}.actions[data-v-7d4ae80a]{display:flex;justify-content:flex-end;gap:10px}@media(max-width:520px){.overlay[data-v-7d4ae80a]{place-items:end center;padding:10px}.modal[data-v-7d4ae80a]{max-width:100%;border-radius:16px;padding:12px;box-shadow:0 -18px 40px #0000002e}.actions[data-v-7d4ae80a]{flex-direction:column-reverse;gap:8px}.actions .btn[data-v-7d4ae80a]{width:100%}}.page[data-v-9ffa995c]{display:grid;gap:12px}.head[data-v-9ffa995c]{padding:12px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}.head__left[data-v-9ffa995c]{min-width:0}.title[data-v-9ffa995c]{font-size:16px;font-weight:900}.subtitle[data-v-9ffa995c]{margin-top:4px;font-size:13px;color:var(--muted)}.actions[data-v-9ffa995c]{display:flex;gap:10px;flex-wrap:wrap}.grid[data-v-9ffa995c]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.course[data-v-9ffa995c]{padding:14px;text-align:left;cursor:pointer;min-width:0}.course[data-v-9ffa995c]:hover{border-color:#2563eb59;box-shadow:0 0 0 3px #2563eb14}.course__title[data-v-9ffa995c]{font-weight:900;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course__meta[data-v-9ffa995c]{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}.course__teacher[data-v-9ffa995c]{margin-top:8px;font-size:13px;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.strong[data-v-9ffa995c]{font-weight:900;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:42ch}.badge--soft[data-v-9ffa995c]{border-color:#2563eb33;background:#2563eb14;color:#2563ebf2}.loading[data-v-9ffa995c],.empty[data-v-9ffa995c]{padding:12px;color:var(--muted)}@media(max-width:980px){.grid[data-v-9ffa995c]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.grid[data-v-9ffa995c]{grid-template-columns:1fr}.actions[data-v-9ffa995c]{width:100%;display:grid;gap:8px}.actions .btn[data-v-9ffa995c]{width:100%}.course__title[data-v-9ffa995c],.strong[data-v-9ffa995c]{white-space:normal;word-break:break-word}}.page[data-v-83f26820]{display:grid;gap:12px}.head[data-v-83f26820]{padding:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.head__left[data-v-83f26820]{min-width:0}.title[data-v-83f26820]{font-size:16px;font-weight:900}.subtitle[data-v-83f26820]{margin-top:4px;font-size:13px;color:var(--muted)}.tabs[data-v-83f26820]{display:flex;gap:8px;align-items:center;flex-wrap:wrap;min-width:0}.tab[data-v-83f26820]{text-decoration:none;border:1px solid var(--border);padding:8px 12px;border-radius:999px;color:inherit;background:var(--card);font-weight:700;font-size:13px;white-space:nowrap}.tab[data-v-83f26820]:hover{border-color:#2563eb59;box-shadow:0 0 0 3px #2563eb14}.tab.active[data-v-83f26820]{border-color:#2563eb8c;box-shadow:0 0 0 3px #2563eb1f}@media(max-width:760px){.head[data-v-83f26820]{align-items:stretch}.tabs[data-v-83f26820]{width:100%;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;padding-bottom:2px}.tabs[data-v-83f26820]::-webkit-scrollbar{height:6px}.tabs[data-v-83f26820]::-webkit-scrollbar-thumb{background:#0f172a1f;border-radius:999px}}@media(max-width:560px){.head[data-v-83f26820]{flex-direction:column;align-items:stretch}.tabs .btn[data-v-83f26820]{flex:0 0 auto}}.page[data-v-5c4003b6]{display:grid;gap:12px}.head[data-v-5c4003b6]{padding:12px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}.head__left[data-v-5c4003b6]{min-width:0}.title[data-v-5c4003b6]{font-size:16px;font-weight:900}.subtitle[data-v-5c4003b6]{margin-top:4px;font-size:13px;color:var(--muted)}.mono[data-v-5c4003b6]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.actions[data-v-5c4003b6]{display:flex;gap:10px;flex-wrap:wrap}.tableWrap[data-v-5c4003b6]{padding:0;overflow:hidden}.loadingRow[data-v-5c4003b6]{padding:10px 12px;border-bottom:1px solid var(--border);color:var(--muted);font-size:13px}.btnSmall[data-v-5c4003b6]{height:36px;padding:7px 10px}.empty[data-v-5c4003b6]{padding:16px 10px;color:var(--muted);text-align:center}.rowActions[data-v-5c4003b6]{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.subline[data-v-5c4003b6]{margin-top:6px;font-size:12px}.link[data-v-5c4003b6]{padding:0;border:none;background:transparent;color:inherit;cursor:pointer;font-weight:900;text-align:left;display:inline-flex;max-width:100%}.ellipsis[data-v-5c4003b6]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.confirm-overlay[data-v-5c4003b6]{position:fixed;inset:0;background:#11182780;display:grid;place-items:center;padding:16px;z-index:9999}.confirm[data-v-5c4003b6]{width:min(520px,100%);padding:16px}.h2[data-v-5c4003b6]{font-size:16px;font-weight:900}.confirm-actions[data-v-5c4003b6]{margin-top:14px;display:flex;gap:10px;justify-content:flex-end}@media(max-width:860px){.tableWrap[data-v-5c4003b6]{overflow:auto;-webkit-overflow-scrolling:touch}.table[data-v-5c4003b6]{width:100%}}@media(max-width:640px){.head[data-v-5c4003b6]{align-items:stretch}.actions[data-v-5c4003b6]{width:100%;display:grid;gap:8px}.actions .btn[data-v-5c4003b6]{width:100%}.table[data-v-5c4003b6]{display:block}.table thead[data-v-5c4003b6]{display:none}.table tbody[data-v-5c4003b6]{display:grid;gap:10px;padding:10px}.tr[data-v-5c4003b6]{display:grid;gap:8px;padding:12px;border:1px solid var(--border);border-radius:14px;background:#fff}.td[data-v-5c4003b6]{display:grid;grid-template-columns:120px 1fr;gap:10px;align-items:baseline;min-width:0}.td[data-v-5c4003b6]:before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:800}.empty[data-v-5c4003b6]{padding:14px 10px}.ellipsis[data-v-5c4003b6]{white-space:normal;word-break:break-word}}@media(max-width:380px){.td[data-v-5c4003b6]{grid-template-columns:1fr;gap:4px}}.box[data-v-64ce913c]{padding:14px}.boxHead[data-v-64ce913c]{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:12px}.box__title[data-v-64ce913c]{font-weight:900}.small[data-v-64ce913c]{font-size:12px}.searchRow[data-v-64ce913c]{display:flex;gap:10px;flex-wrap:wrap}.field[data-v-64ce913c]{display:grid;gap:6px}.grow[data-v-64ce913c]{flex:1;min-width:260px}.results[data-v-64ce913c]{margin-top:12px}.inner[data-v-64ce913c]{padding:12px;border-radius:12px;border:1px solid var(--border);background:#fff}.list[data-v-64ce913c]{display:grid;gap:10px}.item[data-v-64ce913c]{border:1px solid var(--border);border-radius:12px;padding:10px;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.item__left[data-v-64ce913c]{min-width:0}.item__name[data-v-64ce913c]{font-weight:900;font-size:13px}.item__sub[data-v-64ce913c]{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60ch}.item__actions[data-v-64ce913c]{display:flex;gap:8px}.btnSmall[data-v-64ce913c]{height:36px;padding:7px 10px}.hint[data-v-64ce913c]{margin-top:12px;font-size:12px}@media(max-width:640px){.grow[data-v-64ce913c]{min-width:0}.boxHead[data-v-64ce913c]{align-items:stretch}.boxHead .btn[data-v-64ce913c]{width:100%}.item[data-v-64ce913c]{align-items:stretch}.item__actions[data-v-64ce913c]{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}.item__actions .btn[data-v-64ce913c]{width:100%}.item__sub[data-v-64ce913c]{max-width:100%}}.page[data-v-b07c82d0]{display:grid;gap:14px}.card[data-v-b07c82d0]{background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:14px;padding:14px;box-shadow:0 6px 24px #0f172a0d}.header[data-v-b07c82d0]{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.header__left[data-v-b07c82d0]{display:grid;gap:4px;min-width:0}.header__right[data-v-b07c82d0]{display:flex;gap:10px;flex-wrap:wrap}.h1[data-v-b07c82d0]{font-size:18px;font-weight:900}.muted[data-v-b07c82d0]{color:var(--muted);font-size:13px}.grid[data-v-b07c82d0]{display:grid;grid-template-columns:1.25fr 1fr;gap:14px;align-items:start}.panel[data-v-b07c82d0]{min-width:0}.card__title[data-v-b07c82d0]{font-size:16px;font-weight:900;margin-bottom:10px}.tableWrap[data-v-b07c82d0]{overflow:auto;border-radius:12px;border:1px solid rgba(15,23,42,.08);-webkit-overflow-scrolling:touch}.table[data-v-b07c82d0]{width:100%;border-collapse:collapse;font-size:14px}.table thead th[data-v-b07c82d0]{text-align:left;font-weight:700;color:#0f172ab3;background:#0f172a08;padding:10px 12px;border-bottom:1px solid rgba(15,23,42,.08)}.table tbody td[data-v-b07c82d0]{padding:10px 12px;border-bottom:1px solid rgba(15,23,42,.06)}.table tbody tr[data-v-b07c82d0]{cursor:pointer}.table tbody tr[data-v-b07c82d0]:hover{background:#2563eb0d}.table tbody tr.active[data-v-b07c82d0]{background:#2563eb14;outline:2px solid rgba(37,99,235,.4);outline-offset:-2px}.titleCell[data-v-b07c82d0]{font-weight:700}.ellipsis[data-v-b07c82d0]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn[data-v-b07c82d0]{padding:10px 12px;border-radius:12px;border:1px solid rgba(15,23,42,.14);background:#fff;cursor:pointer;font-weight:700}.btn[data-v-b07c82d0]:disabled{opacity:.6;cursor:default}.btn--primary[data-v-b07c82d0]{background:#2563eb;border-color:#2563eb;color:#fff}.readersHeader[data-v-b07c82d0]{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.readersHeader__left[data-v-b07c82d0]{min-width:0}.chips[data-v-b07c82d0]{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.chip[data-v-b07c82d0]{border:1px solid rgba(15,23,42,.12);background:#0f172a05;border-radius:999px;padding:6px 10px;font-size:13px;color:#0f172ab3;font-weight:700}.sectionTitle[data-v-b07c82d0]{margin-top:12px;font-weight:900;font-size:14px}.list[data-v-b07c82d0]{display:grid;gap:10px;margin-top:10px}.listItem[data-v-b07c82d0]{border:1px solid rgba(15,23,42,.08);border-radius:12px;padding:10px 12px;background:#fff}.listItem__name[data-v-b07c82d0]{font-weight:900}.listItem__meta[data-v-b07c82d0]{margin-top:2px;font-size:13px;color:#0f172ab3}.error[data-v-b07c82d0]{padding:10px 12px;border-radius:12px;border:1px solid rgba(185,28,28,.25);background:#b91c1c0f;color:#7f1d1d;font-weight:700}.tabs[data-v-b07c82d0]{display:none;padding:10px;gap:8px;grid-auto-flow:column;grid-auto-columns:1fr}.tab[data-v-b07c82d0]{border:1px solid rgba(15,23,42,.14);background:#fff;border-radius:999px;padding:10px 12px;font-weight:900;font-size:13px;cursor:pointer}.tab[data-v-b07c82d0]:disabled{opacity:.55;cursor:default}.tab.is-active[data-v-b07c82d0]{border-color:#2563eb73;box-shadow:0 0 0 3px #2563eb1f}.mobileHint[data-v-b07c82d0]{display:none;margin-top:12px;gap:10px;align-items:center;flex-wrap:wrap}.btnInline[data-v-b07c82d0]{padding:8px 10px;border-radius:999px}.strongText[data-v-b07c82d0]{font-weight:900;color:#0f172ae6}@media(max-width:980px){.grid[data-v-b07c82d0]{grid-template-columns:1fr}}@media(max-width:640px){.tabs[data-v-b07c82d0]{display:grid}.grid[data-v-b07c82d0]{grid-template-columns:1fr}.panel--hidden[data-v-b07c82d0]{display:none}.header__right[data-v-b07c82d0],.header__right .btn[data-v-b07c82d0]{width:100%}.mobileHint[data-v-b07c82d0]{display:flex}.tableWrap[data-v-b07c82d0]{border-radius:12px}.table[data-v-b07c82d0]{font-size:13px}.table thead th[data-v-b07c82d0],.table tbody td[data-v-b07c82d0]{padding:10px}}.page[data-v-a1bcefcc]{display:grid;gap:12px}.head[data-v-a1bcefcc]{padding:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.head__left[data-v-a1bcefcc]{min-width:0}.title[data-v-a1bcefcc]{font-size:16px;font-weight:900}.subtitle[data-v-a1bcefcc]{margin-top:4px;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dot[data-v-a1bcefcc]{opacity:.7}.actions[data-v-a1bcefcc]{display:flex;gap:8px;flex-wrap:wrap}.loading[data-v-a1bcefcc]{padding:12px;color:var(--muted)}.grid[data-v-a1bcefcc]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.block[data-v-a1bcefcc]{padding:12px}.blockTitle[data-v-a1bcefcc]{font-weight:900;display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.badge[data-v-a1bcefcc]{font-size:12px;color:#2563eb;background:#2563eb1a;border:1px solid rgba(37,99,235,.25);padding:2px 8px;border-radius:999px;font-weight:700}.list[data-v-a1bcefcc]{display:grid;gap:10px}.row[data-v-a1bcefcc]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px;border:1px solid rgba(0,0,0,.06);border-radius:12px}.name[data-v-a1bcefcc]{min-width:0}.full[data-v-a1bcefcc]{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta[data-v-a1bcefcc]{margin-top:4px;font-size:12px;color:var(--muted);display:flex;gap:8px;align-items:center;flex-wrap:wrap}.time[data-v-a1bcefcc]{font-size:12px;white-space:nowrap}.muted[data-v-a1bcefcc]{color:var(--muted);font-size:12px}.empty[data-v-a1bcefcc]{padding:12px;color:var(--muted);font-size:13px}.foot[data-v-a1bcefcc]{padding:12px}.mono[data-v-a1bcefcc]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}@media(max-width:980px){.grid[data-v-a1bcefcc]{grid-template-columns:1fr}}@media(max-width:560px){.actions[data-v-a1bcefcc]{width:100%;display:grid;gap:8px}.actions .btn[data-v-a1bcefcc]{width:100%}.row[data-v-a1bcefcc]{flex-direction:column;gap:6px}.time[data-v-a1bcefcc]{white-space:normal}.full[data-v-a1bcefcc]{white-space:normal;word-break:break-word}}.editorWrap[data-v-e0f5fdbb]{display:grid;gap:10px}.toolbar[data-v-e0f5fdbb]{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.sep[data-v-e0f5fdbb]{width:1px;height:22px;background:var(--border);margin:0 4px}.btnSmall[data-v-e0f5fdbb]{height:34px;padding:6px 10px}.editor[data-v-e0f5fdbb]{padding:12px;min-height:320px;overflow:auto}.editor[data-v-e0f5fdbb] .ProseMirror{outline:none;min-height:280px;line-height:1.6;font-size:14px}.editor[data-v-e0f5fdbb] pre{margin:12px 0;padding:12px;border-radius:12px;overflow:auto;border:1px solid rgba(15,23,42,.1);background:#0f172a0a}.editor[data-v-e0f5fdbb] pre code{display:block;white-space:pre}.editor[data-v-e0f5fdbb] table{border-collapse:collapse;width:100%;margin:10px 0}.editor[data-v-e0f5fdbb] th,.editor[data-v-e0f5fdbb] td{border:1px solid var(--border);padding:8px;vertical-align:top}.editor[data-v-e0f5fdbb] th{background:#fafafa}.hint[data-v-e0f5fdbb]{font-size:12px}.page[data-v-3c9cf46a]{display:grid;gap:12px}.head[data-v-3c9cf46a]{padding:12px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}.left[data-v-3c9cf46a]{display:flex;gap:12px;align-items:center;min-width:0}.titles[data-v-3c9cf46a]{min-width:0}.h1[data-v-3c9cf46a]{font-size:18px;font-weight:900;line-height:1.2}.right[data-v-3c9cf46a]{display:flex;gap:10px;flex-wrap:wrap}.body[data-v-3c9cf46a]{padding:14px;display:grid;gap:14px}.grid[data-v-3c9cf46a]{display:grid;grid-template-columns:1fr 320px;gap:12px}.field[data-v-3c9cf46a]{display:grid;gap:8px}.label[data-v-3c9cf46a]{font-weight:800;font-size:13px}.foot[data-v-3c9cf46a]{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;padding-top:8px}.actions[data-v-3c9cf46a]{display:flex;gap:10px;flex-wrap:wrap}.warn[data-v-3c9cf46a]{padding:14px}.warn__title[data-v-3c9cf46a]{font-weight:900;font-size:16px}.warn__text[data-v-3c9cf46a]{margin-top:8px;color:var(--muted);line-height:1.5}@media(max-width:860px){.grid[data-v-3c9cf46a]{grid-template-columns:1fr}}.shell[data-v-43cf2350]{min-height:100vh;display:grid;grid-template-rows:56px 1fr;background:var(--bg)}.topbar[data-v-43cf2350]{background:#ffffffe6;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;position:sticky;top:0;z-index:20;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.topbar__left[data-v-43cf2350]{display:flex;align-items:center;gap:10px;min-width:0}.topbar__right[data-v-43cf2350]{display:flex;gap:12px;align-items:center;min-width:0}.brand[data-v-43cf2350]{display:flex;flex-direction:column;line-height:1.1;min-width:0}.brand__title[data-v-43cf2350]{font-weight:900;font-size:15px;letter-spacing:-.01em}.brand__subtitle[data-v-43cf2350]{font-size:12px;color:var(--muted)}.iconbtn[data-v-43cf2350]{width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:#fff;display:inline-grid;place-items:center;color:var(--text);cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .12s ease}.iconbtn[data-v-43cf2350]:hover{background:#f9fafb}.iconbtn[data-v-43cf2350]:active{transform:translateY(1px)}.iconbtn[data-v-43cf2350]:focus-visible{outline:none;box-shadow:0 0 0 3px #2563eb2e;border-color:#2563eb59}.topbar__burger[data-v-43cf2350]{display:none}.who[data-v-43cf2350]{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:#fff;height:40px;box-sizing:border-box;min-width:0}.who__dot[data-v-43cf2350]{width:8px;height:8px;border-radius:99px;background:var(--success);box-shadow:0 0 0 3px #22c55e1f}.who__name[data-v-43cf2350]{font-weight:800;font-size:12px;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.body[data-v-43cf2350]{display:grid;grid-template-columns:240px 1fr;min-height:0;height:calc(100vh - 56px)}.sidebar[data-v-43cf2350]{background:#fff;border-right:1px solid var(--border);padding:12px;position:sticky;top:56px;height:calc(100vh - 56px);overflow:auto;overscroll-behavior:contain}.menu[data-v-43cf2350]{display:grid;gap:8px}.menu__item[data-v-43cf2350]{display:block;padding:10px 12px;border-radius:12px;border:1px solid var(--border);font-weight:800;font-size:13px;color:var(--text);background:#fff;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease}.menu__item[data-v-43cf2350]:hover{background:#f9fafb}.menu__item[data-v-43cf2350]:active{transform:translateY(1px)}.menu__item[data-v-43cf2350]:focus-visible{outline:none;box-shadow:0 0 0 3px #2563eb2e;border-color:#2563eb59}.menu__item.is-active[data-v-43cf2350]{border-color:#2563eb59;box-shadow:0 0 0 3px #2563eb1f}.content[data-v-43cf2350]{min-width:0;overflow:auto;overscroll-behavior:contain;padding:clamp(12px,1.6vw,20px)}.content[data-v-43cf2350]>*{max-width:1120px;margin-left:auto;margin-right:auto}.drawer[data-v-43cf2350]{position:fixed;inset:0;z-index:50;pointer-events:none}.drawer__overlay[data-v-43cf2350]{position:absolute;inset:0;background:#0f172a6b;opacity:0;transition:opacity .16s ease}.drawer__panel[data-v-43cf2350]{position:absolute;top:0;left:0;height:100%;width:min(86vw,320px);background:#fff;border-right:1px solid var(--border);padding:12px;padding-top:calc(12px + env(safe-area-inset-top));padding-bottom:calc(12px + env(safe-area-inset-bottom));transform:translate(-105%);transition:transform .2s ease;box-sizing:border-box;overflow:auto;overscroll-behavior:contain}.drawer__head[data-v-43cf2350]{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;background:#fff;border-bottom:1px solid rgba(15,23,42,.06);margin:0 -12px 12px;padding:10px 12px}.drawer__title[data-v-43cf2350]{font-weight:900;font-size:14px}.drawer.is-open[data-v-43cf2350]{pointer-events:auto}.drawer.is-open .drawer__overlay[data-v-43cf2350]{opacity:1}.drawer.is-open .drawer__panel[data-v-43cf2350]{transform:translate(0)}@media(max-width:960px){.body[data-v-43cf2350]{grid-template-columns:1fr;height:auto;min-height:0}.sidebar--desktop[data-v-43cf2350]{display:none}.topbar__burger[data-v-43cf2350]{display:inline-grid}.content[data-v-43cf2350]{overflow:visible;padding:12px}.content[data-v-43cf2350]>*{max-width:100%}.who__name[data-v-43cf2350]{max-width:160px}.brand__subtitle[data-v-43cf2350]{display:none}}@media(max-width:420px){.topbar[data-v-43cf2350]{padding:0 10px}.who[data-v-43cf2350]{display:none}.brand__title[data-v-43cf2350]{font-size:14px}}.page[data-v-c5016eea]{display:grid;gap:12px}.head[data-v-c5016eea]{padding:12px;display:flex;align-items:center;justify-content:space-between}.title[data-v-c5016eea]{font-size:16px;font-weight:900}.subtitle[data-v-c5016eea]{margin-top:4px;font-size:13px;color:var(--muted)}.grid[data-v-c5016eea]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.box[data-v-c5016eea]{padding:14px;min-width:0}.box__title[data-v-c5016eea]{font-weight:900;margin-bottom:12px}.kv[data-v-c5016eea]{display:grid;gap:6px;padding:10px;border:1px solid var(--border);border-radius:12px;margin-bottom:10px;min-width:0}.val[data-v-c5016eea]{font-weight:900;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stats[data-v-c5016eea]{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.stat[data-v-c5016eea]{padding:12px;border:1px solid var(--border);border-radius:12px;min-width:0}.stat__label[data-v-c5016eea]{font-size:12px;color:var(--muted);font-weight:800}.stat__value[data-v-c5016eea]{margin-top:6px;font-size:22px;font-weight:900}@media(max-width:900px){.grid[data-v-c5016eea]{grid-template-columns:1fr}}@media(max-width:560px){.box[data-v-c5016eea]{padding:12px}.stats[data-v-c5016eea]{grid-template-columns:1fr}.val[data-v-c5016eea]{white-space:normal;word-break:break-word}}.page[data-v-3e42ea9d]{display:grid;gap:12px}.head[data-v-3e42ea9d]{padding:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.head__left[data-v-3e42ea9d]{min-width:0}.title[data-v-3e42ea9d]{font-size:16px;font-weight:900}.subtitle[data-v-3e42ea9d]{margin-top:4px;font-size:13px;color:var(--muted)}.grid[data-v-3e42ea9d]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.course[data-v-3e42ea9d]{padding:14px;text-align:left;cursor:pointer;min-width:0}.course[data-v-3e42ea9d]:hover{border-color:#2563eb59;box-shadow:0 0 0 3px #2563eb14}.course__title[data-v-3e42ea9d]{font-weight:900;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course__desc[data-v-3e42ea9d]{margin-top:8px;color:var(--muted);font-size:13px;line-height:1.35}.course__meta[data-v-3e42ea9d]{margin-top:10px;display:grid;gap:6px;font-size:12px;color:var(--muted)}.metaRow[data-v-3e42ea9d]{display:flex;gap:8px;align-items:center;min-width:0}.metaLabel[data-v-3e42ea9d]{min-width:92px;flex:0 0 auto}.metaValue[data-v-3e42ea9d]{color:var(--text);font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pill[data-v-3e42ea9d]{display:inline-flex;align-items:center;height:20px;padding:0 10px;border-radius:999px;border:1px solid rgba(37,99,235,.25);color:#2563eb;background:#2563eb0f;font-weight:800}.loading[data-v-3e42ea9d],.empty[data-v-3e42ea9d]{padding:12px;color:var(--muted)}@media(max-width:980px){.grid[data-v-3e42ea9d]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.head .btn[data-v-3e42ea9d]{width:100%}}@media(max-width:560px){.grid[data-v-3e42ea9d]{grid-template-columns:1fr}.course__title[data-v-3e42ea9d]{white-space:normal;word-break:break-word}.metaRow[data-v-3e42ea9d]{flex-direction:column;align-items:flex-start;gap:4px}.metaLabel[data-v-3e42ea9d]{min-width:0}.metaValue[data-v-3e42ea9d]{white-space:normal;word-break:break-word}}.page[data-v-7ac76578]{display:grid;gap:12px}.head[data-v-7ac76578]{padding:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.head__left[data-v-7ac76578]{display:flex;gap:12px;align-items:center;min-width:0}.head__titleWrap[data-v-7ac76578]{min-width:0}.title[data-v-7ac76578]{font-size:16px;font-weight:900}.subtitle[data-v-7ac76578]{margin-top:4px;font-size:13px;color:var(--muted)}.loading[data-v-7ac76578]{padding:12px;color:var(--muted)}.tableCard[data-v-7ac76578]{padding:0;overflow:hidden}.table-wrap[data-v-7ac76578]{overflow:auto;-webkit-overflow-scrolling:touch}.table[data-v-7ac76578]{width:100%;border-collapse:collapse;font-size:13px}.table thead th[data-v-7ac76578]{text-align:left;padding:12px;color:var(--muted);font-weight:900;border-bottom:1px solid var(--border);background:#fafafa}.table tbody td[data-v-7ac76578]{padding:12px;border-bottom:1px solid var(--border)}.row[data-v-7ac76578]{cursor:pointer}.row:hover td[data-v-7ac76578]{background:#fafafa}.muted[data-v-7ac76578]{color:var(--muted)}.truncate[data-v-7ac76578]{max-width:820px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-row[data-v-7ac76578]{color:var(--muted);text-align:center;padding:18px 12px}.badge[data-v-7ac76578]{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;border:1px solid var(--border);font-weight:900;font-size:12px}.badge--ok[data-v-7ac76578]{border-color:#22c55e59;background:#22c55e14}.badge--muted[data-v-7ac76578]{background:#f3f4f6}@media(max-width:640px){.head .btn[data-v-7ac76578]{width:100%}.table[data-v-7ac76578]{display:block}.table thead[data-v-7ac76578]{display:none}.table tbody[data-v-7ac76578]{display:grid;gap:10px;padding:10px}.row[data-v-7ac76578]{display:grid;gap:8px;padding:12px;border:1px solid var(--border);border-radius:14px;background:#fff}.td[data-v-7ac76578]{display:grid;grid-template-columns:110px 1fr;gap:10px;align-items:baseline;min-width:0;padding:0!important;border-bottom:none!important}.td[data-v-7ac76578]:before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:900}.truncate[data-v-7ac76578]{max-width:100%;white-space:normal;word-break:break-word}.row:hover td[data-v-7ac76578]{background:transparent}}@media(max-width:380px){.td[data-v-7ac76578]{grid-template-columns:1fr;gap:4px}}.page[data-v-466ec80f]{display:grid;gap:12px}.head[data-v-466ec80f]{padding:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.head__left[data-v-466ec80f]{display:flex;align-items:center;gap:12px;min-width:0}.head__titleWrap[data-v-466ec80f]{min-width:0}.head__right[data-v-466ec80f]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.title[data-v-466ec80f]{font-size:16px;font-weight:900;line-height:1.2;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta[data-v-466ec80f]{margin-top:4px;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dot[data-v-466ec80f]{opacity:.7}.badge[data-v-466ec80f]{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;border:1px solid rgba(15,23,42,.12);background:#0f172a08;color:#0f172acc;font-weight:600}.badge.ok[data-v-466ec80f]{border-color:#16a34a40;background:#16a34a14;color:#16a34ae6}.loading[data-v-466ec80f],.empty[data-v-466ec80f]{padding:12px;color:var(--muted)}.content[data-v-466ec80f]{padding:16px}.html[data-v-466ec80f]{line-height:1.6;font-size:14px;color:#0f172aeb}.html[data-v-466ec80f] h1,.html[data-v-466ec80f] h2,.html[data-v-466ec80f] h3{margin:16px 0 10px;line-height:1.25}.html[data-v-466ec80f] h1{font-size:20px}.html[data-v-466ec80f] h2{font-size:18px}.html[data-v-466ec80f] h3{font-size:16px}.html[data-v-466ec80f] p{margin:10px 0}.html[data-v-466ec80f] ul,.html[data-v-466ec80f] ol{margin:10px 0;padding-left:22px}.html[data-v-466ec80f] code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px}.html[data-v-466ec80f] p code,.html[data-v-466ec80f] li code{padding:1px 6px;border-radius:8px;background:#0f172a0f;border:1px solid rgba(15,23,42,.08)}.html[data-v-466ec80f] pre{margin:12px 0;padding:12px;border-radius:12px;overflow:auto;border:1px solid rgba(15,23,42,.1);background:#0f172a0a;white-space:pre}.html[data-v-466ec80f] pre code{white-space:pre}.html[data-v-466ec80f] table{width:100%;border-collapse:collapse;margin:12px 0}.html[data-v-466ec80f] th,.html[data-v-466ec80f] td{border:1px solid var(--border);padding:8px;vertical-align:top}.html[data-v-466ec80f] th{background:#fafafa;font-weight:800}@media(max-width:680px){.head__right[data-v-466ec80f]{width:100%;display:grid;grid-template-columns:1fr;gap:8px}.head__right .btn[data-v-466ec80f]{width:100%}.title[data-v-466ec80f]{white-space:normal;word-break:break-word}.content[data-v-466ec80f]{padding:12px}}
