.site-layout {
  display: flex;
  flex-flow: column nowrap;
  align-content: stretch;
  position: relative;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 100%;
  min-width: 300px;
  overflow: unset;
  padding: 0rem;
  margin: 0rem;
}

.site-layout-grid {
  display: grid;
  grid-template-areas: 'header'
                        'main'
                        'footer';
  grid-template-rows: auto 1fr auto;
  align-content: stretch;
  gap: 0rem;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 100%;
  min-width: 300px;
  overflow: unset;
  padding: 0rem;
  margin: 0rem;
}

.site-layout-shift {
  display: grid;
  position: fixed; /* This does the magic in forcing the grid to resize fully upon column expansion */
  grid-template-areas: 'left top right'
                        'left main right'
                        'left bottom right';
  grid-template-rows: auto 1fr auto;
  grid-template-columns: auto 1fr auto;
  -width: 100%; /* This disrupts grid resizing on column expansion */
  height: 100%;
  overflow-x: hidden;
  gap: 0em;
  justify-content: center;
}

.site-layout-shift > div[style*="grid-area:left"],
.site-layout-shift > div[style*="grid-area: left"] {
  width: 0px;
  overflow: hidden;
}

.site-layout-shift > div[style*="grid-area:right"],
.site-layout-shift > div[style*="grid-area: right"] {
  width: 0px;
  overflow: hidden;
}

.site-layout-shift > div[style*="grid-area:top"],
.site-layout-shift > div[style*="grid-area: top"] {
  height: 0px;
  overflow: hidden;
}

.site-layout-shift > div[style*="grid-area:bottom"],
.site-layout-shift > div[style*="grid-area: bottom"] {
  height: 0px;
  overflow: hidden;
}

.site-layout-shift > div[style*="grid-area:main"],
.site-layout-shift > div[style*="grid-area: main"] {
  min-width:100vw; /* stabilizies main's width but causes space on the left */
}

.option--layout-effects .site-layout-shift > div[style*="grid-area:left"],
.option--layout-effects .site-layout-shift > div[style*="grid-area: left"] {
  -webkit-transition-property: width;
  -webkit-transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  -webkit-transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));

  -moz-transition-property: width;
  -moz-transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  -moz-transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));

  transition-property: width;
  transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));
}

.option--layout-effects .site-layout-shift > div[style*="grid-area:right"],
.option--layout-effects .site-layout-shift > div[style*="grid-area: right"] {
  -webkit-transition-property: width;
  -webkit-transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  -webkit-transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));

  -moz-transition-property: width;
  -moz-transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  -moz-transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));

  transition-property: width;
  transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));
}

.option--layout-effects .site-layout-shift > div[style*="grid-area:top"],
.option--layout-effects .site-layout-shift > div[style*="grid-area: top"] {
  -webkit-transition-property: height;
  -webkit-transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  -webkit-transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));

  -moz-transition-property: height;
  -moz-transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  -moz-transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));

  transition-property: height;
  transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));
}

.option--layout-effects .site-layout-shift > div[style*="grid-area:bottom"],
.option--layout-effects .site-layout-shift > div[style*="grid-area: bottom"] {
  -webkit-transition-property: height;
  -webkit-transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  -webkit-transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));

  -moz-transition-property: height;
  -moz-transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  -moz-transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));

  transition-property: height;
  transition-duration: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, 900ms));
  transition-timing-function: var(--layout-shift-anim-duration, var( --default-layout-shift-anim-duration, cubic-bezier(0.8,-0.27,0.025,1.105)));
}

.mode--layout-shift-left .site-layout-shift > div[style*="grid-area:left"],
.mode--layout-shift-left .site-layout-shift > div[style*="grid-area: left"] {
  left: 0;
  width: 22rem;
}

.mode--layout-shift-right .site-layout-shift {
  right: 0;
  /* width: 22rem; */
}

/* with a direction of ltr, this produces a -22em right offset for site-layout-shift */
.mode--layout-shift-right .site-layout-shift > div[style*="grid-area:right"],
.mode--layout-shift-right .site-layout-shift > div[style*="grid-area: right"] {
  right: 0;
  width: 22rem;
}

.mode--layout-shift-right .site-layout-shift {
  /* right: 22rem; */
}

.mode--layout-shift-top .site-layout-shift > div[style*="grid-area:top"],
.mode--layout-shift-top .site-layout-shift > div[style*="grid-area: top"] {
  top: 0;
  height: 12rem;
}

.mode--layout-shift-right .site-layout-shift {
  top: 12rem;
}

.mode--layout-shift-bottom .site-layout-shift > div[style*="grid-area:bottom"],
.mode--layout-shift-bottom .site-layout-shift > div[style*="grid-area: bottom"] {
  bottom: 0;
  height: 12rem;
}

.mode--layout-shift-right .site-layout-shift {
  top: 0rem;
}

.site-header {
  display: inline-flex;
  flex-flow: row nowrap;
  grid-area: header;
  width: 100%;
  min-width: 375px;
  align-items: center;
  box-sizing: border-box;
}

.site-header-inner {
  display: inline-flex;
  flex-flow: row nowrap;
  width: 100%;
  align-items: center;
  box-sizing: border-box;
}

.site-body {
  display: inline-block;
  grid-area: body;
  width: 100%;
  height: 100%;
  padding: 0rem;
  margin: 0rem;
  box-sizing: border-box;
}

.site-body-container {
  display: inline-block;
  width: 100%;
  min-width: 375px;
  height: 100%;
  padding: 0rem;
  margin: 0rem;
  box-sizing: border-box;
}

.site-footer {
  display: flex;
  flex-flow: row nowrap;
  grid-area: footer;
  bottom: 0;
  width: 100%;
  height: 5rem;
  padding: 0rem;
  margin: 0rem;
  box-sizing: border-box;
  white-space: nowrap;
}

.site-container {
  display: block;
  padding-left: 1rem;
  padding-right: 1rem;
  box-sizing: border-box;
}

.site-content {
  padding-left: 1rem;
  padding-right: 1rem;
  box-sizing: border-box;
}

.site-clickable {
  display: inline-block;
  cursor: pointer;
  text-decoration: underline;
}

@media only screen and (max-width: 480px) {
}

@media only screen and (max-width: 450px) {
}

@media only screen and (max-width: 850px) {
}

@media only screen and (min-width: 851px) {
}
