/* iWave 공통 반응형 업무화면 정렬 */
.iw-page-wrap {
  margin-bottom: 4.5rem;
}

.iw-card {
  overflow: hidden;
}

/* 자산 기본정보와 최근 사용정보 카드의 높이를 맞추면서
   비고 입력란이 불필요하게 세로 공간을 차지하지 않도록 한다. */
.iw-asset-remark {
  min-height: 3.5rem;
  resize: vertical;
}

/* 카드 내부 표를 목록 화면처럼 여백이 있는 독립 프레임으로 표시한다. */
.iw-table-frame {
  overflow: hidden;
  border: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  border-radius: var(--phoenix-border-radius-lg, .5rem);
}

.iw-table-frame .table > :not(caption) > * > :first-child {
  padding-left: 1rem;
}

.iw-table-frame .table > :not(caption) > * > :last-child {
  padding-right: 1rem;
}

.iw-form-row {
  display: grid;
  gap: 1rem 1.5rem;
  align-items: center;
  margin: 0;
  padding: 1rem 0;
}

.iw-form-row + .iw-form-row {
  border-top: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
}

.iw-cols-1 { grid-template-columns: minmax(0, 1fr); }
.iw-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.iw-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.iw-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.iw-field {
  display: grid;
  grid-template-columns: 6rem minmax(0, 1fr);
  gap: .75rem;
  align-items: center;
  min-width: 0;
}

.iw-field-start {
  align-items: start;
}

.iw-field-start > .iw-label {
  padding-top: .625rem;
}

.iw-field-wide { grid-column: 1 / -1; }
.iw-span-2 { grid-column: span 2; }
.iw-span-3 { grid-column: span 3; }
.iw-span-4 { grid-column: span 4; }

.iw-label {
  display: block;
  width: 6rem;
  max-width: 6rem;
  margin: 0;
  font-size: .875rem;
  line-height: 1.35;
  font-weight: 700;
  color: var(--phoenix-emphasis-color);
  white-space: nowrap;
  word-break: keep-all;
}

.iw-control,
.iw-control > .form-control,
.iw-control > .form-select,
.iw-control > .input-group,
.iw-control > .flatpickr-input-container,
.iw-control > textarea {
  width: 100%;
  min-width: 0;
}

/* 조회 전용 정보도 등록·수정 폼의 입력선과 동일한 높이로 표시한다. */
.iw-readonly-control {
  display: flex;
  align-items: center;
  width: 100%;
  min-width: 0;
  min-height: calc(1.5em + .75rem + 2px);
  padding: .375rem .75rem;
  color: var(--phoenix-body-color);
  background-color: var(--phoenix-secondary-bg);
  border: 1px solid var(--phoenix-border-color);
  border-radius: var(--phoenix-border-radius, .375rem);
  line-height: 1.5;
  overflow-wrap: anywhere;
}

.iw-inline {
  display: flex;
  align-items: center;
  gap: .75rem;
  min-width: 0;
}

.iw-inline > * { min-width: 0; }
.iw-inline-fixed { flex: 0 0 15rem; }
.iw-inline-grow { flex: 1 1 auto; }

.iw-filter-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(14rem, 1fr)) auto;
  gap: 1rem 1.25rem;
  align-items: center;
}

.iw-filter-field {
  display: grid;
  grid-template-columns: 6.5rem minmax(0, 1fr);
  gap: .75rem;
  align-items: center;
  min-width: 0;
}

.iw-filter-label {
  width: 6.5rem;
  max-width: 6.5rem;
  margin: 0;
  font-size: .8125rem;
  line-height: 1.35;
  font-weight: 700;
  color: var(--phoenix-emphasis-color);
  white-space: nowrap;
  word-break: keep-all;
}

.iw-filter-actions {
  display: flex;
  justify-content: flex-end;
  gap: .5rem;
  white-space: nowrap;
}

.iw-list-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .75rem 1rem;
}

.iw-list-search {
  width: min(100%, 20rem);
  min-width: 0;
  margin-left: auto;
}

.iw-list-search > .form-control,
.iw-list-search .input-group {
  width: 100%;
  min-width: 0;
}

/* Bootstrap input-group 내부 input에 width:100%가 적용되면
   아이콘과 입력창이 서로 다른 줄로 밀리므로 flex 규칙을 명시한다. */
.iw-list-search .input-group {
  display: flex;
  flex-wrap: nowrap;
  align-items: stretch;
}

.iw-list-search .input-group > .input-group-text {
  flex: 0 0 auto;
}

.iw-list-search .input-group > .form-control {
  width: 1%;
  min-width: 0;
  flex: 1 1 auto;
}

.iw-info-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  border-left: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
}

.iw-info-item {
  display: grid;
  grid-template-columns: 8.75rem minmax(0, 1fr);
  min-width: 0;
  border-right: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  border-bottom: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
}

.iw-info-label,
.iw-info-value {
  min-width: 0;
  padding: .875rem 1rem;
}

.iw-info-label {
  font-size: .8125rem;
  font-weight: 700;
  color: var(--phoenix-emphasis-color);
  background: var(--phoenix-body-highlight-bg, var(--phoenix-secondary-bg));
  white-space: nowrap;
  word-break: keep-all;
}

.iw-info-value {
  color: var(--phoenix-body-color);
  overflow-wrap: anywhere;
}

.iw-calendar-toolbar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: .75rem;
  align-items: center;
}

.iw-calendar-toolbar > :last-child {
  justify-self: end;
}

@media (min-width: 1600px) {
  .iw-span-xl-2 { grid-column: span 2; }
  .iw-span-xl-3 { grid-column: span 3; }
  .iw-span-xl-4 { grid-column: span 4; }
}

@media (max-width: 1599.98px) {
  .iw-cols-3,
  .iw-cols-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .iw-span-3,
  .iw-span-4 {
    grid-column: span 2;
  }
  .iw-filter-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .iw-filter-actions {
    grid-column: 1 / -1;
  }
}

@media (max-width: 991.98px) {
  .iw-cols-2,
  .iw-cols-3,
  .iw-cols-4 {
    grid-template-columns: minmax(0, 1fr);
  }
  .iw-span-2,
  .iw-span-3,
  .iw-span-4 {
    grid-column: span 1;
  }
  .iw-filter-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .iw-filter-actions {
    grid-column: auto;
  }
  .iw-info-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 767.98px) {
  .iw-calendar-toolbar {
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .iw-calendar-toolbar > :nth-child(2) {
    grid-column: 1 / -1;
    grid-row: 2;
    justify-self: center;
  }
}

@media (max-width: 575.98px) {
  .iw-form-row {
    gap: .875rem;
  }
  .iw-field {
    grid-template-columns: 6rem minmax(0, 1fr);
    gap: .625rem;
  }
  .iw-info-item {
    grid-template-columns: 7rem minmax(0, 1fr);
    gap: .625rem;
  }
  .iw-label {
    width: 6rem;
    max-width: 6rem;
    font-size: .8125rem;
    white-space: normal;
  }
  .iw-filter-field {
    grid-template-columns: 5.5rem minmax(0, 1fr);
  }
  .iw-filter-label {
    width: 5.5rem;
    max-width: 5.5rem;
    white-space: normal;
  }
  .iw-inline {
    flex-wrap: wrap;
  }
  .iw-inline-fixed,
  .iw-inline-grow {
    flex: 1 1 100%;
  }
  .iw-filter-actions,
  .iw-list-search {
    width: 100%;
  }
  .iw-filter-actions > .btn,
  .iw-filter-actions > a.btn {
    flex: 1 1 0;
  }
  .iw-info-label,
  .iw-info-value {
    padding: .75rem;
  }
}

/* 목록 화면 검색조건: 법인카드 목록 기준 공통 레이아웃 */
.iw-list-filter-card {
  overflow: hidden;
  margin-bottom: 1.5rem;
}

.iw-list-filter-card > .card-body {
  padding: 1.5rem;
}

.iw-list-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: flex-end;
}

.iw-list-filter-field {
  flex: 1 1 11rem;
  min-width: 0;
}

.iw-list-filter-field--xs {
  flex: .75 1 8rem;
}

.iw-list-filter-field--sm {
  flex: 1 1 9.5rem;
}

.iw-list-filter-field--md {
  flex: 1.5 1 13rem;
}

.iw-list-filter-field--lg {
  flex: 2.25 1 20rem;
}

.iw-list-filter-field--xl {
  flex: 3 1 28rem;
}

