@charset "UTF-8";

/********** Root **********/
/* light */
:root,
[data-bs-theme='light'] {
  --bs-primary: #6747d2;
  --bs-primary-rgb: 103, 71, 210;
  --bs-primary-hover: #5d42cb;
  --bs-primary-active: #4e3ac2;

  --bs-warning: #f8a324;
  --bs-info: #0d6efd;
  --bs-info-rgb: 13, 110, 253;

  --bs-emphasis-color: #212529;
  --bs-emphasis-color-rgb: 33, 37, 41;
  --bs-medium-emphasis-color: #0000008f;
  --bs-medium-emphasis-color-rgb: 131, 133, 135;
  --bs-reverse-emphasis-color: #fff;
  --bs-reverse-medium-emphasis-color: #8f8f8f;
  --bs-reverse-medium-emphasis-color-rgb: 143, 143, 143;

  --bs-gray-bg: #f3f4f5;
  --bs-gray-bg-rgb: 243, 244, 245;
  --bs-blue-gray-50: #eceff1;
  --bs-blue-gray-100: #cfd8dc;
  --bs-blue-gray-200: #b0bec5;
  --bs-blue-gray-300: #90a4ae;
  --bs-blue-gray-400: #78909c;
  --bs-blue-gray-500: #607d8b;
  --bs-blue-gray-600: #546e7a;
  --bs-blue-gray-700: #455a64;
  --bs-blue-gray-800: #37474f;
  --bs-blue-gray-900: #263238;

  --bs-border-color: #e7e9eb;
  --bs-border-radius: 0.75rem;
  --bs-border-radius-sm: 0.5rem;
  --bs-border-radius-lg: 1rem;
  --bs-border-radius-xl: 1.25rem;

  --bs-placeholder-color: rgba(var(--bs-emphasis-color-rgb), 0.24);
  --bs-link-color: #0d6efd;
}

* {
  font-family: 'Pretendard';
  letter-spacing: -0.5px;
}

/********** Container **********/
.container,
.container-fluid,
.container-xxl,
.container-xl,
.container-lg,
.container-md,
.container-sm {
  --bs-gutter-x: 2rem;
  --bs-gutter-y: 0;
  width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-right: auto;
  margin-left: auto;
}

/********** Typography **********/
.font-headline-1 {
  font-size: 40px !important;
  line-height: 52px !important;
}
.font-headline-2 {
  font-size: 32px !important;
  line-height: 40px !important;
}
.font-headline-3 {
  font-size: 28px !important;
  line-height: 36px !important;
}
.font-headline-4 {
  font-size: 26px !important;
  line-height: 32px !important;
}
.font-headline-5 {
  font-size: 24px !important;
  line-height: 30px !important;
}
.font-headline-6 {
  font-size: 20px !important;
  line-height: 28px !important;
}
.font-subtitle {
  font-size: 18px !important;
  line-height: 26px !important;
}
.font-body-1 {
  font-size: 16px !important;
  line-height: 24px !important;
}
.font-body-2 {
  font-size: 15px !important;
  line-height: 22px !important;
}
.font-body-3 {
  font-size: 14px !important;
  line-height: 20px !important;
}
.font-body-4 {
  font-size: 13px !important;
  line-height: 20px !important;
}
.font-caption-1 {
  font-size: 12px !important;
  line-height: 18px !important;
}
.font-caption-2 {
  font-size: 10px !important;
  line-height: 16px !important;
}

/********** Padding **********/
.py-10 {
  padding-top: 10px !important;
  padding-bottom: 10px !important;
}
.pt-10 {
  padding-top: 10px !important;
}

.pb-10 {
  padding-bottom: 10px !important;
}

.py-12 {
  padding-top: 12px !important;
  padding-bottom: 12px !important;
}
.pt-12 {
  padding-top: 12px !important;
}

.pb-12 {
  padding-bottom: 12px !important;
}

.py-100 {
  padding-top: 100px !important;
  padding-bottom: 100px !important;
}
.pt-100 {
  padding-top: 100px !important;
}

.pb-100 {
  padding-bottom: 100px !important;
}

