//
// Scaffolding
// --------------------------------------------------

// Reset the box-sizing
//
// Heads up! This reset may cause conflicts with some third-party widgets.
// For recommendations on resolving such conflicts, see
// https://getbootstrap.com/docs/3.4/getting-started/#third-box-sizing
* {
  @include box-sizing(border-box);
}
*:before,
*:after {
  @include box-sizing(border-box);
}

// Body reset

html,
body {
  max-width: 100%;
  height: 100vh;
  overflow: hidden;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);

  @each $theme, $map in $themes {
    & #{$theme} {
      $height: $scroll-width;
      $background-color: map-get($map, scroll-bg);
      $thumb-color: map-get($map, scroll-thumb);

      @include styled-scroll-vert-no-themes(
        $height,
        $background-color,
        $thumb-color
      );
    }
  }
}

body {
  font-family: $font-family-base;
  font-size: $font-size-base;
  line-height: $line-height-base;
  -webkit-font-smoothing: antialiased;

  @each $theme, $map in $themes {
    &.#{$theme} {
      background-color: map-get($map, body-bg);
      color: map-get($map, text-color);
    }
  }

  @each $theme, $map in $themes {
    &.#{$theme} {
      $height: $scroll-width;
      $background-color: map-get($map, scroll-bg);
      $thumb-color: map-get($map, scroll-thumb);

      @include styled-scroll-vert-no-themes(
        $height,
        $background-color,
        $thumb-color
      );
    }
  }
}

// Reset fonts for relevant elements
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

// Links

a {
  color: $link-color;
  text-decoration: none;

  &:hover,
  &:focus {
    color: $link-hover-color;
    text-decoration: $link-hover-decoration;
  }

  &:focus {
    @include tab-focus;
  }
}

// Figures
//
// We reset this here because previously Normalize had no `figure` margins. This
// ensures we don't break anyone's use of the element.

figure {
  margin: 0;
}

// Images

img {
  vertical-align: middle;
}

// Responsive images (ensure images don't scale beyond their parents)
.img-responsive {
  @include img-responsive;
}

// Rounded corners
.img-rounded {
  border-radius: $border-radius-large;
}

// Horizontal rules

hr {
  margin-top: $line-height-computed;
  margin-bottom: $line-height-computed;
  border: 0;

  @include themes-border-top(hr-border);
}

// Only display content to screen readers
//
// See: https://a11yproject.com/posts/how-to-hide-content

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

// Use in conjunction with .sr-only to only display content when it's focused.
// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
// Credit: HTML5 Boilerplate

.sr-only-focusable {
  &:active,
  &:focus {
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    overflow: visible;
    clip: auto;
  }
}

// iOS "clickable elements" fix for role="button"
//
// Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
// for traditionally non-focusable elements with role="button"
// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile

[role='button'] {
  cursor: pointer;
}

.pointer-cursor {
  cursor: pointer;
}

.pointer-grab {
  cursor: grab;
}
