@keyframes passing- {
  0% {
    opacity:0;
    transform:translateY(40px)
  }
  30% {
    opacity:1;
    transform:translateY(0px)
  }
  100% {
    opacity:0;
    transform:translateY(-40px)
  } 
} 
@keyframes slide-in {
  0% {
    opacity:0;
    transform:translateY(40px)
  } 
  30% {
    opacity:1;
    transform:translateY(0px)
  }
}
@keyframes pulse {
  0% {
    transform:scale(1)
  } 
  10% {
    transform:scale(1.1)
  } 
  20% {
    transform:scale(1)
  } 
} 

.dropzone,.dropzone * {
  box-sizing:border-box
} 
.dropzone {
  min-height:150px;
  border:1px solid rgba(0,0,0,.8);
  border-radius:5px;
  padding:20px 20px
} 
.dropzone.dz-clickable {
  cursor:pointer
} 
.dropzone.dz-clickable * {
  cursor:default
} 
.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message * {
  cursor:pointer
} 
.dropzone.dz-started .dz-message {
  display:none
} 
.dropzone.dz-drag-hover {
  border-style:solid
} 
.dropzone.dz-drag-hover .dz-message {
  opacity:.5
} 
.dropzone .dz-message {
  text-align:center;
  margin:2em 0
} 
.dropzone .dz-message .dz-button {
  background:none;
  color:inherit;
  border:none;
  padding:0;
  font:inherit;
  cursor:pointer;
  outline:inherit
} 
.dropzone .dz-preview {
  position:relative;
  display:inline-block;
  vertical-align:top;
  margin:16px;
  min-height:100px
} 
.dropzone .dz-preview:hover {
  z-index:1000
} 
.dropzone .dz-preview:hover .dz-details {
  opacity:1
} 
.dropzone .dz-preview.dz-file-preview .dz-image {
  border-radius:20px;
  background:#999;
  background:linear-gradient(to bottom, #eee, #ddd)
} 
.dropzone .dz-preview.dz-file-preview .dz-details {
  opacity:1
} 
.dropzone .dz-preview.dz-image-preview {
  background:#fff
} 
.dropzone .dz-preview.dz-image-preview .dz-details {
  transition:opacity .2s linear
} 
.dropzone .dz-preview .dz-remove {
  font-size:14px;
  text-align:center;
  display:block;
  cursor:pointer;
  border:none
} 
.dropzone .dz-preview .dz-remove:hover {
  text-decoration:underline
} 
.dropzone .dz-preview:hover .dz-details {
  opacity:1
} 
.dropzone .dz-preview .dz-details {
  z-index:20;
  position:absolute;
  top:0;
  left:0;
  opacity:0;
  font-size:13px;
  min-width:100%;
  max-width:100%;
  padding:2em 1em;
  text-align:center;
  color:rgba(0,0,0,.9);
  line-height:150%
} 
.dropzone .dz-preview .dz-details .dz-size {
  margin-bottom:1em;
  font-size:16px
} 
.dropzone .dz-preview .dz-details .dz-filename {
  white-space:nowrap
} 
.dropzone .dz-preview .dz-details .dz-filename:hover span {
  border:1px solid rgba(200,200,200,.8);
  background-color:rgba(255,255,255,.8)
} 
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
  overflow:hidden;
  text-overflow:ellipsis
} 
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
  border:1px solid transparent
} 
.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span {
  background-color:rgba(255,255,255,.4);
  padding:0 .4em;
  border-radius:3px
} 
.dropzone .dz-preview:hover .dz-image img {
  transform:scale(1.05, 1.05);
  filter:blur(8px)
} 
.dropzone .dz-preview .dz-image {
  border-radius:20px;
  overflow:hidden;
  width:120px;
  height:120px;
  position:relative;
  display:block;
  z-index:10
} 
.dropzone .dz-preview .dz-image img {
  display:block
} 
.dropzone .dz-preview.dz-success .dz-success-mark {
  animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)
} 
.dropzone .dz-preview.dz-error .dz-error-mark {
  opacity:1;
  animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)
} 
.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark {
  pointer-events:none;
  opacity:0;
  z-index:500;
  position:absolute;
  display:block;
  top:50%;
  left:50%;
  margin-left:-27px;
  margin-top:-27px;
  background:rgba(0,0,0,.8);
  border-radius:50%
} 
.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg {
  display:block;
  width:54px;
  height:54px;
  fill:#fff
} 
.dropzone .dz-preview.dz-processing .dz-progress {
  opacity:1;
  transition:all .2s linear
} 
.dropzone .dz-preview.dz-complete .dz-progress {
  opacity:0;
  transition:opacity .4s ease-in
} 
.dropzone .dz-preview:not(.dz-processing) .dz-progress {
  animation:pulse 6s ease infinite
} 
.dropzone .dz-preview .dz-progress {
  opacity:1;
  z-index:1000;
  pointer-events:none;
  position:absolute;
  height:20px;
  top:50%;
  margin-top:-10px;
  left:15%;
  right:15%;
  border:3px solid rgba(0,0,0,.8);
  background:rgba(0,0,0,.8);
  border-radius:10px;
  overflow:hidden
} 
.dropzone .dz-preview .dz-progress .dz-upload {
  background:#fff;
  display:block;
  position:relative;
  height:100%;
  width:0;
  transition:width 300ms ease-in-out;
  border-radius:17px
} 
.dropzone .dz-preview.dz-error .dz-error-message {
  display:block
} 
.dropzone .dz-preview.dz-error:hover .dz-error-message {
  opacity:1;
  pointer-events:auto
} 
.dropzone .dz-preview .dz-error-message {
  pointer-events:none;
  z-index:1000;
  position:absolute;
  display:block;
  display:none;
  opacity:0;
  transition:opacity .3s ease;
  border-radius:8px;
  font-size:13px;
  top:130px;
  left:-10px;
  width:140px;
  background:#b10606;
  padding:.5em 1em;
  color:#fff
} 
.dropzone .dz-preview .dz-error-message:after {
  content:"";
  position:absolute;
  top:-6px;
  left:64px;
  width:0;
  height:0;
  border-left:6px solid transparent;
  border-right:6px solid transparent;
  border-bottom:6px solid #b10606
}
/* Product Images Dropzone - Hide file previews since we show images directly */
[data-controller="product-images-dropzone"] .dz-preview {
  display: none !important;
}

/* Remove default dropzone styling for product images */
[data-controller="product-images-dropzone"].dropzone {
  min-height: 0;
  border: none;
  padding: 0;
}
