:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}#root{text-align:left;box-sizing:border-box;border:none;flex-direction:column;width:100%;min-height:100svh;margin:0;display:flex}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}*{box-sizing:border-box;margin:0;padding:0}:root{--glass-bg:linear-gradient(135deg, #ffffff14 0%, #ffffff05 100%);--glass-hover:linear-gradient(135deg, #ffffff1f 0%, #ffffff0d 100%);--glass-border:#ffffff1a;--glass-border-light:#ffffff40;--glass-border-hover:#fff6;--glass-shadow:0 8px 32px 0 #0000004d;--text:#fff;--text-muted:#ffffff73;--text-dim:#ffffffb3;--danger:#ef4444;--success:#22c55e;--neutral:#6b7280;--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--transition:.3s cubic-bezier(.4, 0, .2, 1);--blur:blur(16px)}html,body{width:100%;height:100dvh;color:var(--text);-webkit-font-smoothing:antialiased;background:#060608;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow:hidden}.bg-canvas{z-index:0;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.app{z-index:1;flex-direction:column;height:100dvh;padding:16px 24px;display:flex;position:relative;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#ffffff40}.center{z-index:1;justify-content:center;align-items:center;height:100%;display:flex;position:relative}.auth-loading-container{background:var(--glass-bg);-webkit-backdrop-filter:var(--blur);border-radius:var(--radius-lg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);flex-direction:column;align-items:center;gap:20px;padding:40px 60px;display:flex}.auth-spinner{border:3px solid var(--glass-border);border-top-color:var(--success);border-radius:50%;width:48px;height:48px;animation:1s cubic-bezier(.4,0,.2,1) infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-loading-text{color:var(--text-dim);letter-spacing:.05em;font-size:14px;font-weight:500;animation:1.5s ease-in-out infinite pulse-text}@keyframes pulse-text{0%,to{opacity:1}50%{opacity:.5}}.error-box{text-align:center;background:var(--glass-bg);max-width:480px;-webkit-backdrop-filter:var(--blur);border:1px solid var(--glass-border);border-top-color:var(--glass-border-light);border-left-color:var(--glass-border-light);box-shadow:var(--glass-shadow);border-radius:var(--radius-lg);padding:32px 24px}.error-step{color:var(--danger);margin-bottom:8px;font-size:15px}.error-message{color:#fff9;word-break:break-word;margin-bottom:16px;font-family:monospace;font-size:12px;line-height:1.6}.error-detail-box{-webkit-backdrop-filter:var(--blur);border:1px solid var(--glass-border);border-radius:var(--radius-sm);text-align:left;background:#0003;margin-bottom:12px;padding:12px 14px;box-shadow:inset 0 2px 8px #0003}.error-detail-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;font-size:10px}.error-detail-text{color:#fffc;word-break:break-word;font-family:monospace;font-size:12px}.error-hint{color:var(--text-muted);margin-top:10px;font-size:11px;line-height:1.6}.error-hint code{color:var(--text-dim);background:#ffffff1a;border:1px solid #ffffff0d;border-radius:4px;padding:2px 6px;font-size:11px}.error-client-id{color:var(--text-muted);margin-top:10px;font-family:monospace;font-size:10px}.unauthorized-box{text-align:center}.unauthorized-icon{text-shadow:0 0 20px #ef444466;margin-bottom:16px;font-size:36px;display:block}.unauthorized-title{color:var(--danger);margin-bottom:8px;font-size:16px}.unauthorized-desc{color:var(--text-muted);font-size:13px}.header{background:var(--glass-bg);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--glass-border);border-top-color:var(--glass-border-light);border-left-color:var(--glass-border-light);box-shadow:var(--glass-shadow);border-radius:var(--radius-lg);flex-shrink:0;justify-content:space-between;align-items:center;gap:14px;margin-bottom:20px;padding:14px 20px;display:flex}.header-left{align-items:center;gap:12px;display:flex}.header-avatar{border:1px solid var(--glass-border-light);border-radius:50%;width:38px;height:38px;box-shadow:0 2px 10px #0003}.header-username{color:var(--text);margin-bottom:2px;font-size:14px;font-weight:600}.header-label{color:var(--text-muted);letter-spacing:.04em;font-size:11px}.header-brand{background:linear-gradient(135deg,#22c55e26 0%,#22c55e0d 100%);border:1px solid #22c55e4d;border-radius:20px;align-items:center;gap:6px;padding:5px 12px;display:flex;box-shadow:0 4px 12px #22c55e1a}.header-brand-dot{background:var(--success);width:6px;height:6px;box-shadow:0 0 8px var(--success);border-radius:50%;animation:2s infinite pulse}@keyframes pulse{0%,to{opacity:1;box-shadow:0 0 8px var(--success)}50%{opacity:.4;box-shadow:0 0 2px var(--success)}}.header-brand-text{color:var(--success);letter-spacing:.06em;text-transform:uppercase;font-size:11px;font-weight:600}.dashboard{flex-direction:column;flex:1;width:100%;min-height:0;display:flex}.stats-row{flex-shrink:0;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px;display:grid}.stat-card{background:var(--glass-bg);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--glass-border);border-top-color:var(--glass-border-light);border-left-color:var(--glass-border-light);box-shadow:var(--glass-shadow);border-radius:var(--radius-md);transition:all var(--transition);padding:18px 20px}.stat-card:hover{border-color:var(--glass-border-hover);background:var(--glass-hover);transform:translateY(-2px);box-shadow:0 12px 40px #0006}.stat-value{color:var(--text);letter-spacing:-.02em;text-shadow:0 2px 10px #ffffff1a;margin-bottom:6px;font-size:24px;font-weight:700}.stat-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:10px;font-weight:600}.dashboard-body{flex:1;grid-template-columns:260px 1fr;align-items:stretch;gap:24px;min-height:0;display:grid;overflow:hidden}.sidebar{background:var(--glass-bg);height:100%;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--glass-border);border-top-color:var(--glass-border-light);border-left-color:var(--glass-border-light);box-shadow:var(--glass-shadow);border-radius:var(--radius-lg);flex-direction:column;gap:20px;padding:24px 20px;display:flex;overflow-y:auto}.main-panel{min-width:0;height:100%;padding-right:8px;overflow-y:auto}.sidebar-section{flex-direction:column;gap:10px;display:flex}.sidebar-summary{border-radius:var(--radius-sm);border:1px solid var(--glass-border);background:#00000026;flex-direction:column;gap:6px;padding:12px 14px;display:flex;box-shadow:inset 0 2px 10px #0000001a}.summary-line{font-size:12px;font-weight:600}.summary-line.give{color:#4ade80;text-shadow:0 0 10px #4ade8033}.summary-line.remove{color:#f87171;text-shadow:0 0 10px #f8717133}.summary-hint{color:var(--text-muted);margin-top:4px;font-size:10px;line-height:1.5}.sidebar-divider{background:linear-gradient(90deg, transparent, var(--glass-border), transparent);height:1px;margin:4px -4px}.sidebar-template-section{flex-direction:column;gap:10px;display:flex}.section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:10px;font-weight:600}.tabs-row{gap:8px;margin-bottom:20px;display:flex}.tab-btn{background:var(--glass-bg);border:1px solid var(--glass-border);border-top-color:var(--glass-border-light);border-left-color:var(--glass-border-light);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;letter-spacing:.04em;transition:all var(--transition);align-items:center;gap:8px;padding:8px 16px;font-size:12px;font-weight:600;display:flex;box-shadow:0 4px 16px #0003}.tab-btn:hover{border-color:var(--glass-border-hover);color:var(--text-dim);background:var(--glass-hover);transform:translateY(-1px)}.tab-btn.active{color:var(--text);background:linear-gradient(135deg,#ffffff26 0%,#ffffff0d 100%);border-color:#fff6;box-shadow:0 6px 20px #0000004d,inset 0 1px #fff3}.tab-badge{color:var(--text);background:#fff3;border-radius:20px;padding:2px 8px;font-size:10px;font-weight:700;box-shadow:0 2px 6px #0003}.member-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.refresh-btn{background:var(--glass-bg);border:1px solid var(--glass-border);border-top-color:var(--glass-border-light);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition);letter-spacing:.02em;padding:6px 14px;font-size:12px;box-shadow:0 4px 12px #0003}.refresh-btn:hover:not(:disabled){border-color:var(--glass-border-hover);color:var(--text-dim);background:var(--glass-hover)}.refresh-btn:disabled{opacity:.4;cursor:not-allowed}.refresh-btn.copied{color:#4ade80;background:linear-gradient(135deg,#22c55e26 0%,#22c55e0d 100%);border-color:#22c55e80}.bulk-toolbar{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:10px 14px;display:flex}.bulk-toolbar-left,.bulk-toolbar-right{align-items:center;gap:10px;display:flex}.bulk-select-all-btn{color:var(--text-dim);cursor:pointer;transition:color var(--transition);letter-spacing:.02em;background:0 0;border:none;align-items:center;gap:8px;padding:4px 0;font-size:12px;font-weight:600;display:flex}.bulk-select-all-btn:hover,.bulk-select-all-btn.active{color:var(--text)}.bulk-checkbox{width:16px;height:16px;transition:all var(--transition);background:#0003;border:1px solid #ffffff4d;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.bulk-checkbox.checked{color:var(--text);background:linear-gradient(135deg,#ffffff40 0%,#ffffff1a 100%);border-color:#fff9}.bulk-checkbox.partial{background:#ffffff1a;border-color:#fff6}.partial-dash{background:var(--text-dim);border-radius:1px;width:8px;height:2px}.bulk-selected-count{color:var(--text-muted);font-size:11px}.bulk-role-filter-select{border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer;transition:all var(--transition);appearance:none;background:#00000040;outline:none;padding:6px 10px;font-size:12px;font-weight:600}.bulk-role-filter-select:hover{border-color:var(--glass-border-hover);color:var(--text)}.bulk-role-filter-select option{color:var(--text);background:#1a1a24}.bulk-assign-btn{border-radius:var(--radius-sm);color:#a5b4fc;cursor:pointer;transition:all var(--transition);letter-spacing:.02em;white-space:nowrap;background:linear-gradient(135deg,#6366f133 0%,#6366f114 100%);border:1px solid #6366f173;padding:7px 16px;font-size:12px;font-weight:700}.bulk-assign-btn:hover:not(:disabled){color:#c7d2fe;background:linear-gradient(135deg,#6366f14d 0%,#6366f11f 100%);border-color:#6366f1b3;transform:translateY(-1px);box-shadow:0 4px 16px #6366f140}.bulk-assign-btn:disabled{opacity:.4;cursor:not-allowed}.bulk-progress-wrap{border:1px solid var(--glass-border);border-radius:var(--radius-md);background:#00000026;flex-direction:column;gap:6px;margin-bottom:14px;padding:10px 14px;display:flex}.bulk-progress-bar-track{background:#ffffff14;border-radius:2px;height:4px;overflow:hidden}.bulk-progress-bar-fill{background:linear-gradient(90deg,#6366f1cc,#8b5cf6cc);border-radius:2px;height:100%;transition:width .4s cubic-bezier(.4,0,.2,1)}.bulk-progress-bar-fill.complete{background:linear-gradient(90deg,#22c55ecc,#4ade80cc)}.bulk-progress-stats{align-items:center;gap:12px;font-size:11px;display:flex}.bulk-prog-done{color:#4ade80;font-weight:600}.bulk-prog-skipped{color:var(--text-muted);font-weight:600}.bulk-prog-failed{color:#f87171;font-weight:600}.bulk-prog-total{color:var(--text-muted);margin-left:auto}.bulk-prog-clear{color:var(--text-muted);cursor:pointer;transition:color var(--transition);background:0 0;border:none;padding:0 2px;font-size:14px}.bulk-prog-clear:hover{color:var(--text)}.member-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.member-card{background:var(--glass-bg);border-radius:var(--radius-md);border:1px solid var(--glass-border);border-top-color:var(--glass-border-light);border-left-color:var(--glass-border-light);box-shadow:var(--glass-shadow);transition:all var(--transition);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:12px;padding:14px 16px;display:flex}.member-card:hover{border-color:var(--glass-border-hover);background:var(--glass-hover);transform:translateY(-2px);box-shadow:0 12px 30px #0006}.member-card.selected{box-shadow:0 0 0 1px #6366f14d, var(--glass-shadow);background:linear-gradient(135deg,#6366f11f 0%,#6366f10a 100%);border-color:#6366f180}.member-checkbox{width:16px;height:16px;transition:all var(--transition);background:#0003;border:1px solid #ffffff40;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.member-checkbox.checked{color:#fff;background:linear-gradient(135deg,#6366f180 0%,#6366f140 100%);border-color:#6366f1cc}.member-avatar{border:1px solid var(--glass-border-light);border-radius:50%;flex-shrink:0;width:40px;height:40px;box-shadow:0 4px 10px #0000004d}.member-info{flex:1;min-width:0}.member-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 4px #00000080;font-size:13px;font-weight:600;overflow:hidden}.member-username{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;overflow:hidden}.member-role-count{color:#ffffff59;margin-top:3px;font-size:10px}.assign-btn{border-radius:var(--radius-sm);color:#fff;transition:all var(--transition);cursor:pointer;letter-spacing:.02em;min-width:66px;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:none;flex-shrink:0;padding:7px 14px;font-size:12px;font-weight:600;box-shadow:0 4px 12px #0003}.assign-btn:disabled{cursor:not-allowed}.state-idle{color:var(--text-dim);background:linear-gradient(135deg,#ffffff1a 0%,#ffffff05 100%);border:1px solid #fff3}.state-idle:hover:not(:disabled){color:var(--text);background:linear-gradient(135deg,#ffffff26 0%,#ffffff0d 100%);transform:translateY(-1px)}.state-loading{background:var(--neutral);opacity:.6;box-shadow:none}.state-success{color:#4ade80;background:linear-gradient(135deg,#22c55e40 0%,#22c55e1a 100%);border:1px solid #22c55e80}.state-error{color:#f87171;background:linear-gradient(135deg,#ef444440 0%,#ef44441a 100%);border:1px solid #ef444480}.empty-state{text-align:center;color:var(--text-muted);padding:80px 0;font-size:13px}.error-state{border-radius:var(--radius-md);background:linear-gradient(135deg,#ef44441a 0%,#ef444405 100%);border:1px solid #ef44444d;padding:20px;box-shadow:0 8px 24px #ef444426}.error-state-msg{color:#f87171;margin-bottom:8px;font-size:14px;font-weight:600}.error-state-hint{color:var(--text-muted);font-size:12px;line-height:1.6}.fetching-text{color:var(--text-muted);padding:24px 0;font-size:13px}.custom-select{-webkit-user-select:none;user-select:none;width:100%;position:relative}.custom-select-trigger{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);color:var(--text);cursor:pointer;transition:all var(--transition);justify-content:space-between;align-items:center;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.custom-select-trigger:hover{border-color:var(--glass-border-hover);background:var(--glass-hover)}.custom-select-trigger.open{border-color:#fff6;border-bottom-right-radius:0;border-bottom-left-radius:0}.custom-select-arrow{opacity:.6;width:12px;height:12px;transition:transform var(--transition);flex-shrink:0}.custom-select-trigger.open .custom-select-arrow{transform:rotate(180deg)}.custom-select-dropdown{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border-bottom-left-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md);z-index:100;background:#14141cd9;border:1px solid #fff3;border-top:none;max-height:240px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.custom-select-category-label{text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);border-top:1px solid #ffffff0f;padding:8px 14px 4px;font-size:9px;font-weight:700}.custom-select-category-label:first-child{border-top:none}.custom-select-option{color:var(--text-dim);cursor:pointer;transition:all var(--transition);padding:10px 14px;font-size:13px}.custom-select-option.indented{padding-left:22px}.custom-select-option:hover{color:var(--text);background:#ffffff1a}.custom-select-option.selected{color:var(--text);background:linear-gradient(90deg,#ffffff1a 0%,#0000 100%);font-weight:600}.multi-option{align-items:center;gap:10px;display:flex}.multi-checkbox{width:16px;height:16px;transition:all var(--transition);background:#0003;border:1px solid #ffffff40;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.multi-checkbox.checked{color:var(--text);background:linear-gradient(135deg,#ffffff40 0%,#ffffff1a 100%);border-color:#ffffff80}.multi-selected-pills{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.multi-pill{color:var(--text-dim);background:linear-gradient(135deg,#ffffff1a 0%,#ffffff0a 100%);border:1px solid #fff3;border-radius:20px;align-items:center;gap:4px;padding:3px 8px 3px 10px;font-size:11px;font-weight:600;display:inline-flex}.multi-pill-remove{color:#fff6;cursor:pointer;transition:color var(--transition);background:0 0;border:none;padding:0;font-size:14px;line-height:1}.multi-pill-remove:hover{color:var(--text)}.log-inner-tabs{gap:6px;display:flex}.log-tab-btn{border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition);background:0 0;border:1px solid #0000;padding:6px 12px;font-size:12px;font-weight:600}.log-tab-btn:hover{border-color:var(--glass-border);color:var(--text-dim);background:var(--glass-bg)}.log-tab-btn.active{border-color:var(--glass-border-hover);color:var(--text);background:var(--glass-bg);box-shadow:0 4px 12px #0003}.log-header-actions{align-items:center;gap:8px;display:flex}.log-list{flex-direction:column;gap:10px;display:flex}.log-entry{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);transition:all var(--transition);align-items:center;gap:14px;padding:14px 16px;display:flex}.log-entry:hover{border-color:var(--glass-border-hover);background:var(--glass-hover);transform:translateY(-1px)}.log-avatar{border:1px solid var(--glass-border-light);border-radius:50%;flex-shrink:0;width:36px;height:36px;box-shadow:0 2px 8px #0003}.log-content{flex:1;min-width:0}.log-text{color:var(--text-dim);font-size:13px;line-height:1.5}.log-username{color:var(--text);font-weight:700}.log-role-removed{color:#f87171;font-weight:600}.log-role-assigned{color:#4ade80;font-weight:600}.log-time{color:var(--text-muted);margin-top:4px;font-family:monospace;font-size:10px}.raw-log-wrap{border:1px solid var(--glass-border);border-radius:var(--radius-md);background:#0006;max-height:480px;overflow:auto}.raw-log{color:var(--text-dim);white-space:pre;tab-size:2;padding:18px;font-family:monospace;font-size:12px;line-height:1.8}.template-panel{flex-direction:column;gap:24px;display:flex}.template-create-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px}.template-create-title{color:var(--text);align-items:center;gap:10px;margin-bottom:18px;font-size:14px;font-weight:600;display:flex}.template-create-title-icon{opacity:.7;width:20px;height:20px}.template-fields{flex-direction:column;gap:16px;display:flex}.template-fields-top-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.template-field{flex-direction:column;gap:8px;display:flex}.template-field-label{text-transform:uppercase;color:var(--text-muted);font-size:10px;font-weight:600}.template-name-input{border:1px solid var(--glass-border);border-radius:var(--radius-md);color:var(--text);width:100%;transition:all var(--transition);background:#00000026;outline:none;padding:10px 14px;font-size:13px;font-weight:600}.template-name-input:focus{background:#00000040;border-color:#fff6;box-shadow:inset 0 2px 6px #0000004d,0 0 0 3px #ffffff0d}.template-roles-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.template-save-btn{border-radius:var(--radius-md);width:100%;color:var(--text-dim);cursor:pointer;transition:all var(--transition);background:linear-gradient(135deg,#ffffff1a 0%,#ffffff05 100%);border:1px solid #fff3;margin-top:8px;padding:12px;font-size:13px;font-weight:600;box-shadow:0 4px 16px #0003}.template-save-btn:hover:not(:disabled){color:var(--text);border-color:#fff6;transform:translateY(-1px)}.template-save-btn:disabled{opacity:.4;cursor:not-allowed}.template-save-btn.saving{background:var(--neutral);opacity:.6;box-shadow:none}.template-save-btn.saved{color:#4ade80;background:linear-gradient(135deg,#22c55e40 0%,#22c55e1a 100%);border-color:#22c55e80}.template-list-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.template-category-filter{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.template-cat-filter-btn{border:1px solid var(--glass-border);color:var(--text-muted);cursor:pointer;transition:all var(--transition);letter-spacing:.04em;text-transform:uppercase;background:0 0;border-radius:20px;padding:3px 10px;font-size:10px;font-weight:700}.template-cat-filter-btn:hover{border-color:var(--glass-border-hover);color:var(--text-dim)}.template-cat-filter-btn.active{color:var(--text);background:linear-gradient(135deg,#ffffff1f 0%,#ffffff0a 100%);border-color:#fff6}.template-category-group-label{align-items:center;gap:8px;margin-top:4px;padding:6px 0 8px;display:flex}.template-category-group-label span:first-child{text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);font-size:10px;font-weight:700}.template-category-count{color:var(--text-muted);background:#ffffff0f;border:1px solid #ffffff1a;border-radius:20px;padding:1px 7px;font-size:10px;font-weight:600}.template-grid{flex-direction:column;gap:8px;display:flex}.template-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);transition:all var(--transition);align-items:center;gap:12px;padding:14px 16px;display:flex}.template-card:hover{border-color:var(--glass-border-hover);background:var(--glass-hover);transform:translateY(-1px)}.template-card.editing{display:block}.template-card.dragging{opacity:.4;border-color:#6366f180;transform:scale(.98)}.template-card.drag-over{background:linear-gradient(135deg,#6366f11a 0%,#6366f108 100%);border-color:#6366f1b3;transform:translateY(-2px);box-shadow:0 0 0 2px #6366f14d}.template-drag-handle{color:var(--text-muted);cursor:grab;opacity:0;transition:opacity var(--transition);flex-shrink:0;justify-content:center;align-items:center;padding:4px 2px;display:flex}.template-card:hover .template-drag-handle{opacity:1}.template-drag-handle:active{cursor:grabbing}.template-card-info{flex:1;min-width:0}.template-card-name-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;display:flex}.template-card-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;margin-bottom:0;font-size:14px;font-weight:600;overflow:hidden}.template-card-desc{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin-bottom:4px;font-size:9px;overflow:hidden}.template-usage-badge{color:var(--text-muted);background:linear-gradient(135deg,#ffffff14 0%,#ffffff08 100%);border:1px solid #ffffff26;border-radius:20px;flex-shrink:0;padding:2px 8px;font-size:10px;font-weight:600}.template-card-category-badge{color:#c4b5fd;letter-spacing:.03em;background:linear-gradient(135deg,#8b5cf626 0%,#8b5cf60d 100%);border:1px solid #8b5cf659;border-radius:20px;flex-shrink:0;padding:2px 8px;font-size:10px;font-weight:700}.template-card-meta{flex-wrap:wrap;gap:8px;display:flex}.template-role-pill{border-radius:20px;padding:3px 9px;font-size:10px;font-weight:600;box-shadow:0 2px 6px #00000026}.template-role-pill.give{color:#4ade80;background:linear-gradient(135deg,#4ade8026 0%,#4ade800d 100%);border:1px solid #4ade804d}.template-role-pill.remove{color:#f87171;background:linear-gradient(135deg,#f8717126 0%,#f871710d 100%);border:1px solid #f871714d}.template-card-creator{color:var(--text-muted);margin-top:4px;font-size:11px}.template-card-actions{flex-shrink:0;gap:8px;display:flex}.template-use-btn{border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer;transition:all var(--transition);background:linear-gradient(135deg,#ffffff1a 0%,#ffffff05 100%);border:1px solid #fff3;padding:6px 12px;font-size:12px;font-weight:600}.template-use-btn:hover{color:var(--text);border-color:#fff6;transform:translateY(-1px)}.template-usage-btn{border-radius:var(--radius-sm);color:#a5b4fc;cursor:pointer;transition:all var(--transition);background:linear-gradient(135deg,#6366f126 0%,#6366f10d 100%);border:1px solid #6366f159;padding:6px 12px;font-size:12px;font-weight:600}.template-usage-btn:hover{background:linear-gradient(135deg,#6366f140 0%,#6366f11a 100%);border-color:#6366f199;transform:translateY(-1px)}.template-edit-btn{border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition);background:linear-gradient(135deg,#ffffff0f 0%,#ffffff03 100%);border:1px solid #ffffff26;padding:6px 12px;font-size:12px;font-weight:600}.template-edit-btn:hover{color:var(--text);border-color:#fff6;transform:translateY(-1px)}.template-delete-btn{border-radius:var(--radius-sm);color:#f87171;cursor:pointer;transition:all var(--transition);background:linear-gradient(135deg,#ef44441a 0%,#ef444405 100%);border:1px solid #ef44444d;padding:6px 12px;font-size:12px;font-weight:600}.template-delete-btn:hover{background:linear-gradient(135deg,#ef444426 0%,#ef44440d 100%);border-color:#ef444480;transform:translateY(-1px)}.template-edit-form{flex-direction:column;gap:14px;width:100%;display:flex}.template-edit-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.template-edit-actions{align-items:center;gap:10px;display:flex}.template-cancel-btn{border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition);background:0 0;padding:10px 18px;font-size:12px;font-weight:600}.template-cancel-btn:hover{border-color:var(--glass-border-hover);color:var(--text-dim)}.usage-modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(8px);background:#000000b3;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.usage-modal{border-radius:var(--radius-lg);background:linear-gradient(135deg,#ffffff17 0%,#ffffff08 100%);border:1px solid #ffffff26;flex-direction:column;gap:20px;width:100%;max-width:560px;max-height:80vh;padding:28px;display:flex;overflow:hidden;box-shadow:0 24px 64px #00000080}.usage-modal-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.usage-modal-title{color:var(--text);margin-bottom:4px;font-size:16px;font-weight:700}.usage-modal-desc{color:var(--text-muted);font-size:12px}.usage-modal-close{border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--transition);background:#ffffff0f;border:1px solid #ffffff1f;flex-shrink:0;padding:4px 10px;font-size:16px}.usage-modal-close:hover{color:var(--text);background:#ffffff1a;border-color:#ffffff4d}.usage-modal-stats{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.usage-modal-stat{border-radius:var(--radius-md);text-align:center;background:#0003;border:1px solid #ffffff14;padding:14px 16px}.usage-modal-stat-value{color:var(--text);margin-bottom:4px;font-size:22px;font-weight:700}.usage-modal-stat-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:10px;font-weight:600}.usage-modal-roles{flex-wrap:wrap;gap:8px;display:flex}.usage-modal-history{flex-direction:column;flex:1;gap:8px;display:flex;overflow-y:auto}.usage-modal-history-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:10px;font-weight:600}.usage-modal-empty{text-align:center;color:var(--text-muted);padding:40px 0;font-size:13px}.usage-log-entry{border-radius:var(--radius-md);transition:all var(--transition);background:#0003;border:1px solid #ffffff12;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.usage-log-entry:hover{background:#0000004d;border-color:#ffffff1f}.usage-log-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.usage-log-names{align-items:center;gap:8px;display:flex}.usage-log-target{color:var(--text);font-size:13px;font-weight:700}.usage-log-by{color:var(--text-muted);font-size:11px}.usage-log-time{color:var(--text-muted);flex-shrink:0;font-family:monospace;font-size:10px}.usage-log-roles{flex-wrap:wrap;gap:6px;display:flex}.usage-log-role-give{color:#4ade80;background:#4ade801f;border:1px solid #4ade804d;border-radius:20px;padding:2px 8px;font-size:10px;font-weight:600}.usage-log-role-remove{color:#f87171;background:#f871711f;border:1px solid #f871714d;border-radius:20px;padding:2px 8px;font-size:10px;font-weight:600}.usage-modal-footer{color:var(--text-muted);text-align:center;font-size:10px}.bulk-preview-modal{max-width:520px}.bulk-preview-roles{flex-wrap:wrap;gap:8px;display:flex}.bulk-preview-list{flex-direction:column;flex:1;gap:6px;display:flex;overflow-y:auto}.bulk-preview-section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-top:4px;margin-bottom:2px;font-size:10px;font-weight:600}.bulk-preview-section-label.skipped{color:#ffffff40}.bulk-preview-row{border-radius:var(--radius-sm);transition:all var(--transition);background:#00000026;border:1px solid #ffffff0f;align-items:center;gap:12px;padding:8px 10px;display:flex}.bulk-preview-row.skipped{opacity:.45}.bulk-preview-avatar{border:1px solid #ffffff1a;border-radius:50%;flex-shrink:0;width:30px;height:30px}.bulk-preview-info{flex:1;min-width:0}.bulk-preview-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.bulk-preview-username{color:var(--text-muted);font-size:11px}.bulk-preview-status{border-radius:20px;flex-shrink:0;padding:3px 9px;font-size:10px;font-weight:700}.bulk-preview-status.will-act{color:#a5b4fc;background:#6366f126;border:1px solid #6366f159}.bulk-preview-status.skipped-badge{color:var(--text-muted);background:#ffffff0f;border:1px solid #ffffff1f}.bulk-preview-actions{border-top:1px solid #ffffff12;justify-content:flex-end;align-items:center;gap:10px;padding-top:4px;display:flex}.bulk-confirm-btn{border-radius:var(--radius-sm);color:#c7d2fe;cursor:pointer;transition:all var(--transition);background:linear-gradient(135deg,#6366f140 0%,#6366f11a 100%);border:1px solid #6366f180;padding:10px 20px;font-size:13px;font-weight:700}.bulk-confirm-btn:hover:not(:disabled){background:linear-gradient(135deg,#6366f159 0%,#6366f126 100%);border-color:#6366f1cc;transform:translateY(-1px);box-shadow:0 6px 20px #6366f14d}.bulk-confirm-btn:disabled{opacity:.35;cursor:not-allowed}@media (width<=900px){.app{padding:12px}.stats-row{grid-template-columns:repeat(2,1fr)}.dashboard-body{flex-direction:column;padding-right:8px;display:flex;overflow-y:auto}.sidebar,.main-panel{height:auto;padding-right:0;overflow:visible}.bulk-toolbar{flex-wrap:wrap}.template-fields-top-row{grid-template-columns:1fr}}@media (width<=480px){.stats-row{grid-template-columns:repeat(2,1fr)}.member-grid,.template-roles-row,.template-edit-row{grid-template-columns:1fr}.usage-modal-stats{grid-template-columns:repeat(3,1fr)}.template-card-actions,.bulk-toolbar-right{flex-wrap:wrap}.template-fields-top-row{grid-template-columns:1fr}}
