/**
 * LIMS SweetAlert2 theme — Bootstrap 5 / styles.css 정합
 * 로드 순서: sweetalert2.min.css → styles.css(및 lims 테마) → 본 파일
 */

:root,
[data-bs-theme='light'] {
  --swal2-outline: 0 0 0 0.1rem rgba(var(--bs-primary-rgb, 89, 85, 209), 0.5);
  --swal2-backdrop: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.45);
  --swal2-width: 28em;
  --swal2-padding: 0 0 1.5em;
  --swal2-border: var(--bs-border-width, 1px) solid var(--bs-border-color, #dadadad6);
  --swal2-border-radius: var(--bs-border-radius-lg, 0.625rem);
  --swal2-background: var(--bs-body-bg, #fff);
  --swal2-color: var(--bs-body-color, #696981);
  --swal2-title-padding: 1.25em 1.5em 0;
  --swal2-html-container-padding: 0.75em 1.5em 0.25em;
  --swal2-input-border: var(--bs-border-width, 1px) solid var(--bs-border-color, #dadadad6);
  --swal2-input-border-radius: var(--bs-border-radius, 0.375rem);
  --swal2-input-box-shadow: none;
  --swal2-input-background: var(--bs-body-bg, #fff);
  --swal2-input-hover-box-shadow: none;
  --swal2-input-focus-border: var(--bs-border-width, 1px) solid var(--bs-primary, #5955d1);
  --swal2-input-focus-box-shadow: 0 0.1rem 0.3rem 0 rgba(var(--bs-primary-rgb, 89, 85, 209), 0.2),
    0 0 0 1px var(--bs-primary, #5955d1);
  --swal2-progress-step-background: var(--bs-primary-border-subtle, #d6d5f4);
  --swal2-validation-message-background: var(--bs-danger-bg-subtle, #fff3f3);
  --swal2-validation-message-color: var(--bs-danger-text-emphasis, #631616);
  --swal2-footer-border-color: var(--bs-border-color, #dadadad6);
  --swal2-timer-progress-bar-background: rgba(var(--bs-primary-rgb, 89, 85, 209), 0.35);
  --swal2-close-button-color: var(--bs-secondary-color, rgba(105, 105, 129, 0.75));
  --swal2-close-button-font-size: 1.75em;
  --swal2-actions-margin: 1.25em auto 0;
  --swal2-actions-gap: 0.5rem;
  --swal2-confirm-button-border-radius: 8px;
  --swal2-confirm-button-background-color: var(--bs-primary, #5955d1);
  --swal2-confirm-button-color: #fff;
  --swal2-deny-button-border-radius: 8px;
  --swal2-deny-button-background-color: var(--bs-danger, #f83636);
  --swal2-deny-button-color: #fff;
  --swal2-cancel-button-border-radius: 8px;
  --swal2-cancel-button-background-color: var(--bs-secondary, #29294b);
  --swal2-cancel-button-color: #fff;
  --swal2-toast-box-shadow: var(--bs-box-shadow-lg, 0 0.26rem 1.126rem 0 rgba(45, 42, 60, 0.15));
}

[data-bs-theme='dark'] {
  --swal2-background: var(--bs-body-bg, #1e1e1e);
  --swal2-color: var(--bs-body-color, #999);
  --swal2-border: var(--bs-border-width, 1px) solid var(--bs-border-color, #333);
  --swal2-input-background: var(--bs-body-bg, #1e1e1e);
  --swal2-input-focus-border: var(--bs-border-width, 1px) solid var(--bs-primary, #5955d1);
  --swal2-validation-message-background: var(--bs-danger-bg-subtle, #320b0b);
  --swal2-validation-message-color: var(--bs-danger-text-emphasis, #fb8686);
  --swal2-footer-border-color: var(--bs-border-color, #333);
  --swal2-close-button-color: var(--bs-secondary-color, rgba(153, 153, 153, 0.75));
}

/* 팝업·타이포 */
div:where(.swal2-container) div:where(.swal2-popup) {
  font-family: var(--bs-body-font-family, 'Pretendard', sans-serif);
  font-size: var(--bs-body-font-size, 0.875rem);
  font-weight: var(--bs-body-font-weight, 500);
  box-shadow: var(--bs-box-shadow-lg, 0 0.26rem 1.126rem 0 rgba(45, 42, 60, 0.15));
}

div:where(.swal2-container) h2:where(.swal2-title) {
  color: var(--bs-heading-color, #0c243c);
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.4;
}

div:where(.swal2-container) div:where(.swal2-html-container) {
  font-size: var(--bs-body-font-size, 0.875rem);
  font-weight: var(--bs-body-font-weight, 500);
  line-height: var(--bs-body-line-height, 1.6);
  color: var(--bs-body-color, #696981);
}

[data-bs-theme='dark'] div:where(.swal2-container) h2:where(.swal2-title) {
  color: var(--bs-heading-color, #bcbcbc);
}

/* 입력 — .form-control 정합 */
div:where(.swal2-container) input:where(.swal2-input),
div:where(.swal2-container) input:where(.swal2-file),
div:where(.swal2-container) textarea:where(.swal2-textarea),
div:where(.swal2-container) select:where(.swal2-select) {
  width: calc(100% - 3em);
  margin: 0.75em 1.5em 0.25em;
  padding: 0.532rem 1.2rem;
  font-size: var(--bs-body-font-size, 0.875rem);
  font-weight: var(--bs-body-font-weight, 500);
  line-height: 1.6;
  color: var(--bs-body-color);
  background-color: var(--bs-body-bg);
  border: var(--bs-border-width) solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  box-shadow: none;
}

div:where(.swal2-container) input:where(.swal2-input),
div:where(.swal2-container) input:where(.swal2-file) {
  height: auto;
  min-height: calc(0.532rem * 2 + 1.6em);
}

div:where(.swal2-container) textarea:where(.swal2-textarea) {
  min-height: 6em;
  padding: 0.532rem 1.2rem;
}

div:where(.swal2-container) input:where(.swal2-input)::placeholder,
div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder {
  color: var(--bs-body-color);
  opacity: 0.55;
}

div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,
div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror {
  border-color: var(--bs-danger, #f83636) !important;
  box-shadow: 0 0 0 1px var(--bs-danger, #f83636) !important;
}

div:where(.swal2-container) label:where(.swal2-input-label) {
  font-size: var(--bs-body-font-size, 0.875rem);
  font-weight: 500;
  color: var(--bs-body-color);
}

div:where(.swal2-container) div:where(.swal2-validation-message) {
  font-size: var(--bs-body-font-size, 0.875rem);
  font-weight: 500;
  border-radius: var(--bs-border-radius);
}

div:where(.swal2-container) div:where(.swal2-validation-message)::before {
  background-color: var(--bs-danger, #f83636);
}

/* 버튼 — .btn 정합 */
div:where(.swal2-container) div:where(.swal2-actions) {
  gap: var(--swal2-actions-gap, 0.5rem);
  padding: 0 1.5em;
}

div:where(.swal2-container) button:where(.swal2-styled) {
  margin: 0;
  padding: 0.532rem 1.2rem;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.5;
  border-radius: 8px;
  box-shadow: none;
  transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out,
    border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
}

div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):hover {
  background-color: #4c48b2;
}

div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):active {
  background-color: #4744a7;
}

div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):hover {
  background-color: #d32e2e;
}

div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):active {
  background-color: #c62b2b;
}

div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):hover {
  background-color: #232340;
}

div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):active {
  background-color: #21213c;
}

div:where(.swal2-container) button:where(.swal2-styled):focus-visible {
  outline: 0;
  box-shadow: 0 0 0 0.1rem rgba(var(--bs-primary-rgb, 89, 85, 209), 0.5);
}

div:where(.swal2-container) button:where(.swal2-styled)[disabled]:not(.swal2-loading) {
  opacity: 0.65;
}

div:where(.swal2-container) button:where(.swal2-close):hover {
  color: var(--bs-danger, #f83636);
}

div:where(.swal2-container) div:where(.swal2-loader) {
  border-color: var(--bs-primary, #5955d1) transparent var(--bs-primary, #5955d1) transparent;
}

div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step,
div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step {
  background: var(--bs-primary, #5955d1);
}

div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line {
  background: var(--bs-primary, #5955d1);
}

div:where(.swal2-icon).swal2-error {
  border-color: var(--bs-danger, #f83636);
  color: var(--bs-danger, #f83636);
}

div:where(.swal2-icon).swal2-error [class^='swal2-x-mark-line'] {
  background-color: var(--bs-danger, #f83636);
}

div:where(.swal2-icon).swal2-warning {
  border-color: var(--bs-warning, #f5a70d);
  color: var(--bs-warning, #f5a70d);
}

div:where(.swal2-icon).swal2-info {
  border-color: var(--bs-info, #7008e7);
  color: var(--bs-info, #7008e7);
}

div:where(.swal2-icon).swal2-success {
  border-color: var(--bs-success, #009966);
  color: var(--bs-success, #009966);
}

div:where(.swal2-icon).swal2-success [class^='swal2-success-line'] {
  background-color: var(--bs-success, #009966);
}

/* 토스트 */
.swal2-toast {
  border: var(--bs-border-width, 1px) solid var(--bs-border-color, #dadadad6);
  border-radius: var(--bs-border-radius-lg, 0.625rem);
}

.swal2-toast h2:where(.swal2-title) {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--bs-heading-color, #0c243c);
}

.swal2-toast div:where(.swal2-html-container) {
  font-size: 0.875rem;
}

.swal2-toast button:where(.swal2-styled) {
  padding: 0.4rem 0.85rem;
  font-size: 0.8125rem;
}
