// =============================================================================
// Mixins
// =============================================================================
// Please note that the mixins partial shouldn't include any classes. This is so
// it can be included in any file without accidentally producing output

// Turns on font-smoothing when used. Use sparingly.
@mixin font-smoothing {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

@mixin clearfix() {
  &:before,
  &:after {
    content: ' ';
    display: table;
  }

  &:after {
    clear: both;
  }
}

@mixin unlist() {
  margin-top: 0;
  margin-bottom: 0;
  padding-inline-start: 0;
  list-style-type: none;
  font-style: normal;

  li {
    list-style-type: none;
    font-style: normal;
  }
}

// remove list styles, but only for the immediate element -
// allow nested lists inside it to keep the default style

@mixin unlistimmediate() {
  margin-top: 0;
  margin-bottom: 0;
  padding-inline-start: 0;
  list-style-type: none;
  font-style: normal;

  > li {
    list-style-type: none;
    font-style: normal;
  }
}

@mixin transition($transition...) {
  body.ready & {
    transition: $transition;
  }
}

@mixin svg-icon($size: 1em, $position: text-top) {
  width: $size;
  height: $size;
  vertical-align: $position;
}

// Applies given rules on hover, for devices that support hover.
@mixin hover {
  @media (hover: hover) {
    a:hover {
      @content;
    }
  }
}

// Where included, show the focus outline within focusable items instead of around them.
// This is useful when focusable items are tightly packed and there is no space in-between.
@mixin show-focus-outline-inside {
  outline-offset: -1 * $focus-outline-width;
}

/**
 * Apply styles for the dark theme only.
 */
@mixin dark-theme() {
  .w-theme-dark & {
    @content;
  }

  @media (prefers-color-scheme: dark) {
    .w-theme-system & {
      @content;
    }
  }
}

/**
 * Apply styles for the light theme only.
 */
@mixin light-theme() {
  .w-theme-light & {
    @content;
  }

  @media (prefers-color-scheme: light) {
    .w-theme-system & {
      @content;
    }
  }
}
