.login-container[data-v-30a771fa]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2)}.login-box[data-v-30a771fa]{width:400px;padding:40px;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d}.login-header[data-v-30a771fa]{text-align:center;margin-bottom:30px}.login-header h1[data-v-30a771fa]{font-size:24px;color:#333;margin-bottom:8px}.login-header p[data-v-30a771fa]{color:#666;font-size:14px}.login-tabs[data-v-30a771fa]{display:flex;margin-bottom:30px;border-bottom:1px solid #eee}.tab[data-v-30a771fa]{flex:1;text-align:center;padding:12px;cursor:pointer;color:#666;border-bottom:2px solid transparent;transition:all .3s}.tab.active[data-v-30a771fa]{color:#667eea;border-bottom-color:#667eea;font-weight:500}.form-group[data-v-30a771fa]{margin-bottom:20px}.form-group label[data-v-30a771fa]{display:block;margin-bottom:8px;color:#333;font-size:14px}.form-group input[data-v-30a771fa]{width:100%;padding:12px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:border-color .3s}.form-group input[data-v-30a771fa]:focus{outline:none;border-color:#667eea}.password-input[data-v-30a771fa]{display:flex;align-items:center;border:1px solid #ddd;border-radius:6px;overflow:hidden}.password-input input[data-v-30a771fa]{flex:1;border:none;border-radius:0}.password-input input[data-v-30a771fa]:focus{border:none}.toggle-password[data-v-30a771fa]{padding:12px 16px;background:#f5f5f5;color:#666;border:none;border-left:1px solid #ddd;cursor:pointer;font-size:14px;white-space:nowrap}.toggle-password[data-v-30a771fa]:hover{background:#eee}.code-input[data-v-30a771fa]{display:flex;gap:10px}.code-input input[data-v-30a771fa]{flex:1}.send-code-btn[data-v-30a771fa]{padding:12px 16px;background:#667eea;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;white-space:nowrap}.send-code-btn[data-v-30a771fa]:disabled{background:#ccc;cursor:not-allowed}.submit-btn[data-v-30a771fa]{width:100%;padding:14px;background:#667eea;color:#fff;border:none;border-radius:6px;font-size:16px;cursor:pointer;transition:background .3s}.submit-btn[data-v-30a771fa]:hover:not(:disabled){background:#5568d3}.submit-btn[data-v-30a771fa]:disabled{background:#ccc;cursor:not-allowed}.error-message[data-v-30a771fa]{margin-top:16px;padding:12px;background:#fee;color:#f56c6c;border-radius:6px;font-size:14px;text-align:center}.login-page,#app-auth{min-height:100vh}#app-auth.module-home .sidebar{display:none}#app-auth .topbar-user{display:flex;align-items:center;gap:15px}#app-auth .logout-btn{color:#666;text-decoration:none;font-size:14px}#app-auth .logout-btn:hover{color:#f56c6c}.login-btn{color:#409eff;text-decoration:none;font-size:14px}.login-btn:hover{color:#66b1ff}.permission-container[data-v-2f484f8b]{padding:20px}.page-header[data-v-2f484f8b]{margin-bottom:20px}.page-header h2[data-v-2f484f8b]{font-size:20px;color:#333}.admin-list[data-v-2f484f8b]{background:#fff;border-radius:8px;padding:20px;box-shadow:0 2px 8px #0000001a}.admin-list h3[data-v-2f484f8b]{font-size:16px;color:#333;margin-bottom:16px}.admin-table[data-v-2f484f8b]{width:100%;border-collapse:collapse}.admin-table th[data-v-2f484f8b],.admin-table td[data-v-2f484f8b]{padding:12px;text-align:left;border-bottom:1px solid #eee}.admin-table th[data-v-2f484f8b]{background:#f5f5f5;font-weight:500;color:#666}.status-badge[data-v-2f484f8b]{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px}.status-badge.active[data-v-2f484f8b]{background:#e8f5e9;color:#4caf50}.status-badge.inactive[data-v-2f484f8b]{background:#ffebee;color:#f44336}.module-tag[data-v-2f484f8b]{display:inline-block;padding:4px 8px;margin:2px;background:#e3f2fd;color:#1976d2;border-radius:4px;font-size:12px}.no-permission[data-v-2f484f8b]{color:#999;font-size:12px}.assign-btn[data-v-2f484f8b]{padding:6px 12px;background:#667eea;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:12px}.assign-btn[data-v-2f484f8b]:hover{background:#5568d3}.modal[data-v-2f484f8b]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-2f484f8b]{background:#fff;border-radius:8px;width:400px;max-width:90%}.modal-header[data-v-2f484f8b]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #eee}.modal-header h3[data-v-2f484f8b]{font-size:16px;color:#333}.close-btn[data-v-2f484f8b]{background:none;border:none;font-size:24px;cursor:pointer;color:#999}.modal-body[data-v-2f484f8b]{padding:20px}.module-selection[data-v-2f484f8b]{display:flex;flex-direction:column;gap:12px}.module-checkbox[data-v-2f484f8b]{display:flex;align-items:center;gap:8px;cursor:pointer}.module-checkbox input[data-v-2f484f8b]{width:18px;height:18px}.modal-footer[data-v-2f484f8b]{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #eee}.cancel-btn[data-v-2f484f8b],.confirm-btn[data-v-2f484f8b]{padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px}.cancel-btn[data-v-2f484f8b]{background:#f5f5f5;border:none;color:#666}.confirm-btn[data-v-2f484f8b]{background:#667eea;border:none;color:#fff}.confirm-btn[data-v-2f484f8b]:hover{background:#5568d3}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:#f5f5f5}#topbar-trigger{position:fixed;top:0;left:0;right:0;height:12px;z-index:1001;background:transparent}.topbar{position:fixed;top:0;left:0;right:0;height:56px;background:#1a1d29f2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 20px #0003;z-index:1000;display:flex;align-items:center;color:#fff;padding:0 24px;transform:translateY(-110%);transition:transform .4s cubic-bezier(.4,0,.2,1)}.topbar.show{transform:translateY(0)}.topbar-logo{font-weight:700;font-size:1.1rem;margin-right:40px;display:flex;align-items:center;gap:8px}.topbar-logo-img{height:32px;width:auto}.topbar-nav{display:flex;gap:8px;flex:1}.topbar-item{color:#94a3b8;text-decoration:none;padding:8px 16px;border-radius:6px;transition:all .2s}.topbar-item:hover{color:#fff;background:#ffffff1a}.topbar-item.active{color:#fff;background:#7c3aed99}.topbar-user{color:#94a3b8;font-size:14px}.app{display:flex;min-height:100vh;padding-top:0}.app.module-home .sidebar{display:none}.app.module-home .main{max-width:100%}.home-content{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:48px;text-align:center}.home-logo{max-width:280px;height:auto;margin-bottom:24px}.home-text{margin:0;font-size:1rem;color:#64748b}.sidebar{width:220px;background:#1a1d29;color:#e2e8f0;padding:20px 0}.logo{padding:0 20px 20px;font-weight:700;font-size:1.1rem;border-bottom:1px solid #2d3340;margin-bottom:16px}.nav-item{display:block;padding:10px 20px;color:#94a3b8;text-decoration:none;border-radius:6px;margin:0 8px}.nav-item:hover{color:#e2e8f0;background:#2d3340}.nav-item.active{color:#a78bfa;background:#a78bfa26}.main{flex:1;padding:24px;overflow:auto}.page{background:#fff;border-radius:12px;padding:24px;box-shadow:0 1px 3px #0000000f}.page.hidden{display:none}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-header h1{margin:0;font-size:1.25rem;font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;cursor:pointer;font-size:14px;text-decoration:none;color:#334155}.btn:hover{background:#f8fafc;border-color:#cbd5e1}.btn-primary{background:#7c3aed;border-color:#7c3aed;color:#fff}.btn-primary:hover{background:#6d28d9}.btn-danger{background:#ef4444;border-color:#ef4444;color:#fff}.btn-danger:hover{background:#dc2626}.btn-sm{padding:6px 12px;font-size:12px}.toolbar{display:flex;gap:12px;margin-bottom:16px;align-items:center}.toolbar input[type=text]{width:200px;padding:8px 12px;border:1px solid #e2e8f0;border-radius:8px}.toolbar select{padding:8px 12px;border:1px solid #e2e8f0;border-radius:8px;min-width:120px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:12px;text-align:left;border-bottom:1px solid #f1f5f9}.table th{font-weight:600;color:#64748b;font-size:12px;text-transform:uppercase}.table tbody tr:hover{background:#f8fafc}.table .cover-thumb{width:64px;height:36px;object-fit:cover;border-radius:6px;vertical-align:middle;margin-right:8px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}.status-0{background:#94a3b8}.status-1{background:#22c55e}.status-2{background:#64748b}.status-3{background:#ef4444}.pagination{margin-top:16px;display:flex;gap:8px;align-items:center}.pagination button{padding:6px 12px;border:1px solid #e2e8f0;background:#fff;border-radius:6px;cursor:pointer}.pagination button:disabled{opacity:.5;cursor:not-allowed}.form-create{max-width:640px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:6px;font-weight:500;color:#334155}.form-group input[type=text],.form-group input[type=datetime-local],.form-group select{width:100%;padding:10px 12px;border:1px solid #e2e8f0;border-radius:8px}.datetime-picker{display:flex;gap:8px;align-items:center}.datetime-picker input[type=datetime-local]{flex:1}.form-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.cover-upload{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.cover-preview{width:160px;height:90px;border:1px dashed #cbd5e1;border-radius:8px;background:#f8fafc;overflow:hidden}.cover-preview img{width:100%;height:100%;object-fit:cover}#cover-file{display:none}.form-actions{display:flex;gap:12px;margin-top:24px}.detail-card{background:#f8fafc;border-radius:12px;padding:20px;margin-bottom:20px}.detail-card h3{margin:0 0 12px;font-size:14px;color:#64748b}.detail-row{display:flex;align-items:center;margin-bottom:12px;gap:12px}.detail-row .label{min-width:100px;color:#64748b}.detail-row .value{flex:1;word-break:break-all}.detail-row .copy-btn{padding:4px 10px;font-size:12px}.detail-cover{width:200px;height:112px;object-fit:cover;border-radius:8px;margin-bottom:12px}.alert{padding:12px 16px;border-radius:8px;margin-bottom:16px}.alert-info{background:#eff6ff;color:#1e40af}.alert-success{background:#f0fdf4;color:#166534}.detail-section{margin-bottom:24px}.detail-section h3{margin:0 0 16px;font-size:16px;font-weight:600;color:#1e293b;border-bottom:1px solid #e2e8f0;padding-bottom:12px}.form-edit{max-width:640px;background:#f8fafc;padding:20px;border-radius:12px}#edit-cover-file{display:none}