.iw-list-filter-label {
  display: block;
  min-height: 1.25rem;
  margin: 0 0 .5rem;
  font-size: .8125rem;
  line-height: 1.25rem;
  font-weight: 700;
  color: var(--phoenix-emphasis-color);
  white-space: nowrap;
  word-break: keep-all;
}

.iw-list-filter-search {
  position: relative;
  min-width: 0;
}

.iw-list-filter-search > .form-control {
  min-width: 0;
  padding-left: 2.5rem;
}

.iw-list-filter-search-icon {
  position: absolute;
  top: 50%;
  left: 1rem;
  z-index: 4;
  color: var(--phoenix-tertiary-color);
  pointer-events: none;
  transform: translateY(-50%);
}

.iw-list-filter-actions {
  display: flex;
  flex: 0 0 auto;
  gap: .75rem;
  align-items: flex-end;
}

.iw-list-filter-actions .btn {
  min-width: 6.5rem;
  white-space: nowrap;
}

.iw-list-heading .input-group-text,
.iw-list-search .input-group-text {
  min-width: 2.75rem;
  justify-content: center;
}

/* 목록 테이블의 열 너비와 진행률 표시 */
.iw-table-board th:nth-child(1) { width: 8%; }
.iw-table-board th:nth-child(2) { width: 48%; }
.iw-table-board th:nth-child(3) { width: 14%; }
.iw-table-board th:nth-child(4) { width: 16%; }
.iw-table-board th:nth-child(5) { width: 8%; }

.iw-table-approval th:nth-child(1) { width: 30%; }
.iw-table-approval th:nth-child(2) { width: 15%; }
.iw-table-approval th:nth-child(3) { width: 12%; }
.iw-table-approval th:nth-child(4) { width: 12%; }
.iw-table-approval th:nth-child(5) { width: 10%; }
.iw-table-approval th:nth-child(6) { width: 13%; }
.iw-table-approval th:nth-child(7) { width: 8%; }

.iw-table-card th:nth-child(1) { width: 20%; }
.iw-table-card th:nth-child(2) { width: 16%; }
.iw-table-card th:nth-child(3) { width: 20%; }
.iw-table-card th:nth-child(4) { width: 16%; }
.iw-table-card th:nth-child(5) { width: 10%; }
.iw-table-card th:nth-child(6) { width: 18%; }

.iw-table-disburse th:nth-child(1) { min-width: 17.5rem; }
.iw-table-disburse th:nth-child(2) { min-width: 9.375rem; }
.iw-table-disburse th:nth-child(3) { min-width: 9.375rem; }
.iw-table-disburse th:nth-child(4) { min-width: 6.875rem; }
.iw-table-disburse th:nth-child(5) { min-width: 7.5rem; }
.iw-table-disburse th:nth-child(6) { min-width: 6.25rem; }
.iw-table-disburse th:nth-child(7) { min-width: 6.875rem; }
.iw-table-disburse th:nth-child(8) { min-width: 6.25rem; }

.iw-table-events th:nth-child(1) { min-width: 13.125rem; }
.iw-table-events th:nth-child(2) { min-width: 15rem; }
.iw-table-events th:nth-child(3) { min-width: 9.375rem; }
.iw-table-events th:nth-child(4) { min-width: 6.875rem; }
.iw-table-events th:nth-child(5) { min-width: 7.5rem; }
.iw-table-events th:nth-child(6) { min-width: 6.875rem; }
.iw-table-events th:nth-child(7) { min-width: 6.25rem; }

.iw-table-business th:nth-child(1) { width: 32%; }
.iw-table-business th:nth-child(2) { width: 18%; }
.iw-table-business th:nth-child(3) { width: 13%; }
.iw-table-business th:nth-child(4) { width: 13%; }
.iw-table-business th:nth-child(5) { width: 14%; }
.iw-table-business th:nth-child(6) { width: 10%; }

.iw-table-employee th:nth-child(1) { width: 16%; min-width: 9.375rem; }
.iw-table-employee th:nth-child(2) { width: 12%; min-width: 7.5rem; }
.iw-table-employee th:nth-child(3) { width: 14%; min-width: 8.75rem; }
.iw-table-employee th:nth-child(4) { width: 10%; min-width: 6.25rem; }
.iw-table-employee th:nth-child(5) { width: 20%; min-width: 12.5rem; }
.iw-table-employee th:nth-child(6) { width: 12%; min-width: 7.5rem; }
.iw-table-employee th:nth-child(7) { width: 10%; min-width: 6.25rem; }
.iw-table-employee th:nth-child(8) { width: 8%; min-width: 5.625rem; }

.iw-business-description {
  max-width: 26.25rem;
}

.iw-progress-thin {
  height: .1875rem;
  max-width: 13.75rem;
}

.iw-progress-50 { width: 50%; }
.iw-progress-100 { width: 100%; }

@media (max-width: 991.98px) {
  .iw-list-filter-field,
  .iw-list-filter-field--xs,
  .iw-list-filter-field--sm,
  .iw-list-filter-field--md {
    flex: 1 1 calc(50% - .5rem);
  }

  .iw-list-filter-field--lg,
  .iw-list-filter-field--xl {
    flex: 1 1 100%;
  }

  .iw-list-filter-actions {
    flex: 1 1 100%;
    justify-content: flex-end;
  }
}

@media (max-width: 575.98px) {
  .iw-list-filter-card > .card-body {
    padding: 1rem;
  }

  .iw-list-filter-field,
  .iw-list-filter-field--xs,
  .iw-list-filter-field--sm,
  .iw-list-filter-field--md,
  .iw-list-filter-field--lg,
  .iw-list-filter-field--xl {
    flex: 1 1 100%;
  }

  .iw-list-filter-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .iw-list-filter-actions .btn {
    width: 100%;
    min-width: 0;
  }
}


/* 자산 목록 */
.iw-table-asset th:nth-child(1) { width: 15%; }
.iw-table-asset th:nth-child(2) { width: 22%; }
.iw-table-asset th:nth-child(3) { width: 14%; }
.iw-table-asset th:nth-child(4) { width: 12%; }
.iw-table-asset th:nth-child(5) { width: 17%; }
.iw-table-asset th:nth-child(6) { width: 12%; }
.iw-table-asset th:nth-child(7) { width: 8%; }

.iw-asset-description {
  max-width: 21.25rem;
}

/* 자산 사용이력은 헤더와 목록 값을 모두 가운데 정렬한다. */
.iw-asset-history-table th,
.iw-asset-history-table td {
  text-align: center !important;
  vertical-align: middle !important;
}

.iw-asset-history-table tbody td {
  background-color: var(--phoenix-table-bg, transparent);
}

/* --------------------------------------------------------------------------
   캘린더 공통 UI
   -------------------------------------------------------------------------- */
.iw-calendar-title {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .25rem;
  min-width: 12rem;
  min-height: 2.25rem;
  font-size: 1.5rem;
  line-height: 1.2;
  white-space: nowrap;
}

.iw-calendar-title-range {
  font-size: 1.125rem;
}

.iw-calendar-title-button {
  display: inline-flex;
  align-items: center;
  padding: .2rem .35rem;
  color: var(--phoenix-emphasis-color);
  background: transparent;
  border: 0;
  border-radius: .375rem;
  font: inherit;
  font-weight: 600;
  line-height: 1.2;
  white-space: nowrap;
}

.iw-calendar-title-button:hover,
.iw-calendar-title-button:focus-visible {
  color: var(--phoenix-primary);
  background: var(--phoenix-primary-bg-subtle);
  outline: 0;
}

.iw-calendar-title-button::after {
  margin-left: .25rem;
  font-size: .625rem;
  content: "▾";
}

.iw-calendar-picker-panel {
  position: absolute;
  top: calc(100% + .5rem);
  left: 50%;
  z-index: 1080;
  width: 15rem;
  padding: .875rem;
  color: var(--phoenix-body-color);
  background: var(--phoenix-emphasis-bg, var(--phoenix-body-bg));
  border: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  border-radius: .625rem;
  box-shadow: var(--phoenix-box-shadow-lg);
  transform: translateX(-50%);
}

.iw-calendar-month-picker {
  width: 18rem;
}

.iw-calendar-month-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .375rem;
}

.iw-calendar-month-grid .btn {
  min-width: 0;
  padding-right: .25rem;
  padding-left: .25rem;
}