@media all and (min-width: 768px) {
  .py-md-100 {
    padding-top: 100px !important;
    padding-bottom: 100px !important;
  }
  .pt-md-100 {
    padding-top: 100px !important;
  }

  .pb-md-100 {
    padding-bottom: 100px !important;
  }
}

/********** Margin **********/
.my-10 {
  margin-top: 10px !important;
  margin-bottom: 10px !important;
}
.mt-10 {
  margin-top: 10px !important;
}

.mb-10 {
  margin-bottom: 10px !important;
}

.my-12 {
  margin-top: 12px !important;
  margin-bottom: 12px !important;
}
.mt-12 {
  margin-top: 12px !important;
}

.mb-12 {
  margin-bottom: 12px !important;
}

.my-100 {
  margin-top: 100px !important;
  margin-bottom: 100px !important;
}
.mt-100 {
  margin-top: 100px !important;
}

.mb-100 {
  margin-bottom: 100px !important;
}

/**********  **********/
.border-dashed {
  border-style: dashed !important;
}

/********** Image **********/
img {
  display: block;
  width: 100%;
}

/********** Background **********/
.bg-bluegray {
  background-color: var(--bs-blue-gray-50);
}

/********** Badge **********/
.badge {
  display: inline-block;
  padding: 4px 8px;
  font-size: 12px;
  font-weight: 500;
  line-height: 18px;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: 6px;
  background-color: var(--bs-gray-bg);
  color: var(--bs-emphasis-color);
}
.badge.primary {
  background-color: var(--bs-primary-bg-subtle);
  color: var(--bs-primary);
}
.badge-primary {
  background-color: var(--bs-primary-bg-subtle);
  color: var(--bs-primary);
}
.badge.secondary {
  background-color: var(--bs-secondary-bg-subtle);
  color: var(--bs-secondary);
}
.badge-secondary {
  background-color: var(--bs-secondary-bg-subtle);
  color: var(--bs-secondary);
}
.badge.success {
  background-color: var(--bs-success-bg-subtle);
  color: var(--bs-success);
}
.badge-success {
  background-color: var(--bs-success-bg-subtle);
  color: var(--bs-success);
}
.badge.warning {
  background-color: var(--bs-warning-bg-subtle);
  color: var(--bs-warning);
}
.badge-warning {
  background-color: var(--bs-warning-bg-subtle);
  color: var(--bs-warning);
}
.badge.danger {
  background-color: var(--bs-danger-bg-subtle);
  color: var(--bs-danger);
}
.badge-danger {
  background-color: var(--bs-danger-bg-subtle);
  color: var(--bs-danger);
}
.badge.info {
  background-color: var(--bs-info-bg-subtle);
  color: var(--bs-info);
}
.badge-info {
  background-color: var(--bs-info-bg-subtle);
  color: var(--bs-info);
}
.badge.light {
  background-color: var(--bs-light-bg-subtle);
  color: var(--bs-medium-emphasis-color);
}
.badge-light {
  background-color: var(--bs-light-bg-subtle);
  color: var(--bs-medium-emphasis-color);
}
.text-bg-info {
    color: #fff !important;
    background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;
}

/********** Gap **********/
.gap-12 {
  gap: 12px;
}
.gap-24 {
  gap: 24px;
}

/********** Divider **********/
.divider {
  width: 100%;
  height: 1px;
  background-color: var(--bs-border-color);
}

/********** LinkStyle **********/
.link {
  color: var(--bs-link-color);
}
.link_underline {
  color: var(--bs-link-color);
  text-decoration: underline;
}

/********** ListStyle **********/
/* dot */
.list-style.dot > li {
  position: relative;
  padding-left: 10px;
  line-height: 22px;
}
.list-style.dot > li:before {
  content: '';
  position: absolute;
  left: 0;
  top: 8px;
  width: 5px;
  height: 5px;
  border-radius: 50px;
  background-color: var(--bs-gray-700);
}
/* bar */
.list-style.bar > li {
  position: relative;
  padding-left: 14px;
}
.list-style.bar > li:before {
  content: '';
  left: 4px;
  top: 11px;
  position: absolute;
  width: 4px;
  height: 1px;
  background-color: var(--bs-emphasis-color);
}
/* number */
.list-style.number {
  margin-left: 1.75rem;
}
.list-style.number > li {
  list-style: decimal-leading-zero;
}

