.login-page[data-v-65d86b70]{grid-template-columns:minmax(0,1.15fr) minmax(420px,.85fr);min-height:100vh;display:grid}.product-panel[data-v-65d86b70]{color:#d9e7ea;background:linear-gradient(140deg,#14706fd6,#15212bf5),linear-gradient(90deg,#0000 0 48px,#ffffff0d 48px 49px,#0000 49px 96px);flex-direction:column;justify-content:space-between;gap:44px;padding:48px clamp(34px,6vw,86px);display:flex}.brand-row[data-v-65d86b70]{align-items:center;gap:14px;display:flex}.brand-mark[data-v-65d86b70]{border-radius:var(--radius-lg);color:#0d3636;background:#dff5f1;place-items:center;width:44px;height:44px;font-size:22px;font-weight:900;display:grid}.brand-row strong[data-v-65d86b70]{color:#fff;font-size:20px;display:block}.brand-row span[data-v-65d86b70]{color:#ffffffad;margin-top:2px;font-size:13px;display:block}.eyebrow[data-v-65d86b70]{color:#f2b173;text-transform:uppercase;font-size:12px;font-weight:800}.product-copy[data-v-65d86b70]{max-width:680px}.product-copy h1[data-v-65d86b70]{color:#fff;margin:14px 0 18px;font-size:clamp(34px,5vw,58px);line-height:1.12}.product-copy p[data-v-65d86b70]:last-child{color:#ffffffbd;max-width:600px;font-size:17px;line-height:1.8}.capability-grid[data-v-65d86b70]{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.capability-grid div[data-v-65d86b70]{border-radius:var(--radius-lg);min-height:132px;transition:background var(--transition);background:#ffffff12;border:1px solid #ffffff24;padding:18px}.capability-grid div[data-v-65d86b70]:hover{background:#ffffff1f}.capability-grid span[data-v-65d86b70]{color:#f2b173;font-size:12px;font-weight:900}.capability-grid strong[data-v-65d86b70]{color:#fff;margin:10px 0 8px;display:block}.capability-grid p[data-v-65d86b70]{color:#ffffffa8;font-size:13px;line-height:1.6}.login-panel[data-v-65d86b70]{background:var(--page-bg);place-items:center;padding:32px;display:grid}.form-card[data-v-65d86b70]{border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--surface);width:min(100%,430px);box-shadow:var(--shadow);padding:32px}.form-heading h2[data-v-65d86b70]{margin:8px 0 6px;font-size:32px}.form-heading span[data-v-65d86b70]{color:var(--text-muted);font-size:13px}.role-switch[data-v-65d86b70]{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-muted);grid-template-columns:1fr 1fr;gap:4px;margin:24px 0 20px;padding:4px;display:grid}.role-switch button[data-v-65d86b70]{border-radius:var(--radius);color:#5a6872;width:100%;height:38px;transition:all var(--transition);background:0 0;font-weight:700}.role-switch button[data-v-65d86b70]:hover:not(.active){color:var(--text);background:#ffffff80}.role-switch button.active[data-v-65d86b70]{color:#fff;background:var(--primary);box-shadow:0 4px 14px #14706f47}.role-switch button[data-v-65d86b70]:only-child{grid-column:1/-1}.form-item[data-v-65d86b70]{gap:8px;margin-bottom:16px;display:grid}.form-item span[data-v-65d86b70]{color:var(--heading);font-size:14px;font-weight:800}.form-item input[data-v-65d86b70],.form-item select[data-v-65d86b70]{border:1px solid var(--border);border-radius:var(--radius);height:46px;transition:all var(--transition);outline:none;padding:0 12px;font-size:15px}.form-item input[data-v-65d86b70]:focus,.form-item select[data-v-65d86b70]:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2f6f7324}.message[data-v-65d86b70]{border-radius:var(--radius);margin-bottom:14px;padding:10px 12px;font-size:14px;font-weight:700}.message.error[data-v-65d86b70]{color:var(--danger);background:#fff1ef;border:1px solid #ffd1cc}.message.success[data-v-65d86b70]{color:var(--success);background:#e8f6ef;border:1px solid #c3e6d6}.submit-btn[data-v-65d86b70]{border-radius:var(--radius-lg);color:#fff;background:var(--primary);width:100%;height:48px;transition:all var(--transition);font-size:16px;font-weight:700}.submit-btn[data-v-65d86b70]:hover{background:var(--primary-strong);transform:translateY(-1px);box-shadow:0 8px 22px #14706f3d}.switch-area[data-v-65d86b70]{color:var(--text-muted);justify-content:center;gap:6px;margin-top:18px;font-size:14px;display:flex}.text-btn[data-v-65d86b70]{color:var(--primary-strong);background:0 0;font-weight:800}.text-btn[data-v-65d86b70]:hover{color:var(--primary)}@media (width<=980px){.login-page[data-v-65d86b70]{grid-template-columns:1fr}.product-panel[data-v-65d86b70]{min-height:auto}}@media (width<=680px){.product-panel[data-v-65d86b70]{padding:28px 20px}.capability-grid[data-v-65d86b70]{grid-template-columns:1fr}.login-panel[data-v-65d86b70]{padding:20px}.form-card[data-v-65d86b70]{padding:24px}}.assign-workbench[data-v-50451aea]{gap:18px;display:grid}.summary-strip[data-v-50451aea]{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:22px 24px;display:grid}.section-kicker[data-v-50451aea]{color:var(--accent);text-transform:uppercase;margin-bottom:6px;font-size:12px;font-weight:900}.summary-strip h3[data-v-50451aea]{margin-bottom:6px;font-size:22px}.summary-strip>div:first-child>span[data-v-50451aea]{color:var(--text-muted);font-size:14px}.summary-metrics[data-v-50451aea]{grid-template-columns:repeat(3,auto);gap:24px;min-width:280px;display:grid}.summary-metrics div[data-v-50451aea]{text-align:center}.summary-metrics strong[data-v-50451aea]{color:var(--heading);font-size:28px;display:block}.summary-metrics span[data-v-50451aea]{color:var(--text-muted);margin-top:4px;font-size:13px;display:block}.notice[data-v-50451aea]{border-radius:var(--radius);padding:12px 16px;font-size:14px;font-weight:700}.notice.success[data-v-50451aea]{color:var(--success);background:#e8f6ef;border:1px solid #c3e6d6}.notice.error[data-v-50451aea]{color:var(--danger);background:#fff0ef;border:1px solid #ffd1cc}.assign-grid[data-v-50451aea]{grid-template-columns:minmax(300px,.95fr) minmax(440px,1.05fr);gap:16px;display:grid}.panel[data-v-50451aea]{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm);padding:22px}.panel-heading[data-v-50451aea]{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.panel-heading h4[data-v-50451aea]{margin-bottom:4px;font-size:18px}.panel-heading p[data-v-50451aea]{color:var(--text-muted);font-size:14px}.search-input[data-v-50451aea]{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-soft);width:192px;height:38px;transition:border-color var(--transition), box-shadow var(--transition);outline:none;padding:0 12px;font-size:14px}.search-input[data-v-50451aea]:focus{border-color:var(--primary);box-shadow:0 0 0 3px #14706f1a}.student-list[data-v-50451aea]{border:1px solid var(--border);border-radius:var(--radius);max-height:440px;overflow-y:auto}.student-item[data-v-50451aea]{border-bottom:1px solid #eef2f6}.student-item[data-v-50451aea]:last-child{border-bottom:0}.student-row[data-v-50451aea]{text-align:left;width:100%;transition:background var(--transition);background:0 0;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:13px 16px;display:grid}.student-row[data-v-50451aea]:hover{background:#f6f9fb}.student-item.selected .student-row[data-v-50451aea]{border-left:4px solid var(--primary);border-radius:0 var(--radius) var(--radius) 0;background:#eaf5f3}.student-info strong[data-v-50451aea]{color:var(--heading);font-size:15px;display:block}.student-info small[data-v-50451aea]{color:var(--text-muted);margin-top:2px;font-size:12px;display:block}.student-count[data-v-50451aea]{color:var(--text-muted);white-space:nowrap;border-radius:var(--radius-full);background:#eef2f5;padding:4px 10px;font-size:13px;font-weight:700}.expand-arrow[data-v-50451aea]{border-radius:var(--radius);width:28px;height:28px;color:var(--text-muted);transition:transform var(--transition), color var(--transition), background var(--transition);place-items:center;font-size:10px;display:grid}.expand-arrow[data-v-50451aea]:hover{color:var(--primary);background:#2f6f7314}.expand-arrow.expanded[data-v-50451aea]{color:var(--primary);transform:rotate(180deg)}.student-detail[data-v-50451aea]{border-top:1px solid var(--border);background:#f8fbfd;padding:12px 14px;animation:.2s slideDown-50451aea}@keyframes slideDown-50451aea{0%{opacity:0;max-height:0}to{opacity:1;max-height:300px}}.detail-empty[data-v-50451aea]{color:var(--text-muted);padding:8px 0;font-size:13px}.detail-list[data-v-50451aea]{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.detail-item[data-v-50451aea]{border-radius:var(--radius);border:1px solid var(--border);background:#fff;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;font-size:13px;display:flex}.detail-title[data-v-50451aea]{color:var(--text);font-weight:600}.status-sm[data-v-50451aea]{border-radius:var(--radius-full);white-space:nowrap;align-items:center;min-height:24px;padding:2px 10px;font-size:12px;font-weight:700;display:inline-flex}.status-sm.pending[data-v-50451aea]{color:var(--warning);background:#fff7e6}.status-sm.running[data-v-50451aea]{color:var(--primary-strong);background:#e9f4f3}.status-sm.done[data-v-50451aea]{color:var(--success);background:#e8f6ef}.selection-count[data-v-50451aea]{border-radius:var(--radius-full);color:var(--primary-strong);background:#e9f4f3;padding:7px 14px;font-size:13px;font-weight:800}.table-frame[data-v-50451aea]{border:1px solid var(--border);border-radius:var(--radius);width:100%;overflow:auto}th[data-v-50451aea],td[data-v-50451aea]{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:13px 14px}th[data-v-50451aea]{color:var(--text-muted);background:#f6f8fb;font-size:13px;font-weight:800}tbody tr:last-child td[data-v-50451aea]{border-bottom:0}tbody tr[data-v-50451aea]:not(.disabled){cursor:pointer;transition:background var(--transition)}tbody tr[data-v-50451aea]:not(.disabled):hover{background:#f0f8f7}tbody tr.disabled[data-v-50451aea]{color:var(--text-muted);background:#fafafa}input[type=checkbox][data-v-50451aea]{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.status-tag[data-v-50451aea]{border-radius:var(--radius-full);white-space:nowrap;align-items:center;min-height:28px;padding:4px 12px;font-size:13px;font-weight:800;display:inline-flex}.status-tag.ready[data-v-50451aea]{color:var(--primary-strong);background:#e9f4f3}.status-tag.pending[data-v-50451aea]{color:var(--warning);background:#fff7e6}.status-tag.running[data-v-50451aea]{color:var(--primary-strong);background:#e9f4f3}.status-tag.done[data-v-50451aea]{color:var(--success);background:#e8f6ef}.assign-actions[data-v-50451aea]{color:var(--text-muted);border-top:1px solid #eef2f5;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;padding-top:14px;display:flex}.assign-btn[data-v-50451aea]{border-radius:var(--radius-lg);color:#fff;background:var(--primary);min-width:128px;height:44px;transition:all var(--transition);padding:0 22px;font-size:15px;font-weight:700}.assign-btn[data-v-50451aea]:hover:not(:disabled){background:var(--primary-strong);transform:translateY(-1px);box-shadow:0 8px 22px #14706f47}.assign-btn[data-v-50451aea]:disabled{cursor:not-allowed;opacity:.4;box-shadow:none}.records-panel[data-v-50451aea]{padding-bottom:20px}.reassign-btn[data-v-50451aea]{border-radius:var(--radius);color:#fff;background:var(--accent);transition:all var(--transition);padding:5px 14px;font-size:12px;font-weight:700}.reassign-btn[data-v-50451aea]:hover{background:#c0682a;box-shadow:0 4px 10px #d6783647}.no-action[data-v-50451aea]{color:var(--text-muted);font-size:13px}.empty-block[data-v-50451aea],.empty-cell[data-v-50451aea]{color:var(--text-muted);text-align:center}.empty-block[data-v-50451aea]{border:1px dashed var(--border);border-radius:var(--radius-lg);background:#fbfcfe;padding:32px 16px;font-size:14px;line-height:1.6}.empty-block.large[data-v-50451aea]{place-items:center;min-height:260px;display:grid}.empty-cell[data-v-50451aea]{height:90px}@media (width<=1100px){.summary-strip[data-v-50451aea],.assign-grid[data-v-50451aea]{grid-template-columns:1fr}.summary-metrics[data-v-50451aea]{min-width:0}}@media (width<=680px){.summary-metrics[data-v-50451aea]{grid-template-columns:1fr}.panel-heading[data-v-50451aea],.assign-actions[data-v-50451aea]{flex-direction:column;align-items:stretch}.search-input[data-v-50451aea]{width:100%}.student-row[data-v-50451aea]{grid-template-columns:1fr auto}.expand-arrow[data-v-50451aea]{grid-column:1/-1;justify-self:center}}.password-mask[data-v-3511dafb]{z-index:2000;background:#0000006b;place-items:center;display:grid;position:fixed;inset:0}.password-dialog[data-v-3511dafb]{border-radius:var(--radius-xl);background:#fff;width:min(92vw,420px);padding:26px;box-shadow:0 20px 42px #0000002e}.password-dialog h3[data-v-3511dafb]{color:var(--heading);margin:0 0 18px;font-size:22px}.form-item[data-v-3511dafb]{gap:7px;margin-bottom:14px;display:grid}.form-item span[data-v-3511dafb]{color:var(--heading);font-size:13px;font-weight:800}.form-item input[data-v-3511dafb]{border:1px solid var(--border);border-radius:var(--radius);outline:none;height:44px;padding:0 12px;font-size:14px}.form-item input[data-v-3511dafb]:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2f6f731f}.message[data-v-3511dafb]{border-radius:var(--radius);margin:8px 0 14px;padding:10px 12px;font-size:14px;font-weight:700}.message.error[data-v-3511dafb]{color:var(--danger);background:var(--danger-soft);border:1px solid #ffd1cc}.message.success[data-v-3511dafb]{color:var(--success);background:#e8f6ef;border:1px solid #c3e6d6}.dialog-actions[data-v-3511dafb]{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.cancel-btn[data-v-3511dafb],.confirm-btn[data-v-3511dafb]{border-radius:var(--radius);cursor:pointer;border:0;height:38px;padding:0 18px;font-weight:800}.cancel-btn[data-v-3511dafb]{color:#555;background:#e0e4e8}.confirm-btn[data-v-3511dafb]{color:#fff;background:var(--primary)}.confirm-btn[data-v-3511dafb]:disabled{opacity:.5;cursor:not-allowed}.admin-shell[data-v-64ab19ed]{background:var(--page-bg);grid-template-columns:252px minmax(0,1fr);min-height:100vh;display:grid}.sidebar[data-v-64ab19ed]{background:var(--ink);color:#ffffffb8;border-right:1px solid #ffffff0f;height:100vh;padding:22px 16px;position:sticky;top:0}.brand-area[data-v-64ab19ed]{align-items:center;gap:12px;margin-bottom:28px;padding:0 8px;display:flex}.brand-mark[data-v-64ab19ed]{border-radius:var(--radius-lg);width:42px;height:42px;color:var(--ink);background:#dff5f1;place-items:center;font-size:22px;font-weight:900;display:grid}.brand-area strong[data-v-64ab19ed]{color:#fff;font-size:18px;display:block}.brand-area span[data-v-64ab19ed]{margin-top:2px;font-size:12px;display:block}.side-menu[data-v-64ab19ed]{gap:6px;display:grid}.menu-button[data-v-64ab19ed]{border-radius:var(--radius-lg);color:#ffffffb3;text-align:left;width:100%;min-height:60px;transition:all var(--transition);background:0 0;grid-template-columns:38px 1fr;align-items:center;gap:10px;padding:10px;display:grid}.menu-button[data-v-64ab19ed]:hover{color:#fff;background:#ffffff14}.menu-button.active[data-v-64ab19ed]{color:#fff;background:#ffffff1a;box-shadow:inset 3px 0 #f2b173}.menu-icon[data-v-64ab19ed]{border-radius:var(--radius);color:#dff5f1;background:#14706f61;place-items:center;width:38px;height:38px;font-weight:900;display:grid}.menu-button strong[data-v-64ab19ed],.menu-button small[data-v-64ab19ed]{display:block}.menu-button small[data-v-64ab19ed]{color:#ffffff7a;margin-top:2px;font-size:12px}.content-area[data-v-64ab19ed]{min-width:0;padding:26px clamp(20px,3vw,34px)}.top-bar[data-v-64ab19ed]{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:22px;display:flex}.eyebrow[data-v-64ab19ed]{color:var(--accent);text-transform:uppercase;font-size:12px;font-weight:900}.top-bar h1[data-v-64ab19ed]{margin:6px 0;font-size:30px}.top-bar span[data-v-64ab19ed],.panel-header p[data-v-64ab19ed]{color:var(--text-muted)}.user-area[data-v-64ab19ed]{align-items:center;gap:10px;display:flex}.user-area div[data-v-64ab19ed]{text-align:right;min-width:100px;padding-right:8px}.user-area span[data-v-64ab19ed]{color:var(--text-muted);font-size:12px;display:block}.user-area strong[data-v-64ab19ed]{display:block}.ghost-btn[data-v-64ab19ed],.logout-btn[data-v-64ab19ed]{border-radius:var(--radius);height:38px;transition:all var(--transition);padding:0 16px;font-weight:700}.ghost-btn[data-v-64ab19ed]{color:var(--primary-strong);background:var(--primary-soft)}.logout-btn[data-v-64ab19ed]{color:var(--text);background:var(--surface);border:1px solid var(--border)}.inline-alert[data-v-64ab19ed]{border-radius:var(--radius);margin-bottom:16px;padding:12px 14px;font-weight:700}.inline-alert.error[data-v-64ab19ed]{color:var(--danger);background:var(--danger-soft);border:1px solid #ffd1cc}.stat-grid[data-v-64ab19ed]{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px;display:grid}.stat-card[data-v-64ab19ed]{border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:var(--radius-lg);background:var(--surface);min-height:118px;box-shadow:var(--shadow-sm);padding:18px}.stat-card.accent[data-v-64ab19ed]{border-left-color:var(--accent)}.stat-card.success[data-v-64ab19ed]{border-left-color:var(--success)}.stat-card span[data-v-64ab19ed],.stat-card small[data-v-64ab19ed]{color:var(--text-muted);display:block}.stat-card strong[data-v-64ab19ed]{color:var(--heading);margin:10px 0 4px;font-size:34px;line-height:1;display:block}.workspace-panel[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm);padding:20px}.panel-header[data-v-64ab19ed]{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.panel-header h2[data-v-64ab19ed]{margin-bottom:6px;font-size:22px}.primary-btn[data-v-64ab19ed]{border-radius:var(--radius);color:#fff;background:var(--primary);height:38px;padding:0 18px;font-weight:700}.table-wrap[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;overflow:auto}th[data-v-64ab19ed],td[data-v-64ab19ed]{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:13px 14px}th[data-v-64ab19ed]{color:var(--text-muted);background:var(--surface-soft);font-size:13px;font-weight:900}tbody tr[data-v-64ab19ed]:hover{background:#f8fbfb}tr:last-child td[data-v-64ab19ed]{border-bottom:0}.empty-cell[data-v-64ab19ed]{min-height:82px;color:var(--text-muted);text-align:center;padding:18px}.progress-cell[data-v-64ab19ed]{grid-template-columns:minmax(120px,1fr) 44px;align-items:center;gap:10px;max-width:260px;display:grid}.progress-line[data-v-64ab19ed]{background:#e0e8ec;border-radius:999px;height:8px;overflow:hidden}.progress-line span[data-v-64ab19ed]{border-radius:inherit;background:linear-gradient(90deg, var(--primary), var(--accent));height:100%;transition:width .4s;display:block}.analysis-grid[data-v-64ab19ed]{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.analysis-grid>div[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius);background:#f8fbfc;padding:14px}.analysis-grid span[data-v-64ab19ed]{color:var(--text-muted);font-size:12px;display:block}.analysis-grid strong[data-v-64ab19ed]{color:var(--heading);margin-top:6px;font-size:26px;display:block}.analysis-picker-panel[data-v-64ab19ed]{border-radius:var(--radius);background:#fbfdfd;border:1px solid #d7e5e4;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;padding:14px 16px;display:flex}.analysis-picker-panel strong[data-v-64ab19ed]{color:var(--heading);font-size:16px;display:block}.analysis-picker-panel div span[data-v-64ab19ed]{color:var(--text-muted);margin-top:4px;font-size:12px;display:block}.analysis-select[data-v-64ab19ed]{gap:6px;min-width:240px;display:grid}.analysis-select span[data-v-64ab19ed]{color:var(--text-muted);font-size:12px;font-weight:800}.analysis-select select[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius);height:40px;color:var(--heading);background:#fff;outline:none;padding:0 12px;font-weight:800}.analysis-select select[data-v-64ab19ed]:focus{border-color:var(--primary);box-shadow:0 0 0 3px #14706f1a}.chart-grid[data-v-64ab19ed]{grid-template-columns:.9fr 1fr 1.1fr;gap:12px;margin-bottom:18px;display:grid}.chart-card[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius);background:#fbfdfd;min-width:0;padding:16px}.chart-card header[data-v-64ab19ed]{justify-content:space-between;gap:12px;margin-bottom:14px;display:flex}.chart-card header strong[data-v-64ab19ed]{color:var(--heading)}.chart-card header span[data-v-64ab19ed],.bar-row span[data-v-64ab19ed]{color:var(--text-muted);font-size:12px}.big-rate[data-v-64ab19ed]{color:var(--heading);margin-bottom:10px;font-size:34px;font-weight:900;line-height:1}.bar-list[data-v-64ab19ed]{gap:10px;display:grid}.bar-row[data-v-64ab19ed]{grid-template-columns:minmax(110px,.9fr) minmax(100px,1fr);align-items:center;gap:12px;display:grid}.bar-row strong[data-v-64ab19ed]{color:var(--heading);font-size:13px;display:block}.mini-bar[data-v-64ab19ed]{background:#e0e8ec;border-radius:999px;height:8px;overflow:hidden}.mini-bar span[data-v-64ab19ed]{border-radius:inherit;background:linear-gradient(90deg, var(--primary), var(--accent));height:100%;display:block}.selected-student-title[data-v-64ab19ed]{align-items:baseline;gap:8px;margin:4px 0 12px;display:flex}.selected-student-title strong[data-v-64ab19ed]{color:var(--heading);font-size:18px}.selected-student-title span[data-v-64ab19ed]{color:var(--text-muted);font-weight:800}.demo-history-grid[data-v-64ab19ed]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.demo-history-card[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;min-width:0;overflow:hidden}.demo-history-head[data-v-64ab19ed]{border-bottom:1px solid var(--border);background:#f8fbfb;justify-content:space-between;align-items:center;gap:12px;padding:16px;display:flex}.demo-history-head span[data-v-64ab19ed]{color:var(--accent);margin-bottom:4px;font-size:12px;font-weight:900;display:block}.demo-history-head strong[data-v-64ab19ed]{color:var(--heading);font-size:20px;display:block}.demo-history-stats[data-v-64ab19ed]{text-align:right}.demo-history-stats strong[data-v-64ab19ed]{font-size:28px;line-height:1}.demo-history-stats small[data-v-64ab19ed]{color:var(--text-muted);white-space:nowrap;margin-top:4px;display:block}.sub-project-list[data-v-64ab19ed]{gap:10px;padding:14px;display:grid}.sub-project-card[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius);background:#fff;overflow:hidden}.sub-project-main[data-v-64ab19ed]{text-align:left;background:0 0;grid-template-columns:minmax(0,1fr) 64px;align-items:center;gap:12px;width:100%;padding:14px;display:grid}.sub-project-main[data-v-64ab19ed]:hover{background:#f6faf9}.sub-project-main strong[data-v-64ab19ed]{color:var(--heading);display:block}.sub-project-main span[data-v-64ab19ed]{color:var(--text-muted);margin-top:4px;font-size:12px;line-height:1.5;display:block}.sub-project-stat[data-v-64ab19ed]{text-align:right}.sub-project-stat strong[data-v-64ab19ed]{color:var(--primary-strong);font-size:26px;line-height:1;display:block}.sub-project-stat span[data-v-64ab19ed]{white-space:nowrap;margin-top:3px}.sub-record-list[data-v-64ab19ed]{gap:12px;padding:0 12px 12px;display:grid}.sub-record-card[data-v-64ab19ed]{border-radius:var(--radius);transition:border-color var(--transition), box-shadow var(--transition), transform var(--transition);background:linear-gradient(#fff 0%,#f8fbfb 100%);border:1px solid #d7e5e4;gap:12px;padding:12px;display:grid;box-shadow:0 8px 18px #1034340f}.sub-record-card[data-v-64ab19ed]:hover{border-color:#b9d8d5;transform:translateY(-1px);box-shadow:0 12px 24px #10343417}.sub-record-card.active[data-v-64ab19ed]{border-color:var(--primary);box-shadow:0 12px 26px #14706f24}.record-summary[data-v-64ab19ed]{text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) 82px auto;align-items:center;gap:14px;width:100%;padding:0;display:grid}.record-title[data-v-64ab19ed]{gap:5px;min-width:0;display:grid}.record-badge[data-v-64ab19ed]{border-radius:var(--radius-full);width:fit-content;color:var(--primary-strong);background:var(--primary-soft);padding:4px 8px;font-size:12px;font-weight:900}.record-summary strong[data-v-64ab19ed]{color:var(--heading);font-size:15px;display:block}.record-summary span[data-v-64ab19ed]{color:var(--text-muted);font-size:12px;display:block}.record-score[data-v-64ab19ed]{border-radius:var(--radius);text-align:center;background:#eef8f6;min-width:74px;padding:8px 10px}.record-score small[data-v-64ab19ed]{color:var(--text-muted);font-size:11px;font-weight:900;display:block}.record-score strong[data-v-64ab19ed]{color:var(--primary-strong);font-size:30px;line-height:1;display:block}.record-toggle[data-v-64ab19ed]{min-width:74px;color:var(--accent);text-align:right;justify-self:end;font-size:12px;font-weight:900}.record-detail[data-v-64ab19ed]{border-top:1px dashed #c9dedd;gap:12px;padding-top:12px;display:grid}.record-comment[data-v-64ab19ed]{border-left:3px solid var(--primary);border-radius:var(--radius);color:var(--text);white-space:pre-line;background:#f2f7f7;padding:12px 14px;line-height:1.6}.record-meta[data-v-64ab19ed]{flex-wrap:wrap;gap:8px;display:flex}.record-meta span[data-v-64ab19ed]{border-radius:var(--radius-full);color:var(--text-muted);background:#eef3f5;padding:5px 10px;font-size:12px;font-weight:800}.error-list.compact[data-v-64ab19ed]{gap:8px}.analysis-list[data-v-64ab19ed],.sub-list[data-v-64ab19ed],.error-list[data-v-64ab19ed]{gap:10px;display:grid}.attempt-card[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;overflow:hidden}.attempt-main[data-v-64ab19ed],.sub-main[data-v-64ab19ed]{text-align:left;background:0 0;grid-template-columns:minmax(0,1fr) 130px;align-items:center;gap:12px;width:100%;padding:16px;display:grid}.attempt-main[data-v-64ab19ed]:hover,.sub-main[data-v-64ab19ed]:hover{background:#f8fbfb}.attempt-main strong[data-v-64ab19ed],.sub-main strong[data-v-64ab19ed]{color:var(--heading);display:block}.attempt-main span[data-v-64ab19ed],.sub-main span[data-v-64ab19ed],.attempt-score span[data-v-64ab19ed],.sub-score span[data-v-64ab19ed]{color:var(--text-muted);margin-top:4px;font-size:12px;display:block}.attempt-score[data-v-64ab19ed],.sub-score[data-v-64ab19ed]{text-align:right}.attempt-score strong[data-v-64ab19ed],.sub-score strong[data-v-64ab19ed]{color:var(--heading);font-size:28px;display:block}.sub-list[data-v-64ab19ed]{padding:0 14px 14px}.sub-card[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius);background:#fbfdfd}.sub-card.pending[data-v-64ab19ed]{background:#f8fafb}.detail-box[data-v-64ab19ed]{gap:12px;padding:0 16px 16px;display:grid}.detail-actions[data-v-64ab19ed]{border-radius:var(--radius);background:#f4f8f8;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.detail-actions p[data-v-64ab19ed]{white-space:pre-line;color:var(--text);line-height:1.6}.detail-actions button[data-v-64ab19ed]{border-radius:var(--radius);height:32px;color:var(--text-muted);background:#e6ecef;padding:0 12px;font-weight:800}.step-grid[data-v-64ab19ed]{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.step-row[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:10px}.step-row strong[data-v-64ab19ed],.step-row span[data-v-64ab19ed],.step-row small[data-v-64ab19ed]{display:block}.step-row span[data-v-64ab19ed],.step-row small[data-v-64ab19ed]{color:var(--text-muted);margin-top:4px}.error-item[data-v-64ab19ed]{border-radius:var(--radius);background:snow;border:1px solid #f0c9c2;grid-template-columns:minmax(0,1fr) minmax(220px,1.2fr) 88px;gap:12px;padding:12px;display:grid}.error-item span[data-v-64ab19ed],.error-item p[data-v-64ab19ed],.error-item small[data-v-64ab19ed]{color:var(--text-muted);line-height:1.5}.muted-box[data-v-64ab19ed]{border-radius:var(--radius);color:var(--text-muted);background:#f4f7f8;padding:14px;font-weight:700}.dialog-mask[data-v-64ab19ed]{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog[data-v-64ab19ed]{border-radius:var(--radius-xl);background:#fff;padding:28px;box-shadow:0 20px 40px #00000026}.dialog.wide[data-v-64ab19ed]{flex-direction:column;width:680px;max-height:80vh;display:flex}.dialog h3[data-v-64ab19ed]{margin:0 0 8px}.dialog-desc[data-v-64ab19ed]{color:var(--text-muted);margin-bottom:16px;font-size:13px}.form-item[data-v-64ab19ed]{gap:7px;margin-bottom:14px;display:grid}.form-item span[data-v-64ab19ed]{color:var(--heading);font-size:13px;font-weight:800}.form-item input[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius);outline:none;height:42px;padding:0 12px;font-size:14px}.form-item input[data-v-64ab19ed]:focus{border-color:var(--primary);box-shadow:0 0 0 3px #14706f1a}.dialog-table-wrap[data-v-64ab19ed]{border:1px solid var(--border);border-radius:var(--radius);flex:1;max-height:360px;margin-bottom:16px;overflow:auto}.dialog-table-wrap table[data-v-64ab19ed]{width:100%}.dialog-table-wrap tbody tr[data-v-64ab19ed]{cursor:pointer;transition:background var(--transition-fast)}.dialog-table-wrap tbody tr.selected[data-v-64ab19ed]{background:var(--primary-soft)}.dialog-table-wrap input[type=checkbox][data-v-64ab19ed]{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.dialog-actions[data-v-64ab19ed]{justify-content:space-between;align-items:center;gap:12px;margin-top:4px;display:flex}.dialog-actions>div[data-v-64ab19ed]{gap:10px;display:flex}.pick-count[data-v-64ab19ed]{color:var(--primary-strong);font-size:13px;font-weight:700}.cancel-btn[data-v-64ab19ed],.confirm-btn[data-v-64ab19ed]{border-radius:var(--radius);cursor:pointer;height:38px;transition:all var(--transition);border:none;padding:0 20px;font-weight:700}.cancel-btn[data-v-64ab19ed]{color:#555;background:#e0e4e8}.confirm-btn[data-v-64ab19ed]{background:var(--primary);color:#fff}.confirm-btn[data-v-64ab19ed]:disabled{opacity:.45;cursor:not-allowed}@media (width<=1180px){.admin-shell[data-v-64ab19ed]{grid-template-columns:1fr}.sidebar[data-v-64ab19ed]{height:auto;position:static}.side-menu[data-v-64ab19ed],.stat-grid[data-v-64ab19ed],.analysis-grid[data-v-64ab19ed],.chart-grid[data-v-64ab19ed]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.content-area[data-v-64ab19ed]{padding:18px}.top-bar[data-v-64ab19ed],.user-area[data-v-64ab19ed],.panel-header[data-v-64ab19ed],.analysis-picker-panel[data-v-64ab19ed]{flex-direction:column;align-items:stretch}.user-area div[data-v-64ab19ed]{text-align:left}.side-menu[data-v-64ab19ed],.stat-grid[data-v-64ab19ed],.analysis-grid[data-v-64ab19ed],.chart-grid[data-v-64ab19ed],.demo-history-grid[data-v-64ab19ed],.sub-project-main[data-v-64ab19ed],.bar-row[data-v-64ab19ed],.attempt-main[data-v-64ab19ed],.sub-main[data-v-64ab19ed],.error-item[data-v-64ab19ed],.step-grid[data-v-64ab19ed]{grid-template-columns:1fr}.dialog.wide[data-v-64ab19ed]{width:95vw}.analysis-select[data-v-64ab19ed]{min-width:0}.attempt-score[data-v-64ab19ed],.sub-score[data-v-64ab19ed],.demo-history-stats[data-v-64ab19ed],.sub-project-stat[data-v-64ab19ed]{text-align:left}.record-summary[data-v-64ab19ed]{grid-template-columns:1fr}.record-score[data-v-64ab19ed]{text-align:left}.record-toggle[data-v-64ab19ed]{text-align:left;justify-self:start}}.student-shell[data-v-962a40ec]{background:var(--page-bg);min-height:100vh}.student-header[data-v-962a40ec]{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;gap:16px;padding:18px clamp(18px,4vw,36px);display:flex;box-shadow:0 1px 3px #1018200f}.brand-area[data-v-962a40ec]{align-items:center;gap:12px;display:flex}.brand-mark[data-v-962a40ec]{border-radius:var(--radius-lg);color:#0d3636;background:#dff5f1;place-items:center;width:38px;height:38px;font-size:20px;font-weight:900;display:grid}.brand-area strong[data-v-962a40ec],.user-area strong[data-v-962a40ec]{color:var(--heading);display:block}.brand-area span[data-v-962a40ec],.user-area span[data-v-962a40ec]{color:var(--text-muted);font-size:12px;display:block}.user-area[data-v-962a40ec]{text-align:right;align-items:center;gap:10px;display:flex}.ghost-btn[data-v-962a40ec],.logout-btn[data-v-962a40ec],.start-btn[data-v-962a40ec]{border-radius:var(--radius);min-height:38px;transition:all var(--transition);padding:0 16px;font-weight:800}.ghost-btn[data-v-962a40ec]{color:var(--primary-strong);background:var(--primary-soft)}.logout-btn[data-v-962a40ec]{color:var(--text);background:var(--surface);border:1px solid var(--border)}.start-btn[data-v-962a40ec]{color:#fff;background:var(--primary);min-width:102px}.start-btn[data-v-962a40ec]:disabled{opacity:.5;cursor:not-allowed}.student-main[data-v-962a40ec]{max-width:1180px;margin:0 auto;padding:28px clamp(18px,4vw,36px) 42px}.overview[data-v-962a40ec],.stat-row[data-v-962a40ec],.task-row[data-v-962a40ec],.active-attempt[data-v-962a40ec]{gap:16px;display:grid}.overview[data-v-962a40ec]{grid-template-columns:minmax(0,1fr) 240px;align-items:stretch;margin-bottom:18px}.eyebrow[data-v-962a40ec]{color:var(--accent);text-transform:uppercase;font-size:12px;font-weight:900}.overview h1[data-v-962a40ec]{margin:6px 0;font-size:32px}.overview span[data-v-962a40ec],.panel-heading p[data-v-962a40ec],.task-title p[data-v-962a40ec]{color:var(--text-muted);line-height:1.6}.completion-card[data-v-962a40ec],.task-panel[data-v-962a40ec],.active-attempt[data-v-962a40ec]{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm);padding:20px}.completion-card strong[data-v-962a40ec]{color:var(--heading);margin:8px 0;font-size:34px;display:block}.progress-line[data-v-962a40ec]{background:#e8eef2;border-radius:999px;height:8px;overflow:hidden}.progress-line span[data-v-962a40ec]{background:var(--primary);height:100%;display:block}.active-attempt[data-v-962a40ec]{border-left:4px solid var(--accent);grid-template-columns:280px minmax(0,1fr);align-items:center;margin-bottom:18px}.active-attempt span[data-v-962a40ec]{color:var(--text-muted);margin-top:4px;display:block}.stat-row[data-v-962a40ec]{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.stat-row>div[data-v-962a40ec]{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);padding:16px}.stat-row span[data-v-962a40ec]{color:var(--text-muted)}.stat-row strong[data-v-962a40ec]{color:var(--heading);margin-top:6px;font-size:28px;display:block}.error-box[data-v-962a40ec],.empty-box[data-v-962a40ec],.muted-box[data-v-962a40ec]{border-radius:var(--radius);background:var(--danger-soft);color:var(--danger);padding:14px;font-weight:700}.muted-box[data-v-962a40ec]{color:var(--text-muted);background:#f4f7f8}.panel-heading[data-v-962a40ec]{justify-content:space-between;gap:16px;margin-bottom:16px;display:flex}.panel-heading h2[data-v-962a40ec]{margin-bottom:4px;font-size:22px}.training-system-entry[data-v-962a40ec]{border-radius:var(--radius);background:#eef9f7;border:1px solid #b7d7d4;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;padding:16px;display:flex}.training-system-entry strong[data-v-962a40ec]{color:var(--heading);font-size:18px;display:block}.training-system-entry span[data-v-962a40ec]{color:var(--text-muted);margin-top:4px;line-height:1.5;display:block}.task-list[data-v-962a40ec],.history-list[data-v-962a40ec],.sub-list[data-v-962a40ec],.error-list[data-v-962a40ec]{gap:10px;display:grid}.task-row[data-v-962a40ec]{border:1px solid var(--border);border-radius:var(--radius);background:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:16px}.task-title[data-v-962a40ec]{grid-template-columns:92px minmax(0,1fr);align-items:start;gap:14px;display:grid}.task-title h3[data-v-962a40ec]{margin-bottom:6px;font-size:18px}.task-title small[data-v-962a40ec]{color:var(--accent);font-weight:800}.status-pill[data-v-962a40ec]{border-radius:999px;place-items:center;height:28px;font-size:12px;font-weight:900;display:inline-grid}.status-pill.pending[data-v-962a40ec]{color:#8a5a00;background:#fff4d6}.status-pill.running[data-v-962a40ec]{color:#075a86;background:#dff2ff}.status-pill.done[data-v-962a40ec]{color:#16653f;background:#dbf7e8}.task-actions[data-v-962a40ec]{align-items:center;gap:12px;display:flex}.history-panel[data-v-962a40ec]{margin-top:18px}.demo-history-grid[data-v-962a40ec]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.demo-history-card[data-v-962a40ec]{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;min-width:0;overflow:hidden}.demo-history-head[data-v-962a40ec]{border-bottom:1px solid var(--border);background:#f8fbfb;justify-content:space-between;align-items:center;gap:12px;padding:16px;display:flex}.demo-history-head span[data-v-962a40ec]{color:var(--accent);margin-bottom:4px;font-size:12px;font-weight:900;display:block}.demo-history-head strong[data-v-962a40ec]{color:var(--heading);font-size:20px;display:block}.demo-history-stats[data-v-962a40ec]{text-align:right}.demo-history-stats strong[data-v-962a40ec]{font-size:28px;line-height:1}.demo-history-stats small[data-v-962a40ec]{color:var(--text-muted);white-space:nowrap;margin-top:4px;display:block}.sub-project-list[data-v-962a40ec]{gap:10px;padding:14px;display:grid}.sub-project-card[data-v-962a40ec]{border:1px solid var(--border);border-radius:var(--radius);background:#fff;overflow:hidden}.sub-project-main[data-v-962a40ec]{text-align:left;background:0 0;grid-template-columns:minmax(0,1fr) 64px;align-items:center;gap:12px;width:100%;padding:14px;display:grid}.sub-project-main[data-v-962a40ec]:hover{background:#f6faf9}.sub-project-main strong[data-v-962a40ec]{color:var(--heading);display:block}.sub-project-main span[data-v-962a40ec]{color:var(--text-muted);margin-top:4px;font-size:12px;line-height:1.5;display:block}.sub-project-stat[data-v-962a40ec]{text-align:right}.sub-project-stat strong[data-v-962a40ec]{color:var(--primary-strong);font-size:26px;line-height:1;display:block}.sub-project-stat span[data-v-962a40ec]{white-space:nowrap;margin-top:3px}.sub-record-list[data-v-962a40ec]{gap:12px;padding:0 12px 12px;display:grid}.sub-record-card[data-v-962a40ec]{border-radius:var(--radius);transition:border-color var(--transition), box-shadow var(--transition), transform var(--transition);background:linear-gradient(#fff 0%,#f8fbfb 100%);border:1px solid #d7e5e4;gap:12px;padding:12px;display:grid;box-shadow:0 8px 18px #1034340f}.sub-record-card[data-v-962a40ec]:hover{border-color:#b9d8d5;transform:translateY(-1px);box-shadow:0 12px 24px #10343417}.sub-record-card.active[data-v-962a40ec]{border-color:var(--primary);box-shadow:0 12px 26px #14706f24}.record-summary[data-v-962a40ec]{text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) 82px auto;align-items:center;gap:14px;width:100%;padding:0;display:grid}.record-title[data-v-962a40ec]{gap:5px;min-width:0;display:grid}.record-badge[data-v-962a40ec]{border-radius:var(--radius-full);width:fit-content;color:var(--primary-strong);background:var(--primary-soft);padding:4px 8px;font-size:12px;font-weight:900}.record-summary strong[data-v-962a40ec]{color:var(--heading);font-size:15px;display:block}.record-summary span[data-v-962a40ec]{color:var(--text-muted);font-size:12px;display:block}.record-score[data-v-962a40ec]{border-radius:var(--radius);text-align:center;background:#eef8f6;min-width:74px;padding:8px 10px}.record-score small[data-v-962a40ec]{color:var(--text-muted);font-size:11px;font-weight:900;display:block}.record-score strong[data-v-962a40ec]{color:var(--primary-strong);font-size:30px;line-height:1;display:block}.record-toggle[data-v-962a40ec]{min-width:74px;color:var(--accent);text-align:right;justify-self:end;font-size:12px;font-weight:900}.record-detail[data-v-962a40ec]{border-top:1px dashed #c9dedd;gap:12px;padding-top:12px;display:grid}.record-comment[data-v-962a40ec]{border-left:3px solid var(--primary);border-radius:var(--radius);color:var(--text);white-space:pre-line;background:#f2f7f7;padding:12px 14px;line-height:1.6}.record-meta[data-v-962a40ec]{flex-wrap:wrap;gap:8px;display:flex}.record-meta span[data-v-962a40ec]{border-radius:var(--radius-full);color:var(--text-muted);background:#eef3f5;padding:5px 10px;font-size:12px;font-weight:800}.history-card[data-v-962a40ec]{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;overflow:hidden}.history-main[data-v-962a40ec],.sub-main[data-v-962a40ec]{text-align:left;background:0 0;grid-template-columns:minmax(0,1fr) 120px;align-items:center;gap:12px;width:100%;padding:16px;display:grid}.history-main[data-v-962a40ec]:hover,.sub-main[data-v-962a40ec]:hover{background:#f8fbfb}.history-main strong[data-v-962a40ec],.sub-main strong[data-v-962a40ec]{color:var(--heading);display:block}.history-main span[data-v-962a40ec],.sub-main span[data-v-962a40ec],.score-box span[data-v-962a40ec],.sub-score span[data-v-962a40ec]{color:var(--text-muted);margin-top:4px;font-size:12px;display:block}.score-box[data-v-962a40ec],.sub-score[data-v-962a40ec]{text-align:right}.score-box strong[data-v-962a40ec],.sub-score strong[data-v-962a40ec]{color:var(--heading);font-size:28px;display:block}.sub-list[data-v-962a40ec]{padding:0 14px 14px}.sub-card[data-v-962a40ec]{border:1px solid var(--border);border-radius:var(--radius);background:#fbfdfd}.sub-card.pending[data-v-962a40ec]{background:#f8fafb}.detail-box[data-v-962a40ec]{gap:12px;padding:0 16px 16px;display:grid}.detail-actions[data-v-962a40ec]{border-radius:var(--radius);background:#f4f8f8;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.detail-actions p[data-v-962a40ec]{white-space:pre-line;color:var(--text);line-height:1.6}.detail-actions button[data-v-962a40ec]{border-radius:var(--radius);height:32px;color:var(--text-muted);background:#e6ecef;padding:0 12px;font-weight:800}.step-grid[data-v-962a40ec]{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.step-row[data-v-962a40ec]{border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:10px}.step-row strong[data-v-962a40ec],.step-row span[data-v-962a40ec],.step-row small[data-v-962a40ec]{display:block}.step-row span[data-v-962a40ec],.step-row small[data-v-962a40ec]{color:var(--text-muted);margin-top:4px}.error-item[data-v-962a40ec]{border-radius:var(--radius);background:snow;border:1px solid #f0c9c2;grid-template-columns:minmax(0,1fr) minmax(220px,1.2fr) 88px;gap:12px;padding:12px;display:grid}.error-item span[data-v-962a40ec],.error-item p[data-v-962a40ec],.error-item small[data-v-962a40ec]{color:var(--text-muted);line-height:1.5}.error-list.compact[data-v-962a40ec]{gap:8px}@media (width<=760px){.student-header[data-v-962a40ec],.user-area[data-v-962a40ec]{text-align:left;flex-direction:column;align-items:stretch}.overview[data-v-962a40ec],.stat-row[data-v-962a40ec],.task-row[data-v-962a40ec],.active-attempt[data-v-962a40ec],.history-main[data-v-962a40ec],.sub-main[data-v-962a40ec],.error-item[data-v-962a40ec],.demo-history-grid[data-v-962a40ec],.sub-project-main[data-v-962a40ec],.task-title[data-v-962a40ec],.step-grid[data-v-962a40ec]{grid-template-columns:1fr}.training-system-entry[data-v-962a40ec],.task-actions[data-v-962a40ec]{flex-direction:column;align-items:stretch}.score-box[data-v-962a40ec],.sub-score[data-v-962a40ec],.demo-history-stats[data-v-962a40ec],.sub-project-stat[data-v-962a40ec]{text-align:left}.record-summary[data-v-962a40ec]{grid-template-columns:1fr}.record-score[data-v-962a40ec]{text-align:left}.record-toggle[data-v-962a40ec]{text-align:left;justify-self:start}}.login-page[data-v-1e384b08]{grid-template-columns:minmax(0,1.15fr) minmax(420px,.85fr);min-height:100vh;display:grid}.product-panel[data-v-1e384b08]{color:#d9e7ea;background:linear-gradient(140deg,#121c34f5,#070c18fa);flex-direction:column;padding:48px clamp(34px,6vw,86px);display:flex}.brand-row[data-v-1e384b08]{align-items:center;gap:14px;display:flex}.brand-mark[data-v-1e384b08]{border-radius:var(--radius-lg);color:#121212;background:#f0c674;place-items:center;width:44px;height:44px;font-size:22px;font-weight:900;display:grid}.brand-row strong[data-v-1e384b08],.brand-row span[data-v-1e384b08]{display:block}.brand-row strong[data-v-1e384b08]{color:#fff;font-size:20px}.brand-row span[data-v-1e384b08]{color:#ffffffa6;margin-top:2px;font-size:13px}.eyebrow[data-v-1e384b08]{color:#f0c674;text-transform:uppercase;font-size:12px;font-weight:800}.product-copy[data-v-1e384b08]{max-width:650px;margin-top:120px}.product-copy h1[data-v-1e384b08]{color:#fff;margin:14px 0 18px;font-size:clamp(34px,5vw,58px);line-height:1.12}.product-copy p[data-v-1e384b08]:last-child{color:#ffffffb8;max-width:580px;font-size:17px;line-height:1.8}.login-panel[data-v-1e384b08]{background:var(--page-bg);place-items:center;padding:32px;display:grid}.form-card[data-v-1e384b08]{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--surface);width:min(100%,430px);box-shadow:var(--shadow);padding:32px}.form-heading h2[data-v-1e384b08]{margin:8px 0 6px;font-size:32px}.form-heading span[data-v-1e384b08]{color:var(--text-muted)}.form-item[data-v-1e384b08]{gap:8px;margin-bottom:16px;display:grid}.form-item span[data-v-1e384b08]{color:var(--heading);font-size:14px;font-weight:800}.form-item input[data-v-1e384b08]{border:1px solid var(--border);border-radius:var(--radius);height:46px;transition:all var(--transition);outline:none;padding:0 12px;font-size:15px}.form-item input[data-v-1e384b08]:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2f6f7324}.message[data-v-1e384b08]{border-radius:var(--radius);margin-bottom:14px;padding:10px 12px;font-size:14px;font-weight:700}.message.error[data-v-1e384b08]{color:var(--danger);background:var(--danger-soft);border:1px solid #ffd1cc}.submit-btn[data-v-1e384b08]{border-radius:var(--radius-lg);color:#fff;width:100%;height:48px;transition:all var(--transition);background:linear-gradient(135deg,#23395d,#355c9c);font-size:16px;font-weight:700}.submit-btn[data-v-1e384b08]:hover{transform:translateY(-1px);box-shadow:0 12px 24px #23395d59}@media (width<=980px){.login-page[data-v-1e384b08]{grid-template-columns:1fr}.product-panel[data-v-1e384b08]{min-height:auto}}@media (width<=680px){.product-panel[data-v-1e384b08]{padding:28px 20px}.login-panel[data-v-1e384b08]{padding:20px}.form-card[data-v-1e384b08]{padding:24px}}.root-layout[data-v-d6ecaa41]{background:#f6f8fb;min-height:100vh;display:flex}.sidebar[data-v-d6ecaa41]{color:#fff;background:#162238;flex-direction:column;width:252px;padding:24px;display:flex}.logo-area[data-v-d6ecaa41]{align-items:center;gap:12px;margin-bottom:36px;display:flex}.logo-icon[data-v-d6ecaa41]{border-radius:var(--radius-lg);color:#111;background:#f0c674;place-items:center;width:46px;height:46px;font-weight:900;display:grid}.logo-area h3[data-v-d6ecaa41]{color:#fff;margin:0}.logo-area span[data-v-d6ecaa41]{opacity:.7;font-size:13px}.menu[data-v-d6ecaa41]{flex-direction:column;flex:1;gap:4px;display:flex}.menu-item[data-v-d6ecaa41]{border-radius:var(--radius-lg);color:#ffffffad;text-align:left;cursor:pointer;height:44px;transition:all var(--transition);background:0 0;border:none;padding-left:14px;font-size:14px}.menu-item[data-v-d6ecaa41]:hover{color:#fff;background:#ffffff14}.menu-item.active[data-v-d6ecaa41]{color:#fff;background:#2c4f8f;font-weight:700}.logout-btn[data-v-d6ecaa41]{border-radius:var(--radius-lg);color:#fff;cursor:pointer;height:44px;transition:all var(--transition);background:#c44b4b;border:none;margin-top:auto;font-weight:700}.logout-btn[data-v-d6ecaa41]:hover{background:#a83a3a}.content[data-v-d6ecaa41]{flex:1;min-width:0;padding:32px}.top-account[data-v-d6ecaa41]{justify-content:flex-end;align-items:center;gap:10px;margin-bottom:18px;display:flex}.top-account div[data-v-d6ecaa41]{text-align:right}.top-account span[data-v-d6ecaa41]{color:#777;font-size:12px;display:block}.top-account strong[data-v-d6ecaa41]{color:#23395d;display:block}.account-btn[data-v-d6ecaa41]{border-radius:var(--radius);color:#2c4f8f;height:38px;transition:all var(--transition);background:#edf3ff;padding:0 16px;font-weight:700}.account-btn[data-v-d6ecaa41]:hover{background:#dfeaff}.header-card[data-v-d6ecaa41]{border-radius:var(--radius-lg);background:#fff;margin-bottom:24px;padding:28px;box-shadow:0 8px 20px #0000000d}.header-card h1[data-v-d6ecaa41]{margin:0 0 8px}.header-card p[data-v-d6ecaa41]{color:#666;margin:0}.stats-grid[data-v-d6ecaa41]{grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:24px;display:grid}.stat-card[data-v-d6ecaa41]{border-radius:var(--radius-lg);transition:box-shadow var(--transition);background:#fff;padding:24px;box-shadow:0 8px 20px #0000000d}.stat-card[data-v-d6ecaa41]:hover{box-shadow:0 12px 28px #00000014}.stat-card span[data-v-d6ecaa41]{color:#777;font-size:14px}.stat-card strong[data-v-d6ecaa41]{color:#23395d;margin-top:10px;font-size:34px;display:block}.welcome-card[data-v-d6ecaa41]{border-radius:var(--radius-lg);background:#fff;padding:28px;box-shadow:0 8px 20px #0000000d}.welcome-card h2[data-v-d6ecaa41]{margin-top:0}.welcome-card p[data-v-d6ecaa41]{color:#555;line-height:1.8}.section-header[data-v-d6ecaa41]{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.section-header h2[data-v-d6ecaa41]{font-size:20px}.add-btn[data-v-d6ecaa41]{border-radius:var(--radius);color:#fff;cursor:pointer;transition:all var(--transition);background:#2c4f8f;border:none;padding:10px 18px;font-weight:700}.add-btn[data-v-d6ecaa41]:hover{background:#234078;box-shadow:0 4px 12px #2c4f8f47}.data-table[data-v-d6ecaa41]{border-collapse:collapse;border-radius:var(--radius-lg);background:#fff;width:100%;overflow:hidden;box-shadow:0 4px 12px #0000000a}.data-table th[data-v-d6ecaa41],.data-table td[data-v-d6ecaa41]{text-align:left;border-bottom:1px solid #eee;padding:13px 16px;font-size:14px}.data-table th[data-v-d6ecaa41]{color:#555;background:#f8fafb;font-size:13px;font-weight:700}.data-table tbody tr[data-v-d6ecaa41]:hover{background:#f8fbfc}.data-table tbody tr:last-child td[data-v-d6ecaa41]{border-bottom:0}.action-btn[data-v-d6ecaa41],.danger-btn[data-v-d6ecaa41]{border-radius:var(--radius);cursor:pointer;transition:all var(--transition);border:none;margin-right:6px;padding:5px 14px;font-size:12px;font-weight:700}.action-btn[data-v-d6ecaa41]{color:#fff;background:#2c4f8f}.action-btn[data-v-d6ecaa41]:hover{background:#234078}.action-btn.assign[data-v-d6ecaa41]{background:#14706f}.action-btn.assign[data-v-d6ecaa41]:hover{background:#0d5655}.danger-btn[data-v-d6ecaa41]{color:#fff;background:#d9534f}.danger-btn[data-v-d6ecaa41]:hover{background:#c44b4b}.status-badge[data-v-d6ecaa41]{border-radius:var(--radius-full);padding:3px 10px;font-size:12px;font-weight:700;display:inline-block}.status-badge.active[data-v-d6ecaa41]{color:#238457;background:#e4f5ed}.status-badge.inactive[data-v-d6ecaa41]{color:#ba3c3c;background:#fff0ef}.empty-cell[data-v-d6ecaa41]{color:#999;text-align:center;vertical-align:middle;height:80px}.dialog-mask[data-v-d6ecaa41]{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog[data-v-d6ecaa41]{border-radius:var(--radius-xl);background:#fff;width:440px;padding:28px;box-shadow:0 20px 40px #00000026}.dialog h3[data-v-d6ecaa41]{margin-top:0;margin-bottom:20px}.form-item[data-v-d6ecaa41]{gap:6px;margin-bottom:14px;display:grid}.form-item span[data-v-d6ecaa41]{color:var(--heading);font-size:13px;font-weight:700}.form-item input[data-v-d6ecaa41],.form-item select[data-v-d6ecaa41],.form-item textarea[data-v-d6ecaa41]{border-radius:var(--radius);width:100%;height:44px;transition:border-color var(--transition);border:1px solid #ddd;outline:none;padding:0 12px;font-size:14px}.form-item textarea[data-v-d6ecaa41]{resize:vertical;height:auto;min-height:80px;padding:10px 12px}.form-item input[data-v-d6ecaa41]:focus,.form-item select[data-v-d6ecaa41]:focus,.form-item textarea[data-v-d6ecaa41]:focus{border-color:#2c4f8f}.dialog-actions[data-v-d6ecaa41]{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.cancel-btn[data-v-d6ecaa41],.confirm-btn[data-v-d6ecaa41]{border-radius:var(--radius);cursor:pointer;transition:all var(--transition);border:none;padding:10px 20px;font-weight:700}.cancel-btn[data-v-d6ecaa41]{color:#555;background:#e0e4e8}.cancel-btn[data-v-d6ecaa41]:hover{background:#d0d5da}.confirm-btn[data-v-d6ecaa41]{color:#fff;background:#2c4f8f}.confirm-btn[data-v-d6ecaa41]:hover{background:#234078}@media (width<=900px){.root-layout[data-v-d6ecaa41]{flex-direction:column}.sidebar[data-v-d6ecaa41]{width:100%;padding:16px}.menu[data-v-d6ecaa41]{flex-flow:wrap}.content[data-v-d6ecaa41]{padding:18px}.stats-grid[data-v-d6ecaa41]{grid-template-columns:1fr}}:root{--page-bg:#eef2f5;--page-bg-strong:#e5ebef;--surface:#fff;--surface-soft:#f7fafb;--surface-muted:#edf3f5;--text:#1f2933;--text-muted:#667481;--heading:#101820;--border:#d7e0e5;--border-strong:#bdcbd3;--primary:#14706f;--primary-strong:#0d5655;--primary-soft:#e3f3f1;--accent:#d67836;--accent-soft:#fff0e4;--success:#238457;--success-soft:#e4f5ed;--warning:#aa6b14;--warning-soft:#fff5dc;--danger:#ba3c3c;--danger-soft:#fff0ef;--ink:#15212b;--shadow-sm:0 1px 2px #1018200f, 0 8px 24px #1018200a;--shadow:0 14px 38px #1018201a;--radius-sm:6px;--radius:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:999px;--transition:.18s ease;--sans:Inter, ui-sans-serif, system-ui, "Segoe UI", "Microsoft YaHei", Arial, sans-serif;color:var(--text);background:var(--page-bg);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{background:linear-gradient(180deg, #14706f14, transparent 360px), var(--page-bg);min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0}button:disabled{cursor:not-allowed}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{color:var(--heading);letter-spacing:0}a{color:inherit}table{border-collapse:collapse;width:100%}#app{min-height:100vh}.input-shell,input,select,textarea{border:1px solid var(--border);border-radius:var(--radius-sm);min-height:42px;color:var(--text);background:var(--surface);transition:border-color var(--transition), box-shadow var(--transition), background var(--transition);outline:none}input,select,textarea{padding:0 12px}textarea{padding-top:10px;line-height:1.55}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #14706f24}.btn-reset{background:0 0}
