$pf-c-masthead--breakpoint-map: build-breakpoint-map();
$pf-c-masthead--inset-map: build-spacer-map("none", "sm", "md", "lg", "xl", "2xl");

@mixin pf-c-masthead--m-display-stack {
  --pf-c-masthead--GridTemplateColumns: var(--pf-c-masthead--m-display-stack--GridTemplateColumns);
  --pf-c-masthead__main--GridColumn: var(--pf-c-masthead--m-display-stack__main--GridColumn);
  --pf-c-masthead__main--MinHeight: var(--pf-c-masthead--m-display-stack__main--MinHeight);
  --pf-c-masthead__main--Order: var(--pf-c-masthead--m-display-stack__main--Order);
  --pf-c-masthead__main--FlexBasis: var(--pf-c-masthead--m-display-stack__main--FlexBasis);
  --pf-c-masthead__main--PaddingTop: var(--pf-c-masthead--m-display-stack__main--PaddingTop);
  --pf-c-masthead__main--PaddingBottom: var(--pf-c-masthead--m-display-stack__main--PaddingBottom);
  --pf-c-masthead__main--MarginRight: var(--pf-c-masthead--m-display-stack__main--MarginRight);
  --pf-c-masthead__main--before--BorderBottom: var(--pf-c-masthead--m-display-stack__main--before--BorderBottom);
  --pf-c-masthead__content--GridColumn: var(--pf-c-masthead--m-display-stack__content--GridColumn);
  --pf-c-masthead__content--MinHeight: var(--pf-c-masthead--m-display-stack__content--MinHeight);
  --pf-c-masthead__content--Order: var(--pf-c-masthead--m-display-stack__content--Order);
  --pf-c-masthead__content--PaddingTop: var(--pf-c-masthead--m-display-stack__content--PaddingTop);
  --pf-c-masthead__content--PaddingBottom: var(--pf-c-masthead--m-display-stack__content--PaddingBottom);
  --pf-c-masthead__content--MarginLeft: var(--pf-c-masthead--m-display-stack__content--MarginLeft);
  --pf-c-masthead__content--c-nav--m-horizontal--MarginRight: var(--pf-c-masthead--m-display-stack__content--c-nav--m-horizontal--MarginRight);
  --pf-c-masthead__content--c-nav--m-horizontal--MarginLeft: var(--pf-c-masthead--m-display-stack__content--c-nav--m-horizontal--MarginLeft);
}

@mixin pf-c-masthead--m-display-inline {
  --pf-c-masthead--GridTemplateColumns: var(--pf-c-masthead--m-display-inline--GridTemplateColumns);
  --pf-c-masthead__main--GridColumn: var(--pf-c-masthead--m-display-inline__main--GridColumn);
  --pf-c-masthead__main--MinHeight: var(--pf-c-masthead--m-display-inline__main--MinHeight);
  --pf-c-masthead__main--Order: var(--pf-c-masthead--m-display-inline__main--Order);
  --pf-c-masthead__main--FlexBasis: var(--pf-c-masthead--m-display-inline__main--FlexBasis);
  --pf-c-masthead__main--PaddingTop: var(--pf-c-masthead--m-display-inline__main--PaddingTop);
  --pf-c-masthead__main--PaddingBottom: var(--pf-c-masthead--m-display-inline__main--PaddingBottom);
  --pf-c-masthead__main--MarginRight: var(--pf-c-masthead--m-display-inline__main--MarginRight);
  --pf-c-masthead__main--before--BorderBottom: var(--pf-c-masthead--m-display-inline__main--BorderBottom);
  --pf-c-masthead__content--GridColumn: var(--pf-c-masthead--m-display-inline__content--GridColumn);
  --pf-c-masthead__content--MinHeight: var(--pf-c-masthead--m-display-inline__content--MinHeight);
  --pf-c-masthead__content--Order: var(--pf-c-masthead--m-display-inline__content--Order);
  --pf-c-masthead__content--PaddingTop: var(--pf-c-masthead--m-display-inline__content--PaddingTop);
  --pf-c-masthead__content--PaddingBottom: var(--pf-c-masthead--m-display-inline__content--PaddingBottom);
  --pf-c-masthead__content--MarginLeft: var(--pf-c-masthead--m-display-inline__content--MarginLeft);
  --pf-c-masthead__content--c-nav--m-horizontal--MarginRight: var(--pf-c-masthead--m-display-inline__content--c-nav--m-horizontal--MarginRight);
  --pf-c-masthead__content--c-nav--m-horizontal--MarginLeft: var(--pf-c-masthead--m-display-inline__content--c-nav--m-horizontal--MarginLeft);
}

