@charset "UTF-8";
.zoom-warpper {
  display: inline-flex;
  flex-direction: column;
  position: relative;
  user-select: none;
  -webkit-user-select: none;
  -webkit-tap-highlight-color: transparent;
  /** Gắn cho tấm hình gửi vào */
  /** Mặt nạ che tấm hình thumb khi zoom */
  /** Ô nhỏ hiển thị vị trí đang zoom */
  /** Cửa sổ hiển thị ảnh phóng lớn */
  /** Chế độ popup */
  /** Chế độ popup */
  /** Lớp giả dùng để theo dõi các sự kiện chuột */
}

.zoom-warpper .zoom-thumb {
  display: block;
  user-select: none;
}

.zoom-warpper .zoom-mask {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.4);
  opacity: 0;
  transition: opacity 500ms cubic-bezier(0, 0, 0.2, 1) 0ms;
  z-index: 1;
}

.zoom-warpper .zoom-ctrl {
  position: absolute;
  z-index: 2;
  overflow: hidden;
  top: 0;
  left: 0;
  outline: none;
  -webkit-tap-highlight-color: transparent;
  box-shadow: 0 0 0 5px #888, 0px 0px 15px rgba(0, 0, 0, 0.4);
  opacity: 0;
  transition: opacity 500ms cubic-bezier(0, 0, 0.2, 1) 0ms;
  /** image giả bên trong control */
}

.zoom-warpper .zoom-ctrl .zoom-ctrl-img {
  display: block;
}

.zoom-warpper .zoom-popup {
  position: absolute;
  z-index: 3;
  top: 0;
  left: 0;
  overflow: hidden;
  opacity: 0;
  will-change: opacity, transform;
  transform: scale(0);
  pointer-events: none;
  /** Thẻ dùng tạo hiệu ứng */
  /** Tấm hình lớn bên trong popup */
  /** Hiện loading khi image lớn đang được tải xuống */
}

