/* ============================================
   쿠폰 관리 페이지
   프리픽스: cpn_
   참고: pages/member-limit.css (gsd_) + pages/grade-seasonal-deny.css (sd_)
   ============================================ */

/* ── 필터 바 ─────────────────────────────────── */

.cpn_filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
  position: relative;
  z-index: 20;
  flex-shrink: 0;
}

.cpn_filter .cselect {
  width: 8rem;
}

.cpn_filter .cselect_trigger {
  height: 2.375rem;
}

.cpn_search_wrap {
  position: relative;
  flex: 0 1 auto;
  width: 16rem;
}

.cpn_search_icon {
  position: absolute;
  left: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  width: 1rem;
  height: 1rem;
  color: var(--c-gray-400);
  pointer-events: none;
}

.dark .cpn_search_icon {
  color: var(--c-text-2);
}

.cpn_search_input {
  width: 100%;
  height: 2.375rem;
  padding: 0 1rem 0 2.5rem;
  border: 1px solid var(--c-input-border);
  border-radius: var(--radius-lg);
  font-size: 0.875rem;
  background-color: #fff;
  color: var(--c-text-1);
  outline: none;
}

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

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

.cpn_filter_right {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

/* ── 테이블 스크롤 영역 ──────────────────────── */

.cpn_table_scroll {
  flex: 1 1 0%;
  min-height: 0;
  overflow-x: auto;
  overflow-y: auto;
}

.cpn_table_scroll::-webkit-scrollbar {
  width: 0;
  height: 9px;
}

.cpn_table_scroll::-webkit-scrollbar-corner {
  background: transparent;
}

/* ── 테이블 컬럼 너비 ────────────────────────── */
/* 순서: 발급 - 쿠폰명 - 혜택 - 대상 - 사용 - 만료일 - 상태 - 활성 - 관리 */
/* 7% - 16% - 13% - 13% - 6% - 10% - 7% - 6% - 7% */

.cpn_table {
  table-layout: fixed;
  min-width: 960px;
}

.cpn_table .dtable_th:nth-child(1),
.cpn_table .dtable_td:nth-child(1) {
  width: 7%;
}

.cpn_table .dtable_th:nth-child(2),
.cpn_table .dtable_td:nth-child(2) {
  width: 16%;
}

.cpn_table .dtable_th:nth-child(3),
.cpn_table .dtable_td:nth-child(3) {
  width: 13%;
}

.cpn_table .dtable_th:nth-child(4),
.cpn_table .dtable_td:nth-child(4) {
  width: 11%;
}

.cpn_table .dtable_th:nth-child(5),
.cpn_table .dtable_td:nth-child(5) {
  width: 6%;
}

.cpn_table .dtable_th:nth-child(6),
.cpn_table .dtable_td:nth-child(6) {
  width: 10%;
}

.cpn_table .dtable_th:nth-child(7),
.cpn_table .dtable_td:nth-child(7) {
  width: 7%;
}

.cpn_table .dtable_th:nth-child(8),
.cpn_table .dtable_td:nth-child(8) {
  width: 6%;
}

.cpn_table .dtable_th:nth-child(9),
.cpn_table .dtable_td:nth-child(9) {
  width: 7%;
}

/* ── 상태 뱃지 확장 ───────────────────────────── */
/* is_confirmed, is_cancelled, is_exhausted, is_inactive 는 components.css에서 정의됨 */

.dtable_badge.is_all {
  background-color: var(--c-primary-500);
  color: #fff;
}

.dtable_badge.is_revoked {
  background-color: var(--c-gray-800);
  color: #fff;
}

/* ── 쿠폰명 셀 ──────────────────────────────── */

.cpn_name {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ── 사용 셀 (사용 + 등록 카운트) ──────────── */
.cpn_usage_cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.125rem;
  font-size: 0.8125rem;
}

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

/* ── 발급 유형 배지 ──────────────────────────── */

.cpn_issuance_badge {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  padding: 0.125rem 0.375rem;
  font-size: 0.6875rem;
  font-weight: 500;
  border-radius: var(--radius-sm, 4px);
  line-height: 1;
  white-space: nowrap;
}

.cpn_issuance_badge.is_manual {
  background-color: var(--c-gray-100, #f1f5f9);
  color: var(--c-gray-600, #475569);
}

.cpn_issuance_badge.is_auto_assign {
  background-color: #dbeafe;
  color: #1e40af;
}

.cpn_issuance_badge.is_auto_annual {
  background-color: #d1fae5;
  color: #065f46;
}

.dark .cpn_issuance_badge.is_manual {
  background-color: rgba(148, 163, 184, 0.15);
  color: #cbd5e1;
}

.dark .cpn_issuance_badge.is_auto_assign {
  background-color: rgba(30, 64, 175, 0.2);
  color: #93c5fd;
}

.dark .cpn_issuance_badge.is_auto_annual {
  background-color: rgba(6, 95, 70, 0.2);
  color: #86efac;
}

/* ── 등록/수정 드로어 ──────────────────────────── */

.cpn_drawer {
  max-width: 38rem;
}

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

.cpn_drawer_header_right {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-left: auto;
  flex-shrink: 0;
}

/* DateField 드로어 호환: transform stacking context → fixed → absolute 전환 */
.cpn_drawer .daterange_wrap {
  width: 100%;
}

.cpn_drawer .daterange_input {
  width: 100%;
  height: 2.7rem;
}

.cpn_drawer .daterange_dropdown {
  position: absolute !important;
  top: calc(100% + 6px) !important;
  bottom: auto !important;
  left: 0 !important;
  right: auto !important;
  z-index: 100 !important;
  width: max-content;
}

.cpn_drawer_form {
  display: flex;
  flex-direction: column;
  flex: 1 1 0%;
  overflow: hidden;
}

/* 한 줄 필드 배치 */
.cpn_row {
  display: flex;
  align-items: flex-end;
  gap: 1rem;
}

.cpn_col {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

/* 힌트 텍스트 */
.cpn_hint {
  color: var(--c-text-3);
  font-size: 0.75rem;
  font-weight: normal;
  margin-left: 0.25rem;
}

/* 쿠폰번호 표시 + 복사 버튼 */
.cpn_number_wrap {
  display: flex;
  align-items: stretch;
  gap: 0.5rem;
}

.cpn_number_display {
  flex: 1;
  color: var(--c-text-1);
}

.cpn_number_copy_btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5rem;
  padding: 0 0.75rem;
  border: 1px solid var(--c-input-border);
  border-radius: var(--radius-md);
  background: var(--c-bg-1);
  color: var(--c-text-2);
  cursor: pointer;
  transition: all 0.15s;
}

.cpn_number_copy_btn:hover {
  background: var(--c-primary-50);
  color: var(--c-primary-600);
}

.dark .cpn_number_copy_btn {
  border-color: var(--c-dark-line);
  background: var(--c-dark-bg-1);
  color: var(--c-dark-text-2);
}

.dark .cpn_number_copy_btn:hover {
  background: var(--c-primary-200);
  color: var(--c-dark-text-1);
}

/* ── 회원 지정 UI ─────────────────────────── */

.cpn_member_search_wrap {
  position: relative;
}

.cpn_member_search_icon {
  position: absolute;
  left: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--c-text-3);
  pointer-events: none;
}

.cpn_member_search_input {
  padding-left: 2.25rem;
}

.cpn_member_search_spinner {
  position: absolute;
  right: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--c-text-3);
  animation: spin 1s linear infinite;
}

/* 검색 드롭다운 (cselect_dropdown 재사용) */
.cpn_search_results {
  z-index: 60;
  max-height: 12rem;
}

.cpn_search_option {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.125rem;
  text-align: left;
  width: 100%;
  white-space: normal;
  height: auto;
  padding: 0.5rem 0.75rem;
}

.cpn_search_option_info {
  display: flex;
  align-items: center;
  gap: 0.375rem;
}

.cpn_search_option_name {
  font-weight: 500;
  color: var(--c-text-1);
}

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

/* 선택된 회원 (cselect_trigger.is_disabled 재사용) */
.cpn_member_trigger {
  pointer-events: none;
}

.cpn_member_trigger_text {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 0.875rem;
}

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

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

.cpn_member_clear_btn {
  pointer-events: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border: none;
  border-radius: 999px;
  background: transparent;
  color: var(--c-text-3);
  cursor: pointer;
  transition: all 0.15s;
}

.cpn_member_clear_btn:hover {
  color: var(--c-text-1);
}

@keyframes spin {
  from {
    transform: translateY(-50%) rotate(0deg);
  }

  to {
    transform: translateY(-50%) rotate(360deg);
  }
}

/* ── 통계 패널 (컴팩트) ───────────────────── */

.cpn_stats_wrap {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
  flex-shrink: 0;
}

.cpn_stats_loading {
  padding: 0.75rem;
  text-align: center;
  color: var(--c-text-3);
  font-size: 0.75rem;
}

/* 한 줄 요약 스트립 */
.cpn_stats_summary {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-md);
  background: var(--c-bg-1);
  flex-wrap: wrap;
}

