.side-nav[data-v-de8c6c3f]{width:200px;height:100vh;background:var(--bg-nav);display:flex;flex-direction:column;transition:all .35s;flex-shrink:0;position:relative;z-index:100}.side-nav.collapsed[data-v-de8c6c3f]{width:56px}.side-nav.collapsed .nav-header[data-v-de8c6c3f]{padding:16px 8px;gap:0;justify-content:center}.side-nav.collapsed .nav-toggle[data-v-de8c6c3f]{position:static;margin:0;font-size:20px}.nav-header[data-v-de8c6c3f]{display:flex;align-items:center;padding:16px 14px;gap:8px;border-bottom:1px solid rgba(255,255,255,.15);height:56px}.nav-logo[data-v-de8c6c3f]{font-size:24px;flex-shrink:0}.nav-brand[data-v-de8c6c3f]{font-weight:700;font-size:17px;color:#fff;white-space:nowrap}.nav-toggle[data-v-de8c6c3f]{margin-left:auto;background:none;border:none;color:#ffffffb3;font-size:16px;cursor:pointer;padding:4px 8px;border-radius:6px;transition:all .2s}.nav-toggle[data-v-de8c6c3f]:hover{background:#ffffff26;color:#fff}.nav-items[data-v-de8c6c3f]{flex:1;overflow-y:auto;padding:8px 10px;display:flex;flex-direction:column;gap:2px}.nav-footer[data-v-de8c6c3f]{padding:8px 10px;border-top:1px solid rgba(255,255,255,.15)}.nav-user[data-v-de8c6c3f]{display:flex;align-items:center;gap:10px;padding:8px 12px;color:#fff9;font-size:13px}.nav-item[data-v-de8c6c3f]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;text-decoration:none;color:#ffffffbf;font-size:14px;transition:all .2s;white-space:nowrap;cursor:pointer}.nav-item[data-v-de8c6c3f]:hover{background:#ffffff1f;color:#fff}.nav-item.active[data-v-de8c6c3f]{background:#fff3;color:#fff;font-weight:600}.nav-icon[data-v-de8c6c3f]{font-size:20px;width:24px;text-align:center;flex-shrink:0}.nav-label[data-v-de8c6c3f]{overflow:hidden}.nav-items[data-v-de8c6c3f]::-webkit-scrollbar{width:3px}.nav-items[data-v-de8c6c3f]::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}.logout-btn[data-v-de8c6c3f]{margin-top:4px;color:#ffffff80;font-size:13px}.logout-btn[data-v-de8c6c3f]:hover{color:#ff6b6b;background:#ff6b6b26}.password-form[data-v-de8c6c3f]{display:flex;flex-direction:column;gap:14px}.form-group label[data-v-de8c6c3f]{font-size:14px;font-weight:500;color:var(--text-secondary);margin-bottom:4px;display:block}.form-group .input[data-v-de8c6c3f]{width:100%}.pwd-error[data-v-de8c6c3f]{background:#ffebee;color:#c62828;padding:8px 12px;border-radius:8px;font-size:13px;text-align:center}.pwd-success[data-v-de8c6c3f]{background:#e8f5e9;color:#2e7d32;padding:8px 12px;border-radius:8px;font-size:13px;text-align:center}@media (max-width: 768px){.side-nav[data-v-de8c6c3f]{width:56px!important}.side-nav .nav-header[data-v-de8c6c3f]{padding:16px 8px!important;justify-content:center!important}.side-nav .nav-brand[data-v-de8c6c3f],.side-nav .nav-label[data-v-de8c6c3f],.nav-user .nav-label[data-v-de8c6c3f]{display:none!important}.side-nav .nav-toggle[data-v-de8c6c3f]{position:static!important;margin:0!important;font-size:20px!important;display:block!important}.nav-item[data-v-de8c6c3f]{justify-content:center;padding:10px 0}.nav-icon[data-v-de8c6c3f]{width:auto}}.top-bar[data-v-57405d10]{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;height:56px;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:var(--bg-topbar);transition:all .4s;flex-shrink:0;position:relative}.current-page[data-v-57405d10]{font-size:18px;font-weight:700;color:var(--text-primary)}.top-bar-right[data-v-57405d10]{display:flex;align-items:center;gap:8px;font-size:13px}.total-points-badge[data-v-57405d10],.student-count[data-v-57405d10]{color:var(--text-secondary);font-weight:500}.user-badge[data-v-57405d10]{color:var(--accent);font-weight:600}.admin-badge[data-v-57405d10]{font-size:11px;padding:2px 8px;border-radius:10px;background:linear-gradient(135deg,#ff6b8a,#a78bfa);color:#fff;font-weight:600}.validity-badge[data-v-57405d10]{font-size:12px;padding:2px 8px;border-radius:10px;font-weight:500;white-space:nowrap}.validity-badge.active[data-v-57405d10]{background:#e8f5e9;color:#2e7d32}.validity-badge.warning[data-v-57405d10]{background:#fff3e0;color:#e65100}.validity-badge.expired[data-v-57405d10]{background:#ffebee;color:#c62828}.upgrade-btn[data-v-57405d10]{background:linear-gradient(135deg,#ff6b8a,#ff9eb5)!important;color:#fff!important;padding:4px 10px!important;font-size:12px!important;border-radius:8px!important}.pwd-btn[data-v-57405d10]{background:var(--bg-primary)!important;color:var(--text-secondary)!important;padding:4px 8px!important;font-size:14px!important;border-radius:8px!important}.theme-indicator[data-v-57405d10]{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px;transition:transform .2s}.theme-indicator[data-v-57405d10]:hover{transform:scale(1.15)}.logout-btn[data-v-57405d10]{background:var(--danger)!important;color:#fff!important;padding:4px 8px!important;opacity:.8}.logout-btn[data-v-57405d10]:hover{opacity:1}[data-v-57405d10] .qr-modal{text-align:center}.qr-body[data-v-57405d10]{padding:16px 0}.qr-img[data-v-57405d10]{width:200px;height:200px;object-fit:contain;margin:0 auto 16px;border-radius:12px;display:block}.qr-price[data-v-57405d10]{font-size:20px;font-weight:700;color:#333;margin-bottom:8px}.qr-hint[data-v-57405d10]{font-size:14px;color:#888;margin-bottom:8px}.qr-wechat[data-v-57405d10]{font-size:14px;color:var(--accent);font-weight:500}.pwd-form[data-v-57405d10]{display:flex;flex-direction:column;gap:14px}.form-group label[data-v-57405d10]{font-size:14px;font-weight:500;color:var(--text-secondary);margin-bottom:4px;display:block}.form-group .input[data-v-57405d10]{width:100%}.pwd-msg[data-v-57405d10]{padding:8px 12px;border-radius:8px;font-size:13px;text-align:center}.pwd-msg.error[data-v-57405d10]{background:#ffebee;color:#c62828}.pwd-msg.success[data-v-57405d10]{background:#e8f5e9;color:#2e7d32}@media (max-width: 768px){.top-bar[data-v-57405d10]{padding:10px 14px}.total-points-badge[data-v-57405d10],.student-count[data-v-57405d10],.user-badge[data-v-57405d10],.validity-badge[data-v-57405d10]{display:none}}.app-loading[data-v-a0651007]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-muted);font-size:16px}.loading-spinner[data-v-a0651007]{font-size:40px;animation:spin-a0651007 1s infinite linear}@keyframes spin-a0651007{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{margin:0;padding:0;box-sizing:border-box}html{width:100%;overflow-y:scroll}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;width:100%;min-height:100vh}#app{width:100%;min-height:100vh}.app-public{width:100%;min-height:100vh;transition:background .4s,color .4s}.app-root{display:flex;height:100vh;width:100vw;overflow:hidden;transition:background .4s,color .4s}.app-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.app-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:16px 20px}.app-content::-webkit-scrollbar,html::-webkit-scrollbar{width:6px}.app-content::-webkit-scrollbar-thumb,html::-webkit-scrollbar-thumb{border-radius:3px;background:#ccc}.app-content::-webkit-scrollbar-track,html::-webkit-scrollbar-track{background:transparent}.fade-enter-active,.fade-leave-active{transition:opacity .25s ease}.fade-enter-from,.fade-leave-to{opacity:0}.global-toast{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:12px 28px;border-radius:12px;font-size:15px;font-weight:500;z-index:9999;box-shadow:0 4px 20px #00000026;animation:slideDown .3s ease;pointer-events:none}.global-toast.info{background:#fff;color:#333;border:1px solid #e0e0e0}.global-toast.success{background:#e8f5e9;color:#2e7d32;border:1px solid #a5d6a7}.global-toast.warning{background:#fff3e0;color:#e65100;border:1px solid #ffcc80}.global-toast.error{background:#ffebee;color:#c62828;border:1px solid #ef9a9a}@keyframes slideDown{0%{opacity:0;transform:translate(-50%) translateY(-20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.page-title{font-size:22px;font-weight:700;margin-bottom:16px;display:flex;align-items:center;gap:10px}.card{border-radius:16px;padding:20px;box-shadow:0 2px 12px #0000000f;transition:background .4s,box-shadow .4s;margin-bottom:16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 20px;border:none;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;transition:all .25s;white-space:nowrap}.btn:active{transform:scale(.95)}.btn-primary,.btn-secondary{color:#fff}.btn-outline{background:transparent;border:1.5px solid}.btn-sm{padding:5px 14px;font-size:13px;border-radius:8px}.btn-lg{padding:12px 32px;font-size:16px;border-radius:12px}.btn-icon{width:36px;height:36px;padding:0;border-radius:10px;font-size:18px}.input{padding:9px 14px;border-radius:10px;border:1.5px solid;font-size:14px;outline:none;transition:border-color .25s;width:100%;background:transparent}.input:focus{border-color:inherit}.tag{display:inline-flex;align-items:center;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:500}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:12px;opacity:.6}.empty-state .icon{font-size:56px}.empty-state .text{font-size:16px}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}@media (max-width: 768px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}.app-content{padding:12px 14px}}@media (max-width: 480px){.grid-2{grid-template-columns:1fr}.grid-4{grid-template-columns:1fr 1fr}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-box{border-radius:20px;padding:28px;width:90%;max-width:480px;max-height:85vh;overflow-y:auto;box-shadow:0 8px 40px #00000026;animation:scaleIn .25s}.modal-title{font-size:18px;font-weight:700;margin-bottom:16px}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0}.avatar-sm{width:32px;height:32px}.avatar-lg{width:56px;height:56px}.avatar-xl{width:72px;height:72px}.select{padding:9px 14px;border-radius:10px;border:1.5px solid;font-size:14px;outline:none;background:transparent;cursor:pointer}.theme-cute{--bg-primary: #fff5f7;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-nav: #ff9eb5;--bg-topbar: rgba(255,158,181,.92);--text-primary: #5a3d4a;--text-secondary: #8a6d7a;--text-muted: #bbaab2;--accent: #ff6b8a;--accent-light: #ffb3c6;--accent-dark: #e34a6a;--success: #7bc67e;--warning: #ffb347;--danger: #ff6b6b;--border: #ffd6e0;--shadow: rgba(255,107,138,.12);--radius: 16px;--radius-sm: 10px;--font-cute: "PingFang SC", "Microsoft YaHei", sans-serif}.theme-cute .app-content::-webkit-scrollbar-thumb{background:#ffb3c6}.theme-cute .card{background:var(--bg-card);border:1px solid var(--border)}.theme-cute .btn-primary{background:linear-gradient(135deg,#ff6b8a,#ff9eb5)}.theme-cute .btn-secondary{background:linear-gradient(135deg,#a78bfa,#c4b5fd)}.theme-cute .btn-outline{border-color:var(--accent);color:var(--accent)}.theme-cute .btn-outline:hover{background:var(--bg-primary)}.theme-cute .input{border-color:var(--border)}.theme-cute .input:focus{border-color:var(--accent)}.theme-cute .tag{background:var(--accent-light);color:var(--accent-dark)}.theme-cute .modal-box{background:#fff}.theme-cute .select{border-color:var(--border)}.theme-campus{--bg-primary: #e8f4fd;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-nav: #5b9bd5;--bg-topbar: rgba(91,155,213,.92);--text-primary: #2c3e50;--text-secondary: #5a6e7e;--text-muted: #9aabbb;--accent: #4a90d9;--accent-light: #a8d4f5;--accent-dark: #2a6bb0;--success: #52c41a;--warning: #faad14;--danger: #ff4d4f;--border: #cde4f5;--shadow: rgba(74,144,217,.12);--radius: 12px;--radius-sm: 8px;--font-cute: "PingFang SC", "Microsoft YaHei", sans-serif}.theme-campus .app-content::-webkit-scrollbar-thumb{background:#a8d4f5}.theme-campus .card{background:var(--bg-card);border:1px solid var(--border)}.theme-campus .btn-primary{background:linear-gradient(135deg,#4a90d9,#5ba0e8)}.theme-campus .btn-secondary{background:linear-gradient(135deg,#52c41a,#73d13d)}.theme-campus .btn-outline{border-color:var(--accent);color:var(--accent)}.theme-campus .btn-outline:hover{background:var(--bg-primary)}.theme-campus .input{border-color:var(--border)}.theme-campus .input:focus{border-color:var(--accent)}.theme-campus .tag{background:var(--accent-light);color:var(--accent-dark)}.theme-campus .modal-box{background:#fff}.theme-campus .select{border-color:var(--border)}.theme-simple{--bg-primary: #f5f5f7;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-nav: #1d1d1f;--bg-topbar: rgba(255,255,255,.9);--text-primary: #1d1d1f;--text-secondary: #6e6e73;--text-muted: #aeaeb2;--accent: #007aff;--accent-light: #cce4ff;--accent-dark: #0056b3;--success: #34c759;--warning: #ff9500;--danger: #ff3b30;--border: #d2d2d7;--shadow: rgba(0,0,0,.06);--radius: 12px;--radius-sm: 8px;--font-cute: -apple-system, "Helvetica Neue", "PingFang SC", sans-serif}.theme-simple .app-content::-webkit-scrollbar-thumb{background:#c7c7cc}.theme-simple .card{background:var(--bg-card);border:none;box-shadow:0 1px 3px #0000000f}.theme-simple .btn-primary{background:var(--accent)}.theme-simple .btn-secondary{background:var(--text-secondary)}.theme-simple .btn-outline{border-color:var(--accent);color:var(--accent)}.theme-simple .btn-outline:hover{background:var(--accent-light)}.theme-simple .input{border-color:var(--border)}.theme-simple .input:focus{border-color:var(--accent)}.theme-simple .tag{background:var(--accent-light);color:var(--accent-dark)}.theme-simple .modal-box{background:#fff}.theme-simple .select{border-color:var(--border)}