/********** Icon **********/
.icon-wrap {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 24px;
  height: 24px;
  text-decoration: none;
}

.icon-wrap > i {
  font-size: 20px;
  line-height: 20px;
}

.icon-wrap-sm {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 18px;
  height: 18px;
  text-decoration: none;
}

.icon-wrap-sm > i {
  font-size: 14px;
  line-height: 14px;
}

.icon-wrap-lg {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 44px;
  height: 44px;
  text-decoration: none;
}

.icon-wrap-lg > i {
  font-size: 24px;
  line-height: 24px;
}

/********** Button **********/
/* button */
.btn {
  --bs-btn-padding-x: 0.75rem;
  --bs-btn-padding-y: 0.375rem;
  --bs-btn-font-family: ;
  --bs-btn-font-size: 1rem;
  --bs-btn-line-height: 26px;
  --bs-btn-border-radius: 8px;
}
.btn-primary {
  --bs-btn-color: #fff;
  --bs-btn-bg: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--bs-primary-hover);
  --bs-btn-hover-border-color: var(--bs-primary-hover);
  --bs-btn-focus-shadow-rgb: 128, 202, 255;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--bs-primary-active);
  --bs-btn-active-border-color: var(--bs-primary-active);
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: var(--bs-primary);
  --bs-btn-disabled-border-color: var(--bs-primary);
}
.btn-outline-primary {
  --bs-btn-color: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--bs-primary);
  --bs-btn-hover-border-color: var(--bs-primary);
  --bs-btn-focus-shadow-rgb: 128, 202, 255;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--bs-primary-active);
  --bs-btn-active-border-color: var(--bs-primary-active);
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: var(--bs-primary);
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: var(--bs-primary);
  --bs-gradient: none;
}
.btn-outline-border {
  --bs-btn-color: var(--bs-medium-emphasis-color);
  --bs-btn-border-color: var(--bs-border-color);
  --bs-btn-hover-color: var(--bs-medium-emphasis-color);
  --bs-btn-hover-bg: #fff;
  --bs-btn-hover-border-color: var(--bs-border-color);
  --bs-btn-focus-shadow-rgb: 33, 37, 41;
  --bs-btn-active-color: var(--bs-primary);
  --bs-btn-active-bg: #fff;
  --bs-btn-active-border-color: var(--bs-primary);
  --bs-btn-active-shadow: inset 0 0 0 rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: var(--bs-medium-emphasis-color);
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: var(--bs-medium-emphasis-color);
  --bs-gradient: none;
}
.btn-check + .btn.btn-outline-border:hover {
  --bs-btn-hover-bg: #fff;
  background: var(--bs-btn-hover-bg);
  color: var(--bs-emphasis-color);
  border-color: rgba(var(--bs-primary-rgb), 0.35);
}
.btn-check:checked + .btn.btn-outline-border:hover {
  color: var(--bs-btn-active-color);
  background-color: var(--bs-btn-active-bg);
  border-color: var(--bs-btn-active-border-color);
}
.btn-plaintext {
  --bs-btn-color: var(--bs-medium-emphasis-color);
  --bs-btn-border-color: transparent;
  --bs-btn-hover-color: var(--bs-medium-emphasis-color);
  --bs-btn-hover-bg: transparent;
  --bs-btn-hover-border-color: transparent;
  --bs-btn-focus-shadow-rgb: 176, 190, 197;
  --bs-btn-active-color: var(--bs-medium-emphasis-color);
  --bs-btn-active-bg: var(--bs-blue-gray-50);
  --bs-btn-active-border-color: transparent;
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: #212529;
  --bs-btn-disabled-bg: var(--bs-medium-emphasis-color);
  --bs-btn-disabled-border-color: transparent;
  --bs-gradient: none;
}
.btn-lg,
.btn-group-lg > .btn {
  --bs-btn-padding-y: 1rem;
  --bs-btn-padding-x: 1.5rem;
  --bs-btn-font-size: 1.125rem;
  --bs-btn-border-radius: var(--bs-border-radius-lg);
  line-height: 26px;
  width: 100%;
  font-size: var(--bs-btn-font-size);
}
.btn-sm,
.btn-group-sm > .btn {
  --bs-btn-padding-y: 0.25rem;
  --bs-btn-padding-x: 0.5rem;
  --bs-btn-font-size: 0.875rem;
  --bs-btn-border-radius: var(--bs-border-radius-sm);
  line-height: 20px;
}