.dark .cpn_stats_summary {
  border-color: var(--c-dark-line);
  background: var(--c-dark-bg-1, transparent);
}

.cpn_summary_item {
  display: flex;
  align-items: baseline;
  gap: 0.375rem;
  padding-right: 0.75rem;
  border-right: 1px solid var(--c-line);
}

.cpn_summary_item:last-of-type {
  border-right: none;
}

.dark .cpn_summary_item {
  border-right-color: var(--c-dark-line);
}

.cpn_summary_label {
  font-size: 0.7rem;
  color: var(--c-text-3);
  font-weight: 500;
  white-space: nowrap;
}

.cpn_summary_value {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--c-text-1);
  white-space: nowrap;
}

.cpn_summary_item.is_green .cpn_summary_value {
  color: #059669;
}

.cpn_summary_item.is_yellow .cpn_summary_value {
  color: #d97706;
}

.cpn_summary_item.is_blue .cpn_summary_value {
  color: #2563eb;
}

.cpn_summary_item.is_red .cpn_summary_value {
  color: #dc2626;
}

.cpn_summary_item.is_purple .cpn_summary_value {
  color: #7c3aed;
}

.dark .cpn_summary_item.is_green .cpn_summary_value {
  color: #34d399;
}

.dark .cpn_summary_item.is_yellow .cpn_summary_value {
  color: #fbbf24;
}

