html,body,#app{width:100%;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}.login-page[data-v-ce7bc8b9]{min-height:100vh;display:flex;align-items:center;justify-content:center;background-image:url(/assets/login-bg-BMraZI95.jpg);background-size:cover;background-position:center;position:relative;overflow:hidden}.login-page[data-v-ce7bc8b9]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#0a1e3cb8,#1a6fc473);z-index:0}.particles[data-v-ce7bc8b9]{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:0}.particle[data-v-ce7bc8b9]{position:absolute;border-radius:50%;background:#ffffff0d;animation:floatUp-ce7bc8b9 linear infinite}@keyframes floatUp-ce7bc8b9{0%{transform:translateY(110vh) scale(0);opacity:0}10%{opacity:1}90%{opacity:.8}to{transform:translateY(-120px) scale(1);opacity:0}}.login-card[data-v-ce7bc8b9]{position:relative;z-index:1;display:flex;width:940px;max-width:96vw;min-height:560px;border-radius:20px;overflow:hidden;box-shadow:0 30px 90px #00000080,0 0 0 1px #ffffff14;animation:cardIn-ce7bc8b9 .5s ease}@keyframes cardIn-ce7bc8b9{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.login-left[data-v-ce7bc8b9]{flex:1;background:linear-gradient(160deg,#1a6fc4e6,#081850f5);padding:52px 46px;display:flex;flex-direction:column;justify-content:space-between;color:#fff;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-right:1px solid rgba(255,255,255,.08)}.login-brand[data-v-ce7bc8b9]{display:flex;align-items:center;gap:16px;margin-bottom:36px}.brand-icon[data-v-ce7bc8b9]{width:58px;height:58px;background:#ffffff26;border:1px solid rgba(255,255,255,.2);border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:28px;flex-shrink:0}.brand-text h1[data-v-ce7bc8b9]{font-size:20px;font-weight:800;line-height:1.3}.brand-text p[data-v-ce7bc8b9]{font-size:11px;opacity:.55;margin-top:3px;letter-spacing:.5px}.login-tagline[data-v-ce7bc8b9]{font-size:30px;font-weight:800;line-height:1.4;margin-bottom:10px;letter-spacing:1px}.login-tagline .highlight[data-v-ce7bc8b9]{color:#64c8ffe6}.login-desc[data-v-ce7bc8b9]{font-size:13px;opacity:.55;line-height:1.8;margin-bottom:36px}.login-features[data-v-ce7bc8b9]{display:flex;flex-direction:column;gap:18px}.feature-item[data-v-ce7bc8b9]{display:flex;align-items:flex-start;gap:14px}.feature-icon[data-v-ce7bc8b9]{width:40px;height:40px;flex-shrink:0;background:#ffffff1a;border:1px solid rgba(255,255,255,.15);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px}.feature-text h4[data-v-ce7bc8b9]{font-size:13px;font-weight:600;margin-bottom:3px}.feature-text p[data-v-ce7bc8b9]{font-size:12px;opacity:.5;line-height:1.5}.login-footer-text[data-v-ce7bc8b9]{font-size:11px;opacity:.3;margin-top:32px}.login-right[data-v-ce7bc8b9]{width:410px;background:#fff;padding:52px 46px;display:flex;flex-direction:column;justify-content:center;flex-shrink:0}.login-title[data-v-ce7bc8b9]{font-size:28px;font-weight:800;color:#1a2332;margin-bottom:6px}.login-subtitle[data-v-ce7bc8b9]{font-size:13px;color:#95a5b5;margin-bottom:30px}.role-tabs[data-v-ce7bc8b9]{display:flex;gap:6px;margin-bottom:26px;background:#f0f4f8;padding:5px;border-radius:12px}.role-tab[data-v-ce7bc8b9]{flex:1;padding:11px 6px;border:none;border-radius:8px;background:transparent;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:5px;transition:all .2s ease;color:#95a5b5;font-family:inherit}.role-tab i[data-v-ce7bc8b9]{font-size:19px}.role-tab span[data-v-ce7bc8b9]{font-size:11px;font-weight:600;white-space:nowrap}.role-tab.active[data-v-ce7bc8b9]{background:#fff;color:#1a6fc4;box-shadow:0 2px 10px #0000001a}.role-tab[data-v-ce7bc8b9]:hover:not(.active){color:#5a6a7e;background:#ffffff80}.login-error[data-v-ce7bc8b9]{display:none;align-items:center;gap:8px;padding:10px 14px;background:#e74c3c14;border:1px solid rgba(231,76,60,.2);border-radius:8px;font-size:13px;color:#e74c3c;margin-bottom:14px}.login-error.show[data-v-ce7bc8b9]{display:flex}.input-group[data-v-ce7bc8b9]{position:relative;margin-bottom:14px}.input-icon[data-v-ce7bc8b9]{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#95a5b5;font-size:15px;pointer-events:none;z-index:1}.input-group input[data-v-ce7bc8b9]{width:100%;padding:13px 14px 13px 42px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:14px;color:#1a2332;transition:all .2s ease;outline:none;background:#fafbfc;font-family:inherit}.input-group input[data-v-ce7bc8b9]:focus{border-color:#1a6fc4;background:#fff;box-shadow:0 0 0 3px #1a6fc41a}.eye-btn[data-v-ce7bc8b9]{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;color:#95a5b5;cursor:pointer;font-size:14px}.login-options[data-v-ce7bc8b9]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;font-size:13px}.remember-label[data-v-ce7bc8b9]{display:flex;align-items:center;gap:6px;color:#5a6a7e;cursor:pointer}.remember-label input[data-v-ce7bc8b9]{accent-color:#1a6fc4}.forgot-link[data-v-ce7bc8b9]{color:#1a6fc4;cursor:pointer}.forgot-link[data-v-ce7bc8b9]:hover{text-decoration:underline}.btn-login[data-v-ce7bc8b9]{width:100%;padding:14px;border:none;border-radius:8px;background:linear-gradient(135deg,#1a6fc4,#0f5fa8);color:#fff;font-size:15px;font-weight:700;cursor:pointer;transition:all .2s ease;font-family:inherit}.btn-login[data-v-ce7bc8b9]:hover{background:linear-gradient(135deg,#1580d9,#1a6fc4);box-shadow:0 4px 12px #1a6fc44d}.btn-login[data-v-ce7bc8b9]:disabled{opacity:.7;cursor:not-allowed}.sidebar[data-v-8a064001]{width:220px;background:linear-gradient(180deg,#1a2d42,#0f1e2e);color:#fff;display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto}.sidebar-header[data-v-8a064001]{padding:18px 16px;border-bottom:1px solid rgba(255,255,255,.06)}.logo[data-v-8a064001]{display:flex;align-items:center;gap:10px}.logo i[data-v-8a064001]{font-size:22px;color:#4fc3f7}.logo-text[data-v-8a064001]{display:flex;flex-direction:column}.logo-title[data-v-8a064001]{font-size:15px;font-weight:800;letter-spacing:.5px}.logo-sub[data-v-8a064001]{font-size:10px;color:#fff6;margin-top:2px}.sidebar-menu[data-v-8a064001]{flex:1;padding:8px 0}.menu-group[data-v-8a064001]{margin-bottom:4px}.group-label[data-v-8a064001]{padding:10px 18px 4px;font-size:10px;font-weight:600;color:#ffffff4d;text-transform:uppercase;letter-spacing:1px}.menu-item[data-v-8a064001]{display:flex;align-items:center;gap:10px;padding:9px 18px;color:#fff9;text-decoration:none;transition:all .2s ease;border-left:3px solid transparent;margin:1px 0}.menu-item[data-v-8a064001]:hover{background:#ffffff0f;color:#ffffffe6}.menu-item.active[data-v-8a064001]{background:#4fc3f726;color:#4fc3f7;border-left-color:#4fc3f7}.menu-item i[data-v-8a064001]{font-size:14px;width:18px;text-align:center}.menu-item span[data-v-8a064001]{font-size:13px;font-weight:500}.sidebar-footer[data-v-8a064001]{padding:14px 16px;border-top:1px solid rgba(255,255,255,.06);display:flex;align-items:center;gap:10px}.user-avatar[data-v-8a064001]{width:32px;height:32px;border-radius:50%;background:#4fc3f7;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#0f1e2e;flex-shrink:0}.user-info[data-v-8a064001]{display:flex;flex-direction:column}.user-name[data-v-8a064001]{font-size:12px;font-weight:600;color:#ffffffe6}.user-role[data-v-8a064001]{font-size:10px;color:#fff6;margin-top:1px}.topbar[data-v-f6cbd447]{display:flex;justify-content:space-between;align-items:center;padding:0 20px;background:#fff;border-bottom:1px solid #e8ecf1;height:52px;flex-shrink:0}.topbar-left[data-v-f6cbd447]{display:flex;align-items:center;gap:16px}.breadcrumb[data-v-f6cbd447]{display:flex;align-items:center;gap:6px;font-size:13px;color:#95a5b5}.bread-home[data-v-f6cbd447]{font-size:12px}.separator[data-v-f6cbd447]{color:#d0d8e0;font-size:11px}.item[data-v-f6cbd447]{color:#5a6a7e;font-weight:500}.item.current[data-v-f6cbd447]{color:#1a2332}.semester-tag[data-v-f6cbd447]{display:flex;align-items:center;gap:5px;padding:4px 10px;background:#1a6fc414;border-radius:5px;font-size:12px;color:#1a6fc4;font-weight:600}.semester-tag i[data-v-f6cbd447]{font-size:11px}.topbar-right[data-v-f6cbd447]{display:flex;align-items:center;gap:16px}.user-menu[data-v-f6cbd447]{position:relative}.user-btn[data-v-f6cbd447]{display:flex;align-items:center;gap:8px;background:none;border:none;cursor:pointer;color:#5a6a7e;font-size:13px;transition:color .2s}.user-btn[data-v-f6cbd447]:hover{color:#1a2332}.user-avatar-sm[data-v-f6cbd447]{width:28px;height:28px;border-radius:50%;background:#1a6fc4;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff}.user-display-name[data-v-f6cbd447]{font-weight:600;color:#1a2332}.user-btn .chevron[data-v-f6cbd447]{font-size:10px;transition:transform .2s ease}.user-btn .chevron.rotated[data-v-f6cbd447]{transform:rotate(180deg)}.dropdown-enter-active[data-v-f6cbd447],.dropdown-leave-active[data-v-f6cbd447]{transition:all .18s ease}.dropdown-enter-from[data-v-f6cbd447],.dropdown-leave-to[data-v-f6cbd447]{opacity:0;transform:translateY(-6px)}.dropdown-enter-to[data-v-f6cbd447],.dropdown-leave-from[data-v-f6cbd447]{opacity:1;transform:translateY(0)}.user-dropdown-fixed{position:fixed;width:220px;background:#fff;border:1px solid #e8ecf1;border-radius:10px;box-shadow:0 8px 24px #0000001f;z-index:9999;overflow:hidden}.user-dropdown-fixed .user-info-row{display:flex;align-items:center;gap:10px;padding:14px 16px}.user-dropdown-fixed .user-avatar-lg{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#1a6fc4,#2980d9);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;color:#fff;flex-shrink:0}.user-dropdown-fixed .user-info-text{flex:1;min-width:0}.user-dropdown-fixed .user-info-name{font-size:13px;font-weight:600;color:#1a2332;margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-dropdown-fixed .user-info-role{font-size:11px;color:#95a5b5;white-space:nowrap}.user-dropdown-fixed .dropdown-divider{height:1px;background:#f0f4f8;margin:0}.user-dropdown-fixed .dropdown-item{display:flex;align-items:center;gap:9px;width:100%;padding:10px 16px;background:none;border:none;cursor:pointer;color:#5a6a7e;font-size:13px;transition:all .15s;text-align:left;font-family:inherit;box-sizing:border-box}.user-dropdown-fixed .dropdown-item:hover{background:#f7f9fc;color:#1a2332}.user-dropdown-fixed .dropdown-item i{font-size:13px;width:16px;text-align:center}.user-dropdown-fixed .dropdown-item.logout{color:#e74c3c}.user-dropdown-fixed .dropdown-item.logout:hover{background:#e74c3c0f;color:#c0392b}.page-wrapper[data-v-6c59cc0a]{display:flex;height:100vh}.page-content[data-v-6c59cc0a]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-6c59cc0a]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.page-header[data-v-6c59cc0a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.page-title[data-v-6c59cc0a]{font-size:20px;font-weight:800;color:#1a2332;margin:0 0 3px}.page-subtitle[data-v-6c59cc0a]{font-size:12px;color:#95a5b5;margin:0}.header-actions[data-v-6c59cc0a]{display:flex;align-items:center;gap:10px}.filter-group[data-v-6c59cc0a]{display:flex;gap:8px}.filter-select[data-v-6c59cc0a]{padding:6px 10px;border:1px solid #e8ecf1;border-radius:6px;background:#fff;color:#1a2332;font-size:12px;cursor:pointer;outline:none}.stats-grid[data-v-6c59cc0a]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.stat-card[data-v-6c59cc0a]{background:#fff;border-radius:10px;padding:16px 18px;display:flex;gap:14px;align-items:center;box-shadow:0 1px 3px #0000000a;transition:all .2s}.stat-card[data-v-6c59cc0a]:hover{box-shadow:0 3px 12px #00000012;transform:translateY(-1px)}.stat-icon[data-v-6c59cc0a]{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.icon-blue[data-v-6c59cc0a]{background:#1a6fc41a;color:#1a6fc4}.icon-green[data-v-6c59cc0a]{background:#27ae601a;color:#27ae60}.icon-red[data-v-6c59cc0a]{background:#e74c3c1a;color:#e74c3c}.icon-orange[data-v-6c59cc0a]{background:#f39c121a;color:#f39c12}.stat-label[data-v-6c59cc0a]{font-size:12px;color:#95a5b5;margin:0 0 4px;font-weight:500}.stat-value[data-v-6c59cc0a]{font-size:24px;font-weight:800;color:#1a2332;margin:0;line-height:1.1}.text-green[data-v-6c59cc0a]{color:#27ae60!important}.text-red[data-v-6c59cc0a]{color:#e74c3c!important}.text-orange[data-v-6c59cc0a]{color:#f39c12!important}.text-muted[data-v-6c59cc0a]{color:#95a5b5}.fw600[data-v-6c59cc0a]{font-weight:600}.fw700[data-v-6c59cc0a]{font-weight:700}.charts-row[data-v-6c59cc0a]{display:flex;gap:12px}.flex-1[data-v-6c59cc0a]{flex:1;min-width:0}.mb-14[data-v-6c59cc0a]{margin-bottom:14px}.chart-card[data-v-6c59cc0a]{background:#fff;border-radius:10px;padding:14px 16px;box-shadow:0 1px 3px #0000000a}.full-width[data-v-6c59cc0a]{width:100%}.chart-header[data-v-6c59cc0a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.chart-header-right[data-v-6c59cc0a]{display:flex;align-items:center;gap:12px}.chart-title[data-v-6c59cc0a]{font-size:13px;font-weight:700;color:#1a2332;margin:0;display:flex;align-items:center;gap:6px}.chart-title i[data-v-6c59cc0a]{font-size:12px;color:#95a5b5}.chart-container-lg[data-v-6c59cc0a]{width:100%;height:280px}.week-info[data-v-6c59cc0a]{font-size:11px;color:#95a5b5;font-weight:500}.filter-select-sm[data-v-6c59cc0a]{padding:4px 8px;border:1px solid #e8ecf1;border-radius:5px;background:#fff;color:#1a2332;font-size:11px;cursor:pointer;outline:none}.data-table[data-v-6c59cc0a]{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}.data-table thead[data-v-6c59cc0a]{background:#f9fafb}.data-table th[data-v-6c59cc0a]{padding:9px 12px;text-align:center;color:#5a6a7e;font-weight:600;font-size:11px;border-bottom:1px solid #e8ecf1}.data-table td[data-v-6c59cc0a]{padding:10px 12px;text-align:center;border-bottom:1px solid #f0f4f8;color:#1a2332}.empty-cell[data-v-6c59cc0a]{text-align:center!important;color:#95a5b5;padding:24px 0!important}.rank-num[data-v-6c59cc0a]{display:inline-flex;width:22px;height:22px;border-radius:50%;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff}.rank-gold[data-v-6c59cc0a]{background:linear-gradient(135deg,#f39c12,#e67e22)}.rank-red[data-v-6c59cc0a]{background:linear-gradient(135deg,#e74c3c,#c0392b)}.rank-default[data-v-6c59cc0a]{background:#bdc3c7}.mini-table[data-v-6c59cc0a]{width:100%;border-collapse:collapse;font-size:12px;margin-top:8px}.mini-table thead[data-v-6c59cc0a]{background:#f9fafb}.mini-table th[data-v-6c59cc0a]{padding:8px 10px;text-align:center;color:#5a6a7e;font-weight:600;font-size:11px;border-bottom:1px solid #e8ecf1}.mini-table td[data-v-6c59cc0a]{padding:10px;text-align:center;border-bottom:1px solid #f0f4f8;color:#1a2332}.status-tag[data-v-6c59cc0a]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.st-green[data-v-6c59cc0a]{background:#27ae601a;color:#27ae60}.st-orange[data-v-6c59cc0a]{background:#f39c121a;color:#f39c12}.st-red[data-v-6c59cc0a]{background:#e74c3c1a;color:#e74c3c}.records-table[data-v-6c59cc0a]{overflow-x:auto}.records-table table[data-v-6c59cc0a]{width:100%;border-collapse:collapse;font-size:12px}.records-table thead[data-v-6c59cc0a]{background:#f9fafb}.records-table th[data-v-6c59cc0a]{padding:8px 10px;text-align:center;color:#5a6a7e;font-weight:600;border-bottom:1px solid #e8ecf1;white-space:nowrap;font-size:11px}.records-table td[data-v-6c59cc0a]{padding:8px 10px;border-bottom:1px solid #f0f4f8;color:#1a2332;text-align:center;font-size:12px}.reason-cell[data-v-6c59cc0a]{text-align:left!important;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.category-tag[data-v-6c59cc0a]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.cat-学习[data-v-6c59cc0a]{background:#1a6fc41a;color:#1a6fc4}.cat-纪律[data-v-6c59cc0a]{background:#e74c3c1a;color:#e74c3c}.cat-卫生[data-v-6c59cc0a]{background:#27ae601a;color:#27ae60}.cat-公德[data-v-6c59cc0a]{background:#9b59b61a;color:#9b59b6}.cat-寝室[data-v-6c59cc0a]{background:#f39c121a;color:#f39c12}.cat-活动[data-v-6c59cc0a]{background:#3498db1a;color:#3498db}.cat-其他[data-v-6c59cc0a]{background:#95a5b51a;color:#95a5b5}@media (max-width: 1200px){.stats-grid[data-v-6c59cc0a]{grid-template-columns:repeat(2,1fr)}.charts-row[data-v-6c59cc0a]{flex-direction:column}}.page-wrapper[data-v-4f5f196a]{display:flex;height:100vh}.page-content[data-v-4f5f196a]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-4f5f196a]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.filter-card[data-v-4f5f196a]{background:#fff;border-radius:10px;padding:16px;margin-bottom:14px;box-shadow:0 1px 4px #0000000a}.filter-row[data-v-4f5f196a]{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap}.filter-left[data-v-4f5f196a]{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.filter-right[data-v-4f5f196a]{display:flex;align-items:center}.filter-item[data-v-4f5f196a]{display:flex;align-items:center;gap:6px}.filter-item label[data-v-4f5f196a]{font-size:13px;color:#5a6a7e;font-weight:600;white-space:nowrap}.filter-input[data-v-4f5f196a]{height:34px;padding:0 10px;border:1px solid #e1e6eb;border-radius:6px;font-size:13px;color:#333;background:#fcfdfe;transition:all .2s}.filter-input[data-v-4f5f196a]:focus{border-color:#409eff;outline:none;box-shadow:0 0 0 2px #409eff1a}.stats-row[data-v-4f5f196a]{display:flex;gap:14px;margin-bottom:14px}.stat-card[data-v-4f5f196a]{flex:1;background:#fff;border-radius:10px;padding:16px 20px;box-shadow:0 1px 4px #0000000a;display:flex;align-items:center;gap:14px}.stat-icon[data-v-4f5f196a]{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center}.st-total[data-v-4f5f196a]{background:#eef2ff;color:#6366f1}.st-praise[data-v-4f5f196a]{background:#ecfdf5;color:#10b981}.st-deduct[data-v-4f5f196a]{background:#fef2f2;color:#ef4444}.st-cat[data-v-4f5f196a]{background:#fff7ed;color:#f59e0b}.stat-info[data-v-4f5f196a]{display:flex;flex-direction:column}.stat-num[data-v-4f5f196a]{font-size:22px;font-weight:700;color:#1a2332;line-height:1.2}.stat-label[data-v-4f5f196a]{font-size:12px;color:#95a5b5;margin-top:2px}.btn[data-v-4f5f196a]{height:34px;padding:0 16px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;border:none;transition:all .2s}.btn-primary[data-v-4f5f196a]{background:#409eff;color:#fff}.btn-primary[data-v-4f5f196a]:hover{background:#66b1ff}.btn-secondary[data-v-4f5f196a]{background:#f4f4f5;color:#606266}.btn-secondary[data-v-4f5f196a]:hover{background:#e9e9eb}.table-card[data-v-4f5f196a]{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 4px #0000000a}.table-header[data-v-4f5f196a]{margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}.record-count[data-v-4f5f196a]{font-size:13px;color:#95a5b5}.data-table[data-v-4f5f196a]{width:100%;border-collapse:collapse}.data-table th[data-v-4f5f196a]{background:#f8fafc;padding:10px 12px;font-size:13px;color:#5a6a7e;font-weight:600;border-bottom:2px solid #edf2f7;text-align:center}.data-table td[data-v-4f5f196a]{padding:10px 12px;font-size:13px;color:#333;border-bottom:1px solid #f1f4f8}.data-table tbody[data-v-4f5f196a]{border-bottom:2px solid #edf2f7}.rule-row[data-v-4f5f196a]:hover{background:#f9fbff}.fw600[data-v-4f5f196a]{font-weight:600}.text-center[data-v-4f5f196a]{text-align:center}.merge-cell[data-v-4f5f196a]{vertical-align:middle;text-align:center;border-right:1px solid #edf2f7}.type-cell[data-v-4f5f196a]{font-weight:700;font-size:14px;min-width:80px}.type-praise[data-v-4f5f196a]{background:linear-gradient(135deg,#f0fdf4,#ecfdf5);color:#059669}.type-deduct[data-v-4f5f196a]{background:linear-gradient(135deg,#fef2f2,#fff1f2);color:#dc2626}.type-badge[data-v-4f5f196a]{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:8px;font-size:14px;font-weight:700}.badge-praise[data-v-4f5f196a]{background:#10b9811f;color:#059669}.badge-deduct[data-v-4f5f196a]{background:#ef44441f;color:#dc2626}.cat-cell[data-v-4f5f196a]{min-width:80px}.cat-tag[data-v-4f5f196a]{display:inline-block;padding:4px 12px;border-radius:6px;font-size:12px;font-weight:600}.cat-纪律[data-v-4f5f196a]{background:#fef2f2;color:#ef4444}.cat-学习[data-v-4f5f196a]{background:#eef2ff;color:#6366f1}.cat-卫生[data-v-4f5f196a]{background:#ecfdf5;color:#10b981}.cat-寝室[data-v-4f5f196a]{background:#fff7ed;color:#f59e0b}.cat-公德[data-v-4f5f196a]{background:#fdf4ff;color:#a855f7}.cat-其他[data-v-4f5f196a]{background:#f1f5f9;color:#64748b}.points-badge[data-v-4f5f196a]{display:inline-block;padding:3px 10px;border-radius:6px;font-size:13px;font-weight:700;min-width:50px;text-align:center}.pts-plus[data-v-4f5f196a]{background:#ecfdf5;color:#059669}.pts-minus[data-v-4f5f196a]{background:#fef2f2;color:#dc2626}.remark-cell[data-v-4f5f196a]{color:#64748b;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-tag[data-v-4f5f196a]{padding:2px 8px;border-radius:4px;font-size:12px;font-weight:600}.st-ok[data-v-4f5f196a]{background:#ecfdf5;color:#10b981}.st-off[data-v-4f5f196a]{background:#f1f5f9;color:#94a3b8}.btn-action[data-v-4f5f196a]{width:28px;height:28px;border-radius:4px;border:none;cursor:pointer;margin:0 2px;transition:all .2s;display:inline-flex;align-items:center;justify-content:center}.btn-edit[data-v-4f5f196a]{background:#ecf5ff;color:#409eff}.btn-edit[data-v-4f5f196a]:hover{background:#409eff;color:#fff}.btn-del[data-v-4f5f196a]{background:#fef0f0;color:#f56c6c}.btn-del[data-v-4f5f196a]:hover{background:#f56c6c;color:#fff}.empty-hint[data-v-4f5f196a]{color:#c0c4cc;font-size:13px;font-style:italic}.empty-cat-row[data-v-4f5f196a]{background:#fafbfc}.loading-area[data-v-4f5f196a],.empty-area[data-v-4f5f196a]{text-align:center;padding:60px 0;color:#95a5b5;font-size:14px;display:flex;align-items:center;justify-content:center;gap:8px}.spin[data-v-4f5f196a]{animation:spin-4f5f196a 1s linear infinite}@keyframes spin-4f5f196a{to{transform:rotate(360deg)}}.modal-overlay[data-v-4f5f196a]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.modal[data-v-4f5f196a]{background:#fff;border-radius:12px;width:540px;max-width:90%;box-shadow:0 10px 25px #00000026;overflow:hidden}.modal-header[data-v-4f5f196a]{padding:16px 20px;border-bottom:1px solid #edf2f7;display:flex;justify-content:space-between;align-items:center}.modal-header h3[data-v-4f5f196a]{margin:0;font-size:18px;color:#1a2332}.close-btn[data-v-4f5f196a]{background:none;border:none;font-size:24px;color:#95a5b5;cursor:pointer}.modal-body[data-v-4f5f196a]{padding:20px}.form-group[data-v-4f5f196a]{margin-bottom:16px}.form-group label[data-v-4f5f196a]{display:block;margin-bottom:6px;font-size:13px;font-weight:600;color:#5a6a7e}.required[data-v-4f5f196a]{color:#e74c3c}.form-input[data-v-4f5f196a]{width:100%;height:38px;padding:0 12px;border:1px solid #e1e6eb;border-radius:6px;font-size:14px;color:#333;transition:all .2s;box-sizing:border-box}.form-input[data-v-4f5f196a]:focus{border-color:#409eff;outline:none;box-shadow:0 0 0 2px #409eff1a}.form-textarea[data-v-4f5f196a]{height:auto;padding:10px 12px;resize:vertical;font-family:inherit}.form-row[data-v-4f5f196a]{display:flex;gap:16px}.form-half[data-v-4f5f196a]{flex:1}.modal-footer[data-v-4f5f196a]{padding:16px 20px;background:#f8fafc;border-top:1px solid #edf2f7;display:flex;justify-content:flex-end;gap:12px}.page-wrapper[data-v-81b83862]{display:flex;height:100vh}.page-content[data-v-81b83862]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-81b83862]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.page-header[data-v-81b83862]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.page-title[data-v-81b83862]{font-size:22px;font-weight:800;color:#1a2332;margin:0 0 4px}.page-subtitle[data-v-81b83862]{font-size:13px;color:#95a5b5;margin:0}.btn[data-v-81b83862]{padding:8px 16px;border-radius:6px;border:none;cursor:pointer;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px;font-family:inherit;transition:all .2s}.btn-primary[data-v-81b83862]{background:#1a6fc4;color:#fff}.btn-primary[data-v-81b83862]:hover{background:#155fa8}.btn-secondary[data-v-81b83862]{background:#f0f4f8;color:#5a6a7e}.btn-secondary[data-v-81b83862]:hover{background:#e8ecf1}.table-card[data-v-81b83862]{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 4px #0000000a;overflow-x:auto}.table-header[data-v-81b83862]{display:flex;justify-content:space-between;margin-bottom:12px}.record-count[data-v-81b83862]{font-size:13px;color:#95a5b5}.data-table[data-v-81b83862]{width:100%;border-collapse:collapse;font-size:13px}.data-table thead[data-v-81b83862]{background:#f9fafb}.data-table th[data-v-81b83862]{padding:10px 12px;text-align:center;color:#5a6a7e;font-weight:600;border-bottom:1px solid #e8ecf1;white-space:nowrap}.data-table td[data-v-81b83862]{padding:10px 12px;border-bottom:1px solid #f0f4f8;color:#1a2332}.text-center[data-v-81b83862]{text-align:center}.fw600[data-v-81b83862]{font-weight:600}.loading-cell[data-v-81b83862],.empty-cell[data-v-81b83862]{padding:40px!important;color:#95a5b5;text-align:center}.status-tag[data-v-81b83862]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.st-ok[data-v-81b83862]{background:#27ae601a;color:#27ae60}.st-off[data-v-81b83862]{background:#95a5b51a;color:#95a5b5}.btn-action[data-v-81b83862]{padding:4px 8px;border:none;border-radius:4px;cursor:pointer;font-size:12px;margin:0 2px;color:#fff}.btn-edit[data-v-81b83862]{background:#1a6fc4}.btn-edit[data-v-81b83862]:hover{background:#155fa8}.btn-set[data-v-81b83862]{background:#27ae60}.btn-set[data-v-81b83862]:hover{background:#219a52}.btn-del[data-v-81b83862]{background:#e74c3c}.btn-del[data-v-81b83862]:hover{background:#c0392b}.modal-overlay[data-v-81b83862]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal[data-v-81b83862]{background:#fff;border-radius:12px;width:90%;max-width:500px;box-shadow:0 10px 40px #0003}.modal-header[data-v-81b83862]{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid #e8ecf1}.modal-header h3[data-v-81b83862]{font-size:16px;color:#1a2332;margin:0}.close-btn[data-v-81b83862]{background:none;border:none;font-size:24px;cursor:pointer;color:#95a5b5}.modal-body[data-v-81b83862]{padding:20px 24px}.form-group[data-v-81b83862]{margin-bottom:14px}.form-group label[data-v-81b83862]{display:block;font-size:13px;color:#5a6a7e;font-weight:600;margin-bottom:6px}.form-input[data-v-81b83862]{width:100%;padding:9px 12px;border:1px solid #e8ecf1;border-radius:6px;font-size:13px;font-family:inherit;outline:none}.form-input[data-v-81b83862]:focus{border-color:#1a6fc4;box-shadow:0 0 0 3px #1a6fc41a}.modal-footer[data-v-81b83862]{display:flex;justify-content:flex-end;gap:12px;padding:14px 24px;background:#f9fafb;border-top:1px solid #e8ecf1;border-radius:0 0 12px 12px}.page-wrapper[data-v-eb311a8b]{display:flex;height:100vh}.page-content[data-v-eb311a8b]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-eb311a8b]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.page-header[data-v-eb311a8b]{margin-bottom:20px}.page-title[data-v-eb311a8b]{font-size:22px;font-weight:800;color:#1a2332;margin:0 0 4px}.page-subtitle[data-v-eb311a8b]{font-size:13px;color:#95a5b5;margin:0}.steps-bar[data-v-eb311a8b]{display:flex;align-items:center;justify-content:center;margin-bottom:24px;padding:16px 0}.step[data-v-eb311a8b]{display:flex;align-items:center;gap:8px;color:#bcc5d0;font-size:13px;font-weight:600;transition:all .3s}.step.active[data-v-eb311a8b]{color:#1a6fc4}.step.done[data-v-eb311a8b]{color:#27ae60}.step-num[data-v-eb311a8b]{width:28px;height:28px;border-radius:50%;background:#e8ecf1;color:#95a5b5;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;transition:all .3s}.step.active .step-num[data-v-eb311a8b]{background:#1a6fc4;color:#fff}.step.done .step-num[data-v-eb311a8b]{background:#27ae60;color:#fff}.step-line[data-v-eb311a8b]{width:60px;height:2px;background:#e8ecf1;margin:0 8px;transition:all .3s}.step-line.active[data-v-eb311a8b]{background:#1a6fc4}.import-layout[data-v-eb311a8b]{display:flex;gap:20px}.import-main[data-v-eb311a8b]{flex:1;display:flex;flex-direction:column;gap:16px}.import-sidebar[data-v-eb311a8b]{width:340px;flex-shrink:0}.card[data-v-eb311a8b]{background:#fff;border-radius:12px;padding:24px;box-shadow:0 1px 4px #0000000a}.card-header[data-v-eb311a8b]{display:flex;align-items:center;gap:10px;margin-bottom:12px}.card-header i[data-v-eb311a8b]{font-size:20px;color:#1a6fc4}.card-header h3[data-v-eb311a8b]{font-size:16px;font-weight:700;color:#1a2332;margin:0}.card-desc[data-v-eb311a8b]{font-size:13px;color:#7a8a9e;margin:0 0 16px;line-height:1.6}.upload-zone[data-v-eb311a8b]{border:2px dashed #d0d8e0;border-radius:12px;padding:40px 20px;text-align:center;cursor:pointer;transition:all .25s;margin-bottom:16px}.upload-zone[data-v-eb311a8b]:hover,.upload-zone.drag-over[data-v-eb311a8b]{border-color:#1a6fc4;background:#1a6fc408}.upload-zone.has-file[data-v-eb311a8b]{border-color:#27ae60;background:#27ae6008}.upload-icon[data-v-eb311a8b]{font-size:40px;color:#d0d8e0;margin-bottom:12px;display:block}.upload-icon.selected[data-v-eb311a8b]{color:#27ae60}.upload-title[data-v-eb311a8b]{font-size:14px;color:#5a6a7e;margin:0 0 4px;font-weight:600}.upload-hint[data-v-eb311a8b]{font-size:12px;color:#95a5b5;margin:0 0 8px}.btn[data-v-eb311a8b]{padding:10px 20px;border-radius:8px;border:none;cursor:pointer;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:8px;font-family:inherit;transition:all .2s}.btn[data-v-eb311a8b]:disabled{opacity:.5;cursor:not-allowed}.btn-primary[data-v-eb311a8b]{background:#1a6fc4;color:#fff;width:100%;justify-content:center}.btn-primary[data-v-eb311a8b]:hover:not(:disabled){background:#155da3}.btn-lg[data-v-eb311a8b]{padding:12px 24px;font-size:15px}.btn-outline[data-v-eb311a8b]{background:transparent;color:#1a6fc4;border:1.5px solid #1a6fc4}.btn-outline[data-v-eb311a8b]:hover:not(:disabled){background:#1a6fc40f}.btn-text[data-v-eb311a8b]{background:none;color:#95a5b5;padding:4px 8px;font-size:12px}.btn-text[data-v-eb311a8b]:hover{color:#e74c3c}.result-card[data-v-eb311a8b]{border-left:4px solid}.result-success[data-v-eb311a8b]{border-color:#27ae60}.result-error[data-v-eb311a8b]{border-color:#e74c3c}.result-header[data-v-eb311a8b]{display:flex;align-items:center;gap:10px;margin-bottom:8px}.result-success .result-header i[data-v-eb311a8b]{color:#27ae60;font-size:22px}.result-error .result-header i[data-v-eb311a8b]{color:#e74c3c;font-size:22px}.result-header h3[data-v-eb311a8b]{margin:0;font-size:16px;font-weight:700}.result-success .result-header h3[data-v-eb311a8b]{color:#27ae60}.result-error .result-header h3[data-v-eb311a8b]{color:#e74c3c}.result-msg[data-v-eb311a8b]{font-size:13px;color:#5a6a7e;margin:0 0 16px;line-height:1.6}.stats-grid[data-v-eb311a8b]{display:flex;flex-wrap:wrap;gap:12px}.stat-item[data-v-eb311a8b]{background:#f0f7ff;border-radius:8px;padding:12px 16px;text-align:center;min-width:80px}.stat-val[data-v-eb311a8b]{display:block;font-size:22px;font-weight:800;color:#1a6fc4}.stat-label[data-v-eb311a8b]{font-size:11px;color:#7a8a9e;margin-top:2px}.error-list[data-v-eb311a8b]{max-height:200px;overflow-y:auto}.error-item[data-v-eb311a8b]{font-size:12px;color:#e74c3c;padding:6px 0;border-bottom:1px solid rgba(231,76,60,.1);display:flex;align-items:flex-start;gap:6px}.error-item i[data-v-eb311a8b]{margin-top:2px;flex-shrink:0}.help-card h3[data-v-eb311a8b]{font-size:15px;font-weight:700;color:#1a2332;margin:0 0 16px;display:flex;align-items:center;gap:8px}.help-card h3 i[data-v-eb311a8b]{color:#1a6fc4}.help-section[data-v-eb311a8b]{margin-bottom:16px}.help-section h4[data-v-eb311a8b]{font-size:13px;font-weight:700;color:#3a4a5e;margin:0 0 8px}.help-table[data-v-eb311a8b]{width:100%;border-collapse:collapse;font-size:12px}.help-table th[data-v-eb311a8b]{background:#f5f7fa;padding:6px 8px;text-align:left;font-weight:600;color:#5a6a7e;border-bottom:1px solid #e8ecf1}.help-table td[data-v-eb311a8b]{padding:5px 8px;border-bottom:1px solid #f0f2f5;color:#5a6a7e}.help-table .required[data-v-eb311a8b]{color:#e74c3c;font-weight:600}.help-list[data-v-eb311a8b]{list-style:none;padding:0;margin:0}.help-list li[data-v-eb311a8b]{font-size:12px;color:#5a6a7e;padding:4px 0;display:flex;align-items:center;gap:6px}.help-list li i[data-v-eb311a8b]{color:#27ae60;font-size:11px}.help-list.warn li i[data-v-eb311a8b]{color:#f39c12}@media (max-width: 1024px){.import-layout[data-v-eb311a8b]{flex-direction:column}.import-sidebar[data-v-eb311a8b]{width:100%}}.page-wrapper[data-v-ba8a8b2d]{display:flex;height:100vh}.page-content[data-v-ba8a8b2d]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-ba8a8b2d]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.mr-10[data-v-ba8a8b2d]{margin-right:10px}.filter-card[data-v-ba8a8b2d]{background:#fff;border-radius:10px;padding:16px;margin-bottom:14px;box-shadow:0 1px 4px #0000000a}.filter-row[data-v-ba8a8b2d]{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap}.filter-left[data-v-ba8a8b2d]{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.filter-right[data-v-ba8a8b2d]{display:flex;align-items:center}.filter-item[data-v-ba8a8b2d]{display:flex;align-items:center;gap:6px}.filter-item label[data-v-ba8a8b2d]{font-size:13px;color:#5a6a7e;font-weight:600;white-space:nowrap}.filter-input[data-v-ba8a8b2d]{height:34px;padding:0 10px;border:1px solid #e1e6eb;border-radius:6px;font-size:13px;color:#333;background:#fcfdfe;transition:all .2s}.filter-input[data-v-ba8a8b2d]:focus{border-color:#409eff;outline:none;box-shadow:0 0 0 2px #409eff1a}.table-card[data-v-ba8a8b2d]{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 4px #0000000a}.table-header[data-v-ba8a8b2d]{margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}.record-count[data-v-ba8a8b2d]{font-size:13px;color:#95a5b5}.data-table[data-v-ba8a8b2d]{width:100%;border-collapse:collapse}.data-table th[data-v-ba8a8b2d]{background:#f8fafc;padding:8px;font-size:13px;color:#5a6a7e;font-weight:600;border-bottom:1px solid #edf2f7;text-align:center}.data-table td[data-v-ba8a8b2d]{padding:8px;font-size:13px;color:#333;border-bottom:1px solid #f1f4f8}.data-table tr[data-v-ba8a8b2d]:hover{background:#f9fbff}.row-selected[data-v-ba8a8b2d]{background:#f0f7ff!important}.fw600[data-v-ba8a8b2d]{font-weight:600}.text-center[data-v-ba8a8b2d]{text-align:center}.text-success[data-v-ba8a8b2d]{color:#2ecc71}.text-danger[data-v-ba8a8b2d]{color:#e74c3c}.status-tag[data-v-ba8a8b2d]{padding:2px 8px;border-radius:4px;font-size:12px}.st-ok[data-v-ba8a8b2d]{background:#e8f8f0;color:#2ecc71}.st-warn[data-v-ba8a8b2d]{background:#fef0f0;color:#f56c6c}.btn[data-v-ba8a8b2d]{height:34px;padding:0 16px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;border:none;transition:all .2s}.btn-primary[data-v-ba8a8b2d]{background:#409eff;color:#fff}.btn-primary[data-v-ba8a8b2d]:hover{background:#66b1ff}.btn-secondary[data-v-ba8a8b2d]{background:#f4f4f5;color:#606266}.btn-secondary[data-v-ba8a8b2d]:hover{background:#e9e9eb}.btn-danger[data-v-ba8a8b2d]{background:#f56c6c;color:#fff}.btn-danger[data-v-ba8a8b2d]:hover{background:#f78989}.btn-action[data-v-ba8a8b2d]{width:28px;height:28px;border-radius:4px;border:none;cursor:pointer;margin:0 2px;transition:all .2s}.btn-edit[data-v-ba8a8b2d]{background:#ecf5ff;color:#409eff}.btn-edit[data-v-ba8a8b2d]:hover{background:#409eff;color:#fff}.btn-del[data-v-ba8a8b2d]{background:#fef0f0;color:#f56c6c}.btn-del[data-v-ba8a8b2d]:hover{background:#f56c6c;color:#fff}.pagination[data-v-ba8a8b2d]{margin-top:20px;display:flex;justify-content:center;gap:6px}.page-btn[data-v-ba8a8b2d]{min-width:32px;height:32px;padding:0 6px;border:1px solid #e1e6eb;background:#fff;border-radius:4px;cursor:pointer;font-size:13px;color:#606266}.page-btn[data-v-ba8a8b2d]:hover:not(:disabled){border-color:#409eff;color:#409eff}.page-btn.active[data-v-ba8a8b2d]{background:#409eff;color:#fff;border-color:#409eff}.page-btn[data-v-ba8a8b2d]:disabled{cursor:not-allowed;opacity:.5}.modal-overlay[data-v-ba8a8b2d]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.modal[data-v-ba8a8b2d]{background:#fff;border-radius:12px;width:500px;max-width:90%;box-shadow:0 10px 25px #00000026;overflow:hidden}.modal-header[data-v-ba8a8b2d]{padding:16px 20px;border-bottom:1px solid #edf2f7;display:flex;justify-content:space-between;align-items:center}.modal-header h3[data-v-ba8a8b2d]{margin:0;font-size:18px;color:#1a2332}.close-btn[data-v-ba8a8b2d]{background:none;border:none;font-size:24px;color:#95a5b5;cursor:pointer}.modal-body[data-v-ba8a8b2d]{padding:20px}.form-group[data-v-ba8a8b2d]{margin-bottom:16px}.form-group label[data-v-ba8a8b2d]{display:block;margin-bottom:6px;font-size:13px;font-weight:600;color:#5a6a7e}.required[data-v-ba8a8b2d]{color:#e74c3c}.form-input[data-v-ba8a8b2d]{width:100%;height:38px;padding:0 12px;border:1px solid #e1e6eb;border-radius:6px;font-size:14px;color:#333;transition:all .2s;box-sizing:border-box}.form-input[data-v-ba8a8b2d]:focus{border-color:#409eff;outline:none;box-shadow:0 0 0 2px #409eff1a}.form-row[data-v-ba8a8b2d]{display:flex;gap:16px}.form-half[data-v-ba8a8b2d]{flex:1}.modal-footer[data-v-ba8a8b2d]{padding:16px 20px;background:#f8fafc;border-top:1px solid #edf2f7;display:flex;justify-content:flex-end;gap:12px}.page-wrapper[data-v-e4de1d48]{display:flex;height:100vh}.page-content[data-v-e4de1d48]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-e4de1d48]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.filter-card[data-v-e4de1d48]{background:#fff;border-radius:10px;padding:14px 16px;margin-bottom:14px;box-shadow:0 1px 4px #0000000a}.filter-row[data-v-e4de1d48]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}.filter-left[data-v-e4de1d48]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.filter-right[data-v-e4de1d48]{display:flex;align-items:center;gap:8px}.filter-item[data-v-e4de1d48]{display:flex;align-items:center;gap:6px}.filter-item label[data-v-e4de1d48]{font-size:13px;color:#5a6a7e;font-weight:600;white-space:nowrap}.filter-input[data-v-e4de1d48]{height:32px;padding:0 10px;border:1px solid #e1e6eb;border-radius:6px;font-size:13px;color:#333;background:#fff;transition:all .2s}.filter-input[data-v-e4de1d48]:focus{border-color:#1890ff;outline:none;box-shadow:0 0 0 2px #1890ff1a}.search-input[data-v-e4de1d48]{width:160px}.btn[data-v-e4de1d48]{height:32px;padding:0 14px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:5px;border:1px solid transparent;transition:all .2s;white-space:nowrap}.btn-primary[data-v-e4de1d48]{background:#1890ff;color:#fff;border-color:#1890ff}.btn-primary[data-v-e4de1d48]:hover{background:#40a9ff;border-color:#40a9ff}.btn-secondary[data-v-e4de1d48]{background:#fff;color:#555;border-color:#d9d9d9}.btn-secondary[data-v-e4de1d48]:hover{border-color:#1890ff;color:#1890ff}.btn[data-v-e4de1d48]:disabled{opacity:.6;cursor:not-allowed}.table-card[data-v-e4de1d48]{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 4px #0000000a}.table-header[data-v-e4de1d48]{margin-bottom:12px}.record-count[data-v-e4de1d48]{font-size:13px;color:#95a5b5}.data-table[data-v-e4de1d48]{width:100%;border-collapse:collapse}.data-table th[data-v-e4de1d48]{background:#f8fafc;padding:8px 12px;font-size:13px;color:#5a6a7e;font-weight:600;border-bottom:1px solid #edf2f7;text-align:left}.data-table th.text-center[data-v-e4de1d48]{text-align:center}.data-table td[data-v-e4de1d48]{padding:8px 12px;font-size:13px;color:#333;border-bottom:1px solid #f1f4f8}.data-table td.text-center[data-v-e4de1d48]{text-align:center}.data-table tr:hover td[data-v-e4de1d48]{background:#f9fbff}.empty-cell[data-v-e4de1d48]{text-align:center;color:#aaa;padding:40px}.user-cell[data-v-e4de1d48]{display:flex;align-items:center;gap:8px}.user-avatar[data-v-e4de1d48]{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#096dd9);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}.user-name[data-v-e4de1d48]{font-weight:600;color:#333}.role-tag[data-v-e4de1d48]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500}.role-admin[data-v-e4de1d48]{background:#e6f7ff;color:#1890ff}.role-grade[data-v-e4de1d48]{background:#f6ffed;color:#52c41a}.role-teacher[data-v-e4de1d48]{background:#fff7e6;color:#fa8c16}.role-default[data-v-e4de1d48]{background:#f5f5f5;color:#999}.grade-tag[data-v-e4de1d48]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500;background:#f0f5ff;color:#2f54eb}.text-muted[data-v-e4de1d48]{color:#bbb;font-size:12px}.status-tag[data-v-e4de1d48]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500}.st-ok[data-v-e4de1d48]{background:#f6ffed;color:#52c41a}.st-off[data-v-e4de1d48]{background:#fff1f0;color:#ff4d4f}.action-btns[data-v-e4de1d48]{display:flex;gap:6px;justify-content:center}.btn-action[data-v-e4de1d48]{width:28px;height:28px;border-radius:5px;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.btn-edit[data-v-e4de1d48]{background:#e6f7ff;color:#1890ff}.btn-edit[data-v-e4de1d48]:hover{background:#1890ff;color:#fff}.btn-del[data-v-e4de1d48]{background:#fff1f0;color:#ff4d4f}.btn-del[data-v-e4de1d48]:hover{background:#ff4d4f;color:#fff}.pagination[data-v-e4de1d48]{margin-top:20px;display:flex;justify-content:center;gap:6px}.page-btn[data-v-e4de1d48]{min-width:32px;height:32px;padding:0 6px;border:1px solid #e1e6eb;background:#fff;border-radius:4px;cursor:pointer;font-size:13px;color:#606266}.page-btn[data-v-e4de1d48]:hover:not(:disabled){border-color:#409eff;color:#409eff}.page-btn.active[data-v-e4de1d48]{background:#409eff;color:#fff;border-color:#409eff}.page-btn[data-v-e4de1d48]:disabled{cursor:not-allowed;opacity:.5}.modal-overlay[data-v-e4de1d48]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000}.modal[data-v-e4de1d48]{background:#fff;border-radius:12px;width:480px;max-width:95vw;box-shadow:0 8px 32px #0000002e;overflow:hidden}.modal-header[data-v-e4de1d48]{padding:16px 20px;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;align-items:center}.modal-header h3[data-v-e4de1d48]{margin:0;font-size:16px;color:#222;font-weight:600}.close-btn[data-v-e4de1d48]{background:none;border:none;font-size:22px;color:#aaa;cursor:pointer;line-height:1;padding:0}.close-btn[data-v-e4de1d48]:hover{color:#333}.modal-body[data-v-e4de1d48]{padding:20px;display:flex;flex-direction:column;gap:14px;max-height:65vh;overflow-y:auto}.form-group[data-v-e4de1d48]{display:flex;flex-direction:column;gap:5px}.form-group label[data-v-e4de1d48]{font-size:13px;color:#555;font-weight:500}.required[data-v-e4de1d48]{color:#ff4d4f}.form-input[data-v-e4de1d48]{width:100%;height:36px;padding:0 12px;border:1px solid #ddd;border-radius:7px;font-size:13px;color:#333;outline:none;transition:border-color .2s;box-sizing:border-box}.form-input[data-v-e4de1d48]:focus{border-color:#1890ff;box-shadow:0 0 0 2px #1890ff1a}.form-input[data-v-e4de1d48]:disabled{background:#f5f5f5;color:#999}.form-hint[data-v-e4de1d48]{font-size:11px;color:#999;margin-top:2px}.modal-footer[data-v-e4de1d48]{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid #f0f0f0}.page-wrapper[data-v-f8b3b74d]{display:flex;height:100vh}.page-content[data-v-f8b3b74d]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-f8b3b74d]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.mr-10[data-v-f8b3b74d]{margin-right:10px}.filter-card[data-v-f8b3b74d]{background:#fff;border-radius:10px;padding:16px;margin-bottom:14px;box-shadow:0 1px 4px #0000000a}.filter-row[data-v-f8b3b74d]{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap}.filter-left[data-v-f8b3b74d]{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.filter-right[data-v-f8b3b74d]{display:flex;align-items:center}.filter-item[data-v-f8b3b74d]{display:flex;align-items:center;gap:6px}.filter-item label[data-v-f8b3b74d]{font-size:13px;color:#5a6a7e;font-weight:600;white-space:nowrap}.filter-input[data-v-f8b3b74d]{height:34px;padding:0 10px;border:1px solid #e1e6eb;border-radius:6px;font-size:13px;color:#333;background:#fcfdfe;transition:all .2s}.filter-input[data-v-f8b3b74d]:focus{border-color:#409eff;outline:none;box-shadow:0 0 0 2px #409eff1a}.table-card[data-v-f8b3b74d]{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 4px #0000000a}.table-header[data-v-f8b3b74d]{margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}.record-count[data-v-f8b3b74d]{font-size:13px;color:#95a5b5}.data-table[data-v-f8b3b74d]{width:100%;border-collapse:collapse}.data-table th[data-v-f8b3b74d]{background:#f8fafc;padding:8px;font-size:13px;color:#5a6a7e;font-weight:600;border-bottom:1px solid #edf2f7;text-align:center}.data-table td[data-v-f8b3b74d]{padding:8px;font-size:13px;color:#333;border-bottom:1px solid #f1f4f8}.data-table tr[data-v-f8b3b74d]:hover{background:#f9fbff}.row-selected[data-v-f8b3b74d]{background:#f0f7ff!important}.fw600[data-v-f8b3b74d]{font-weight:600}.text-center[data-v-f8b3b74d]{text-align:center}.remark-cell[data-v-f8b3b74d]{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.teacher-tag[data-v-f8b3b74d]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500;background:#f6ffed;color:#52c41a}.teacher-empty[data-v-f8b3b74d]{color:#bbb;font-size:12px}.action-btns[data-v-f8b3b74d]{display:flex;gap:4px;justify-content:center}.btn[data-v-f8b3b74d]{height:34px;padding:0 16px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;border:none;transition:all .2s}.btn-primary[data-v-f8b3b74d]{background:#409eff;color:#fff}.btn-primary[data-v-f8b3b74d]:hover{background:#66b1ff}.btn-secondary[data-v-f8b3b74d]{background:#f4f4f5;color:#606266}.btn-secondary[data-v-f8b3b74d]:hover{background:#e9e9eb}.btn-danger[data-v-f8b3b74d]{background:#f56c6c;color:#fff}.btn-danger[data-v-f8b3b74d]:hover{background:#f78989}.btn[data-v-f8b3b74d]:disabled{opacity:.6;cursor:not-allowed}.btn-action[data-v-f8b3b74d]{width:28px;height:28px;border-radius:5px;border:none;cursor:pointer;margin:0 2px;transition:all .2s;display:flex;align-items:center;justify-content:center}.btn-edit[data-v-f8b3b74d]{background:#ecf5ff;color:#409eff}.btn-edit[data-v-f8b3b74d]:hover{background:#409eff;color:#fff}.btn-del[data-v-f8b3b74d]{background:#fef0f0;color:#f56c6c}.btn-del[data-v-f8b3b74d]:hover{background:#f56c6c;color:#fff}.pagination[data-v-f8b3b74d]{margin-top:20px;display:flex;justify-content:center;gap:6px}.page-btn[data-v-f8b3b74d]{min-width:32px;height:32px;padding:0 6px;border:1px solid #e1e6eb;background:#fff;border-radius:4px;cursor:pointer;font-size:13px;color:#606266}.page-btn[data-v-f8b3b74d]:hover:not(:disabled){border-color:#409eff;color:#409eff}.page-btn.active[data-v-f8b3b74d]{background:#409eff;color:#fff;border-color:#409eff}.page-btn[data-v-f8b3b74d]:disabled{cursor:not-allowed;opacity:.5}.modal-overlay[data-v-f8b3b74d]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.modal[data-v-f8b3b74d]{background:#fff;border-radius:12px;width:500px;max-width:90%;box-shadow:0 10px 25px #00000026;overflow:hidden}.modal-header[data-v-f8b3b74d]{padding:16px 20px;border-bottom:1px solid #edf2f7;display:flex;justify-content:space-between;align-items:center}.modal-header h3[data-v-f8b3b74d]{margin:0;font-size:18px;color:#1a2332}.close-btn[data-v-f8b3b74d]{background:none;border:none;font-size:24px;color:#95a5b5;cursor:pointer}.modal-body[data-v-f8b3b74d]{padding:20px}.form-group[data-v-f8b3b74d]{margin-bottom:16px}.form-group label[data-v-f8b3b74d]{display:block;margin-bottom:6px;font-size:13px;font-weight:600;color:#5a6a7e}.required[data-v-f8b3b74d]{color:#e74c3c}.form-input[data-v-f8b3b74d]{width:100%;height:38px;padding:0 12px;border:1px solid #e1e6eb;border-radius:6px;font-size:14px;color:#333;transition:all .2s;box-sizing:border-box}.form-input[data-v-f8b3b74d]:focus{border-color:#409eff;outline:none;box-shadow:0 0 0 2px #409eff1a}.form-textarea[data-v-f8b3b74d]{height:auto;padding:10px 12px}.modal-footer[data-v-f8b3b74d]{padding:16px 20px;background:#f8fafc;border-top:1px solid #edf2f7;display:flex;justify-content:flex-end;gap:12px}.loading-cell[data-v-f8b3b74d],.empty-cell[data-v-f8b3b74d]{text-align:center;padding:40px;color:#aaa}.page-wrapper[data-v-6389c253]{display:flex;height:100vh}.page-content[data-v-6389c253]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-6389c253]{flex:1;overflow-y:auto;padding:20px 24px;background:#f0f4f8}.stats-row[data-v-6389c253]{display:flex;gap:14px;margin-bottom:16px;flex-wrap:wrap}.stat-card[data-v-6389c253]{flex:1;min-width:140px;background:#fff;border-radius:12px;padding:16px 18px;display:flex;align-items:center;gap:12px;box-shadow:0 1px 3px #0000000a;border:1px solid rgba(0,0,0,.04);transition:all .3s ease}.stat-card[data-v-6389c253]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000000f}.stat-icon[data-v-6389c253]{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center}.stat-total .stat-icon[data-v-6389c253]{background:#eef2ff;color:#6366f1}.stat-members .stat-icon[data-v-6389c253]{background:#fef3c7;color:#f59e0b}.stat-full .stat-icon[data-v-6389c253]{background:#dcfce7;color:#22c55e}.stat-partial .stat-icon[data-v-6389c253]{background:#fff7ed;color:#f97316}.stat-empty .stat-icon[data-v-6389c253]{background:#fef2f2;color:#ef4444}.stat-info[data-v-6389c253]{display:flex;flex-direction:column}.stat-num[data-v-6389c253]{font-size:22px;font-weight:700;color:#1a2332;line-height:1.1;letter-spacing:-.5px}.stat-num small[data-v-6389c253]{font-size:14px;font-weight:400;color:#94a3b8}.stat-label[data-v-6389c253]{font-size:12px;color:#94a3b8;margin-top:3px;letter-spacing:.3px}.filter-card[data-v-6389c253]{background:#fff;border-radius:12px;padding:14px 18px;margin-bottom:16px;box-shadow:0 1px 3px #0000000a;border:1px solid rgba(0,0,0,.04)}.filter-row[data-v-6389c253]{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:10px}.filter-left[data-v-6389c253]{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.filter-right[data-v-6389c253]{display:flex;align-items:center}.filter-item[data-v-6389c253]{display:flex;align-items:center;gap:4px}.filter-item label[data-v-6389c253]{font-size:12px;color:#64748b;font-weight:500;white-space:nowrap}.filter-input[data-v-6389c253]{height:34px;padding:0 10px;border:1px solid #e2e8f0;border-radius:8px;font-size:12px;color:#334155;background:#f8fafc;transition:all .2s;min-width:90px}.filter-input[data-v-6389c253]:focus{border-color:#1a6fc4;outline:none;box-shadow:0 0 0 3px #1a6fc414;background:#fff}.cards-header[data-v-6389c253]{margin-bottom:10px}.record-count[data-v-6389c253]{font-size:13px;color:#94a3b8;font-weight:500}.card-grid[data-v-6389c253]{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.loading-box[data-v-6389c253],.empty-box[data-v-6389c253]{text-align:center;padding:60px;color:#94a3b8;font-size:14px;background:#fff;border-radius:12px;border:1px solid rgba(0,0,0,.04)}.dorm-card[data-v-6389c253]{background:#fff;border-radius:14px;padding:18px 20px;cursor:pointer;transition:all .35s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;border:1.5px solid #e8ecf1}.dorm-card[data-v-6389c253]:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;border-radius:14px 14px 0 0;transition:all .35s}.dorm-card.status-full[data-v-6389c253]{border-color:#22c55e33}.dorm-card.status-full[data-v-6389c253]:before{background:linear-gradient(90deg,#22c55e,#4ade80)}.dorm-card.status-full[data-v-6389c253]:hover{border-color:#22c55e59;box-shadow:0 8px 30px #22c55e1f,0 2px 8px #0000000a;transform:translateY(-4px)}.dorm-card.status-partial[data-v-6389c253]{border-color:#f9731633}.dorm-card.status-partial[data-v-6389c253]:before{background:linear-gradient(90deg,#f97316,#fb923c)}.dorm-card.status-partial[data-v-6389c253]:hover{border-color:#f9731659;box-shadow:0 8px 30px #f973161f,0 2px 8px #0000000a;transform:translateY(-4px)}.dorm-card.status-empty[data-v-6389c253]{border-color:#94a3b840}.dorm-card.status-empty[data-v-6389c253]:before{background:linear-gradient(90deg,#cbd5e1,#94a3b8)}.dorm-card.status-empty[data-v-6389c253]:hover{border-color:#94a3b866;box-shadow:0 8px 30px #94a3b826,0 2px 8px #0000000a;transform:translateY(-4px)}.card-header-row[data-v-6389c253]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.room-info[data-v-6389c253]{display:flex;align-items:center;gap:8px}.room-number[data-v-6389c253]{font-size:22px;font-weight:700;color:#1e293b;letter-spacing:-.5px}.gender-tag[data-v-6389c253]{font-size:10px;font-weight:600;padding:3px 8px;border-radius:6px;letter-spacing:.5px}.gender-tag.male[data-v-6389c253]{background:#eff6ff;color:#3b82f6}.gender-tag.female[data-v-6389c253]{background:#fdf2f8;color:#ec4899}.status-badge[data-v-6389c253]{font-size:10px;font-weight:600;padding:3px 10px;border-radius:20px;letter-spacing:.3px}.status-badge.status-full[data-v-6389c253]{background:#f0fdf4;color:#16a34a}.status-badge.status-partial[data-v-6389c253]{background:#fff7ed;color:#ea580c}.status-badge.status-empty[data-v-6389c253]{background:#f8fafc;color:#94a3b8}.card-divider[data-v-6389c253]{height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin-bottom:12px}.card-info[data-v-6389c253]{margin-bottom:12px}.info-row[data-v-6389c253]{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:12px}.info-icon[data-v-6389c253]{display:flex;align-items:center;color:#94a3b8;flex-shrink:0}.info-label[data-v-6389c253]{color:#94a3b8;min-width:28px}.info-val[data-v-6389c253]{color:#475569;font-weight:500;margin-left:auto}.occupancy[data-v-6389c253]{display:flex;align-items:center;gap:10px;margin-bottom:10px}.occ-bar[data-v-6389c253]{flex:1;height:5px;background:#f1f5f9;border-radius:3px;overflow:hidden}.occ-fill[data-v-6389c253]{height:100%;border-radius:3px;transition:width .4s ease}.status-full .occ-fill[data-v-6389c253]{background:linear-gradient(90deg,#22c55e,#4ade80)}.status-partial .occ-fill[data-v-6389c253]{background:linear-gradient(90deg,#f97316,#fb923c)}.status-empty .occ-fill[data-v-6389c253]{background:#e2e8f0}.occ-text[data-v-6389c253]{font-size:11px;font-weight:600;color:#64748b;white-space:nowrap}.member-avatars[data-v-6389c253]{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:12px;min-height:26px}.avatar-dot[data-v-6389c253]{width:26px;height:26px;border-radius:50%;font-size:10px;font-weight:600;display:flex;align-items:center;justify-content:center;color:#fff;background:#6366f1;box-shadow:0 1px 3px #0000001a;transition:transform .2s}.avatar-dot[data-v-6389c253]:hover{transform:scale(1.15)}.avatar-dot[data-v-6389c253]:nth-child(6n+1){background:#6366f1}.avatar-dot[data-v-6389c253]:nth-child(6n+2){background:#3b82f6}.avatar-dot[data-v-6389c253]:nth-child(6n+3){background:#8b5cf6}.avatar-dot[data-v-6389c253]:nth-child(6n+4){background:#ec4899}.avatar-dot[data-v-6389c253]:nth-child(6n+5){background:#14b8a6}.avatar-dot[data-v-6389c253]:nth-child(6n+6){background:#f59e0b}.empty-dot[data-v-6389c253]{background:#f8fafc!important;border:1.5px dashed #d1d5db;color:transparent!important;box-shadow:none}.card-actions[data-v-6389c253]{display:flex;gap:8px;justify-content:flex-end;padding-top:10px;border-top:1px solid #f1f5f9}.action-btn[data-v-6389c253]{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border-radius:8px;border:1px solid transparent;font-size:12px;font-weight:500;cursor:pointer;transition:all .25s ease;background:transparent}.action-edit[data-v-6389c253]{color:#1a6fc4;border-color:#dbeafe;background:#f0f7ff}.action-edit[data-v-6389c253]:hover{background:#1a6fc4;color:#fff;border-color:#1a6fc4;box-shadow:0 2px 8px #1a6fc440}.action-delete[data-v-6389c253]{color:#dc2626;border-color:#fee2e2;background:#fef2f2}.action-delete[data-v-6389c253]:hover{background:#dc2626;color:#fff;border-color:#dc2626;box-shadow:0 2px 8px #dc262640}.pagination[data-v-6389c253]{margin-top:24px;display:flex;justify-content:center;gap:6px}.page-btn[data-v-6389c253]{min-width:34px;height:34px;padding:0 8px;border:1px solid #e2e8f0;background:#fff;border-radius:8px;cursor:pointer;font-size:13px;color:#475569;font-weight:500;transition:all .2s}.page-btn[data-v-6389c253]:hover:not(:disabled){border-color:#1a6fc4;color:#1a6fc4;background:#f0f7ff}.page-btn.active[data-v-6389c253]{background:#1a6fc4;color:#fff;border-color:#1a6fc4}.page-btn[data-v-6389c253]:disabled{cursor:not-allowed;opacity:.4}.btn[data-v-6389c253]{height:34px;padding:0 16px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;border:none;transition:all .25s}.btn-primary[data-v-6389c253]{background:#1a6fc4;color:#fff}.btn-primary[data-v-6389c253]:hover{background:#155a9e;box-shadow:0 2px 8px #1a6fc433}.btn-secondary[data-v-6389c253]{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0}.btn-secondary[data-v-6389c253]:hover{background:#e2e8f0}.btn-danger[data-v-6389c253]{background:#dc2626;color:#fff}.btn-danger[data-v-6389c253]:hover{background:#b91c1c}.btn[data-v-6389c253]:disabled{opacity:.5;cursor:not-allowed}.btn-sm-pad[data-v-6389c253]{padding:0 12px;height:34px}.mt-12[data-v-6389c253]{margin-top:12px}.modal-overlay[data-v-6389c253]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0f172a73;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:2000}.modal[data-v-6389c253]{background:#fff;border-radius:16px;width:500px;max-width:90%;box-shadow:0 20px 60px #00000026;overflow:hidden}.modal-lg[data-v-6389c253]{width:700px}.modal-header[data-v-6389c253]{padding:16px 22px;border-bottom:1px solid #f1f5f9;display:flex;justify-content:space-between;align-items:center}.modal-header h3[data-v-6389c253]{margin:0;font-size:16px;color:#1e293b;font-weight:600}.close-btn[data-v-6389c253]{background:none;border:none;font-size:22px;color:#94a3b8;cursor:pointer;transition:color .2s}.close-btn[data-v-6389c253]:hover{color:#475569}.modal-body[data-v-6389c253]{padding:20px 22px;max-height:70vh;overflow-y:auto}.modal-footer[data-v-6389c253]{padding:14px 22px;background:#f8fafc;border-top:1px solid #f1f5f9;display:flex;justify-content:flex-end;gap:10px}.form-group[data-v-6389c253]{margin-bottom:16px}.form-group label[data-v-6389c253]{display:block;margin-bottom:6px;font-size:12px;font-weight:600;color:#475569}.required[data-v-6389c253]{color:#dc2626}.form-input[data-v-6389c253]{width:100%;height:38px;padding:0 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;color:#334155;transition:all .2s;box-sizing:border-box;background:#f8fafc}.form-input[data-v-6389c253]:focus{border-color:#1a6fc4;outline:none;box-shadow:0 0 0 3px #1a6fc414;background:#fff}.form-textarea[data-v-6389c253]{height:auto;padding:10px 12px}.form-row[data-v-6389c253]{display:flex;gap:14px}.flex1[data-v-6389c253]{flex:1}.detail-info-bar[data-v-6389c253]{display:flex;flex-wrap:wrap;gap:16px;padding:12px 16px;background:#f8fafc;border-radius:10px;margin-bottom:16px;font-size:12px;color:#64748b;border:1px solid #f1f5f9}.detail-info-bar b[data-v-6389c253]{color:#334155}.status-inline.status-full[data-v-6389c253]{color:#16a34a}.status-inline.status-partial[data-v-6389c253]{color:#ea580c}.status-inline.status-empty[data-v-6389c253]{color:#94a3b8}.section-title[data-v-6389c253]{font-size:14px;font-weight:600;color:#1e293b;margin:16px 0 10px;display:flex;align-items:center;gap:6px}.section-title small[data-v-6389c253]{font-size:12px;font-weight:400;color:#94a3b8}.member-table[data-v-6389c253]{width:100%;border-collapse:collapse;font-size:12px}.member-table th[data-v-6389c253]{background:#f8fafc;padding:8px 10px;color:#64748b;font-weight:600;border-bottom:1px solid #e2e8f0;text-align:center}.member-table td[data-v-6389c253]{padding:8px 10px;border-bottom:1px solid #f1f5f9;text-align:center;color:#334155}.fw600[data-v-6389c253]{font-weight:600}.empty-members[data-v-6389c253]{text-align:center;padding:24px;color:#94a3b8;font-size:13px}.btn-table-del[data-v-6389c253]{padding:3px 10px;border-radius:6px;border:1px solid #fee2e2;background:#fef2f2;color:#dc2626;font-size:11px;font-weight:500;cursor:pointer;transition:all .2s}.btn-table-del[data-v-6389c253]:hover{background:#dc2626;color:#fff;border-color:#dc2626}.btn-table-del[data-v-6389c253]:disabled{opacity:.5;cursor:not-allowed}.bed-input[data-v-6389c253]{width:56px;height:28px;text-align:center;border:1px solid #e2e8f0;border-radius:6px;font-size:12px;color:#334155;background:#f8fafc;transition:all .2s;outline:none}.bed-input[data-v-6389c253]:focus{border-color:#1a6fc4;background:#fff;box-shadow:0 0 0 2px #1a6fc41a}.bed-input[data-v-6389c253]::placeholder{color:#c0c8d4;font-size:11px}.add-member-section[data-v-6389c253]{margin-top:12px;padding-top:12px;border-top:1px solid #f1f5f9}.add-section-header[data-v-6389c253]{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.add-filter-row[data-v-6389c253]{display:flex;gap:8px;margin-bottom:10px}.student-pick-list[data-v-6389c253]{max-height:200px;overflow-y:auto;border:1px solid #e2e8f0;border-radius:10px}.pick-item[data-v-6389c253]{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;transition:background .15s;font-size:12px}.pick-item[data-v-6389c253]:hover{background:#f0f7ff}.pick-item.selected[data-v-6389c253]{background:#eff6ff}.pick-name[data-v-6389c253]{font-weight:600;color:#334155;min-width:50px}.pick-sid[data-v-6389c253]{color:#94a3b8}.pick-class[data-v-6389c253]{color:#64748b;margin-left:auto}.page-wrapper[data-v-b9700814]{display:flex;height:100vh}.page-content[data-v-b9700814]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-b9700814]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.tab-bar[data-v-b9700814]{display:flex;gap:0;margin-bottom:16px;background:#fff;border-radius:10px;padding:4px;box-shadow:0 1px 4px #0000000a}.tab-btn[data-v-b9700814]{flex:1;height:42px;border:none;background:transparent;border-radius:8px;font-size:14px;font-weight:600;color:#5a6a7e;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .25s}.tab-btn[data-v-b9700814]:hover{color:#409eff;background:#409eff0a}.tab-btn.active[data-v-b9700814]{background:#409eff;color:#fff;box-shadow:0 2px 8px #409eff40}.filter-card[data-v-b9700814]{background:#fff;border-radius:10px;padding:16px;margin-bottom:14px;box-shadow:0 1px 4px #0000000a}.filter-row[data-v-b9700814]{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:10px}.filter-left[data-v-b9700814]{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.filter-right[data-v-b9700814]{display:flex;align-items:center}.filter-item[data-v-b9700814]{display:flex;align-items:center;gap:6px}.filter-item label[data-v-b9700814]{font-size:13px;color:#5a6a7e;font-weight:600;white-space:nowrap}.filter-input[data-v-b9700814]{height:34px;padding:0 10px;border:1px solid #e1e6eb;border-radius:6px;font-size:13px;color:#333;background:#fcfdfe;transition:all .2s}.filter-input[data-v-b9700814]:focus{border-color:#409eff;outline:none;box-shadow:0 0 0 2px #409eff1a}.week-info[data-v-b9700814]{font-size:13px;color:#5a6a7e;display:flex;align-items:center;gap:6px;background:#f0f7ff;padding:6px 14px;border-radius:6px}.week-info i[data-v-b9700814]{color:#409eff}.stats-row[data-v-b9700814]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:14px}.stat-card[data-v-b9700814]{background:#fff;border-radius:10px;padding:16px 18px;display:flex;align-items:center;gap:14px;box-shadow:0 1px 4px #0000000a}.stat-icon[data-v-b9700814]{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px}.stat-blue .stat-icon[data-v-b9700814]{background:#e8f4ff;color:#409eff}.stat-green .stat-icon[data-v-b9700814]{background:#e8f8f0;color:#2ecc71}.stat-orange .stat-icon[data-v-b9700814]{background:#fff3e0;color:#f39c12}.stat-red .stat-icon[data-v-b9700814]{background:#fef0f0;color:#e74c3c}.stat-purple .stat-icon[data-v-b9700814]{background:#f3e8ff;color:#9b59b6}.stat-info[data-v-b9700814]{display:flex;flex-direction:column}.stat-val[data-v-b9700814]{font-size:20px;font-weight:700;color:#1a2332}.stat-label[data-v-b9700814]{font-size:12px;color:#95a5b5;margin-top:2px}.table-card[data-v-b9700814]{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 4px #0000000a}.table-header[data-v-b9700814]{margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}.record-count[data-v-b9700814]{font-size:13px;color:#95a5b5}.data-table[data-v-b9700814]{width:100%;border-collapse:collapse}.data-table th[data-v-b9700814]{background:#f8fafc;padding:10px 8px;font-size:13px;color:#5a6a7e;font-weight:600;border-bottom:1px solid #edf2f7;text-align:center}.data-table td[data-v-b9700814]{padding:10px 8px;font-size:13px;color:#333;border-bottom:1px solid #f1f4f8;text-align:center}.data-table tr[data-v-b9700814]:hover{background:#f9fbff}.fw600[data-v-b9700814]{font-weight:600}.text-center[data-v-b9700814]{text-align:center}.text-success[data-v-b9700814]{color:#2ecc71;font-weight:600}.text-danger[data-v-b9700814]{color:#e74c3c;font-weight:600}.text-muted[data-v-b9700814]{color:#95a5b5}.rank-badge[data-v-b9700814]{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;font-size:12px;font-weight:700;background:#f0f2f5;color:#5a6a7e}.rank-1[data-v-b9700814]{background:linear-gradient(135deg,gold,#ffb300);color:#fff}.rank-2[data-v-b9700814]{background:linear-gradient(135deg,silver,#a0a0a0);color:#fff}.rank-3[data-v-b9700814]{background:linear-gradient(135deg,#cd7f32,#b06c2a);color:#fff}.score-val[data-v-b9700814]{font-weight:700;font-size:15px}.score-up[data-v-b9700814]{color:#2ecc71}.score-down[data-v-b9700814]{color:#e74c3c}.score-normal[data-v-b9700814]{color:#333}.status-tag[data-v-b9700814]{padding:2px 10px;border-radius:4px;font-size:12px;font-weight:600}.st-ok[data-v-b9700814]{background:#e8f8f0;color:#2ecc71}.st-warn-yellow[data-v-b9700814]{background:#fff8e1;color:#f39c12}.st-warn[data-v-b9700814]{background:#fef0f0;color:#e74c3c}.btn[data-v-b9700814]{height:34px;padding:0 16px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;border:none;transition:all .2s}.btn-primary[data-v-b9700814]{background:#409eff;color:#fff}.btn-primary[data-v-b9700814]:hover{background:#66b1ff}.btn-secondary[data-v-b9700814]{background:#f4f4f5;color:#606266}.btn-secondary[data-v-b9700814]:hover{background:#e9e9eb}.pagination[data-v-b9700814]{margin-top:16px;padding-top:12px;border-top:1px solid #f1f4f8;display:flex;justify-content:center;align-items:center;gap:6px}.page-btn[data-v-b9700814]{min-width:34px;height:34px;padding:0 8px;border:1px solid #e1e6eb;background:#fff;border-radius:6px;cursor:pointer;font-size:13px;color:#606266;display:inline-flex;align-items:center;justify-content:center;transition:all .2s}.page-btn[data-v-b9700814]:hover:not(:disabled){border-color:#409eff;color:#409eff;background:#f0f7ff}.page-btn.active[data-v-b9700814]{background:#409eff;color:#fff;border-color:#409eff;box-shadow:0 2px 6px #409eff33}.page-btn[data-v-b9700814]:disabled{cursor:not-allowed;opacity:.4}.page-info[data-v-b9700814]{font-size:12px;color:#95a5b5;margin-left:8px}.loading-cell[data-v-b9700814],.empty-cell[data-v-b9700814]{padding:40px 0!important;color:#95a5b5;font-size:14px}.page-wrapper[data-v-60d3f70d]{display:flex;height:100vh}.page-content[data-v-60d3f70d]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-60d3f70d]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.tab-bar[data-v-60d3f70d]{display:flex;gap:0;margin-bottom:16px;background:#fff;border-radius:10px;padding:4px;box-shadow:0 1px 4px #0000000a}.tab-btn[data-v-60d3f70d]{flex:1;height:42px;border:none;background:transparent;border-radius:8px;font-size:14px;font-weight:600;color:#5a6a7e;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .25s}.tab-btn[data-v-60d3f70d]:hover{color:#409eff;background:#409eff0a}.tab-btn.active[data-v-60d3f70d]{background:#409eff;color:#fff;box-shadow:0 2px 8px #409eff40}.register-card[data-v-60d3f70d]{background:#fff;border-radius:10px;padding:24px;margin-bottom:16px;box-shadow:0 1px 4px #0000000a}.card-title[data-v-60d3f70d]{margin:0 0 4px;font-size:17px;color:#1a2332;display:flex;align-items:center;gap:8px}.card-title i[data-v-60d3f70d]{color:#409eff}.card-desc[data-v-60d3f70d]{margin:0 0 20px;font-size:13px;color:#95a5b5}.search-select-section[data-v-60d3f70d]{margin-bottom:20px}.search-select-section>label[data-v-60d3f70d]{display:flex;align-items:center;gap:6px;margin-bottom:8px;font-size:14px;font-weight:600;color:#1a2332}.search-select-section>label i[data-v-60d3f70d]{color:#409eff;font-size:13px}.search-select-box[data-v-60d3f70d]{position:relative}.search-input[data-v-60d3f70d]{width:100%;height:44px;padding:0 16px;border:2px solid #e1e6eb;border-radius:8px;font-size:14px;color:#333;transition:all .2s;box-sizing:border-box;background:#f8fafc}.search-input[data-v-60d3f70d]:focus{border-color:#409eff;outline:none;box-shadow:0 0 0 3px #409eff1f;background:#fff}.search-input[data-v-60d3f70d]::placeholder{color:#b0bec5}.selected-tag[data-v-60d3f70d]{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:6px;padding:4px 10px;background:#ecf5ff;border:1px solid #b3d8ff;border-radius:6px;font-size:13px;font-weight:600;color:#409eff}.selected-tag i[data-v-60d3f70d]{cursor:pointer;font-size:11px;color:#909399;transition:color .2s}.selected-tag i[data-v-60d3f70d]:hover{color:#f56c6c}.search-dropdown[data-v-60d3f70d]{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid #e4e7ed;border-radius:8px;box-shadow:0 6px 20px #0000001a;max-height:280px;overflow-y:auto;z-index:100}.dropdown-item[data-v-60d3f70d]{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;transition:all .15s;border-bottom:1px solid #f5f7fa}.dropdown-item[data-v-60d3f70d]:last-child{border-bottom:none}.dropdown-item[data-v-60d3f70d]:hover{background:#f0f7ff}.dropdown-item.selected[data-v-60d3f70d]{background:#ecf5ff}.dropdown-item i[data-v-60d3f70d]{color:#b0bec5;font-size:13px;width:16px;text-align:center;flex-shrink:0}.dropdown-item.selected i[data-v-60d3f70d],.dropdown-item:hover i[data-v-60d3f70d]{color:#409eff}.item-name[data-v-60d3f70d]{font-size:14px;font-weight:600;color:#333}.item-info[data-v-60d3f70d]{font-size:12px;color:#909399;margin-left:auto}.item-sub[data-v-60d3f70d]{font-size:12px;color:#b0bec5;margin-left:8px}.dropdown-empty[data-v-60d3f70d]{padding:16px;text-align:center;font-size:13px;color:#b0bec5}.form-grid[data-v-60d3f70d]{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-full[data-v-60d3f70d]{grid-column:1/-1}.form-group[data-v-60d3f70d]{display:flex;flex-direction:column}.form-group label[data-v-60d3f70d]{margin-bottom:6px;font-size:13px;font-weight:600;color:#5a6a7e}.required[data-v-60d3f70d]{color:#e74c3c}.form-input[data-v-60d3f70d]{height:38px;padding:0 12px;border:1px solid #e1e6eb;border-radius:6px;font-size:14px;color:#333;transition:all .2s;box-sizing:border-box}.form-input[data-v-60d3f70d]:focus{border-color:#409eff;outline:none;box-shadow:0 0 0 2px #409eff1a}.type-toggle[data-v-60d3f70d]{display:flex;gap:8px}.toggle-btn[data-v-60d3f70d]{flex:1;height:38px;border:1.5px solid #e1e6eb;border-radius:6px;background:#fff;font-size:13px;font-weight:600;color:#5a6a7e;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;transition:all .2s}.toggle-btn.active[data-v-60d3f70d]{border-color:#409eff;background:#ecf5ff;color:#409eff}.toggle-btn.toggle-red.active[data-v-60d3f70d]{border-color:#f56c6c;background:#fef0f0;color:#f56c6c}.form-actions[data-v-60d3f70d]{margin-top:20px;display:flex;justify-content:flex-end;gap:12px}.btn[data-v-60d3f70d]{height:36px;padding:0 20px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;border:none;transition:all .2s}.btn-primary[data-v-60d3f70d]{background:#409eff;color:#fff}.btn-primary[data-v-60d3f70d]:hover{background:#66b1ff}.btn-primary[data-v-60d3f70d]:disabled{opacity:.6;cursor:not-allowed}.btn-secondary[data-v-60d3f70d]{background:#f4f4f5;color:#606266}.btn-secondary[data-v-60d3f70d]:hover{background:#e9e9eb}.member-preview[data-v-60d3f70d]{margin-bottom:16px;padding:14px;background:#f0f7ff;border-radius:8px;border:1px solid #d4e8ff}.preview-title[data-v-60d3f70d]{font-size:13px;font-weight:600;color:#409eff;margin-bottom:8px;display:flex;align-items:center;gap:6px}.member-tags[data-v-60d3f70d]{display:flex;flex-wrap:wrap;gap:6px}.member-tag[data-v-60d3f70d]{padding:4px 10px;background:#fff;border:1px solid #d4e8ff;border-radius:4px;font-size:12px;color:#333}.table-card[data-v-60d3f70d]{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 4px #0000000a}.table-header[data-v-60d3f70d]{margin-bottom:12px}.record-count[data-v-60d3f70d]{font-size:13px;color:#95a5b5;font-weight:600}.data-table[data-v-60d3f70d]{width:100%;border-collapse:collapse}.data-table th[data-v-60d3f70d]{background:#f8fafc;padding:8px;font-size:13px;color:#5a6a7e;font-weight:600;border-bottom:1px solid #edf2f7;text-align:center}.data-table td[data-v-60d3f70d]{padding:8px;font-size:13px;color:#333;border-bottom:1px solid #f1f4f8}.data-table tr[data-v-60d3f70d]:hover{background:#f9fbff}.fw600[data-v-60d3f70d]{font-weight:600}.text-center[data-v-60d3f70d]{text-align:center}.text-success[data-v-60d3f70d]{color:#2ecc71;font-weight:600}.text-danger[data-v-60d3f70d]{color:#e74c3c;font-weight:600}.type-tag[data-v-60d3f70d]{padding:2px 8px;border-radius:4px;font-size:12px;font-weight:600}.type-praise[data-v-60d3f70d]{background:#e8f8f0;color:#2ecc71}.type-deduct[data-v-60d3f70d]{background:#fef0f0;color:#e74c3c}.page-wrapper[data-v-79880938]{display:flex;height:100vh}.page-content[data-v-79880938]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-79880938]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.tab-bar[data-v-79880938]{display:flex;gap:0;margin-bottom:16px;background:#fff;border-radius:10px;padding:4px;box-shadow:0 1px 4px #0000000a}.tab-btn[data-v-79880938]{flex:1;height:42px;border:none;background:transparent;border-radius:8px;font-size:14px;font-weight:600;color:#5a6a7e;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .25s}.tab-btn[data-v-79880938]:hover{color:#409eff;background:#409eff0a}.tab-btn.active[data-v-79880938]{background:#409eff;color:#fff;box-shadow:0 2px 8px #409eff40}.filter-card[data-v-79880938]{background:#fff;border-radius:10px;padding:16px;margin-bottom:14px;box-shadow:0 1px 4px #0000000a}.filter-row[data-v-79880938]{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:10px}.filter-left[data-v-79880938]{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.filter-item[data-v-79880938]{display:flex;align-items:center;gap:6px}.filter-item label[data-v-79880938]{font-size:13px;color:#5a6a7e;font-weight:600;white-space:nowrap}.filter-input[data-v-79880938]{height:34px;padding:0 10px;border:1px solid #e1e6eb;border-radius:6px;font-size:13px;color:#333;background:#fcfdfe;transition:all .2s}.filter-input[data-v-79880938]:focus{border-color:#409eff;outline:none;box-shadow:0 0 0 2px #409eff1a}.table-card[data-v-79880938]{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 4px #0000000a}.table-header[data-v-79880938]{margin-bottom:12px}.record-count[data-v-79880938]{font-size:13px;color:#95a5b5}.data-table[data-v-79880938]{width:100%;border-collapse:collapse}.data-table th[data-v-79880938]{background:#f8fafc;padding:8px;font-size:13px;color:#5a6a7e;font-weight:600;border-bottom:1px solid #edf2f7;text-align:center}.data-table td[data-v-79880938]{padding:8px;font-size:13px;color:#333;border-bottom:1px solid #f1f4f8}.data-table tr[data-v-79880938]:hover{background:#f9fbff}.fw600[data-v-79880938]{font-weight:600}.text-center[data-v-79880938]{text-align:center}.text-success[data-v-79880938]{color:#2ecc71;font-weight:600}.text-danger[data-v-79880938]{color:#e74c3c;font-weight:600}.type-tag[data-v-79880938]{padding:2px 8px;border-radius:4px;font-size:12px;font-weight:600}.type-praise[data-v-79880938]{background:#e8f8f0;color:#2ecc71}.type-deduct[data-v-79880938]{background:#fef0f0;color:#e74c3c}.cat-tag[data-v-79880938]{padding:2px 8px;border-radius:4px;font-size:12px;background:#f0f7ff;color:#409eff}.source-tag[data-v-79880938]{padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500}.source-班级[data-v-79880938]{background:#ecf5ff;color:#409eff}.source-寝室[data-v-79880938]{background:#fff3e0;color:#f39c12}.source-个人[data-v-79880938]{background:#f3e8ff;color:#9b59b6}.btn[data-v-79880938]{height:34px;padding:0 16px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;border:none;transition:all .2s}.btn-primary[data-v-79880938]{background:#409eff;color:#fff}.btn-primary[data-v-79880938]:hover{background:#66b1ff}.btn-secondary[data-v-79880938]{background:#f4f4f5;color:#606266}.btn-secondary[data-v-79880938]:hover{background:#e9e9eb}.pagination[data-v-79880938]{margin-top:20px;display:flex;justify-content:center;gap:6px}.page-btn[data-v-79880938]{min-width:32px;height:32px;padding:0 6px;border:1px solid #e1e6eb;background:#fff;border-radius:4px;cursor:pointer;font-size:13px;color:#606266}.page-btn[data-v-79880938]:hover:not(:disabled){border-color:#409eff;color:#409eff}.page-btn.active[data-v-79880938]{background:#409eff;color:#fff;border-color:#409eff}.page-btn[data-v-79880938]:disabled{cursor:not-allowed;opacity:.5}.page-wrapper[data-v-e6dfe4da]{display:flex;height:100vh}.page-content[data-v-e6dfe4da]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-e6dfe4da]{flex:1;overflow-y:auto;padding:0;background:#f5f7fa}.rule-policy-page[data-v-e6dfe4da]{padding:24px;background:#f5f7fa;min-height:100%}.page-header[data-v-e6dfe4da]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.page-title[data-v-e6dfe4da]{font-size:20px;font-weight:600;color:#1a2332;margin:0 0 4px}.page-desc[data-v-e6dfe4da]{font-size:13px;color:#8a9bb0;margin:0}.filter-card[data-v-e6dfe4da]{background:#fff;border-radius:10px;padding:16px 20px;margin-bottom:16px;box-shadow:0 1px 4px #0000000f}.filter-row[data-v-e6dfe4da]{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.filter-item[data-v-e6dfe4da]{display:flex;align-items:center;gap:8px}.filter-item label[data-v-e6dfe4da]{font-size:13px;color:#5a6a7e;white-space:nowrap}.filter-item select[data-v-e6dfe4da]{height:34px;border:1px solid #dde3ec;border-radius:6px;padding:0 10px;font-size:13px;color:#1a2332;background:#fff;min-width:110px}.filter-actions[data-v-e6dfe4da]{margin-left:auto}.stats-row[data-v-e6dfe4da]{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.stat-card[data-v-e6dfe4da]{background:#fff;border-radius:10px;padding:16px 18px;display:flex;align-items:center;gap:14px;box-shadow:0 1px 4px #0000000f}.stat-icon[data-v-e6dfe4da]{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon svg[data-v-e6dfe4da]{width:22px;height:22px}.stat-icon.blue[data-v-e6dfe4da]{background:#e8f0fe;color:#1a6fc4}.stat-icon.green[data-v-e6dfe4da]{background:#e6f9f0;color:#0d9e6e}.stat-icon.orange[data-v-e6dfe4da]{background:#fff4e6;color:#e67e22}.stat-icon.purple[data-v-e6dfe4da]{background:#f3e8ff;color:#7c3aed}.stat-value[data-v-e6dfe4da]{font-size:22px;font-weight:700;color:#1a2332}.stat-label[data-v-e6dfe4da]{font-size:12px;color:#8a9bb0;margin-top:2px}.table-card[data-v-e6dfe4da]{background:#fff;border-radius:10px;box-shadow:0 1px 4px #0000000f;overflow:hidden}.data-table[data-v-e6dfe4da]{width:100%;border-collapse:collapse;font-size:13px}.data-table th[data-v-e6dfe4da]{background:#f8fafc;padding:12px 14px;text-align:center;font-weight:600;color:#5a6a7e;border-bottom:1px solid #eef1f6;white-space:nowrap}.data-table td[data-v-e6dfe4da]{padding:12px 14px;border-bottom:1px solid #f0f3f8;vertical-align:middle;color:#1a2332;text-align:center}.data-table tr:last-child td[data-v-e6dfe4da]{border-bottom:none}.data-table tr:hover td[data-v-e6dfe4da]{background:#fafcff}.rule-name[data-v-e6dfe4da]{font-weight:600;color:#1a2332}.rule-desc[data-v-e6dfe4da]{font-size:12px;color:#8a9bb0;margin-top:2px}.text-muted[data-v-e6dfe4da]{color:#b0bec5;font-size:12px}.trigger-info[data-v-e6dfe4da],.action-info[data-v-e6dfe4da]{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.trigger-detail[data-v-e6dfe4da]{font-size:12px;color:#5a6a7e}.action-points[data-v-e6dfe4da]{font-size:12px;font-weight:600;color:#e53935}.limit-info[data-v-e6dfe4da]{font-size:12px;color:#5a6a7e;line-height:1.6}.tag[data-v-e6dfe4da]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500;white-space:nowrap}.tag-blue[data-v-e6dfe4da]{background:#e8f0fe;color:#1a6fc4}.tag-red[data-v-e6dfe4da]{background:#fdecea;color:#e53935}.tag-orange[data-v-e6dfe4da]{background:#fff4e6;color:#e67e22}.tag-purple[data-v-e6dfe4da]{background:#f3e8ff;color:#7c3aed}.tag-green[data-v-e6dfe4da]{background:#e6f9f0;color:#0d9e6e}.tag-gray[data-v-e6dfe4da]{background:#f0f3f8;color:#8a9bb0}.status-badge[data-v-e6dfe4da]{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:500}.status-badge.active[data-v-e6dfe4da]{background:#e6f9f0;color:#0d9e6e}.status-badge.inactive[data-v-e6dfe4da]{background:#f0f3f8;color:#8a9bb0}.action-btns[data-v-e6dfe4da]{display:flex;gap:6px}.btn-action[data-v-e6dfe4da]{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid;transition:all .2s}.btn-action svg[data-v-e6dfe4da]{width:13px;height:13px}.btn-edit[data-v-e6dfe4da]{background:#f0f6ff;color:#1a6fc4;border-color:#c5d9f5}.btn-edit[data-v-e6dfe4da]:hover{background:#1a6fc4;color:#fff}.btn-delete[data-v-e6dfe4da]{background:#fff5f5;color:#e53935;border-color:#fcc}.btn-delete[data-v-e6dfe4da]:hover{background:#e53935;color:#fff}.btn[data-v-e6dfe4da]{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;border:none;transition:all .2s}.btn svg[data-v-e6dfe4da]{width:16px;height:16px}.btn-primary[data-v-e6dfe4da]{background:#1a6fc4;color:#fff}.btn-primary[data-v-e6dfe4da]:hover{background:#1560ad}.btn-primary[data-v-e6dfe4da]:disabled{opacity:.6;cursor:not-allowed}.btn-default[data-v-e6dfe4da]{background:#fff;color:#5a6a7e;border:1px solid #dde3ec}.btn-default[data-v-e6dfe4da]:hover{background:#f5f7fa}.empty-state[data-v-e6dfe4da],.loading-state[data-v-e6dfe4da]{text-align:center;padding:60px 20px;color:#b0bec5}.empty-state svg[data-v-e6dfe4da]{width:48px;height:48px;margin-bottom:12px}.empty-state p[data-v-e6dfe4da]{font-size:14px}.spinner[data-v-e6dfe4da]{width:32px;height:32px;border:3px solid #e8f0fe;border-top-color:#1a6fc4;border-radius:50%;animation:spin-e6dfe4da .8s linear infinite;margin:0 auto 12px}@keyframes spin-e6dfe4da{to{transform:rotate(360deg)}}.modal-overlay[data-v-e6dfe4da]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-box-wide[data-v-e6dfe4da]{background:#fff;border-radius:16px;width:1100px;max-width:96vw;max-height:92vh;display:flex;flex-direction:column;box-shadow:0 24px 80px #00000040}.modal-header[data-v-e6dfe4da]{display:flex;justify-content:space-between;align-items:center;padding:18px 24px 14px;border-bottom:1px solid #eef1f6}.modal-header h3[data-v-e6dfe4da]{font-size:18px;font-weight:700;color:#1a2332;margin:0}.modal-header-right[data-v-e6dfe4da]{display:flex;align-items:center;gap:16px}.modal-close[data-v-e6dfe4da]{width:30px;height:30px;border:none;background:#f0f3f8;border-radius:8px;cursor:pointer;font-size:20px;color:#8a9bb0;display:flex;align-items:center;justify-content:center;transition:all .2s}.modal-close[data-v-e6dfe4da]:hover{background:#e0e6ef;color:#333}.modal-name-bar[data-v-e6dfe4da]{display:flex;gap:16px;padding:16px 24px;background:#f8fafc;border-bottom:1px solid #eef1f6}.name-field[data-v-e6dfe4da]{flex:1}.desc-field[data-v-e6dfe4da]{flex:1.2}.target-field[data-v-e6dfe4da]{flex:.8}.modal-name-bar label[data-v-e6dfe4da]{display:block;font-size:12px;color:#5a6a7e;font-weight:600;margin-bottom:6px}.modal-name-bar input[type=text][data-v-e6dfe4da]{width:100%;height:38px;border:1px solid #dde3ec;border-radius:8px;padding:0 12px;font-size:14px;color:#1a2332;background:#fff;transition:border-color .2s;box-sizing:border-box}.modal-name-bar input[type=text][data-v-e6dfe4da]:focus{outline:none;border-color:#1a6fc4;box-shadow:0 0 0 3px #1a6fc41a}.target-type-cards[data-v-e6dfe4da]{display:flex;gap:8px}.target-card[data-v-e6dfe4da]{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 6px;border:2px solid #eef1f6;border-radius:8px;cursor:pointer;transition:all .2s;background:#fff;text-align:center}.target-card input[data-v-e6dfe4da]{display:none}.target-card svg[data-v-e6dfe4da]{width:20px;height:20px;color:#8a9bb0}.target-card span[data-v-e6dfe4da]{font-size:12px;font-weight:600;color:#5a6a7e}.target-card[data-v-e6dfe4da]:hover{border-color:#c5d9f5}.target-card.active[data-v-e6dfe4da]{border-color:#1a6fc4;background:#f0f6ff}.target-card.active svg[data-v-e6dfe4da]{color:#1a6fc4}.target-card.active span[data-v-e6dfe4da]{color:#1a6fc4}.modal-three-col[data-v-e6dfe4da]{display:grid;grid-template-columns:260px 1fr 1fr;flex:1;overflow:hidden;min-height:0}.col[data-v-e6dfe4da]{display:flex;flex-direction:column;overflow:hidden}.col-left[data-v-e6dfe4da]{background:#f8fafc;border-right:1px solid #eef1f6}.col-center[data-v-e6dfe4da]{border-right:1px solid #eef1f6}.col-title[data-v-e6dfe4da]{display:flex;align-items:center;gap:8px;padding:14px 18px;font-size:14px;font-weight:700;color:#1a2332;border-bottom:1px solid #eef1f6;background:#fff9;flex-shrink:0}.col-title svg[data-v-e6dfe4da]{width:18px;height:18px;color:#1a6fc4}.col-body[data-v-e6dfe4da]{flex:1;overflow-y:auto;padding:16px 18px}.empty-col-hint[data-v-e6dfe4da]{text-align:center;padding:30px 10px;color:#b0bec5}.empty-col-hint svg[data-v-e6dfe4da]{width:36px;height:36px;margin-bottom:8px}.empty-col-hint p[data-v-e6dfe4da]{font-size:12px;line-height:1.6}.field-group[data-v-e6dfe4da]{margin-bottom:16px}.field-group[data-v-e6dfe4da]:last-child{margin-bottom:0}.field-group>label[data-v-e6dfe4da]{display:block;font-size:12px;color:#5a6a7e;font-weight:600;margin-bottom:6px}.field-select[data-v-e6dfe4da],.field-input[data-v-e6dfe4da]{width:100%;height:36px;border:1px solid #dde3ec;border-radius:7px;padding:0 10px;font-size:13px;color:#1a2332;background:#fff;transition:border-color .2s;box-sizing:border-box}.field-select[data-v-e6dfe4da]:focus,.field-input[data-v-e6dfe4da]:focus{outline:none;border-color:#1a6fc4;box-shadow:0 0 0 3px #1a6fc41a}.field-select[data-v-e6dfe4da]:disabled{background:#f5f7fa;color:#b0bec5;cursor:not-allowed}.preset-preview[data-v-e6dfe4da]{margin-top:10px;padding:10px 12px;background:#fff;border-radius:8px;border:1px solid #e8f0fe}.preview-item[data-v-e6dfe4da]{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:12px}.preview-label[data-v-e6dfe4da]{color:#8a9bb0}.preview-val[data-v-e6dfe4da]{color:#1a2332;font-weight:500}.fw600[data-v-e6dfe4da]{font-weight:600}.radio-cards[data-v-e6dfe4da]{display:flex;gap:10px}.radio-card[data-v-e6dfe4da]{flex:1;min-width:0;padding:14px 12px;border:2px solid #eef1f6;border-radius:10px;text-align:center;transition:all .2s;background:#fff;display:flex;flex-direction:column;align-items:center;gap:8px}.radio-card input[data-v-e6dfe4da]{display:none}.radio-card.active[data-v-e6dfe4da]{border-color:#1a6fc4;background:#f0f6ff}.radio-card.locked[data-v-e6dfe4da]{opacity:.45;pointer-events:none}.rc-icon svg[data-v-e6dfe4da]{width:24px;height:24px;color:#8a9bb0}.radio-card.active .rc-icon svg[data-v-e6dfe4da]{color:#1a6fc4}.rc-label[data-v-e6dfe4da]{font-size:13px;font-weight:600;color:#1a2332}.rc-hint[data-v-e6dfe4da]{font-size:10px;color:#1a6fc4;font-weight:500}.radio-pills[data-v-e6dfe4da]{display:flex;gap:6px;flex-wrap:wrap}.pill[data-v-e6dfe4da]{padding:6px 14px;border:1px solid #dde3ec;border-radius:20px;font-size:12px;color:#5a6a7e;cursor:pointer;transition:all .2s;background:#fff;white-space:nowrap}.pill input[data-v-e6dfe4da]{display:none}.pill[data-v-e6dfe4da]:hover{border-color:#1a6fc4;color:#1a6fc4}.pill.active[data-v-e6dfe4da]{background:#1a6fc4;color:#fff;border-color:#1a6fc4}.num-input-row[data-v-e6dfe4da]{display:flex;align-items:center;gap:8px}.num-prefix[data-v-e6dfe4da]{font-size:13px;color:#5a6a7e;white-space:nowrap;font-weight:600}.num-suffix[data-v-e6dfe4da]{font-size:12px;color:#8a9bb0;white-space:nowrap}.num-suffix b[data-v-e6dfe4da]{color:#1a6fc4;font-weight:600}.num-input[data-v-e6dfe4da]{width:80px;height:36px;border:1px solid #dde3ec;border-radius:7px;padding:0 10px;font-size:14px;font-weight:600;color:#1a2332;text-align:center;background:#fff;transition:border-color .2s}.num-input.wide[data-v-e6dfe4da]{width:100px}.num-input[data-v-e6dfe4da]:focus{outline:none;border-color:#1a6fc4;box-shadow:0 0 0 3px #1a6fc41a}.action-type-cards[data-v-e6dfe4da]{display:flex;gap:8px}.action-card[data-v-e6dfe4da]{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 8px;border:2px solid #eef1f6;border-radius:10px;cursor:pointer;transition:all .2s;background:#fff}.action-card input[data-v-e6dfe4da]{display:none}.action-card svg[data-v-e6dfe4da]{width:22px;height:22px}.action-card span[data-v-e6dfe4da]{font-size:12px;font-weight:500}.action-card[data-v-e6dfe4da]:hover{border-color:#c5d9f5}.action-card.active.warn[data-v-e6dfe4da]{border-color:#e67e22;background:#fff9f0}.action-card.active.warn svg[data-v-e6dfe4da]{color:#e67e22}.action-card.active.points[data-v-e6dfe4da]{border-color:#e53935;background:#fff5f5}.action-card.active.points svg[data-v-e6dfe4da]{color:#e53935}.action-card.active.notify[data-v-e6dfe4da]{border-color:#1a6fc4;background:#f0f6ff}.action-card.active.notify svg[data-v-e6dfe4da]{color:#1a6fc4}.action-section[data-v-e6dfe4da]{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid #f0f3f8}.action-section[data-v-e6dfe4da]:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.action-section-title[data-v-e6dfe4da]{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#1a2332;margin-bottom:12px}.class-impact-row[data-v-e6dfe4da]{display:flex;align-items:center;gap:8px;margin-top:12px;padding:10px 12px;background:#f8fafc;border-radius:8px;border:1px solid #eef1f6}.class-impact-label[data-v-e6dfe4da]{font-size:12px;font-weight:600;color:#5a6a7e}.num-input.compact[data-v-e6dfe4da]{width:80px;height:30px;font-size:13px}.dot[data-v-e6dfe4da]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot-blue[data-v-e6dfe4da]{background:#1a6fc4}.dot-orange[data-v-e6dfe4da]{background:#e67e22}.dot-purple[data-v-e6dfe4da]{background:#7c3aed}.dot-green[data-v-e6dfe4da]{background:#0d9e6e}.hint-text[data-v-e6dfe4da]{font-size:11px;color:#8a9bb0;margin-top:6px;line-height:1.5}.hint-inline[data-v-e6dfe4da]{font-size:11px;color:#b0bec5;font-weight:400}.hint-text b[data-v-e6dfe4da]{color:#1a6fc4;font-weight:600}.disabled-hint[data-v-e6dfe4da]{font-size:12px;color:#b0bec5;font-style:italic}.toggle[data-v-e6dfe4da]{position:relative;display:inline-block;width:40px;height:22px;cursor:pointer;flex-shrink:0}.toggle input[data-v-e6dfe4da]{opacity:0;width:0;height:0}.toggle-slider[data-v-e6dfe4da]{position:absolute;top:0;right:0;bottom:0;left:0;background:#dde3ec;border-radius:22px;transition:.3s}.toggle-slider[data-v-e6dfe4da]:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.3s}.toggle input:checked+.toggle-slider[data-v-e6dfe4da]{background:#1a6fc4}.toggle input:checked+.toggle-slider[data-v-e6dfe4da]:before{transform:translate(18px)}.toggle-sm[data-v-e6dfe4da]{width:34px;height:18px}.toggle-sm .toggle-slider[data-v-e6dfe4da]:before{width:12px;height:12px}.toggle-sm input:checked+.toggle-slider[data-v-e6dfe4da]:before{transform:translate(16px)}.toggle-row[data-v-e6dfe4da]{display:flex;align-items:center;gap:8px}.toggle-status[data-v-e6dfe4da]{font-size:12px;font-weight:500}.toggle-status.on[data-v-e6dfe4da]{color:#0d9e6e}.toggle-status.off[data-v-e6dfe4da]{color:#8a9bb0}.required[data-v-e6dfe4da]{color:#e53935}.modal-footer[data-v-e6dfe4da]{display:flex;justify-content:flex-end;gap:10px;padding:14px 24px;border-top:1px solid #eef1f6}.page-wrapper[data-v-bff43f8e]{display:flex;height:100vh}.page-content[data-v-bff43f8e]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-bff43f8e]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.page-header[data-v-bff43f8e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.page-header h2[data-v-bff43f8e]{font-size:20px;font-weight:700;color:#1a2d42;margin:0}.semester-select select[data-v-bff43f8e]{padding:6px 12px;border:1px solid #d0d5dd;border-radius:6px;font-size:13px;color:#344054;background:#fff;cursor:pointer}.stats-row[data-v-bff43f8e]{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:20px}.stat-card[data-v-bff43f8e]{background:#fff;border-radius:10px;padding:16px;display:flex;align-items:center;gap:12px;box-shadow:0 1px 3px #0000000f;border:1px solid #f0f0f0}.stat-icon[data-v-bff43f8e]{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.stat-icon.blue[data-v-bff43f8e]{background:#e3f2fd;color:#1976d2}.stat-icon.green[data-v-bff43f8e]{background:#e8f5e9;color:#388e3c}.stat-icon.cyan[data-v-bff43f8e]{background:#e0f7fa;color:#0097a7}.stat-icon.orange[data-v-bff43f8e]{background:#fff3e0;color:#f57c00}.stat-icon.red[data-v-bff43f8e]{background:#fce4ec;color:#d32f2f}.stat-info[data-v-bff43f8e]{display:flex;flex-direction:column}.stat-value[data-v-bff43f8e]{font-size:18px;font-weight:700;color:#1a2d42}.stat-label[data-v-bff43f8e]{font-size:11px;color:#98a2b3;margin-top:2px}.content-row[data-v-bff43f8e]{display:grid;grid-template-columns:1fr 1fr;gap:16px}.chart-card[data-v-bff43f8e],.records-card[data-v-bff43f8e]{background:#fff;border-radius:10px;box-shadow:0 1px 3px #0000000f;border:1px solid #f0f0f0;overflow:hidden}.card-header[data-v-bff43f8e]{padding:14px 18px;border-bottom:1px solid #f0f0f0}.card-header h3[data-v-bff43f8e]{font-size:14px;font-weight:600;color:#1a2d42;margin:0}.card-body[data-v-bff43f8e]{padding:16px}.chart-container[data-v-bff43f8e]{width:100%;height:300px;position:relative}.chart-container canvas[data-v-bff43f8e]{width:100%;cursor:crosshair}.empty-state[data-v-bff43f8e]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:#98a2b3}.empty-state i[data-v-bff43f8e]{font-size:36px;margin-bottom:12px;opacity:.4}.empty-state p[data-v-bff43f8e]{font-size:13px;margin:0}.record-list[data-v-bff43f8e]{max-height:340px;overflow-y:auto}.record-item[data-v-bff43f8e]{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid #f5f5f5}.record-item[data-v-bff43f8e]:last-child{border-bottom:none}.record-name[data-v-bff43f8e]{font-size:13px;font-weight:600;color:#1a2d42;white-space:nowrap}.record-title[data-v-bff43f8e]{font-size:12px;color:#667085;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.record-points[data-v-bff43f8e]{font-size:14px;font-weight:700;white-space:nowrap}.record-points.positive[data-v-bff43f8e]{color:#4caf50}.record-points.negative[data-v-bff43f8e]{color:#f44336}.record-time[data-v-bff43f8e]{font-size:11px;color:#98a2b3;white-space:nowrap}.page-wrapper[data-v-6a5d1018]{display:flex;height:100vh}.page-content[data-v-6a5d1018]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-6a5d1018]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.page-header[data-v-6a5d1018]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.page-header h2[data-v-6a5d1018]{font-size:20px;font-weight:700;color:#1a2d42;margin:0}.header-actions select[data-v-6a5d1018]{padding:6px 12px;border:1px solid #d0d5dd;border-radius:6px;font-size:13px;color:#344054;background:#fff;cursor:pointer}.table-card[data-v-6a5d1018]{background:#fff;border-radius:10px;box-shadow:0 1px 3px #0000000f;border:1px solid #f0f0f0;overflow:hidden}.data-table[data-v-6a5d1018]{width:100%;border-collapse:collapse}.data-table th[data-v-6a5d1018]{background:#f8f9fb;padding:10px 14px;font-size:12px;font-weight:600;color:#667085;text-align:left;border-bottom:1px solid #eaecf0}.data-table td[data-v-6a5d1018]{padding:10px 14px;font-size:13px;color:#344054;border-bottom:1px solid #f2f4f7}.data-table.compact th[data-v-6a5d1018],.data-table.compact td[data-v-6a5d1018]{padding:8px 10px;font-size:12px}.name-cell[data-v-6a5d1018]{font-weight:600;color:#1a2d42!important}.score-badge[data-v-6a5d1018]{display:inline-block;padding:2px 10px;border-radius:12px;font-size:13px;font-weight:600}.score-badge.good[data-v-6a5d1018]{background:#e8f5e9;color:#2e7d32}.score-badge.warn[data-v-6a5d1018]{background:#fff3e0;color:#e65100}.score-badge.danger[data-v-6a5d1018]{background:#fce4ec;color:#c62828}.positive[data-v-6a5d1018]{color:#4caf50;font-weight:600}.negative[data-v-6a5d1018]{color:#f44336;font-weight:600}.btn-link[data-v-6a5d1018]{background:none;border:none;color:#1976d2;cursor:pointer;font-size:12px;padding:2px 6px}.btn-link[data-v-6a5d1018]:hover{text-decoration:underline}.empty-row[data-v-6a5d1018]{text-align:center;color:#98a2b3;padding:30px!important}.modal-overlay[data-v-6a5d1018]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-6a5d1018]{background:#fff;border-radius:12px;width:700px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000026}.modal-header[data-v-6a5d1018]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #eaecf0}.modal-header h3[data-v-6a5d1018]{font-size:16px;font-weight:600;color:#1a2d42;margin:0}.modal-close[data-v-6a5d1018]{background:none;border:none;color:#98a2b3;cursor:pointer;font-size:16px;padding:4px}.modal-body[data-v-6a5d1018]{padding:16px 20px;overflow-y:auto;max-height:60vh}.page-wrapper[data-v-ca98624c]{display:flex;height:100vh}.page-content[data-v-ca98624c]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-ca98624c]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa;display:flex;flex-direction:column}.page-header[data-v-ca98624c]{display:flex;align-items:center;gap:12px;margin-bottom:16px}.page-header h2[data-v-ca98624c]{font-size:20px;font-weight:700;color:#1a2d42;margin:0}.class-badge[data-v-ca98624c]{background:#e3f2fd;color:#1976d2;padding:3px 10px;border-radius:12px;font-size:12px;font-weight:600}.register-layout[data-v-ca98624c]{display:grid;grid-template-columns:1fr 1fr;gap:16px;flex:1;min-height:0}.panel[data-v-ca98624c]{background:#fff;border-radius:10px;box-shadow:0 1px 3px #0000000f;border:1px solid #f0f0f0;display:flex;flex-direction:column;overflow:hidden}.panel-header[data-v-ca98624c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0}.panel-header h3[data-v-ca98624c]{font-size:14px;font-weight:600;color:#1a2d42;margin:0}.select-actions[data-v-ca98624c]{display:flex;gap:8px}.btn-text[data-v-ca98624c]{background:none;border:none;color:#1976d2;cursor:pointer;font-size:12px;padding:2px 6px}.btn-text[data-v-ca98624c]:hover{text-decoration:underline}.student-grid[data-v-ca98624c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px;padding:12px 16px;flex:1;overflow-y:auto;align-content:start}.student-chip[data-v-ca98624c]{display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:8px;border:1px solid #eaecf0;cursor:pointer;transition:all .15s ease;font-size:13px;color:#344054}.student-chip[data-v-ca98624c]:hover{border-color:#4fc3f7;background:#f0f9ff}.student-chip.selected[data-v-ca98624c]{border-color:#1976d2;background:#e3f2fd;color:#1976d2;font-weight:600}.student-chip i[data-v-ca98624c]{font-size:14px;color:#98a2b3}.student-chip.selected i[data-v-ca98624c]{color:#1976d2}.selection-info[data-v-ca98624c]{padding:8px 16px;border-top:1px solid #f0f0f0;font-size:12px;color:#667085}.rule-type-tabs[data-v-ca98624c]{display:flex;gap:4px}.tab[data-v-ca98624c]{padding:4px 10px;border:1px solid #eaecf0;border-radius:6px;background:#fff;cursor:pointer;font-size:12px;color:#667085;transition:all .15s ease}.tab.active[data-v-ca98624c]{background:#1976d2;color:#fff;border-color:#1976d2}.category-tabs[data-v-ca98624c]{display:flex;gap:4px;padding:8px 16px;flex-wrap:wrap;border-bottom:1px solid #f0f0f0}.cat-tab[data-v-ca98624c]{padding:3px 8px;border:1px solid #eaecf0;border-radius:4px;background:#fff;cursor:pointer;font-size:11px;color:#667085}.cat-tab.active[data-v-ca98624c]{background:#e3f2fd;color:#1976d2;border-color:#90caf9}.rules-list[data-v-ca98624c]{flex:1;overflow-y:auto;padding:8px 16px}.rule-item[data-v-ca98624c]{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:8px;cursor:pointer;transition:all .15s ease;margin-bottom:4px;border:1px solid transparent}.rule-item[data-v-ca98624c]:hover{background:#f8f9fb}.rule-item.selected[data-v-ca98624c]{background:#e3f2fd;border-color:#1976d2}.rule-info[data-v-ca98624c]{display:flex;flex-direction:column;gap:2px}.rule-name[data-v-ca98624c]{font-size:13px;font-weight:500;color:#1a2d42}.rule-category[data-v-ca98624c]{font-size:11px;color:#98a2b3}.rule-points[data-v-ca98624c]{font-size:15px;font-weight:700}.rule-points.positive[data-v-ca98624c]{color:#4caf50}.rule-points.negative[data-v-ca98624c]{color:#f44336}.empty-rules[data-v-ca98624c]{text-align:center;color:#98a2b3;padding:30px;font-size:13px}.submit-bar[data-v-ca98624c]{display:flex;justify-content:space-between;align-items:center;background:#fff;border-radius:10px;padding:12px 16px;margin-top:16px;box-shadow:0 1px 3px #0000000f;border:1px solid #f0f0f0}.submit-info[data-v-ca98624c]{font-size:13px;color:#344054}.submit-info .hint[data-v-ca98624c]{color:#98a2b3}.submit-actions[data-v-ca98624c]{display:flex;align-items:center;gap:12px}.remark-input input[data-v-ca98624c]{padding:6px 12px;border:1px solid #d0d5dd;border-radius:6px;font-size:13px;width:200px}.btn-submit[data-v-ca98624c]{display:flex;align-items:center;gap:6px;padding:8px 20px;background:#1976d2;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:background .2s}.btn-submit[data-v-ca98624c]:hover:not(:disabled){background:#1565c0}.btn-submit[data-v-ca98624c]:disabled{background:#b0bec5;cursor:not-allowed}.success-toast[data-v-ca98624c]{position:fixed;top:20px;right:20px;background:#4caf50;color:#fff;padding:12px 20px;border-radius:8px;font-size:14px;font-weight:500;display:flex;align-items:center;gap:8px;box-shadow:0 4px 12px #4caf504d;z-index:2000;animation:slideIn-ca98624c .3s ease}@keyframes slideIn-ca98624c{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.page-wrapper[data-v-73b2326e]{display:flex;height:100vh}.page-content[data-v-73b2326e]{flex:1;display:flex;flex-direction:column;overflow:hidden}.content-area[data-v-73b2326e]{flex:1;overflow-y:auto;padding:20px 24px;background:#f5f7fa}.page-header[data-v-73b2326e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.page-header h2[data-v-73b2326e]{font-size:20px;font-weight:700;color:#1a2d42;margin:0}.header-actions[data-v-73b2326e]{display:flex;gap:8px}.header-actions select[data-v-73b2326e]{padding:6px 12px;border:1px solid #d0d5dd;border-radius:6px;font-size:13px;color:#344054;background:#fff;cursor:pointer}.table-card[data-v-73b2326e]{background:#fff;border-radius:10px;box-shadow:0 1px 3px #0000000f;border:1px solid #f0f0f0;overflow:hidden}.data-table[data-v-73b2326e]{width:100%;border-collapse:collapse}.data-table th[data-v-73b2326e]{background:#f8f9fb;padding:10px 14px;font-size:12px;font-weight:600;color:#667085;text-align:left;border-bottom:1px solid #eaecf0}.data-table td[data-v-73b2326e]{padding:10px 14px;font-size:13px;color:#344054;border-bottom:1px solid #f2f4f7}.name-cell[data-v-73b2326e]{font-weight:600;color:#1a2d42!important}.type-badge[data-v-73b2326e]{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}.type-badge.praise[data-v-73b2326e]{background:#e8f5e9;color:#2e7d32}.type-badge.deduct[data-v-73b2326e]{background:#fce4ec;color:#c62828}.positive[data-v-73b2326e]{color:#4caf50;font-weight:600}.negative[data-v-73b2326e]{color:#f44336;font-weight:600}.empty-row[data-v-73b2326e]{text-align:center;color:#98a2b3;padding:30px!important}.pagination[data-v-73b2326e]{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:16px;padding:12px}.pagination button[data-v-73b2326e]{padding:6px 14px;border:1px solid #d0d5dd;border-radius:6px;background:#fff;cursor:pointer;font-size:13px;color:#344054}.pagination button[data-v-73b2326e]:disabled{color:#98a2b3;cursor:not-allowed}.pagination span[data-v-73b2326e]{font-size:13px;color:#667085}:root{--primary: #1a6fc4;--primary-light: #2980b9;--primary-dark: #155a9e;--primary-bg: rgba(26, 111, 196, .08);--secondary: #27ae60;--secondary-bg: rgba(39, 174, 96, .08);--warning: #f39c12;--warning-bg: rgba(243, 156, 18, .08);--danger: #e74c3c;--danger-bg: rgba(231, 76, 60, .08);--info: #8e44ad;--info-bg: rgba(142, 68, 173, .08);--text-primary: #1a2332;--text-secondary: #5a6a7e;--text-muted: #95a5b5;--bg-page: #f0f4f8;--bg-white: #ffffff;--bg-sidebar: #1a2332;--bg-sidebar-hover: #243044;--bg-topbar: #ffffff;--border: #e2e8f0;--border-light: #f1f5f9;--shadow-xs: 0 1px 3px rgba(0,0,0,.06);--shadow-sm: 0 2px 8px rgba(0,0,0,.08);--shadow-md: 0 4px 16px rgba(0,0,0,.1);--shadow-lg: 0 8px 32px rgba(0,0,0,.12);--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--sidebar-width: 240px;--topbar-height: 64px;--transition: all .25s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text-primary);background:var(--bg-page);font-size:14px;line-height:1.6}a{text-decoration:none;color:var(--primary)}ul{list-style:none}input,select,textarea,button{font-family:inherit}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:500;transition:var(--transition);white-space:nowrap}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 12px #1a6fc44d}.btn-success{background:var(--secondary);color:#fff}.btn-success:hover{background:#219a52}.btn-warning{background:var(--warning);color:#fff}.btn-warning:hover{background:#e67e22}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#c0392b}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text-secondary)}.btn-outline:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-bg)}.btn-sm{padding:5px 12px;font-size:12px}.btn-block{display:flex;width:100%;justify-content:center}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:500}.badge-primary{background:var(--primary-bg);color:var(--primary)}.badge-success{background:var(--secondary-bg);color:var(--secondary)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-info{background:var(--info-bg);color:var(--info)}.badge-gray{background:#f1f5f9;color:var(--text-secondary)}.form-control{width:100%;padding:9px 13px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text-primary);background:#fff;transition:var(--transition);outline:none}.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px #1a6fc41f}.form-group{margin-bottom:18px}.form-group label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--text-secondary)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background-image:url(/assets/login-bg-BMraZI95.jpg);background-size:cover;background-position:center;position:relative}.login-page:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#0a1e3cb8,#1a6fc473)}.login-card{position:relative;z-index:1;display:flex;width:900px;max-width:95vw;min-height:520px;border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 20px 60px #00000059}.login-left{flex:1;background:linear-gradient(160deg,#1a6fc4eb,#0a1e50f2);padding:50px 40px;display:flex;flex-direction:column;justify-content:space-between;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.login-brand{display:flex;align-items:center;gap:14px}.login-brand .brand-icon{width:52px;height:52px;background:#ffffff26;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:26px}.login-brand h1{font-size:20px;font-weight:700;line-height:1.3}.login-brand p{font-size:12px;opacity:.7;margin-top:2px}.login-features{display:flex;flex-direction:column;gap:18px}.feature-item{display:flex;align-items:flex-start;gap:14px}.feature-icon{width:40px;height:40px;flex-shrink:0;background:#ffffff1f;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px}.feature-text h4{font-size:14px;font-weight:600}.feature-text p{font-size:12px;opacity:.65;margin-top:2px}.login-footer{font-size:12px;opacity:.5}.login-right{width:380px;background:#fff;padding:50px 40px;display:flex;flex-direction:column;justify-content:center}.login-title{font-size:24px;font-weight:700;color:var(--text-primary);margin-bottom:6px}.login-subtitle{font-size:13px;color:var(--text-muted);margin-bottom:30px}.role-tabs{display:flex;gap:8px;margin-bottom:28px;background:var(--bg-page);padding:5px;border-radius:var(--radius)}.role-tab{flex:1;padding:10px 6px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:5px;transition:var(--transition);color:var(--text-muted)}.role-tab i{font-size:18px}.role-tab span{font-size:12px;font-weight:500}.role-tab.active{background:#fff;color:var(--primary);box-shadow:var(--shadow-sm)}.input-group{position:relative;margin-bottom:16px}.input-group .input-icon{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:15px}.input-group input{width:100%;padding:12px 13px 12px 40px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:14px;color:var(--text-primary);transition:var(--transition);outline:none;background:#fafbfc}.input-group input:focus{border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px #1a6fc41a}.login-options{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;font-size:13px}.remember-label{display:flex;align-items:center;gap:6px;color:var(--text-secondary);cursor:pointer}.forgot-link{color:var(--primary)}.forgot-link:hover{text-decoration:underline}.btn-login{padding:13px;font-size:15px;font-weight:600;border-radius:var(--radius-sm);letter-spacing:.5px}.login-tips{margin-top:20px;padding:12px;background:var(--primary-bg);border-radius:var(--radius-sm);font-size:12px;color:var(--text-secondary)}.login-tips strong{color:var(--primary)}.admin-layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:var(--sidebar-width);background:var(--bg-sidebar);display:flex;flex-direction:column;flex-shrink:0;transition:var(--transition);z-index:100}.sidebar.collapsed{width:64px}.sidebar-logo{height:var(--topbar-height);display:flex;align-items:center;padding:0 18px;gap:12px;border-bottom:1px solid rgba(255,255,255,.06);overflow:hidden}.logo-icon{width:36px;height:36px;flex-shrink:0;background:var(--primary);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;color:#fff}.logo-text h2{font-size:14px;font-weight:700;color:#fff;white-space:nowrap}.logo-text p{font-size:11px;color:#fff6;white-space:nowrap}.sidebar-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px 0}.sidebar-nav::-webkit-scrollbar{width:4px}.sidebar-nav::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.nav-group-title{padding:10px 18px 4px;font-size:10px;font-weight:600;letter-spacing:1px;color:#ffffff40;text-transform:uppercase;white-space:nowrap;overflow:hidden}.nav-item{display:flex;align-items:center;gap:12px;padding:11px 18px;color:#ffffff8c;cursor:pointer;transition:var(--transition);border-left:3px solid transparent;position:relative;white-space:nowrap;overflow:hidden}.nav-item:hover{background:var(--bg-sidebar-hover);color:#ffffffd9}.nav-item.active{background:#1a6fc433;color:#fff;border-left-color:var(--primary)}.nav-item i{font-size:16px;flex-shrink:0;width:20px;text-align:center}.nav-item span{font-size:13px;font-weight:500}.sidebar-footer{padding:14px;border-top:1px solid rgba(255,255,255,.06)}.logout-btn{display:flex;align-items:center;gap:10px;padding:10px 14px;width:100%;background:#e74c3c1f;border:none;border-radius:var(--radius-sm);color:#e74c3c;cursor:pointer;font-size:13px;font-weight:500;transition:var(--transition);white-space:nowrap;overflow:hidden}.logout-btn:hover{background:#e74c3c38}.logout-btn i{flex-shrink:0}.main-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden}.topbar{height:var(--topbar-height);background:var(--bg-topbar);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:16px;flex-shrink:0;box-shadow:var(--shadow-xs);position:relative;z-index:50}.topbar-toggle{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:18px;transition:var(--transition)}.topbar-toggle:hover{background:var(--bg-page)}.breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-muted)}.breadcrumb .current{color:var(--text-primary);font-weight:500}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px}.semester-badge{display:flex;align-items:center;gap:6px;padding:6px 14px;background:var(--primary-bg);border-radius:20px;font-size:12px;color:var(--primary);font-weight:500}.topbar-icon-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:16px;transition:var(--transition);position:relative}.topbar-icon-btn:hover{background:var(--bg-page);color:var(--primary)}.notif-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;background:var(--danger);border-radius:50%;border:2px solid #fff}.user-dropdown{display:flex;align-items:center;gap:10px;padding:6px 12px;border-radius:var(--radius);cursor:pointer;transition:var(--transition);position:relative}.user-dropdown:hover{background:var(--bg-page)}.user-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-dark));display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:700;flex-shrink:0}.user-meta{display:flex;flex-direction:column}.user-name{font-size:13px;font-weight:600;color:var(--text-primary)}.user-role,.user-dropdown i{font-size:11px;color:var(--text-muted)}.dropdown-menu{position:absolute;top:calc(100% + 8px);right:0;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);min-width:180px;z-index:1000;display:none;overflow:hidden}.dropdown-menu.show{display:block}.dropdown-item{display:flex;align-items:center;gap:10px;padding:10px 16px;font-size:13px;color:var(--text-secondary);cursor:pointer;transition:var(--transition)}.dropdown-item:hover{background:var(--bg-page);color:var(--primary)}.dropdown-item.danger{color:var(--danger)}.dropdown-item.danger:hover{background:var(--danger-bg)}.dropdown-divider{height:1px;background:var(--border);margin:4px 0}.content-area{flex:1;overflow-y:auto;padding:24px}.content-area::-webkit-scrollbar{width:6px}.content-area::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-title-wrap h1{font-size:20px;font-weight:700;color:var(--text-primary)}.page-title-wrap p{font-size:13px;color:var(--text-muted);margin-top:2px}.page-actions{display:flex;gap:10px;align-items:center}.card{background:var(--bg-white);border-radius:var(--radius);box-shadow:var(--shadow-xs);border:1px solid var(--border-light)}.card-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-light)}.card-title{font-size:15px;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:8px}.card-title i{color:var(--primary)}.card-body{padding:20px}.card-footer{padding:12px 20px;border-top:1px solid var(--border-light);background:#fafbfc;border-radius:0 0 var(--radius) var(--radius)}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat-card{background:var(--bg-white);border-radius:var(--radius);padding:20px;border:1px solid var(--border-light);box-shadow:var(--shadow-xs);display:flex;align-items:center;gap:16px;transition:var(--transition)}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-icon-wrap{width:56px;height:56px;flex-shrink:0;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:22px}.stat-icon-wrap.blue{background:var(--primary-bg);color:var(--primary)}.stat-icon-wrap.green{background:var(--secondary-bg);color:var(--secondary)}.stat-icon-wrap.orange{background:var(--warning-bg);color:var(--warning)}.stat-icon-wrap.red{background:var(--danger-bg);color:var(--danger)}.stat-icon-wrap.purple{background:var(--info-bg);color:var(--info)}.stat-info h3{font-size:12px;color:var(--text-muted);font-weight:500;margin-bottom:4px}.stat-value{font-size:26px;font-weight:700;color:var(--text-primary);line-height:1}.stat-change{font-size:11px;margin-top:4px}.stat-change.up{color:var(--secondary)}.stat-change.down{color:var(--danger)}.chart-grid-2{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:20px}.chart-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}.chart-grid-equal{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}.chart-wrap{height:280px;position:relative}.chart-wrap-sm{height:220px;position:relative}.chart-wrap-lg{height:340px;position:relative}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}thead th{padding:11px 14px;background:#f8fafc;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);white-space:nowrap;text-align:center}tbody td{padding:13px 14px;font-size:13px;color:var(--text-primary);border-bottom:1px solid var(--border-light);vertical-align:middle;text-align:center}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#fafbfc}.rank-badge{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.rank-1{background:gold;color:#7a5800}.rank-2{background:silver;color:#555}.rank-3{background:#cd7f32;color:#fff}.rank-other{background:var(--bg-page);color:var(--text-muted)}.filter-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:16px 20px;background:#fafbfc;border-bottom:1px solid var(--border-light)}.filter-bar .form-control{width:auto;min-width:140px}.filter-bar .search-input{min-width:220px}.pagination{display:flex;align-items:center;gap:6px;justify-content:flex-end;padding:12px 20px}.page-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;cursor:pointer;font-size:13px;color:var(--text-secondary);transition:var(--transition)}.page-btn:hover,.page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.page-info{font-size:12px;color:var(--text-muted);margin:0 8px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:1000;display:flex;align-items:center;justify-content:center;opacity:1;pointer-events:all;transition:opacity .25s;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-overlay.show{opacity:1;pointer-events:all}.modal{background:#fff;border-radius:var(--radius-lg);box-shadow:0 20px 60px #0003;width:520px;max-width:95vw;max-height:90vh;overflow-y:auto;transform:translateY(0);transition:transform .25s}.modal-overlay.show .modal{transform:translateY(0)}.modal-lg{width:720px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border)}.modal-title{font-size:16px;font-weight:700}.modal-close{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;border-radius:var(--radius-sm);color:var(--text-muted);font-size:18px;transition:var(--transition)}.modal-close:hover{background:var(--bg-page);color:var(--text-primary)}.modal-body{padding:24px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--border);background:#fafbfc;border-radius:0 0 var(--radius-lg) var(--radius-lg)}.toast-container{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:10px}.toast{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-lg);border-left:4px solid var(--primary);min-width:280px;max-width:380px;animation:slideIn .3s ease}.toast.success{border-left-color:var(--secondary)}.toast.warning{border-left-color:var(--warning)}.toast.error{border-left-color:var(--danger)}.toast-icon{font-size:18px;flex-shrink:0;margin-top:1px}.toast.success .toast-icon{color:var(--secondary)}.toast.warning .toast-icon{color:var(--warning)}.toast.error .toast-icon{color:var(--danger)}.toast-content h4{font-size:13px;font-weight:600}.toast-content p{font-size:12px;color:var(--text-muted);margin-top:2px}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.progress-bar-wrap{background:var(--bg-page);border-radius:20px;height:8px;overflow:hidden}.progress-bar{height:100%;border-radius:20px;transition:width .6s ease}.progress-bar.blue{background:var(--primary)}.progress-bar.green{background:var(--secondary)}.progress-bar.orange{background:var(--warning)}.progress-bar.red{background:var(--danger)}.tabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:20px}.tab-item{padding:10px 20px;font-size:14px;font-weight:500;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:var(--transition)}.tab-item:hover{color:var(--primary)}.tab-item.active{color:var(--primary);border-bottom-color:var(--primary)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--text-muted)}.empty-state i{font-size:48px;margin-bottom:16px;opacity:.3}.empty-state p{font-size:14px}.points-positive{color:var(--secondary);font-weight:600}.points-negative{color:var(--danger);font-weight:600}.points-zero{color:var(--text-muted)}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px}.status-dot.green{background:var(--secondary)}.status-dot.red{background:var(--danger)}.status-dot.orange{background:var(--warning)}.status-dot.blue{background:var(--primary)}.upload-zone{border:2px dashed var(--border);border-radius:var(--radius);padding:40px;text-align:center;cursor:pointer;transition:var(--transition);color:var(--text-muted)}.upload-zone:hover,.upload-zone.drag-over{border-color:var(--primary);background:var(--primary-bg);color:var(--primary)}.upload-zone i{font-size:40px;margin-bottom:12px;display:block}.upload-zone h4{font-size:15px;font-weight:600;margin-bottom:6px}.upload-zone p{font-size:13px}.over-limit{background:#e74c3c0d!important}.over-limit td{color:var(--danger)!important}@media (max-width: 1280px){.stat-grid{grid-template-columns:repeat(2,1fr)}.chart-grid-2{grid-template-columns:1fr}.chart-grid-3{grid-template-columns:1fr 1fr}}@media (max-width: 768px){.sidebar{position:fixed;left:-240px;height:100%}.sidebar.mobile-open{left:0}.stat-grid{grid-template-columns:1fr 1fr}.login-left{display:none}.login-right{width:100%}}.notif-panel{position:absolute;top:calc(100% + 8px);right:60px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:320px;z-index:1001;display:none;overflow:hidden}.notif-panel.show{display:block}.notif-panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);font-size:13px;font-weight:600}.notif-item{display:flex;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border-light);cursor:pointer;transition:var(--transition)}.notif-item:hover{background:var(--bg-page)}.notif-item.unread{background:var(--primary-bg)}.notif-dot-item{width:8px;height:8px;border-radius:50%;background:var(--primary);flex-shrink:0;margin-top:5px}.notif-text{font-size:12px;color:var(--text-secondary);line-height:1.5}.notif-time{font-size:11px;color:var(--text-muted);margin-top:4px}.chart-wrap-md{height:260px;position:relative}.chart-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:20px}.dashboard-row{display:grid;gap:16px;margin-bottom:16px}.dashboard-row-2{grid-template-columns:1fr 1fr}.dashboard-row-3{grid-template-columns:1fr 1fr 1fr}.dashboard-row-32{grid-template-columns:3fr 2fr}.dashboard-row-23{grid-template-columns:2fr 3fr}.logout-confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:9998;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.logout-confirm-box{background:#fff;border-radius:var(--radius-lg);box-shadow:0 20px 60px #00000040;padding:32px;text-align:center;width:360px;max-width:95vw;animation:modalIn .2s ease}@keyframes modalIn{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.logout-confirm-icon{width:60px;height:60px;border-radius:50%;background:var(--danger-bg);display:flex;align-items:center;justify-content:center;font-size:26px;color:var(--danger);margin:0 auto 16px}.logout-confirm-box h3{font-size:18px;font-weight:700;margin-bottom:8px}.logout-confirm-box p{font-size:13px;color:var(--text-muted);margin-bottom:24px}.logout-confirm-actions{display:flex;gap:12px;justify-content:center}th.text-left,td.text-left{text-align:left!important}th.text-center,td.text-center,td.td-actions{text-align:center!important}.td-reason{text-align:left!important;min-width:160px}.th-reason{text-align:left!important}
