$side-padding:3em;

body, html{
  position: relative;
  width: 100%;
  height:100%;
  font-family: sans-serif;
  font-style: normal;
  margin:0;
  padding:0;
}

body{
  overflow:hidden;
}

#root{
  display: flex;
  flex-direction: column;
  width: 100vw;
  max-width: 1920px;
  height:100vh;
  // ? https://www.bram.us/2020/05/06/100vh-in-safari-on-ios/
  @supports (-webkit-touch-callout: none) {
    height: -webkit-fill-available;
  }
  margin:0 auto;
  %layout-element{
    width:100vw;
    max-width: 1920px;
    box-sizing:border-box;
  }
  header[role="banner"]{
    z-index:10;
    flex: 0 0 auto;
    @extend %layout-element;
    padding:1em $side-padding 1em $side-padding;
    @media only screen and (max-width: $small-bp), (orientation: portrait) {
      padding:1em $side-padding/2 0 $side-padding/2;
    }
  }
  section[role="main-content"]{
    display: flex;
    flex:1 1 auto;
    @extend %layout-element;
    overflow: hidden;
    position: relative;
    >.wrapper{
      position: relative;
      padding:0 $side-padding 0 $side-padding;
      // height:100%; max-height:100%;
      display: flex;
      flex: 1;
      overflow-y: hidden;
      overflow-x: hidden;
      >*{
        @include fade-transition;
      }
      @media only screen and (max-width: $small-bp), (orientation: portrait) {
        overflow-y: auto;
        padding:0 $side-padding/2 0 $side-padding/2;
      }
    }
    .main-content-layout{
      position: relative;
      // https://stackoverflow.com/a/33644245
      display: flex;
      flex: 1;
      >section{
        max-height: 100%;
      }
      >header,
      >section>.wrapper,
      >nav{
        box-sizing: border-box;
        max-height: 100%;
        padding-top:$base-line;
      }
      >section>.wrapper,
      >nav{
        overflow-x: hidden;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
      }
    }
    @media only screen and (max-width: $small-bp), (orientation: portrait) {
      .main-content-layout{
        display: flex;
        flex-direction: column;
      }
    }
    @media (orientation: portrait) {
      .main-content-layout{
        display: flex;
        flex-direction: column;
      }
    }
  }
  footer[role="tools"]{
    flex:0 0 auto;
    @extend %layout-element;
    // padding-bottom: 1em;
    // >*{
    //   padding:0.5em 1em;
    // }
  }
}