.dark .cpn_summary_item.is_blue .cpn_summary_value {
  color: #60a5fa;
}

.dark .cpn_summary_item.is_red .cpn_summary_value {
  color: #f87171;
}

.dark .cpn_summary_item.is_purple .cpn_summary_value {
  color: #a78bfa;
}

/* 토글 버튼 */
.cpn_stats_toggle {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.25rem 0.625rem;
  border: 1px solid var(--c-input-border);
  border-radius: var(--radius-md);
  background: transparent;
  color: var(--c-text-2);
  font-size: 0.75rem;
  cursor: pointer;
  transition: all 0.15s;
}

.cpn_stats_toggle:hover {
  border-color: var(--c-primary-400, #34d399);
  color: var(--c-primary-600);
}

.cpn_stats_toggle.is_open {
  background: var(--c-primary-50, #ecfdf5);
  border-color: var(--c-primary-400, #34d399);
  color: var(--c-primary-700, #047857);
}

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

.dark .cpn_stats_toggle.is_open {
  background: rgba(16, 185, 129, 0.1);
  color: #6ee7b7;
}

/* 차트 그리드 (펼침 상태) */
.cpn_stats_charts {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.5rem;
}

.cpn_stats_chart_box {
  padding: 0.5rem 0.625rem;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-md);
  background: var(--c-bg-1);
}

.dark .cpn_stats_chart_box {
  border-color: var(--c-dark-line);
  background: var(--c-dark-bg-1, transparent);
}

.cpn_stats_chart_wide {
  grid-column: 1 / -1;
}

.cpn_stats_chart_title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--c-text-2);
  margin-bottom: 0.25rem;
}

/* ── 허용 호텔 멀티 선택 ─────────────────── */


.cpn_hotels_wrap {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.cpn_hotels_grid {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
  max-height: 8rem;
  overflow-y: auto;
  padding: 0.375rem;
  border: 1px solid var(--c-input-border);
  border-radius: var(--radius-md);
  background: var(--c-bg-1);
}

.dark .cpn_hotels_grid {
  border-color: var(--c-dark-line);
  background: transparent;
}

.cpn_hotel_chip {
  padding: 0.375rem 0.75rem;
  border: 1px solid var(--c-input-border);
  border-radius: 999px;
  background: transparent;
  color: var(--c-text-2);
  font-size: 0.8125rem;
  cursor: pointer;
  transition: all 0.15s;
}

.cpn_hotel_chip:hover {
  border-color: var(--c-primary-400, #34d399);
  color: var(--c-primary-600);
}

.cpn_hotel_chip.is_active {
  background: var(--c-primary-500, #10b981);
  border-color: var(--c-primary-500, #10b981);
  color: white;
}

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

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

/* 체크박스 그룹 */
.cpn_checkbox_row {
  display: flex;
  align-items: center;
  gap: 1.5rem;
}

.cpn_checkbox_label {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 0.875rem;
  cursor: pointer;
  user-select: none;
}

.cpn_checkbox_label input[type='checkbox'] {
  width: 1rem;
  height: 1rem;
  accent-color: var(--c-primary-500, #10b981);
  cursor: pointer;
}

/* ── 자동발급 설정 모달 ──────────────────────── */

.cpn_auto_modal {
  max-width: 448px;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.cpn_auto_modal .form_stack {
  flex: 1 1 auto;
  overflow-y: auto;
  min-height: 0;
  scrollbar-width: thin;
}

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

/* 자동 실행 + 알림톡 토글 한 행 */
.cpn_auto_toggle_row {
  display: flex;
  gap: 1.5rem;
  align-items: flex-start;
}

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

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

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

.cpn_auto_toggle_sub {
  font-size: 0.6875rem;
  font-weight: 400;
  color: var(--c-text-3);
}

.dark .cpn_auto_toggle_sub {
  color: var(--c-dark-text-sub);
}

.cpn_auto_loading {
  padding: 3rem 1rem;
  text-align: center;
  color: var(--c-text-2);
  font-size: 0.875rem;
}


/* 요약 박스 (or_assign_summary_box 패턴) */
.cpn_auto_summary_box {
  border: 1px solid var(--c-line);
  border-radius: var(--radius-lg);
  padding: 0.75rem 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

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

.cpn_auto_summary_text {
  font-size: 0.875rem;
  color: var(--c-text-1);
}

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

.cpn_auto_summary_empty {
  font-size: 0.875rem;
  color: var(--c-text-3);
  text-align: center;
  padding: 0.5rem 0;
}

/* 수동 실행 버튼 행 */
.cpn_auto_actions {
  display: flex;
  gap: 0.5rem;
}

.cpn_auto_actions>.btn {
  flex: 1;
}

.cpn_auto_result_scroll {
  max-height: 12rem;
  overflow-y: auto;
  background: #fff;
  border-radius: var(--radius-md);
}

.dark .cpn_auto_result_scroll {
  background: var(--c-dark-bg-2, #0f172a);
}

.cpn_auto_result_table {
  width: 100%;
  font-size: 0.75rem;
  border-collapse: collapse;
}

.cpn_auto_result_table th,
.cpn_auto_result_table td {
  padding: 0.375rem 0.75rem;
  text-align: left;
  border-bottom: 1px solid var(--c-border);
}

.cpn_auto_result_table th {
  background: var(--c-bg-2, #f1f5f9);
  color: var(--c-text-3);
  font-weight: 500;
  position: sticky;
  top: 0;
}

.dark .cpn_auto_result_table th {
  background: var(--c-dark-bg-2, #0f172a);
}

.cpn_auto_failed_details {
  margin-top: 0.5rem;
  font-size: 0.75rem;
}

.cpn_auto_failed_details summary {
  cursor: pointer;
  color: #dc2626;
}

.cpn_auto_failed_details ul {
  margin: 0.5rem 0 0 1.25rem;
  padding: 0;
  max-height: 10rem;
  overflow-y: auto;
}

/* ==================== 사용 이력 모달 ==================== */

.cpn_usage_link {
  background: none;
  border: none;
  padding: 0;
  color: var(--c-primary-600);
  font: inherit;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.cpn_usage_link:hover {
  color: var(--c-primary-700);
}

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

.cpn_usage_summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.625rem 0.875rem;
  margin: 0.5rem 0 0.75rem;
  background: var(--c-bg-2, #f8fafc);
  border-radius: var(--radius-sm);
  font-size: 0.8125rem;
}

.dark .cpn_usage_summary {
  background: var(--c-dark-bg-2, #0f172a);
}

.cpn_usage_summary_name {
  font-weight: 600;
  color: var(--c-text-1);
}

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

.cpn_usage_summary_stat {
  color: var(--c-text-2);
  font-variant-numeric: tabular-nums;
}

.dark .cpn_usage_summary_stat {
  color: var(--c-dark-text-sub);
}

.modal_header_row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.25rem;
}


/* ==================== 사용이력 서브드로어 ==================== */

/* ── 서브드로어 패널 ───────────────────────── */
/* gap = 0.75rem (예약·알림 드로어와 동일) */

.cpn_sub_drawer {
  position: fixed;
  top: 0.75rem;
  bottom: 0.75rem;
  right: calc(38rem + 1.5rem);
  width: 26rem;
  background-color: var(--c-white);
  border-radius: var(--radius-2xl);
  box-shadow: var(--shadow-xl);
  display: flex;
  flex-direction: column;
  z-index: 51;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
  transform: translateX(1rem);
}

.cpn_sub_drawer.is_open {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(0);
}

.dark .cpn_sub_drawer {
  background-color: var(--c-surface-1);
  border: 1px solid var(--c-border-strong);
}

/* 서브드로어 헤더: 메인 드로어 헤더(닫기 버튼 포함)와 border 높이 정렬 */
.cpn_sub_drawer .drawer_header {
  min-height: 4.25rem;
}

/* 헤더 좌측: 제목 + 쿠폰명 */
.cpn_sub_drawer_header_left {
  min-width: 0;
  flex: 1;
}

.cpn_sub_drawer_name {
  font-size: 0.75rem;
  color: var(--c-text-2);
  margin-top: 0.125rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 헤더 우측 사용 건수 */
.cpn_sub_drawer_stat {
  font-size: 0.75rem;
  color: var(--c-text-3);
  flex-shrink: 0;
}

/* 서브드로어 필터: 본문과 동일한 좌우 패딩, 하단은 본문 padding-top과 겹침 방지 */
.cpn_sub_drawer .mil_drawer_filter {
  padding: 0.75rem 1rem;
  margin-bottom: 0;
}

/* 서브드로어 본문 */
.cpn_sub_drawer_body {
  flex: 1 1 0%;
  overflow-y: auto;
  padding: 0 1rem;
  margin-bottom: 0.75rem;
  margin-top: 0.75rem;
}

/* ── 사용이력 카드 리스트 ──────────────────── */

.cpn_tx_list {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

.cpn_tx_card {
  padding: 0.625rem 0.75rem;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-lg);
  background: var(--c-white);
}

.dark .cpn_tx_card {
  background: var(--c-surface-1);
  border-color: var(--c-line);
}

/* 1행: 뱃지 + 예약번호 (좌) | 금액 (우) */
.cpn_tx_row_main {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.1875rem;
}

.cpn_tx_badge {
  display: inline-flex;
  align-items: center;
  border-radius: 9999px;
  padding: 0.125rem 0.375rem;
  font-size: 0.625rem;
  font-weight: 600;
  color: #fff;
  line-height: 1.4;
  white-space: nowrap;
}

.cpn_tx_badge.is_used {
  background-color: var(--c-success);
}

.cpn_tx_badge.is_refunded {
  background-color: var(--c-red-400);
}

.cpn_tx_amount {
  margin-left: auto;
  font-size: 0.875rem;
  font-weight: 500;
  white-space: nowrap;
  letter-spacing: -0.3px;
  color: var(--c-red-500, #ef4444);
}

.cpn_tx_amount.is_refunded {
  color: var(--c-text-3);
  text-decoration: line-through;
}

.dark .cpn_tx_amount.is_refunded {
  color: var(--c-text-2);
}

/* 2~3행: 상세 */
.cpn_tx_row_detail {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.75rem;
  margin-top: 0.1875rem;
  font-size: 0.8125rem;
  color: var(--c-text-2);
}

.cpn_tx_detail_item strong {
  font-weight: 500;
  color: var(--c-text-1);
}

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

/* 1행: 예약번호 링크 (뱃지 옆) */
.cpn_tx_booking_link {
  background: none;
  border: none;
  padding: 0;
  color: var(--c-primary-600);
  font: inherit;
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.cpn_tx_booking_link:hover {
  color: var(--c-primary-700);
}

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

/* ── 전체발급 모달: 타이틀 + 정보 아이콘 ── */
.cpn_bulk_title_row {
  position: relative;
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 0.75rem;
}

.cpn_bulk_info_btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  padding: 2px;
  cursor: pointer;
  color: var(--c-text-3);
  border-radius: var(--radius-sm);
  transition: color 0.15s;
}

.cpn_bulk_info_btn:hover {
  color: var(--c-primary-500);
}

.cpn_bulk_info_backdrop {
  position: fixed;
  inset: 0;
  z-index: 1;
}

.cpn_bulk_info_tooltip {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 2;
  margin-top: 4px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
}

/* ── 전체발급 모달: 사용횟수+만료일+투숙일 4등분 행 ── */
/* 전체발급 모달: 필터 셀렉+검색 높이 통일 */
.cpn_auto_modal .cselect_trigger {
  height: 2.375rem;
}

/* 전체발급 모달: thead 고정 + tbody만 스크롤 */
.cpn_auto_modal .rsv_info_table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background-color: var(--c-gray-50);
}

.dark .cpn_auto_modal .rsv_info_table thead th {
  background-color: var(--c-surface-2);
}

.cpn_bulk_date_row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  gap: 8px;
}

.cpn_bulk_date_row .daterange_wrap,
.cpn_bulk_date_row .daterange_input {
  width: 100%;
}