html {
  height: 100%;
}

// Prevent potential for layout shifts on a page with fixed 100% height. This
// can happen, for example, with the Grammarly extension in Firefox.
html.fixed-size-document {
  position: fixed;
  width: 100%;
}

body {
  position: relative;
  min-height: 100%;
}

.content {
  min-height: 100vh;
  padding-top: $header-height + $spacing-08;
  padding-bottom: $spacing-08;

  .thin-footer & {
    min-height: calc(100vh - #{$thin-footer-height});
  }

  .container-top-padded {
    padding-top: var(--spacing-16);
  }
}

.content-alt {
  background-color: $bg-light-secondary;
}

// Page header/separator
.page-separator,
.page-header {
  padding-bottom: $spacing-05;
  border-bottom: 1px solid $border-divider;
  margin: 0;

  // Apply margin above or below this header/separator only when it has a sibling
  * > * + &,
  * > & + * {
    margin-top: $spacing-08;
  }
}

// Horizontal rule. Override Bootstrap's 25% opacity, which we don't want
hr {
  opacity: unset;
}

.horizontal-divider {
  border-top: 1px solid var(--border-divider);
}

.hidden {
  @extend .d-none;
}

.hidden-print {
  @extend .d-print-none;
}

.row-spaced {
  margin-top: var(--line-height-03);
}

.row-spaced-small {
  margin-top: calc(var(--line-height-03) / 2);
}

.row-spaced-large {
  margin-top: calc(var(--line-height-03) * 2);
}

.row-spaced-extra-large {
  margin-top: calc(var(--line-height-03) * 4);
}
