@use '../../sass-utilities' as *;

@include pf-root($login) {
  --#{$login}--PaddingBlockStart: var(--pf-t--global--spacer--lg);
  --#{$login}--PaddingBlockEnd: var(--pf-t--global--spacer--lg);

  // container
  --#{$login}__container--xl--GridColumnGap: var(--pf-t--global--spacer--3xl);
  --#{$login}__container--MaxWidth: #{pf-size-prem(500px)}; // This is a magic number to prevent the login layout grow more than what's defined in the specs.
  --#{$login}__container--xl--MaxWidth: none;
  --#{$login}__container--PaddingInlineStart: #{pf-size-prem(98px)};
  --#{$login}__container--PaddingInlineEnd: #{pf-size-prem(98px)};
  --#{$login}__container--xl--GridTemplateColumns: #{pf-size-prem(544px)} minmax(auto, #{pf-size-prem(544px)}); // unique to the login layout

  @media (min-width: $pf-v6-global--breakpoint--xl) {
    --#{$login}__container--MaxWidth: var(--#{$login}__container--xl--MaxWidth);
  }

  // header
  --#{$login}__header--MarginBlockEnd: var(--pf-t--global--spacer--md);
  --#{$login}__header--PaddingInlineStart: var(--pf-t--global--spacer--md);
  --#{$login}__header--PaddingInlineEnd: var(--pf-t--global--spacer--md);

  @media (min-width: $pf-v6-global--breakpoint--sm) {
    --#{$login}__header--PaddingInlineEnd: 0;
    --#{$login}__header--PaddingInlineStart: 0;
  }

  --#{$login}__header--xl--MarginBlockEnd: var(--pf-t--global--spacer--2xl);
  --#{$login}__header--xl--MarginBlockStart: var(--pf-t--global--spacer--3xl);
  --#{$login}__header--c-brand--MarginBlockEnd: var(--pf-t--global--spacer--lg);
  --#{$login}__header--c-brand--xl--MarginBlockEnd: var(--pf-t--global--spacer--2xl);

  @media (min-width: $pf-v6-global--breakpoint--xl) {
    --#{$login}__header--MarginBlockEnd: var(--#{$login}__header--xl--MarginBlockEnd);
    --#{$login}__header--c-brand--MarginBlockEnd: var(--#{$login}__header--c-brand--xl--MarginBlockEnd);
  }

  // main
  --#{$login}__main--BackgroundColor: var(--pf-t--global--background--color--primary--default);
  --#{$login}__main--MarginBlockEnd: var(--pf-t--global--spacer--lg);
  --#{$login}__main--BorderRadius: var(--pf-t--global--border--radius--large);
  --#{$login}__main--BorderWidth: var(--pf-t--global--border--width--high-contrast--regular);
  --#{$login}__main--BorderColor: var(--pf-t--global--border--color--high-contrast);

  @media (min-width: $pf-v6-global--breakpoint--xl) {
    --#{$login}__main--MarginBlockEnd: 0;
  }

  // main header
  --#{$login}__main-header--PaddingBlockStart: var(--pf-t--global--spacer--2xl);
  --#{$login}__main-header--PaddingInlineEnd: var(--pf-t--global--spacer--xl);
  --#{$login}__main-header--PaddingBlockEnd: var(--pf-t--global--spacer--md);
  --#{$login}__main-header--PaddingInlineStart: var(--pf-t--global--spacer--xl);
  --#{$login}__main-header--md--PaddingInlineEnd: var(--pf-t--global--spacer--2xl);
  --#{$login}__main-header--md--PaddingInlineStart: var(--pf-t--global--spacer--2xl);
  --#{$login}__main-header--ColumnGap: var(--pf-t--global--spacer--md);
  --#{$login}__main-header--RowGap: var(--pf-t--global--spacer--md);

  // main header desc
  --#{$login}__main-header-desc--MarginBlockEnd: var(--pf-t--global--spacer--sm);
  --#{$login}__main-header-desc--md--MarginBlockEnd: 0;
  --#{$login}__main-header-desc--FontSize: var(--pf-t--global--font--size--body--default);


  @media (min-width: $pf-v6-global--breakpoint--md) {
    --#{$login}__main-header--PaddingInlineEnd: var(--#{$login}__main-header--md--PaddingInlineEnd);
    --#{$login}__main-header--PaddingInlineStart: var(--#{$login}__main-header--md--PaddingInlineStart);
    --#{$login}__main-header-desc--MarginBlockEnd: var(--#{$login}__main-header-desc--md--MarginBlockEnd);
  }

  // main body
  --#{$login}__main-body--PaddingInlineEnd: var(--pf-t--global--spacer--xl);
  --#{$login}__main-body--PaddingBlockEnd: var(--pf-t--global--spacer--xl);
  --#{$login}__main-body--PaddingInlineStart: var(--pf-t--global--spacer--xl);
  --#{$login}__main-body--md--PaddingInlineEnd: var(--pf-t--global--spacer--2xl);
  --#{$login}__main-body--md--PaddingInlineStart: var(--pf-t--global--spacer--2xl);

  @media (min-width: $pf-v6-global--breakpoint--md) {
    --#{$login}__main-body--PaddingInlineEnd: var(--#{$login}__main-body--md--PaddingInlineEnd);
    --#{$login}__main-body--PaddingInlineStart: var(--#{$login}__main-body--md--PaddingInlineStart);
  }

  // main footer
  --#{$login}__main-footer--PaddingBlockEnd: var(--pf-t--global--spacer--3xl);
  --#{$login}__main-footer--c-title--MarginBlockEnd: var(--pf-t--global--spacer--md);
  --#{$login}__main-footer-links--PaddingBlockStart: var(--pf-t--global--spacer--sm);
  --#{$login}__main-footer-links--PaddingInlineEnd: var(--pf-t--global--spacer--3xl);
  --#{$login}__main-footer-links--PaddingBlockEnd: var(--pf-t--global--spacer--xl);
  --#{$login}__main-footer-links--PaddingInlineStart: var(--pf-t--global--spacer--3xl);
  --#{$login}__main-footer-links--Gap: var(--pf-t--global--spacer--md);
  --#{$login}__main-footer-links-item--c-button--FontSize: var(--pf-t--global--icon--size--xl);
  --#{$login}__main-footer-band--PaddingBlockStart: var(--pf-t--global--spacer--lg);
  --#{$login}__main-footer-band--PaddingInlineEnd: var(--pf-t--global--spacer--md);
  --#{$login}__main-footer-band--PaddingBlockEnd: var(--pf-t--global--spacer--lg);
  --#{$login}__main-footer-band--PaddingInlineStart: var(--pf-t--global--spacer--md);
  --#{$login}__main-footer-band--BorderBlockStartColor: var(--pf-t--global--border--color--default);
  --#{$login}__main-footer-band--BorderBlockStartWidth: var(--pf-t--global--border--width--divider--default);
  --#{$login}__main-footer-band-item--PaddingBlockStart: var(--pf-t--global--spacer--md);

  // footer
  --#{$login}__footer--PaddingInlineStart: var(--pf-t--global--spacer--md);
  --#{$login}__footer--PaddingInlineEnd: var(--pf-t--global--spacer--md);

  @media (min-width: $pf-v6-global--breakpoint--sm) {
    --#{$login}__footer--PaddingInlineEnd: 0;
    --#{$login}__footer--PaddingInlineStart: 0;
  }

  --#{$login}__footer--c-list--PaddingBlockStart: var(--pf-t--global--spacer--md);
  --#{$login}__footer--c-list--xl--PaddingBlockStart: var(--pf-t--global--spacer--2xl);

  @media (min-width: $pf-v6-global--breakpoint--xl) {
    --#{$login}__footer--c-list--PaddingBlockStart: var(--#{$login}__footer--c-list--xl--PaddingBlockStart);
  }
}

