.modal-overlay[data-v-244d924c]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.modal-container[data-v-244d924c]{background:#fff;border-radius:8px;width:500px;max-width:90vw;max-height:90vh;overflow:auto;box-shadow:0 4px 12px rgba(0,0,0,.15)}.modal-header[data-v-244d924c]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #ebeef5}.modal-title[data-v-244d924c]{margin:0;font-size:16px;font-weight:600;color:#303133}.modal-close[data-v-244d924c]{background:none;border:none;font-size:20px;color:#909399;cursor:pointer;width:28px;height:28px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .2s}.modal-close[data-v-244d924c]:hover{background:#f5f7fa;color:#606266}.modal-body[data-v-244d924c]{padding:20px}.role-form[data-v-244d924c]{display:flex;flex-direction:column;gap:16px}.form-group[data-v-244d924c]{display:flex;flex-direction:column;gap:6px}.form-label[data-v-244d924c]{font-weight:500;color:#606266;font-size:14px}.required[data-v-244d924c]{color:#f56c6c}.form-input[data-v-244d924c],.form-textarea[data-v-244d924c]{padding:8px 12px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;transition:all .2s;background:#fff;font-family:inherit}.form-input[data-v-244d924c]:focus,.form-textarea[data-v-244d924c]:focus{outline:none;border-color:#1989fa;box-shadow:0 0 0 2px rgba(25,143,250,.1)}.form-textarea[data-v-244d924c]{resize:vertical;min-height:60px}.form-hint[data-v-244d924c]{font-size:12px;color:#909399;margin-top:2px}.checkbox-label[data-v-244d924c]{display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:500;color:#606266;padding:4px 0}.checkbox-input[data-v-244d924c]{display:none}.checkmark[data-v-244d924c]{width:16px;height:16px;border:1px solid #dcdfe6;border-radius:3px;display:flex;align-items:center;justify-content:center;transition:all .2s;position:relative}.checkbox-input:checked+.checkmark[data-v-244d924c]{background:#1989fa;border-color:#1989fa}.checkbox-input:checked+.checkmark[data-v-244d924c]:after{content:"✓";color:#fff;font-size:10px;font-weight:700}.modal-footer[data-v-244d924c]{padding:16px 20px;border-top:1px solid #ebeef5;display:flex;justify-content:flex-end;gap:10px}.btn[data-v-244d924c]{padding:8px 16px;border:none;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;min-width:60px}.btn-secondary[data-v-244d924c]{background:#fff;border:1px solid #dcdfe6;color:#606266}.btn-secondary[data-v-244d924c]:hover{background:#f5f7fa;border-color:#c0c4cc}.btn-primary[data-v-244d924c]{background:#1989fa;color:#fff}.btn-primary[data-v-244d924c]:hover{background:#0077e6}.permission-modal[data-v-a5a3ed54]{width:700px;max-width:90vw;max-height:80vh}.permission-content[data-v-a5a3ed54]{display:flex;flex-direction:column;gap:16px}.permission-header[data-v-a5a3ed54]{display:flex;justify-content:space-between;align-items:center;gap:10px}.search-input[data-v-a5a3ed54]{padding:6px 10px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;width:200px}.search-input[data-v-a5a3ed54]:focus{outline:none;border-color:#1989fa}.btn-sm[data-v-a5a3ed54]{padding:4px 8px;font-size:12px;min-width:auto}.permission-tree[data-v-a5a3ed54]{max-height:400px;overflow-y:auto;border:1px solid #ebeef5;border-radius:4px;padding:12px}.menu-list[data-v-a5a3ed54]{display:flex;flex-direction:column;gap:8px}.menu-item.level-1[data-v-a5a3ed54]{border:1px solid #f0f0f0;border-radius:4px;padding:8px;background:#fafafa}.menu-checkbox[data-v-a5a3ed54]{margin-bottom:4px}.checkbox-container[data-v-a5a3ed54]{display:flex;align-items:center;gap:8px;width:100%}.checkbox-label[data-v-a5a3ed54]{display:flex;align-items:center;cursor:pointer;margin:0}.checkbox-input[data-v-a5a3ed54]{display:none}.checkmark[data-v-a5a3ed54]{width:16px;height:16px;border:1px solid #dcdfe6;border-radius:3px;display:flex;align-items:center;justify-content:center;transition:all .2s;position:relative;flex-shrink:0}.checkbox-input:checked+.checkmark[data-v-a5a3ed54]{background:#1989fa;border-color:#1989fa}.checkbox-input:checked+.checkmark[data-v-a5a3ed54]:after{content:"✓";color:#fff;font-size:10px;font-weight:700}.checkbox-input[data-indeterminate=true]+.checkmark[data-v-a5a3ed54]{background:#1989fa;border-color:#1989fa}.checkbox-input[data-indeterminate=true]+.checkmark[data-v-a5a3ed54]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:2px;background:#fff}.menu-name[data-v-a5a3ed54]{font-weight:500;flex:1;color:#606266}.menu-expand[data-v-a5a3ed54]{cursor:pointer;color:#909399;font-size:12px;padding:4px 6px;border-radius:3px;flex-shrink:0}.menu-expand[data-v-a5a3ed54]:hover{background:#f0f0f0}.submenu-list[data-v-a5a3ed54]{margin-left:24px;display:flex;flex-direction:column;gap:6px;margin-top:8px}.menu-item.level-2[data-v-a5a3ed54]{padding:6px 8px;border-radius:4px;background:#fff;border:1px solid #f0f0f0}.menu-url[data-v-a5a3ed54]{font-size:12px;color:#909399;font-family:Monaco,Consolas,monospace;margin-left:8px}.selected-info[data-v-a5a3ed54]{text-align:center;padding:8px;background:#f0f9ff;border-radius:4px;color:#1989fa;font-size:14px}.loading-state[data-v-a5a3ed54]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;color:#909399;gap:12px}.loading-spinner[data-v-a5a3ed54]{width:24px;height:24px;border:2px solid #f0f0f0;border-top:2px solid #1989fa;border-radius:50%;animation:spin-a5a3ed54 1s linear infinite}@keyframes spin-a5a3ed54{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.empty-state[data-v-a5a3ed54]{text-align:center;padding:40px;color:#909399;font-size:14px}.modal-overlay[data-v-a5a3ed54]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.modal-container[data-v-a5a3ed54]{background:#fff;border-radius:8px;max-height:90vh;overflow:auto;box-shadow:0 4px 12px rgba(0,0,0,.15)}.modal-header[data-v-a5a3ed54]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #ebeef5}.modal-title[data-v-a5a3ed54]{margin:0;font-size:16px;font-weight:600;color:#303133}.modal-close[data-v-a5a3ed54]{background:none;border:none;font-size:20px;color:#909399;cursor:pointer;width:28px;height:28px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .2s}.modal-close[data-v-a5a3ed54]:hover{background:#f5f7fa;color:#606266}.modal-body[data-v-a5a3ed54]{padding:20px}.modal-footer[data-v-a5a3ed54]{padding:16px 20px;border-top:1px solid #ebeef5;display:flex;justify-content:flex-end;gap:10px}.btn[data-v-a5a3ed54]{padding:8px 16px;border:none;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;min-width:60px}.btn[data-v-a5a3ed54]:disabled{opacity:.6;cursor:not-allowed}.btn-secondary[data-v-a5a3ed54]{background:#fff;border:1px solid #dcdfe6;color:#606266}.btn-secondary[data-v-a5a3ed54]:hover:not(:disabled){background:#f5f7fa;border-color:#c0c4cc}.btn-primary[data-v-a5a3ed54]{background:#1989fa;color:#fff}.btn-primary[data-v-a5a3ed54]:hover:not(:disabled){background:#0077e6}.modal-overlay[data-v-7ee7e7be]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px;box-sizing:border-box}.modal-container.large[data-v-7ee7e7be]{width:800px;max-width:90vw;max-height:90vh;background:#fff;border-radius:8px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 4px 12px rgba(0,0,0,.15)}.modal-header[data-v-7ee7e7be]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #ebeef5;flex-shrink:0}.modal-title[data-v-7ee7e7be]{margin:0;font-size:16px;font-weight:600;color:#303133}.modal-close[data-v-7ee7e7be]{background:none;border:none;font-size:20px;color:#909399;cursor:pointer;width:28px;height:28px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}.modal-close[data-v-7ee7e7be]:hover{background:#f5f7fa;color:#606266}.modal-body[data-v-7ee7e7be]{flex:1;padding:20px;overflow-y:auto;min-height:0;display:flex;flex-direction:column}.user-selection-section[data-v-7ee7e7be]{margin-bottom:20px;flex-shrink:0}.search-box[data-v-7ee7e7be]{display:flex;gap:10px;margin-bottom:15px}.search-box .search-input[data-v-7ee7e7be]{flex:1;padding:8px 12px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;outline:none;transition:border-color .2s;min-width:0}.search-box .search-input[data-v-7ee7e7be]:focus{border-color:#1989fa}.btn[data-v-7ee7e7be]{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .2s;white-space:nowrap;flex-shrink:0}.btn.primary[data-v-7ee7e7be]{background-color:#1989fa;color:#fff}.btn.primary[data-v-7ee7e7be]:hover{background-color:#0077e6}.user-list-container[data-v-7ee7e7be]{display:grid;grid-template-columns:1fr 1fr;gap:20px;height:min(400px,60vh);min-height:200px}.selected-users[data-v-7ee7e7be],.user-list[data-v-7ee7e7be]{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;display:flex;flex-direction:column;min-height:0}.selected-users h4[data-v-7ee7e7be],.user-list h4[data-v-7ee7e7be]{margin:0;padding:12px;background:#f5f7fa;border-bottom:1px solid #ebeef5;font-size:14px;color:#606266;flex-shrink:0}.list-content[data-v-7ee7e7be]{flex:1;overflow-y:auto;padding:8px;min-height:0}.bound-user-item[data-v-7ee7e7be],.selected-user-item[data-v-7ee7e7be],.user-item[data-v-7ee7e7be]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border:1px solid #ebeef5;border-radius:4px;margin-bottom:8px;cursor:pointer;transition:all .2s;min-height:44px;box-sizing:border-box}.user-item[data-v-7ee7e7be]:hover{background:#f5f7fa}.user-item.selected[data-v-7ee7e7be]{background:#ecf5ff;border-color:#1989fa}.user-info[data-v-7ee7e7be]{flex:1;min-width:0}.user-email[data-v-7ee7e7be]{font-weight:500;color:#303133;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-details[data-v-7ee7e7be]{margin-top:4px;font-size:12px;color:#909399;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-code[data-v-7ee7e7be],.user-name[data-v-7ee7e7be]{margin-right:8px}.selected-user-item[data-v-7ee7e7be]{background:#f0f9ff;border-color:#1989fa}.remove-btn[data-v-7ee7e7be]{background:#f56c6c;color:#fff;border:none;border-radius:50%;width:20px;height:20px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background-color .2s}.remove-btn[data-v-7ee7e7be]:hover{background:#e64c4c}.bound-users-section[data-v-7ee7e7be]{margin-top:auto;border-top:1px solid #ebeef5;padding-top:15px;flex-shrink:0;background:#fff;position:relative;z-index:1}.bound-users-section h4[data-v-7ee7e7be]{margin:0 0 12px 0;font-size:14px;color:#606266}.bound-user-item[data-v-7ee7e7be]{cursor:default}.bound-user-item[data-v-7ee7e7be]:hover{background:#f5f7fa}.action-btn.unbind[data-v-7ee7e7be]{padding:4px 8px;border:1px solid #f56c6c;border-radius:4px;background:#fff;color:#f56c6c;font-size:12px;cursor:pointer;transition:all .2s;flex-shrink:0;white-space:nowrap}.action-btn.unbind[data-v-7ee7e7be]:hover{background:#f56c6c;color:#fff}.no-data[data-v-7ee7e7be]{text-align:center;padding:40px 20px;color:#909399;font-size:14px}.modal-footer[data-v-7ee7e7be]{padding:16px 20px;border-top:1px solid #ebeef5;display:flex;justify-content:flex-end;gap:10px;flex-shrink:0}.btn-primary[data-v-7ee7e7be]{background:#1989fa;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;transition:background-color .2s}.btn-primary[data-v-7ee7e7be]:hover:not(:disabled){background:#0077e6}.btn-primary[data-v-7ee7e7be]:disabled{background:#a0cfff;cursor:not-allowed}.btn-secondary[data-v-7ee7e7be]{background:#fff;border:1px solid #dcdfe6;color:#606266;padding:8px 16px;border-radius:4px;cursor:pointer;transition:all .2s}.btn-secondary[data-v-7ee7e7be]:hover{background:#f5f7fa;border-color:#c0c4cc}@media (max-width:768px){.modal-container.large[data-v-7ee7e7be]{width:95vw;max-height:95vh}.user-list-container[data-v-7ee7e7be]{grid-template-columns:1fr;grid-template-rows:1fr 1fr;height:min(500px,50vh)}.search-box[data-v-7ee7e7be]{flex-direction:column}.modal-body[data-v-7ee7e7be]{padding:15px}.bound-users-section[data-v-7ee7e7be]{margin-top:20px}}.list-content[data-v-7ee7e7be]::-webkit-scrollbar{width:6px}.list-content[data-v-7ee7e7be]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.list-content[data-v-7ee7e7be]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.list-content[data-v-7ee7e7be]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.user-list .list-content[data-v-7ee7e7be]{max-height:none}.modal-body[data-v-7ee7e7be]::-webkit-scrollbar{width:8px}.modal-body[data-v-7ee7e7be]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.modal-body[data-v-7ee7e7be]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.modal-body[data-v-7ee7e7be]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.role-management-container[data-v-6d0ed800]{padding:20px;background-color:#f5f7fa;min-height:100vh;color:#606266;line-height:1.5}.page-header[data-v-6d0ed800]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:10px;border-bottom:1px solid #eee}.page-header h2[data-v-6d0ed800]{font-size:18px;color:#1989fa;margin:0}.filter-container[data-v-6d0ed800]{display:flex;gap:15px;align-items:center}.search-input[data-v-6d0ed800]{padding:8px 12px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;outline:none;transition:border-color .2s;width:200px;background-color:#fff}.search-input[data-v-6d0ed800]:focus{border-color:#1989fa}.status-select[data-v-6d0ed800]{padding:8px 12px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;outline:none;transition:border-color .2s;min-width:120px;background-color:#fff}.status-select[data-v-6d0ed800]:focus{border-color:#1989fa}.action-buttons[data-v-6d0ed800]{display:flex;gap:10px}.btn[data-v-6d0ed800]{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .2s;min-width:80px;text-align:center;height:36px;white-space:nowrap}.btn.primary[data-v-6d0ed800]{background-color:#1989fa;color:#fff}.btn.primary[data-v-6d0ed800]:hover{background-color:#0077e6}.btn.secondary[data-v-6d0ed800]{background-color:#f5f5f5;border:1px solid #dcdfe6;color:#606266}.btn.secondary[data-v-6d0ed800]:hover{background-color:#e6e6e6}.table-container[data-v-6d0ed800]{border-radius:8px;overflow:hidden;box-shadow:0 2px 12px 0 rgba(0,0,0,.08);margin-bottom:20px;overflow-x:auto;position:relative;min-height:200px;background-color:#fff}table[data-v-6d0ed800]{width:100%;border-collapse:collapse;table-layout:fixed;min-width:800px}td[data-v-6d0ed800],th[data-v-6d0ed800]{padding:12px 8px;text-align:center;vertical-align:middle;border:1px solid #ebeef5}th[data-v-6d0ed800]{background-color:#f5f7fa;font-weight:700;color:#606266}.role-name[data-v-6d0ed800]{font-weight:500;color:#303133}.role-code[data-v-6d0ed800]{color:#606266;font-family:Monaco,Consolas,monospace;font-size:13px}.role-desc[data-v-6d0ed800]{color:#909399;text-align:left;padding:12px 16px}.status-badge[data-v-6d0ed800]{padding:4px 8px;border-radius:12px;font-size:12px;font-weight:500}.status-badge.active[data-v-6d0ed800]{background:#f0f9ff;color:#1989fa;border:1px solid #a0d4ff}.status-badge.inactive[data-v-6d0ed800]{background:#fef0f0;color:#f56c6c;border:1px solid #fbc4c4}.role-actions[data-v-6d0ed800]{display:flex;gap:8px;justify-content:center}.action-btn[data-v-6d0ed800]{padding:4px 8px;border:1px solid;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s;background:#fff}.action-btn.bind-user[data-v-6d0ed800]{color:#e6a23c;border-color:#e6a23c}.action-btn.bind-user[data-v-6d0ed800]:hover{background:#e6a23c;color:#fff}.action-btn.edit[data-v-6d0ed800]{color:#1989fa;border-color:#1989fa}.action-btn.edit[data-v-6d0ed800]:hover{background:#1989fa;color:#fff}.action-btn.permission[data-v-6d0ed800]{color:#67c23a;border-color:#67c23a}.action-btn.permission[data-v-6d0ed800]:hover{background:#67c23a;color:#fff}.action-btn.delete[data-v-6d0ed800]{color:#f56c6c;border-color:#f56c6c}.action-btn.delete[data-v-6d0ed800]:hover{background:#f56c6c;color:#fff}tr.inactive[data-v-6d0ed800]{opacity:.6}tr[data-v-6d0ed800]:hover{background-color:#f5f7fa}.loading-overlay[data-v-6d0ed800]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:hsla(0,0%,100%,.8);display:flex;justify-content:center;align-items:center;z-index:1000}.loading-text[data-v-6d0ed800]{font-size:16px;color:#1989fa}.no-data[data-v-6d0ed800]{text-align:center;padding:40px;color:#909399;font-size:14px}.modal-overlay[data-v-6d0ed800]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.modal-container[data-v-6d0ed800]{background:#fff;border-radius:8px;width:400px;max-width:90vw;box-shadow:0 4px 12px rgba(0,0,0,.15)}.modal-header[data-v-6d0ed800]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #ebeef5}.modal-title[data-v-6d0ed800]{margin:0;font-size:16px;font-weight:600;color:#303133}.modal-close[data-v-6d0ed800]{background:none;border:none;font-size:20px;color:#909399;cursor:pointer;width:28px;height:28px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .2s}.modal-close[data-v-6d0ed800]:hover{background:#f5f7fa;color:#606266}.modal-body[data-v-6d0ed800]{padding:20px}.confirm-content[data-v-6d0ed800]{text-align:center;padding:20px 0}.confirm-icon[data-v-6d0ed800]{font-size:48px;margin-bottom:16px}.confirm-message[data-v-6d0ed800]{margin:0;color:#606266;line-height:1.6;font-size:14px}.modal-footer[data-v-6d0ed800]{padding:16px 20px;border-top:1px solid #ebeef5;display:flex;justify-content:flex-end;gap:10px}.btn-danger[data-v-6d0ed800]{background:#f56c6c;color:#fff}.btn-danger[data-v-6d0ed800]:hover{background:#e64c4c}.btn-secondary[data-v-6d0ed800]{background:#fff;border:1px solid #dcdfe6;color:#606266}.btn-secondary[data-v-6d0ed800]:hover{background:#f5f7fa;border-color:#c0c4cc}@media (max-width:768px){.page-header[data-v-6d0ed800]{flex-direction:column;align-items:stretch;gap:15px}.filter-container[data-v-6d0ed800]{flex-wrap:wrap}.search-input[data-v-6d0ed800]{width:100%}.action-buttons[data-v-6d0ed800]{width:100%;justify-content:flex-end}.table-container[data-v-6d0ed800]{overflow-x:auto}}