.btn-h48 {
  padding: 10px 24px;
}

/* icon button */
.btn--icon_button {
  display: inline-flex;
  align-items: center;
}

.btn.btn--icon_button {
  padding-left: 16px;
  gap: 8px;
}

.btn-sm.btn--icon_button {
  padding-left: 12px;
  gap: 6px;
}

.btn-lg.btn--icon_button {
  justify-content: center;
}

/* btn-text */
.btn-text {
  display: inline-flex;
  align-items: baseline;
  font-size: 16px;
  line-height: 18px;
  font-weight: 600;
}

.btn-text.btn-small {
  font-size: 14px;
  line-height: 20px;
  font-weight: 500;
}

.btn-text.btn-small .icon-wrap-sm {
  width: 14px;
  height: 14px;
}

.btn-text.btn-small .icon-wrap-sm > i {
  font-size: 14px;
  line-height: 14px;
}

.btn-text .text.line {
  border-bottom-width: 1px;
  border-bottom-style: solid;
}

.btn-text-primary,
.btn-text-primary .text.line {
  color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.btn-text-secondary,
.btn-text-secondary .text.line {
  color: var(--bs-medium-emphasis-color);
  border-color: var(--bs-medium-emphasis-color);
}

/* btn-gray */
.btn-gray {
  --bs-btn-color: var(--bs-medium-emphasis-color);
  --bs-btn-bg: var(--bs-gray-bg);
  --bs-btn-border-color: var(--bs-gray-bg);
  --bs-btn-hover-color: var(--bs-medium-emphasis-color);
  --bs-btn-hover-bg: var(--bs-gray-200);
  --bs-btn-hover-border-color: var(--bs-gray-200);
  --bs-btn-focus-shadow-rgb: 128, 202, 255;
  --bs-btn-active-color: var(--bs-medium-emphasis-color);
  --bs-btn-active-bg: var(--bs-gray-300);
  --bs-btn-active-border-color: var(--bs-gray-300);
  --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  --bs-btn-disabled-color: var(--bs-disabled-color);
  --bs-btn-disabled-bg: var(--bs-gray-100);
  --bs-btn-disabled-border-color: var(--bs-gray-100);
}

/* btn-plaintext */
.btn-plaintext {
  display: inline-block;
  padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);
  font-family: var(--bs-btn-font-family);
  font-size: var(--bs-btn-font-size);
  font-weight: var(--bs-btn-font-weight);
  line-height: var(--bs-btn-line-height);
  color: var(--bs-medium-emphasis-color);
  text-align: center;
  text-decoration: none;
  vertical-align: middle;
  cursor: pointer;
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
  border: var(--bs-btn-border-width) solid transparent;
  border-radius: var(--bs-btn-border-radius);
  background-color: transparent;
}

/********** border **********/
.divider-border-top {
  border-top: 10px solid var(--bs-gray-bg);
}

.divider-border-bottom {
  border-bottom: 10px solid var(--bs-gray-bg);
}

.divider-border-left {
  border-left: 10px solid var(--bs-gray-bg);
}

.divider-border-right {
  border-right: 10px solid var(--bs-gray-bg);
}

/* chrome user agent stylesheet의 background-color 해제 */
/* input 선택 시 배경이 하늘색으로 보이는 크롬의 기본스타일을 제거합니다. */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
  transition: background-color 5000s ease-in-out 0s;
}

/********** Form **********/
/* Label */
/* 모든 input label */
.form-label {
  font-size: 16px;
  line-height: 24px;
  font-weight: 500;
  margin-bottom: 4px;
}
.col-form-label {
  font-size: 14px;
  line-height: 24px;
  font-weight: 500;
  margin-bottom: 0px;
  padding: 0;
}