.#{$login} {
  display: flex;
  justify-content: center;
  min-height: 100vh;
  padding-block-start: var(--#{$login}--PaddingBlockStart);
  padding-block-end: var(--#{$login}--PaddingBlockEnd);

  @media (min-width: $pf-v6-global--breakpoint--sm) {
    align-items: center;
  }
}

.#{$login}__container {
  width: 100%; // This keeps the login container from shrinking based on its content
  max-width: var(--#{$login}__container--MaxWidth);

  // Large viewports
  @media (min-width: $pf-v6-global--breakpoint--xl) {
    display: grid;
    grid-template-areas:
      "main header"
      "main footer"
      "main .";
    grid-template-columns: var(--#{$login}__container--xl--GridTemplateColumns);
    grid-column-gap: var(--#{$login}__container--xl--GridColumnGap);
    justify-content: center;
    padding-inline-start: var(--#{$login}__container--PaddingInlineStart);
    padding-inline-end: var(--#{$login}__container--PaddingInlineEnd);
  }
}

.#{$login}__header {
  grid-area: header;
  padding-inline-start: var(--#{$login}__header--PaddingInlineStart);
  padding-inline-end: var(--#{$login}__header--PaddingInlineEnd);

  @media (min-width: $pf-v6-global--breakpoint--xl) {
    margin-block-start: var(--#{$login}__header--xl--MarginBlockStart);
  }

  .#{$brand} {
    margin-block-end: var(--#{$login}__header--c-brand--MarginBlockEnd);
  }
}

.#{$login}__main {
  grid-area: main;
  align-self: start;
  margin-block-end: var(--#{$login}__main--MarginBlockEnd);
  background-color: var(--#{$login}__main--BackgroundColor);
  border: var(--#{$login}__main--BorderWidth) solid var(--#{$login}__main--BorderColor);
  border-radius: var(--#{$login}__main--BorderRadius);

  // If the first child isn't a header, then we need to put the header's top padding there
  > :first-child:not(.#{$login}__main-header) {
    padding-block-start: var(--#{$login}__main-header--PaddingBlockStart);
  }

  // If the last child isn't the footer, then we need to put the footer's bottom padding there
  > :last-child:not(.#{$login}__main-footer) {
    padding-block-end: var(--#{$login}__main-footer--PaddingBlockEnd);
  }
}

.#{$login}__main-header {
  display: grid;
  grid-template-columns: 100%;
  row-gap: var(--#{$login}__main-header--RowGap);
  column-gap: var(--#{$login}__main-header--ColumnGap);
  align-items: center;
  padding-block-start: var(--#{$login}__main-header--PaddingBlockStart);
  padding-block-end: var(--#{$login}__main-header--PaddingBlockEnd);
  padding-inline-start: var(--#{$login}__main-header--PaddingInlineStart);
  padding-inline-end: var(--#{$login}__main-header--PaddingInlineEnd);

  @media (min-width: $pf-v6-global--breakpoint--md) {
    grid-template-columns: 1fr auto;
  }
}

.#{$login}__main-header-utilities,
.#{$login}__main-header .#{$menu-toggle} {
  grid-row: auto;
  grid-column: auto;

  @media (min-width: $pf-v6-global--breakpoint--md) {
    grid-row: 1;
    grid-column: 2 / 3;
  }
}

.#{$login}__main-header-desc {
  grid-column: 1 / -1;
  margin-block-end: var(--#{$login}__main-header-desc--MarginBlockEnd);
  font-size: var(--#{$login}__main-header-desc--FontSize);
}

.#{$login}__main-body {
  padding-block-end: var(--#{$login}__main-body--PaddingBlockEnd);
  padding-inline-start: var(--#{$login}__main-body--PaddingInlineStart);
  padding-inline-end: var(--#{$login}__main-body--PaddingInlineEnd);
}

.#{$login}__main-footer {
  display: flex;
  flex-wrap: wrap;

  .#{$title} {
    margin-block-end: var(--#{$login}__main-footer--c-title--MarginBlockEnd);
    text-align: center;
  }

  > * {
    flex-basis: 100%;
  }
}

.#{$login}__main-footer-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--#{$login}__main-footer-links--Gap);
  justify-content: center;
  padding-block-start: var(--#{$login}__main-footer-links--PaddingBlockStart);
  padding-block-end: var(--#{$login}__main-footer-links--PaddingBlockEnd);
  padding-inline-start: var(--#{$login}__main-footer-links--PaddingInlineStart);
  padding-inline-end: var(--#{$login}__main-footer-links--PaddingInlineEnd);
}

.#{$login}__main-footer-links-item {
  .#{$button}{
    --#{$button}--FontSize: var(--#{$login}__main-footer-links-item--c-button--FontSize);
  }
}

.#{$login}__main-footer-band {
  padding-block-start: var(--#{$login}__main-footer-band--PaddingBlockStart);
  padding-block-end: var(--#{$login}__main-footer-band--PaddingBlockEnd);
  padding-inline-start: var(--#{$login}__main-footer-band--PaddingInlineStart);
  padding-inline-end: var(--#{$login}__main-footer-band--PaddingInlineEnd);
  text-align: center;
  border-block-start: var(--#{$login}__main-footer-band--BorderBlockStartWidth) solid var(--#{$login}__main-footer-band--BorderBlockStartColor);

  > * + * {
    padding-block-start: var(--#{$login}__main-footer-band-item--PaddingBlockStart);
  }
}

.#{$login}__footer {
  grid-area: footer;
  padding-inline-start: var(--#{$login}__footer--PaddingInlineStart);
  padding-inline-end: var(--#{$login}__footer--PaddingInlineEnd);

  .#{$list} {
    a {
      color: unset; // fixes a11y issue
    }

    &:not(:only-child) { // paragraph text might not always be included.
      padding-block-start: var(--#{$login}__footer--c-list--PaddingBlockStart);
    }
  }
}

