.m-form-element {
  display: grid;
  gap: 0.5rem;
}

  /* Error state for form fields */

  .m-form-element.has-error .a-text-field__element {
      border-color: var(--color-error, #f44336);
    }

  .m-form-element--label-inline .m-form-element__header {
      display: flex;
    }

  /* Display flex when header contains a prefix to put prefix and input side by side */

  .m-form-element__header:has(.m-form-element__prefix) {
      display: flex;
      flex-wrap: wrap;
      gap: 0;
    }

  .m-form-element__header:has(.m-form-element__prefix) .m-form-element__label {
        flex-basis: 100%;
        width: 100%;
      }

  .m-form-element--label-above .m-form-element__label .m-form-element-label {
        position: relative;
        z-index: 12;
        margin-bottom: -0.4375rem;
        margin-left: 1.25rem;
        padding: 0 0.3125rem;
        color: var(--color-greyscale-3);
        background-color: var(--color-greyscale-7);
        font-weight: bold;
      }

  .m-form-element--label-inline .m-form-element__label .m-form-element-label {
        padding-top: 0.5rem;
        padding-left: 1rem;
      }

  .m-form-element__children {
    flex-shrink: 0;
  }

  .m-form-element--label-inline .m-form-element__children {
      margin-top: 0.1875rem;
    }

  /* When there's a prefix, children should take remaining width */

  .m-form-element__prefix ~ .m-form-element__children {
      flex: 1;
      min-width: 0;
    }

  .m-form-element__error-messages {
    color: var(--color-feedback-5);
  }

  .m-form-element--label-above .m-form-element__error-messages {
      padding-left: 1.25rem;
    }

  .m-form-element__description {
    color: var(--color-greyscale-3);
  }

  .m-form-element__error {
    display: flex;
    align-items: center;
    margin-top: 0.3125rem;
    color: var(--color-error, #f44336);
    font-size: var(--font-size-12);
    gap: 0.3125rem;
  }

  .m-form-element__error::before {
      content: "⚠";
      font-size: 0.875rem;
    }

  .m-form-element__prefix {
    display: inline-flex;
    align-items: center;
    padding: 1.1875rem 0.625rem 1.1875rem 1.25rem;
    color: var(--color-greyscale-4);
    border: 0.0625rem solid var(--color-greyscale-5);
    border-right: none;
    border-radius: 0.9375rem 0 0 0.9375rem;
    background: var(--color-greyscale-6);
    font-size: var(--font-size-14);
  }

  /* Make the input field connect visually with prefix */

  .m-form-element__prefix + .m-form-element__children .a-text-field__element {
      border-radius: 0 0.9375rem 0.9375rem 0;
    }

  .m-form-element__footer {
    display: grid;
    gap: 0.25rem;
  }

.m-form-elements-group {
  display: flex;
}

.m-form-elements-group .m-form-element {
    flex-grow: 1;
  }

.m-form-elements-group .m-form-element:nth-child(n+2) {
      margin-left: -0.0625rem;
    }

.m-form-elements-group .m-form-element:nth-child(n+2) .a-text-field__element {
        border-top-left-radius: 0;
        border-bottom-left-radius: 0;
      }

.m-form-elements-group .m-form-element:nth-last-child(n+2) .a-text-field__element {
        border-top-right-radius: 0;
        border-bottom-right-radius: 0;
      }

.m-form-elements-group .m-form-element .a-text-field__element:focus {
      position: relative;
      z-index: 1;
    }

.m-form-element-text-link {
  text-decoration: none;
  color: var(--color-main-1);
}

.m-form-element-text-link:hover {
    text-decoration: underline;
  }