/* 플로팅 input label => 기본상태일 때 color 연하게, position, scale 기본값으로 설정 */
/* form-select는 원래 option이 선택된 상태로 보이는데, form-control과 동일하게 보이기 위해 함께 적용 */
.form-floating > label,
.form-floating > .form-select ~ label {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  height: 100%;
  padding: 1rem 0.75rem;
  overflow: hidden;
  text-align: start;
  text-overflow: ellipsis;
  white-space: nowrap;
  pointer-events: none;
  border: var(--bs-border-width) solid transparent;
  transform-origin: 0 0;
  transform: scale(1) translateY(0) translateX(0);
  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
  color: var(--bs-medium-emphasis-color);
  font-size: 1rem;
}

/* 플로팅 input label => focus시 color 진하게, position, scale 작게 */
.form-floating > .form-control:focus ~ label,
.form-floating > .form-control:not(:placeholder-shown):focus ~ label,
.form-floating > .form-select:focus ~ label {
  color: var(--bs-emphasis-color);
  transform: scale(0.75) translateY(-0.25rem) translateX(0.25rem);
}

/* 플로팅 input label => focus후 value가 있을 때 color 연하게, position, scale 작게 */
.form-floating > .form-control:not(:placeholder-shown) ~ label {
  color: var(--bs-medium-emphasis-color);
  transform: scale(0.75) translateY(-0.25rem) translateX(0.25rem);
}

/* 플로팅 form-select label => option hidden selected가 안보이도록 label backgorund-color 및 position 조절 */
.form-floating > .form-select ~ label {
  width: calc(100% - 48px);
}
.form-floating > .form-select ~ label::after {
  inset: 1.5rem 0.5rem;
  height: 3rem;
  width: 100%;
  border-radius: 0;
  background-color: #fff;
}
.form-floating > .form-select:focus ~ label::after {
  background-color: transparent;
  border-radius: 0;
}

/* 플로팅 form-select label => option값 선택했을 때 */
/* label이 원래 위치로 돌아가지 않도록 addClass 후 onchange javascript 추가 */
.form-floating > label.filled {
  color: var(--bs-medium-emphasis-color);
  transform: scale(0.75) translateY(-0.25rem) translateX(0.25rem);
}
/* option hidden selected를 가리고 있던 label 배경을 투명으로 변경 */
.form-floating > label.filled::after {
  z-index: 0;
  background-color: transparent;
}

/* form-coltrol, form-select */
/* 모든 input => border-radius 변경,  */
/* background-color는 form-divider:after 넣을 때 divider가 가려져서 투명으로 변경 */
.form-control,
.form-select {

  border-radius: 10px;
  background-color: var(--bs-body-bg);
  font-size: 16px;
}

.form-control-sm,
.form-select-sm {
  height: auto;
  border-radius: 8px;
  background-color:  var(--bs-body-bg);
  font-size: 14px;
}
.form-control-lg,
.form-select-lg {
  border-radius: 12px;
  background-color:  var(--bs-body-bg);
  font-size: 18px;
}

/* 모든 input => focus시 border색상 그대로 유지 */
.form-control:focus,
.form-select:focus {
  color: var(--bs-body-color);
  background-color:  var(--bs-body-bg);
  border-color: var(--bs-border-color);
  box-shadow: none;
  outline: 0;
}

/********** Select **********/
/* select color를 placeholder처럼 변경 */
.select--placeholder,
.select--placeholder:focus {
  color: var(--bs-placeholder-color);
  transition: color 0.3s;
}
/* select option은 강조색으로 변경 */
.select--placeholder option {
  color: var(--bs-emphasis-color);
}

.form-control-plaintext {
  padding: 0;
  width: auto;
  min-width: 0;
  color: inherit;
  font-family: inherit;
  font-weight: inherit;
  font-size: inherit;
}

/********** Placeholder **********/
/* 모든 form-control => placeholder color변경 */
.form-control::placeholder,
.form-select::placeholder {
  color: var(--bs-placeholder-color);
}

/* 플로팅 form-control => 'focus'시 placeholder 보이기 위해 color 변경 */
.form-floating > .form-control::placeholder {
  color: transparent;
}
.form-floating > .form-control:focus::placeholder {
  color: var(--bs-placeholder-color);
}
.form-control:read-only {
  color: var(--bs-emphasis-color);
}

/********** input-delete button **********/
.input_wrap {
  position: relative;
  z-index: 1;
}

