.modal-wide[data-v-44caab88]{max-width:1000px}.toast[data-v-c9b5ff54]{position:fixed;bottom:24px;right:24px;padding:12px 20px;border-radius:8px;font-size:14px;font-weight:500;z-index:9999;box-shadow:0 4px 16px #00000026}.toast-success[data-v-c9b5ff54]{background:#16a34a;color:#fff}.toast-error[data-v-c9b5ff54]{background:#dc2626;color:#fff}.capacity-groups[data-v-4e7afe35]{display:grid;gap:14px}.capacity-filter-select[data-v-4e7afe35]{min-width:0;width:auto;max-width:180px;padding-right:32px;font-size:13px}.dashboard-bottom-grid[data-v-4e7afe35]{align-items:start}.dashboard-two-col[data-v-4e7afe35]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}@media(max-width:900px){.dashboard-two-col[data-v-4e7afe35]{grid-template-columns:1fr}}.capacity-group[data-v-4e7afe35]{border:1px solid var(--border);border-radius:14px;padding:16px;background:#fafafa}.capacity-group-head[data-v-4e7afe35]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.capacity-group-toggle[data-v-4e7afe35]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex:1;padding:0;border:0;background:transparent;text-align:left;cursor:pointer}.capacity-group-arrow[data-v-4e7afe35]{font-size:18px;line-height:1;color:var(--muted)}.capacity-group-title[data-v-4e7afe35]{font-size:17px;font-weight:700}.capacity-group-meta[data-v-4e7afe35]{margin-top:4px;font-size:12px;color:var(--muted)}.capacity-day-list[data-v-4e7afe35]{display:grid;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.capacity-day-row[data-v-4e7afe35]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:10px;background:#fff;border:1px solid var(--border)}.capacity-day-title[data-v-4e7afe35]{font-weight:600}.capacity-day-meta[data-v-4e7afe35]{margin-top:2px;font-size:12px;color:var(--muted)}.qp-mode[data-v-b672f4f8]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:radial-gradient(circle at top left,rgba(153,204,51,.16),transparent 28%),linear-gradient(180deg,#f9fbf2,#eef4fb);color:var(--text);display:flex;flex-direction:column;overflow-y:auto}.qp-header[data-v-b672f4f8]{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid rgba(15,52,96,.08);position:sticky;top:0;background:#f9fbf2eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10;gap:12px;flex-wrap:wrap}.qp-exit-btn[data-v-b672f4f8]{color:var(--text);border-color:#0f34601f;background:#ffffffc2}.qp-exit-btn[data-v-b672f4f8]:hover{background:#fff}.qp-header-center[data-v-b672f4f8]{display:flex;flex-direction:column;align-items:center;gap:2px}.qp-title[data-v-b672f4f8]{font-size:16px;font-weight:700;color:var(--accent2)}.qp-page-label[data-v-b672f4f8]{font-size:12px;color:var(--muted);font-weight:500}.qp-nav-btn[data-v-b672f4f8]{width:36px;height:36px;border-radius:8px;border:1px solid rgba(15,52,96,.12);background:#ffffffd1;color:var(--accent2);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s}.qp-nav-btn[data-v-b672f4f8]:hover:not(:disabled){background:#fff;transform:translateY(-1px)}.qp-nav-btn[data-v-b672f4f8]:disabled{opacity:.3;cursor:default}.qp-body[data-v-b672f4f8]{padding:20px 16px 40px}.qp-table[data-v-b672f4f8]{max-width:900px;margin:0 auto;background:#ffffffe6;border:1px solid rgba(15,52,96,.08);border-radius:18px;box-shadow:0 18px 40px #0f346014;overflow:hidden}.qp-row[data-v-b672f4f8]{display:flex;gap:0;border-bottom:1px solid rgba(15,52,96,.07);align-items:stretch}.qp-row[data-v-b672f4f8]:last-child{border-bottom:none}.qp-row-left[data-v-b672f4f8]{width:160px;flex-shrink:0;padding:16px 18px;display:flex;flex-direction:column;gap:4px;justify-content:center;background:#0f346005;border-right:1px solid rgba(15,52,96,.07)}.qp-row-time[data-v-b672f4f8]{font-size:11px;color:var(--muted)}.qp-row-right[data-v-b672f4f8]{flex:1;padding:16px 20px}.qp-card-label[data-v-b672f4f8]{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px}.qp-label-blue[data-v-b672f4f8]{background:#dbeafe;color:#1d4ed8}.qp-label-green[data-v-b672f4f8]{background:#dcfce7;color:#15803d}.qp-label-yellow[data-v-b672f4f8]{background:#fef9c3;color:#a16207}.qp-label-purple[data-v-b672f4f8]{background:#f3e8ff;color:#7e22ce}.qp-label-orange[data-v-b672f4f8]{background:#ffedd5;color:#c2410c}.qp-label-gray[data-v-b672f4f8]{background:#f3f4f6;color:#4b5563}.qp-label-default[data-v-b672f4f8]{background:#edf4d7;color:#54710f}.qp-card-name[data-v-b672f4f8]{font-size:18px;font-weight:700;color:var(--accent2);line-height:1.3;margin-bottom:6px;letter-spacing:.2px}.qp-card-desc[data-v-b672f4f8]{font-size:13px;color:#475569;line-height:1.5;margin-top:8px;border-top:1px solid rgba(15,52,96,.06);padding-top:8px;white-space:pre-wrap}.qp-card-desc--empty[data-v-b672f4f8]{font-style:italic;opacity:.4}.exam-summary[data-v-a5c0e01c]{display:flex;gap:24px;padding:12px 14px;background:var(--surface-alt, #f7f8fa);border:1px solid var(--border, #e5e7eb);border-radius:8px;margin-bottom:14px}.exam-summary-label[data-v-a5c0e01c]{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted, #6b7280)}.exam-summary-value[data-v-a5c0e01c]{font-size:15px;font-weight:700;margin-top:2px}.missed-badge[data-v-a5c0e01c]{color:#b45309;background:#fef3c7;border:1px solid #fcd34d;border-radius:999px;padding:1px 8px;font-size:13px}.exam-entry[data-v-a5c0e01c]{border:1px solid var(--border, #e5e7eb);border-radius:8px;margin-bottom:8px;overflow:hidden}.exam-entry-head[data-v-a5c0e01c]{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;background:var(--card, #fff);border:none;cursor:pointer;text-align:left;font:inherit}.exam-entry-head[data-v-a5c0e01c]:hover{background:var(--surface-alt, #f7f8fa)}.exam-caret[data-v-a5c0e01c]{color:var(--muted, #9ca3af);font-size:12px;width:12px;flex-shrink:0}.exam-entry-main[data-v-a5c0e01c]{display:flex;flex-direction:column;gap:1px}.exam-entry-result[data-v-a5c0e01c]{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.exam-entry-body[data-v-a5c0e01c]{padding:10px 12px;border-top:1px solid var(--border, #e5e7eb);background:var(--surface-alt, #fafbfc)}.hist-grid[data-v-a5c0e01c]{border-collapse:collapse;font-size:12px}.hist-grid th[data-v-a5c0e01c],.hist-grid td[data-v-a5c0e01c]{border:1px solid var(--border, #e5e7eb)}.hist-skill-h[data-v-a5c0e01c]{background:var(--primary, #141414);color:#fff;padding:6px 10px;text-align:left;white-space:nowrap;position:sticky;left:0;z-index:1}.hist-level-h[data-v-a5c0e01c]{background:var(--bg, #f3f4f6);padding:6px 4px;min-width:34px;font-size:10px;font-weight:600;text-align:center}.hist-level-h span[data-v-a5c0e01c]{display:inline-block;writing-mode:vertical-rl;transform:rotate(180deg);max-height:90px}.hist-skill-c[data-v-a5c0e01c]{background:var(--card, #fff);padding:6px 10px;font-weight:600;white-space:nowrap;position:sticky;left:0}.hist-score-c[data-v-a5c0e01c]{text-align:center;padding:4px;background:var(--card, #fff)}.hist-na[data-v-a5c0e01c]{background:#f3f4f6}.hist-empty[data-v-a5c0e01c]{color:#cbd5e1}.hist-dot[data-v-a5c0e01c]{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:11px;font-weight:700;color:#fff;position:relative}.hist-dot.hist-has-tip[data-v-a5c0e01c]{cursor:help}.hist-tip-pop[data-v-a5c0e01c]{position:fixed;transform:translate(-50%,-100%);background:#141414;color:#fff;padding:6px 9px;border-radius:6px;font-size:11px;line-height:1.5;white-space:nowrap;z-index:4000;pointer-events:none;box-shadow:0 4px 14px #00000047}.hist-tip-row[data-v-a5c0e01c]{white-space:nowrap}.hist-dot.hist-changed[data-v-a5c0e01c]:after{content:"";position:absolute;top:-2px;right:-2px;width:7px;height:7px;border-radius:50%;background:#141414;border:1.5px solid #fff}.hist-1[data-v-a5c0e01c]{background:#22c55e}.hist-2[data-v-a5c0e01c]{background:#eab308}.hist-3[data-v-a5c0e01c]{background:#f97316}.exams-toolbar[data-v-a20e004b]{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:20px}.exams-toolbar[data-v-a20e004b] .course-tabs{margin-bottom:0;flex:1}.checklist-btn[data-v-a20e004b]{margin-left:auto;white-space:nowrap}.quick-mode[data-v-af2ebb66]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:radial-gradient(circle at top left,rgba(153,204,51,.16),transparent 28%),linear-gradient(180deg,#f9fbf2,#eef4fb);color:var(--text);display:flex;flex-direction:column;overflow-y:auto;padding-bottom:80px}.quick-header[data-v-af2ebb66]{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid rgba(15,52,96,.08);position:sticky;top:0;background:#f9fbf2eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10}.quick-exit-btn[data-v-af2ebb66]{color:var(--text);border-color:#0f34601f;background:#ffffffc2}.quick-exit-btn[data-v-af2ebb66]:hover{background:#fff}.quick-progress[data-v-af2ebb66]{display:flex;flex-direction:column;align-items:center;gap:2px}.quick-progress-label[data-v-af2ebb66]{font-size:13px;color:var(--muted)}.quick-progress-value[data-v-af2ebb66]{font-size:18px;font-weight:700;color:var(--text)}.quick-nav-btn[data-v-af2ebb66]{width:36px;height:36px;border-radius:8px;border:1px solid rgba(15,52,96,.12);background:#ffffffd1;color:var(--accent2);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s}.quick-nav-btn[data-v-af2ebb66]:hover:not(:disabled){background:#fff;transform:translateY(-1px)}.quick-nav-btn[data-v-af2ebb66]:disabled{opacity:.3;cursor:default}.quick-skill-card[data-v-af2ebb66]{margin:16px;background:#ffffffe6;border:1px solid rgba(15,52,96,.08);border-radius:18px;padding:18px;box-shadow:0 18px 40px #0f346014}.quick-skill-name[data-v-af2ebb66]{font-size:22px;font-weight:800;letter-spacing:.5px;margin-bottom:10px;color:var(--accent2);display:flex;align-items:center;gap:10px}.quick-skill-color-dot[data-v-af2ebb66]{display:inline-block;width:18px;height:18px;border-radius:3px;flex-shrink:0}.quick-skill-progress[data-v-af2ebb66]{height:8px;background:#e8edf5;border-radius:999px;margin-bottom:14px;overflow:hidden}.quick-skill-progress-bar[data-v-af2ebb66]{height:100%;background:linear-gradient(90deg,var(--accent),#c5db72);border-radius:999px;transition:width .3s}.quick-level-descriptions[data-v-af2ebb66]{display:flex;flex-direction:column;gap:8px}.quick-level-desc-row[data-v-af2ebb66]{display:flex;gap:10px;align-items:flex-start;font-size:13px}.quick-level-badge[data-v-af2ebb66]{background:#edf4d7;color:#54710f;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:600;white-space:nowrap;flex-shrink:0;margin-top:2px}.quick-level-text[data-v-af2ebb66]{color:#475569;line-height:1.4}.quick-level-single[data-v-af2ebb66]{font-size:13px;color:#475569;line-height:1.5}.quick-empty-state[data-v-af2ebb66]{margin:16px;padding:32px;text-align:center;color:var(--muted);background:#ffffffc7;border:1px dashed rgba(15,52,96,.14);border-radius:18px}.quick-group[data-v-af2ebb66]{margin:0 16px 12px}.quick-group-header[data-v-af2ebb66]{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--accent2);padding:10px 2px 8px;border-bottom:1px solid rgba(15,52,96,.08);margin-bottom:8px}.quick-student-grid[data-v-af2ebb66]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.quick-student-card[data-v-af2ebb66]{background:#ffffffe6;border:1px solid rgba(15,52,96,.08);border-radius:16px;padding:14px;transition:opacity .2s,transform .15s,box-shadow .15s;box-shadow:0 12px 28px #0f34600d}.quick-student-card[data-v-af2ebb66]:hover{transform:translateY(-1px);box-shadow:0 16px 32px #0f346014}.quick-student-done[data-v-af2ebb66]{background:linear-gradient(180deg,#fff,#f5fae9);border-color:#99cc3352}.quick-student-name[data-v-af2ebb66]{font-size:14px;font-weight:600;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:4px}.quick-save-status-inline[data-v-af2ebb66]{font-size:14px;color:var(--accent2)}.quick-level-section[data-v-af2ebb66]{margin-bottom:6px}.quick-level-tag[data-v-af2ebb66]{font-size:10px;color:#64748b;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quick-score-btns[data-v-af2ebb66]{display:flex;gap:6px}.quick-score-btn[data-v-af2ebb66]{flex:1;min-width:0;height:40px;border-radius:10px;border:2px solid #dbe4ef;background:#f8fafc;color:#64748b;font-size:15px;font-weight:700;cursor:pointer;transition:all .1s;display:flex;align-items:center;justify-content:center}.quick-score-btn[data-v-af2ebb66]:active:not(:disabled){transform:scale(.9)}.quick-score-btn[data-v-af2ebb66]:disabled{cursor:default;opacity:.4}.qscore-1[data-v-af2ebb66]{border-color:#22c55e47}.qscore-1[data-v-af2ebb66]:hover:not(:disabled){background:#22c55e1a}.qscore-1-active[data-v-af2ebb66]{background:#22c55e;border-color:#22c55e;color:#fff}.qscore-2[data-v-af2ebb66]{border-color:#eab30847}.qscore-2[data-v-af2ebb66]:hover:not(:disabled){background:#eab3081a}.qscore-2-active[data-v-af2ebb66]{background:#eab308;border-color:#eab308;color:#fff}.qscore-3[data-v-af2ebb66]{border-color:#f9731647}.qscore-3[data-v-af2ebb66]:hover:not(:disabled){background:#f973161a}.qscore-3-active[data-v-af2ebb66]{background:#f97316;border-color:#f97316;color:#fff}.quick-bottom-nav[data-v-af2ebb66]{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:#ffffffe6;border-top:1px solid rgba(15,52,96,.08);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:20}.quick-bottom-title[data-v-af2ebb66]{font-size:13px;color:var(--muted)}.quick-bottom-btn[data-v-af2ebb66]{background:#fff;color:var(--text);border:1px solid rgba(15,52,96,.12);min-width:100px}.quick-bottom-btn[data-v-af2ebb66]:hover:not(:disabled){background:#f8fafc}.quick-bottom-btn[data-v-af2ebb66]:disabled{opacity:.3;cursor:default}@media(max-width:1100px){.quick-student-grid[data-v-af2ebb66]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.quick-student-grid[data-v-af2ebb66]{grid-template-columns:1fr}}.exam-passed[data-v-ad717232]{border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 5%,transparent)}.exam-grid[data-v-ad717232]{width:100%;border-collapse:collapse;font-size:13px}.exam-grid th[data-v-ad717232],.exam-grid td[data-v-ad717232]{border:1px solid var(--border)}.exam-grid-skill-header[data-v-ad717232]{background:var(--primary);color:#fff;padding:10px 14px;text-align:left;white-space:nowrap;min-width:130px;position:sticky;left:0;z-index:2}.exam-grid-level-header[data-v-ad717232]{background:var(--bg);padding:8px 6px;text-align:center;min-width:110px;font-size:11px;font-weight:600}.exam-grid-level-header span[data-v-ad717232]{display:inline-block;writing-mode:vertical-rl;transform:rotate(180deg);max-height:90px}.exam-grid-level-current[data-v-ad717232]{background:#fefce8;border-top:3px solid var(--accent)!important}.exam-grid-skill-cell[data-v-ad717232]{background:var(--card);padding:8px 14px;font-weight:600;white-space:nowrap;position:sticky;left:0;z-index:1}.exam-grid-score-cell[data-v-ad717232]{text-align:center;padding:6px 4px;background:var(--card)}.exam-grid-na[data-v-ad717232]{background:#f3f4f6}.exam-grid-disabled button[data-v-ad717232]{cursor:default;opacity:.6}.score-btn[data-v-ad717232]{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:2px solid var(--border);background:#fff;font-size:12px;font-weight:700;cursor:pointer;margin:1px;transition:all .1s;color:var(--muted)}.score-btn[data-v-ad717232]:hover:not(:disabled){transform:scale(1.1)}.score-1[data-v-ad717232]{border-color:#bbf7d0}.score-1[data-v-ad717232]:hover:not(:disabled){background:#dcfce7}.score-1-active[data-v-ad717232],.score-1-preview[data-v-ad717232]{background:#22c55e;border-color:#22c55e;color:#fff}.score-2[data-v-ad717232]{border-color:#fde68a}.score-2[data-v-ad717232]:hover:not(:disabled){background:#fef9c3}.score-2-active[data-v-ad717232],.score-2-preview[data-v-ad717232]{background:#eab308;border-color:#eab308;color:#fff}.score-3[data-v-ad717232]{border-color:#fed7aa}.score-3[data-v-ad717232]:hover:not(:disabled){background:#fff7ed}.score-3-active[data-v-ad717232],.score-3-preview[data-v-ad717232]{background:#f97316;border-color:#f97316;color:#fff}.overall[data-v-37ce7c41]{display:flex;gap:12px;flex-wrap:wrap;margin:4px 0 8px}.overall-item[data-v-37ce7c41]{flex:1;min-width:120px;padding:14px;border-radius:10px;background:var(--bg-subtle, #f3f4f6);text-align:center}.overall-num[data-v-37ce7c41]{font-size:26px;font-weight:800;color:var(--navy, #1a1a2e)}.overall-label[data-v-37ce7c41]{font-size:12px;color:var(--muted, #6b7280);margin-top:2px}.course-group[data-v-37ce7c41]{margin-top:18px}.course-head[data-v-37ce7c41]{font-weight:700;font-size:15px;color:var(--navy, #1a1a2e);margin-bottom:6px}.data-table[data-v-37ce7c41]{width:100%;border-collapse:collapse;font-size:14px}.data-table th[data-v-37ce7c41],.data-table td[data-v-37ce7c41]{padding:8px 10px;border-bottom:1px solid var(--border, #e5e7eb);text-align:left}.data-table th.num[data-v-37ce7c41],.data-table td.num[data-v-37ce7c41]{text-align:right}.data-table tfoot td[data-v-37ce7c41]{border-top:2px solid var(--border, #e5e7eb);font-weight:600}.bar-col[data-v-37ce7c41]{width:140px}.bar-track[data-v-37ce7c41]{height:8px;border-radius:4px;background:#e5e7eb;overflow:hidden}.bar-fill[data-v-37ce7c41]{height:100%;border-radius:4px}.q-good[data-v-37ce7c41]{color:#16a34a;font-weight:700}.q-mid[data-v-37ce7c41]{color:#d97706;font-weight:700}.q-low[data-v-37ce7c41]{color:#dc2626;font-weight:700}.day-list[data-v-0cc4b04c]{display:flex;flex-direction:column;gap:10px}.day[data-v-0cc4b04c]{border:1px solid var(--border, #e5e7eb);border-radius:10px;overflow:hidden}.day-header[data-v-0cc4b04c]{width:100%;display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--surface-alt, #f7f8fa);border:none;cursor:pointer;text-align:left;font:inherit}.day-header.open[data-v-0cc4b04c]{border-bottom:1px solid var(--border, #e5e7eb)}.day-caret[data-v-0cc4b04c]{color:var(--muted, #6b7280);font-size:13px;width:14px}.day-name[data-v-0cc4b04c]{font-weight:700;font-size:16px}.day-meta[data-v-0cc4b04c]{margin-left:auto;display:flex;gap:6px;align-items:center}.day-body[data-v-0cc4b04c]{padding:8px 16px 16px;display:flex;flex-direction:column;gap:18px}.course-header[data-v-0cc4b04c]{display:flex;align-items:center;gap:10px;margin:10px 0 6px}.course-actions[data-v-0cc4b04c]{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.course-actions .btn[data-v-0cc4b04c]{white-space:nowrap}.course-name[data-v-0cc4b04c]{font-weight:600;font-size:15px}.check-table[data-v-0cc4b04c]{width:100%;border-collapse:collapse}.check-table th[data-v-0cc4b04c]{font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted, #6b7280);text-align:left;padding:6px 8px;border-bottom:1px solid var(--border, #e5e7eb);font-weight:600;line-height:1.25}.check-table td[data-v-0cc4b04c]{padding:8px;border-bottom:1px solid var(--border, #f0f1f3);font-size:14px}.col-cb[data-v-0cc4b04c]{width:92px;text-align:center}.check-table th.col-cb[data-v-0cc4b04c]{text-align:center}.col-belt[data-v-0cc4b04c]{width:130px}.row-done td[data-v-0cc4b04c]{opacity:.6}.big-check[data-v-0cc4b04c]{width:22px;height:22px;cursor:pointer;accent-color:var(--success, #16a34a)}.big-check[data-v-0cc4b04c]:disabled{cursor:not-allowed}.moved-badge[data-v-0cc4b04c]{display:inline-block;margin-left:8px;padding:1px 7px;font-size:11px;font-weight:600;border-radius:999px;background:#eef2ff;color:#4338ca;vertical-align:middle}.moved-remove[data-v-0cc4b04c]{margin-left:8px;border:1px solid #fecaca;background:#fff;color:#dc2626;cursor:pointer;font-size:13px;font-weight:700;line-height:1;padding:3px 7px;border-radius:6px;vertical-align:middle}.moved-remove[data-v-0cc4b04c]:hover:not(:disabled){background:#fef2f2;border-color:#f87171}.moved-remove[data-v-0cc4b04c]:disabled{opacity:.5;cursor:not-allowed}.picker[data-v-0cc4b04c]{margin:0 0 10px;border:1px solid var(--border, #e5e7eb);border-radius:8px;padding:8px;max-width:420px}.picker-search[data-v-0cc4b04c]{width:100%;padding:7px 9px;border:1px solid var(--border, #d1d5db);border-radius:6px;font-size:14px;margin-bottom:6px}.picker-item[data-v-0cc4b04c]{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;border:none;background:transparent;border-radius:6px;cursor:pointer;text-align:left;font:inherit}.picker-item[data-v-0cc4b04c]:hover:not(:disabled){background:var(--surface-alt, #f3f4f6)}.picker-item[data-v-0cc4b04c]:disabled{cursor:not-allowed;opacity:.6}.fs-overlay[data-v-0cc4b04c]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:radial-gradient(circle at top left,rgba(153,204,51,.16),transparent 28%),linear-gradient(180deg,#f9fbf2,#eef4fb);color:var(--text);display:flex;flex-direction:column;overflow-y:auto;padding-bottom:32px}.fs-header[data-v-0cc4b04c]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid rgba(15,52,96,.08);position:sticky;top:0;background:#f9fbf2eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10}.fs-exit[data-v-0cc4b04c]{color:var(--text);border-color:#0f34601f;background:#ffffffc2;white-space:nowrap}.fs-exit[data-v-0cc4b04c]:hover{background:#fff}.fs-title[data-v-0cc4b04c]{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;min-width:0}.fs-day[data-v-0cc4b04c]{font-size:13px;color:var(--muted)}.fs-course-name[data-v-0cc4b04c]{font-size:20px;font-weight:800;color:var(--accent2, #0f3460)}.fs-header-right[data-v-0cc4b04c]{display:flex;align-items:center;gap:10px}.fs-count[data-v-0cc4b04c]{font-size:14px;font-weight:700}.fs-picker[data-v-0cc4b04c]{margin:12px 16px 0;max-width:480px;background:#fffffff2}.fs-table-wrap[data-v-0cc4b04c]{padding:18px 16px;max-width:820px;width:100%;margin:0 auto}.fs-table[data-v-0cc4b04c]{width:100%;border-collapse:separate;border-spacing:0 8px}.fs-table th[data-v-0cc4b04c]{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted, #6b7280);text-align:left;padding:0 16px 4px;font-weight:700}.fs-th-belt[data-v-0cc4b04c]{width:160px}.fs-th-present[data-v-0cc4b04c]{width:120px;text-align:center}.fs-table .fs-th-present[data-v-0cc4b04c]{text-align:center}.fs-row[data-v-0cc4b04c]{background:#ffffffeb;box-shadow:0 8px 20px #0f34600d;cursor:pointer;transition:background .15s,box-shadow .15s}.fs-row[data-v-0cc4b04c]:hover:not(.fs-disabled){background:#fff;box-shadow:0 10px 24px #0f34601a}.fs-row.fs-disabled[data-v-0cc4b04c]{cursor:default}.fs-row td[data-v-0cc4b04c]{padding:16px;border-top:2px solid transparent;border-bottom:2px solid transparent;vertical-align:middle}.fs-row td[data-v-0cc4b04c]:first-child{border-left:2px solid transparent;border-top-left-radius:14px;border-bottom-left-radius:14px}.fs-row td[data-v-0cc4b04c]:last-child{border-right:2px solid transparent;border-top-right-radius:14px;border-bottom-right-radius:14px}.fs-row.fs-present[data-v-0cc4b04c]{background:linear-gradient(180deg,#fff,#ecf7d6)}.fs-row.fs-present td[data-v-0cc4b04c]{border-color:var(--success, #16a34a)}.fs-row.fs-present td[data-v-0cc4b04c]:not(:first-child):not(:last-child){border-left-color:transparent;border-right-color:transparent}.fs-td-name[data-v-0cc4b04c]{font-size:20px;font-weight:700}.fs-td-name .moved-badge[data-v-0cc4b04c]{font-size:12px}.fs-td-present[data-v-0cc4b04c]{text-align:center}.fs-check[data-v-0cc4b04c]{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;font-size:20px;font-weight:800;border:2px solid rgba(15,52,96,.18);color:#fff;background:transparent}.fs-present .fs-check[data-v-0cc4b04c]{background:var(--success, #16a34a);border-color:var(--success, #16a34a)}@media(max-width:640px){.fs-td-name[data-v-0cc4b04c]{font-size:17px}.fs-th-belt[data-v-0cc4b04c],.fs-td-belt[data-v-0cc4b04c]{display:none}}.result-list[data-v-261d06d4]{display:flex;flex-direction:column;gap:4px}.course-heading[data-v-261d06d4]{font-size:14px;font-weight:700;color:var(--accent2, var(--primary));padding:14px 2px 4px;border-bottom:1px solid var(--border, #e5e7eb);margin-bottom:4px}.course-heading[data-v-261d06d4]:first-child{padding-top:4px}.result-item[data-v-261d06d4]{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:1px solid var(--border, #e5e7eb);border-radius:8px;background:var(--card, #fff);cursor:pointer;text-align:left;font:inherit}.result-item[data-v-261d06d4]:hover{border-color:var(--accent, #99cc33);background:var(--surface-alt, #f7f8fa)}.result-item.open[data-v-261d06d4]{border-color:var(--accent, #99cc33);border-bottom-left-radius:0;border-bottom-right-radius:0}.result-caret[data-v-261d06d4]{color:var(--muted, #9ca3af);font-size:12px;width:12px;flex-shrink:0}.result-name[data-v-261d06d4]{font-weight:600}.result-meta[data-v-261d06d4]{display:flex;align-items:center;gap:8px;margin-left:auto}.result-card[data-v-261d06d4]{border:1px solid var(--accent, #99cc33);border-top:none;border-bottom-left-radius:8px;border-bottom-right-radius:8px;padding:12px;margin-top:-4px;background:var(--surface-alt, #fafbfc)}.result-card-status[data-v-261d06d4]{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-bottom:8px}.chip-three[data-v-261d06d4]{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700;white-space:nowrap}.chip-gap[data-v-261d06d4]{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700;white-space:nowrap}.chip-warn[data-v-261d06d4]{background:#fef9c3;color:#854d0e;border:1px solid #fde68a;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700;white-space:nowrap}.exam-grid[data-v-261d06d4]{width:100%;border-collapse:collapse;font-size:13px}.exam-grid th[data-v-261d06d4],.exam-grid td[data-v-261d06d4]{border:1px solid var(--border)}.exam-grid-skill-header[data-v-261d06d4]{background:var(--primary);color:#fff;padding:10px 14px;text-align:left;white-space:nowrap;min-width:130px;position:sticky;left:0;z-index:2}.exam-grid-level-header[data-v-261d06d4]{background:var(--bg);padding:8px 6px;text-align:center;min-width:110px;font-size:11px;font-weight:600}.exam-grid-level-header span[data-v-261d06d4]{display:inline-block;writing-mode:vertical-rl;transform:rotate(180deg);max-height:90px}.exam-grid-level-current[data-v-261d06d4]{background:#fefce8;border-top:3px solid var(--accent)!important}.exam-grid-skill-cell[data-v-261d06d4]{background:var(--card);padding:8px 14px;font-weight:600;white-space:nowrap;position:sticky;left:0;z-index:1}.row-flagged .exam-grid-skill-cell[data-v-261d06d4]{background:#fff7ed;color:#c2410c}.exam-grid-score-cell[data-v-261d06d4]{text-align:center;padding:6px 4px;background:var(--card)}.exam-grid-na[data-v-261d06d4]{background:#f3f4f6}.cell-missing[data-v-261d06d4]{background:#fef3c7;box-shadow:inset 0 0 0 2px #fcd34d}.score-btn[data-v-261d06d4]{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:2px solid var(--border);background:#fff;font-size:12px;font-weight:700;cursor:pointer;margin:1px;transition:all .1s;color:var(--muted)}.score-btn[data-v-261d06d4]:hover:not(:disabled){transform:scale(1.1)}.score-btn[data-v-261d06d4]:disabled{cursor:default;opacity:.6}.score-1[data-v-261d06d4]{border-color:#bbf7d0}.score-1[data-v-261d06d4]:hover:not(:disabled){background:#dcfce7}.score-1-active[data-v-261d06d4]{background:#22c55e;border-color:#22c55e;color:#fff}.score-2[data-v-261d06d4]{border-color:#fde68a}.score-2[data-v-261d06d4]:hover:not(:disabled){background:#fef9c3}.score-2-active[data-v-261d06d4]{background:#eab308;border-color:#eab308;color:#fff}.score-3[data-v-261d06d4]{border-color:#fed7aa}.score-3[data-v-261d06d4]:hover:not(:disabled){background:#fff7ed}.score-3-active[data-v-261d06d4]{background:#f97316;border-color:#f97316;color:#fff}.course-group[data-v-2bed6418]{margin-top:18px}.course-head[data-v-2bed6418]{font-weight:700;font-size:15px;color:var(--navy, #1a1a2e);margin-bottom:6px}.data-table[data-v-2bed6418]{width:100%;border-collapse:collapse;font-size:14px}.data-table th[data-v-2bed6418],.data-table td[data-v-2bed6418]{padding:8px 10px;border-bottom:1px solid var(--border, #e5e7eb);text-align:left}.data-table th.num[data-v-2bed6418],.data-table td.num[data-v-2bed6418]{text-align:right}.data-table th.group-head[data-v-2bed6418]{text-align:center;border-bottom:1px solid var(--border, #e5e7eb)}.data-table th.sub[data-v-2bed6418]{font-weight:500;font-size:12px;color:var(--muted, #6b7280)}.stock-input[data-v-2bed6418]{width:64px;padding:4px 6px;text-align:right;border:1px solid var(--border, #d1d5db);border-radius:6px}.order-need[data-v-2bed6418]{color:#dc2626;font-weight:700}.total-bar[data-v-2bed6418]{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:18px;padding:12px 14px;background:var(--bg-subtle, #f3f4f6);border-radius:8px;font-size:14px}.ticket-comment[data-v-c231224e]{border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:#fafafa}.print-area[data-v-6db2276f]{display:none}.print-title[data-v-6db2276f]{font-size:14pt;font-weight:700;margin-bottom:3mm;font-family:Arial,sans-serif}.print-meta[data-v-6db2276f]{font-size:9pt;color:#6b7280;margin-bottom:5mm;font-family:Arial,sans-serif}.print-table[data-v-6db2276f]{width:100%;border-collapse:collapse;font-size:10pt;font-family:Arial,sans-serif}.print-table th[data-v-6db2276f]{text-align:left;padding:2mm 2.5mm;border-bottom:1.5pt solid #111;font-weight:700;font-size:9pt;text-transform:uppercase;letter-spacing:.03em}.print-table td[data-v-6db2276f]{padding:2.5mm;border-bottom:.5pt solid #d1d5db;vertical-align:middle}.walkin-row td[data-v-6db2276f]{height:10mm;border-bottom:.5pt solid #d1d5db}.check-box[data-v-6db2276f]{display:inline-block;width:8mm;height:5mm;border:1pt solid #374151;border-radius:2pt}@media print{.print-area[data-v-6db2276f]{display:block!important}}.stat-card[data-v-13362619]{padding:16px 20px}.stat-value[data-v-13362619]{font-size:28px;font-weight:800;line-height:1;margin-bottom:4px}.stat-label[data-v-13362619]{font-size:12px;color:var(--muted);font-weight:500}.stat-sub[data-v-13362619]{font-size:11px;color:var(--muted);margin-top:4px}.empty-hint[data-v-13362619]{font-size:13px;color:var(--muted);padding:12px 0}.print-title[data-v-da832dcc]{font-size:14pt;font-weight:700;margin-bottom:6mm;font-family:Arial,sans-serif}.day-table[data-v-da832dcc]{width:100%;border-collapse:collapse;font-size:10pt;font-family:Arial,sans-serif}.day-table th[data-v-da832dcc]{text-align:left;padding:2mm 2.5mm;border-bottom:1.5pt solid #111;font-weight:700;font-size:9pt;text-transform:uppercase;letter-spacing:.03em}.day-table td[data-v-da832dcc]{padding:2mm 2.5mm;border-bottom:.5pt solid #d1d5db;vertical-align:middle}.time-col[data-v-da832dcc]{white-space:nowrap;width:18mm}.action-col[data-v-da832dcc]{width:80px;text-align:center}.check-col[data-v-da832dcc]{width:12mm;text-align:center}.walkin-row td[data-v-da832dcc]{height:10mm;border-bottom:.5pt solid #d1d5db}.print-only-row[data-v-da832dcc]{display:none}.check-box[data-v-da832dcc]{display:inline-block;width:8mm;height:5mm;border:1pt solid #374151;border-radius:2pt}.row-appeared td[data-v-da832dcc]{background:#f0fdf4}.row-not-appeared td[data-v-da832dcc]{background:#fff7f7}.row-contracted td[data-v-da832dcc]{background:#f5f3ff}.toggle-btn[data-v-da832dcc]{width:28px;height:26px;border:1.5px solid #d1d5db;border-radius:5px;background:#f9fafb;font-size:11px;font-weight:700;cursor:pointer;transition:all .12s;color:#6b7280}.toggle-btn[data-v-da832dcc]:hover:not(:disabled){border-color:#9ca3af;background:#f3f4f6}.toggle-btn[data-v-da832dcc]:disabled{opacity:.35;cursor:default}.toggle-btn.active-green[data-v-da832dcc]{background:#dcfce7;border-color:#16a34a;color:#15803d}.toggle-btn.active-red[data-v-da832dcc]{background:#fee2e2;border-color:#dc2626;color:#b91c1c}.toggle-btn.active-blue[data-v-da832dcc]{background:#dbeafe;border-color:#3b82f6;color:#1d4ed8}.toggle-btn.active-orange[data-v-da832dcc]{background:#fff7ed;border-color:#f97316;color:#c2410c}.toggle-btn.active-purple[data-v-da832dcc]{background:#ede9fe;border-color:#8b5cf6;color:#6d28d9}.badge-e[data-v-da832dcc],.badge-n[data-v-da832dcc],.badge-q[data-v-da832dcc],.badge-v[data-v-da832dcc]{display:inline-block;width:20px;height:20px;line-height:20px;text-align:center;border-radius:4px;font-size:11px;font-weight:700;margin-right:2px}.badge-e[data-v-da832dcc]{background:#dcfce7;color:#15803d;border:1px solid #16a34a}.badge-n[data-v-da832dcc]{background:#fee2e2;color:#b91c1c;border:1px solid #dc2626}.badge-q[data-v-da832dcc]{background:#dbeafe;color:#1d4ed8;border:1px solid #3b82f6}.badge-b[data-v-da832dcc]{background:#fff7ed;color:#c2410c;border:1px solid #fb923c}.badge-v[data-v-da832dcc]{background:#ede9fe;color:#6d28d9;border:1px solid #8b5cf6}.print-only[data-v-da832dcc]{display:none}.name-link[data-v-da832dcc]{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px}.name-link[data-v-da832dcc]:hover{color:#1d4ed8}@media print{.name-link[data-v-da832dcc]{text-decoration:none}}.print-q[data-v-da832dcc]{display:inline-block;border:1pt solid #374151;border-radius:2pt;padding:0 1.2mm;margin-right:1.5mm;font-weight:700}@media print{.no-print[data-v-da832dcc]{display:none!important}.print-only[data-v-da832dcc]{display:table-cell!important}.print-only-row[data-v-da832dcc]{display:table-row!important}.row-appeared td[data-v-da832dcc],.row-not-appeared td[data-v-da832dcc],.row-contracted td[data-v-da832dcc]{background:none!important}}.kanban-board[data-v-33bd77b7]{display:flex;gap:12px;overflow-x:auto;padding-bottom:16px;align-items:flex-start}.kanban-col[data-v-33bd77b7]{flex:0 0 220px;background:var(--card-bg, #fff);border:1px solid var(--border, #e5e7eb);border-radius:10px;overflow:hidden}.kanban-col-header[data-v-33bd77b7]{padding:10px 14px;background:#f9fafb;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between}.kanban-col-title[data-v-33bd77b7]{font-size:13px;font-weight:700;color:#374151}.kanban-count[data-v-33bd77b7]{background:#e5e7eb;color:#6b7280;font-size:11px;font-weight:700;border-radius:999px;padding:1px 7px}.kanban-card-list[data-v-33bd77b7]{padding:10px;min-height:60px;display:flex;flex-direction:column;gap:8px}.kanban-card[data-v-33bd77b7]{background:#fff;border:1.5px solid #e5e7eb;border-radius:8px;padding:10px 12px;cursor:grab;transition:box-shadow .15s,border-color .15s}.kanban-card[data-v-33bd77b7]:hover{border-color:#9c3;box-shadow:0 2px 8px #00000014}.kanban-card.archived[data-v-33bd77b7]{opacity:.55}.kanban-card-name[data-v-33bd77b7]{font-size:13px;font-weight:600;color:#111}.kanban-card-meta[data-v-33bd77b7]{font-size:12px;color:#6b7280;margin-top:2px}.kanban-empty[data-v-33bd77b7]{font-size:12px;color:#d1d5db;text-align:center;padding:8px 0}.activity-item[data-v-c726c957]{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.activity-item[data-v-c726c957]:last-child{border-bottom:none}.activity-icon[data-v-c726c957]{font-size:18px;flex-shrink:0;width:28px;text-align:center;margin-top:1px}:root{--primary: #1a1a2e;--accent: #99cc33;--accent2: #0f3460;--bg: #f4f6fb;--card: #ffffff;--text: #1a1a2e;--muted: #6b7280;--border: #e5e7eb;--success: #10b981;--sidebar-w: 240px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}.app{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);background:var(--primary);color:#fff;display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:100;overflow-y:auto;transform:translate(-100%);transition:transform .25s ease}.sidebar.sidebar-open{transform:translate(0)}.main{margin-left:0;flex:1;display:flex;flex-direction:column;transition:margin-left .25s ease}.main.sidebar-visible{margin-left:var(--sidebar-w)}.topbar{background:var(--card);border-bottom:1px solid var(--border);padding:0 24px;height:60px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:50}.content{padding:24px;flex:1}.sidebar-logo{padding:20px 16px;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-logo h2{font-size:16px;font-weight:700;color:var(--accent)}.sidebar-logo p{font-size:11px;color:#ffffff80;margin-top:2px}.sidebar-section{padding:16px 0}.sidebar-label{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:#fff6;padding:0 16px;margin-bottom:6px}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;transition:all .15s;font-size:14px;color:#ffffffb3}.nav-item:hover{background:#ffffff14;color:#fff}.nav-item.active{background:var(--accent);color:#fff}.nav-item .icon{font-size:16px;width:20px;text-align:center}.topbar-title{font-size:18px;font-weight:600}.topbar-actions{display:flex;gap:8px;align-items:center}.role-badge{font-size:12px;padding:4px 10px;border-radius:20px;font-weight:500}.role-admin{background:#fee2e2;color:#dc2626}.role-developer{background:#ede9fe;color:#6d28d9}.role-coordinator{background:#dcfce7;color:#16a34a}.role-assistant{background:#fef9c3;color:#a16207}.role-trainer,.role-viewer{background:#dbeafe;color:#2563eb}.role-counter{background:#ffedd5;color:#c2410c}.btn{padding:8px 16px;border-radius:6px;border:none;cursor:pointer;font-size:14px;font-weight:500;transition:all .15s;display:inline-flex;align-items:center;gap:6px}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#7aaa1f}.btn-secondary{background:var(--bg);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{background:var(--border)}.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.btn-ghost:hover{background:var(--bg);color:var(--text)}.btn-sm{padding:5px 10px;font-size:12px}.card{background:var(--card);border-radius:10px;border:1px solid var(--border);padding:20px}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.card-title{font-size:15px;font-weight:600}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat-card{background:var(--card);border-radius:10px;padding:20px;border:1px solid var(--border)}.stat-value{font-size:28px;font-weight:700;color:var(--accent)}.stat-label{font-size:13px;color:var(--muted);margin-top:4px}.course-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.course-tab{padding:8px 16px;border-radius:6px;border:2px solid var(--border);cursor:pointer;font-size:13px;font-weight:500;transition:all .15s;background:var(--card)}.course-tab:hover{border-color:var(--accent)}.course-tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}.plan-table{width:100%;border-collapse:collapse;font-size:13px}.plan-table thead th{background:var(--primary);color:#fff;padding:8px 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;text-align:left;white-space:nowrap}.plan-table tbody tr{border-bottom:1px solid var(--border)}.plan-table tbody tr:last-child{border-bottom:none}.plan-table tbody tr:hover{background:#f8f9fa}.plan-table td{padding:8px 12px;vertical-align:middle}.plan-week-num{font-weight:700;font-size:13px;color:var(--muted);white-space:nowrap}.plan-cell{font-size:13px;max-width:160px}.plan-skill-badge{font-size:11px;padding:2px 8px;border-radius:4px;color:#fff;white-space:normal;word-break:break-word}.plan-actions{white-space:nowrap;text-align:right}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:var(--card);border-radius:12px;max-width:700px;width:100%;max-height:90vh;overflow-y:auto}.modal-header{padding:20px 24px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:var(--card);z-index:1}.modal-body{padding:24px}.modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--muted)}.plan-section{margin-bottom:16px;padding:16px;border-radius:8px;border-left:4px solid var(--accent);background:#fef2f2}.plan-section.blue{border-left-color:#3b82f6;background:#eff6ff}.plan-section.green{border-left-color:#10b981;background:#ecfdf5}.plan-section.yellow{border-left-color:#f59e0b;background:#fffbeb}.plan-section.purple{border-left-color:#8b5cf6;background:#f5f3ff}.plan-section.orange{border-left-color:#f97316;background:#fff7ed}.plan-section.gray{border-left-color:#6b7280;background:#f9fafb}.plan-section-title{font-size:11px;text-transform:uppercase;letter-spacing:1px;font-weight:700;margin-bottom:6px;opacity:.7}.plan-section-name{font-size:16px;font-weight:700;margin-bottom:8px}.full-desc{font-size:13px;line-height:1.7;white-space:pre-wrap;color:var(--text)}.db-cats{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.search-input{padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;width:250px;outline:none}.search-input:focus{border-color:var(--accent)}.filter-select{padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;outline:none;background:#fff}.exercise-list{display:grid;gap:8px}.exercise-card{background:var(--card);border-radius:8px;border:1px solid var(--border);padding:14px 16px;cursor:pointer;transition:all .15s}.exercise-card:hover{border-color:var(--accent);box-shadow:0 2px 8px #99cc3326}.exercise-card-header{display:flex;justify-content:space-between;align-items:flex-start}.exercise-name{font-weight:600;font-size:14px}.exercise-tag{font-size:11px;padding:2px 7px;border-radius:4px;background:#f3f4f6;color:var(--muted);font-weight:500;margin-left:4px}.exercise-desc{font-size:12px;color:var(--muted);margin-top:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.form-group{margin-bottom:16px}.form-label{font-size:13px;font-weight:500;margin-bottom:6px;display:block;color:var(--muted)}.form-input{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;outline:none}.form-input:focus{border-color:var(--accent)}.form-textarea{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;outline:none;min-height:100px;resize:vertical;font-family:inherit}.form-textarea:focus{border-color:var(--accent)}.form-select{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;outline:none;background:#fff}table{width:100%;border-collapse:collapse}th{text-align:left;padding:10px 12px;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:2px solid var(--border)}td{padding:10px 12px;font-size:13px;border-bottom:1px solid var(--border);vertical-align:top}tr:hover td{background:var(--bg)}.chip{display:inline-flex;align-items:center;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:500}.chip-blue{background:#dbeafe;color:#2563eb}.chip-green{background:#d1fae5;color:#059669}.chip-red{background:#fee2e2;color:#dc2626}.chip-gray{background:#f3f4f6;color:#6b7280}.chip-orange{background:#fff7ed;color:#c2410c}.chip-yellow{background:#fef3c7;color:#d97706}.empty-state{text-align:center;padding:60px 20px;color:var(--muted)}.empty-icon{font-size:48px;margin-bottom:12px}.notif{position:fixed;bottom:24px;right:24px;background:var(--primary);color:#fff;padding:12px 20px;border-radius:8px;font-size:14px;z-index:999;animation:slideIn .3s}@keyframes slideIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.page-header{margin-bottom:24px}.page-header h1{font-size:22px;font-weight:700}.page-header p{font-size:14px;color:var(--muted);margin-top:4px}.section-gap{margin-bottom:24px}.text-muted{color:var(--muted);font-size:13px}.hamburger{display:flex;flex-direction:column;justify-content:center;gap:5px;width:36px;height:36px;padding:6px;background:none;border:none;cursor:pointer;border-radius:6px;flex-shrink:0}.hamburger:hover{background:var(--border)}.hamburger span{display:block;height:2px;background:var(--text);border-radius:2px;width:100%}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:99}@media(max-width:768px){.sidebar-overlay{display:block}.main.sidebar-visible{margin-left:0}.grid-4{grid-template-columns:1fr 1fr}.content{padding:16px}}.sidebar-footer{margin-top:auto;padding:16px;border-top:1px solid rgba(255,255,255,.1)}.sidebar-footer-label{font-size:12px;color:#ffffff80;margin-bottom:4px}.sidebar-footer-name{font-size:14px;font-weight:600;color:#fff}.week-detail-meta{padding:12px;background:#f9fafb;border-radius:8px;margin-bottom:16px;display:flex;gap:20px;flex-wrap:wrap}.notif-enter-active,.notif-leave-active{transition:transform .3s,opacity .3s}.notif-enter-from,.notif-leave-to{transform:translateY(20px);opacity:0}.login-wrap{flex:1;width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{background:var(--card);border-radius:12px;border:1px solid var(--border);padding:40px;width:100%;max-width:380px}.login-logo{font-size:28px;font-weight:700;color:var(--accent);text-align:center;margin-bottom:4px}.login-subtitle{font-size:13px;color:var(--muted);text-align:center;margin-bottom:28px}.login-error{font-size:13px;color:#dc2626;background:#fee2e2;border-radius:6px;padding:8px 12px;margin-bottom:12px}@media print{.sidebar,.sidebar-overlay,.topbar{display:none!important}.main{margin-left:0!important;padding:0!important}.content{padding:0!important}}
