// URL.com/guidelines#layout


.pf-l-page {
  // Header
  --pf-l-page__header--ZIndex: var(--pf-global--ZIndex--md);
  --pf-l-page__header--MinHeight: #{pf-size-prem(76px)}; // fixed height for header to ensure consistency across screen sizes.

  // Header brand
  --pf-l-page__header-brand--PaddingTop: var(--pf-global--spacer--sm);
  --pf-l-page__header-brand--PaddingRight: var(--pf-global--spacer--xl);
  --pf-l-page__header-brand--PaddingBottom: var(--pf-global--spacer--sm);
  --pf-l-page__header-brand--PaddingLeft: var(--pf-global--spacer--md);
  --pf-l-page__header-brand--md--PaddingLeft: var(--pf-global--spacer--xl);
  --pf-l-page__header-brand--md--BackgroundColor: var(--pf-global--BackgroundColor--dark-transparent-100);
  --pf-l-page__header-brand--md--FlexBasis: #{pf-size-prem(290px)};

  // Toggle
  --pf-l-page__header-sidebar-toggle__c-button--Padding: var(--pf-global--spacer--sm);
  --pf-l-page__header-sidebar-toggle__c-button--MarginRight: var(--pf-global--spacer--md);
  --pf-l-page__header-sidebar-toggle__c-button--MarginLeft: calc(#{var(--pf-global--spacer--xs)} * -1);
  --pf-l-page__header-sidebar-toggle__c-button--md--MarginLeft: calc(#{var(--pf-global--spacer--sm)} * -1);
  --pf-l-page__header-sidebar-toggle__c-button--FontSize: var(--pf-global--FontSize--2xl);

  // Header brand link
  --pf-l-page__header-brand-link--MarginLeft: var(--pf-global--spacer--md);
  --pf-l-page__header-brand-link--c-brand--MaxHeight: #{pf-size-prem(60px)};
  --pf-l-page__header-brand-link--md--MaxWidth: #{pf-size-prem(150px)};

  // Header nav
  --pf-l-page__header-nav--PaddingLeft: var(--pf-global--spacer--md);
  --pf-l-page__header-nav--md--PaddingLeft: var(--pf-global--spacer--xl);
  --pf-l-page__header-nav--lg--MarginLeft: var(--pf-global--spacer--xl);
  --pf-l-page__header-nav--lg--MarginRight: var(--pf-global--spacer--xl);
  --pf-l-page__header-nav--BackgroundColor: var(--pf-global--BackgroundColor--dark-transparent-100);

  // Header tools
  --pf-l-page__header-tools--MarginTop: var(--pf-global--spacer--sm);
  --pf-l-page__header-tools--MarginRight: var(--pf-global--spacer--md);
  --pf-l-page__header-tools--MarginBottom: var(--pf-global--spacer--sm);
  --pf-l-page__header-tools--md--MarginRight: var(--pf-global--spacer--xl);
  --pf-l-page__header-tools--c-dropdown__toggle-text--MaxWidth: 20ch;
  --pf-l-page__header-tools--c-avatar--MarginLeft: var(--pf-global--spacer--md);

  // Sidebar
  --pf-l-page__sidebar--ZIndex: var(--pf-global--ZIndex--sm);
  --pf-l-page__sidebar--Width: 80%;
  --pf-l-page__sidebar--md--Width: #{pf-size-prem(290px)};
  --pf-l-page__sidebar--PaddingTop: var(--pf-global--spacer--md);
  --pf-l-page__sidebar--PaddingBottom: var(--pf-global--spacer--md);
  --pf-l-page__sidebar--BackgroundColor: var(--pf-global--BackgroundColor--light-100);
  --pf-l-page__sidebar--BoxShadow: var(--pf-global--BoxShadow--lg-right);

  // Sidebar transitions
  --pf-l-page__sidebar--Transition: var(--pf-global--Transition);
  --pf-l-page__sidebar--Transform--out: translate3d(-100%, 0, 0);
  --pf-l-page__sidebar--md--Transform--in: translate3d(0, 0, 0);

  // Main section
  --pf-l-page__main-section--Padding: var(--pf-global--spacer--md);
  --pf-l-page__main-section--md--Padding: var(--pf-global--spacer--xl);
  --pf-l-page__main-section--BackgroundColor: var(--pf-global--BackgroundColor--light-300);
  --pf-l-page__main--ZIndex: var(--pf-global--ZIndex--xs);

  // Main section horizontal nav
  --pf-l-page__main-nav--PaddingTop: var(--pf-global--spacer--md);
  --pf-l-page__main-nav--PaddingRight: 0;
  --pf-l-page__main-nav--PaddingBottom: var(--pf-global--spacer--md);
  --pf-l-page__main-nav--PaddingLeft: var(--pf-global--spacer--md);
  --pf-l-page__main-nav--md--PaddingLeft: var(--pf-global--spacer--xl);
  --pf-l-page__main-nav--BackgroundColor: var(--pf-global--BackgroundColor--light-100);

  // Main section modifiers
  --pf-l-page__main-section--m-light--BackgroundColor: var(--pf-global--BackgroundColor--light-100);
  --pf-l-page__main-section--m-dark-100--BackgroundColor: var(--pf-global--BackgroundColor--dark-transparent-100);
  --pf-l-page__main-section--m-dark-200--BackgroundColor: var(--pf-global--BackgroundColor--dark-transparent-200);

  // Base
  display: grid;
  height: 100vh;
  grid-template-columns: 1fr;
  grid-template-rows: max-content 1fr;
  grid-template-areas:
    "header"
    "main";

  @media (min-width: $pf-global--breakpoint--md) {
    grid-template-columns: max-content 1fr;
    grid-template-areas:
      "header header"
      "nav main";
  }
}


// Header
.pf-l-page__header {
  @extend %pf-t-dark; // force the container to follow the dark theme

  grid-area: header;
  z-index: var(--pf-l-page__header--ZIndex);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  max-width: 100%;
  min-height: var(--pf-l-page__header--MinHeight);

  > * {
    display: flex;
    align-items: center;
  }
}

// Brand
.pf-l-page__header-brand {
  padding-left: var(--pf-l-page__header-brand--PaddingLeft);

  @media (min-width: $pf-global--breakpoint--md) {
    --pf-l-page__header-brand--PaddingLeft: var(--pf-l-page__header-brand--md--PaddingLeft);

    flex: 0 0 var(--pf-l-page__header-brand--md--FlexBasis); // Hardcode header brand width based on design spec, must match --pf-c-nav--Width
    align-self: stretch;
    padding-right: var(--pf-l-page__header-brand--PaddingRight); // set padding right here to allow mobile view to accomodate tools
    background-color: var(--pf-l-page__header-brand--md--BackgroundColor);
  }
}

// Link
.pf-l-page__header-brand-link {
  display: flex;
  flex: 1;
  align-items: center;

  .pf-c-brand {
    max-height: var(--pf-l-page__header-brand-link--c-brand--MaxHeight); // Hardcode brand image max-height so it always aligns with everthing else.
  }


  @media screen and (max-width: $pf-global--breakpoint--md) {
    max-width: var(--pf-l-page__header-brand-link--md--MaxWidth);
  }
}

// Sidebar toggle
.pf-l-page__header-brand-toggle {
  .pf-c-button {
    padding: var(--pf-l-page__header-sidebar-toggle__c-button--Padding);
    margin-right: var(--pf-l-page__header-sidebar-toggle__c-button--MarginRight);
    margin-left: var(--pf-l-page__header-sidebar-toggle__c-button--MarginLeft);
    font-size: var(--pf-l-page__header-sidebar-toggle__c-button--FontSize);
    line-height: 1;

    @media screen and (min-width: $pf-global--breakpoint--md) {
      --pf-l-page__header-sidebar-toggle__c-button--MarginLeft: var(--pf-l-page__header-sidebar-toggle__c-button--md--MarginLeft);
    }
  }
}

// Header navigation
.pf-l-page__header-nav {
  order: 1;
  width: 100vw; // set width value for container to scale properly
  padding-left: var(--pf-l-page__header-nav--PaddingLeft);
  overflow: hidden;
  background-color: var(--pf-l-page__header-nav--BackgroundColor);

  @media screen and (min-width: $pf-global--breakpoint--md) {
    --pf-l-page__header-nav--PaddingLeft: var(--pf-l-page__header-nav--md--PaddingLeft);
  }

  @media screen and (min-width: $pf-global--breakpoint--lg) {
    flex: 1;
    align-self: flex-end;
    order: initial;
    width: auto;
    padding: 0;
    margin-right: var(--pf-l-page__header-nav--lg--MarginRight);
    margin-left: var(--pf-l-page__header-nav--lg--MarginLeft);
    background-color: transparent;
  }
}

// Header tools
.pf-l-page__header-tools {
  align-items: center;
  margin-top: var(--pf-l-page__header-tools--MarginTop);
  margin-right: var(--pf-l-page__header-tools--MarginRight);
  margin-bottom: var(--pf-l-page__header-tools--MarginBottom);
  margin-left: auto; // to push it to the right

  @media screen and (min-width: $pf-global--breakpoint--md) {
    --pf-l-page__header-tools--MarginRight: var(--pf-l-page__header-tools--md--MarginRight);
  }

  .pf-c-dropdown__toggle-text {
    max-width: var(--pf-l-page__header-tools--c-dropdown__toggle-text--MaxWidth);
  }

  .pf-c-avatar {
    margin-left: var(--pf-l-page__header-tools--c-avatar--MarginLeft);
  }
}

// Sidebar
.pf-l-page__sidebar {
  grid-area: 2 / 1;
  z-index: var(--pf-l-page__sidebar--ZIndex);
  width: var(--pf-l-page__sidebar--Width);
  padding-top: var(--pf-l-page__sidebar--PaddingTop);
  padding-bottom: var(--pf-l-page__sidebar--PaddingBottom);
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  background-color: var(--pf-l-page__sidebar--BackgroundColor);
  transition: var(--pf-l-page__sidebar--Transition);
  transform: var(--pf-l-page__sidebar--Transform--out);

  @media screen and (min-width: $pf-global--breakpoint--md) {
    flex: 1;
    order: initial;
    width: var(--pf-l-page__sidebar--md--Width); // hardcode sidebar based on design spec, must match pf-n-nav--Width
    max-width: var(--pf-l-page__sidebar--md--Width); // max-width value set for browser to calculate max-width while transitioning. sharing value to keep consistent
    box-shadow: var(--pf-l-page__sidebar--BoxShadow);
    transform: var(--pf-l-page__sidebar--md--Transform--in);
  }

  // Mobile
  // Expanded nav
  &.pf-m-expanded {
    box-shadow: var(--pf-l-page__sidebar--BoxShadow);
    transform: translate3d(0, 0, 0);
  }

  // Desktop
  // Collapse nav
  &.pf-m-collapsed {
    @media screen and (min-width: $pf-global--breakpoint--md) {
      max-width: 0;
      overflow: hidden;
    }
  }
}

// Main
.pf-l-page__main {
  grid-area: main;
  z-index: var(--pf-l-page__main--ZIndex);
  display: flex;
  flex-direction: column;
  padding-right: 0;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.pf-l-page__main-nav {
  padding:
    var(--pf-l-page__main-nav--PaddingTop)
    var(--pf-l-page__main-nav--PaddingRight)
    var(--pf-l-page__main-nav--PaddingBottom)
    var(--pf-l-page__main-nav--PaddingLeft);
  background-color: var(--pf-l-page__main-nav--BackgroundColor);

  @media screen and (min-width: $pf-global--breakpoint--md) {
    --pf-l-page__main-nav--PaddingLeft: var(--pf-l-page__main-nav--md--PaddingLeft);
  }
}

.pf-l-page__main-section {
  padding: var(--pf-l-page__main-section--Padding);
  background-color: var(--pf-l-page__main-section--BackgroundColor);

  @media screen and (min-width: $pf-global--breakpoint--md) {
    --pf-l-page__main-section--Padding: var(--pf-l-page__main-section--md--Padding);
  }

  &:last-of-type,
  &:only-child {
    flex-grow: 1;
    background-color: var(--pf-l-page__main-section--BackgroundColor);
  }

  &.pf-m-light {
    background-color: var(--pf-l-page__main-section--m-light--BackgroundColor);
  }

  &[class*="pf-m-dark-"] {
    @extend %pf-t-dark; // force the container to follow the dark theme
  }

  &.pf-m-dark-100 {
    background-color: var(--pf-l-page__main-section--m-dark-100--BackgroundColor);
  }

  &.pf-m-dark-200 {
    background-color: var(--pf-l-page__main-section--m-dark-200--BackgroundColor);
  }
}
