/* ─── 수분양자 객실관리 ─── */

.or_search_select {
  width: 16rem;
  flex-shrink: 0;
}

.or_stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.75rem;
  margin-bottom: 1.75rem;
}

.or_stat {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
  padding: 0.625rem 0.875rem;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-md);
  background-color: var(--c-white);
}

/* 헤더: 제목(좌) + 아이콘(우) */
.or_stat_header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

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

.or_stat_icon_wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.625rem;
  height: 1.625rem;
  border-radius: 50%;
  background-color: var(--c-primary-200);
  flex-shrink: 0;
}

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

.or_stat_icon_wrap.is_purple {
  background-color: #ede9fe;
}

.or_stat_icon_wrap.is_orange {
  background-color: #ffedd5;
}

.or_stat_icon {
  width: 0.875rem;
  height: 0.875rem;
  color: var(--c-primary-500);
  flex-shrink: 0;
}

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

.is_purple>.or_stat_icon {
  color: #7c3aed;
}

.is_orange>.or_stat_icon {
  color: #ea580c;
}

/* 데이터: 숫자 + dot + 설명 */
.or_stat_data {
  display: flex;
  align-items: baseline;
  gap: 0.375rem;
}

.or_stat_value {
  font-size: 1.4375rem;
  font-weight: 400;
  color: var(--c-text-1);
  line-height: 1;
}

.or_stat_unit {
  font-size: 0.8125rem;
  font-weight: 400;
}

.or_stat_dot {
  display: inline-block;
  width: 0.3125rem;
  height: 0.3125rem;
  border-radius: var(--radius-full);
  background-color: var(--c-primary-400);
  flex-shrink: 0;
  vertical-align: middle;
  position: relative;
  top: -0.125rem;
}

.or_stat_desc {
  font-size: 0.8125rem;
  color: var(--c-text-2);
  white-space: nowrap;
}

/* ─── 빈 상태 ─── */

.or_empty {
  padding: 3rem 0;
  text-align: center;
}

.or_empty_title {
  font-size: 1rem;
  font-weight: 500;
  color: var(--c-text-1);
  margin-bottom: 0.5rem;
}

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

/* ─── 확장 아이콘 (span) ─── */

.or_expand_icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.375rem;
  border-radius: var(--radius-md);
  color: var(--c-gray-400);
}

/* ─── 테이블 row 확장 활성 ─── */

.dtable_row.is_expanded .dtable_td {
  border-bottom: none;
}

.dtable_row.is_expanded td {
  background-color: var(--c-primary-50);
  padding-top: 1.25rem;
  position: relative;
}

.dtable_row.is_expanded td:first-child {
  border-radius: 0;
}

.dtable_row.is_expanded td:last-child {
  border-radius: 0;
}

tbody>.dtable_row.is_expanded:first-child td {
  border-top: 0.75rem solid #fff;
  box-shadow: none;
}

tbody>.dtable_row.is_expanded:first-child td:first-child {
  border-radius: 0;
}

tbody>.dtable_row.is_expanded:first-child td:last-child {
  border-radius: 0;
}

.dark tbody>.dtable_row.is_expanded:first-child td {
  border-top-color: var(--c-dark-card);
}

.dark .dtable_row.is_expanded td {
  background-color: color-mix(in srgb, var(--c-primary-900) 15%, transparent);
}

/* ─── 모달 ─── */

.or_manual_modal {
  max-width: 28rem;
}

.or_manual_modal .modal_desc {
  font-size: 0.875rem;
  color: var(--c-text-3);
  margin-top: -0.5rem;
  margin-bottom: 1rem;
}

/* ─── 객실 배정 모달 ─── */

.or_assign_modal {
  max-width: 28rem;
  min-height: 36rem;
  display: flex;
  flex-direction: column;
}

.or_assign_modal .form_stack {
  flex: 1;
}

.or_assign_modal .daterange_input {
  width: 100%;
}

.or_assign_modal .modal_sub {
  font-size: 0.875rem;
  color: var(--c-text-2);
  margin-top: 0.5rem;
  margin-bottom: 1.25rem;
  padding: 0.5rem 0.75rem;
  background-color: var(--c-gray-50);
  border-radius: var(--radius-lg);
}

[data-theme="dark"] .or_assign_modal .modal_sub {
  background-color: rgba(0, 0, 0, 0.2);
}

.or_modal_highlight {
  font-weight: 500;
  color: var(--c-primary-600);
}

/* 검색 input 래퍼 */
.or_search_wrap {
  position: relative;
}

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

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

.or_search_input {
  padding-left: 2.25rem;
}

/* 검색 결과 드롭다운 (cselect_dropdown 스타일) */
.or_search_results {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  z-index: 60;
  max-height: 12rem;
  overflow-y: auto;
}

.or_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;
}

.or_search_option.is_focused {
  background-color: var(--c-gray-100);
}

[data-theme="dark"] .or_search_option.is_focused {
  background-color: var(--c-gray-700);
}

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

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

.or_search_option_grade {
  font-size: 0.625rem;
  font-weight: 500;
  padding: 0.125rem 0.375rem;
  border-radius: var(--radius-full);
  background-color: #fef3c7;
  color: #b45309;
}

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