.pf-c-masthead {
  --pf-c-masthead--PaddingLeft: var(--pf-c-masthead--inset);
  --pf-c-masthead--PaddingRight: var(--pf-c-masthead--inset);
  --pf-c-masthead--BackgroundColor: var(--pf-global--BackgroundColor--dark-100);

  // Insets
  --pf-c-masthead--inset: var(--pf-global--spacer--md); // match page insets
  --pf-c-masthead--xl--inset: var(--pf-global--spacer--lg); // match page insets

  // Stack
  --pf-c-masthead--m-display-stack--GridTemplateColumns: max-content 1fr;
  --pf-c-masthead--m-display-stack__main--GridColumn: -1 / 1;
  --pf-c-masthead--m-display-stack__main--MinHeight: #{pf-size-prem(70px)};
  --pf-c-masthead--m-display-stack__main--Order: -1;
  --pf-c-masthead--m-display-stack__main--FlexBasis: 100%;
  --pf-c-masthead--m-display-stack__main--PaddingTop: var(--pf-global--spacer--sm);
  --pf-c-masthead--m-display-stack__main--PaddingBottom: var(--pf-global--spacer--sm);
  --pf-c-masthead--m-display-stack__main--MarginRight: 0;
  --pf-c-masthead--m-display-stack__main--before--BorderBottom: var(--pf-c-masthead__main--before--BorderBottomWidth) solid var(--pf-c-masthead__main--before--BorderBottomColor);
  --pf-c-masthead--m-display-stack__toggle--GridColumn: 1;
  --pf-c-masthead--m-display-stack__content--GridColumn: 2;
  --pf-c-masthead--m-display-stack__content--MinHeight: auto;
  --pf-c-masthead--m-display-stack__content--Order: 1;
  --pf-c-masthead--m-display-stack__content--PaddingTop: 0;
  --pf-c-masthead--m-display-stack__content--PaddingBottom: 0;
  --pf-c-masthead--m-display-stack__content--MarginLeft: 0;
  --pf-c-masthead--m-display-stack__content--c-nav--m-horizontal--MarginRight: calc(var(--pf-c-masthead--inset) * -1);
  --pf-c-masthead--m-display-stack__content--c-nav--m-horizontal--MarginLeft: calc(var(--pf-c-masthead--inset) * -1);

  // Inline
  --pf-c-masthead--m-display-inline--GridTemplateColumns: max-content max-content 1fr;
  --pf-c-masthead--m-display-inline__main--GridColumn: 2;
  --pf-c-masthead--m-display-inline__main--MinHeight: #{pf-size-prem(70px)};
  --pf-c-masthead--m-display-inline__main--Order: 0;
  --pf-c-masthead--m-display-inline__main--FlexBasis: auto;
  --pf-c-masthead--m-display-inline__main--PaddingTop: 0;
  --pf-c-masthead--m-display-inline__main--PaddingBottom: 0;
  --pf-c-masthead--m-display-inline__main--MarginRight: calc(var(--pf-global--spacer--lg) / 2); // split gutter
  --pf-c-masthead--m-display-inline__main--BorderBottom: 0;
  --pf-c-masthead--m-display-inline__toggle--GridColumn: 1;
  --pf-c-masthead--m-display-inline__content--GridColumn: 3;
  --pf-c-masthead--m-display-inline__content--MinHeight: #{pf-size-prem(70px)};
  --pf-c-masthead--m-display-inline__content--Order: 0;
  --pf-c-masthead--m-display-inline__content--PaddingTop: 0;
  --pf-c-masthead--m-display-inline__content--PaddingBottom: 0;
  --pf-c-masthead--m-display-inline__content--MarginLeft: calc(var(--pf-global--spacer--lg) / 2); // split gutter
  --pf-c-masthead--m-display-inline__content--c-nav--m-horizontal--MarginRight: 0;
  --pf-c-masthead--m-display-inline__content--c-nav--m-horizontal--MarginLeft: 0;

  // Main border
  --pf-c-masthead__main--before--Right: calc(var(--pf-c-masthead--inset) * -1);
  --pf-c-masthead__main--before--Left: calc(var(--pf-c-masthead--inset) * -1);
  --pf-c-masthead__main--before--BorderBottomWidth: var(--pf-global--BorderWidth--sm);
  --pf-c-masthead__main--before--BorderBottomColor: var(--pf-global--palette--black-600);

  // Toggle
  --pf-c-masthead__toggle--MarginRight: var(--pf-global--spacer--sm);
  --pf-c-masthead__toggle--MarginLeft: calc(var(--pf-global--spacer--md) * -1); // offset by button padding
  --pf-c-masthead__toggle--c-button--FontSize: var(--pf-global--FontSize--2xl);

  // Light 100
  --pf-c-masthead--m-light--BackgroundColor: var(--pf-global--BackgroundColor--100);
  --pf-c-masthead--m-light__main--BorderBottomColor: var(--pf-global--BorderColor--300);

  // Light 200
  --pf-c-masthead--m-light-200--BackgroundColor: var(--pf-global--BackgroundColor--200);
  --pf-c-masthead--m-light-200__main--BorderBottomColor: var(--pf-global--BorderColor--100);

  // Toolbar item
  --pf-c-masthead--c-toolbar__item--Display: flex;

  // Borders
  --pf-c-masthead--item-border-color--base: var(--pf-global--palette--black-800);

  // Context selector
  --pf-c-masthead--c-context-selector--Width: auto;
  --pf-c-masthead--c-context-selector__toggle--BorderTopColor: var(--pf-c-masthead--item-border-color--base);
  --pf-c-masthead--c-context-selector__toggle--BorderRightColor: var(--pf-c-masthead--item-border-color--base);
  --pf-c-masthead--c-context-selector__toggle--BorderLeftColor: var(--pf-c-masthead--item-border-color--base);
  --pf-c-masthead--c-context-selector--m-full-height__toggle--BorderTopColor: transparent;
  --pf-c-masthead--c-context-selector--m-full-height__toggle--BorderBottomColor: transparent;

  // Dropdown
  --pf-c-masthead--c-dropdown__toggle--before--BorderTopColor: var(--pf-c-masthead--item-border-color--base);
  --pf-c-masthead--c-dropdown__toggle--before--BorderRightColor: var(--pf-c-masthead--item-border-color--base);
  --pf-c-masthead--c-dropdown__toggle--before--BorderLeftColor: var(--pf-c-masthead--item-border-color--base);
  --pf-c-masthead--c-dropdown--m-full-height__toggle--before--BorderTopColor: transparent;
  --pf-c-masthead--c-dropdown--m-full-height__toggle--before--BorderBottomColor: transparent;

  // Menu toggle
  --pf-c-masthead--c-menu-toggle--before--BorderTopColor: var(--pf-c-masthead--item-border-color--base);
  --pf-c-masthead--c-menu-toggle--before--BorderRightColor: var(--pf-c-masthead--item-border-color--base);
  --pf-c-masthead--c-menu-toggle--before--BorderLeftColor: var(--pf-c-masthead--item-border-color--base);
  --pf-c-masthead--c-menu-toggle--m-full-height--before--BorderTopColor: transparent;
  --pf-c-masthead--c-menu-toggle--m-full-height--before--BorderBottomColor: transparent;

  // Toolbar
  --pf-c-masthead--c-toolbar__content--PaddingRight: 0;
  --pf-c-masthead--c-toolbar__content--PaddingLeft: 0;
  --pf-c-masthead--c-toolbar__expandable-content--PaddingTop: var(--pf-global--spacer--md);
  --pf-c-masthead--c-toolbar__expandable-content--PaddingRight: var(--pf-c-masthead--inset);
  --pf-c-masthead--c-toolbar__expandable-content--PaddingBottom: var(--pf-global--spacer--md);
  --pf-c-masthead--c-toolbar__expandable-content--PaddingLeft: var(--pf-c-masthead--inset);
  --pf-c-masthead--c-toolbar__expandable-content--BorderTopWidth: var(--pf-global--BorderWidth--sm);
  --pf-c-masthead--c-toolbar__expandable-content--BorderTopColor: var(--pf-c-masthead--item-border-color--base);


  // Set layout to stack by default
  @include pf-c-masthead--m-display-stack;

  // Set layout to inline at medium breakpoint
  .pf-c-page:where(:not(.pf-m-resize-observer)) & {
    @media screen and (min-width: $pf-global--breakpoint--md) {
      @include pf-c-masthead--m-display-inline;
    }

    @media screen and (min-width: $pf-global--breakpoint--xl) {
      --pf-c-masthead--inset: var(--pf-c-masthead--xl--inset);
    }
  }

  .pf-c-page:where(.pf-m-breakpoint-xl) & {
    --pf-c-masthead--inset: var(--pf-c-masthead--xl--inset);
  }

  @include pf-t-dark; // force the container to follow the dark theme

  position: relative;
  display: grid;
  grid-template-columns: var(--pf-c-masthead--GridTemplateColumns);
  align-items: center;
  min-width: 0;
  padding-right: var(--pf-c-masthead--PaddingRight);
  padding-left: var(--pf-c-masthead--PaddingLeft);
  background-color: var(--pf-c-masthead--BackgroundColor);

  &.pf-m-light {
    @include pf-t-light;

    --pf-c-masthead--BackgroundColor: var(--pf-c-masthead--m-light--BackgroundColor);
    --pf-c-masthead__main--BorderBottomColor: var(--pf-c-masthead--m-light__main--BorderBottomColor);
  }

  &.pf-m-light-200 {
    @include pf-t-light;

    --pf-c-masthead--BackgroundColor: var(--pf-c-masthead--m-light-200--BackgroundColor);
    --pf-c-masthead__main--BorderBottomColor: var(--pf-c-masthead--m-light-200__main--BorderBottomColor);
  }

  .pf-c-toolbar {
    --pf-c-toolbar__content--PaddingRight: var(--pf-c-masthead--c-toolbar__content--PaddingRight);
    --pf-c-toolbar__content--PaddingLeft: var(--pf-c-masthead--c-toolbar__content--PaddingLeft);
    --pf-c-toolbar__expandable-content--PaddingTop: var(--pf-c-masthead--c-toolbar__expandable-content--PaddingTop);
    --pf-c-toolbar__expandable-content--PaddingRight: var(--pf-c-masthead--c-toolbar__expandable-content--PaddingRight);
    --pf-c-toolbar__expandable-content--PaddingBottom: var(--pf-c-masthead--c-toolbar__expandable-content--PaddingBottom);
    --pf-c-toolbar__expandable-content--PaddingLeft: var(--pf-c-masthead--c-toolbar__expandable-content--PaddingLeft);

    width: 100%;
  }

  .pf-c-toolbar__content-section {
    flex-wrap: nowrap;
  }

  .pf-c-toolbar__expandable-content {
    border-top: var(--pf-c-masthead--c-toolbar__expandable-content--BorderTopWidth) solid var(--pf-c-masthead--c-toolbar__expandable-content--BorderTopColor);
  }

  .pf-c-menu-toggle {
    --pf-c-menu-toggle--before--BorderTopColor: var(--pf-c-masthead--c-menu-toggle--before--BorderTopColor);
    --pf-c-menu-toggle--before--BorderRightColor: var(--pf-c-masthead--c-menu-toggle--before--BorderRightColor);
    --pf-c-menu-toggle--before--BorderLeftColor: var(--pf-c-masthead--c-menu-toggle--before--BorderLeftColor);

    &.pf-m-full-height {
      --pf-c-menu-toggle--before--BorderTopColor: var(--pf-c-masthead--c-menu-toggle--m-full-height--before--BorderTopColor);
      --pf-c-menu-toggle--before--BorderBottomColor: var(--pf-c-masthead--c-menu-toggle--m-full-height--before--BorderBottomColor);
    }
  }

  .pf-c-context-selector {
    --pf-c-context-selector--Width: var(--pf-c-masthead--c-context-selector--Width);
    --pf-c-context-selector__toggle--BorderTopColor: var(--pf-c-masthead--c-context-selector__toggle--BorderTopColor);
    --pf-c-context-selector__toggle--BorderRightColor: var(--pf-c-masthead--c-context-selector__toggle--BorderRightColor);
    --pf-c-context-selector__toggle--BorderLeftColor: var(--pf-c-masthead--c-context-selector__toggle--BorderLeftColor);

    &.pf-m-full-height {
      --pf-c-context-selector__toggle--BorderTopColor: var(--pf-c-masthead--c-context-selector--m-full-height__toggle--BorderTopColor);
      --pf-c-context-selector__toggle--BorderBottomColor: var(--pf-c-masthead--c-context-selector--m-full-height__toggle--BorderBottomColor);
    }
  }

  .pf-c-dropdown {
    --pf-c-dropdown__toggle--before--BorderTopColor: var(--pf-c-masthead--c-dropdown__toggle--before--BorderTopColor);
    --pf-c-dropdown__toggle--before--BorderRightColor: var(--pf-c-masthead--c-dropdown__toggle--before--BorderRightColor);
    --pf-c-dropdown__toggle--before--BorderLeftColor: var(--pf-c-masthead--c-dropdown__toggle--before--BorderLeftColor);

    &.pf-m-full-height {
      --pf-c-dropdown__toggle--before--BorderTopColor: var(--pf-c-masthead--c-dropdown--m-full-height__toggle--before--BorderTopColor);
      --pf-c-dropdown__toggle--before--BorderBottomColor: var(--pf-c-masthead--c-dropdown--m-full-height__toggle--before--BorderBottomColor);
    }
  }

  .pf-c-nav {
    align-self: stretch;
  }
}

