:root,[data-theme=midnight]{--bg: #0a0e1a;--bg-grad: radial-gradient( 1200px 600px at 80% -10%, rgba(79, 140, 255, .12), transparent ), radial-gradient( 900px 500px at -10% 100%, rgba(139, 92, 246, .1), transparent );--bg-elev: #0f1524;--bg-card: #161e34;--bg-hover: #1c2742;--bg-input: #0a0f1c;--border: #1f2a44;--border-strong: #2d3a5c;--text: #e7ecf5;--text-dim: #8a99b3;--text-mute: #5d6b85;--primary: #4f8cff;--primary-hover: #6ba0ff;--primary-soft: rgba(79, 140, 255, .14);--primary-ring: rgba(79, 140, 255, .35);--success: #10b981;--success-soft: rgba(16, 185, 129, .16);--warn: #f59e0b;--warn-soft: rgba(245, 158, 11, .16);--danger: #ef4444;--danger-soft: rgba(239, 68, 68, .16);--admin: #c4a3ff;--admin-soft: rgba(196, 163, 255, .16);--trusted: #6ee7a8;--trusted-soft: rgba(110, 231, 168, .16);--shadow: 0 8px 24px rgba(0, 0, 0, .35);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .25);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .55);--header-bg: linear-gradient( 180deg, rgba(15, 21, 36, .92), rgba(15, 21, 36, .78) );--brand-grad: linear-gradient(135deg, #4f8cff, #8b5cf6);--theme-color: #0a0e1a;--avatar-1: linear-gradient(135deg, #4f8cff, #6c5ce7);--avatar-2: linear-gradient(135deg, #f59e0b, #ef4444);--avatar-3: linear-gradient(135deg, #10b981, #06b6d4);--avatar-4: linear-gradient(135deg, #ec4899, #8b5cf6);--avatar-5: linear-gradient(135deg, #f97316, #facc15);--avatar-6: linear-gradient(135deg, #06b6d4, #3b82f6);--scrollbar-thumb: #2d3a5c;--scrollbar-thumb-hover: #3d4d75;--backdrop: rgba(0, 0, 0, .6);--kbd-bg: #1a2540}[data-theme=daylight]{--bg: #f4f6fb;--bg-grad: radial-gradient( 1200px 600px at 80% -10%, rgba(37, 99, 235, .06), transparent ), radial-gradient( 900px 500px at -10% 100%, rgba(99, 102, 241, .05), transparent );--bg-elev: #ffffff;--bg-card: #ffffff;--bg-hover: #f0f3f9;--bg-input: #ffffff;--border: #e3e8f0;--border-strong: #cbd5e1;--text: #0f172a;--text-dim: #64748b;--text-mute: #94a3b8;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-soft: rgba(37, 99, 235, .1);--primary-ring: rgba(37, 99, 235, .25);--success: #059669;--success-soft: rgba(5, 150, 105, .1);--warn: #d97706;--warn-soft: rgba(217, 119, 6, .1);--danger: #dc2626;--danger-soft: rgba(220, 38, 38, .1);--admin: #7c3aed;--admin-soft: rgba(124, 58, 237, .1);--trusted: #059669;--trusted-soft: rgba(5, 150, 105, .1);--shadow: 0 1px 3px rgba(15, 23, 42, .06), 0 6px 18px rgba(15, 23, 42, .05);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04);--shadow-lg: 0 20px 50px rgba(15, 23, 42, .15);--header-bg: linear-gradient( 180deg, rgba(255, 255, 255, .92), rgba(255, 255, 255, .78) );--brand-grad: linear-gradient(135deg, #2563eb, #7c3aed);--theme-color: #f4f6fb;--avatar-1: linear-gradient(135deg, #2563eb, #7c3aed);--avatar-2: linear-gradient(135deg, #f59e0b, #ef4444);--avatar-3: linear-gradient(135deg, #10b981, #06b6d4);--avatar-4: linear-gradient(135deg, #ec4899, #8b5cf6);--avatar-5: linear-gradient(135deg, #f97316, #facc15);--avatar-6: linear-gradient(135deg, #06b6d4, #3b82f6);--scrollbar-thumb: #cbd5e1;--scrollbar-thumb-hover: #94a3b8;--backdrop: rgba(15, 23, 42, .45);--kbd-bg: #f1f5f9}[data-theme=sunset]{--bg: #16101f;--bg-grad: radial-gradient( 1200px 600px at 80% -10%, rgba(249, 115, 22, .18), transparent ), radial-gradient( 900px 500px at -10% 100%, rgba(236, 72, 153, .16), transparent );--bg-elev: #1c152b;--bg-card: #251b3a;--bg-hover: #2e2247;--bg-input: #160f23;--border: #2e2547;--border-strong: #433966;--text: #f3e8ff;--text-dim: #b39bc7;--text-mute: #806f93;--primary: #f97316;--primary-hover: #fb923c;--primary-soft: rgba(249, 115, 22, .18);--primary-ring: rgba(249, 115, 22, .35);--success: #34d399;--success-soft: rgba(52, 211, 153, .16);--warn: #fbbf24;--warn-soft: rgba(251, 191, 36, .16);--danger: #f43f5e;--danger-soft: rgba(244, 63, 94, .16);--admin: #f0abfc;--admin-soft: rgba(240, 171, 252, .16);--trusted: #6ee7b7;--trusted-soft: rgba(110, 231, 183, .16);--shadow: 0 8px 24px rgba(0, 0, 0, .45);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .65);--header-bg: linear-gradient( 180deg, rgba(28, 21, 43, .92), rgba(28, 21, 43, .78) );--brand-grad: linear-gradient(135deg, #f97316, #ec4899);--theme-color: #16101f;--avatar-1: linear-gradient(135deg, #f97316, #ec4899);--avatar-2: linear-gradient(135deg, #fbbf24, #f97316);--avatar-3: linear-gradient(135deg, #f43f5e, #ec4899);--avatar-4: linear-gradient(135deg, #c084fc, #f0abfc);--avatar-5: linear-gradient(135deg, #fb7185, #f59e0b);--avatar-6: linear-gradient(135deg, #d946ef, #f43f5e);--scrollbar-thumb: #433966;--scrollbar-thumb-hover: #5b4d85;--backdrop: rgba(15, 8, 28, .65);--kbd-bg: #2e2547}[data-theme=forest]{--bg: #0a1610;--bg-grad: radial-gradient( 1200px 600px at 80% -10%, rgba(34, 197, 94, .1), transparent ), radial-gradient( 900px 500px at -10% 100%, rgba(132, 204, 22, .08), transparent );--bg-elev: #0f1f18;--bg-card: #15291f;--bg-hover: #1c3428;--bg-input: #0a1610;--border: #1f3a2d;--border-strong: #2d5440;--text: #e0f2ea;--text-dim: #88a89b;--text-mute: #587769;--primary: #22c55e;--primary-hover: #4ade80;--primary-soft: rgba(34, 197, 94, .16);--primary-ring: rgba(34, 197, 94, .32);--success: #10b981;--success-soft: rgba(16, 185, 129, .16);--warn: #eab308;--warn-soft: rgba(234, 179, 8, .16);--danger: #ef4444;--danger-soft: rgba(239, 68, 68, .16);--admin: #a3e635;--admin-soft: rgba(163, 230, 53, .16);--trusted: #5eead4;--trusted-soft: rgba(94, 234, 212, .16);--shadow: 0 8px 24px rgba(0, 0, 0, .4);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .28);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .6);--header-bg: linear-gradient( 180deg, rgba(15, 31, 24, .92), rgba(15, 31, 24, .78) );--brand-grad: linear-gradient(135deg, #22c55e, #84cc16);--theme-color: #0a1610;--avatar-1: linear-gradient(135deg, #22c55e, #84cc16);--avatar-2: linear-gradient(135deg, #eab308, #84cc16);--avatar-3: linear-gradient(135deg, #14b8a6, #22c55e);--avatar-4: linear-gradient(135deg, #5eead4, #a3e635);--avatar-5: linear-gradient(135deg, #84cc16, #14b8a6);--avatar-6: linear-gradient(135deg, #10b981, #84cc16);--scrollbar-thumb: #2d5440;--scrollbar-thumb-hover: #3d7255;--backdrop: rgba(0, 0, 0, .6);--kbd-bg: #1f3a2d}:root{--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--radius-xl: 20px;--header-h: 60px;--maxw: 1240px;--transition: .18s ease;--sidebar-w: 240px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px)}*{box-sizing:border-box}*:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--radius-sm)}button:focus-visible,.menu-toggle:focus-visible,.theme-trigger:focus-visible{outline-offset:4px}html,body{margin:0;padding:0;background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;overflow-x:hidden;transition:background-color var(--transition),color var(--transition)}#app{min-height:100vh;display:flex;flex-direction:column}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:5px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover);background-clip:padding-box;border:2px solid transparent}::selection{background:var(--primary-ring);color:var(--text)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:var(--primary);color:#fff;border:none;padding:9px 16px;border-radius:var(--radius);font-weight:500;font-size:13px;display:inline-flex;align-items:center;gap:6px;transition:all var(--transition);white-space:nowrap;line-height:1}button:hover:not(:disabled){background:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-sm)}button:active:not(:disabled){transform:translateY(0)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:var(--bg-elev);color:var(--text);border:1px solid var(--border-strong)}button.secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--primary);color:var(--primary)}button.danger{background:var(--danger)}button.danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger),black 15%)}button.ghost{background:transparent;padding:7px 10px;color:var(--text-dim)}button.ghost:hover{color:var(--text);background:var(--bg-hover)}button.icon-btn{padding:8px}input,select,textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;width:100%;outline:none;transition:all var(--transition);color:var(--text)}input::placeholder,textarea::placeholder{color:var(--text-mute)}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring);background:var(--bg-elev)}input[type=checkbox],input[type=radio]{width:16px;height:16px;padding:0;accent-color:var(--primary);cursor:pointer}input[type=file]{padding:8px;cursor:pointer}input[type=file]::file-selector-button{background:var(--bg-hover);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 12px;margin-right:10px;cursor:pointer;font-size:12px}textarea{resize:vertical;min-height:80px;font-family:inherit}label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:6px;font-weight:500}label.checkbox-label{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text);cursor:pointer;margin-bottom:0;font-weight:400;padding:8px 12px;border-radius:var(--radius-sm);transition:background var(--transition)}label.checkbox-label:hover{background:var(--bg-hover)}.form-group{margin-bottom:16px}.form-row{display:flex;gap:14px;align-items:flex-start}.form-row>*{flex:1;min-width:0}.form-row .form-group{margin-bottom:0}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px;box-shadow:var(--shadow)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);letter-spacing:.02em}.badge.admin{background:var(--admin-soft);color:var(--admin);border-color:color-mix(in srgb,var(--admin),transparent 70%)}.badge.trusted{background:var(--trusted-soft);color:var(--trusted);border-color:color-mix(in srgb,var(--trusted),transparent 70%)}.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:color-mix(in srgb,var(--warn),transparent 70%)}.badge.danger{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb,var(--danger),transparent 70%)}.muted{color:var(--text-dim)}.tiny{font-size:12px}.error,.success,.info{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:var(--radius);margin-bottom:16px;font-size:13px;border:1px solid}.error{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger),transparent 60%);color:var(--danger)}.success{background:var(--success-soft);border-color:color-mix(in srgb,var(--success),transparent 60%);color:var(--success)}.info{background:var(--primary-soft);border-color:color-mix(in srgb,var(--primary),transparent 60%);color:var(--primary)}.login-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:calc(24px + var(--safe-top)) calc(24px + var(--safe-right)) calc(24px + var(--safe-bottom)) calc(24px + var(--safe-left));position:relative;min-height:100vh;background:var(--bg-grad)}.login-wrap:before{content:"";position:absolute;inset:0;background-image:var(--bg-grad);pointer-events:none;opacity:.6}.login-card{width:100%;max-width:420px;position:relative;z-index:1;padding:36px 32px;background:var(--bg-card);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);animation:cardIn .35s cubic-bezier(.16,1,.3,1)}@keyframes cardIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.login-card h1{margin:0 0 4px;font-size:26px;text-align:center;font-weight:700;background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:-.01em}.login-card .brand-row{display:flex;justify-content:center;margin-bottom:12px}.login-card .brand-row .brand-icon{width:52px;height:52px;border-radius:14px;background:var(--brand-grad);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 12px 30px var(--primary-soft)}.login-card .sub{text-align:center;color:var(--text-dim);margin-bottom:28px;font-size:13px}.login-card .footer-hint{margin-top:22px;text-align:center;font-size:12px;color:var(--text-mute);padding-top:18px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:center;gap:6px}.login-card .footer-hint svg{color:var(--warn)}.login-theme-toggle{position:absolute;top:16px;right:16px;z-index:2}.app-header{height:calc(var(--header-h) + var(--safe-top));min-height:var(--header-h);display:flex;align-items:center;padding:var(--safe-top) calc(20px + var(--safe-right)) 0 calc(20px + var(--safe-left));gap:12px;background:var(--header-bg);backdrop-filter:blur(12px) saturate(150%);-webkit-backdrop-filter:blur(12px) saturate(150%);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}.app-header .brand{font-weight:700;font-size:15px;display:flex;align-items:center;gap:10px;color:var(--text);min-width:0}.app-header .brand a{color:var(--text);white-space:nowrap}.app-header .brand a:hover{color:var(--primary)}.app-header .brand-text{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-header .brand-icon{width:32px;height:32px;border-radius:9px;background:var(--brand-grad);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 4px 12px var(--primary-soft);flex-shrink:0}.app-header .spacer{flex:1}.app-header .me{display:flex;align-items:center;gap:10px;color:var(--text-dim);font-size:13px;padding:4px 12px 4px 4px;border-radius:999px;background:var(--bg-elev);border:1px solid var(--border);transition:all var(--transition);min-width:0;max-width:240px}.app-header .me:hover{background:var(--bg-hover);border-color:var(--primary)}.app-header .me .avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;overflow:hidden;color:#fff;background:var(--avatar-1);flex-shrink:0}.app-header .me .avatar img{width:100%;height:100%;object-fit:cover}.app-header .me .name{color:var(--text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-toggle{display:none;background:transparent;color:var(--text);padding:8px;border-radius:var(--radius);border:1px solid transparent;flex-shrink:0}.menu-toggle:hover{background:var(--bg-hover)}.app-body{display:flex;flex:1;max-width:var(--maxw);width:100%;margin:0 auto;min-width:0;align-items:stretch}.sidebar{width:var(--sidebar-w);flex-shrink:0;padding:24px 12px 20px;border-right:1px solid var(--border);min-height:calc(100vh - var(--header-h));position:sticky;top:var(--header-h);align-self:flex-start;max-height:calc(100vh - var(--header-h));overflow-y:auto}.sidebar .nav-group{margin-bottom:24px}.sidebar .nav-group-title{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-mute);padding:0 12px 8px;font-weight:600}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius);color:var(--text-dim);font-size:14px;font-weight:500;transition:all var(--transition);border:1px solid transparent;position:relative;text-decoration:none}.sidebar nav a:hover{background:var(--bg-hover);color:var(--text)}.sidebar nav a.active{background:var(--primary-soft);color:var(--primary);border-color:color-mix(in srgb,var(--primary),transparent 80%);font-weight:600;box-shadow:inset 0 1px color-mix(in srgb,var(--primary),transparent 70%)}.sidebar nav a.active:before{content:"";position:absolute;left:-12px;top:50%;transform:translateY(-50%);width:3px;height:60%;border-radius:2px;background:var(--primary);box-shadow:0 0 12px var(--primary-soft)}.sidebar nav a.active svg{color:var(--primary)}.sidebar nav a .icon{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.content{flex:1;padding:28px 32px 56px;min-width:0;max-width:100%}.content-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:24px;gap:16px;flex-wrap:wrap}.content-header h2{margin:0;font-size:24px;font-weight:700;display:flex;align-items:center;gap:10px;letter-spacing:-.01em}.content-header h2 svg{color:var(--primary)}.content-header .sub{color:var(--text-dim);font-size:13px;font-weight:400;margin-top:4px}.content-header .actions{display:flex;gap:8px;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:28px}.stat{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px 20px;position:relative;overflow:hidden;transition:all var(--transition);isolation:isolate}.stat:before{content:"";position:absolute;top:0;right:0;width:110px;height:110px;background:var(--primary-soft);border-radius:50%;transform:translate(40%,-40%);filter:blur(22px);z-index:-1;opacity:.85}.stat:after{content:"";position:absolute;bottom:-30px;left:-30px;width:80px;height:80px;background:var(--primary-soft);border-radius:50%;filter:blur(28px);z-index:-1;opacity:.5}.stat:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--primary)}.stat .stat-icon{width:38px;height:38px;border-radius:10px;background:var(--primary-soft);color:var(--primary);display:flex;align-items:center;justify-content:center;margin-bottom:12px;border:1px solid color-mix(in srgb,var(--primary),transparent 80%)}.stat.stat-warn:before{background:var(--warn-soft)}.stat.stat-warn .stat-icon{background:var(--warn-soft);color:var(--warn);border-color:color-mix(in srgb,var(--warn),transparent 80%)}.stat.stat-warn:hover{border-color:var(--warn)}.stat.stat-danger:before{background:var(--danger-soft)}.stat.stat-danger .stat-icon{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb,var(--danger),transparent 80%)}.stat.stat-danger:after{background:var(--danger-soft)}.stat.stat-danger:hover{border-color:var(--danger)}.stat .label{color:var(--text-dim);font-size:12px;margin-bottom:4px;font-weight:500;letter-spacing:.02em}.stat .value{font-size:28px;font-weight:700;line-height:1.1;letter-spacing:-.02em}.stat .extra{color:var(--text-mute);font-size:11px;margin-top:6px}.section-title{font-size:14px;font-weight:600;color:var(--text);margin:28px 0 14px;display:flex;align-items:center;gap:8px}.section-title .count{color:var(--text-dim);font-weight:400;font-size:12px}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:18px;flex-wrap:wrap}.toolbar>:last-child{margin-left:auto}.toolbar .search-wrap{flex:1;min-width:220px;position:relative;min-width:0}.toolbar .search-wrap svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-mute);pointer-events:none}.toolbar .search-wrap input{padding-left:38px}.toolbar .filters{display:flex;gap:4px;padding:4px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap}.toolbar .filters button{padding:6px 12px;font-size:12px;background:transparent;color:var(--text-dim);font-weight:500;border-radius:var(--radius-sm);white-space:nowrap}.toolbar .filters button:hover{color:var(--text);background:var(--bg-hover);transform:none;box-shadow:none}.toolbar .filters button.active{background:var(--primary);color:#fff;box-shadow:0 2px 8px var(--primary-soft)}.user-list{display:flex;flex-direction:column;gap:12px}.user-row{display:grid;grid-template-columns:1fr;gap:14px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px 20px;transition:all var(--transition);position:relative;overflow:hidden}.user-row:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary);opacity:0;transition:opacity var(--transition)}.user-row:hover{border-color:var(--primary);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.user-row:hover:before{opacity:1}.user-row.is-locked{border-color:color-mix(in srgb,var(--danger),transparent 60%);background:color-mix(in srgb,var(--danger),transparent 95%)}.user-row.is-locked:hover{border-color:var(--danger)}.user-row .head{display:flex;align-items:center;gap:12px;min-width:0}.user-row .avatar{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;overflow:hidden;flex-shrink:0;color:#fff;background:var(--avatar-1);box-shadow:0 4px 10px #00000026}.user-row .avatar.avatar-2{background:var(--avatar-2)}.user-row .avatar.avatar-3{background:var(--avatar-3)}.user-row .avatar.avatar-4{background:var(--avatar-4)}.user-row .avatar.avatar-5{background:var(--avatar-5)}.user-row .avatar.avatar-6{background:var(--avatar-6)}.user-row .avatar img{width:100%;height:100%;object-fit:cover}.user-row .name{font-weight:600;font-size:15px}.user-row .meta{color:var(--text-dim);font-size:12px;word-break:break-word}.user-row .badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}.user-row .user-meta{display:flex;flex-wrap:wrap;gap:10px 18px;font-size:12px;color:var(--text-dim)}.user-row .user-meta>div{display:flex;align-items:center;gap:5px}.user-row .user-meta svg{color:var(--text-mute)}.user-row .actions{display:flex;gap:6px;flex-wrap:wrap}.user-row .actions button{padding:6px 10px;font-size:12px}.user-row .actions button svg{width:13px;height:13px}@media (min-width: 768px){.user-row{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) auto;align-items:center;column-gap:18px}.user-row .user-meta{flex-direction:column;gap:5px}.user-row .actions{justify-content:flex-end}.user-row .head{min-width:0}.user-row .head>div{min-width:0}.user-row .name,.user-row .meta{word-break:break-word}}@media (min-width: 1024px){.user-row{grid-template-columns:minmax(0,2fr) minmax(0,1.1fr) auto}}.theme-switcher{position:relative}.theme-trigger{background:var(--bg-elev);color:var(--text-dim);border:1px solid var(--border);width:38px;height:38px;border-radius:var(--radius);padding:0;display:inline-flex;align-items:center;justify-content:center}.theme-trigger:hover{background:var(--bg-hover);color:var(--primary);border-color:var(--primary);transform:none;box-shadow:none}.theme-popover{position:absolute;top:calc(100% + 8px);right:0;min-width:240px;background:var(--bg-card);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:200;padding:8px;animation:popIn .15s ease}@keyframes popIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.theme-option{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border-radius:var(--radius);background:transparent;color:var(--text);text-align:left;justify-content:flex-start;font-size:13px}.theme-option:hover{background:var(--bg-hover);transform:none;box-shadow:none}.theme-option.active{background:var(--primary-soft);color:var(--primary)}.theme-swatch{width:28px;height:28px;border-radius:8px;flex-shrink:0;border:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;color:#fff}.theme-swatch.midnight{background:linear-gradient(135deg,#0a0e1a,#4f8cff)}.theme-swatch.daylight{background:linear-gradient(135deg,#f4f6fb,#2563eb)}.theme-swatch.sunset{background:linear-gradient(135deg,#16101f,#f97316)}.theme-swatch.forest{background:linear-gradient(135deg,#0a1610,#22c55e)}.theme-option .info{flex:1;min-width:0}.theme-option .name{font-weight:600}.theme-option .desc{font-size:11px;color:var(--text-dim)}.theme-option .check{color:var(--primary);opacity:0}.theme-option.active .check{opacity:1}.modal-backdrop{position:fixed;inset:0;background:var(--backdrop);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:max(16px,var(--safe-top)) max(16px,var(--safe-right)) max(16px,var(--safe-bottom)) max(16px,var(--safe-left));animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-card);border:1px solid var(--border-strong);border-radius:var(--radius-lg);max-width:520px;width:100%;max-height:90vh;overflow:auto;box-shadow:var(--shadow-lg);animation:modalIn .2s cubic-bezier(.16,1,.3,1)}@keyframes modalIn{0%{opacity:0;transform:scale(.95) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-header h3{margin:0;font-size:16px;font-weight:600;display:flex;align-items:center;gap:8px}.modal-header h3 svg{color:var(--primary)}.modal-header .modal-close{width:32px;height:32px;border-radius:var(--radius);display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1}.modal-body{padding:22px}.modal-footer{padding:14px 22px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px;background:var(--bg-elev);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.modal-footer>div{display:flex;gap:10px;width:100%;justify-content:flex-end}.footer-row{display:flex;gap:10px;justify-content:flex-end;width:100%}.avatar-preview-row{display:flex;align-items:center;gap:12px;margin-top:8px}.avatar-preview{width:56px;height:56px;border-radius:50%;background:var(--bg-elev);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-dim);font-weight:700;font-size:18px;overflow:hidden;flex-shrink:0}.avatar-preview img{width:100%;height:100%;object-fit:cover}.tmp-pwd{background:var(--bg-input);border:1px dashed var(--warn);padding:12px 14px;border-radius:var(--radius);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;letter-spacing:1px;word-break:break-all;color:var(--warn);user-select:all;font-weight:600;margin:10px 0}@media (max-width: 960px){.content{padding:22px 20px 48px}.content-header h2{font-size:20px}.app-header .brand-text{max-width:32vw}}@media (max-width: 720px){:root{--header-h: 56px}.menu-toggle{display:inline-flex}.app-body{flex-direction:column;max-width:100%}.app-header{padding-left:calc(12px + var(--safe-left));padding-right:calc(12px + var(--safe-right));gap:8px}.app-header .brand{font-size:14px}.app-header .brand-text{max-width:36vw}.app-header .me .name{display:none}.app-header .me{padding:3px 6px 3px 3px;gap:0;max-width:56px}.app-header .me .avatar{width:30px;height:30px}.sidebar{position:fixed;top:calc(var(--header-h) + var(--safe-top));left:0;bottom:0;width:min(82vw,280px);background:var(--bg-elev);transform:translate(-100%);transition:transform .22s ease;z-index:60;border-right:1px solid var(--border);padding-top:12px;padding-left:calc(12px + var(--safe-left));padding-right:12px;box-shadow:var(--shadow-lg);max-height:none}.sidebar.open{transform:translate(0)}.sidebar-backdrop{position:fixed;inset:calc(var(--header-h) + var(--safe-top)) 0 0 0;background:var(--backdrop);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:55;animation:fadeIn .18s}.content{padding:18px 16px calc(40px + var(--safe-bottom))}.content-header h2{font-size:18px}.content-header{flex-direction:column;align-items:stretch}.content-header .actions{width:100%}.content-header .actions button{flex:1;justify-content:center}.form-row{flex-direction:column;gap:0}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:22px}.stat{padding:14px 14px 12px}.stat .value{font-size:22px}.stat .label{font-size:11px}.stat .stat-icon{width:32px;height:32px;margin-bottom:10px}.user-row{padding:14px}.toolbar{gap:8px}.toolbar .search-wrap{flex-basis:100%;min-width:0}.toolbar .filters{width:100%;overflow-x:auto;flex-wrap:nowrap}.toolbar .filters::-webkit-scrollbar{height:4px}.toolbar>:last-child{margin-left:0;width:100%;justify-content:stretch}.toolbar>:last-child button{width:100%;justify-content:center}.theme-trigger{width:36px;height:36px}.theme-popover{right:-8px;min-width:220px}.modal{max-height:calc(100vh - 32px)}.modal-header,.modal-body,.modal-footer{padding-left:18px;padding-right:18px}.modal-footer{flex-direction:column-reverse;gap:10px}.modal-footer>*{width:100%;justify-content:center}.toast-container{left:12px;right:12px;align-items:stretch}.toast{min-width:0;max-width:none;width:100%}}@media (max-width: 420px){.stats{grid-template-columns:1fr}.login-card{padding:28px 22px}.login-card h1{font-size:22px}}.toast-container{position:fixed;top:calc(16px + var(--safe-top));right:calc(16px + var(--safe-right));left:calc(16px + var(--safe-left));z-index:300;display:flex;flex-direction:column;gap:8px;pointer-events:none;align-items:flex-end}.toast{background:var(--bg-card);border:1px solid var(--border-strong);border-left:3px solid var(--primary);padding:10px 16px;border-radius:var(--radius);box-shadow:var(--shadow-lg);font-size:13px;color:var(--text);min-width:240px;max-width:360px;animation:toastIn .2s cubic-bezier(.16,1,.3,1);pointer-events:auto;width:fit-content}.toast.toast-success{border-left-color:var(--success)}.toast.toast-error{border-left-color:var(--danger)}.toast.toast-warn{border-left-color:var(--warn)}.toast.toast-out{animation:toastOut .3s ease forwards}@keyframes toastIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes toastOut{to{opacity:0;transform:translate(20px)}}.empty{text-align:center;padding:56px 20px;color:var(--text-dim)}.empty .empty-icon{width:64px;height:64px;margin:0 auto 14px;background:var(--bg-elev);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-mute)}.empty h4{margin:0 0 4px;color:var(--text);font-weight:600}.empty p{margin:0;font-size:12px}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--border-strong);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-3px}@keyframes spin{to{transform:rotate(360deg)}}.loading-row{padding:32px;text-align:center;color:var(--text-dim);display:flex;align-items:center;justify-content:center;gap:8px}button svg{display:inline-block;vertical-align:-2px}.roles-layout{display:grid;grid-template-columns:minmax(190px,250px) 1fr;gap:16px;align-items:start}@media (max-width: 820px){.roles-layout{grid-template-columns:1fr}}.role-tree{background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:10px}.role-tree-head{display:flex;align-items:center;gap:6px;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-dim);padding:2px 6px 10px}.role-tree-body{display:flex;flex-direction:column;gap:2px}.role-node{display:flex;align-items:center;gap:7px;width:100%;text-align:left;background:transparent;border:0;border-radius:8px;padding:7px 8px;color:var(--text);font-size:13px;cursor:pointer}.role-node:hover{background:var(--bg-hover)}.role-node.active{background:var(--admin-soft);color:var(--admin);font-weight:600}.role-node-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role-node-count{font-size:11px;color:var(--text-dim);background:var(--bg-hover);border-radius:999px;padding:1px 7px;flex:none}.role-node.active .role-node-count{color:var(--admin)}.caret{width:12px;height:12px;flex:none;position:relative;cursor:pointer}.caret:before{content:"";position:absolute;left:2px;top:3px;border:4px solid transparent;border-left-color:var(--text-dim);transform-origin:2px 50%;transition:transform .15s ease}.caret.open:before{transform:rotate(90deg)}.caret.leaf:before{display:none}.role-detail{background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:14px 16px 18px;min-height:200px}.role-head{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.role-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:650}.role-desc{font-size:12.5px;color:var(--text-dim);margin-top:4px}.role-parent{font-size:12px;color:var(--text-dim);margin-top:2px}.role-actions{display:flex;gap:6px;flex-wrap:wrap}.perm-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 10px;padding-top:12px;border-top:1px solid var(--border)}.perm-toolbar .spacer{flex:1}.perm-matrix{display:flex;flex-direction:column;gap:10px}.perm-matrix-hint,.perm-matrix-note{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);background:var(--bg);border:1px dashed var(--border);border-radius:8px;padding:8px 10px}.perm-group{border:1px solid var(--border);border-radius:10px;overflow:hidden}.perm-group-head{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--bg-hover);padding:8px 10px;font-weight:600;font-size:13px}.perm-group-head .count{font-size:11px;color:var(--text-dim);font-weight:400}.perm-row{display:grid;grid-template-columns:minmax(140px,200px) minmax(180px,1fr) minmax(120px,1.2fr);gap:10px;align-items:center;padding:7px 10px;border-top:1px solid var(--border);font-size:13px}@media (max-width: 820px){.perm-row{grid-template-columns:1fr;gap:2px}}.perm-row:hover{background:var(--bg-hover)}.perm-label{display:flex;align-items:center;gap:7px;cursor:pointer}.perm-name{min-width:0}.perm-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;color:var(--admin);background:var(--admin-soft);border-radius:5px;padding:1px 6px;justify-self:start}.perm-desc{font-size:11.5px;color:var(--text-dim)}.role-picker{border:1px solid var(--border);border-radius:10px;background:var(--bg-input);padding:8px;max-height:220px;overflow:auto}.role-picker-node+.role-picker-node{margin-top:2px}.role-picker .perm-code{margin-left:6px}.badge.chip{background:var(--admin-soft);color:var(--admin);gap:3px}.badge.mini{font-size:10px;padding:0 5px}.app-header .me .roles{font-size:11px;color:var(--text-dim);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 560px){.app-header .me .roles{display:none}}.content-header .header-actions{display:flex;gap:8px;flex-wrap:wrap}