.iw-calendar-legend-dot {
  display: inline-block;
  width: .625rem;
  height: .625rem;
  flex: 0 0 .625rem;
  border-radius: 50%;
  background: #64748b;
  box-shadow: 0 0 0 1px rgba(15, 23, 42, .14);
}

[data-bs-theme=dark] .iw-calendar-legend-dot {
  box-shadow: 0 0 0 1px rgba(248, 250, 252, .22);
}

.fc .fc-daygrid-day-top {
  min-width: 0;
}

.fc .fc-daygrid-day-number {
  display: inline-flex;
  min-width: 0;
  padding: .35rem;
  white-space: nowrap;
}

.fc .iw-calendar-day-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0rem .3rem;
  border-radius: 999px;
  line-height: 1;
  white-space: nowrap;
  word-break: keep-all;
}

.fc.fc-theme-standard .fc-daygrid-day.fc-day-today {
  background-color: var(--phoenix-calendar-bg) !important;
}

.fc .fc-day-today .iw-calendar-day-value {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff !important;
  background: var(--phoenix-primary);
  border-radius: 999px;
  box-shadow: 0 0 0 .125rem rgba(56, 116, 255, .2);
}

.fc .iw-calendar-day-top {
  position: relative;
  display: flex !important;
  flex-direction: row !important;
  align-items: center;
  justify-content: flex-start !important;
  gap: .35rem;
  min-width: 0;
  width: 100%;
}

.fc.iw-vacation-calendar .iw-calendar-day-top {
  padding-right: 2.15rem;
}

.fc .iw-calendar-day-heading {
  display: flex;
  align-items: center;
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
}

.fc .iw-calendar-day-heading .fc-daygrid-day-number {
  flex: 0 0 auto;
}

.fc .iw-holiday-day .fc-daygrid-day-number {
  color: #dc3545 !important;
  font-weight: 700;
}

.fc .fc-day-today.iw-holiday-day .iw-calendar-day-value {
  color: #fff !important;
}