// Main
.pf-c-masthead__main {
  position: relative;
  display: flex;
  flex-basis: var(--pf-c-masthead__main--FlexBasis);
  align-items: center;
  align-self: stretch;
  order: var(--pf-c-masthead__main--Order);
  min-height: var(--pf-c-masthead__main--MinHeight);
  padding-top: var(--pf-c-masthead__main--PaddingTop);
  padding-bottom: var(--pf-c-masthead__main--PaddingBottom);
  margin-right: var(--pf-c-masthead__main--MarginRight);
  grid-column: var(--pf-c-masthead__main--GridColumn);

  &::before {
    position: absolute;
    right: var(--pf-c-masthead__main--before--Right);
    bottom: 0;
    left: var(--pf-c-masthead__main--before--Left);
    content: "";
    border-bottom: var(--pf-c-masthead__main--before--BorderBottom);
  }

  &:last-child {
    --pf-c-masthead__main--MarginRight: 0;
  }
}

// Content
.pf-c-masthead__content {
  display: flex;
  flex-grow: 1;
  align-items: center;
  align-self: stretch;
  order: var(--pf-c-masthead__content--Order);
  min-height: var(--pf-c-masthead__content--MinHeight);
  padding-top: var(--pf-c-masthead__content--PaddingTop);
  padding-bottom: var(--pf-c-masthead__content--PaddingBottom);
  margin-left: var(--pf-c-masthead__content--MarginLeft);
  grid-column: var(--pf-c-masthead__content--GridColumn);
  grid-column-end: -1; // force content to right edge or full available width
  flex-shrink: 1;

  &:only-child {
    --pf-c-masthead__content--MarginLeft: 0;
  }

  .pf-c-nav.pf-m-horizontal {
    margin-right: var(--pf-c-masthead__content--c-nav--m-horizontal--MarginRight);
    margin-left: var(--pf-c-masthead__content--c-nav--m-horizontal--MarginLeft);
  }

  .pf-c-masthead__toggle ~ & {
    --pf-c-masthead__content--c-nav--m-horizontal--MarginLeft: calc(var(--pf-c-masthead__content--MarginLeft) * -1);
  }
}

