:root{--primary-color: #6366f1;--secondary-color: #a855f7;--bg-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--glass-bg: rgba(255, 255, 255, .9);--glass-border: rgba(255, 255, 255, .3);--text-color: #1f2937}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;overflow:hidden;width:100%;overscroll-behavior:none}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;background:var(--bg-gradient);min-height:100vh;color:var(--text-color)}#app{width:100%;max-width:1200px;margin:0 auto;padding:0;height:100%}.glass-card{background:var(--glass-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:16px;border:1px solid var(--glass-border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;padding:2rem}.btn{background:linear-gradient(to right,var(--primary-color),var(--secondary-color));color:#fff;border:none;padding:.75rem 1.5rem;border-radius:8px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #6366f166}input{width:100%;padding:.75rem;margin-bottom:1rem;border:1px solid #e5e7eb;border-radius:8px;background:#f9fafb;transition:border-color .2s}input:focus{outline:none;border-color:var(--primary-color);background:#fff}h1,h2,h3{margin-top:0}.fade-enter-active,.fade-leave-active{transition:opacity .3s ease}.fade-enter-from,.fade-leave-to{opacity:0}@media(max-width:768px){body{align-items:flex-start;padding-top:2rem}#app{padding:0;max-width:100%}.glass-card{padding:1.5rem;border-radius:12px;margin:0 .5rem}.btn{width:100%;padding:1rem;font-size:16px}input{font-size:16px;padding:1rem}}@media(max-width:480px){#app{padding:0}.glass-card{padding:1rem;margin:0;border-radius:8px}h2{font-size:1.25rem}}.dashboard[data-v-ba879b21]{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.dashboard-header[data-v-ba879b21]{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#fffffff2;border-radius:16px;box-shadow:0 4px 20px #0000001a;margin-bottom:24px}.brand[data-v-ba879b21]{display:flex;align-items:center;gap:12px}.brand .logo[data-v-ba879b21]{font-size:32px}.brand .title[data-v-ba879b21]{font-size:22px;font-weight:700;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.user-info[data-v-ba879b21]{display:flex;align-items:center;gap:12px}.student-id[data-v-ba879b21]{color:#374151;font-weight:500}.share-btn[data-v-ba879b21],.logout-btn[data-v-ba879b21]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.share-btn[data-v-ba879b21]{background:#f0f4ff;color:#667eea}.share-btn[data-v-ba879b21]:hover{background:#667eea;color:#fff}.logout-btn[data-v-ba879b21]{background:#fee2e2;color:#dc2626}.logout-btn[data-v-ba879b21]:hover{background:#dc2626;color:#fff}.module-grid[data-v-ba879b21]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;max-width:900px;margin:0 auto}.module-card[data-v-ba879b21]{background:#fff;border-radius:20px;padding:28px 20px;text-align:center;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 15px #0000001a;position:relative;overflow:hidden}.module-card[data-v-ba879b21]:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--accent-color)}.module-card[data-v-ba879b21]:hover:not(.disabled){transform:translateY(-8px);box-shadow:0 12px 30px #00000026}.module-card.disabled[data-v-ba879b21]{opacity:.7;cursor:not-allowed}.module-icon[data-v-ba879b21]{font-size:48px;margin-bottom:12px}.module-name[data-v-ba879b21]{font-size:18px;font-weight:600;color:#1f2937;margin-bottom:8px}.module-desc[data-v-ba879b21]{font-size:13px;color:#6b7280}.coming-soon[data-v-ba879b21]{position:absolute;top:12px;right:-30px;background:#fbbf24;color:#92400e;font-size:10px;padding:4px 32px;transform:rotate(45deg);font-weight:600}.dashboard-footer[data-v-ba879b21]{text-align:center;margin-top:32px;color:#fffc}@media(max-width:640px){.dashboard-header[data-v-ba879b21]{flex-direction:column;gap:12px}.module-grid[data-v-ba879b21]{grid-template-columns:repeat(2,1fr)}.module-card[data-v-ba879b21]{padding:20px 16px}.module-icon[data-v-ba879b21]{font-size:36px}}.grade-view[data-v-c2677697]{min-height:100vh;background:#f5f7fa;padding-bottom:40px}.grade-header[data-v-c2677697]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;position:sticky;top:0;z-index:100}.grade-header .title[data-v-c2677697]{display:flex;align-items:center;gap:8px;font-size:20px;font-weight:600}.grade-header .icon[data-v-c2677697]{font-size:24px}.back-btn[data-v-c2677697],.logout-btn[data-v-c2677697]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.back-btn[data-v-c2677697]{background:#fff3;color:#fff}.back-btn[data-v-c2677697]:hover{background:#ffffff4d}.logout-btn[data-v-c2677697]{background:#ffffffe6;color:#764ba2}.user-info[data-v-c2677697]{display:flex;align-items:center;gap:12px}.filter-bar[data-v-c2677697]{background:#fff;padding:16px 20px;margin:16px 20px;border-radius:16px;box-shadow:0 2px 10px #0000000d}.filter-row[data-v-c2677697]{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.filter-row+.filter-row[data-v-c2677697]{margin-top:12px;padding-top:12px;border-top:1px solid #f3f4f6}.search-box[data-v-c2677697]{flex:1;min-width:200px;display:flex;align-items:center;background:#f5f7fa;border-radius:10px;padding:0 12px}.search-icon[data-v-c2677697]{margin-right:8px}.search-input[data-v-c2677697]{flex:1;border:none;background:transparent;padding:12px 0;font-size:14px;outline:none}.filter-select[data-v-c2677697]{padding:12px 16px;border:1px solid #e5e7eb;border-radius:10px;font-size:14px;min-width:140px;background:#fff;cursor:pointer}.filter-group[data-v-c2677697]{display:flex;align-items:center;gap:8px}.filter-group label[data-v-c2677697]:first-child{font-size:13px;color:#6b7280;white-space:nowrap}.radio-group[data-v-c2677697]{display:flex;gap:4px}.radio-label[data-v-c2677697]{padding:6px 12px;border-radius:8px;font-size:13px;cursor:pointer;background:#f3f4f6;transition:all .2s}.radio-label input[data-v-c2677697]{display:none}.radio-label.active[data-v-c2677697]{background:#667eea;color:#fff}.reset-btn[data-v-c2677697]{padding:8px 16px;background:#fee2e2;color:#dc2626;border:none;border-radius:8px;font-size:13px;cursor:pointer;transition:all .2s}.reset-btn[data-v-c2677697]:hover{background:#dc2626;color:#fff}.stats-row[data-v-c2677697]{display:flex;gap:12px;padding:0 20px;margin-bottom:16px}.stat-card[data-v-c2677697]{flex:1;background:#fff;border-radius:12px;padding:16px;text-align:center;box-shadow:0 2px 8px #0000000d}.stat-value[data-v-c2677697]{font-size:24px;font-weight:700;color:#667eea}.stat-label[data-v-c2677697]{font-size:12px;color:#6b7280;margin-top:4px}.grade-list[data-v-c2677697]{padding:0 20px}.term-group[data-v-c2677697]{margin-bottom:24px}.term-header[data-v-c2677697]{font-size:16px;font-weight:600;color:#374151;margin-bottom:12px}.grade-grid[data-v-c2677697]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.grade-card[data-v-c2677697]{background:#fff;border-radius:14px;padding:16px;cursor:pointer;transition:all .3s;box-shadow:0 2px 8px #0000000d;position:relative;overflow:hidden}.grade-card[data-v-c2677697]:before{content:"";position:absolute;top:0;left:0;right:0;height:4px}.grade-card.excellent[data-v-c2677697]:before{background:#10b981}.grade-card.good[data-v-c2677697]:before{background:#3b82f6}.grade-card.pass[data-v-c2677697]:before{background:#f59e0b}.grade-card.fail[data-v-c2677697]:before{background:#ef4444}.grade-card[data-v-c2677697]:hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000001f}.card-score[data-v-c2677697]{font-size:28px;font-weight:700;margin-bottom:8px}.grade-card.excellent .card-score[data-v-c2677697]{color:#10b981}.grade-card.good .card-score[data-v-c2677697]{color:#3b82f6}.grade-card.pass .card-score[data-v-c2677697]{color:#f59e0b}.grade-card.fail .card-score[data-v-c2677697]{color:#ef4444}.card-name[data-v-c2677697]{font-size:14px;font-weight:500;color:#1f2937;margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-meta[data-v-c2677697]{font-size:11px;color:#9ca3af;display:flex;gap:8px;margin-bottom:6px}.card-teacher[data-v-c2677697]{font-size:11px;color:#6b7280;background:#f3f4f6;padding:4px 8px;border-radius:6px;margin-top:8px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.no-results[data-v-c2677697]{text-align:center;padding:60px 20px;color:#6b7280}.empty-icon[data-v-c2677697]{font-size:64px;margin-bottom:16px}.no-results button[data-v-c2677697]{margin-top:16px;padding:12px 24px;background:#667eea;color:#fff;border:none;border-radius:10px;cursor:pointer}.modal-overlay[data-v-c2677697]{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content[data-v-c2677697]{background:#fff;border-radius:20px;padding:32px;max-width:480px;width:100%;position:relative;animation:slideUp-c2677697 .3s ease}@keyframes slideUp-c2677697{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-close[data-v-c2677697]{position:absolute;top:16px;right:16px;width:32px;height:32px;border:none;background:#f3f4f6;border-radius:50%;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center}.detail-header[data-v-c2677697]{text-align:center;margin-bottom:24px}.detail-score[data-v-c2677697]{font-size:48px;font-weight:700;margin-bottom:8px}.detail-score.excellent[data-v-c2677697]{color:#10b981}.detail-score.good[data-v-c2677697]{color:#3b82f6}.detail-score.pass[data-v-c2677697]{color:#f59e0b}.detail-score.fail[data-v-c2677697]{color:#ef4444}.detail-header h2[data-v-c2677697]{font-size:20px;color:#1f2937;margin:0}.detail-grid[data-v-c2677697]{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.detail-item[data-v-c2677697]{background:#f9fafb;padding:12px;border-radius:10px}.detail-item.full-width[data-v-c2677697]{grid-column:span 2}.detail-label[data-v-c2677697]{display:block;font-size:12px;color:#6b7280;margin-bottom:4px}.detail-value[data-v-c2677697]{font-size:15px;font-weight:500;color:#1f2937}@media(max-width:640px){.filter-row[data-v-c2677697]{flex-direction:column;align-items:stretch}.filter-group[data-v-c2677697]{width:100%;justify-content:space-between}.grade-grid[data-v-c2677697]{grid-template-columns:repeat(2,1fr)}.stats-row[data-v-c2677697]{flex-wrap:wrap}.stat-card[data-v-c2677697]{min-width:calc(33% - 8px)}}.offline-banner[data-v-c2677697]{margin:12px 0 0;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#b91c1c;border-radius:12px;font-weight:600}.elec-view[data-v-5a47d4be]{min-height:100vh;background:#f5f7fa}.elec-header[data-v-5a47d4be]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:linear-gradient(135deg,#e53e3e,#c53030);color:#fff}.elec-header .title[data-v-5a47d4be]{display:flex;align-items:center;gap:8px;font-size:20px;font-weight:600}.back-btn[data-v-5a47d4be],.logout-btn[data-v-5a47d4be]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;background:#fff3;color:#fff;transition:background .2s}.back-btn[data-v-5a47d4be]:hover,.logout-btn[data-v-5a47d4be]:hover{background:#ffffff4d}.content[data-v-5a47d4be]{padding:20px;max-width:600px;margin:0 auto}.selector-card[data-v-5a47d4be]{background:#fff;border-radius:16px;padding:20px;box-shadow:0 4px 12px #0000000d;margin-bottom:20px}.selector-card h3[data-v-5a47d4be]{margin:0 0 16px;font-size:16px;color:#2d3748}.select-group[data-v-5a47d4be]{display:grid;gap:12px}.modern-select[data-v-5a47d4be]{width:100%;padding:12px;border:1px solid #e2e8f0;border-radius:10px;font-size:14px;color:#4a5568;background-color:#fff;cursor:pointer;outline:none;transition:border-color .2s}.modern-select[data-v-5a47d4be]:focus{border-color:#e53e3e}.modern-select[data-v-5a47d4be]:disabled{background-color:#f7fafc;cursor:not-allowed;opacity:.7}.result-card[data-v-5a47d4be]{background:#fff;border-radius:16px;padding:24px;box-shadow:0 8px 24px #e53e3e1a;text-align:center;position:relative;overflow:hidden}.status-badge[data-v-5a47d4be]{position:absolute;top:16px;right:16px;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600}.status-badge.normal[data-v-5a47d4be]{background:#def7ec;color:#03543f}.status-badge.warning[data-v-5a47d4be]{background:#fde8e8;color:#9b1c1c}.balance-display[data-v-5a47d4be]{margin:20px 0}.balance-display .label[data-v-5a47d4be]{font-size:14px;color:#718096;margin-bottom:8px}.balance-display .value[data-v-5a47d4be]{font-size:42px;font-weight:700;color:#2d3748}.balance-display .value.low[data-v-5a47d4be]{color:#e53e3e}.balance-display .value small[data-v-5a47d4be]{font-size:16px;font-weight:500;color:#718096}.detail-row[data-v-5a47d4be]{display:flex;justify-content:center;gap:32px;margin-bottom:24px;padding-top:20px;border-top:1px solid #f0f0f0}.detail-item[data-v-5a47d4be]{display:flex;flex-direction:column;gap:4px}.d-label[data-v-5a47d4be]{font-size:12px;color:#a0aec0}.d-value[data-v-5a47d4be]{font-size:16px;font-weight:600;color:#4a5568}.refresh-btn[data-v-5a47d4be]{width:100%;padding:12px;background:#f7fafc;color:#4a5568;border:none;border-radius:10px;font-weight:600;cursor:pointer;transition:all .2s}.refresh-btn[data-v-5a47d4be]:hover{background:#edf2f7;transform:translateY(-2px)}.loading-state[data-v-5a47d4be],.empty-state[data-v-5a47d4be],.error-msg[data-v-5a47d4be]{text-align:center;padding:40px;color:#718096}.error-msg[data-v-5a47d4be]{color:#e53e3e;background:#fff5f5;border-radius:12px}.spinner[data-v-5a47d4be]{width:40px;height:40px;border:3px solid #f3f3f3;border-top:3px solid #e53e3e;border-radius:50%;margin:0 auto 16px;animation:spin-5a47d4be 1s linear infinite}@keyframes spin-5a47d4be{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.offline-banner[data-v-5a47d4be]{margin:12px 20px 0;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#b91c1c;border-radius:12px;font-weight:600}.classroom-view[data-v-d4119346]{min-height:100vh;background:#f0f2f5;padding-bottom:20px}.app-header[data-v-d4119346]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:linear-gradient(135deg,#10b981,#059669);color:#fff;position:sticky;top:0;z-index:100;box-shadow:0 4px 12px #10b98133}.title[data-v-d4119346]{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:600}.back-btn[data-v-d4119346],.logout-btn[data-v-d4119346]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.back-btn[data-v-d4119346]{background:#fff3;color:#fff}.back-btn[data-v-d4119346]:hover{background:#ffffff4d}.logout-btn[data-v-d4119346]{background:#ffffffe6;color:#059669;font-weight:600}.content-container[data-v-d4119346]{padding:16px;max-width:800px;margin:0 auto}.filter-card[data-v-d4119346]{background:#fff;border-radius:12px;padding:16px;box-shadow:0 2px 8px #0000000d;margin-bottom:16px}.filter-row[data-v-d4119346]{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.filter-item[data-v-d4119346]{flex:1;min-width:100px}.filter-item label[data-v-d4119346]{display:block;font-size:12px;color:#6b7280;margin-bottom:4px}select[data-v-d4119346],input[data-v-d4119346]{width:100%;padding:8px;border:1px solid #e5e7eb;border-radius:8px;font-size:14px;background:#fff}.periods-row[data-v-d4119346]{margin-top:12px;flex-direction:column;gap:8px;align-items:stretch}.periods-label[data-v-d4119346]{display:flex;justify-content:space-between;align-items:center}.periods-label label[data-v-d4119346]{font-size:12px;color:#6b7280}.quick-actions span[data-v-d4119346]{font-size:12px;color:#10b981;margin-left:12px;cursor:pointer}.periods-grid[data-v-d4119346]{display:flex;flex-wrap:wrap;gap:8px}.period-tag[data-v-d4119346]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid #e5e7eb;border-radius:8px;font-size:14px;color:#374151;cursor:pointer;transition:all .2s}.period-tag.active[data-v-d4119346]{background:#10b981;color:#fff;border-color:#10b981}.seats-input[data-v-d4119346]{flex:2}.input-group[data-v-d4119346]{display:flex;align-items:center;gap:8px}.input-group input[data-v-d4119346]{text-align:center}.query-btn[data-v-d4119346]{flex:1;min-width:120px;padding:10px;background:#10b981;color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;height:40px}.query-btn[data-v-d4119346]:disabled{opacity:.7;cursor:not-allowed}.empty-state[data-v-d4119346]{grid-column:1 / -1;text-align:center;padding:40px;color:#9ca3af}.empty-state .emoji[data-v-d4119346]{font-size:48px;margin-bottom:12px}.error-msg[data-v-d4119346]{background:#fee2e2;color:#dc2626;padding:12px;border-radius:8px;margin-bottom:16px;text-align:center;font-size:14px}.results-info[data-v-d4119346]{margin:16px 0;display:flex;justify-content:space-between;align-items:center;background:#fff;padding:12px 16px;border-radius:12px;box-shadow:0 2px 8px #00000008}.date-container[data-v-d4119346]{display:flex;flex-direction:column}.week-row[data-v-d4119346]{display:flex;gap:8px;align-items:center;margin-bottom:2px}.week-info[data-v-d4119346]{font-weight:600;color:#374151}.weekday[data-v-d4119346]{font-weight:600;color:#10b981}.date-row[data-v-d4119346]{font-size:13px;color:#6b7280}.semester-info[data-v-d4119346]{font-size:12px;color:#9ca3af;background:#f3f4f6;padding:4px 8px;border-radius:6px}.classroom-list[data-v-d4119346]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.room-card[data-v-d4119346]{background:#fff;border-radius:16px;padding:16px;box-shadow:0 4px 12px #0000000d;display:flex;flex-direction:column;justify-content:height;position:relative;overflow:hidden;border:1px solid #f0fdf4;transition:transform .2s}.room-card[data-v-d4119346]:active{transform:scale(.98)}.room-card[data-v-d4119346]:before{content:"";position:absolute;top:0;left:0;width:6px;height:100%;background:#10b981}.card-top[data-v-d4119346]{display:flex;justify-content:space-between;margin-bottom:8px}.room-seats[data-v-d4119346]{font-size:14px;font-weight:700;color:#059669;background:#ecfdf5;padding:2px 6px;border-radius:6px}.room-type[data-v-d4119346]{font-size:10px;color:#9ca3af;border:1px solid #e5e7eb;padding:1px 4px;border-radius:4px}.room-main[data-v-d4119346]{margin:8px 0}.room-name[data-v-d4119346]{font-size:18px;font-weight:800;color:#1f2937;line-height:1.2}.room-building[data-v-d4119346]{font-size:12px;color:#6b7280;margin-top:4px}.card-bottom[data-v-d4119346]{display:flex;justify-content:space-between;align-items:flex-end;margin-top:auto}.floor-tag[data-v-d4119346]{font-size:12px;color:#9ca3af;background:#f9fafb;padding:2px 6px;border-radius:4px}.status-tag[data-v-d4119346]{font-size:12px;font-weight:600}.status-tag.available[data-v-d4119346]{color:#10b981}.offline-banner[data-v-d4119346]{margin:12px 20px 0;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#b91c1c;border-radius:12px;font-weight:600}.schedule-view[data-v-7775ab5e]{height:100vh;display:flex;flex-direction:column;background:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;overflow:hidden}.schedule-header[data-v-7775ab5e]{height:50px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;flex-shrink:0}.back-btn[data-v-7775ab5e]{background:#fff3;border:none;color:#fff;padding:6px 12px;border-radius:6px;font-size:14px;cursor:pointer;transition:background .2s}.back-btn[data-v-7775ab5e]:hover{background:#ffffff4d}.schedule-header .title[data-v-7775ab5e]{display:flex;align-items:center;gap:6px;font-size:16px;font-weight:600}.schedule-header .icon[data-v-7775ab5e]{font-size:18px}.week-selector[data-v-7775ab5e]{position:relative;background:#fff3;padding:6px 12px;border-radius:12px}.week-selector select[data-v-7775ab5e]{appearance:none;border:none;background:transparent;font-size:14px;font-weight:600;color:#fff;padding-right:16px;outline:none;cursor:pointer}.week-selector select option[data-v-7775ab5e]{color:#333}.week-selector .arrow[data-v-7775ab5e]{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:10px;color:#fffc;pointer-events:none}.date-header[data-v-7775ab5e]{height:50px;display:flex;border-bottom:1px solid #f3f4f6;background:#fff;flex-shrink:0}.month-col[data-v-7775ab5e]{width:40px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:700;color:#1f2937;font-size:14px}.month-label[data-v-7775ab5e]{font-size:10px;font-weight:400;color:#6b7280}.days-row[data-v-7775ab5e]{flex:1;display:flex}.day-col[data-v-7775ab5e]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.day-col.is-today[data-v-7775ab5e]{background:#eff6ff;border-radius:0 0 12px 12px}.day-col.is-today .day-num[data-v-7775ab5e]{color:#2563eb;font-weight:700}.day-num[data-v-7775ab5e]{font-size:14px;color:#1f2937;font-weight:600}.day-label[data-v-7775ab5e]{font-size:10px;color:#6b7280;display:flex;flex-direction:column;align-items:center;line-height:1.1}.timetable-container[data-v-7775ab5e]{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.grid-body[data-v-7775ab5e]{flex:1;display:flex;overflow-y:auto;position:relative;scrollbar-width:none}.grid-body[data-v-7775ab5e]::-webkit-scrollbar{display:none}.time-axis[data-v-7775ab5e]{width:40px;background:#fff;display:flex;flex-direction:column}.time-slot[data-v-7775ab5e]{height:65px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10px;color:#9ca3af}.period-num[data-v-7775ab5e]{font-size:14px;font-weight:700;color:#374151;margin:2px 0}.courses-grid[data-v-7775ab5e]{flex:1;display:flex;position:relative}.grid-lines[data-v-7775ab5e]{position:absolute;inset:0;display:flex;flex-direction:column;pointer-events:none}.line-row[data-v-7775ab5e]{height:65px;border-bottom:1px dashed #f3f4f6;box-sizing:border-box}.day-column[data-v-7775ab5e]{flex:1;display:grid;grid-template-rows:repeat(11,65px);grid-template-columns:1fr;padding:0 2px;position:relative}.course-card[data-v-7775ab5e]{margin:2px;border-radius:6px;padding:6px 4px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;font-size:12px;overflow:hidden;cursor:pointer;transition:transform .1s,box-shadow .1s;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f;border:1px solid rgba(255,255,255,.5)}.course-card[data-v-7775ab5e]:active{transform:scale(.98);box-shadow:0 0 1px #0000001a}.course-name[data-v-7775ab5e]{font-weight:600;font-size:12px;margin-bottom:4px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.course-room[data-v-7775ab5e]{font-size:11px;opacity:.85;font-weight:500}.modal-overlay[data-v-7775ab5e]{position:fixed;inset:0;background:#0006;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content[data-v-7775ab5e]{background:#fff;width:80%;max-width:320px;border-radius:20px;padding:24px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.modal-header[data-v-7775ab5e]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.modal-header h3[data-v-7775ab5e]{font-size:18px;color:#111827;margin:0;line-height:1.4}.close-btn[data-v-7775ab5e]{background:#f3f4f6;border:none;width:28px;height:28px;border-radius:50%;color:#6b7280;font-size:16px;cursor:pointer}.info-row[data-v-7775ab5e]{display:flex;justify-content:space-between;margin-bottom:12px;border-bottom:1px solid #f9fafb;padding-bottom:8px}.info-row[data-v-7775ab5e]:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.info-row .label[data-v-7775ab5e]{color:#9ca3af;font-size:13px}.info-row .value[data-v-7775ab5e]{color:#374151;font-size:13px;font-weight:500;text-align:right;max-width:70%}.fade-enter-active[data-v-7775ab5e],.fade-leave-active[data-v-7775ab5e]{transition:opacity .2s}.fade-enter-from[data-v-7775ab5e],.fade-leave-to[data-v-7775ab5e]{opacity:0}.offline-banner[data-v-7775ab5e]{margin:12px 0 0;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#b91c1c;border-radius:12px;font-weight:600}.error-banner[data-v-7775ab5e]{margin:12px 0 0;padding:10px 14px;background:#ea580c1f;border:1px solid rgba(234,88,12,.3);color:#9a3412;border-radius:12px;font-weight:600}.jump-current-btn[data-v-7775ab5e]{position:fixed;right:16px;top:50%;transform:translateY(-50%);padding:10px 12px;border-radius:14px;border:none;background:#3b82f6d9;color:#fff;font-weight:600;font-size:12px;box-shadow:0 10px 24px #3b82f64d;cursor:pointer;z-index:12}.student-info-view[data-v-b170847c]{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.view-header[data-v-b170847c]{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#fffffff2;border-radius:16px;box-shadow:0 4px 20px #0000001a;margin-bottom:24px}.view-header h1[data-v-b170847c]{font-size:20px;margin:0;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.back-btn[data-v-b170847c],.logout-btn[data-v-b170847c]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.back-btn[data-v-b170847c]{background:#f0f4ff;color:#667eea}.back-btn[data-v-b170847c]:hover{background:#667eea;color:#fff}.logout-btn[data-v-b170847c]{background:#fee2e2;color:#dc2626}.logout-btn[data-v-b170847c]:hover{background:#dc2626;color:#fff}.view-content[data-v-b170847c]{max-width:600px;margin:0 auto}.loading-state[data-v-b170847c],.error-state[data-v-b170847c]{text-align:center;padding:60px 20px;background:#fff;border-radius:20px;color:#374151}.spinner[data-v-b170847c]{width:40px;height:40px;border:4px solid #e5e7eb;border-top-color:#667eea;border-radius:50%;animation:spin-b170847c 1s linear infinite;margin:0 auto 16px}@keyframes spin-b170847c{to{transform:rotate(360deg)}}.error-icon[data-v-b170847c]{font-size:48px;margin-bottom:16px}.error-state button[data-v-b170847c]{margin-top:16px;padding:10px 24px;background:#667eea;color:#fff;border:none;border-radius:8px;cursor:pointer}.info-card[data-v-b170847c]{background:#fff;border-radius:20px;padding:32px;box-shadow:0 4px 20px #0000001a}.offline-banner[data-v-b170847c]{margin:12px 0 0;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#b91c1c;border-radius:12px;font-weight:600}.avatar-section[data-v-b170847c]{text-align:center;margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid #e5e7eb}.avatar[data-v-b170847c]{width:80px;height:80px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:36px;font-weight:700;display:flex;align-items:center;justify-content:center;border-radius:50%;margin:0 auto 16px}.avatar-section h2[data-v-b170847c]{margin:0 0 8px;font-size:24px;color:#1f2937}.student-id-badge[data-v-b170847c]{display:inline-block;padding:6px 16px;background:#f0f4ff;color:#667eea;border-radius:20px;font-size:14px;font-weight:500}.info-grid[data-v-b170847c]{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.info-item[data-v-b170847c]{display:flex;flex-direction:column;padding:12px;background:#f9fafb;border-radius:12px}.info-item .label[data-v-b170847c]{font-size:12px;color:#6b7280;margin-bottom:4px}.info-item .value[data-v-b170847c]{font-size:15px;color:#1f2937;font-weight:500}@media(max-width:640px){.info-grid[data-v-b170847c]{grid-template-columns:1fr}.view-header h1[data-v-b170847c]{font-size:16px}}.exam-view[data-v-2b1c447a]{min-height:100vh;background:linear-gradient(135deg,#48bb78,#38a169);padding:20px}.view-header[data-v-2b1c447a]{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#fffffff2;border-radius:16px;box-shadow:0 4px 20px #0000001a;margin-bottom:16px}.view-header h1[data-v-2b1c447a]{font-size:20px;margin:0;color:#22543d}.back-btn[data-v-2b1c447a],.logout-btn[data-v-2b1c447a]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.back-btn[data-v-2b1c447a]{background:#c6f6d5;color:#22543d}.back-btn[data-v-2b1c447a]:hover{background:#48bb78;color:#fff}.logout-btn[data-v-2b1c447a]{background:#fee2e2;color:#dc2626}.logout-btn[data-v-2b1c447a]:hover{background:#dc2626;color:#fff}.semester-selector[data-v-2b1c447a]{background:#fffffff2;padding:16px 24px;border-radius:12px;margin-bottom:16px;display:flex;align-items:center;gap:12px}.semester-selector label[data-v-2b1c447a]{font-weight:500;color:#22543d}.semester-selector select[data-v-2b1c447a]{padding:10px 16px;border-radius:8px;border:2px solid #c6f6d5;font-size:14px;min-width:180px;cursor:pointer}.semester-selector select[data-v-2b1c447a]:focus{outline:none;border-color:#48bb78}.view-content[data-v-2b1c447a]{max-width:800px;margin:0 auto}.loading-state[data-v-2b1c447a],.error-state[data-v-2b1c447a],.empty-state[data-v-2b1c447a]{text-align:center;padding:60px 20px;background:#fff;border-radius:20px;color:#374151}.spinner[data-v-2b1c447a]{width:40px;height:40px;border:4px solid #e5e7eb;border-top-color:#48bb78;border-radius:50%;animation:spin-2b1c447a 1s linear infinite;margin:0 auto 16px}@keyframes spin-2b1c447a{to{transform:rotate(360deg)}}.error-icon[data-v-2b1c447a],.empty-icon[data-v-2b1c447a]{font-size:48px;margin-bottom:16px}.error-state button[data-v-2b1c447a]{margin-top:16px;padding:10px 24px;background:#48bb78;color:#fff;border:none;border-radius:8px;cursor:pointer}.exam-card.is-passed[data-v-2b1c447a]{background:#f3f4f6;opacity:.8;box-shadow:none;border:1px dashed #d1d5db}.exam-card.is-passed .course-name[data-v-2b1c447a]{color:#6b7280}.exam-card.is-passed .exam-type[data-v-2b1c447a]{background:#e5e7eb;color:#6b7280}.exam-status-badge[data-v-2b1c447a]{display:inline-block;padding:4px 10px;background:#9ca3af;color:#fff;border-radius:6px;font-size:12px;font-weight:500;margin-right:12px}.exam-list[data-v-2b1c447a]{display:flex;flex-direction:column;gap:16px}.exam-card[data-v-2b1c447a]{background:#fff;border-radius:16px;padding:20px;box-shadow:0 4px 15px #0000001a}.exam-header[data-v-2b1c447a]{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.exam-type[data-v-2b1c447a]{display:inline-block;padding:4px 10px;background:#c6f6d5;color:#22543d;border-radius:6px;font-size:12px;font-weight:500;margin-right:12px}.course-name[data-v-2b1c447a]{font-size:18px;font-weight:600;color:#1f2937}.exam-details[data-v-2b1c447a]{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.detail-item[data-v-2b1c447a]{display:flex;align-items:center;gap:8px;color:#4b5563;font-size:14px}.detail-item .icon[data-v-2b1c447a]{font-size:16px}@media(max-width:640px){.exam-details[data-v-2b1c447a]{grid-template-columns:1fr}.semester-selector[data-v-2b1c447a]{flex-direction:column;align-items:flex-start}.semester-selector select[data-v-2b1c447a]{width:100%}}.offline-banner[data-v-2b1c447a]{margin:12px 0 0;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#b91c1c;border-radius:12px;font-weight:600}.ranking-view[data-v-bf688319]{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.view-header[data-v-bf688319]{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#fffffff2;border-radius:16px;box-shadow:0 4px 20px #0000001a;margin-bottom:16px}.view-header h1[data-v-bf688319]{font-size:20px;margin:0;color:#1f2937}.back-btn[data-v-bf688319],.logout-btn[data-v-bf688319]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.back-btn[data-v-bf688319]{background:#f0f4ff;color:#667eea}.back-btn[data-v-bf688319]:hover{background:#667eea;color:#fff}.logout-btn[data-v-bf688319]{background:#fee2e2;color:#dc2626}.logout-btn[data-v-bf688319]:hover{background:#dc2626;color:#fff}.semester-selector[data-v-bf688319]{background:#fffffff2;padding:16px 24px;border-radius:12px;margin-bottom:16px;display:flex;align-items:center;gap:12px}.semester-selector .label[data-v-bf688319]{font-weight:500;color:#374151}.semester-selector select[data-v-bf688319]{padding:10px 16px;border-radius:8px;border:2px solid #e5e7eb;font-size:14px;min-width:160px;cursor:pointer}.semester-selector select[data-v-bf688319]:focus{outline:none;border-color:#667eea}.search-btn[data-v-bf688319]{padding:10px 20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:500;transition:transform .2s}.search-btn[data-v-bf688319]:hover{transform:scale(1.02)}.view-content[data-v-bf688319]{max-width:900px;margin:0 auto}.loading-state[data-v-bf688319],.error-state[data-v-bf688319],.empty-state[data-v-bf688319]{text-align:center;padding:60px 20px;background:#fff;border-radius:20px;color:#374151}.spinner[data-v-bf688319]{width:40px;height:40px;border:4px solid #e5e7eb;border-top-color:#667eea;border-radius:50%;animation:spin-bf688319 1s linear infinite;margin:0 auto 16px}@keyframes spin-bf688319{to{transform:rotate(360deg)}}.error-icon[data-v-bf688319],.empty-icon[data-v-bf688319]{font-size:48px;margin-bottom:16px}.error-state button[data-v-bf688319]{margin-top:16px;padding:10px 24px;background:#667eea;color:#fff;border:none;border-radius:8px;cursor:pointer}.hint[data-v-bf688319]{font-size:14px;color:#9ca3af;margin-top:8px}.ranking-card[data-v-bf688319]{background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 4px 20px #0000001a}.student-info[data-v-bf688319]{padding:24px;background:linear-gradient(135deg,#e0e7ff,#c7d2fe);border-bottom:1px solid #c7d2fe}.info-row[data-v-bf688319]{display:flex;flex-wrap:wrap;gap:24px;margin-bottom:12px}.info-row[data-v-bf688319]:last-child{margin-bottom:0}.info-row.highlight[data-v-bf688319]{margin-top:16px;padding-top:16px;border-top:1px dashed #a5b4fc}.info-item[data-v-bf688319]{font-size:15px;color:#374151}.info-item strong[data-v-bf688319]{color:#1e40af}.info-item .score[data-v-bf688319]{font-size:18px;font-weight:700;color:#7c3aed}.info-item .gpa-badge[data-v-bf688319]{display:inline-block;padding:6px 16px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:8px;font-size:20px;font-weight:800;box-shadow:0 4px 12px #667eea66;margin-left:4px}.ranking-table-wrapper[data-v-bf688319]{padding:24px;overflow-x:auto}.ranking-table[data-v-bf688319]{width:100%;border-collapse:collapse;text-align:center}.ranking-table th[data-v-bf688319]{background:#3b82f6;color:#fff;padding:14px 16px;font-weight:600;font-size:14px}.ranking-table th[data-v-bf688319]:first-child{border-radius:8px 0 0}.ranking-table th[data-v-bf688319]:last-child{border-radius:0 8px 0 0}.ranking-table td[data-v-bf688319]{padding:16px;border-bottom:1px solid #e5e7eb}.method-name[data-v-bf688319]{text-align:left;font-weight:500;color:#374151;background:#f9fafb}.method-name.bold[data-v-bf688319]{font-weight:700;color:#1f2937}.rank-cell[data-v-bf688319]{font-size:16px}.rank-value[data-v-bf688319]{display:inline-block;padding:6px 12px;background:#f0f9ff;color:#0369a1;border-radius:6px;font-weight:500}.rank-value.highlight-rank[data-v-bf688319]{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e;font-weight:700;border:2px solid #fcd34d}.class-highlight[data-v-bf688319]{padding:20px 24px;background:linear-gradient(135deg,#fef3c7,#fde68a);display:flex;justify-content:center}.highlight-badge[data-v-bf688319]{font-size:18px;font-weight:600;color:#92400e}.big-rank[data-v-bf688319]{font-size:32px;font-weight:800;color:#d97706;margin:0 4px}@media(max-width:640px){.info-row[data-v-bf688319]{flex-direction:column;gap:8px}.semester-selector[data-v-bf688319]{flex-direction:column;align-items:flex-start;gap:12px}.semester-selector select[data-v-bf688319],.search-btn[data-v-bf688319]{width:100%}.ranking-table th[data-v-bf688319],.ranking-table td[data-v-bf688319]{padding:10px 8px;font-size:13px}.rank-value[data-v-bf688319]{padding:4px 8px;font-size:13px}.big-rank[data-v-bf688319]{font-size:24px}}.offline-banner[data-v-bf688319]{margin:12px 0 0;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#b91c1c;border-radius:12px;font-weight:600}.calendar-view[data-v-e1057868]{min-height:100vh;background:#f5f7fa}.view-header[data-v-e1057868]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,#6366f1,#3b82f6);color:#fff}.back-btn[data-v-e1057868],.logout-btn[data-v-e1057868]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;background:#fff3;color:#fff}.controls[data-v-e1057868]{display:flex;flex-direction:column;gap:10px;padding:16px 20px;background:#fff}.controls select[data-v-e1057868]{padding:8px 10px;border-radius:8px;border:1px solid #e5e7eb}.meta[data-v-e1057868]{display:flex;flex-wrap:wrap;gap:12px;color:#4b5563;font-size:13px}.loading[data-v-e1057868],.error[data-v-e1057868]{padding:20px;text-align:center;color:#6b7280}.calendar-table-wrapper[data-v-e1057868]{padding:0 16px 24px;overflow-x:auto}.calendar-table[data-v-e1057868]{width:100%;min-width:980px;border-collapse:collapse;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 4px 18px #00000014}.calendar-table thead th[data-v-e1057868]{background:#eef2ff;color:#1f2937;font-weight:700;padding:12px 8px;border-bottom:1px solid #e5e7eb;font-size:13px;text-align:center}.calendar-table td[data-v-e1057868]{border-bottom:1px solid #f3f4f6;border-right:1px solid #f3f4f6;padding:8px 6px;text-align:center;vertical-align:middle;font-size:12px;color:#374151}.calendar-table tbody tr.is-current[data-v-e1057868]{background:#eff6ff}.month-col[data-v-e1057868],.week-col[data-v-e1057868]{width:80px}.remark-col[data-v-e1057868]{width:120px}.month-cell[data-v-e1057868]{font-weight:600;color:#1f2937;background:#f8fafc}.week-cell[data-v-e1057868]{font-weight:600;color:#2563eb}.day-cell[data-v-e1057868]{min-width:90px}.day-num[data-v-e1057868]{font-weight:600;color:#111827}.day-remark[data-v-e1057868]{margin-top:4px;font-size:11px;color:#ef4444}.day-remark.holiday[data-v-e1057868]{display:inline-block;padding:2px 6px;border-radius:999px;background:#fee2e2;color:#b91c1c;font-weight:600}.remark-cell[data-v-e1057868]{color:#6b7280;font-size:12px}.offline-banner[data-v-e1057868]{margin:12px 0 0;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#b91c1c;border-radius:12px;font-weight:600}.tree-node[data-v-aa5efdb9]{border-left:2px solid #e5e7eb;padding-left:12px;margin:8px 0}summary[data-v-aa5efdb9]{list-style:none;cursor:pointer}summary[data-v-aa5efdb9]::-webkit-details-marker{display:none}.node-title[data-v-aa5efdb9]{display:flex;justify-content:space-between;gap:8px;font-weight:600;color:#111827}.node-require[data-v-aa5efdb9]{margin-top:4px;font-size:12px;color:#6b7280}.node-body[data-v-aa5efdb9]{padding:8px 0 4px}.course-list[data-v-aa5efdb9]{background:#f9fafb;border-radius:8px;padding:8px;margin-bottom:8px}.course-item[data-v-aa5efdb9]{padding:6px 4px;border-bottom:1px dashed #e5e7eb}.course-item[data-v-aa5efdb9]:last-child{border-bottom:none}.course-name[data-v-aa5efdb9]{font-weight:600;color:#111827}.course-meta[data-v-aa5efdb9]{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:#6b7280}.children[data-v-aa5efdb9]{margin-top:8px}.progress-view[data-v-251a2c7c]{min-height:100vh;background:#f5f7fa}.view-header[data-v-251a2c7c]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,#10b981,#06b6d4);color:#fff}.back-btn[data-v-251a2c7c],.logout-btn[data-v-251a2c7c]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;background:#fff3;color:#fff}.controls[data-v-251a2c7c]{display:flex;gap:8px;align-items:center;padding:16px 20px;background:#fff}.controls select[data-v-251a2c7c]{padding:8px 10px;border-radius:8px;border:1px solid #e5e7eb}.loading[data-v-251a2c7c],.error[data-v-251a2c7c]{padding:20px;text-align:center;color:#6b7280}.content[data-v-251a2c7c]{padding:16px 20px 28px}.summary-card[data-v-251a2c7c]{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;background:#fff;border-radius:12px;padding:14px;box-shadow:0 4px 12px #0000000f;margin-bottom:16px}.summary-item[data-v-251a2c7c]{font-size:13px;color:#374151;background:#f3f4f6;padding:8px 10px;border-radius:8px}.offline-banner[data-v-251a2c7c]{margin:12px 20px 0;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#b91c1c;border-radius:12px;font-weight:600}.tree-section[data-v-251a2c7c]{background:#fff;border-radius:12px;padding:12px 16px;box-shadow:0 4px 12px #0000000f}.training-plan-view[data-v-a44581ab]{min-height:100vh;background:#f5f7fa}.view-header[data-v-a44581ab]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,#6366f1,#3b82f6);color:#fff}.back-btn[data-v-a44581ab],.logout-btn[data-v-a44581ab]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;background:#fff3;color:#fff}.filters[data-v-a44581ab]{background:#fff;margin:16px;padding:16px;border-radius:12px;box-shadow:0 2px 12px #0000000f}.filter-grid[data-v-a44581ab]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px 16px}.filter-grid label[data-v-a44581ab]{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#374151}.filter-grid select[data-v-a44581ab],.filter-grid input[data-v-a44581ab]{padding:8px 10px;border-radius:8px;border:1px solid #e5e7eb;font-size:13px}.filter-actions[data-v-a44581ab]{display:flex;gap:12px;margin-top:12px}.filter-actions button[data-v-a44581ab]{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;font-weight:600}.filter-actions .primary[data-v-a44581ab]{background:#2563eb;color:#fff}.filter-actions .ghost[data-v-a44581ab]{background:#f3f4f6;color:#374151}.content[data-v-a44581ab]{padding:0 16px 24px}.state[data-v-a44581ab]{padding:16px;color:#6b7280}.state.error[data-v-a44581ab]{color:#dc2626}.course-grid[data-v-a44581ab]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.course-card[data-v-a44581ab]{background:#fff;border-radius:16px;padding:16px;box-shadow:0 4px 16px #0f172a14;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.course-card[data-v-a44581ab]:hover{transform:translateY(-4px);box-shadow:0 10px 24px #0f172a1f}.course-title[data-v-a44581ab]{font-size:16px;font-weight:700;color:#0f172a;margin-bottom:10px}.course-tags[data-v-a44581ab]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.tag[data-v-a44581ab]{font-size:12px;padding:4px 10px;border-radius:999px;background:#f1f5f9;color:#475569;font-weight:600}.tag.primary[data-v-a44581ab]{background:#3b82f626;color:#1d4ed8}.tag.ghost[data-v-a44581ab]{background:#10b9811f;color:#047857}.course-sub[data-v-a44581ab]{display:flex;justify-content:space-between;color:#94a3b8;font-size:12px;font-weight:600}.empty[data-v-a44581ab]{text-align:center;color:#9ca3af;padding:20px}.pagination[data-v-a44581ab]{margin-top:12px;display:flex;align-items:center;gap:12px}.pagination button[data-v-a44581ab]{padding:6px 12px;border-radius:6px;border:1px solid #e5e7eb;background:#fff;cursor:pointer}.pagination button[data-v-a44581ab]:disabled{opacity:.5;cursor:not-allowed}.modal-overlay[data-v-a44581ab]{position:fixed;inset:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:30;padding:20px}.modal-content[data-v-a44581ab]{background:#fff;border-radius:16px;width:min(520px,100%);padding:20px;box-shadow:0 16px 30px #0f172a33}.modal-header[data-v-a44581ab]{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.modal-header h3[data-v-a44581ab]{margin:0;font-size:18px;color:#0f172a}.close-btn[data-v-a44581ab]{width:28px;height:28px;border-radius:50%;border:none;background:#f1f5f9;color:#64748b;font-size:18px;cursor:pointer}.modal-body[data-v-a44581ab]{display:grid;gap:12px}.detail-item[data-v-a44581ab]{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:#334155;border-bottom:1px solid #f1f5f9;padding-bottom:8px}.detail-item .label[data-v-a44581ab]{color:#94a3b8}.detail-item .value[data-v-a44581ab]{font-weight:600;text-align:right}.offline-banner[data-v-a44581ab]{margin:12px 16px 0;padding:10px 14px;background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#b91c1c;border-radius:12px;font-weight:600}.login-container[data-v-33904fa3]{max-width:450px;margin:2rem auto;padding:2.5rem;text-align:center}.logo[data-v-33904fa3]{font-size:4rem;margin-bottom:1rem;animation:bounce-33904fa3 2s infinite}@keyframes bounce-33904fa3{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}h2[data-v-33904fa3]{color:var(--primary-color);margin-bottom:.5rem}.subtitle[data-v-33904fa3]{color:#666;font-size:.9rem;margin-bottom:2rem}.form-container[data-v-33904fa3]{margin-top:1.5rem}.input-group[data-v-33904fa3]{text-align:left;margin-bottom:1.2rem}.input-group label[data-v-33904fa3]{display:block;margin-bottom:.5rem;font-weight:600;color:var(--text-color)}.input-group input[data-v-33904fa3]{width:100%;padding:.75rem;border:2px solid #e5e7eb;border-radius:8px;font-size:1rem;transition:all .3s}.input-group input[data-v-33904fa3]:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f11a}.checkbox-group[data-v-33904fa3]{display:flex;justify-content:center;margin-bottom:2rem}.checkbox-group.agreement[data-v-33904fa3]{margin-top:-1rem;margin-bottom:1.5rem;justify-content:flex-start}.checkbox-label[data-v-33904fa3]{display:flex;align-items:center;cursor:pointer;font-size:.95rem;color:#4b5563;-webkit-user-select:none;user-select:none;transition:all .2s}.checkbox-label[data-v-33904fa3]:hover{color:var(--primary-color)}.link-btn[data-v-33904fa3]{background:none;border:none;color:var(--primary-color);cursor:pointer;font-weight:600;padding:0 2px}.link-btn[data-v-33904fa3]:hover{text-decoration:underline}.real-checkbox[data-v-33904fa3]{display:none}.custom-checkbox[data-v-33904fa3]{width:20px;height:20px;border:2px solid #d1d5db;border-radius:6px;margin-right:10px;display:inline-flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);background:#fff;position:relative}.real-checkbox:checked+.custom-checkbox[data-v-33904fa3]{background:var(--primary-color);border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f133}.custom-checkbox[data-v-33904fa3]:after{content:"✓";color:#fff;font-size:14px;font-weight:700;opacity:0;transform:scale(.5);transition:all .2s cubic-bezier(.4,0,.2,1)}.real-checkbox:checked+.custom-checkbox[data-v-33904fa3]:after{opacity:1;transform:scale(1)}.login-btn[data-v-33904fa3]{width:100%;padding:1rem;background:linear-gradient(135deg,#6366f1,#a855f7);color:#fff;border:none;border-radius:14px;font-size:1.15rem;font-weight:700;cursor:pointer;transition:all .3s;box-shadow:0 10px 25px #6366f14d;display:flex;align-items:center;justify-content:center;gap:10px}.login-btn[data-v-33904fa3]:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #6366f199}.login-btn[data-v-33904fa3]:disabled{opacity:.6;cursor:not-allowed}.progress-container[data-v-33904fa3]{padding:2rem;text-align:center}.loading-spinner[data-v-33904fa3]{display:flex;justify-content:center;margin-bottom:1.5rem}.spinner[data-v-33904fa3]{width:50px;height:50px;border:4px solid #f3f3f3;border-top:4px solid var(--primary-color);border-radius:50%;animation:spin-33904fa3 1s linear infinite}@keyframes spin-33904fa3{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.status-msg[data-v-33904fa3]{margin-top:1rem;font-size:.95rem;color:var(--text-color);animation:fadeIn-33904fa3 .5s}.status-msg.error[data-v-33904fa3]{color:#dc2626;font-weight:600}@keyframes fadeIn-33904fa3{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.help-section[data-v-33904fa3]{margin-top:2rem;padding-top:1.5rem;border-top:1px solid #e5e7eb}.help-text[data-v-33904fa3]{font-size:.85rem;color:#666;margin:.5rem 0}.help-text a[data-v-33904fa3]{color:var(--primary-color);text-decoration:none;font-weight:600}.help-text a[data-v-33904fa3]:hover{text-decoration:underline}@media(max-width:480px){.login-container[data-v-33904fa3]{padding:1.5rem}.logo[data-v-33904fa3]{font-size:3rem}h2[data-v-33904fa3]{font-size:1.5rem}}.login-container[data-v-67da8e0c]{max-width:450px;margin:2rem auto;padding:2.5rem;text-align:center}.logo[data-v-67da8e0c]{font-size:4rem;margin-bottom:1rem;animation:bounce-67da8e0c 2s infinite}@keyframes bounce-67da8e0c{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}h2[data-v-67da8e0c]{color:var(--primary-color);margin-bottom:.5rem}.subtitle[data-v-67da8e0c]{color:#666;font-size:.9rem;margin-bottom:2rem}.form-container[data-v-67da8e0c]{margin-top:1.5rem}.input-group[data-v-67da8e0c]{text-align:left;margin-bottom:1.2rem}.input-group label[data-v-67da8e0c]{display:block;margin-bottom:.5rem;font-weight:600;color:var(--text-color)}.input-group input[data-v-67da8e0c]{width:100%;padding:.75rem;border:2px solid #e5e7eb;border-radius:8px;font-size:1rem;transition:all .3s;box-sizing:border-box}.input-group input[data-v-67da8e0c]:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f11a;outline:none}.captcha-group[data-v-67da8e0c]{text-align:left;margin-bottom:1.2rem}.captcha-group label[data-v-67da8e0c]{display:block;margin-bottom:.5rem;font-weight:600;color:var(--text-color)}.captcha-row[data-v-67da8e0c]{display:flex;gap:8px;align-items:center}.captcha-input[data-v-67da8e0c]{flex:1;padding:.75rem;border:2px solid #e5e7eb;border-radius:8px;font-size:1.2rem;text-transform:uppercase;letter-spacing:4px;text-align:center}.captcha-input[data-v-67da8e0c]:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f11a;outline:none}.captcha-img-container[data-v-67da8e0c]{width:120px;height:48px;border:2px solid #e5e7eb;border-radius:8px;overflow:hidden;cursor:pointer;display:flex;align-items:center;justify-content:center;background:#f9fafb}.captcha-img[data-v-67da8e0c]{width:100%;height:100%;object-fit:contain}.captcha-loading[data-v-67da8e0c],.captcha-placeholder[data-v-67da8e0c]{font-size:.8rem;color:#666}.refresh-btn[data-v-67da8e0c]{padding:.75rem;border:2px solid #e5e7eb;border-radius:8px;background:#fff;cursor:pointer;font-size:1.2rem;transition:all .2s}.refresh-btn[data-v-67da8e0c]:hover{background:#f3f4f6}.refresh-btn[data-v-67da8e0c]:disabled{opacity:.5;cursor:not-allowed}.checkbox-group[data-v-67da8e0c]{display:flex;justify-content:center;margin-bottom:2rem}.checkbox-group.agreement[data-v-67da8e0c]{margin-top:-1rem;margin-bottom:1.5rem;justify-content:flex-start}.checkbox-label[data-v-67da8e0c]{display:flex;align-items:center;cursor:pointer;font-size:.95rem;color:#4b5563;-webkit-user-select:none;user-select:none;transition:all .2s}.checkbox-label[data-v-67da8e0c]:hover{color:var(--primary-color)}.link-btn[data-v-67da8e0c]{background:none;border:none;color:var(--primary-color);cursor:pointer;font-weight:600;padding:0 2px}.link-btn[data-v-67da8e0c]:hover{text-decoration:underline}.real-checkbox[data-v-67da8e0c]{display:none}.custom-checkbox[data-v-67da8e0c]{width:20px;height:20px;border:2px solid #d1d5db;border-radius:6px;margin-right:10px;display:inline-flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);background:#fff;position:relative}.real-checkbox:checked+.custom-checkbox[data-v-67da8e0c]{background:var(--primary-color);border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f133}.custom-checkbox[data-v-67da8e0c]:after{content:"✓";color:#fff;font-size:14px;font-weight:700;opacity:0;transform:scale(.5);transition:all .2s cubic-bezier(.4,0,.2,1)}.real-checkbox:checked+.custom-checkbox[data-v-67da8e0c]:after{opacity:1;transform:scale(1)}.login-btn[data-v-67da8e0c]{width:100%;padding:1rem;background:linear-gradient(135deg,#6366f1,#a855f7);color:#fff;border:none;border-radius:14px;font-size:1.15rem;font-weight:700;cursor:pointer;transition:all .3s;box-shadow:0 10px 25px #6366f14d;display:flex;align-items:center;justify-content:center;gap:10px}.login-btn[data-v-67da8e0c]:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #6366f199}.login-btn[data-v-67da8e0c]:disabled{opacity:.6;cursor:not-allowed}.progress-container[data-v-67da8e0c]{padding:2rem;text-align:center}.loading-spinner[data-v-67da8e0c]{display:flex;justify-content:center;margin-bottom:1.5rem}.spinner[data-v-67da8e0c]{width:50px;height:50px;border:4px solid #f3f3f3;border-top:4px solid var(--primary-color);border-radius:50%;animation:spin-67da8e0c 1s linear infinite}@keyframes spin-67da8e0c{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.status-msg[data-v-67da8e0c]{margin-top:1rem;font-size:.95rem;color:var(--text-color);animation:fadeIn-67da8e0c .5s}.status-msg.error[data-v-67da8e0c]{color:#dc2626;font-weight:600}@keyframes fadeIn-67da8e0c{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.mode-switch[data-v-67da8e0c]{margin-top:1rem}.switch-btn[data-v-67da8e0c]{background:none;border:none;color:var(--primary-color);cursor:pointer;font-size:.9rem;padding:.5rem}.switch-btn[data-v-67da8e0c]:hover{text-decoration:underline}.help-section[data-v-67da8e0c]{margin-top:2rem;padding-top:1.5rem;border-top:1px solid #e5e7eb}.help-text[data-v-67da8e0c]{font-size:.85rem;color:#666;margin:.5rem 0}.help-text a[data-v-67da8e0c]{color:var(--primary-color);text-decoration:none;font-weight:600}.help-text a[data-v-67da8e0c]:hover{text-decoration:underline}@media(max-width:480px){.login-container[data-v-67da8e0c]{padding:1.5rem}.logo[data-v-67da8e0c]{font-size:3rem}h2[data-v-67da8e0c]{font-size:1.5rem}.captcha-row[data-v-67da8e0c]{flex-wrap:wrap}.captcha-input[data-v-67da8e0c]{width:100%;margin-bottom:8px}}.me-view[data-v-e85e99d0]{min-height:100vh;padding:20px 20px 110px;background:linear-gradient(135deg,#7c3aed,#6366f1 55%,#22d3ee)}.me-hero[data-v-e85e99d0]{margin-bottom:20px}.hero-card[data-v-e85e99d0]{display:flex;align-items:center;gap:16px;padding:18px 20px;border-radius:20px;background:#ffffffd9;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 12px 30px #00000026}.avatar[data-v-e85e99d0]{width:52px;height:52px;display:grid;place-items:center;border-radius:16px;background:#6366f126;font-size:28px}.hero-info h2[data-v-e85e99d0]{margin:0 0 6px;font-size:20px;font-weight:700;color:#1f2937}.hero-info p[data-v-e85e99d0]{margin:0;color:#475569;font-weight:600}.me-content[data-v-e85e99d0]{padding:20px}.me-row[data-v-e85e99d0]{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid rgba(148,163,184,.2);font-size:15px}.me-row .label[data-v-e85e99d0]{color:#64748b}.me-row .value[data-v-e85e99d0]{font-weight:600;color:#0f172a}.me-actions[data-v-e85e99d0]{display:flex;gap:12px;margin-top:18px}.me-actions button[data-v-e85e99d0]{flex:1;padding:10px 14px;border:none;border-radius:12px;font-weight:600;cursor:pointer}.me-actions .primary[data-v-e85e99d0]{background:#6366f1;color:#fff}.me-actions .danger[data-v-e85e99d0]{background:#ef4444;color:#fff}.legal-section[data-v-e85e99d0]{margin-top:20px;padding:20px}.legal-title[data-v-e85e99d0]{margin:0 0 12px;font-size:18px;font-weight:700;color:#0f172a}.legal-tabs[data-v-e85e99d0]{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px}.legal-tab[data-v-e85e99d0]{padding:10px 12px;border:1px solid rgba(99,102,241,.2);border-radius:12px;background:#6366f114;color:#1e293b;font-weight:600;cursor:pointer}.legal-tab.active[data-v-e85e99d0]{background:#6366f1;color:#fff;border-color:#6366f1}.legal-content[data-v-e85e99d0]{color:#334155;line-height:1.7;font-size:14px}.legal-content ul[data-v-e85e99d0]{margin:8px 0 0 18px;padding:0}.legal-content li[data-v-e85e99d0]{margin:6px 0}.fade-enter-active[data-v-d82b562d],.fade-leave-active[data-v-d82b562d]{transition:opacity .3s ease}.fade-enter-from[data-v-d82b562d],.fade-leave-to[data-v-d82b562d]{opacity:0}.coming-soon-page[data-v-d82b562d]{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center}.coming-soon-content[data-v-d82b562d]{text-align:center;color:#fff}.coming-soon-content .emoji[data-v-d82b562d]{font-size:80px;margin-bottom:20px}.coming-soon-content h2[data-v-d82b562d]{font-size:28px;margin-bottom:12px}.coming-soon-content p[data-v-d82b562d]{opacity:.8;margin-bottom:24px}.coming-soon-content button[data-v-d82b562d]{padding:12px 32px;background:#fff;color:#667eea;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s}.coming-soon-content button[data-v-d82b562d]:hover{transform:scale(1.05)}.app-shell[data-v-d82b562d]{min-height:100vh;position:relative;padding-bottom:90px;height:100vh;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.tab-bar[data-v-d82b562d]{position:fixed;left:50%;bottom:16px;transform:translate(-50%);display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 16px;width:min(520px,calc(100% - 32px));border-radius:18px;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffbf;border:1px solid rgba(255,255,255,.35);box-shadow:0 10px 30px #00000026;z-index:10}.tab-item[data-v-d82b562d]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px 6px;border:none;background:transparent;color:#475569;font-size:12px;border-radius:12px;cursor:pointer;transition:all .2s ease}.tab-item.active[data-v-d82b562d]{color:#1d4ed8;background:#3b82f61f}.tab-icon[data-v-d82b562d]{font-size:18px}.login-mask[data-v-d82b562d]{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#0f172a73;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:20}.login-mask-card[data-v-d82b562d]{padding:16px 24px;background:#ffffffd9;border-radius:16px;font-weight:600;color:#0f172a;box-shadow:0 10px 30px #0003}