.fc .iw-holiday-label {
  display: block;
  flex: 1 1 auto;
  min-width: 0;
  margin-left: -.15rem;
  overflow: hidden;
  color: #dc3545;
  font-size: .72rem;
  font-weight: 600;
  line-height: 1.2;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fc .iw-vacation-day-add {
  position: absolute;
  top: .12rem;
  right: .2rem;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.55rem;
  height: 1.55rem;
  margin: 0;
  padding: 0;
  color: var(--phoenix-primary);
  background: transparent !important;
  border: 0;
  border-radius: 50%;
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1;
}

.fc .iw-vacation-day-add-symbol {
  display: block;
  margin-top: -.08rem;
  line-height: 1;
}

.fc .iw-vacation-day-add:hover,
.fc .iw-vacation-day-add:focus-visible {
  color: var(--phoenix-primary-dark, var(--phoenix-primary));
  background: transparent !important;
  outline: 0;
  box-shadow: 0 0 0 .125rem rgba(56, 116, 255, .18);
}

/* 모바일 휴가 캘린더는 날짜만 표시하고, 일정 유무는 상태색 밑줄로 표시한다. */
@media (max-width: 767.98px) {
  .fc.iw-vacation-calendar .iw-vacation-day-add {
    display: none !important;
  }

  .fc.iw-vacation-calendar .fc-daygrid-day-events,
  .fc.iw-vacation-calendar .fc-daygrid-day-bottom,
  .fc.iw-vacation-calendar .iw-holiday-label {
    display: none !important;
  }

  .fc.iw-vacation-calendar .iw-calendar-day-top {
    padding-right: 0;
  }

  .fc.iw-vacation-calendar .iw-calendar-day-value {
    position: relative;
  }

  .fc.iw-vacation-calendar .fc-daygrid-day-number {
    cursor: pointer;
  }

  .fc.iw-vacation-calendar .iw-vacation-has-data .iw-calendar-day-value::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: -.32rem;
    width: 1.15rem;
    height: 2px;
    border-radius: 999px;
    transform: translateX(-50%);
  }

  .fc.iw-vacation-calendar .iw-vacation-status-progress .iw-calendar-day-value::after {
    background: var(--phoenix-warning, #E5780B);
  }

  .fc.iw-vacation-calendar .iw-vacation-status-approved .iw-calendar-day-value::after {
    background: var(--phoenix-success, #25B003);
  }

  .fc.iw-vacation-calendar .iw-vacation-status-mixed .iw-calendar-day-value::after {
    background: linear-gradient(90deg,
      var(--phoenix-warning, #E5780B) 0 50%,
      var(--phoenix-success, #25B003) 50% 100%);
  }
}

@media (min-width: 768px) {
  .fc .fc-daygrid-day-frame {
    height: 175px;
    min-height: 175px;
    overflow: hidden;
  }

  .fc .fc-daygrid-day-events {
    max-height: 125px;
    overflow: hidden;
  }
}

.fc .fc-more-popover {
  z-index: 1080;
  max-width: min(30rem, calc(100vw - 2rem));
}

.fc .fc-more-popover .fc-popover-body {
  max-height: min(28rem, calc(100vh - 12rem));
  overflow-y: auto;
}

.fc .iw-vacation-event,
.fc .iw-vacation-event .fc-event-main,
.fc .iw-vacation-event .fc-event-title,
.fc .iw-vacation-event .fc-event-time {
  font-weight: 600;
}

.fc .iw-vacation-event {
  border-width: 1px;
  border-style: solid;
  border-radius: .5rem;
  overflow: hidden;
}

/* FullCalendar의 dot-event 중앙 정렬/기본 여백을 휴가 이벤트에서는 사용하지 않는다. */
.fc .fc-day:not(.fc-popover) .iw-vacation-event.fc-daygrid-dot-event,
.fc .iw-vacation-event {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  padding: 0 !important;
}

.fc .iw-vacation-event .fc-event-main {
  width: 100%;
  min-width: 0;
  padding: 0 !important;
}

.fc .iw-vacation-event .fc-event-title,
.fc .iw-vacation-event .fc-event-time {
  text-shadow: none;
}


/* 휴가 이벤트는 FullCalendar 기본 점/시간 대신 전용 라벨만 사용한다. */
.fc .iw-vacation-event .fc-daygrid-event-dot,
.fc .iw-vacation-event > .fc-daygrid-event-dot,
.fc .iw-vacation-event .fc-event-time,
.fc .iw-vacation-event .fc-event-title-container {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
}

.fc .iw-vacation-event::before,
.fc .iw-vacation-event::after,
.fc .iw-vacation-event .fc-event-main::before,
.fc .iw-vacation-event .fc-event-main::after {
  content: none !important;
  display: none !important;
}

.fc .iw-vacation-event-label {
  display: block;
  width: 100%;
  min-width: 0;
  margin: 0 !important;
  padding: .15rem .2rem !important;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left;
  font-weight: 600;
  line-height: 1.35;
}

@media (max-width: 767.98px) {
  .fc .iw-vacation-event {
    min-width: 1.7rem;
  }

  .fc .iw-vacation-event-label-mobile {
    padding: .1rem .12rem !important;
    text-align: left;
    font-size: .72rem;
    line-height: 1.2;
  }
}

/* 회의실 예약/개인일정은 항상 왼쪽 정렬하고 한 줄을 넘는 제목은 말줄임표로 표시한다. */
.fc .iw-booking-event,
.fc .iw-planner-event {
  min-width: 0;
  text-align: left !important;
}

.fc .iw-booking-event .fc-event-main,
.fc .iw-planner-event .fc-event-main,
.fc .iw-booking-event .fc-event-main-frame,
.fc .iw-planner-event .fc-event-main-frame {
  width: 100%;
  min-width: 0;
  overflow: hidden;
  text-align: left !important;
}

.fc .iw-booking-event .fc-event-main-frame,
.fc .iw-planner-event .fc-event-main-frame {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
}

.fc .iw-booking-event .fc-event-time,
.fc .iw-planner-event .fc-event-time {
  flex: 0 0 auto;
  max-width: 4.5rem;
  margin-right: .25rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left !important;
}

.fc .iw-booking-event .fc-event-title-container,
.fc .iw-planner-event .fc-event-title-container {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-align: left !important;
}

.fc .iw-booking-event .fc-event-title,
.fc .iw-planner-event .fc-event-title,
.fc .iw-booking-event .iw-calendar-mobile-event-label,
.fc .iw-planner-event .iw-calendar-mobile-event-label {
  display: block;
  width: 100%;
  min-width: 0;
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left !important;
}

/* dayGrid의 점형 이벤트도 중앙 정렬되지 않도록 한다. */
.fc .iw-booking-event.fc-daygrid-dot-event,
.fc .iw-planner-event.fc-daygrid-dot-event {
  justify-content: flex-start !important;
  min-width: 0;
  overflow: hidden;
}

.fc .iw-booking-event.fc-daygrid-dot-event .fc-daygrid-event-dot,
.fc .iw-planner-event.fc-daygrid-dot-event .fc-daygrid-event-dot {
  flex: 0 0 auto;
}

#bookingList [data-booking-list-pagination] .page {
  min-width: 2rem;
}

#bookingList [data-booking-list-pagination] .page.active {
  color: #fff;
  background: var(--phoenix-primary);
  border-radius: .375rem;
}

@media (max-width: 767.98px) {
  .iw-calendar-title {
    min-width: 0;
    font-size: 1.25rem;
  }

  .iw-calendar-title-range {
    font-size: .9375rem;
  }

  .iw-calendar-picker-panel {
    width: min(18rem, calc(100vw - 2rem));
  }
}

@media (max-width: 575.98px) {
  .iw-calendar-month-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .fc .iw-calendar-day-number {
    min-width: 2rem;
    min-height: 1.75rem;
    padding-right: .35rem;
    padding-left: .35rem;
    font-size: .75rem;
  }
}

/* Board */
.iw-board-html, .iw-board-plain { min-height: 15rem; overflow-wrap: anywhere; }
.iw-board-plain { white-space: pre-wrap; }
.iw-board-html img { max-width: 100%; height: auto; }
.iw-board-html table { width: 100%; max-width: 100%; }


/* Board content editor */
.iw-board-content-input {
  min-height: 25rem;
  resize: vertical;
}

.iw-board-content-control .tox-tinymce {
  min-height: 25rem;
}

@media (max-width: 767.98px) {
  .iw-board-content-input,
  .iw-board-content-control .tox-tinymce {
    min-height: 20rem;
  }
}

/* Admin board master list */
.iw-board-master-item {
  position: relative;
  border-inline-start: 0.25rem solid transparent !important;
  color: var(--phoenix-body-color);
  transition: background-color 0.15s ease, border-color 0.15s ease;
}

.iw-board-master-item:hover,
.iw-board-master-item:focus-visible {
  color: var(--phoenix-body-color);
  background-color: var(--phoenix-body-highlight-bg);
}

.iw-board-master-item:focus-visible {
  z-index: 2;
  outline: 0;
  box-shadow: inset 0 0 0 0.125rem var(--phoenix-primary-border-subtle);
}

.iw-board-master-item.is-active {
  z-index: 1;
  color: var(--phoenix-body-color);
  background-color: var(--phoenix-primary-bg-subtle);
  border-inline-start-color: var(--phoenix-primary) !important;
}

.iw-board-master-item.is-active .bbsNm {
  color: var(--phoenix-body-emphasis-color);
}

.iw-board-master-item .bbsId,
.iw-board-master-item.is-active .bbsId {
  color: var(--phoenix-primary);
  font-weight: 600;
}

.iw-board-master-item.is-active .bbsExpln {
  color: var(--phoenix-tertiary-color) !important;
}


/* 자산관리·직원관리 화면은 좌측 메뉴를 제외한 실제 콘텐츠 폭 안에서만 배치한다.
   Bootstrap row에는 width/max-width를 강제로 지정하지 않는다. row의 음수 gutter와
   컬럼 폭 계산이 유지되어야 상단 버튼 라인과 카드의 좌우 끝선이 정확히 맞는다. */
.iw-manage-page {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

.iw-manage-split,
.iw-manage-split > [class*="col-"] {
  min-width: 0;
}

/* 1680px 이하에서는 우측 관리정보가 지나치게 좁아지므로
   기본정보 아래의 전체 너비 영역으로 내려서 입력선과 라벨 정렬을 유지한다. */
@media (max-width: 1680px) {
  .iw-manage-split > .col-xl-8,
  .iw-manage-split > .col-xl-4,
  .iw-manage-split > .col-xl-9,
  .iw-manage-split > .col-xl-3 {
    flex: 0 0 auto;
    width: 100%;
    max-width: 100%;
  }

  .iw-manage-split .iw-manage-sticky-card {
    position: static;
    top: auto;
  }
}

/* 넓은 데스크톱에서만 관리정보 카드를 우측에 고정한다. */
@media (min-width: 1681px) {
  .iw-manage-sticky-card {
    position: sticky;
    top: 5.625rem;
  }
}

/* 공통 한글 날짜 선택기의 월·연도와 요일이 좁은 화면에서도 줄바꿈되지 않게 한다. */
.flatpickr-calendar,
.flatpickr-months,
.flatpickr-weekdays {
  font-family: inherit;
}

.flatpickr-current-month,
.flatpickr-current-month .flatpickr-monthDropdown-months,
.flatpickr-current-month input.cur-year,
.flatpickr-weekday {
  white-space: nowrap;
  word-break: keep-all;
}


/* --------------------------------------------------------------------------
   관리자 코드관리 화면
   -------------------------------------------------------------------------- */
.code-master-card {
		position: sticky;
		top: 1rem;
	}
	
	.code-master-list {
		max-height: calc(100vh - 16rem);
		min-height: 24rem;
		overflow-y: auto;
	}
	
	.code-master-item, .code-detail-item {
		color: var(--phoenix-body-color);
		text-decoration: none;
		transition: background-color .15s ease, border-color .15s ease,
			box-shadow .15s ease;
	}
	
	.code-master-item:hover, .code-detail-item:hover {
		color: var(--phoenix-body-color);
		background-color: var(--phoenix-emphasis-bg);
	}
	
	.code-master-item.is-active {
		background-color: var(--phoenix-primary-bg-subtle);
		border-color: var(--phoenix-primary-border-subtle);
		box-shadow: inset 4px 0 0 var(--phoenix-primary);
	}
	
	.code-detail-item.is-active {
		background-color: var(--phoenix-primary-bg-subtle);
		border-color: var(--phoenix-primary-border-subtle);
		box-shadow: inset 3px 0 0 var(--phoenix-primary);
	}
	
	.code-master-name, .code-detail-name, .code-detail-description {
		min-width: 0;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}
	
	.code-filter .input-group-text {
		background-color: var(--phoenix-body-bg);
		color: var(--phoenix-tertiary-color);
	}
	
	.code-master-pagination {
		min-height: 3.25rem;
	}
	
	.code-master-pagination .pagination {
		--phoenix-pagination-padding-x: .55rem;
		--phoenix-pagination-padding-y: .3rem;
		--phoenix-pagination-font-size: .8rem;
	}
	
	.code-master-pagination .page-link {
		min-width: 2rem;
		text-align: center;
	}
	
	.code-detail-card-header {
		padding-right: 1.5rem;
		padding-left: 1.5rem;
	}
	
	.code-detail-toolbar {
		min-width: 0;
		max-width: 100%;
	}
	
	.code-detail-filter {
		width: 18rem;
		max-width: 100%;
		min-width: 0;
	}
	
	.code-detail-list-header, .code-detail-item-grid {
		display: grid;
		grid-template-columns: minmax(7rem, .85fr) minmax(8rem, 1.1fr)
			minmax(0, 1.55fr) 4.5rem 5rem;
		align-items: center;
		gap: .75rem;
	}
	
	.code-detail-list-header2, .code-detail-item-grid2 {
		display: grid;
		grid-template-columns: minmax(8rem, 1.2fr) minmax(7rem, .9fr) minmax(0, 1.55fr);
		align-items: center;
		gap: .75rem;
	}
	
	.code-detail-list-header {
		padding: .7rem 1rem;
		border-bottom: 1px solid var(--phoenix-border-color-translucent);
		background-color: var(--phoenix-emphasis-bg);
		color: var(--phoenix-secondary-color);
		font-size: .75rem;
		font-weight: 700;
		line-height: 1.2;
	}
	.code-detail-list-header2 {
		padding: .7rem 1rem;
		border-bottom: 1px solid var(--phoenix-border-color-translucent);
		background-color: var(--phoenix-emphasis-bg);
		color: var(--phoenix-secondary-color);
		font-size: .75rem;
		font-weight: 700;
		line-height: 1.2;
	}
	.code-detail-list {
		/* 행 높이를 촘촘하게 유지해 10건을 표시하고 카드 전체 높이는 줄인다. */
		height: 21.5rem;
		max-height: 21.5rem;
		overflow-y: auto;
	}
	
	.code-detail-item {
		min-height: 2.15rem;
		padding: .25rem 1rem;
		display: flex;
		align-items: center;
	}
	
	.code-detail-item-grid {
		width: 100%;
		line-height: 1.2;
	}
	.code-detail-item-grid2 {
		width: 100%;
		line-height: 1.2;
	}
	
	.code-detail-order, .code-detail-status, .code-detail-list-header .text-center, .code-detail-list-header2
		{
		text-align: center;
	}
	
	.code-detail-editor {
		height: 100%;
		border: 1px solid var(--phoenix-border-color-translucent);
		border-radius: var(--phoenix-border-radius-lg);
		background-color: var(--phoenix-body-bg);
	}
	
	.code-compact-textarea {
		min-height: 4.25rem;
		resize: vertical;
	}
	
	.code-detail-pane {
		width: 100%;
		min-height: 24rem;
	}
	
	.code-detail-editor-header {
		border-bottom: 1px solid var(--phoenix-border-color-translucent);
		background-color: var(--phoenix-emphasis-bg);
		border-radius: var(--phoenix-border-radius-lg)
			var(--phoenix-border-radius-lg) 0 0;
	}
	
	.code-empty-state {
		min-height: 16rem;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		text-align: center;
		color: var(--phoenix-tertiary-color);
	}
	
	.code-workspace-card .form-control[readonly] {
		background-color: var(--phoenix-secondary-bg);
	}
	
	@media ( max-width : 1399.98px) {
		.code-detail-pane {
			min-height: 0;
		}
	}
	
	@media ( max-width : 1199.98px) {
		.code-master-card {
			position: static;
		}
		.code-master-list {
			max-height: none;
			min-height: 0;
			overflow-y: visible;
		}
		.code-detail-toolbar, .code-detail-filter {
			width: 100%;
		}
	}
	
	@media ( max-width : 767.98px) {
		.code-detail-card-header {
			padding-right: 1rem;
			padding-left: 1rem;
		}
		.code-detail-list-header {
			display: none;
		}
		.code-detail-list-header2 {
			display: none;
		}
		.code-detail-list {
			height: auto;
			max-height: 24rem;
		}
		.code-detail-item {
			min-height: 0;
			padding: .75rem 1rem;
		}
		.code-detail-item-grid {
			grid-template-columns: minmax(0, 1fr) auto;
			grid-template-areas:
				"detailId detailOrder"
				"detailName detailStatus";
			gap: .3rem .75rem;
			align-items: center;
		}
		.code-detail-item-grid2 {
			grid-template-columns: minmax(0, 1fr) auto;
			gap: .3rem .75rem;
			align-items: center;
		}
		.code-detail-id {
			grid-area: detailId;
			min-width: 0;
			overflow: hidden;
			text-overflow: ellipsis;
			white-space: nowrap;
		}
		.code-detail-name {
			grid-area: detailName;
		}
		.code-detail-description {
			display: none;
		}
		.code-detail-order {
			grid-area: detailOrder;
			justify-self: end;
			text-align: right;
			color: var(--phoenix-secondary-color);
		}
		.code-detail-status {
			grid-area: detailStatus;
			justify-self: end;
			text-align: right;
		}
		.code-detail-order::before {
			content: none;
		}
	}


/* --------------------------------------------------------------------------
   공통 목록 테이블
   모바일에서 열이 지나치게 압축되지 않도록 최소 너비를 유지한다.
   table-responsive 내부에서만 가로 스크롤되므로 페이지 전체 폭은 늘어나지 않는다.
   -------------------------------------------------------------------------- */
.table-responsive > table.table {
  min-width: 52rem;
}

.table-responsive > table.iw-table-disburse,
.table-responsive > table.iw-table-events,
.table-responsive > table.iw-table-report,
.table-responsive > table.iw-table-welfare,
.table-responsive > table.iw-table-employee {
  min-width: 70rem;
}

.iw-table-frame > .table-responsive > table.table,
.iw-table-frame > table.table,
table.iw-asset-history-table {
  min-width: 52rem;
}

/* 캘린더 모바일 상세 팝업 */
.iw-calendar-event-modal .modal-dialog {
  max-width: 30rem;
}

.iw-calendar-event-detail {
  display: grid;
  grid-template-columns: 5.5rem minmax(0, 1fr);
  border-top: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  border-left: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
}

.iw-calendar-event-detail dt,
.iw-calendar-event-detail dd {
  min-width: 0;
  margin: 0;
  padding: .75rem .875rem;
  border-right: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  border-bottom: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
}

.iw-calendar-event-detail dt {
  font-size: .8125rem;
  font-weight: 700;
  color: var(--phoenix-emphasis-color);
  background: var(--phoenix-body-highlight-bg, var(--phoenix-secondary-bg));
  white-space: nowrap;
}

.iw-calendar-event-detail dd {
  color: var(--phoenix-body-color);
  overflow-wrap: anywhere;
}

.fc .iw-calendar-mobile-event-label {
  display: block;
  width: 100%;
  overflow: hidden;
  font-size: .6875rem;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 코드관리: 모바일에서는 데스크톱용 고정 높이를 완전히 해제한다. */
@media (max-width: 767.98px) {
  .code-detail-pane,
  .code-detail-editor {
    height: auto !important;
    min-height: 0 !important;
  }

  .code-detail-list {
    height: auto !important;
    max-height: none !important;
    overflow-y: visible !important;
  }

  [data-code-list-container="detail"] {
    overflow: visible !important;
  }

  .code-detail-item-grid {
    width: 100%;
    min-width: 0;
  }
  .code-detail-item-grid2 {
    width: 100%;
    min-width: 0;
  }
}

/* --------------------------------------------------------------------------
   768px 미만 공통 모바일 규칙
   -------------------------------------------------------------------------- */
@media (max-width: 767.98px) {
  .btn:not(.icon-item):not(.btn-close) {
    padding-right: .75rem !important;
    padding-left: .75rem !important;
    white-space: nowrap;
    word-break: keep-all;
  }

  .iw-field {
    grid-template-columns: minmax(0, 1fr);
    gap: .375rem;
    align-items: start;
  }

  .iw-label {
    width: auto;
    max-width: none;
    white-space: normal;
  }

  .iw-field-start > .iw-label {
    padding-top: 0;
  }

  #boardForm .iw-board-main-field {
    gap: 0;
  }

  #boardForm .iw-board-main-field > .iw-label {
    display: none;
  }

  .iw-calendar-event-detail {
    grid-template-columns: 4.75rem minmax(0, 1fr);
  }
}

@media (max-width: 380px) {
  .fc .iw-calendar-day-suffix {
    display: none;
  }

  .fc .iw-calendar-day-number {
    min-width: 1.75rem;
    padding-right: .3rem;
    padding-left: .3rem;
  }
}


/* --------------------------------------------------------------------------
   비용관리 등록·수정 폼 모바일 정렬
   최신 비용 JSP는 expense-* 클래스를 사용하므로 공통 iw-field 규칙과 별도로 처리한다.
   -------------------------------------------------------------------------- */
@media (max-width: 767.98px) {
  .expense-form-row {
    gap: .875rem !important;
  }

  .expense-field {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: .375rem !important;
    align-items: start !important;
  }

  .expense-form-label {
    width: auto !important;
    max-width: none !important;
    padding-top: 0 !important;
    white-space: normal !important;
  }

  .expense-field-align-start > .expense-form-label {
    padding-top: 0 !important;
  }

  .expense-inline {
    flex-wrap: wrap !important;
  }

  .expense-inline > *,
  .expense-inline .expense-inline-fixed,
  .expense-inline .expense-inline-grow {
    flex: 1 1 100% !important;
    width: 100% !important;
  }
}

/* --------------------------------------------------------------------------
   캘린더 하단 기간별 목록
   -------------------------------------------------------------------------- */
.iw-calendar-list-card {
  overflow: hidden;
}

.iw-calendar-list-card .table-responsive > table.table {
  min-width: 48rem;
}

.iw-calendar-list-card [data-calendar-list-pagination] .page {
  min-width: 2rem;
}

.iw-calendar-list-card [data-calendar-list-pagination] .page.active {
  color: #fff;
  background: var(--phoenix-primary);
  border-radius: .375rem;
}

.iw-calendar-list-color {
  display: inline-block;
  width: .625rem;
  height: .625rem;
  flex: 0 0 .625rem;
  border-radius: 50%;
  background: var(--iw-calendar-list-color, #64748b);
  box-shadow: 0 0 0 1px rgba(15, 23, 42, .18);
}

[data-bs-theme=dark] .iw-calendar-list-color {
  box-shadow: 0 0 0 1px rgba(248, 250, 252, .28);
}

.iw-calendar-list-title,
.iw-calendar-list-description {
  max-width: 28rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 캘린더 하단 목록은 주요 정보 열의 폭을 고정하고 설명/비고 열만 남은 공간을 사용한다. */
.iw-calendar-data-table {
  width: 100%;
  table-layout: fixed;
}

.iw-calendar-data-table th,
.iw-calendar-data-table td {
  min-width: 0;
  overflow: hidden;
}

.iw-calendar-data-table .iw-calendar-list-title {
  display: block;
  width: 100%;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.iw-calendar-data-table td.iw-calendar-list-description {
  max-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.iw-calendar-data-table td > .d-flex {
  min-width: 0;
  overflow: hidden;
}

.iw-calendar-data-table td > .d-flex > span:last-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.iw-calendar-data-table .iw-col-date {
  width: 13rem;
}

.iw-calendar-data-table .iw-col-user {
  width: 7rem;
}

.iw-calendar-data-table .iw-col-type {
  width: 8.5rem;
}

.iw-calendar-data-table .iw-col-title {
  width: 12rem;
}

.iw-calendar-data-table .iw-col-status {
  width: 5.5rem;
}

.iw-calendar-data-table .iw-col-room {
  width: 8.5rem;
}

.iw-calendar-data-table .iw-col-attendee {
  width: 11rem;
}

.iw-calendar-data-table .iw-col-manage {
  width: 5.75rem;
}

.iw-calendar-data-table .iw-col-fluid {
  width: auto;
}

.iw-planner-list-table {
  min-width: 48rem;
}

.iw-vacation-list-table {
  min-width: 50rem;
}

.iw-booking-list-table {
  min-width: 56rem;
}

.iw-calendar-data-table td:last-child,
.iw-calendar-data-table th:last-child {
  white-space: nowrap;
}

/* --------------------------------------------------------------------------
   비용 기안문서 공통 정보표와 첨부파일
   Bootstrap col 폭 대신 12칸 문서 그리드를 사용해 확대·축소와 모바일에서 깨지지 않게 한다.
   -------------------------------------------------------------------------- */
.draft-document-grid {
  display: grid !important;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 0 !important;
  margin: 0 !important;
  overflow: hidden;
  border-top: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  border-left: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  border-radius: .5rem;
}

.draft-document-grid > [class*="col-"] {
  width: auto !important;
  max-width: none !important;
  min-width: 0;
  padding: 0 !important;
  flex: none !important;
  border-right: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  border-bottom: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  background: var(--phoenix-body-bg);
}

.draft-document-grid > .col-12 { grid-column: span 12; }
.draft-document-grid > .col-md-2 { grid-column: span 2; }
.draft-document-grid > .col-md-3 { grid-column: span 3; }
.draft-document-grid > .col-md-4 { grid-column: span 4; }
.draft-document-grid > .col-md-6 { grid-column: span 6; }
.draft-document-grid > .col-md-8 { grid-column: span 8; }
.draft-document-grid > .col-md-9 { grid-column: span 9; }
.draft-document-grid > .col-md-12 { grid-column: span 12; }

.draft-label {
  min-height: 2.25rem;
  margin: 0;
  padding: .625rem .875rem;
  font-size: .75rem;
  line-height: 1.25;
  font-weight: 700;
  color: var(--phoenix-secondary-color);
  text-align: left;
  background: var(--phoenix-body-highlight-bg, var(--phoenix-secondary-bg));
  border-bottom: 1px solid var(--phoenix-border-color-translucent, var(--phoenix-border-color));
  white-space: nowrap;
  word-break: keep-all;
}

.draft-value {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: .35rem .5rem;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  min-height: 3.125rem;
  padding: .75rem .875rem;
  font-weight: 600;
  color: var(--phoenix-emphasis-color);
  line-height: 1.45;
  text-align: right;
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: anywhere;
}

.draft-value.fs-7 {
  font-size: 1.125rem !important;
}

.draft-value--multiline {
  display: block;
  min-height: 5rem;
  text-align: right;
  white-space: pre-line;
}

.draft-value .badge,
.draft-value span {
  max-width: 100%;
}

.draft-attachment-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, 10rem);
  gap: .75rem;
  justify-content: flex-start;
  align-items: start;
}

.draft-attachment {
  min-width: 0;
  padding: .5rem;
  border: 1px solid var(--phoenix-border-color);
  border-radius: .5rem;
  background: var(--phoenix-body-bg);
}

.draft-attachment-media,
.draft-attachment-preview,
.draft-attachment-file,
.draft-attachment-fallback {
  width: 100%;
  height: 6rem;
  border-radius: .375rem;
  background: var(--phoenix-secondary-bg);
}

.draft-attachment-media {
  position: relative;
  overflow: hidden;
}

.draft-attachment-preview {
  display: block;
  object-fit: contain;
}

.draft-attachment-file,
.draft-attachment-fallback {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .4rem;
  padding: .75rem;
  color: var(--phoenix-tertiary-color);
  text-align: center;
  font-size: .75rem;
}

.draft-attachment-file .fa-solid,
.draft-attachment-fallback .fa-solid {
  font-size: 1.75rem;
}

.draft-attachment-name {
  margin-top: .5rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .75rem;
  font-weight: 600;
}

.draft-attachment-meta {
  margin-top: .125rem;
  color: var(--phoenix-tertiary-color);
  font-size: .6875rem;
}

.draft-attachment-empty {
  width: 10rem;
  min-height: 8rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: 1rem;
  border: 1px dashed var(--phoenix-border-color);
  border-radius: .5rem;
  background: var(--phoenix-secondary-bg);
  color: var(--phoenix-tertiary-color);
  text-align: center;
}

.draft-attachment-empty .fa-solid {
  font-size: 1.75rem;
}

@media (max-width: 1199.98px) {
  .draft-document-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .draft-document-grid > [class*="col-"] {
    grid-column: span 1;
  }

  .draft-document-grid > .col-12,
  .draft-document-grid > .col-md-6,
  .draft-document-grid > .col-md-8,
  .draft-document-grid > .col-md-9,
  .draft-document-grid > .col-md-12 {
    grid-column: span 2;
  }
}

@media (max-width: 767.98px) {
  .draft-document-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .draft-document-grid > [class*="col-"] {
    grid-column: span 1 !important;
  }

  .draft-label {
    min-height: 0;
    padding: .55rem .75rem;
  }

  .draft-value {
    min-height: 2.75rem;
    padding: .7rem .75rem;
  }

}


/* Welfare draft alignment overrides */
.draft-align-start .draft-label,
.draft-align-start .draft-value {
  justify-content: flex-start;
  text-align: left;
}

.draft-summary-card {
  text-align: right;
}

.draft-summary-card .draft-label {
  text-align: right;
}

.draft-summary-card > :not(.draft-label) {
  width: 100%;
  text-align: right;
}

/* 상단 사용자 영역: 데스크톱은 기존 버튼형, 모바일은 이름 위/텍스트 메뉴 아래 구조 */
.iw-top-user-nav {
  min-width: 0;
  margin-left: auto;
}

.iw-top-user-panel,
.iw-top-user-actions {
  display: flex;
  align-items: center;
  min-width: 0;
}

.iw-top-user-identity {
  display: flex;
  align-items: center;
  min-width: 0;
  margin-right: 1rem;
}

.iw-top-user-name {
  flex: 0 0 auto;
  margin-right: .4rem;
  white-space: nowrap;
}

.iw-theme-toggle {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: .1rem;
  padding: .12rem;
  border: 1px solid var(--phoenix-border-color);
  border-radius: 999px;
  background: var(--phoenix-body-bg);
  color: var(--phoenix-tertiary-color);
  line-height: 1;
}

.iw-theme-toggle:hover,
.iw-theme-toggle:focus-visible {
  border-color: var(--phoenix-primary);
  outline: 0;
}

.iw-theme-toggle:disabled {
  opacity: .65;
}

.iw-theme-toggle-icon {
  display: inline-flex;
  width: 1.35rem;
  height: 1.35rem;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  font-size: .72rem;
}

.iw-theme-toggle[data-theme="light"] .iw-theme-toggle-sun,
.iw-theme-toggle[data-theme="dark"] .iw-theme-toggle-moon {
  background: var(--phoenix-secondary-bg);
  color: var(--phoenix-emphasis-color);
}

.iw-readonly-control {
  background-color: var(--phoenix-secondary-bg) !important;
  color: var(--phoenix-tertiary-color) !important;
  cursor: not-allowed;
}

.iw-top-user-actions {
  gap: .5rem;
}

@media (max-width: 767.98px) {
  #navbarDefault .navbar-collapse {
    flex-wrap: nowrap;
    min-width: 0;
  }

  #navbarDefault .navbar-logo {
    flex: 0 1 auto;
    min-width: 0;
  }

  #navbarDefault .navbar-brand {
    margin-right: 0 !important;
  }

  #navbarDefault .navbar-brand img {
    max-width: 6rem;
    height: auto !important;
  }

  .iw-top-user-nav {
    flex: 0 0 auto;
    align-self: stretch;
    justify-content: center;
  }

  .iw-top-user-panel {
    flex-direction: column;
    align-items: flex-end;
    justify-content: center;
    gap: .25rem;
    line-height: 1.15;
  }

  .iw-top-user-identity {
    margin-right: 0;
  }

  .iw-top-user-name {
    max-width: 10rem;
    margin-right: 0;
    overflow: hidden;
    font-size: .8rem;
    font-weight: 700;
    text-align: right;
    text-overflow: ellipsis;
    padding-right: .75rem !important;
    padding-left: .75rem !important;
  }

  .iw-top-user-actions {
    justify-content: flex-end;
    gap: 0;
    white-space: nowrap;
  }

  .iw-top-user-link,
  .iw-top-login-link {
    min-height: auto !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    font-size: .75rem;
    font-weight: 600;
    line-height: 1.25;
    white-space: nowrap;
  }

  .iw-top-user-link-info {
    color: var(--phoenix-primary) !important;
  }

  .iw-top-user-link-logout {
    margin-left: .55rem;
    padding-left: .55rem !important;
    border-left: 1px solid var(--phoenix-border-color) !important;
    color: var(--phoenix-body-color) !important;
  }

  .iw-top-user-link:hover,
  .iw-top-user-link:focus,
  .iw-top-login-link:hover,
  .iw-top-login-link:focus {
    background: transparent !important;
    text-decoration: underline;
  }
}

@media (max-width: 359.98px) {
  #navbarDefault .navbar-brand img {
    max-width: 5rem;
  }

  .iw-top-user-name {
    max-width: 7rem;
  }

  .iw-top-user-link,
  .iw-top-login-link {
    font-size: .7rem;
  }
}

