@import '../../_style/animation/variables.scss';

$md-radio-size: 20px;
$md-radio-touch-size: 48px;

.md-radio {
  width: auto;
  margin: 16px 16px 16px 0;
  display: inline-flex;
  position: relative;

  &:not(.md-disabled) {
    cursor: pointer;

    .md-radio-label {
      cursor: pointer;
    }
  }

  .md-radio-container {
    width: $md-radio-size;
    min-width: $md-radio-size;
    height: $md-radio-size;
    position: relative;
    border: 2px solid transparent;
    border-radius: 50%;
    transition: $md-transition-stand;
    border-color: var(--md-text-accent);

    &:focus {
      outline: none;
    }

    &::before,
    &::after {
      position: absolute;
      transition: $md-transition-drop;
      content: ' ';
    }

    &::before {
      width: $md-radio-touch-size;
      height: $md-radio-touch-size;
      top: 50%;
      left: 50%;
      z-index: 11;
      border-radius: 50%;
      transform: translate(-50%, -50%);
    }

    &::after {
      position: absolute;
      top: 3px;
      right: 3px;
      bottom: 3px;
      left: 3px;
      border-radius: 50%;
      opacity: 0;
      transform: scale3d(0.38, 0.38, 1);
      content: ' ';
    }

    .md-ripple {
      width: $md-radio-touch-size !important;
      height: $md-radio-touch-size !important;
      top: 50% !important;
      left: 50% !important;
      transform: translate(-50%, -50%);
      border-radius: 50%;
    }

    input {
      position: absolute;
      left: -999em;
    }
  }

  .md-radio-label {
    height: $md-radio-size;
    padding-left: 16px;
    position: relative;
    line-height: $md-radio-size;
  }
}

.md-radio.md-disabled {
  cursor: default;
  opacity: 0.38;

  .md-radio-container {
    border-color: var(--md-disabled);
  }

  &.md-checked,
  &.md-checked.md-primary {
    .md-radio-container {
      border-color: var(--md-disabled);

      &::after {
        background-color: var(--md-disabled);
      }
    }
  }
}

.md-radio.md-checked {
  .md-radio-container {
    border-color: var(--md-secondary);

    &::after {
      opacity: 1;
      transform: scale3d(1, 1, 1);
      transition: $md-transition-stand;
      background-color: var(--md-secondary);
    }
  }

  .md-ripple {
    color: var(--md-secondary);
  }
}

.md-radio.md-required {
  label::after {
    position: absolute;
    top: 2px;
    right: 0;
    transform: translateX(calc(100% + 2px));
    content: '*';
    line-height: 1em;
    vertical-align: top;
  }
}

.md-radio.md-checked.md-primary {
  .md-radio-container {
    border-color: var(--md-primary);

    &::after {
      background-color: var(--md-primary);
    }
  }

  .md-ripple {
    color: var(--md-primary);
  }
}