.input_wrap .input_wrap__btn_delete {
  display: none;
  position: absolute;
  z-index: 5;
  right: 12px;
  top: 14px;
  color: var(--bs-medium-emphasis-color);
  font-size: 20px;
  line-height: 20px;
  cursor: pointer;
}

.form-floating.input_wrap .input_wrap__btn_delete {
  top: 19px;
}

.was-validated .form-control:invalid ~ .input_wrap__btn_delete,
.form-control.is-invalid ~ .input_wrap__btn_delete {
  right: 36px;
}
.was-validated .form-select:invalid ~ .input_wrap__btn_delete,
.form-select.is-invalid ~ .input_wrap__btn_delete {
  right: 36px;
}

/* Search Input */
.form-control--search {
  padding-left: 48px;
  background-color: var(--bs-gray-bg);
  border: var(--bs-border-width) solid var(--bs-gray-bg);
}

.form-control--search::placeholder {
  color: var(--bs-medium-emphasis-color);
}

.form-control--search:focus {
  background-color: var(--bs-gray-bg);
  border-color: var(--bs-gray-bg);
  box-shadow: inset 0 0 0 0 var(--bs-emphasis-color);
}

.form-control--search ~ button {
  position: absolute;
  left: 16px;
  top: 50%;
  transform: translateY(-50%);
  border: 0;
  background-color: transparent;
  color: var(--bs-body-color);
  -webkit-text-fill-color: var(--bs-body-color);
}

/* Invalid */
/* 모든 input valid => border-color 변경 */
.was-validated .form-control:valid,
.form-control.is-valid,
.was-validated .form-select:valid,
.form-select.is-valid {
  border-color: var(--bs-border-color);
}
/* 모든 input valid => focus시 border-color 그대로 유지 */
.was-validated .form-control:valid:focus,
.form-control.is-valid:focus,
.was-validated .form-select:valid:focus,
.form-select.is-valid:focus {
  border-color: var(--bs-border-color);
  box-shadow: none;
}

/* 모든 input invalid => border-color 변경 */
.was-validated .form-control:invalid,
.form-control.is-invalid,
.was-validated .form-select:invalid,
.form-select.is-invalid {
  border-color: var(--bs-border-color);
}
/* 모든 input invalid => focus시 border-color 그대로 유지 */
.was-validated .form-control:invalid:focus,
.form-control.is-invalid:focus,
.was-validated .form-select:invalid:focus,
.form-select.is-invalid:focus {
  border-color: var(--bs-border-color);
  box-shadow: none;
}

/* 모든 form-control invalid => background-image svg color변경 */
/* form-select는 icon이 1개 나와야 함 (error icon) */
.was-validated .form-control:invalid,
.form-control.is-invalid {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23FF3B30'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23FF3B30' stroke='none'/%3e%3c/svg%3e");
}

/* 모든 form-select invalid => background-image svg color 변경*/
/* form-select는 icon이 2개 나와야 함 (arrow down icon, error icon) */
.was-validated .form-select:invalid,
.form-select.is-invalid {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' height='1em' viewBox='0 0 512 512'><path d='M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z'/></svg>"),
    url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23FF3B30'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23FF3B30' stroke='none'/%3e%3c/svg%3e");
}

/* 모든 form-select invalid => focus시 background-image svg color 변경*/
/* form-select는 icon이 2개 나와야 하는데 focus시에는 화살표 모양이 바뀜 (arrow up icon, error icon) */
.was-validated .form-select:invalid:focus,
.form-select.is-invalid:focus {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' height='1em' viewBox='0 0 512 512'><path d='M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z'/></svg>"),
    url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23FF3B30'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23FF3B30' stroke='none'/%3e%3c/svg%3e");
}

/* 플로팅 input invalid => label color 변경 */
.form-floating > .form-control.is-invalid ~ label,
.form-floating > .form-control.is-invalid:focus ~ label,
.form-floating > .form-select.is-invalid ~ label,
.form-floating > .form-select.is-invalid:focus ~ label {
  color: var(--bs-danger);
}