/* 좌측 하단 프로필 영역을 상단으로 이동했으므로 Phoenix 기본 footer 예약 공간을 제거한다. */
.navbar-vertical .navbar-vertical-footer {
  display: none !important;
}

@media (min-width: 992px) {
  html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-lg .navbar-vertical-content {
    height: calc(100vh - var(--phoenix-navbar-top-height));
  }
}

/* 조직도 상세를 fetch로 교체하는 동안 현재 화면 위치는 유지하고 중복 클릭만 막는다. */
.iw-org-detail.is-fetch-loading {
  pointer-events: none;
  opacity: .65;
  transition: opacity .15s ease;
}



/* 공통 알림/확인 모달 */
body.iw-common-dialog-open {
  /* 팝업 표시 중에도 기존 스크롤바를 유지해 화면 폭이 흔들리지 않게 한다. */
  overflow-y: auto;
}

.iw-common-dialog-layer {
  position: fixed;
  inset: 0;
  z-index: 10950;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  opacity: 0;
  visibility: hidden;
  transition: opacity .16s ease, visibility .16s ease;
}

.iw-common-dialog-layer.is-open {
  opacity: 1;
  visibility: visible;
}

.iw-common-dialog-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(20, 24, 36, .48);
  backdrop-filter: blur(1.5px);
}

