/* ============================================
   등급 설정 페이지 (Grade Settings)
   ============================================ */

/* ── 통계카드 아이콘 색상 확장 ─────────────── */

.or_stat_icon_wrap.is_green {
  background-color: #dcfce7;
}

.is_green>.or_stat_icon {
  color: #16a34a;
}

.dark .or_stat_icon_wrap.is_green {
  background-color: rgba(22, 163, 74, 0.15);
}

.dark .is_green>.or_stat_icon {
  color: #4ade80;
}

.or_stat_icon_wrap.is_amber {
  background-color: #fef3c7;
}

.is_amber>.or_stat_icon {
  color: #d97706;
}

.dark .or_stat_icon_wrap.is_amber {
  background-color: rgba(217, 119, 6, 0.15);
}

.dark .is_amber>.or_stat_icon {
  color: #fbbf24;
}

/* ── 탭 아래 컨트롤 바 ────────────────────── */

.gr_tab_controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.75rem 1rem;
  background-color: var(--c-white);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-xl);
}

.dark .gr_tab_controls {
  background-color: var(--c-surface-2);
  border-color: var(--c-border);
}

/* ── 자동승급 토글 ────────────────────────── */

.gr_auto_upgrade {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.gr_auto_upgrade_label {
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--c-text-2);
}

.gr_toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  width: 2.75rem;
  height: 1.5rem;
  border-radius: var(--radius-full);
  background-color: var(--c-gray-300);
  border: none;
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-default);
}

.gr_toggle.is_on {
  background-color: var(--c-primary-500);
}

.dark .gr_toggle {
  background-color: var(--c-gray-400);
}

.dark .gr_toggle.is_on {
  background-color: var(--c-primary-500);
}

.gr_toggle_knob {
  display: inline-block;
  width: 1rem;
  height: 1rem;
  border-radius: var(--radius-full);
  background-color: var(--c-white);
  transform: translateX(0.25rem);
  transition: transform var(--duration-fast) var(--ease-default);
}

.gr_toggle.is_on .gr_toggle_knob {
  transform: translateX(1.5rem);
}

.gr_toggle_status {
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--c-text-3);
}

.gr_toggle_status.is_on {
  color: var(--c-primary-500);
}

.dark .gr_toggle_status.is_on {
  color: var(--c-primary-400);
}

/* ── 액션 버튼 그룹 ──────────────────────── */

.gr_action_btns {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.gr_action_btn {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.375rem 0.75rem;
  font-size: 0.75rem;
  font-weight: 500;
  border-radius: var(--radius-lg);
  border: 1px solid;
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-default);
}

.gr_action_btn_icon {
  width: 0.875rem;
  height: 0.875rem;
  flex-shrink: 0;
}

.gr_action_btn.is_blue {
  color: #1d4ed8;
  background-color: #eff6ff;
  border-color: #bfdbfe;
}

.gr_action_btn.is_blue:hover {
  background-color: #dbeafe;
}

.dark .gr_action_btn.is_blue {
  color: #60a5fa;
  background-color: rgba(37, 99, 235, 0.1);
  border-color: rgba(37, 99, 235, 0.3);
}

.dark .gr_action_btn.is_blue:hover {
  background-color: rgba(37, 99, 235, 0.2);
}

.gr_action_btn.is_red {
  color: #b91c1c;
  background-color: #fef2f2;
  border-color: #fecaca;
}

.gr_action_btn.is_red:hover {
  background-color: #fee2e2;
}

.dark .gr_action_btn.is_red {
  color: #fca5a5;
  background-color: rgba(185, 28, 28, 0.1);
  border-color: rgba(185, 28, 28, 0.3);
}

.dark .gr_action_btn.is_red:hover {
  background-color: rgba(185, 28, 28, 0.2);
}

.gr_action_btn.is_amber {
  color: #b45309;
  background-color: #fffbeb;
  border-color: #fde68a;
}

.gr_action_btn.is_amber:hover {
  background-color: #fef3c7;
}

.dark .gr_action_btn.is_amber {
  color: #fbbf24;
  background-color: rgba(180, 83, 9, 0.1);
  border-color: rgba(180, 83, 9, 0.3);
}

