/* Dialog Animations */
@keyframes dialog-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes dialog-fade-out {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@keyframes dialog-zoom-in {
  from {
    opacity: 0;
    transform: translate(-50%, -48%) scale(0.96);
  }
  to {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
}

@keyframes dialog-zoom-out {
  from {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
  to {
    opacity: 0;
    transform: translate(-50%, -48%) scale(0.96);
  }
}

@keyframes dialog-slide-in {
  from {
    transform: translate(-50%, -48%);
  }
  to {
    transform: translate(-50%, -50%);
  }
}

@keyframes dialog-slide-out {
  from {
    transform: translate(-50%, -50%);
  }
  to {
    transform: translate(-50%, -48%);
  }
}

/* Animation Classes */
[data-state="open"].animate-in {
  animation-duration: 200ms;
  animation-fill-mode: both;
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
}

[data-state="closed"].animate-out {
  animation-duration: 200ms;
  animation-fill-mode: both;
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
}

[data-state="open"].fade-in-0 {
  animation-name: dialog-fade-in;
}

[data-state="closed"].fade-out-0 {
  animation-name: dialog-fade-out;
}

[data-state="open"].zoom-in-95 {
  animation-name: dialog-zoom-in;
}

[data-state="closed"].zoom-out-95 {
  animation-name: dialog-zoom-out;
}

[data-state="open"].slide-in-from-left-1\/2 {
  animation-name: dialog-slide-in;
}

[data-state="open"].slide-in-from-top-\[48\%\] {
  animation-name: dialog-slide-in;
}

[data-state="closed"].slide-out-to-left-1\/2 {
  animation-name: dialog-slide-out;
}

[data-state="closed"].slide-out-to-top-\[48\%\] {
  animation-name: dialog-slide-out;
}

/* Prevent body scroll when dialog is open */
body[data-dialog-open="true"] {
  overflow: hidden;
}