.zoom-warpper .zoom-popup .zoom-popup-effect {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.zoom-warpper .zoom-popup .zoom-popup-img {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  z-index: 1;
  transform-origin: 0 0;
  min-width: 100%;
  min-height: 100%;
}

.zoom-warpper .zoom-popup .zoom-loading-mask {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
  background: transparent;
  /** Icon quay thể hiện việc đang tải */
}

.zoom-warpper .zoom-popup .zoom-loading-mask .zoom-loading {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 64px;
  height: 64px;
}

.zoom-warpper .zoom-popup .zoom-loading-mask .zoom-loading:after,
.zoom-warpper .zoom-popup .zoom-loading-mask .zoom-loading:before,
.zoom-warpper .zoom-popup .zoom-loading-mask .zoom-loading b:after,
.zoom-warpper .zoom-popup .zoom-loading-mask .zoom-loading b:before {
  content: " ";
  position: absolute;
  z-index: 9999;
  display: block;
  border-radius: 50%;
  border: 3px solid currentColor;
  opacity: 0.5;
  top: 50%;
  left: 50%;
  will-change: transform;
  animation: lds 1.2s linear infinite;
}

.zoom-warpper .zoom-popup .zoom-loading-mask .zoom-loading:after {
  width: 64px;
  height: 64px;
  border-color: transparent currentColor currentColor transparent;
}

.zoom-warpper .zoom-popup .zoom-loading-mask .zoom-loading:before {
  width: 48px;
  height: 48px;
  border-color: currentColor currentColor transparent transparent;
  animation-name: lds2;
  opacity: 0.4;
}

.zoom-warpper .zoom-popup .zoom-loading-mask .zoom-loading b:after {
  width: 32px;
  height: 32px;
  border-color: currentColor transparent transparent currentColor;
  opacity: 0.6;
}

.zoom-warpper .zoom-popup .zoom-loading-mask .zoom-loading b:before {
  width: 16px;
  height: 16px;
  border-color: transparent transparent currentColor currentColor;
  animation-name: lds2;
  opacity: 0.3;
}

@keyframes lds {
  0% {
    transform: translate(-50%, -50%) rotate(0);
  }
  100% {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}

@keyframes lds2 {
  0% {
    transform: translate(-50%, -50%) rotate(0);
  }
  100% {
    transform: translate(-50%, -50%) rotate(-360deg);
  }
}

.zoom-warpper.zoom-warpper-mode-popup .zoom-popup {
  margin-left: 16px;
  border: 1px solid #fff;
  border-radius: 2px;
  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.4);
  background: #fff;
}

.zoom-warpper.zoom-warpper-mode-popup .zoom-popup .zoom-loading-mask {
  background: #eee;
}

.zoom-warpper.zoom-warpper-mode-popup .zoom-popup .zoom-popup-effect {
  transform-origin: 0 0 !important;
}

.zoom-warpper.zoom-warpper-mode-popup .zoom-popup .zoom-popup-img {
  transition: transform 500ms cubic-bezier(0, 0, 0.2, 1) 0ms;
}

.zoom-warpper.zoom-warpper-mode-popup.zoom-warpper-mobile .zoom-popup {
  margin-top: 16px;
  margin-left: 0;
}

.zoom-warpper.zoom-warpper-mode-popup.zoom-warpper-show .zoom-mask {
  opacity: 1;
}

.zoom-warpper.zoom-warpper-mode-popup.zoom-warpper-show .zoom-ctrl {
  opacity: 1;
}

.zoom-warpper.zoom-warpper-mode-popup.zoom-warpper-show .zoom-popup {
  opacity: 1;
  top: 0;
  left: 100%;
  transform: scale(1);
  animation: popupani 800ms cubic-bezier(0, 0, 0.2, 1) 0ms;
}

.zoom-warpper.zoom-warpper-mode-popup.zoom-warpper-show.zoom-warpper-mobile .zoom-popup {
  top: 100%;
  left: 0;
  margin-left: 0;
  margin-top: 16px;
  animation: popupani-mobile 800ms cubic-bezier(0, 0, 0.2, 1) 0ms;
}

.zoom-warpper.zoom-warpper-mode-popup.zoom-warpper-hide .zoom-popup {
  animation: popupani-hide 800ms cubic-bezier(0, 0, 0.2, 1) 0ms;
}

.zoom-warpper.zoom-warpper-mode-popup.zoom-warpper-mobile.zoom-warpper-hide .zoom-popup {
  animation: popupani-mobile-hide 800ms cubic-bezier(0, 0, 0.2, 1) 0ms;
}

.zoom-warpper.zoom-warpper-mode-inline {
  overflow: hidden;
}

.zoom-warpper.zoom-warpper-mode-inline .zoom-popup {
  width: 100% !important;
  height: 100% !important;
  transform: scale(1);
  overflow: visible;
}

.zoom-warpper.zoom-warpper-mode-inline.zoom-warpper-show .zoom-popup {
  opacity: 1;
}

.zoom-warpper.zoom-warpper-mode-inline.zoom-warpper-show .zoom-popup .zoom-popup-effect {
  animation: image-zoomout 600ms cubic-bezier(0, 0, 0.2, 1) 0ms;
  transform: scale(1);
}

.zoom-warpper.zoom-warpper-mode-inline.zoom-warpper-hide .zoom-popup {
  opacity: 1;
}

.zoom-warpper.zoom-warpper-mode-inline.zoom-warpper-hide .zoom-popup .zoom-popup-effect {
  animation: image-in 600ms cubic-bezier(0, 0, 0.2, 1) 0ms;
  transform: var(--var-transform);
}

.zoom-warpper .zoom-event {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 5;
  width: 100%;
  height: 100%;
  user-select: none;
  outline: none;
  cursor: crosshair;
  -webkit-tap-highlight-color: transparent;
  -webkit-user-select: none;
}

@keyframes image-zoomout {
  0% {
    transform: var(--var-transform);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes image-in {
  0% {
    transform: scale(1);
  }
  100% {
    transform: var(--var-transform);
  }
}

@keyframes popupani {
  0% {
    opacity: 0;
    top: 50%;
    left: 50%;
  }
  100% {
    opacity: 1;
    top: 0;
    left: 100%;
  }
}

@keyframes popupani-hide {
  0% {
    opacity: 1;
    top: 0;
    left: 100%;
    transform: scale(1);
  }
  100% {
    opacity: 0;
    top: 50%;
    left: 50%;
    transform: scale(1);
  }
}

@keyframes popupani-mobile {
  0% {
    opacity: 0;
    top: 50%;
    left: 0;
  }
  100% {
    opacity: 1;
    top: 100%;
    left: 0;
  }
}

@keyframes popupani-mobile-hide {
  0% {
    opacity: 1;
    top: 100%;
    left: 0;
    transform: scale(1);
  }
  100% {
    opacity: 0;
    top: 50%;
    left: 0;
    transform: scale(1);
  }
}