.dark .gr_action_btn.is_amber:hover {
  background-color: rgba(180, 83, 9, 0.2);
}

.gr_action_badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.125rem;
  height: 1.125rem;
  padding: 0 0.25rem;
  border-radius: var(--radius-full);
  font-size: 0.625rem;
  font-weight: 700;
  line-height: 1;
}

.gr_action_btn.is_blue .gr_action_badge {
  background-color: #bfdbfe;
}

.gr_action_btn.is_red .gr_action_badge {
  background-color: #fecaca;
}

.gr_action_btn.is_amber .gr_action_badge {
  background-color: #fde68a;
}

/* ── 등급 테이블 ──────────────────────────── */

.gr_grade_table {
  table-layout: fixed;
  min-width: 720px;
}

.gr_grade_table .dtable_td {
  font-size: 0.875rem;
  font-weight: 400;
  color: var(--c-text-2);
}

/* 등급명 */
.gr_grade_table .dtable_th:nth-child(1),
.gr_grade_table .dtable_td:nth-child(1) {
  width: 14%;
}

/* 할인율 */
.gr_grade_table .dtable_th:nth-child(2),
.gr_grade_table .dtable_td:nth-child(2) {
  width: 12%;
}

/* 마일리지율 */
.gr_grade_table .dtable_th:nth-child(3),
.gr_grade_table .dtable_td:nth-child(3) {
  width: 14%;
}

/* 승급 횟수 */
.gr_grade_table .dtable_th:nth-child(4),
.gr_grade_table .dtable_td:nth-child(4) {
  width: 14%;
}

/* 승급 금액 */
.gr_grade_table .dtable_th:nth-child(5),
.gr_grade_table .dtable_td:nth-child(5) {
  width: 16%;
}

/* 회원 수 */
.gr_grade_table .dtable_th:nth-child(6),
.gr_grade_table .dtable_td:nth-child(6) {
  width: 14%;
}

/* 작업 */
.gr_grade_table .dtable_th:nth-child(7),
.gr_grade_table .dtable_td:nth-child(7) {
  width: 16%;
}

/* ── 등급 레벨 배지 ──────────────────────── */

.gr_level_name {
  font-size: 0.875rem;
  font-weight: 600;
}

.gr_level_name.is_bronze {
  color: #b45309;
}

.gr_level_name.is_silver {
  color: #6b7280;
}

.gr_level_name.is_gold {
  color: #ca8a04;
}

.gr_level_name.is_vip {
  color: #e11d48;
}

.gr_level_name.is_platinum {
  color: #4f46e5;
}

.dark .gr_level_name.is_bronze {
  color: #fbbf24;
}

.dark .gr_level_name.is_silver {
  color: #d1d5db;
}

.dark .gr_level_name.is_gold {
  color: #facc15;
}

.dark .gr_level_name.is_vip {
  color: #fb7185;
}

.dark .gr_level_name.is_platinum {
  color: #818cf8;
}

/* ── 인라인 편집 input ───────────────────── */

.gr_edit_input {
  padding: 0.25rem 0.5rem;
  font-size: 0.875rem;
  border: 1px solid var(--c-input-border);
  border-radius: var(--radius-md);
  background-color: var(--c-white);
  color: var(--c-text-1);
  outline: none;
}

.gr_edit_input:focus {
  border-color: var(--c-primary-500);
}

.dark .gr_edit_input {
  background-color: var(--c-surface);
  color: var(--c-text-2);
  border-color: var(--c-border);
}

.gr_edit_input.is_name {
  width: 100%;
}

.gr_edit_input.is_right {
  width: 100%;
  text-align: right;
}

.gr_edit_row {
  background-color: var(--c-primary-50);
}

.dark .gr_edit_row {
  background-color: var(--c-hover);
}

/* ── 회원 수 배지 ────────────────────────── */

.gr_member_count {
  display: inline-flex;
  align-items: center;
  padding: 0.125rem 0.5rem;
  border-radius: var(--radius-full);
  font-size: 0.75rem;
  font-weight: 500;
  background-color: #dbeafe;
  color: #1e40af;
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-default);
}

.gr_member_count:hover {
  background-color: #bfdbfe;
}