.iw-common-dialog {
  position: relative;
  z-index: 1;
  width: min(100%, 28rem);
  max-height: calc(100vh - 2rem);
  overflow: auto;
  border-radius: 1rem;
  transform: translateY(10px) scale(.985);
  transition: transform .16s ease;
}

.iw-common-dialog-layer.is-open .iw-common-dialog {
  transform: translateY(0) scale(1);
}

.iw-common-dialog-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  margin-bottom: 1rem;
  border-radius: 50%;
  font-size: 1.4rem;
}

.iw-common-dialog-icon.is-alert {
  color: var(--phoenix-primary);
  background: rgba(var(--phoenix-primary-rgb), .12);
}

.iw-common-dialog-icon.is-confirm {
  color: var(--phoenix-warning-text-emphasis, #8a5b00);
  background: var(--phoenix-warning-bg-subtle, rgba(245, 158, 11, .14));
}

.iw-common-dialog-message {
  min-height: 1.5rem;
  white-space: pre-line;
  word-break: keep-all;
  overflow-wrap: anywhere;
  line-height: 1.65;
}

.iw-common-dialog-actions .btn {
  min-width: 5.5rem;
}

@media (max-width: 575.98px) {
  .iw-common-dialog-layer {
    align-items: flex-end;
    padding: .75rem;
  }

  .iw-common-dialog {
    width: 100%;
    border-radius: .875rem;
  }

  .iw-common-dialog .card-body {
    padding: 1.5rem !important;
  }
}

/* --------------------------------------------------------------------------
   개인일정 목록 제어: 지출/관리 목록과 동일한 검색·정렬·페이지 이동 흐름
   -------------------------------------------------------------------------- */
.iw-calendar-list-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: .5rem;
}

