/* Keep dialog and overlay timing consistent, including Bootstrap's removal callbacks. */
:root { --sabiz-modal-duration: 200ms; }
.modal.fade { transition: opacity var(--sabiz-modal-duration) ease; }
.modal.fade .modal-dialog { transform: none; transition: none; }
.modal-backdrop.fade, .offcanvas-backdrop.fade {
  transition: opacity var(--sabiz-modal-duration) ease;
}

dialog[open]:not(.sd-mortgage-drawer) {
  animation: sabiz-modal-in var(--sabiz-modal-duration) ease both;
}
dialog::backdrop {
  animation: sabiz-modal-in var(--sabiz-modal-duration) ease both;
}
dialog.is-closing::backdrop {
  animation: sabiz-modal-out var(--sabiz-modal-duration) ease both;
}
@keyframes sabiz-modal-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes sabiz-modal-out {
  from { opacity: var(--sabiz-overlay-opacity, 1); }
  to { opacity: 0; }
}

/* GLightbox waits for the media animation before removing its overlay. */
.glightbox-container .goverlay.gfadeIn,
.glightbox-container .goverlay.gfadeOut {
  animation-duration: var(--sabiz-modal-duration);
  animation-timing-function: ease;
  animation-fill-mode: both;
}
@media (prefers-reduced-motion: reduce) {
  :root { --sabiz-modal-duration: 0.01ms; }
  .modal.fade, .modal.fade .modal-dialog,
  .modal-backdrop.fade, .offcanvas-backdrop.fade { transition: none; }
}
