virtual-box
{
  box-sizing: border-box;
  user-select: none;
}

.v-mark{display: none;}
.v-mark + label {
  position: relative;
  display: flex;
  margin: 0.3em 0;
  cursor:pointer;
  align-items: center;
  color: var(--text-color);
  transition: color 250ms cubic-bezier(0.4, 0, 0.23, 1);
  width:max-content;
}
.v-mark + label > virtual-box {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-right: 0.5em;
  width: 1em;
  height: 1em;
  background: transparent;
  border: 2px solid var(--v-mark-background-color);
  border-radius: 2px;
  cursor: pointer;
  transition: all 250ms cubic-bezier(0.4, 0, 0.23, 1);
}
.v-mark:checked + label,
.v-mark + label:hover,
.v-mark:focus + label {
  color: var(--text-color-selected);
}
.v-mark + label:hover > virtual-box,
.v-mark:focus + label > virtual-box {
  background: rgba(0, 0, 0, 0.1);
}

.v-mark:checked + label > virtual-box {
  border: 0.5em solid var(--v-mark-background-color);
  animation: v-mark-shrink-bounce 200ms cubic-bezier(0.4, 0, 0.23, 1);
}
.v-mark:checked + label > virtual-box:before {
  box-sizing: unset;
  content: "";
  position: absolute;
  top: 0.7em;
  left: 0.1em;
  border-right: 3px solid transparent;
  border-bottom: 3px solid transparent;
  transform: rotate(45deg);
  transform-origin: 0% 100%;
  animation: v-mark-checkbox-check 125ms 250ms cubic-bezier(0.4, 0, 0.23, 1) forwards;
}

@keyframes v-mark-shrink-bounce
{
  0%   {transform: scale(1.00);}
  33%  {transform: scale(0.85);}
  100% {transform: scale(1.00);}
}
@keyframes v-mark-checkbox-check {
  0% {
    width: 0;
    height: 0;
    border-color: var(--v-mark-color,white);
    transform: translate3d(0, 0, 0) rotate(45deg);
  }
  33% {
    width: 0.2em;
    height: 0;
    transform: translate3d(0, -0.2em, 0) rotate(45deg);
  }
  100% {
    width: 0.2em;
    height: 0.5em;
    border-color: var(--v-mark-color,white);
    transform: translate3d(0, -0.7em, 0) rotate(45deg);
  }
}