// stylelint-disable indentation, declaration-colon-newline-after, no-duplicate-selectors // Initial layout setup. .layout { &__page { max-width: var(--max-page-width); @include respond-to(s) { margin-inline: auto; min-height: 100vh; min-height: 100svh; } } &__header, &__footer, &__main, &__navigation, &__first-sidebar, &__second-sidebar, &__page-top, &__page-bottom, &__cookieconsent { padding-inline: var(--gutters); min-width: 0; // With display grid defaults to auto, making
 overflow.
  }
}

// If page width is bigger then content with,
// setup grid with breakout and stretch for main section.
@if $max-page-width > $max-content-width {
  .layout {
    &__navigation > * {
      max-width: var(--max-content-width);

      @include respond-to(s) {
        margin-inline: auto;
      }
    }

    &__main,
    &__grid {
      display: grid;
      // Writing "Min" instead of "min" to force use of css "min()" instead of sass "min()".
      // stylelint-disable function-name-case
      grid-template-columns:
        [stretch-start] minmax(var(--gutters), 1fr)
        [breakout-start] minmax(0, var(--breakout))
        [content-start] Min(calc(100% - var(--gutters) * 2), var(--max-content-width)) [content-end]
        minmax(0, var(--breakout)) [breakout-end]
        minmax(var(--gutters), 1fr) [stretch-end];
      // stylelint-enable function-name-case
      padding-inline: 0;
      // Stop content in main from streatching.
      height: fit-content;

      & > :not(.breakout, .stretch) {
        grid-column: content;
      }

      & > .breakout {
        grid-column: breakout;
      }

      & > .stretch {
        grid-column: stretch;
        padding-inline: var(--gutters);
      }
    }
  }
}

// Setup template areas/rown/columns for page.
.layout {
  &__page {
    display: grid;
    grid-template-areas: 'head'
                         'nav'
                         'top'
                         'main'
                         'side1'
                         'side2'
                         'bottom'
                         'foot'
                         'notice';
    grid-template-rows: auto
                        auto
                        auto
                        1fr
                        auto
                        auto
                        auto
                        auto
                        auto;
    grid-template-columns: 1fr;
  }

  @include respond-to(xl) {
    &__page {
      grid-template-rows: auto
                          auto
                          auto
                          1fr
                          auto
                          auto
                          auto;
    }

    &__sidebar-first {
      grid-template-areas: 'head head'
                           'nav nav'
                           'side1 top'
                           'side1 main'
                           'side1 bottom'
                           'foot foot'
                           'notice notice';
      grid-template-columns: 1fr
                             2fr;
    }

    &__sidebar-second {
      grid-template-areas: 'head head'
                           'nav nav'
                           'top side2'
                           'main side2'
                           'bottom side2'
                           'foot foot'
                           'notice notice';
      grid-template-columns: 2fr
                             1fr;
    }

    &__sidebar-two {
      grid-template-areas: 'head head head'
                           'nav nav nav'
                           'side1 top side2'
                           'side1 main side2'
                           'side1 bottom side2'
                           'foot foot foot'
                           'notice notice notice';
      grid-template-columns: 1fr
                             2fr
                             1fr;
    }
  }

  &__header {
    grid-area: head;
  }

  &__navigation {
    grid-area: nav;
  }

  &__page-top {
    grid-area: top;
  }

  &__main {
    grid-area: main;
  }

  &__first-sidebar {
    grid-area: side1;
  }

  &__second-sidebar {
    grid-area: side2;
  }

  &__page-bottom {
    grid-area: bottom;
  }

  &__footer {
    grid-area: foot;
  }

  &__cookieconsent {
    grid-area: notice;
  }
}