form {
  .form-group {
    margin-bottom: 1rem;
  }

  label {
    margin-bottom: 0.25rem;
    font-weight: bold;
  }

  .form-check {
    label {
      font-weight: normal;
    }

    .form-check-input:focus {
      border-color: var(--bs-focus-ring-color);
      outline: 0;
      box-shadow: unset;
    }
  }

  .form-check:last-of-type {
    margin-bottom: 1.5rem;
  }

  .required:not(.form-group)::after {
    content: "*";
    color: var(--bs-danger);
    margin-left: 0.1rem;
  }

  .helptext {
    margin-top: 0.25rem;
    font-size: 0.875em;
    color: var(--bs-secondary-color);
  }

  input:not([type="radio"]):not([type="checkbox"]),
  .form-control,
  textarea,
  select {
    padding: 0.75rem 1rem;
    height: unset;
    box-shadow: unset;

    &:focus {
      box-shadow: unset;
    }
  }

  input[type="checkbox"] {
    width: 1rem;
    height: 1rem;
  }

  input[type="radio"] {
    width: 1.25rem;
    height: 1.25rem;
    margin: 0.1rem 0.5rem 0.2rem 0;
    padding: 0;
    border: 1px solid var(--bs-border-color);
    outline: none;
    vertical-align: middle;
    appearance: none;
    border-radius: .5rem;

    &:checked {
      background-color: var(--bs-primary);
      border-color: var(--bs-primary);
      box-shadow: inset 0 0 0 0.2rem #fff;
    }
  }

  textarea {
    resize: vertical;
  }

  select {
    padding: 0.75rem 2.5rem 0.75rem 1rem;
    appearance: none;
    background-clip: padding-box;
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%2716%27%20height%3D%2716%27%20fill%3D%27currentColor%27%20class%3D%27bi%20bi-chevron-down%27%20viewBox%3D%270%200%2016%2016%27%3E%3Cpath%20fill-rule%3D%27evenodd%27%20d%3D%27M1.646%204.646a.5.5%200%200%201%20.708%200L8%2010.293l5.646-5.647a.5.5%200%200%201%20.708.708l-6%206a.5.5%200%200%201-.708%200l-6-6a.5.5%200%200%201%200-.708z%27%2F%3E%3C%2Fsvg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    background-size: 1rem 0.75rem;
  }

  select.is-invalid,
  input:not([type="radio"]):not([type="checkbox"]).is-invalid,
  .form-control.is-invalid,
  textarea.is-invalid {
    padding-right: 2.5rem;
    background-color: unset;
    background-image: var(--addgene-form-invalid-icon);
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 1.5rem;
  }

  textarea.is-invalid {
    background-position: right 0.75rem top 0.75rem !important;
  }

  .form-control.is-invalid:focus {
    box-shadow: unset;
  }

  .invalid-feedback .errorlist {
    list-style: none;
    padding-left: 0;
    margin-bottom: 0;

    li {
      background-color: unset;
      border: unset;
      border-radius: unset;
      padding: 0;
      margin-bottom: 0.1rem;
    }
  }

  input.is-invalid:not([type="radio"]):not([type="checkbox"]),
  select.is-invalid,
  textarea.is-invalid {
    margin-bottom: 0.25rem;
  }
}

.was-validated {
  select:invalid,
  input:not([type="radio"]):not([type="checkbox"]):invalid,
  .form-control:invalid,
  textarea:invalid {
    padding-right: 2.5rem;
    background-color: unset;
    background-image: var(--addgene-form-invalid-icon);
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 1.5rem;
  }

  .form-control:invalid:focus,
  .form-control.is-invalid:focus {
    box-shadow: unset;
  }

  .form-control:valid,
  .form-control.is-valid {
    border-color: unset;
    padding-right: unset;
    background-image: none;
  }

  .form-control:valid:focus,
  .form-control.is-valid:focus {
    border-color: unset;
    box-shadow: unset;
  }
}
