.global-message-container[data-v-af487688]{position:fixed;right:24px;bottom:24px;z-index:2000;display:flex;flex-direction:column;gap:8px;pointer-events:none}.global-message[data-v-af487688]{min-width:220px;max-width:360px;padding:10px 14px;border-radius:10px;box-shadow:0 4px 10px #0f172a26;font-size:14px;display:flex;align-items:center;pointer-events:auto}.global-message--success[data-v-af487688]{background:#ecfdf3;color:#166534;border:1px solid #bbf7d0}.global-message--error[data-v-af487688]{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.global-message__content[data-v-af487688]{word-break:break-word}.msg-fade-enter-active[data-v-af487688],.msg-fade-leave-active[data-v-af487688]{transition:all .2s ease}.msg-fade-enter-from[data-v-af487688],.msg-fade-leave-to[data-v-af487688]{opacity:0;transform:translateY(10px)}.layout[data-v-8324fd52]{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto}.site-header[data-v-8324fd52]{position:sticky;top:0;z-index:100;background:#fff;border-bottom:1px solid #e5e7eb;padding:16px 32px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 3px #0000000d}.brand[data-v-8324fd52]{display:flex;align-items:center;gap:12px;font-weight:700;font-size:20px}.brand img[data-v-8324fd52]{width:40px;height:40px;border-radius:8px}.site-nav[data-v-8324fd52]{display:flex;align-items:center;gap:24px}.nav-link[data-v-8324fd52]{color:#334155;text-decoration:none;font-weight:600;font-size:16px;padding:8px 12px;border-radius:8px;transition:all .2s;position:relative}.nav-link[data-v-8324fd52]:hover{color:#2563eb;background:#f1f5f9}.nav-link.active[data-v-8324fd52]{color:#2563eb;background:#eff6ff}.nav-actions[data-v-8324fd52]{display:flex;align-items:center;gap:16px;position:relative}.announcement-scroll[data-v-8324fd52]{width:200px;height:40px;overflow:hidden;position:relative;border-radius:8px;background:#fff}.announcement-scroll-wrapper[data-v-8324fd52]{height:100%;cursor:pointer}.announcement-list[data-v-8324fd52]{transition:transform .5s ease-in-out;height:100%}.announcement-item[data-v-8324fd52]{height:40px;line-height:40px;padding:0 12px;color:#2563eb;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;text-decoration:underline}.announcement-item[data-v-8324fd52]:hover{background:#eef2ff}.notification-dropdown[data-v-8324fd52]{position:relative}.notification-trigger[data-v-8324fd52]{display:flex;align-items:center;gap:6px;height:40px;padding:0 12px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;color:#334155;font-size:15px;cursor:pointer;transition:all .2s;position:relative}.notification-trigger[data-v-8324fd52]:hover{background:#f8fafc;border-color:#cbd5e1}.notification-text[data-v-8324fd52]{color:#64748b}.notification-badge[data-v-8324fd52]{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;border-radius:9px;background:#ef4444;color:#fff;font-size:12px;font-weight:600;line-height:1}.chevron-icon[data-v-8324fd52]{width:16px;height:16px;color:#64748b}.notification-dropdown-menu[data-v-8324fd52]{position:absolute;top:calc(100% + 2px);right:0;width:320px;max-height:400px;overflow-y:auto;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;z-index:1000}.notification-dropdown-header[data-v-8324fd52]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #f1f5f9}.notification-dropdown-title[data-v-8324fd52]{color:#0f172a;font-weight:600}.notification-dropdown-menu[data-v-8324fd52]:before{content:"";position:absolute;top:-2px;left:0;right:0;height:2px;background:transparent}.notification-empty[data-v-8324fd52]{padding:24px;text-align:center;color:#94a3b8;font-size:14px}.notification-item[data-v-8324fd52]{padding:12px 16px;border-bottom:1px solid #f1f5f9;cursor:pointer;transition:background .2s}.notification-item[data-v-8324fd52]:last-child{border-bottom:none}.notification-item[data-v-8324fd52]:hover{background:#f8fafc}.notification-item-title[data-v-8324fd52]{color:#334155;font-size:14px;font-weight:500;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification-item-time[data-v-8324fd52]{color:#94a3b8;font-size:12px}.link-btn[data-v-8324fd52]{border:none;background:transparent;color:#2563eb;cursor:pointer;padding:0}.language-switcher[data-v-8324fd52]{position:relative}.language-trigger[data-v-8324fd52]{display:flex;align-items:center;gap:6px;height:40px;padding:0 12px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;color:#334155;font-size:15px;cursor:pointer;transition:all .2s}.language-trigger[data-v-8324fd52]:hover{background:#f8fafc;border-color:#cbd5e1}.language-icon[data-v-8324fd52]{font-size:14px;color:#64748b}.language-text[data-v-8324fd52]{color:#64748b}.language-dropdown-menu[data-v-8324fd52]{position:absolute;top:calc(100% + 2px);right:0;min-width:120px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;z-index:1000;overflow:hidden}.language-dropdown-menu[data-v-8324fd52]:before{content:"";position:absolute;top:-2px;left:0;right:0;height:2px;background:transparent}.language-option[data-v-8324fd52]{padding:10px 16px;color:#334155;font-size:14px;cursor:pointer;transition:background .2s}.language-option[data-v-8324fd52]:hover{background:#f8fafc}.language-option.active[data-v-8324fd52]{background:#eff6ff;color:#2563eb;position:relative}.language-option.active[data-v-8324fd52]:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:#2563eb}.user-dropdown[data-v-8324fd52]{position:relative}.user-dropdown-trigger[data-v-8324fd52]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px;border-radius:8px;transition:background .2s}.user-dropdown-trigger[data-v-8324fd52]:hover{background:#f8fafc}.user-avatar[data-v-8324fd52]{width:32px;height:32px;border-radius:50%;object-fit:cover;border:2px solid #e5e7eb}.user-dropdown-menu[data-v-8324fd52]{position:absolute;top:calc(100% + 2px);right:0;min-width:160px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;z-index:1000;overflow:hidden}.user-dropdown-menu[data-v-8324fd52]:before{content:"";position:absolute;top:-2px;left:0;right:0;height:2px;background:transparent}.user-dropdown-item[data-v-8324fd52]{padding:10px 16px;color:#334155;font-size:14px;cursor:pointer;transition:background .2s}.user-dropdown-item[data-v-8324fd52]:hover{background:#f8fafc}.user-dropdown-divider[data-v-8324fd52]{height:1px;background:#f1f5f9;margin:4px 0}.btn[data-v-8324fd52]{height:40px;padding:0 20px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;color:#0f172a;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;font-size:15px;font-weight:500;transition:all .2s}.btn[data-v-8324fd52]:hover{background:#f8fafc;border-color:#cbd5e1}.btn--primary[data-v-8324fd52]{background:#2563eb;border-color:#2563eb;color:#fff}.btn--primary[data-v-8324fd52]:hover{background:#1d4ed8;border-color:#1d4ed8}.main[data-v-8324fd52]{min-height:0}.site-footer[data-v-8324fd52]{border-top:1px solid #e5e7eb;background:#fff}.footer-inner[data-v-8324fd52]{padding:20px 24px;color:#64748b;text-align:center;font-size:14px}@media (max-width: 768px){.site-header[data-v-8324fd52]{padding:12px 16px}.brand[data-v-8324fd52]{font-size:16px}.brand img[data-v-8324fd52]{width:32px;height:32px}.site-nav[data-v-8324fd52]{gap:12px}.nav-link[data-v-8324fd52]{font-size:14px;padding:6px 8px}.btn[data-v-8324fd52]{height:36px;padding:0 16px;font-size:14px}.nav-actions[data-v-8324fd52]{gap:8px}.announcement-scroll[data-v-8324fd52]{width:150px}.notification-dropdown-menu[data-v-8324fd52]{width:280px}}.slider-captcha-container[data-v-9f2cf0c4]{width:320px;-webkit-user-select:none;user-select:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.captcha-image-wrapper[data-v-9f2cf0c4]{position:relative;width:300px;height:150px;overflow:hidden;border-radius:8px;border:1px solid #e8e8e8;background:#f5f5f5}.bg-image[data-v-9f2cf0c4]{width:100%;height:100%;display:block;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none}.slider-thumb[data-v-9f2cf0c4]{position:absolute;cursor:move;border-radius:6px;box-shadow:0 2px 8px #00000026;pointer-events:none;object-fit:cover}.slider-track[data-v-9f2cf0c4]{position:relative;height:50px;margin-top:12px;background:#f0f0f0;border-radius:25px;overflow:hidden;border:1px solid #e8e8e8}.slider-progress[data-v-9f2cf0c4]{position:absolute;height:100%;background:linear-gradient(90deg,#1890ff,#52c41a);border-radius:25px 0 0 25px;transition:width .3s ease}.slider-handle[data-v-9f2cf0c4]{position:absolute;top:0;width:48px;height:48px;margin:1px;background:#fff;border-radius:50%;box-shadow:0 2px 8px #00000026;display:flex;align-items:center;justify-content:center;cursor:move;transition:all .3s ease;z-index:10}.slider-handle[data-v-9f2cf0c4]:hover{transform:scale(1.05)}.slider-handle[data-v-9f2cf0c4]:active{transform:scale(.95)}.slider-handle.is-success[data-v-9f2cf0c4]{background:#52c41a;color:#fff;animation:success-9f2cf0c4 .5s ease}.slider-handle.is-fail[data-v-9f2cf0c4]{background:#ff4d4f;color:#fff;animation:fail-9f2cf0c4 .5s ease}.slider-tip[data-v-9f2cf0c4]{position:absolute;width:100%;text-align:center;line-height:50px;color:#666;font-size:14px;pointer-events:none}@keyframes success-9f2cf0c4{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes fail-9f2cf0c4{0%{transform:scale(1)}50%{transform:scale(.9)}to{transform:scale(1)}}.login-tabs[data-v-d92cf860]{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin-bottom:16px;padding-bottom:0}.tab-btn[data-v-d92cf860]{padding:12px 24px;background:transparent;border:none;border-bottom:3px solid transparent;color:var(--color-text-muted);font-size:15px;font-weight:500;cursor:pointer;transition:all .2s ease;margin-bottom:-2px;position:relative;flex:1;text-align:center}.tab-btn[data-v-d92cf860]:hover{color:var(--primary);background:#f8fafc}.tab-btn.active[data-v-d92cf860]{color:var(--primary);border-bottom-color:var(--primary);background:transparent;font-weight:600}.form-row--sms[data-v-d92cf860]{display:flex;align-items:flex-end;gap:10px}.form-row--sms-input[data-v-d92cf860]{flex:1;display:grid;gap:8px}.btn--sms[data-v-d92cf860]{min-width:120px;white-space:nowrap}.btn--sms[data-v-d92cf860]:disabled{opacity:.6;cursor:not-allowed}.modal-overlay[data-v-d92cf860]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-d92cf860]{background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;max-width:400px;width:90%;max-height:90vh;overflow-y:auto}.modal-header[data-v-d92cf860]{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid var(--color-border, #e0e0e0)}.modal-header h3[data-v-d92cf860]{margin:0;font-size:18px;font-weight:600}.modal-close[data-v-d92cf860]{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.modal-body[data-v-d92cf860]{padding:20px}.captcha-section[data-v-d92cf860]{text-align:center;margin-bottom:20px}.captcha-image[data-v-d92cf860]{max-width:100%;height:80px;border:1px solid var(--color-border, #e0e0e0);border-radius:4px;cursor:pointer;margin-bottom:10px}.captcha-hint[data-v-d92cf860]{font-size:14px;color:#666;margin:0}.captcha-input[data-v-d92cf860]{width:100%;padding:10px;border:1px solid var(--color-border, #e0e0e0);border-radius:4px;font-size:16px;text-align:center;letter-spacing:2px}.modal-footer[data-v-d92cf860]{display:flex;gap:10px;padding:20px;border-top:1px solid var(--color-border, #e0e0e0);justify-content:flex-end}.form-row--sms[data-v-4360fcba]{display:flex;align-items:flex-end;gap:10px}.form-row--sms-input[data-v-4360fcba]{flex:1;display:grid;gap:8px}.btn--sms[data-v-4360fcba]{min-width:120px;white-space:nowrap}.btn--sms[data-v-4360fcba]:disabled{opacity:.6;cursor:not-allowed}.modal-overlay[data-v-4360fcba]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-4360fcba]{background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;max-width:400px;width:90%;max-height:90vh;overflow-y:auto}.modal-header[data-v-4360fcba]{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid var(--color-border, #e0e0e0)}.modal-header h3[data-v-4360fcba]{margin:0;font-size:18px;font-weight:600}.modal-close[data-v-4360fcba]{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.modal-body[data-v-4360fcba]{padding:20px}.captcha-section[data-v-4360fcba]{text-align:center;margin-bottom:20px}.captcha-image[data-v-4360fcba]{max-width:100%;height:80px;border:1px solid var(--color-border, #e0e0e0);border-radius:4px;cursor:pointer;margin-bottom:10px}.captcha-hint[data-v-4360fcba]{font-size:14px;color:#666;margin:0}.captcha-input[data-v-4360fcba]{width:100%;padding:10px;border:1px solid var(--color-border, #e0e0e0);border-radius:4px;font-size:16px;text-align:center;letter-spacing:2px}.modal-footer[data-v-4360fcba]{display:flex;gap:10px;padding:20px;border-top:1px solid var(--color-border, #e0e0e0);justify-content:flex-end}.home[data-v-caa93ef2]{min-height:100vh;display:grid;grid-template-rows:auto 1fr;background:#f8fafc}.banner[data-v-caa93ef2]{overflow:hidden;position:relative;height:400px;background:#fff}.banner-track[data-v-caa93ef2]{display:flex;width:100%;height:100%;transition:transform .6s cubic-bezier(.4,0,.2,1)}.banner-item[data-v-caa93ef2]{position:relative;flex:0 0 100%;display:grid;place-items:center}.banner-image[data-v-caa93ef2]{width:100%;height:400px;object-fit:cover}.banner-content[data-v-caa93ef2]{position:absolute;left:48px;bottom:48px;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.4);display:none}.banner-content h2[data-v-caa93ef2]{margin:0;font-size:32px;font-weight:700}.banner-dots[data-v-caa93ef2]{position:absolute;bottom:20px;left:0;right:0;display:flex;justify-content:center;gap:8px;z-index:2}.dot[data-v-caa93ef2]{width:10px;height:10px;border-radius:50%;background:#ffffff80;cursor:pointer;transition:all .3s}.dot.active[data-v-caa93ef2]{background:#fff;width:24px;border-radius:5px}.home-main[data-v-caa93ef2]{display:grid;gap:48px;padding:48px 24px;max-width:1400px;margin:0 auto;width:100%;box-sizing:border-box}.section[data-v-caa93ef2]{display:grid;gap:24px;width:100%;box-sizing:border-box}.section__header[data-v-caa93ef2]{display:flex;align-items:center;gap:12px;margin-bottom:8px}.section__header[data-v-caa93ef2]:before{content:"";width:4px;height:24px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:2px}.section__header h3[data-v-caa93ef2]{margin:0;font-size:24px;font-weight:700;color:#0f172a}.tab-container[data-v-caa93ef2]{background:#fff;border-radius:16px;padding:24px;box-shadow:0 1px 3px #00000014;width:100%;box-sizing:border-box;overflow:hidden}.tab-header[data-v-caa93ef2]{display:flex;gap:8px;border-bottom:2px solid #e5e7eb;margin-bottom:24px;padding-bottom:0}.tab-btn[data-v-caa93ef2]{padding:12px 24px;background:transparent;border:none;border-bottom:3px solid transparent;color:#64748b;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s;margin-bottom:-2px;position:relative}.tab-btn[data-v-caa93ef2]:hover{color:#2563eb;background:#f8fafc}.tab-btn.active[data-v-caa93ef2]{color:#2563eb;border-bottom-color:#2563eb;background:transparent}.tab-content[data-v-caa93ef2]{min-height:400px;width:100%}.tab-content .grid[data-v-caa93ef2]{animation:fadeIn-caa93ef2 .3s ease-in;width:100%}@keyframes fadeIn-caa93ef2{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.grid[data-v-caa93ef2]{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;width:100%;box-sizing:border-box}.card.course[data-v-caa93ef2]{background:#fff;border-radius:16px;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 3px #00000014;cursor:pointer;display:flex;flex-direction:column}.card.course[data-v-caa93ef2]:hover{transform:translateY(-4px);box-shadow:0 12px 24px #0000001f}.card-image-wrapper[data-v-caa93ef2]{position:relative;width:100%;overflow:hidden;background:#f1f5f9}.card.course .cover[data-v-caa93ef2]{width:100%;height:200px;object-fit:cover;transition:transform .3s cubic-bezier(.4,0,.2,1)}.card.course:hover .cover[data-v-caa93ef2]{transform:scale(1.05)}.card-overlay[data-v-caa93ef2]{position:absolute;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.card.course:hover .card-overlay[data-v-caa93ef2]{opacity:1}.view-btn[data-v-caa93ef2]{background:#fff;color:#0f172a;padding:10px 20px;border-radius:8px;font-weight:600;font-size:14px;transform:translateY(10px);transition:transform .3s}.card.course:hover .view-btn[data-v-caa93ef2]{transform:translateY(0)}.card-content[data-v-caa93ef2]{padding:20px;display:flex;flex-direction:column;flex:1;gap:8px}.card.course h4[data-v-caa93ef2]{margin:0;font-size:18px;font-weight:600;color:#0f172a;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.muted[data-v-caa93ef2]{color:#64748b;font-size:14px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex:1}.class-card .meta[data-v-caa93ef2]{display:flex;flex-wrap:wrap;gap:16px;margin-top:12px;padding-top:12px;border-top:1px solid #e5e7eb}.meta-item[data-v-caa93ef2]{display:flex;align-items:center;gap:6px;font-size:13px;color:#64748b}.meta-icon[data-v-caa93ef2]{width:16px;height:16px;color:#94a3b8;flex-shrink:0}.price-row[data-v-caa93ef2]{margin-top:auto;padding-top:12px;border-top:1px solid #e5e7eb}.price[data-v-caa93ef2]{font-size:20px;font-weight:700;color:#f59e0b}@media (max-width: 1200px){.grid[data-v-caa93ef2]{grid-template-columns:repeat(2,1fr)}.home-main[data-v-caa93ef2]{padding:32px 20px;gap:40px}}@media (max-width: 768px){.banner[data-v-caa93ef2],.banner-image[data-v-caa93ef2]{height:280px}.banner-content[data-v-caa93ef2]{left:24px;bottom:24px}.banner-content h2[data-v-caa93ef2]{font-size:24px}.home-main[data-v-caa93ef2]{padding:24px 16px;gap:32px}.grid[data-v-caa93ef2]{grid-template-columns:1fr;gap:20px}.section__header h3[data-v-caa93ef2]{font-size:20px}.card.course .cover[data-v-caa93ef2]{height:180px}.card-content[data-v-caa93ef2]{padding:16px}.card.course h4[data-v-caa93ef2]{font-size:16px}.tab-container[data-v-caa93ef2]{padding:16px}.tab-header[data-v-caa93ef2]{gap:4px}.tab-btn[data-v-caa93ef2]{padding:10px 16px;font-size:14px}}.page[data-v-e70b1e3c]{min-height:calc(100vh - 200px);background:#f8fafc;padding:24px 16px}.page-content[data-v-e70b1e3c]{max-width:1400px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:16px}.search-section[data-v-e70b1e3c]{padding:16px 20px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 1px 3px #0000000d}.search-box[data-v-e70b1e3c]{display:flex;gap:12px;align-items:center}.search-input[data-v-e70b1e3c]{flex:1;padding:10px 12px;border:1px solid #e5e7eb;border-radius:8px;font-size:14px;transition:border-color .2s ease,box-shadow .2s ease;background:#fff}.search-input[data-v-e70b1e3c]:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1f}.btn[data-v-e70b1e3c]{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;color:#0f172a;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn[data-v-e70b1e3c]:hover:not(:disabled){background:#f1f5f9;border-color:#cbd5e1;transform:translateY(-1px)}.btn[data-v-e70b1e3c]:disabled{opacity:.6;cursor:not-allowed}.btn--primary[data-v-e70b1e3c]{background:#2563eb;border-color:#2563eb;color:#fff;box-shadow:0 1px 3px #2563eb40}.btn--primary[data-v-e70b1e3c]:hover:not(:disabled){background:#1d4ed8;border-color:#1d4ed8}.search-btn[data-v-e70b1e3c]{height:42px}.search-icon[data-v-e70b1e3c]{width:18px;height:18px}.empty-state[data-v-e70b1e3c],.error-state[data-v-e70b1e3c]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 1px 3px #0000000d;grid-column:1 / -1}.empty-icon[data-v-e70b1e3c]{width:56px;height:56px;color:#94a3b8;margin-bottom:12px}.error-message[data-v-e70b1e3c]{padding:12px 16px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#b91c1c;font-size:14px}.skeleton-grid[data-v-e70b1e3c]{width:100%}.skeleton-card[data-v-e70b1e3c]{pointer-events:none}.skeleton-block[data-v-e70b1e3c]{height:200px;background:linear-gradient(90deg,#e5e7eb 25%,#f1f5f9 37%,#e5e7eb 63%);background-size:400% 100%;animation:shimmer-e70b1e3c 1.4s ease infinite}.skeleton-line[data-v-e70b1e3c]{height:12px;background:linear-gradient(90deg,#e5e7eb 25%,#f1f5f9 37%,#e5e7eb 63%);background-size:400% 100%;animation:shimmer-e70b1e3c 1.4s ease infinite;border-radius:6px}.skeleton-line.title[data-v-e70b1e3c]{height:18px;width:80%}.skeleton-line.subtitle[data-v-e70b1e3c]{width:95%}.skeleton-line.subtitle.short[data-v-e70b1e3c]{width:70%}.skeleton-line.small[data-v-e70b1e3c]{width:45%;height:10px}.skeleton-line.tiny[data-v-e70b1e3c]{width:60px;height:10px}.skeleton-stats[data-v-e70b1e3c]{margin-top:10px;padding-top:10px;border-top:1px solid #e5e7eb}.skeleton-meta[data-v-e70b1e3c]{padding-top:10px;border-top:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between}.skeleton-pill[data-v-e70b1e3c]{width:90px;height:20px;border-radius:999px;background:linear-gradient(90deg,#e5e7eb 25%,#f1f5f9 37%,#e5e7eb 63%);background-size:400% 100%;animation:shimmer-e70b1e3c 1.4s ease infinite}@keyframes shimmer-e70b1e3c{0%{background-position:100% 0}to{background-position:-100% 0}}.grid[data-v-e70b1e3c]{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;width:100%}.card.course[data-v-e70b1e3c]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;transition:all .2s ease;box-shadow:0 1px 3px #0000000f;cursor:pointer;display:flex;flex-direction:column}.card.course[data-v-e70b1e3c]:hover{transform:translateY(-3px);box-shadow:0 8px 18px #0f172a14;border-color:#cbd5e1}.card-image-wrapper[data-v-e70b1e3c]{position:relative;width:100%;overflow:hidden;background:#e2e8f0}.card.course .cover[data-v-e70b1e3c]{width:100%;height:200px;object-fit:cover;transition:transform .25s ease}.card.course:hover .cover[data-v-e70b1e3c]{transform:scale(1.03)}.card-overlay[data-v-e70b1e3c]{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f172a59;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.card.course:hover .card-overlay[data-v-e70b1e3c]{opacity:1}.view-btn[data-v-e70b1e3c]{background:#fff;border-color:#e5e7eb;color:#0f172a;padding:8px 14px;transform:translateY(6px)}.card.course:hover .view-btn[data-v-e70b1e3c]{transform:translateY(0)}.card-content[data-v-e70b1e3c]{padding:16px;display:flex;flex-direction:column;flex:1;gap:6px}.card.course h4[data-v-e70b1e3c]{margin:0;font-size:18px;font-weight:700;color:#0f172a;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.subtitle[data-v-e70b1e3c]{color:#475569;font-size:14px;line-height:1.5;margin:0}.description[data-v-e70b1e3c]{color:#64748b;font-size:13px;line-height:1.6;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex:1}.stats[data-v-e70b1e3c]{display:flex;gap:14px;margin-top:10px;padding-top:10px;border-top:1px solid #e5e7eb}.stat-item[data-v-e70b1e3c]{display:flex;align-items:center;gap:6px;font-size:12px;color:#475569}.stat-icon[data-v-e70b1e3c]{width:16px;height:16px;color:#94a3b8;flex-shrink:0}.stat-label[data-v-e70b1e3c]{color:#64748b}.stat-value[data-v-e70b1e3c]{color:#0f172a;font-weight:700}.meta[data-v-e70b1e3c]{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:10px;border-top:1px solid #e5e7eb;font-size:12px}.status[data-v-e70b1e3c]{padding:4px 10px;border-radius:6px;font-weight:600;font-size:12px}.status-updating[data-v-e70b1e3c]{background:#fef3c7;color:#92400e}.status-completed[data-v-e70b1e3c]{background:#d1fae5;color:#065f46}.status-normal[data-v-e70b1e3c]{background:#f8fafc;color:#475569}.date[data-v-e70b1e3c]{color:#64748b;font-size:12px;display:flex;align-items:center;gap:4px}.date-icon[data-v-e70b1e3c]{width:14px;height:14px}.pagination[data-v-e70b1e3c]{display:flex;align-items:center;justify-content:center;gap:14px;margin:24px 0 8px}.pagination-btn[data-v-e70b1e3c]{min-width:110px}.pagination-btn[data-v-e70b1e3c]:disabled{opacity:.45}.pagination-info[data-v-e70b1e3c]{color:#475569;font-size:14px;font-weight:600}@media (max-width: 1024px){.page-content[data-v-e70b1e3c]{padding:0 4px}.grid[data-v-e70b1e3c]{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.page[data-v-e70b1e3c]{padding:16px 12px}.page-header[data-v-e70b1e3c]{padding:16px}.page-header h2[data-v-e70b1e3c]{font-size:20px}.search-box[data-v-e70b1e3c]{flex-direction:column;align-items:stretch}.search-btn[data-v-e70b1e3c]{width:100%}.grid[data-v-e70b1e3c]{grid-template-columns:1fr;gap:12px}.card.course .cover[data-v-e70b1e3c]{height:180px}.pagination[data-v-e70b1e3c]{flex-direction:column;gap:10px}}.user-center[data-v-6142a784]{max-width:960px;margin:24px auto;padding:0 16px}.profile-grid[data-v-6142a784]{display:grid;grid-template-columns:160px 1fr;gap:16px;align-items:flex-start}.avatar-box[data-v-6142a784]{display:grid;gap:8px;justify-items:center;cursor:pointer}.avatar-box img[data-v-6142a784]{width:120px;height:120px;border-radius:50%;object-fit:cover;border:2px solid #e5e7eb}.avatar-tip[data-v-6142a784]{font-size:12px;color:#64748b}.profile-form[data-v-6142a784]{display:grid;gap:12px}.grid2[data-v-6142a784]{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:16px;align-items:start}.grid2 .full[data-v-6142a784]{grid-column:1 / -1}.actions[data-v-6142a784]{margin-top:8px;display:flex;gap:10px}.user-alert[data-v-6142a784]{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca;padding:10px 12px;border-radius:10px;font-size:13px}.profile-form label[data-v-6142a784]{display:block;margin-bottom:6px;font-size:13px;color:#6b7280}.profile-form input[data-v-6142a784]{width:100%;height:40px;padding:0 12px;border:1px solid #e5e7eb;border-radius:10px;background:#f9fafb;box-sizing:border-box}.hidden[data-v-6142a784]{display:none}.modal[data-v-6142a784]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:grid;place-items:center;z-index:100}.modal__dialog[data-v-6142a784]{width:420px;max-width:90vw;background:#fff;border-radius:12px;border:1px solid #e5e7eb;box-shadow:0 10px 30px #0003}.modal__header[data-v-6142a784]{padding:16px;border-bottom:1px solid #e5e7eb}.modal__body[data-v-6142a784]{padding:16px}.modal__footer[data-v-6142a784]{padding:12px 16px;display:flex;justify-content:flex-end;gap:10px;border-top:1px solid #e5e7eb}.form-vertical[data-v-6142a784]{display:grid;gap:12px}.form-vertical label[data-v-6142a784]{display:block;margin-bottom:6px;font-size:13px;color:#6b7280}.form-vertical input[data-v-6142a784]{width:100%;height:40px;padding:0 12px;border:1px solid #e5e7eb;border-radius:10px;background:#f9fafb;box-sizing:border-box}.certificate-query[data-v-5e69cfcb]{min-height:calc(100vh - 200px);padding:24px;background:#f8fafc}.query-container[data-v-5e69cfcb]{max-width:800px;margin:0 auto;background:#fff;border-radius:12px;padding:32px;box-shadow:0 1px 3px #0000001a}h2[data-v-5e69cfcb]{margin:0 0 8px;font-size:24px;color:#0f172a}.description[data-v-5e69cfcb]{margin:0 0 24px;color:#64748b;font-size:14px}.query-form[data-v-5e69cfcb]{margin-bottom:24px}.query-tabs[data-v-5e69cfcb]{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin-bottom:16px;padding-bottom:0}.tab-btn[data-v-5e69cfcb]{padding:12px 24px;background:transparent;border:none;border-bottom:3px solid transparent;color:var(--color-text-muted);font-size:15px;font-weight:500;cursor:pointer;transition:all .2s ease;margin-bottom:-2px;position:relative;flex:1;text-align:center}.tab-btn[data-v-5e69cfcb]:hover{color:var(--primary);background:#f8fafc}.tab-btn.active[data-v-5e69cfcb]{color:var(--primary);border-bottom-color:var(--primary);background:transparent;font-weight:600}.form-group[data-v-5e69cfcb]{margin-bottom:20px}.form-group label[data-v-5e69cfcb]{display:block;margin-bottom:8px;font-weight:600;color:#334155;font-size:14px}.required[data-v-5e69cfcb]{color:#ef4444}.input[data-v-5e69cfcb]{width:100%;padding:10px 12px;border:1px solid #e5e7eb;border-radius:8px;font-size:14px;transition:border-color .2s}.input[data-v-5e69cfcb]:focus{outline:none;border-color:#2563eb}.captcha-row[data-v-5e69cfcb]{display:flex;gap:12px;align-items:flex-start}.captcha-input[data-v-5e69cfcb]{flex:1}.captcha-image-wrapper[data-v-5e69cfcb]{flex-shrink:0}.captcha-image[data-v-5e69cfcb]{height:40px;cursor:pointer;border:1px solid #e5e7eb;border-radius:4px;transition:opacity .2s}.captcha-image[data-v-5e69cfcb]:hover{opacity:.8}.captcha-loading[data-v-5e69cfcb]{height:40px;width:120px;display:flex;align-items:center;justify-content:center;color:#64748b;font-size:12px;border:1px solid #e5e7eb;border-radius:4px}.form-actions[data-v-5e69cfcb]{display:flex;gap:12px;margin-top:24px}.btn[data-v-5e69cfcb]{padding:10px 20px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;color:#0f172a;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.btn[data-v-5e69cfcb]:hover:not(:disabled){background:#f1f5f9}.btn[data-v-5e69cfcb]:disabled{opacity:.6;cursor:not-allowed}.btn--primary[data-v-5e69cfcb]{background:#2563eb;border-color:#2563eb;color:#fff}.btn--primary[data-v-5e69cfcb]:hover:not(:disabled){background:#1d4ed8}.btn--small[data-v-5e69cfcb]{padding:6px 12px;font-size:12px}.error-message[data-v-5e69cfcb]{padding:12px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;font-size:14px;margin-bottom:24px}.results[data-v-5e69cfcb]{margin-top:32px}.results h3[data-v-5e69cfcb]{margin:0 0 20px;font-size:18px;color:#0f172a}.certificate-list[data-v-5e69cfcb]{display:flex;flex-direction:column;gap:16px}.certificate-card[data-v-5e69cfcb]{border:1px solid #e5e7eb;border-radius:12px;padding:20px;background:#fff}.certificate-header[data-v-5e69cfcb]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.certificate-header h4[data-v-5e69cfcb]{margin:0;font-size:18px;color:#0f172a}.status[data-v-5e69cfcb]{padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600}.status--valid[data-v-5e69cfcb]{background:#d1fae5;color:#065f46}.status--expired[data-v-5e69cfcb]{background:#fee2e2;color:#991b1b}.status--revoked[data-v-5e69cfcb]{background:#f3f4f6;color:#374151}.certificate-info[data-v-5e69cfcb]{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.info-row[data-v-5e69cfcb]{display:flex;font-size:14px}.info-row .label[data-v-5e69cfcb]{color:#64748b;min-width:100px}.info-row .value[data-v-5e69cfcb]{color:#0f172a;font-weight:500}.certificate-actions[data-v-5e69cfcb]{display:flex;gap:12px;padding-top:16px;border-top:1px solid #e5e7eb}.empty-result[data-v-5e69cfcb]{text-align:center;padding:40px;color:#64748b}@media (max-width: 768px){.certificate-query[data-v-5e69cfcb]{padding:16px}.query-container[data-v-5e69cfcb]{padding:20px}.captcha-row[data-v-5e69cfcb]{flex-direction:column}.certificate-header[data-v-5e69cfcb]{flex-direction:column;align-items:flex-start;gap:8px}}.page[data-v-f7cd59ce]{padding:24px;background:#f8fafc;min-height:calc(100vh - 180px)}.card[data-v-f7cd59ce]{background:#fff;border-radius:12px;box-shadow:0 10px 30px #0f172a0f}.card__body[data-v-f7cd59ce]{padding:16px}.loading-state[data-v-f7cd59ce],.empty-state[data-v-f7cd59ce]{padding:32px;text-align:center;color:#475569}.loading-spinner[data-v-f7cd59ce]{width:32px;height:32px;border-radius:50%;border:4px solid #e2e8f0;border-top-color:#2563eb;margin:0 auto 12px;animation:spin-f7cd59ce .8s linear infinite}@keyframes spin-f7cd59ce{to{transform:rotate(360deg)}}.user-alert[data-v-f7cd59ce]{padding:12px 16px;border-radius:8px;background:#fef2f2;color:#b91c1c;margin-bottom:12px}.announcement-list[data-v-f7cd59ce]{display:flex;flex-direction:column;gap:12px}.announcement-card[data-v-f7cd59ce]{padding:16px;border:1px solid #e2e8f0;border-radius:12px;cursor:pointer;transition:all .2s ease;background:#fff}.announcement-card--top[data-v-f7cd59ce]{border-color:#f59e0b;background:#fffbeb}.announcement-card[data-v-f7cd59ce]:hover{border-color:#cbd5e1;transform:translateY(-2px);box-shadow:0 10px 20px #0f172a0d}.announcement-card__header[data-v-f7cd59ce]{display:flex;align-items:center;justify-content:space-between;gap:12px}.announcement-card__title[data-v-f7cd59ce]{margin:0;font-size:18px;color:#0f172a;display:flex;align-items:center;gap:8px;flex:1}.announcement-card__date[data-v-f7cd59ce]{color:#94a3b8;font-size:13px;flex-shrink:0}.top-flag[data-v-f7cd59ce]{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:12px;color:#92400e;background:#fef3c7;border:1px solid #fcd34d}.announcement-card__meta[data-v-f7cd59ce]{display:flex;gap:12px;color:#94a3b8;font-size:13px}.tag[data-v-f7cd59ce]{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:12px;color:#334155;background:#e2e8f0}.tag--warning[data-v-f7cd59ce]{background:#fef3c7;color:#92400e}.pagination[data-v-f7cd59ce]{margin-top:16px;display:flex;justify-content:center;align-items:center;gap:12px}.pagination__info[data-v-f7cd59ce]{color:#475569}.btn[data-v-f7cd59ce]{border:1px solid #cbd5e1;background:#fff;color:#0f172a;border-radius:8px;padding:8px 14px;cursor:pointer;transition:all .2s}.btn--ghost[data-v-f7cd59ce]{background:#f8fafc}.btn[data-v-f7cd59ce]:disabled{opacity:.5;cursor:not-allowed}:root{--color-bg: #f7f8fa;--color-card: #ffffff;--color-border: #e5e7eb;--color-text: #0f172a;--color-text-muted: #6b7280;--primary: #3b82f6;--danger: #ef4444}html,body,#app{height:100%}html{overflow-y:scroll}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji";color:var(--color-text);background:var(--color-bg)}.card{background:var(--color-card);border:1px solid var(--color-border);border-radius:12px;box-shadow:0 4px 16px #0f172a0f}.card__header,.card__body{padding:16px}.btn{height:36px;padding:0 12px;border-radius:8px;border:1px solid var(--color-border);background:#fff;color:var(--color-text);cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.btn:hover{background:#f3f4f6}.btn--primary{border-color:var(--primary);background:var(--primary);color:#fff}.btn--primary:hover{background:#1d4ed8;border-color:#1d4ed8;color:#fff}.btn--danger{border-color:var(--danger);background:var(--danger);color:#fff}.btn--sm{height:28px;padding:0 10px;border-radius:6px;font-size:12px;line-height:26px}.form-grid{display:grid;grid-template-columns:1fr;gap:12px}.form-row{display:grid;gap:6px}label{font-size:13px;color:var(--color-text-muted)}input,select{height:36px;padding:0 10px;border:1px solid var(--color-border);border-radius:8px;background:#fff;color:var(--color-text)}.error-text{color:#dc2626;font-size:13px}.spacer{height:1px;background-color:var(--color-border)}.link{color:var(--primary);font-weight:600;text-decoration:none}.link:hover{text-decoration:underline}.page{display:flex;flex-direction:column;gap:16px;padding:24px}.login-container{display:grid;place-items:center;min-height:100vh;padding:24px}.login-card{background-color:var(--color-card);border:1px solid var(--color-border);border-radius:16px;padding:24px;width:100%;max-width:420px;display:grid;gap:16px}*{box-sizing:border-box}input[type=radio],input[type=checkbox]{vertical-align:middle;margin:0}