.dark .gr_member_count {
  background-color: rgba(37, 99, 235, 0.15);
  color: #60a5fa;
}

.dark .gr_member_count:hover {
  background-color: rgba(37, 99, 235, 0.25);
}

/* ── 정책 버튼 ───────────────────────────── */

/* 정책 설정됨 표시 (dtable_action_btn 확장) */
.dtable_action_btn.gr_action_set {
  color: #d97706;
}

.dtable_action_btn.gr_action_set:hover {
  background-color: #fef3c7;
}

.dark .dtable_action_btn.gr_action_set {
  color: #fbbf24;
}

.dark .dtable_action_btn.gr_action_set:hover {
  background-color: rgba(217, 119, 6, 0.15);
}

.gr_policy_btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: var(--radius-md);
  border: none;
  background: none;
  color: var(--c-text-3);
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-default),
    color var(--duration-fast) var(--ease-default);
}

.gr_policy_btn:hover {
  background-color: var(--c-gray-50);
}

.gr_policy_btn.is_set {
  color: #d97706;
}

.gr_policy_btn.is_set:hover {
  background-color: #fef3c7;
}

.dark .gr_policy_btn:hover {
  background-color: var(--c-hover);
}

.dark .gr_policy_btn.is_set {
  color: #fbbf24;
}

.dark .gr_policy_btn.is_set:hover {
  background-color: rgba(217, 119, 6, 0.15);
}

.gr_policy_btn_icon {
  width: 1rem;
  height: 1rem;
}

/* ── 인라인 액션 버튼 (수정/저장/취소) ──── */

.gr_inline_actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
}

.gr_inline_btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: var(--radius-md);
  border: none;
  background: none;
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-default);
}

.gr_inline_btn_icon {
  width: 1rem;
  height: 1rem;
}

.gr_inline_btn.is_edit {
  color: var(--c-primary-500);
}

.gr_inline_btn.is_edit:hover {
  background-color: var(--c-primary-50);
}

.dark .gr_inline_btn.is_edit:hover {
  background-color: var(--c-selected);
}

.gr_inline_btn.is_save {
  color: #16a34a;
}

.gr_inline_btn.is_save:hover {
  background-color: #dcfce7;
}

.dark .gr_inline_btn.is_save:hover {
  background-color: rgba(22, 163, 74, 0.15);
}

.gr_inline_btn.is_cancel {
  color: var(--c-text-3);
}

.gr_inline_btn.is_cancel:hover {
  background-color: var(--c-gray-50);
}

.dark .gr_inline_btn.is_cancel:hover {
  background-color: var(--c-hover);
}

/* ── 기본 등급 표시 ──────────────────────── */

.gr_default_label {
  font-size: 0.75rem;
  color: var(--c-text-3);
}

/* ── 유형명 모달 ─────────────────────────── */

.modal_container.gr_type_modal {
  max-width: 32rem;
  padding: 0;
  display: flex;
  flex-direction: column;
}

.gr_type_list {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.gr_type_row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.gr_type_code {
  width: 7rem;
  flex-shrink: 0;
  font-size: 0.75rem;
  font-family: var(--font-mono, monospace);
  color: var(--c-text-3);
}

.gr_type_input {
  flex: 1;
  height: 2.25rem;
  padding: 0 0.75rem;
  border: 1px solid var(--c-input-border);
  border-radius: var(--radius-lg);
  font-size: 0.875rem;
  background-color: var(--c-white);
  color: var(--c-text-1);
  outline: none;
}

.gr_type_input:focus {
  border-color: var(--c-primary-500);
}

.dark .gr_type_input {
  background-color: var(--c-surface);
  color: var(--c-text-2);
  border-color: var(--c-border);
}

.gr_type_name {
  flex: 1;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--c-text-1);
}

.dark .gr_type_name {
  color: var(--c-text-1);
}

/* ── 정책 모달 등급 정보 (가로 배치) ──────── */
.gr_policy_modal .mil_member_info.is_row {
  display: flex;
  flex-direction: row;
  gap: 1.5rem;
}

/* ── 정책 모달 ───────────────────────────── */

.modal_container.gr_policy_modal {
  max-width: 28rem;
}

