// Variables
$circle-radius: 14px;
$circle-diameter: $circle-radius * 2;
// Circumference ~ (2*PI*R). We reduced the number a little to create a snappier interaction
$circle-circumference: 82;
$circle-stroke-width: 2px;

// Keyframes
@keyframes collapse {
  from {
    transform: scale(1);
  }

  to {
    transform: scale(0);
  }
}

@keyframes expand {
  from {
    transform: scale(0);
  }

  to {
    transform: scale(1);
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

.hold-to-reveal-button {
  // Shared styles
  &__absolute-fill {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
  }

  &__icon {
    height: $circle-diameter;
    width: $circle-diameter;
  }

  &__circle-shared {
    fill: transparent;
    stroke-width: $circle-stroke-width;
  }

  // Class styles
  &__button-hold {
    padding: 6px 13px 6px 9px !important;
    transform: scale(1) !important;
    transition: 0.5s transform !important;

    &:active {
      background-color: var(--color-primary-default) !important;
      transform: scale(1.05) !important;

      .hold-to-reveal-button__circle-foreground {
        stroke-dashoffset: 0 !important;
      }

      .hold-to-reveal-button__lock-icon-container {
        opacity: 0 !important;
      }
    }
  }

  &__absolute-fill {
    @extend .hold-to-reveal-button__absolute-fill;
  }

  &__icon-container {
    @extend .hold-to-reveal-button__icon;

    position: relative;
  }

  &__main-icon-show {
    animation: 0.4s fadeIn 1.2s forwards;
  }

  &__invisible {
    opacity: 0;
  }

  &__circle-svg {
    @extend .hold-to-reveal-button__icon;

    transform: rotate(-90deg);
  }

  &__circle-background {
    @extend .hold-to-reveal-button__circle-shared;

    stroke: var(--color-primary-alternative);
  }

  &__circle-foreground {
    @extend .hold-to-reveal-button__circle-shared;

    stroke: var(--color-primary-inverse);
    stroke-dasharray: $circle-circumference;
    stroke-dashoffset: $circle-circumference;
    transition: 1s stroke-dashoffset;
  }

  &__lock-icon-container {
    @extend .hold-to-reveal-button__absolute-fill;

    transition: 0.3s opacity;
    opacity: 1;
  }

  &__lock-icon {
    width: 7.88px;
    height: 9px;
  }

  &__unlock-icon-hide {
    animation: 0.3s collapse 1s forwards;
  }

  &__circle-static-outer-container {
    animation: 0.25s collapse forwards;
  }

  &__circle-static-outer {
    fill: var(--color-primary-inverse);
  }

  &__circle-static-inner-container {
    animation: 0.125s collapse forwards;
  }

  &__circle-static-inner {
    fill: var(--color-primary-default);
  }

  &__unlock-icon-container {
    @extend .hold-to-reveal-button__absolute-fill;

    display: flex;
    align-items: center;
    justify-content: center;
    transform: scale(0);
    animation: 0.175s expand 0.2s forwards;
  }

  &__unlock-icon {
    width: 14px;
    height: 11px;
  }
}
