:host {
  display: block;
}

canvas {
  display: none;
}

.view {
  visibility: hidden;
  opacity: 0;
  height: 0;
  overflow: hidden;
  transition: all 300ms ease-in-out;
}
.view.visible {
  visibility: visible;
  opacity: 1;
  height: initial;
  overflow: visible;
}
.view .cropper {
  position: relative;
  width: 100%;
}
.view .cropper img {
  width: 100%;
  display: block;
  margin: 0 auto;
}
.view .cropper .backdrop {
  backdrop-filter: saturate(0.5);
  backdrop-filter: brightness(0.5);
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}
.view .cropper .crop {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  outline: 2px dashed white;
  box-shadow: black 0 0 0px 2px;
  backdrop-filter: saturate(2);
  backdrop-filter: brightness(2);
  cursor: move;
}
.view .cropper .crop > div {
  width: 20px;
  height: 20px;
  background-color: white;
  border: 2px solid rgba(0, 0, 0, 0.5);
  position: absolute;
}
.view .cropper .crop > div.nw, .view .cropper .crop > div.ne {
  top: -17px;
}
.view .cropper .crop > div.ne, .view .cropper .crop > div.se {
  right: -17px;
}
.view .cropper .crop > div.se, .view .cropper .crop > div.sw {
  bottom: -17px;
}
.view .cropper .crop > div.sw, .view .cropper .crop > div.nw {
  left: -17px;
}
.view .cropper .crop > div.nw, .view .cropper .crop > div.se {
  cursor: nwse-resize;
}
.view .cropper .crop > div.ne, .view .cropper .crop > div.sw {
  cursor: nesw-resize;
}

dnn-modal {
  --max-width: 512px;
}