.gr_policy_modal .grid_2col {
  gap: 1rem;
}

.gr_policy_modal .form_input.is_right {
  text-align: right;
}

/* 취소 정책 그룹 */
.gr_cancel_wrap {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
  padding: 0.75rem;
  border-radius: var(--radius-lg);
  border: 1px solid var(--c-line);
}

.dark .gr_cancel_wrap {
  border-color: var(--c-border);
}

.gr_cancel_item {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

.gr_cancel_label {
  font-size: 0.875rem;
  line-height: 1.25rem;
  font-weight: 500;
  color: var(--c-gray-600);
}

/* ── 호텔 할인 모달 (듀얼 패널) ──────────── */

.modal_container.gr_discount_modal {
  max-width: 42rem;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
}

.gr_discount_modal > .gr_settings_body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 0;
}

.gr_discount_desc {
  font-size: 0.875rem;
  color: var(--c-text-2);
  margin-top: 0.25rem;
}

/* ── 듀얼 패널 오버라이드 ────────────────── */

.gr_discount_modal .sd_dual_list {
  min-height: 14rem;
  max-height: 14rem;
}

.gr_discount_modal .sd_dual_panel.is_selected .sd_dual_list {
  max-height: none;
}

/* ── 우측 패널 할인율 인풋 ─────────────────── */

.gr_discount_rate_input {
  display: flex;
  align-items: center;
  gap: 0.25rem;
  flex-shrink: 0;
}

.gr_discount_rate_input > input {
  width: 4rem;
  padding: 0.125rem 0.25rem;
  font-size: 0.75rem;
  text-align: right;
  border: 1px solid var(--c-input-border);
  border-radius: var(--radius-md);
  background-color: var(--c-white);
  color: var(--c-text-1);
  outline: none;
}

.gr_discount_rate_input > input:focus {
  border-color: var(--c-primary-500);
}

.dark .gr_discount_rate_input > input {
  background-color: var(--c-surface);
  border-color: var(--c-border);
  color: var(--c-text-2);
}

.gr_discount_rate_input > span {
  font-size: 0.75rem;
  color: var(--c-text-3);
}

/* ── 일괄 할인율 바 ──────────────────────── */

.gr_discount_bulk {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem;
  border-radius: var(--radius-lg);
  background-color: var(--c-gray-50);
}

.dark .gr_discount_bulk {
  background-color: rgba(0, 0, 0, 0.2);
}

.gr_discount_bulk .form_label {
  margin-bottom: 0;
  white-space: nowrap;
}

.gr_discount_bulk .form_input {
  width: 5rem;
  height: auto;
  padding: 0.375rem 0.5rem;
  text-align: right;
}

.gr_discount_bulk > span {
  font-size: 0.875rem;
  color: var(--c-text-2);
}

/* ── headerAction 버튼 그룹 ──────────────── */

.gr_header_actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

/* ── 유형 설정 모달 ──────────────────────── */

.modal_container.gr_settings_modal {
  max-width: 38rem;
  max-height: 85vh;
  padding: 0;
  display: flex;
  flex-direction: column;
}

.gr_settings_modal > .modal_title {
  padding: 1.25rem 1.5rem 0;
}

.gr_settings_body {
  flex: 1;
  overflow-y: auto;
  padding: 1rem 1.5rem;
}

.gr_settings_modal > .modal_footer {
  padding: 1rem 1.5rem;
  border-top: 1px solid var(--c-line);
}

.dark .gr_settings_modal > .modal_footer {
  border-top-color: var(--c-border);
}

.gr_settings_modal .grid_2col {
  gap: 1rem;
}

.gr_settings_modal .toggle_btn_group {
  width: fit-content;
}

/* 라벨 + 버튼 한 줄 */
.gr_label_row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 0.375rem;
}

.gr_label_row .form_label {
  margin-bottom: 0;
}

/* 빈 상태 */
.gr_empty_hint {
  padding: 0.75rem;
  font-size: 0.8125rem;
  color: var(--c-text-3);
  text-align: center;
  border: 1px dashed var(--c-line);
  border-radius: var(--radius-lg);
}

.dark .gr_empty_hint {
  border-color: var(--c-border);
}