/* 선택된 회원 */
.or_selected_member {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 0.375rem;
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--c-primary-200);
  border-radius: var(--radius-md);
  background-color: var(--c-primary-50);
}

.or_selected_name {
  font-weight: 500;
  font-size: 0.875rem;
  color: var(--c-primary-700);
}

.or_selected_phone {
  margin-left: 0.5rem;
  font-size: 0.75rem;
  color: var(--c-primary-500);
}

.or_selected_clear {
  padding: 0.25rem;
  border-radius: var(--radius-sm);
  color: var(--c-primary-500);
}

.or_selected_clear:hover {
  background-color: var(--c-primary-100);
}

.or_selected_clear_icon {
  width: 0.875rem;
  height: 0.875rem;
}

/* 단일 달력 드롭다운 */
.or_single_calendar {
  right: auto;
  min-width: 15rem;
}

.or_single_calendar .daterange_day.is_range_start {
  background: transparent;
}

.or_single_calendar .daterange_day_btn {
  width: 1.75rem;
  height: 1.75rem;
  font-size: 0.8125rem;
}

.or_single_calendar .daterange_weekday {
  height: 1.75rem;
  font-size: 0.75rem;
}

.or_single_calendar .daterange_header {
  padding-bottom: 0.5rem;
}

.or_single_calendar .daterange_monthpicker {
  z-index: 80;
}

/* 배정 요약 박스 (항상 표시) */
.or_assign_summary_box {
  border: 1px solid var(--c-line);
  border-radius: var(--radius-lg);
  padding: 1rem;
  min-height: 140px;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
  overflow: visible;
}

.or_assign_summary_empty {
  font-size: 0.875rem;
  color: var(--c-text-3);
  margin: auto 0;
  text-align: center;
}

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

.or_summary_highlight {
  font-weight: 500;
  font-size: 1rem;
  color: var(--c-red-400);
  letter-spacing: -0.3px;
}

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

.or_assign_summary_calc {
  margin-left: 0.25rem;
  font-size: 0.75rem;
  color: var(--c-text-3);
}

/* 마일리지 동시발급 체크박스 */
.or_mileage_check {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: 0.375rem;
  padding-top: 0.625rem;
  border-top: 1px solid var(--c-line);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--c-gray-600);
  cursor: pointer;
}

.or_mileage_option_value {
  margin-left: auto;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--c-primary-600);
}

.or_mileage_option_body {
  margin-top: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

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

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

.or_mileage_expiry_label {
  font-size: 0.8125rem;
  color: var(--c-text-2);
  white-space: nowrap;
}

.or_expiry_date_wrap {
  flex: 1;
}

.or_expiry_date_wrap .daterange_input {
  width: 100%;
  height: 2.25rem;
  font-size: 0.8125rem;
}

.or_expiry_date_wrap .daterange_dropdown {
  top: auto;
  bottom: calc(100% + 6px);
}

/* 다크모드 */
[data-theme="dark"] .or_modal_highlight {
  color: var(--c-primary-400);
}

[data-theme="dark"] .or_search_option_grade {
  background-color: rgba(180, 83, 9, 0.2);
  color: #fbbf24;
}

[data-theme="dark"] .or_assign_summary_box {
  border-color: var(--c-dark-line);
}

[data-theme="dark"] .or_mileage_check {
  border-color: var(--c-dark-line);
}

.or_modal_row2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}

.or_modal_half {
  width: calc(50% - 0.5rem);
}

.modal_container .field_input.is_right,
.modal_container .form_input.is_right {
  text-align: right;
}

.or_modal_calc {
  margin-left: 0.5rem;
  font-size: 0.75rem;
  color: var(--c-text-3);
}

/* ─── 텍스트 색상 ─── */

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

.or_mileage_text {
  color: var(--c-red-600);
}

.or_mileage_text.is_empty {
  font-weight: 400;
  color: var(--c-text-3);
}

/* ─── 객실배정관리 테이블 스타일 통일 ─── */

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

.or_assign_table .dtable_action_btn .dtable_action_icon {
  width: 1rem;
  height: 1rem;
  stroke: currentColor;
  stroke-width: 0.7;
}

.or_assign_table .dtable_td .or_mileage_text {
  color: var(--c-red-600);
}

.or_assign_table .dtable_td .or_mileage_text.is_empty {
  color: var(--c-text-3);
}

/* ─── dtable 오버라이드 ─── */

/* hotels.css 기본 padding-left를 OwnerRoomsPage 컨텍스트에서 리셋 */
.or_stats+.hotel_detail_header {
  padding-left: 0;
}

/* hotels.css 기본 padding/margin을 page_body 컨텍스트에서 리셋 */
.hotel_detail_body.page_body {
  margin-top: 0;
  padding: 0;
}

.hotel_detail_body .dtable_cell_main {
  font-weight: 400;
}

.dtable_cell_main.is_inline {
  display: inline;
}