/* Invalid tooltip */
/* 모든 invalid-tooltip => font-size, 위치 변경*/
.invalid-tooltip {
  position: absolute;
  top: unset;
  bottom: -24px;
  left: 12px;
  z-index: 5;
  display: none;
  max-width: 100%;
  padding: 0.25rem 0.5rem;
  margin-top: 0.1rem;
  font-size: 0.75rem;
  color: #fff;
  background-color: var(--bs-danger);
  border-radius: var(--bs-border-radius-sm);
}

/* 모든 invalid-tooltip => 위에 화살표 만들기 */
.invalid-tooltip::before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  top: 0;
  left: 20px;
  transform: translateY(-100%);
  border: 5px solid transparent;
  border-bottom: 6px solid var(--bs-danger);
}

.form-container {
  border-color: var(--bs-border-color);
  border-width: var(--bs-border-width);
  border-style: solid;
  border-radius: 12px;
}

.form-container input,
.form-container select,
.form-container input.is-invalid,
.form-container select.is-invalid {
  border-color: transparent;
}

.form-container > .form-floating.form-divider:after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  z-index: -1;
  transform: translateX(-50%);
  width: calc(100% - 32px);
  height: 1px;
  background-color: #dee2e6;
}

.input_caption {
  color: var(--bs-medium-emphasis-color);
  font-size: 14px;
  line-height: 18px;
}

.input_group {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding-bottom: 16px;
}

/********** Checks & Radios **********/
.form-check {
  min-height: 16px;
  padding-left: 26px;
  margin-bottom: 0;
}

.form-check label {
  display: inline-block;
  font-size: 14px;
  line-height: 20px;
  cursor: pointer;
}

.form-check .form-check-input {
  float: left;
  margin-left: -26px;
}

.form-check-input {
  --bs-form-check-bg: var(--bs-body-bg);
  --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23838587' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  margin-top: 2px;
  vertical-align: top;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-color: var(--bs-body-bg);
  background-image: var(--bs-form-check-bg-image);
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  border: var(--bs-border-width) solid var(--bs-medium-emphasis-color);
  cursor: pointer;
}
.form-check-input[type='checkbox'] {
  border-radius: 0.3em;
}
.form-check-input:focus {
  border-color: var(--bs-medium-emphasis-color);
  box-shadow: unset;
}
.form-check-input:checked {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}
.form-check-input:focus:checked {
  border-color: var(--bs-primary);
}

.form-check-input.no_border {
  --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23838587' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
  border: 0;
  background-color: transparent;
}

.form-check-input.no_border:checked,
.form-check-input.no_border:focus:checked {
  --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%230095ff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
}

/* checkbox */
.form-check-lg {
  display: block;
  min-height: 24px;
  padding-left: 32px;
  cursor: pointer;
}

.form-check-lg label {
  font-size: 16px;
  line-height: 24px;
  cursor: pointer;
}

.form-check-lg .form-check-input {
  float: left;
  margin-left: -32px;
  margin-top: 0;
  border-radius: 6px;
}

.form-check-input-lg {
  width: 24px;
  height: 24px;
  border-radius: 6px;
}

/* Radio */
.form-check-input[type='radio'] {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23838587' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
}
.form-check-input:checked[type=radio] {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
}

/********** Toast **********/
.toast_position {
  position: fixed;
  z-index: 100;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  max-width: 1200px;
  width: calc(100% - 32px);
  display: flex;
  flex-direction: column-reverse;
  gap: 8px;
}
.toast_position.upper_btn {
  bottom: 84px;
}

.toast_wrap {
  width: 100%;
  padding: 14px 16px;
  border-radius: 12px;
  background-color: var(--bs-medium-emphasis-color);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: var(--bs-reverse-emphasis-color);
  font-size: 14px;
  line-height: 18px;
  opacity: 0;
  transition: all 0.3s;
}

.toast_wrap.reveal {
  opacity: 1;
}

.toast_wrap .toast__body {
  display: flex;
  justify-content: start;
  align-items: start;
  gap: 12px;
}

.toast_wrap .icon {
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 24px;
  width: 18px;
  height: 18px;
  background-color: #16c07e;
  font-size: 10px;
  line-height: 10px;
}

.toast_wrap.toast--success .icon {
  background-color: #16c07e;
}

