*{box-sizing:border-box;margin:0;padding:0}:root{--primary:#1a73e8;--primary-dark:#1557b0;--danger:#dc3545;--success:#28a745;--warning:#ffc107;--bg:#f5f7fa;--card:#fff;--text:#1a1a2e;--text-light:#666;--border:#e0e0e0;--radius:12px;--sidebar-bg:#1a1a2e;--sidebar-hover:#2d2d44;--sidebar-active:#1a73e8}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#app{flex-direction:column;min-height:100vh;display:flex}.wecom-loading{background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100vh;display:flex}.wecom-loading-spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite wecom-spin}.wecom-loading-text{color:var(--text-light);font-size:14px}@keyframes wecom-spin{to{transform:rotate(360deg)}}.impersonate-banner{color:#fff;z-index:200;background:linear-gradient(90deg,#e65100,#ff8f00);justify-content:space-between;align-items:center;height:48px;padding:0 20px;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #00000026}.impersonate-info{align-items:center;gap:8px;font-size:14px;display:flex}.impersonate-icon{font-size:18px}.impersonate-back{color:#fff;cursor:pointer;background:0 0;border:2px solid #fffc;border-radius:6px;padding:6px 16px;font-size:13px;font-weight:500;transition:all .2s}.impersonate-back:hover{background:#fff3}.admin-layout{flex:1;display:flex}.admin-sidebar{background:var(--sidebar-bg);color:#fffc;flex-direction:column;width:220px;min-height:calc(100vh - 48px);display:flex;position:sticky;top:0;box-shadow:2px 0 8px #0000001a}.sidebar-brand{border-bottom:1px solid #ffffff1a;align-items:center;gap:10px;padding:20px 16px;display:flex}.brand-icon{font-size:24px}.brand-text{color:#fff;font-size:16px;font-weight:700}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:12px 8px;display:flex}.nav-item{color:#ffffffb3;cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:10px 14px;font-size:14px;text-decoration:none;transition:all .2s;display:flex}.nav-item:hover{background:var(--sidebar-hover);color:#fff}.nav-item.router-link-active,.nav-item.router-link-exact-active{background:var(--sidebar-active);color:#fff;font-weight:500}.nav-icon{text-align:center;width:20px;font-size:16px}.sidebar-footer{border-top:1px solid #ffffff1a;flex-direction:column;gap:2px;padding:12px 8px;display:flex}.user-view-link,.logout-link{color:#ffffff80}.logout-link:hover{color:#ff6b6b!important}.admin-main{flex:1;max-width:1200px;min-height:calc(100vh - 48px);padding:24px}.nav-bar{background:linear-gradient(135deg, var(--primary), #6c5ce7);color:#fff;z-index:100;justify-content:space-between;align-items:center;height:56px;padding:0 20px;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #00000026}.nav-brand{white-space:nowrap;font-size:18px;font-weight:700}.nav-links{gap:4px;display:flex}.nav-links a{color:#fffc;border-radius:8px;padding:8px 14px;font-size:14px;text-decoration:none;transition:all .2s}.nav-links a:hover,.nav-links a.router-link-active{color:#fff;background:#fff3}.nav-user{cursor:pointer;opacity:.8;white-space:nowrap;border-radius:8px;padding:6px 12px;font-size:13px;transition:all .2s}.nav-user:hover{opacity:1;background:#ffffff26}.main-content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:20px}.app-footer{text-align:center;color:var(--text-light);border-top:1px solid var(--border);padding:16px;font-size:12px}.btn{cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;padding:10px 20px;font-size:14px;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#c82333}.btn-warning{color:#fff;background:#e67e22}.btn-warning:hover{background:#d35400}.btn-success{background:var(--success);color:#fff}.btn-success:hover{background:#218838}.btn-sm{padding:6px 12px;font-size:13px}.btn-outline{border:1px solid var(--border);color:var(--text);background:0 0}.btn-outline:hover{border-color:var(--primary);color:var(--primary)}.card{background:var(--card);border-radius:var(--radius);margin-bottom:16px;padding:20px;box-shadow:0 1px 3px #00000014}.form-group{margin-bottom:16px}.form-group label{color:var(--text-light);margin-bottom:6px;font-size:14px;font-weight:500;display:block}.form-input{border:1px solid var(--border);background:#fff;border-radius:8px;width:100%;padding:10px 14px;font-size:15px;transition:border-color .2s}.form-input:focus{border-color:var(--primary);outline:none}.form-row{gap:12px;display:flex}.form-row .form-group{flex:1}.tag{border-radius:4px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-block}.tag-admin{color:#856404;background:#fff3cd}.tag-member{color:#155724;background:#d4edda}.tag-viewer{color:#0c5460;background:#d1ecf1}.tag-active{color:#155724;background:#d4edda}.tag-disabled{color:#721c24;background:#f8d7da}.tag-deleted{color:#383d41;background:#e2e3e5}.loading{text-align:center;color:var(--text-light);padding:40px}.error{color:var(--danger);padding:8px 0;font-size:14px}.empty{text-align:center;color:var(--text-light);padding:60px 20px}.empty-icon{margin-bottom:12px;font-size:48px}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:12px;font-size:14px}th{background:var(--bg);color:var(--text-light);font-size:13px;font-weight:600}.table-wrap{overflow-x:auto}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{border-radius:var(--radius);background:#fff;width:90%;max-width:500px;max-height:80vh;padding:24px;overflow-y:auto;box-shadow:0 20px 60px #0000004d}.modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-header h3{font-size:18px}.modal-close{cursor:pointer;color:var(--text-light);background:0 0;border:none;font-size:20px}.modal-footer{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}@media (width<=768px){.admin-sidebar{width:60px}.sidebar-brand .brand-text,.nav-item span:not(.nav-icon){display:none}.sidebar-brand{justify-content:center;padding:20px 8px}.nav-item{justify-content:center;padding:10px}.nav-icon{width:auto}.admin-main{padding:16px}}@media (width<=640px){.nav-bar{padding:0 12px}.nav-brand{font-size:15px}.nav-links a{padding:8px;font-size:13px}.nav-user{font-size:12px}.main-content{padding:12px}.form-row{flex-direction:column;gap:0}}
