.badge{font-size:var(--text-xs);white-space:nowrap;border-radius:100px;align-items:center;gap:4px;padding:2px 10px;font-weight:550;line-height:1.6;display:inline-flex}.badge-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger)}.badge-info{background:var(--color-info-bg);color:var(--color-info)}.badge-neutral{background:var(--color-bg);color:var(--color-text-secondary)}.badge-accent{background:var(--color-accent-bg);color:var(--color-accent)}.badge-error{background:var(--color-danger-bg);color:var(--color-danger)}.badge-error .badge-dot{background:var(--color-danger)}.badge-secondary{background:var(--color-bg);color:var(--color-text-secondary);border:1px solid var(--color-border)}.badge-system-role{background:var(--color-info-bg);color:var(--color-info);align-items:center;gap:4px;display:inline-flex}.empty-state{padding:var(--space-16) var(--space-8);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-state .empty-icon{background:var(--color-bg);width:64px;height:64px;margin-bottom:var(--space-4);color:var(--color-text-tertiary);border-radius:50%;justify-content:center;align-items:center;font-size:28px;display:flex}.empty-state h3{font-size:var(--text-lg);color:var(--color-text);margin-bottom:var(--space-2);font-weight:600}.empty-state p{font-size:var(--text-sm);color:var(--color-text-secondary);max-width:320px;margin-bottom:var(--space-5)}.loading-overlay{padding:var(--space-16) var(--space-8);justify-content:center;align-items:center;display:flex}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:32px;height:32px;animation:.7s linear infinite spin}.spinner-lg{border-width:4px;width:44px;height:44px}.alert{border-radius:var(--radius);font-size:var(--text-sm);align-items:flex-start;gap:10px;padding:12px 16px;line-height:1.5;display:flex}.alert-icon{flex-shrink:0;margin-top:1px;font-size:16px}.alert-info{background:var(--color-info-bg);color:var(--color-info);border:1px solid rgba(44,109,176,.15)}.alert-warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid rgba(182,139,30,.15)}.alert-success{background:var(--color-success-bg);color:var(--color-success);border:1px solid rgba(45,138,86,.15)}.alert-danger,.alert-error{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid rgba(197,52,58,.15)}.progress{background:var(--color-border-light);border-radius:3px;height:6px;overflow:hidden}.progress-bar{border-radius:inherit;height:100%;transition:width var(--transition-slow);min-width:4px}.progress-bar.low{background:var(--color-danger)}.progress-bar.mid{background:var(--color-warning)}.progress-bar.high{background:var(--color-success)}.progress-bar.done{background:var(--color-primary)}.progress-labeled{align-items:center;gap:var(--space-2);display:flex}.progress-labeled .progress{flex:1}.progress-labeled .progress-label{font-size:var(--text-xs);color:var(--color-text-secondary);text-align:right;min-width:36px;font-weight:550}.toggle{background:var(--color-border);cursor:pointer;width:40px;height:22px;transition:background var(--transition-fast);border:none;border-radius:11px;outline:none;flex-shrink:0;padding:0;position:relative}.toggle.active{background:var(--color-primary)}.toggle:after{content:"";background:var(--color-white);width:18px;height:18px;transition:transform var(--transition-fast);border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.toggle.active:after{transform:translate(18px)}.toggle:focus-visible{box-shadow:0 0 0 3px var(--color-primary-ring)}.toggle:disabled{opacity:.5;cursor:not-allowed}.custom-checkbox,.custom-radio{cursor:pointer;font-size:var(--text-sm);color:var(--color-text);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:inline-flex}.custom-checkbox input,.custom-radio input{opacity:0;width:0;height:0;position:absolute}.checkbox-box{border:1.5px solid var(--color-border);width:16px;height:16px;transition:all var(--transition-fast);background:var(--color-surface);border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.custom-checkbox input:checked+.checkbox-box{background:var(--color-primary);border-color:var(--color-primary)}.custom-checkbox input:checked+.checkbox-box:after{content:"";border:1.5px solid var(--color-white);border-top:none;border-left:none;width:5px;height:8px;transform:rotate(45deg)translateY(-1px)}.custom-checkbox input:indeterminate+.checkbox-box{background:var(--color-primary);border-color:var(--color-primary)}.custom-checkbox input:indeterminate+.checkbox-box:after{content:"";background:var(--color-white);border-radius:1px;width:8px;height:1.5px}.custom-checkbox input:focus-visible+.checkbox-box{box-shadow:0 0 0 3px var(--color-primary-ring)}.custom-radio input:focus-visible+.radio-box{box-shadow:0 0 0 3px var(--color-primary-ring)}.radio-box{border:1.5px solid var(--color-border);width:16px;height:16px;transition:all var(--transition-fast);background:var(--color-surface);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.custom-radio input:checked+.radio-box{border-color:var(--color-primary)}.custom-radio input:checked+.radio-box:after{content:"";background:var(--color-primary);border-radius:50%;width:6px;height:6px}.tabs{border-bottom:1px solid var(--color-border);margin-bottom:var(--space-6);scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:0;display:flex;overflow:auto hidden}.tabs::-webkit-scrollbar{display:none}.tab-item{font-size:var(--text-sm);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid transparent;flex-shrink:0;padding:10px 18px;font-family:inherit;font-weight:500}.tab-item:hover{color:var(--color-text)}.tab-item.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.tab-content{margin-top:var(--space-4)}.global-search{margin-bottom:var(--space-4);position:relative}.global-search .form-input{border-radius:var(--radius-md);height:40px;font-size:var(--text-base);padding-left:40px}.global-search .search-icon-large{color:var(--color-text-tertiary);pointer-events:none;font-size:16px;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.info-row{align-items:baseline;gap:var(--space-2);padding:var(--space-2) 0;font-size:var(--text-sm);display:flex}.info-row .info-label{color:var(--color-text-secondary);flex-shrink:0;min-width:80px;font-weight:500}.info-row .info-value{color:var(--color-text);font-weight:500}.section-title{font-size:var(--text-base);color:var(--color-text);margin-bottom:var(--space-4);align-items:center;gap:var(--space-2);font-weight:650;display:flex}.section-title:before{content:"";background:var(--color-primary);border-radius:2px;width:3px;height:16px}.text-muted{color:var(--color-text-tertiary)}.text-xs{font-size:var(--text-xs)}.text-center{text-align:center}.divider-soft{border:none;border-top:1px solid var(--color-border-light);margin:var(--space-5) 0}.tooltip-wrap{display:inline-flex;position:relative}.tooltip{z-index:80;border-radius:var(--radius-sm);background:var(--sidebar-bg);max-width:300px;color:var(--sidebar-text-active);font-size:var(--text-xs);opacity:0;pointer-events:none;transition:opacity var(--transition-fast);padding:6px 10px;line-height:1.5;position:absolute}.tooltip.visible{opacity:1}.tooltip-top{bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.tooltip-top-start{bottom:calc(100% + 8px);left:0}.tooltip-top-end{bottom:calc(100% + 8px);right:0}.tooltip-bottom{top:calc(100% + 8px);left:50%;transform:translate(-50%)}.tooltip-bottom-start{top:calc(100% + 8px);left:0}.tooltip-bottom-end{top:calc(100% + 8px);right:0}.tooltip-left{top:50%;right:calc(100% + 8px);transform:translateY(-50%)}.tooltip-left-start{top:0;right:calc(100% + 8px)}.tooltip-left-end{bottom:0;right:calc(100% + 8px)}.tooltip-right{top:50%;left:calc(100% + 8px);transform:translateY(-50%)}.tooltip-right-start{top:0;left:calc(100% + 8px)}.tooltip-right-end{bottom:0;left:calc(100% + 8px)}