.iw-calendar-list-controls > .form-select {
  width: auto;
  min-width: 8.5rem;
}

.iw-calendar-list-controls > .iw-list-search {
  width: min(20rem, 100%);
}

#plannerList .table-responsive > table.table {
  min-width: 62rem;
}

#plannerList [data-calendar-list-view] {
  white-space: nowrap;
}

@media (max-width: 991.98px) {
  .iw-calendar-list-controls {
    width: 100%;
    justify-content: flex-start;
  }

  .iw-calendar-list-controls > .iw-list-search {
    flex: 1 1 16rem;
    width: auto;
  }
}

@media (max-width: 575.98px) {
  .iw-calendar-list-controls > .form-select,
  .iw-calendar-list-controls > .iw-list-search {
    flex: 1 1 100%;
    width: 100%;
  }
}

/* 공휴일관리 fetch 처리 중 화면 전체 새로고침 없이 중복 조작만 방지한다. */
.iw-holiday-admin.is-fetch-loading {
  pointer-events: none;
  opacity: .65;
  transition: opacity .15s ease;
}

/* --------------------------------------------------------------------------
   사업/프로젝트 정보 편집기 UI
   -------------------------------------------------------------------------- */
.iw-info-notepad {
  min-height: 34rem;
}

.iw-info-notepad-sidebar {
  background: var(--phoenix-body-highlight-bg, var(--phoenix-emphasis-bg));
}

.iw-info-notepad-sidebar-head {
  padding: .85rem 1rem;
  border-bottom: 1px solid var(--phoenix-border-color);
}

.iw-info-notepad-search .input-group-text,
.iw-info-notepad-search .form-control {
  background: var(--phoenix-body-bg);
}

.iw-info-notepad-tree {
  max-height: 42rem;
  min-height: 18rem;
  overflow-y: auto;
}

.iw-info-notepad-item {
  display: block;
  padding: .72rem 1rem;
  border-bottom: 1px solid var(--phoenix-border-color);
  color: inherit;
  text-decoration: none;
  transition: background-color .12s ease, box-shadow .12s ease;
}

.iw-info-notepad-item:hover {
  background: var(--phoenix-emphasis-bg);
}

.iw-info-notepad-item.is-active {
  background: var(--phoenix-primary-bg-subtle);
  box-shadow: inset .2rem 0 0 var(--phoenix-primary);
}

.iw-info-notepad-item.is-hidden {
  display: none;
}