/********** dialog **********/
.dialog_wrap {
  display: none;
  position: fixed;
  z-index: 120;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  padding: 24px;
  max-width: 375px;
  width: calc(100% - 48px);
  max-height: calc(100vh - 48px);
  border-radius: 20px;
  background-color: var(--bs-body-bg);
  color: var(--bs-emphasis-color);
  translate: all 0.3s;
}
.dialog_wrap.dialog_wrap--wide {
  max-width: 600px;
  width: calc(100% - 48px);
}
.dialog_wrap.dialog_wrap--fill {
  max-width: 1200px;
  width: calc(100% - 48px);
}
.dialog_wrap.on {
  display: block;
}
.dialog__title {
  padding-bottom: 24px;
  font-size: 20px;
  line-height: 28px;
  font-weight: 600;
}
.dialog__title .subtitle {
  color: var(--bs-medium-emphasis-color);
  font-size: 16px;
  line-height: 24px;
}
.dialog__content {
  padding-bottom: 16px;
  font-size: 16px;
  line-height: 24px;
  overflow-y: auto;
  max-height: calc(100vh - 188px);
  -ms-overflow-style: none; /* IE and Edge */
  scrollbar-width: none; /* Firefox */
}
.dialog__content::-webkit-scrollbar {
  display: none; /* Chrome, Safari, Opera*/
}

/* 스크롤바 보이는 경우 */
.dialog__content.scrollbar {
  overflow-x: hidden;
  -ms-overflow-style: unset; /* IE and Edge */
  scrollbar-width: unset; /* Firefox */
}
.dialog__content.scrollbar::-webkit-scrollbar {
  display: unset;
  width: 4px;  /* 가로축 스크롤바 폭 너비 */
}
.dialog__content.scrollbar::-webkit-scrollbar-thumb {
  background: rgba(var(--bs-body-color-rgb), 0.2); /* 스크롤바 막대 색상 */
  border: 0; /* 스크롤바 막대 테두리 설정  */
  border-radius: 12px 12px 12px 12px;
}
.dialog__content.scrollbar:hover::-webkit-scrollbar-thumb {
  background: rgba(var(--bs-body-color-rgb), 0.35); /* 스크롤바 막대 색상 */
}
/* 스크롤바 트랙 꾸미기 */
.dialog__content.scrollbar::-webkit-scrollbar-track {
  background: transparent; /* 스크롤바 뒷 배경 색상 */
  padding: 1px;
}


.dialog__bottom .btn {
  padding-top: 10px;
  padding-bottom: 10px;
  border-radius: 12px;
}
.dialog__bottom .close_text_button {
  position: absolute;
  bottom: -24px;
  left: 50%;
  transform: translateX(-50%);
  color: var(--bs-reverse-medium-emphasis-color);
  font-size: 14px;
  line-height: 20px;
  text-decoration: underline;
  cursor: pointer;
}

/********** Bottom Sheet **********/
/* bottom sheet */
.bottom_sheet {
  position: fixed;
  z-index: 101;
  bottom: -100%;
  max-width: 1200px;
  width: 100%;
  background-color: var(--bs-body-bg);
  display: flex;
  flex-direction: column;
  overflow-y: hidden;
  transition: bottom 0.3s;
  border-radius: 24px 24px 0 0;
}

.bottom_sheet.fixed {
  bottom: 0;
}

.bottom_sheet__content {
  max-height: calc(100vh - 280px);
  overflow-y: scroll;
  padding-bottom: 16px;
  -ms-overflow-style: none; /* IE and Edge */
  scrollbar-width: none; /* Firefox */
}
.bottom_sheet__content::-webkit-scrollbar {
  display: none; /* Chrome, Safari, Opera*/
}

/* bottom_sheet--calendar */
.bottom_sheet.bottom_sheet--calendar #datepicker > .ui-datepicker-inline {
  margin: 0 auto;
}
.bottom_sheet--calendar .bottom_sheet__content {
  height: 330px;
}
@media all and (min-width: 768px) {
  .bottom_sheet--calendar .bottom_sheet__content {
    height: 570px;
  }
}

/********** background-dim **********/
.bg_dim {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 100;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  opacity: 0;
  transition: opacity 0.3s;
}
.bg_dim.on {
  display: block;
  opacity: 1;
}
