.layout {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  margin: 0;
  padding: 0;
  background-color: var(--color--background-base);
}

.layout__sidebar {
  padding-block: var(--space--large) var(--space--small);
  background-color: var(--color--background-light);
  border-bottom: var(--border--light);
}

.layout__logo {
  padding-inline: var(--space--base);
  max-width: 12.5rem;
  transition: opacity var(--transition-duration--base) var(--transition-timing--base);

  &:hover,
  &:focus-visible {
    opacity: 0.7;
  }

  &:active {
    opacity: 0.5;
  }
}

.layout__logo--footer {
  padding: 0;
  max-width: 9rem;
}

.layout__main {
  display: flex;
  flex: 1;
  flex-direction: column;

  container-type: inline-size;
  container-name: layout-main;
}

.layout__footer {
  padding: var(--space--page-margin-block) var(--space--page-margin-inline);
  border-top: var(--border--light);
}

.layout__main-content {
  padding: var(--space--page-margin-block) var(--space--page-margin-inline);
  flex: 1;
  width: 100%;
}

.layout__max-width {
  margin-inline: auto;
  max-width: var(--container--page-max-width);
}

.layout__max-width--tight {
  max-width: var(--container--page-max-width-tight);
}

.layout__split-layout {
  display: flex;
  flex-direction: column;
}

.layout__split-layout--gap {
  gap: var(--space--page-margin-inline);
}

.layout__split-main {
  padding-block: var(--space--page-margin-block);
  padding-inline: var(--space--page-margin-inline);
}

@media screen and (min-width: 600px) {
  .layout {
    flex-direction: row;
    height: 100vh;
    overflow: hidden;
  }

  .layout__sidebar {
    flex: 0 0 15rem;
    display: flex;
    flex-direction: column;
    border-right: var(--border--light);
    border-bottom: none;
  }

  .layout__main {
    overflow: hidden;
    height: 100vh;
  }

  .layout__main-content {
    flex: 1;
  }

  .layout__main-content--scrolls {
    /* overflow-y and min-height of 0 are required to get the element to scroll correctly */
    overflow-y: auto;
    min-height: 0;

    height: 100vh;
    display: flex;
    flex-direction: column;
  }
}

@container layout-main (width <700px) {
  .layout__order-first-on-small-screens {
    /* Make an element appear first in source order on small screens */
    order: -1;
  }
}

@container layout-main (width >=700px) {
  .layout__split-layout {
    flex-direction: row;
  }

  .layout__split-aside {
    align-self: flex-start;
    flex: 0 1 18rem;
    position: sticky;
    top: 0;
    padding-block: var(--space--large);
  }

  .layout__split-main {
    flex: 1 1 45%;
    max-width: 38rem;
    height: 100vh;

    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--color--grayscale--05) transparent;
  }

  .layout__split-aside--large {
    flex: 1 1 55%;
    align-self: stretch;
    height: 100vh;
    margin: 0;
    padding: 0;

    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--color--grayscale--05) transparent;
  }
}