.pf-c-masthead__main,
.pf-c-masthead__brand,
.pf-c-masthead__content {
  min-width: 0; // allow flex containers to shrink to fit possible overflow
}

// Brand
.pf-c-masthead__brand {
  display: inline-flex;
  align-self: center;
}

// Toggle
.pf-c-masthead__toggle {
  grid-column: var(--pf-c-masthead__toggle--GridColumn);
  align-self: center;
  margin-right: var(--pf-c-masthead__toggle--MarginRight);
  margin-left: var(--pf-c-masthead__toggle--MarginLeft);

  .pf-c-button {
    --pf-c-button--FontSize: var(--pf-c-masthead__toggle--c-button--FontSize);
  }
}

// stylelint-disable no-duplicate-selectors
.pf-c-masthead {
  @each $breakpoint, $breakpoint-value in $pf-c-masthead--breakpoint-map {
    $breakpoint-name: if($breakpoint != "base", -on-#{$breakpoint}, "");

    @include pf-apply-breakpoint($breakpoint) {
      &.pf-m-display-stack#{$breakpoint-name} {
        @include pf-c-masthead--m-display-stack;
      }

      &.pf-m-display-inline#{$breakpoint-name} {
        @include pf-c-masthead--m-display-inline;
      }
    }

    @include pf-apply-breakpoint($breakpoint) {
      @each $spacer, $spacer-value in $pf-c-masthead--inset-map {
        &.pf-m-inset-#{$spacer}#{$breakpoint-name} {
          --pf-c-masthead--inset: #{$spacer-value};
        }
      }
    }
  }
}
// stylelint-enable