.or_room_count_badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 0.375rem;
  min-width: 1.25rem;
  height: 1.25rem;
  padding: 0 0.375rem;
  border-radius: var(--radius-full);
  background-color: var(--c-primary-500);
  font-size: 0.6875rem;
  font-weight: 600;
  color: var(--c-white);
  vertical-align: middle;
}

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

[data-theme="dark"] .or_row_dirty {
  background-color: color-mix(in srgb, var(--c-primary-900) 15%, transparent);
}

/* ─── 호실 목록 확장 영역 ─── */

.or_expand_cell {
  padding: 0 0 0.75rem;
}

.or_expand_bg {
  background-color: var(--c-primary-50);
  border-radius: 0;
  overflow: hidden;
}

.dark .or_expand_bg {
  background-color: color-mix(in srgb, var(--c-primary-900) 15%, transparent);
}

.or_expand_inner {
  margin: 0 0.75rem 0.75rem;
  padding: 1.25rem;
  background-color: var(--c-white);
  border-radius: 0;
}

.dark .or_expand_inner {
  background-color: var(--c-gray-900);
}

.or_expand_footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  margin-top: 0.75rem;
}

.or_expand_empty {
  padding: 0.75rem 0;
  font-size: 0.875rem;
  color: var(--c-text-3);
}

.or_expand_grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(max(10rem, calc((100% - 2.5rem) / 6)), 1fr));
  gap: 0.5rem;
}

.or_room_card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.375rem;
  border-radius: var(--radius-md);
  border: 1px solid var(--c-gray-200);
  padding: 0.375rem 0.625rem;
  font-size: 0.875rem;
  color: var(--c-text-2);
  background-color: var(--c-white);
  min-width: 0;
  overflow: hidden;
}

.or_room_card.is_inactive {
  border-color: var(--c-gray-100);
  background-color: var(--c-gray-50);
  opacity: 0.5;
}

.dark .or_room_card {
  border-color: var(--c-gray-600);
  background-color: var(--c-gray-800);
}

.dark .or_room_card.is_inactive {
  border-color: var(--c-gray-700);
  background-color: var(--c-gray-900);
}

.or_room_card_left {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  min-width: 0;
  overflow: hidden;
}

.or_room_card_dot {
  display: inline-block;
  width: 0.375rem;
  height: 0.375rem;
  border-radius: var(--radius-full);
  flex-shrink: 0;
}

.or_room_card_dot.is_synced {
  background-color: #3b82f6;
}

.or_room_card_dot.is_manual {
  background-color: var(--c-red-400);
}

.or_room_card_number {
  font-size: 0.875rem;
  color: var(--c-text-2);
  white-space: nowrap;
}

.or_room_card_right {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 0.875rem;
  color: var(--c-text-2);
  white-space: nowrap;
  flex-shrink: 0;
}

.or_room_card_delete {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  padding: 0.125rem;
  color: var(--c-text-3);
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-default),
    color var(--duration-fast) var(--ease-default);
}

.or_room_card_delete:hover {
  background-color: var(--c-bg-hover);
  color: var(--c-text-2);
}

.dark .or_room_card_delete:hover {
  background-color: var(--c-bg-hover);
  color: var(--c-text-2);
}

/* ─── 액션 필터 바 (rsv_filter 패턴) ─── */

.or_filter {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 1.25rem 0 0.75rem 0;
  border: none;
  margin-bottom: 0;
}

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

/* ─── 검색 입력 (rsv_filter_search 동일 디자인) ─── */

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

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

.or_filter_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;
  transition: border-color var(--duration-fast) var(--ease-default);
}

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

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

/* ─── 필터 셀렉트 (객실배정관리 탭) ─── */

.or_filter .cselect {
  width: auto;
  min-width: 8rem;
}

.or_filter .cselect_trigger {
  padding: 0 0.875rem;
  font-size: 0.875rem;
}

.or_filter .cselect_trigger.is_placeholder {
  color: var(--c-text-1);
}

/* ─── 날짜 범위 (daterange 컴포넌트, rsv_filter 동일) ─── */

.or_filter .daterange_wrap {
  flex-shrink: 0;
}

.or_filter .daterange_input {
  min-width: 9rem;
}

.or_filter .daterange_input:hover {
  border-color: var(--c-input-border);
}

.or_filter .daterange_input.is_focus {
  border-color: var(--c-primary-500);
  box-shadow: none;
}

.or_filter .daterange_dropdown {
  right: auto;
  width: max-content;
}

/* ─── 테이블 인라인 input ─── */

.or_table_input {
  width: 100%;
  padding: 0.25rem 0.5rem;
  border: 1px solid var(--c-line);
  border-radius: var(--radius-sm);
  font-size: 0.875rem;
  text-align: right;
  color: var(--c-text-2);
  background-color: var(--c-white);
}

.or_table_input:focus {
  border-color: var(--c-primary-400);
  outline: none;
  box-shadow: none;
}

/* ─── 다크모드 ─── */

[data-theme="dark"] .or_stat {
  border-color: var(--c-dark-line);
  background-color: var(--c-dark-bg-2);
}

[data-theme="dark"] .or_table_input {
  border-color: var(--c-dark-line);
  background-color: var(--c-dark-bg-2);
  color: var(--c-dark-text-1);
}