.gx-roles__filter[data-v-2c8f25b6]{background:#fff;border-radius:8px;border:2px solid #e0e0ec;padding:10px 14px;margin-bottom:14px;display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-shadow:rgba(0,0,0,.05) 0 1px 4px;box-shadow:0 1px 4px rgba(0,0,0,.05)}.gx-roles__input[data-v-2c8f25b6]{width:180px;height:28px;padding:0 10px;border-radius:4px;border:1px solid #e0e0ec;font-size:12px;color:#1a1a2e;outline:none;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border .15s;transition:border .15s}.gx-roles__input[data-v-2c8f25b6]:focus{border-color:#c8443c;-webkit-box-shadow:0 0 0 2px #fff5f5;box-shadow:0 0 0 2px #fff5f5}.gx-roles__select[data-v-2c8f25b6]{height:28px;padding:0 8px;border-radius:4px;border:1px solid #e0e0ec;background:#fff;font-size:12px;color:#1a1a2e;outline:none;min-width:110px}.gx-roles__select[data-v-2c8f25b6]:focus{border-color:#c8443c}.gx-roles__spacer[data-v-2c8f25b6]{-webkit-box-flex:1;-ms-flex:1;flex:1}.gx-roles__btn[data-v-2c8f25b6]{height:30px;padding:0 14px;border-radius:7px;cursor:pointer;background:#fff;border:1px solid #e0e0ec;font-size:13px;color:#4a4a6a;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:5px;-webkit-transition:all .16s;transition:all .16s}.gx-roles__btn[data-v-2c8f25b6]:hover:not(:disabled){border-color:#c8443c;color:#c8443c}.gx-roles__btn--primary[data-v-2c8f25b6]{background:#c8443c;border-color:#c8443c;font-weight:600;color:#fff}.gx-roles__btn--primary[data-v-2c8f25b6]:hover:not(:disabled){background:#b83a33;border-color:#b83a33;color:#fff}.gx-roles__btn--add[data-v-2c8f25b6]{background:#c8443c;border-color:#c8443c;font-weight:600;color:#fff}.gx-roles__btn--add[data-v-2c8f25b6]:hover:not(:disabled){background:#b83a33;border-color:#b83a33;color:#fff}.gx-roles__btn--danger[data-v-2c8f25b6]{color:#c8443c;border-color:#f2c6c3;background:#fff7f7}.gx-roles__btn--danger[data-v-2c8f25b6]:hover:not(:disabled){color:#b83a33;border-color:#c8443c;background:#fff0f0}.gx-roles__btn[data-v-2c8f25b6]:disabled{opacity:.5;cursor:not-allowed}.gx-roles__card[data-v-2c8f25b6]{border-radius:12px;border:1px solid #e1e5ee;margin-bottom:16px;background:#fff;overflow:visible}.gx-roles__table[data-v-2c8f25b6]{border-radius:12px 12px 0 0;overflow:hidden;background:#fff}.gx-roles__table table[data-v-2c8f25b6]{width:100%;border-collapse:collapse}.gx-roles__table th[data-v-2c8f25b6]{padding:11px 14px;text-align:left;background:#f5f0e8;font-size:12px;font-weight:500;color:#4a4a6a;letter-spacing:.02em}.gx-roles__table td[data-v-2c8f25b6]{padding:12px 14px;font-size:13px;color:#1a1a2e;border-top:1px solid #f0f0f4}.gx-roles__td-name[data-v-2c8f25b6]{font-weight:500}.gx-roles__td-desc[data-v-2c8f25b6]{color:#4a4a6a}.gx-roles__checkbox[data-v-2c8f25b6]{width:15px;height:15px;border-radius:4px;background:#fff;border:1.5px solid #d0d0dd;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;vertical-align:middle}.gx-roles__checkbox--on[data-v-2c8f25b6]{background:#c8443c;border-color:#c8443c}.gx-roles__status[data-v-2c8f25b6]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:3px 9px;border-radius:5px;font-size:11px;font-weight:500}.gx-roles__status-dot[data-v-2c8f25b6]{width:6px;height:6px;border-radius:50%}.gx-roles__status--on[data-v-2c8f25b6]{background:rgba(74,222,128,.1);border:1px solid rgba(74,222,128,.3);color:#16a34a}.gx-roles__status--on .gx-roles__status-dot[data-v-2c8f25b6]{background:#22c55e}.gx-roles__status--off[data-v-2c8f25b6]{background:rgba(139,157,195,.1);border:1px solid rgba(139,157,195,.3);color:#6a6a8a}.gx-roles__status--off .gx-roles__status-dot[data-v-2c8f25b6]{background:#6a6a8a}.gx-roles__ops[data-v-2c8f25b6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px}.gx-roles__op[data-v-2c8f25b6]{height:26px;padding:0 10px;border-radius:5px;cursor:pointer;font-size:11px;border:1px solid;-webkit-transition:all .16s;transition:all .16s}.gx-roles__op--edit[data-v-2c8f25b6]{background:#e6f4ff;border-color:#91caff;color:#1677ff}.gx-roles__op--edit[data-v-2c8f25b6]:hover{background:#1677ff;color:#fff}.gx-roles__op--del[data-v-2c8f25b6]{background:#fff5f5;border-color:#ffccc7;color:#c8443c}.gx-roles__op--del[data-v-2c8f25b6]:hover{background:#c8443c;color:#fff}.gx-roles__empty[data-v-2c8f25b6]{text-align:center;padding:48px 0!important}.gx-roles__empty-box[data-v-2c8f25b6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:0}.gx-roles__empty-box[data-v-2c8f25b6],.gx-roles__empty-icon[data-v-2c8f25b6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.gx-roles__empty-icon[data-v-2c8f25b6]{width:56px;height:56px;border-radius:50%;background:#fff5f5;border:1px solid #ffccc7;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:14px}.gx-roles__empty-title[data-v-2c8f25b6]{font-size:14px;font-weight:500;color:#1a1a2e;margin-bottom:6px}.gx-roles__empty-sub[data-v-2c8f25b6]{font-size:12px;color:rgba(200,68,60,.68);line-height:1.7;margin-bottom:16px}.gx-roles__pager[data-v-2c8f25b6]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;padding:10px 14px;border-top:1px solid #e0e0ec;background:#f5f0e8;border-radius:0 0 12px 12px;position:relative;z-index:5}.gx-roles__pager-left[data-v-2c8f25b6],.gx-roles__pager[data-v-2c8f25b6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.gx-roles__pager-left[data-v-2c8f25b6]{gap:10px}.gx-roles__pager-total[data-v-2c8f25b6]{font-size:12px;color:#6a6a8a}.gx-roles__pager-btns[data-v-2c8f25b6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:5px}.gx-roles__page[data-v-2c8f25b6]{min-width:30px;height:30px;padding:0 8px;border-radius:6px;border:1px solid #e1e5ee;background:#fff;cursor:pointer;font-family:JetBrains Mono,monospace;font-size:12px;color:#4a4a6a}.gx-roles__page[data-v-2c8f25b6]:disabled{opacity:.5;cursor:not-allowed}.gx-roles__page--on[data-v-2c8f25b6]{background:#c8443c;border-color:#c8443c;color:#fff;font-weight:700}.gx-roles__modal[data-v-2c8f25b6]{position:fixed;inset:0;z-index:700;background:rgba(8,14,36,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:24px}.gx-roles__modal-box[data-v-2c8f25b6]{width:100%;max-width:960px;max-height:90vh;overflow:auto;border-radius:12px;background:#f5f0e8;border:1px solid #e0e0ec;-webkit-box-shadow:0 12px 48px rgba(0,0,0,.18);box-shadow:0 12px 48px rgba(0,0,0,.18)}.gx-roles__modal-head[data-v-2c8f25b6]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:13px 20px;border-bottom:1px solid #e0e0ec;position:sticky;top:0;background:#f5f0e8;z-index:1}.gx-roles__modal-head[data-v-2c8f25b6],.gx-roles__modal-title-wrap[data-v-2c8f25b6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.gx-roles__modal-title-wrap[data-v-2c8f25b6]{gap:8px}.gx-roles__modal-bar[data-v-2c8f25b6]{width:3px;height:15px;border-radius:2px;background:#c8443c}.gx-roles__modal-title[data-v-2c8f25b6]{font-family:"Noto Serif SC",serif;font-size:15px;font-weight:600;color:#1a1a2e}.gx-roles__modal-close[data-v-2c8f25b6]{width:26px;height:26px;border-radius:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#fff;border:1px solid #e0e0ec;cursor:pointer;padding:0}.gx-roles__modal-close[data-v-2c8f25b6]:hover{background:#fff5f5}.gx-roles__modal-body[data-v-2c8f25b6]{padding:18px 20px;background:#fff}.gx-roles__form-row[data-v-2c8f25b6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:24px}.gx-roles__form-row .gx-roles__field[data-v-2c8f25b6]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.gx-roles__field[data-v-2c8f25b6]{margin-bottom:14px}.gx-roles__field-label[data-v-2c8f25b6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;font-size:12px;color:#4a4a6a;margin-bottom:8px}.gx-roles__req[data-v-2c8f25b6]{color:#c8443c}.gx-roles__field-input[data-v-2c8f25b6]{width:100%;height:36px;padding:0 12px;border-radius:6px;border:1px solid #e0e0ec;background:#fff;font-size:13px;color:#1a1a2e;outline:none;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border .15s;transition:border .15s}.gx-roles__field-input[data-v-2c8f25b6]:focus{border-color:#c8443c;-webkit-box-shadow:0 0 0 2px #fff5f5;box-shadow:0 0 0 2px #fff5f5}.gx-roles__status-group[data-v-2c8f25b6]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px}.gx-roles__status-item[data-v-2c8f25b6]{min-width:132px;height:42px;padding:0 18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;border:1px solid #e0e0ec;border-radius:8px;cursor:pointer;font-size:13px;color:#6a6a8a;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gx-roles__status-item[data-v-2c8f25b6]:hover{border-color:#ffccc7}.gx-roles__status-item.is-active[data-v-2c8f25b6]{border-color:#c8443c;border-width:1.5px;background:#fff7f7;color:#c8443c;font-weight:500}.gx-roles__status-radio[data-v-2c8f25b6]{width:14px;height:14px;border-radius:50%;border:1.5px solid #d0d0dd;position:relative;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:all .15s;transition:all .15s}.gx-roles__status-item.is-active .gx-roles__status-radio[data-v-2c8f25b6]{border-color:#c8443c}.gx-roles__status-item.is-active .gx-roles__status-radio[data-v-2c8f25b6]:after{content:"";position:absolute;inset:2px;border-radius:50%;background:#c8443c}.gx-roles__group-tags[data-v-2c8f25b6]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}.gx-roles__group-tag[data-v-2c8f25b6]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:5px;padding:5px 10px;border-radius:6px;border:1px solid #e0e0ec;cursor:pointer;font-size:12px;color:#4a4a6a;background:#fff;-webkit-transition:all .15s;transition:all .15s}.gx-roles__group-tag input[data-v-2c8f25b6]{position:absolute;opacity:0;width:0;height:0}.gx-roles__group-tag.is-checked[data-v-2c8f25b6]{border-color:#c8443c;background:#fff5f5;color:#c8443c}.gx-roles__tree[data-v-2c8f25b6]{border:1px solid #e1e5ee;border-radius:8px;padding:10px;max-height:240px;overflow:auto;background:#fff}.gx-roles__modal-foot[data-v-2c8f25b6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid #e0e0ec;position:sticky;bottom:0;background:#f5f0e8}.gx-roles__modal-btn[data-v-2c8f25b6]{height:32px;padding:0 16px;border-radius:5px;cursor:pointer;background:#fff;border:1px solid #e0e0ec;font-size:13px;color:#4a4a6a;-webkit-transition:all .15s;transition:all .15s}.gx-roles__modal-btn[data-v-2c8f25b6]:hover:not(:disabled){border-color:#c8443c;color:#c8443c}.gx-roles__modal-btn--primary[data-v-2c8f25b6]{background:linear-gradient(135deg,#ec8f8a,#f3aca8);border:none;font-weight:600;color:#fff}.gx-roles__modal-btn--primary[data-v-2c8f25b6]:hover:not(:disabled){color:#fff;opacity:.92}.gx-roles__modal-btn--primary[data-v-2c8f25b6]:disabled{background:#f0f0f0;color:#6a6a8a;opacity:.6;cursor:not-allowed}