.iw-info-notepad-item-title {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.iw-info-notepad-editor {
  min-height: 34rem;
  background: var(--phoenix-body-bg);
}

.iw-info-notepad-editor-head {
  padding: 1.15rem 1.35rem .95rem;
  border-bottom: 1px solid var(--phoenix-border-color);
}

.iw-info-notepad-title {
  width: 100%;
  padding: .2rem 0;
  border: 0;
  border-radius: 0;
  outline: 0;
  background: transparent;
  box-shadow: none !important;
  color: var(--phoenix-emphasis-color);
  font-size: 1.3rem;
  font-weight: 700;
  line-height: 1.35;
}

.iw-info-notepad-title::placeholder {
  color: var(--phoenix-tertiary-color);
  font-weight: 600;
}

.iw-info-notepad-settings {
  margin-top: .85rem;
  padding: .9rem;
  border: 1px solid var(--phoenix-border-color);
  border-radius: .5rem;
  background: var(--phoenix-body-highlight-bg, var(--phoenix-emphasis-bg));
}

.iw-info-notepad-editor-body {
  padding: 1rem 1.35rem 1.15rem;
}

.iw-info-notepad-content {
  min-height: 25rem;
  resize: vertical;
}

.iw-info-notepad-editor-body .tox-tinymce {
  border-color: var(--phoenix-border-color);
  border-radius: .5rem;
}

.iw-info-notepad-footer {
  padding: .8rem 1.35rem;
  border-top: 1px solid var(--phoenix-border-color);
  background: var(--phoenix-body-highlight-bg, var(--phoenix-emphasis-bg));
}

.iw-info-notepad-read-content {
  min-height: 25rem;
  padding: 1.25rem 1.35rem;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: 1.75;
  white-space: pre-wrap;
}

.iw-info-notepad-read-content > :first-child {
  margin-top: 0;
}

.iw-info-notepad-read-content > :last-child {
  margin-bottom: 0;
}

.iw-info-notepad-read-content table {
  width: 100%;
  margin: 1rem 0;
  border-collapse: collapse;
}

.iw-info-notepad-read-content th,
.iw-info-notepad-read-content td {
  padding: .5rem .65rem;
  border: 1px solid var(--phoenix-border-color);
  vertical-align: top;
}

.iw-info-notepad-read-content pre {
  max-width: 100%;
  margin: 1rem 0;
  padding: .85rem 1rem;
  overflow: auto;
  border: 1px solid var(--phoenix-border-color);
  border-radius: .5rem;
  background: var(--phoenix-emphasis-bg);
  white-space: pre-wrap;
}

.iw-info-notepad-empty {
  min-height: 24rem;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  text-align: center;
}

@media (max-width: 991.98px) {
  .iw-info-notepad-tree {
    max-height: 20rem;
    min-height: 8rem;
  }

  .iw-info-notepad-editor {
    min-height: 28rem;
  }
}

@media (max-width: 575.98px) {
  .iw-info-notepad-editor-head,
  .iw-info-notepad-editor-body,
  .iw-info-notepad-footer {
    padding-left: 1rem;
    padding-right: 1rem;
  }

  .iw-info-notepad-title {
    font-size: 1.15rem;
  }
}


/* Vacation detail table: compact responsive layout */
.iw-vacation-detail-wrap {
  width: 100%;
  overflow: hidden;
}

.iw-vacation-detail-table {
  width: 100%;
  min-width: 0 !important;
  table-layout: fixed;
}

.iw-vacation-detail-table th,
.iw-vacation-detail-table td {
  min-width: 0;
  vertical-align: middle;
}

.iw-vacation-detail-date-col { width: 18%; }
.iw-vacation-detail-type-col { width: 34%; }
.iw-vacation-detail-days-col { width: 16%; }
.iw-vacation-detail-time-col { width: 32%; }

.iw-vacation-detail-select {
  width: 100%;
  min-width: 0;
  text-overflow: ellipsis;
}

.iw-vacation-detail-date,
.iw-vacation-detail-period,
.iw-vacation-detail-table [data-vacation-detail-days] {
  white-space: nowrap;
}

@media (max-width: 575.98px) {
  .iw-vacation-detail-table {
    font-size: .72rem;
  }

  .iw-vacation-detail-table th,
  .iw-vacation-detail-table td {
    padding-left: .2rem !important;
    padding-right: .2rem !important;
  }

  .iw-vacation-detail-date-col { width: 16%; }
  .iw-vacation-detail-type-col { width: 35%; }
  .iw-vacation-detail-days-col { width: 15%; }
  .iw-vacation-detail-time-col { width: 34%; }

  .iw-vacation-detail-select {
    height: 1.9rem;
    padding: .2rem 1.35rem .2rem .3rem;
    font-size: .72rem;
    background-position: right .3rem center;
  }
}

/* --------------------------------------------------------------------------
   공통 24시간 시간 선택기
   - 브라우저/로케일에 따른 오전·오후 열을 사용하지 않고 00~23시로 통일한다.
   - 시간/분 두 열을 동일 폭으로 넓게 표시한다.
   -------------------------------------------------------------------------- */
.iw-timepicker-input {
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23525b75' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .75rem center;
  background-size: 1rem 1rem;
  padding-right: 2.35rem;
}

.iw-timepicker-input[readonly],
.iw-timepicker-input:disabled {
  cursor: default;
  background-image: none;
}

.iw-timepicker-popover {
  position: absolute;
  z-index: 1095;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  overflow: hidden;
  height: 15rem;
  background: var(--phoenix-body-bg, #fff);
  border: 1px solid var(--phoenix-border-color, #cbd0dd);
  border-radius: .25rem;
  box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .12);
}

.iw-timepicker-column {
  min-width: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
}

.iw-timepicker-column + .iw-timepicker-column {
  border-left: 1px solid var(--phoenix-border-color, #cbd0dd);
}

.iw-timepicker-option {
  display: block;
  width: 100%;
  min-height: 2.35rem;
  padding: .45rem .65rem;
  color: var(--phoenix-body-color, #31374a);
  font: inherit;
  font-variant-numeric: tabular-nums;
  text-align: center;
  background: transparent;
  border: 0;
  border-radius: 0;
}

.iw-timepicker-option:hover,
.iw-timepicker-option:focus-visible {
  color: var(--phoenix-body-color, #31374a);
  background: var(--phoenix-emphasis-bg, #f5f7fa);
  outline: 0;
}

.iw-timepicker-option.is-selected {
  color: #fff;
  font-weight: 600;
  background: var(--phoenix-primary, #3874ff);
}

@media (max-width: 575.98px) {
  .iw-timepicker-popover {
    min-width: 12.5rem;
    height: 14rem;
  }

  .iw-timepicker-option {
    min-height: 2.5rem;
    padding-left: .8rem;
    padding-right: .8rem;
  }
}
/* 게시판 답글은 원글 바로 아래에서 한 단계 들여쓰기하고 답글 화살표 방향을 맞춘다. */
.iw-board-reply-title {
  padding-left: 1.25rem;
}

.iw-board-reply-icon {
  display: inline-block;
  transform: scaleY(-1) scaleX(-1);
}


/* 연차 현황 요약: 모바일에서도 총/사용/잔여 휴가를 한 줄에 유지한다. */
@media (max-width: 575.98px) {
  .iw-vacation-balance-row {
    --bs-gutter-x: .5rem;
  }

  .iw-vacation-balance-card-body {
    padding: .65rem .25rem !important;
    text-align: center;
  }

  .iw-vacation-balance-label {
    margin-bottom: .15rem !important;
    font-size: .68rem !important;
    line-height: 1.2;
    white-space: nowrap;
  }

  .iw-vacation-balance-value {
    font-size: 1rem !important;
    line-height: 1.2;
    white-space: nowrap;
  }
}

/* 회의실 예약/일정 캘린더: 모바일에서는 날짜만 표시하고 데이터 유무를 밑줄로 표시한다. */
@media (max-width: 767.98px) {
  #bookingCalendar .fc-daygrid-day-events,
  #bookingCalendar .fc-daygrid-day-bottom,
  #bookingCalendar .iw-holiday-label,
  #plannerCalendar .fc-daygrid-day-events,
  #plannerCalendar .fc-daygrid-day-bottom,
  #plannerCalendar .iw-holiday-label {
    display: none !important;
  }

  #bookingCalendar .fc-daygrid-day-number,
  #plannerCalendar .fc-daygrid-day-number {
    cursor: pointer;
  }

  #bookingCalendar .iw-calendar-day-value,
  #plannerCalendar .iw-calendar-day-value {
    position: relative;
  }

  #bookingCalendar .iw-mobile-calendar-has-data .iw-calendar-day-value::after,
  #plannerCalendar .iw-mobile-calendar-has-data .iw-calendar-day-value::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: -.32rem;
    width: 1.15rem;
    height: 2px;
    border-radius: 999px;
    background: var(--phoenix-primary, #3874ff);
    transform: translateX(-50%);
  }
}
