.pf-c-form {
  --pf-c-form--GridGap: var(--pf-global--gutter);

  // Label
  --pf-c-form__label--Color: var(--pf-global--Color--100);
  --pf-c-form__label--FontWeight: var(--pf-global--FontWeight--normal);
  --pf-c-form__label--FontSize: var(--pf-global--FontSize--sm);
  --pf-c-form__label--LineHeight: var(--pf-global--LineHeight--sm);
  --pf-c-form__label--PaddingTop: var(--pf-global--spacer--sm);
  --pf-c-form__label--PaddingBottom: var(--pf-global--spacer--sm);
  --pf-c-form__label--m-disabled--Color: var(--pf-global--disabled-color--100);

  // Label text
  --pf-c-form__label-text--FontWeight: var(--pf-global--FontWeight--bold);

  // Required labels
  --pf-c-form__label-required--MarginLeft: var(--pf-global--spacer--xs);
  --pf-c-form__label-required--FontSize: var(--pf-global--FontSize--sm);
  --pf-c-form__label-required--Color: var(--pf-global--danger-color--100);

  // Form group
  --pf-c-form__group--MarginLeft: var(--pf-global--spacer--sm);
  --pf-c-form--m-horizontal--md__group--GridTemplateColumns: 150px 1fr;
  --pf-c-form__group--m-action--MarginTop: var(--pf-global--spacer--xl);

  // actions
  --pf-c-form__actions--child--MarginTop: var(--pf-global--spacer--sm);
  --pf-c-form__actions--child--MarginRight: var(--pf-global--spacer--sm);
  --pf-c-form__actions--child--MarginBottom: var(--pf-global--spacer--sm);
  --pf-c-form__actions--child--MarginLeft: var(--pf-global--spacer--sm);
  --pf-c-form__actions--MarginTop: calc(var(--pf-c-form__actions--child--MarginTop) * -1);
  --pf-c-form__actions--MarginRight: calc(var(--pf-c-form__actions--child--MarginRight) * -1);
  --pf-c-form__actions--MarginBottom: calc(var(--pf-c-form__actions--child--MarginBottom) * -1);
  --pf-c-form__actions--MarginLeft: calc(var(--pf-c-form__actions--child--MarginLeft) * -1);

  // Helpers
  --pf-c-form__helper-text--MarginTop: var(--pf-global--spacer--xs);
  --pf-c-form__helper-text--FontSize: var(--pf-global--FontSize--sm);
  --pf-c-form__helper-text--Color: var(--pf-global--Color--100);

  // Inline
  --pf-c-form--m-inline--MarginRight: var(--pf-global--spacer--lg);

  // States
  --pf-c-form--m-error--Color: var(--pf-global--danger-color--100);
  --pf-c-form--m-success--Color: var(--pf-global--success-color--200);


  display: grid;
  grid-gap: var(--pf-c-form--GridGap);

  &.pf-m-horizontal {
    &.pf-m-align-right {
      .pf-c-form__label {
        text-align: right;
      }
    }

    .pf-c-form__group {
      display: grid;
      grid-column-gap: var(--pf-c-form--GridGap);

      .pf-c-form-control {
        align-self: start;
      }
    }

    @media (min-width: $pf-global--breakpoint--md) {
      .pf-c-form__group {
        grid-template-columns: var(--pf-c-form--m-horizontal--md__group--GridTemplateColumns);
      }

      // stylelint-disable
      .pf-c-form__group .pf-c-form__label {
        padding-top: var(--pf-c-form__label--PaddingTop);
        padding-bottom: 0;

        &.pf-m-no-padding-top {
          --pf-c-form__label--PaddingTop: 0;
        }
      }
      // stylelint-enable

      .pf-c-form-control,
      .pf-c-form__horizontal-group,
      .pf-c-form__helper-text,
      .pf-c-check {
        grid-column-start: 2;
      }
    }
  }
}

.pf-c-form__group {
  &.pf-m-action {
    margin-top: var(--pf-c-form__group--m-action--MarginTop);
  }

  &.pf-m-inline {
    display: flex;
    flex-flow: row wrap;

    .pf-c-form__label {
      flex-basis: 100%;
    }

    // Purpose: larger margin-right than the default value for '--group.'
    > *:not(.pf-c-form__label) {
      flex: auto 0;
      margin-right: var(--pf-c-form--m-inline--MarginRight);
    }
  }

  .pf-c-form__label {
    padding-bottom: var(--pf-c-form__label--PaddingBottom);
  }

  .pf-c-form__helper-text {
    margin-top: var(--pf-c-form__helper-text--MarginTop);
  }
}

.pf-c-form__label {
  display: inline-block;
  font-size: var(--pf-c-form__label--FontSize);
  font-weight: var(--pf-c-form__label--FontWeight);
  line-height: var(--pf-c-form__label--LineHeight);
  color: var(--pf-c-form__label--Color);

  &::selection {
    background-color: none;
  }

  &:not(.pf-m-disabled):hover {
    cursor: pointer;
  }

  &.pf-m-disabled {
    --pf-c-form__label--Color: var(--pf-c-form__label--m-disabled--Color);
  }

  &.pf-m-disabled:hover {
    cursor: not-allowed;
  }
}

.pf-c-form__label-text {
  font-weight: var(--pf-c-form__label-text--FontWeight);
}

.pf-c-form__label-required {
  margin-left: var(--pf-c-form__label-required--MarginLeft);
  font-size: var(--pf-c-form__label-required--FontSize);
  color: var(--pf-c-form__label-required--Color);
}

.pf-c-form__helper-text {
  font-size: var(--pf-c-form__helper-text--FontSize);
  color: var(--pf-c-form__helper-text--Color);

  &.pf-m-error {
    --pf-c-form__helper-text--Color: var(--pf-c-form--m-error--Color);
  }

  &.pf-m-success {
    --pf-c-form__helper-text--Color: var(--pf-c-form--m-success--Color);
  }

  &.pf-m-inactive {
    display: none;
    visibility: hidden;
  }

  &.pf-m-hidden {
    visibility: hidden;
    opacity: 0;
  }
}

// Fieldset
.pf-c-form__fieldset {
  border: 0;
}

.pf-c-form__actions {
  display: flex;
  flex-wrap: wrap;
  margin-top: var(--pf-c-form__actions--MarginTop);
  margin-right: var(--pf-c-form__actions--MarginRight);
  margin-bottom: var(--pf-c-form__actions--MarginBottom);
  margin-left: var(--pf-c-form__actions--MarginLeft);
  overflow: hidden; // keeps the margin bottom on children from causing overflow issues

  > * {
    margin-top: var(--pf-c-form__actions--child--MarginTop);
    margin-right: var(--pf-c-form__actions--child--MarginRight);
    margin-bottom: var(--pf-c-form__actions--child--MarginBottom);
    margin-left: var(--pf-c-form__actions--child--MarginLeft);
  }
}
