/*

    Utility OpenType
    Simple, CSS utility classes for advanced typographic features.
    http://utility-opentype.kennethormandy.com

*/

/* Ligatures */

.liga {
  @supports not (font-variant-ligatures: common-ligatures) {
    font-feature-settings: "liga";
  }
  -ms-font-feature-settings: "liga"; /* IE doesn’t support @supports, but `font-feature-settings` isn’t unprefixed, so we’re cool. */
  font-variant-ligatures: common-ligatures;
}

.dlig {
  @supports not (font-variant-ligatures: discretionary-ligatures) {
    font-feature-settings: "dlig";
  }
  -ms-font-feature-settings: "dlig";
  font-variant-ligatures: discretionary-ligatures;
}

/* Caps */

.smcp {
  text-transform: uppercase;
  @supports not (font-variant-caps: small-caps) {
    text-transform: inherit;
    font-feature-settings: "onum", "smcp", "c2sc" 0;
  }
  @supports (font-variant-caps: small-caps) {
    text-transform: inherit;
    font-variant-caps: small-caps;
  }
  @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
    text-transform: lowercase;
  }
  -ms-font-feature-settings: "lnum", "smcp", "c2sc" 0;
}

.c2sc {
  @supports (font-variant-caps: all-small-caps) or (font-feature-settings: "c2sc") {
    text-transform: lowercase;
  }
  @supports not (font-variant-caps: all-small-caps) {
    font-feature-settings: "onum", "smcp" 0, "c2sc";
  }
  text-transform: uppercase;
  font-variant-caps: all-small-caps;
  @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
    text-transform: lowercase
  }
  -ms-font-feature-settings: "smcp" 0, "c2sc";
}

.c2sc.smcp,
.caps {
  text-transform: uppercase;
  @supports (font-feature-settings: "smcp", "c2sc") { /* This is not valid CSS, but also doesn’t work in Sass when changed. */
    @supports not (font-variant-caps: all-small-caps) {
      text-transform: inherit;
      font-feature-settings: "smcp", "c2sc";
    }
  }
  @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
    text-transform: lowercase;
  }
  -ms-font-feature-settings: "smcp", "c2sc";
  font-variant-caps: all-small-caps;
}

.smcp.onum {
  @supports not (font-variant-caps: small-caps) {
    @supports not (font-variant-numeric: oldstyle-nums) {
      font-feature-settings: "onum", "smcp" 1;
    }
  }
}

.c2sc.onum,
.caps.onum {
  @supports not (font-variant-caps: all-small-caps) {
    @supports not (font-variant-numeric: oldstyle-nums) {
      text-transform: lowercase;
      font-feature-settings: "onum", "smcp" 1;
    }
  }
}

.case {
  font-feature-settings: "case";
}

.titl {
  @supports not (font-variant-caps: titling-caps) {
    font-feature-settings: "titl";
  }
  -ms-font-feature-settings: "titl";
  font-variant-caps: titling-caps;
}

/* Alternates */

.calt {
  @supports not (font-variant-ligatures: contextual) {
    font-feature-settings: "calt";
  }
  -ms-font-feature-settings: "calt";
  font-variant-ligatures: contextual;
}

.hist {
  @supports not (font-variant-alternates: historical-forms) {
    font-feature-settings: "hist";
  }
  -ms-font-feature-settings: "hist";
  font-variant-alternates: historical-forms;
}

.swsh,
.swsh-1 { font-feature-settings: "swsh" }
.swsh-2 { font-feature-settings: "swsh" 2 }
.swsh-3 { font-feature-settings: "swsh" 3 }

.salt,
.salt-1 { font-feature-settings: "salt" }
.salt-2 { font-feature-settings: "salt" 2 }
.salt-3 { font-feature-settings: "salt" 3 }

.ss01 { font-feature-settings: "ss01" }
.ss02 { font-feature-settings: "ss02" }
.ss03 { font-feature-settings: "ss03" }
.ss04 { font-feature-settings: "ss04" }
.ss05 { font-feature-settings: "ss05" }
.ss06 { font-feature-settings: "ss06" }
.ss07 { font-feature-settings: "ss07" }
.ss08 { font-feature-settings: "ss08" }
.ss09 { font-feature-settings: "ss09" }
.ss10 { font-feature-settings: "ss10" }
.ss11 { font-feature-settings: "ss11" }
.ss12 { font-feature-settings: "ss12" }
.ss13 { font-feature-settings: "ss13" }
.ss14 { font-feature-settings: "ss14" }
.ss15 { font-feature-settings: "ss15" }
.ss16 { font-feature-settings: "ss16" }
.ss17 { font-feature-settings: "ss17" }
.ss18 { font-feature-settings: "ss18" }
.ss19 { font-feature-settings: "ss19" }
.ss20 { font-feature-settings: "ss20" }

/* Numeric */

.frac {
  @supports not (font-variant-numeric: diagonal-fractions) {
    font-feature-settings: "frac";
  }
  -ms-font-feature-settings: "frac";
  font-variant-numeric: diagonal-fractions;
}

.afrc {
  @supports not (font-variant-numeric: stacked-fractions) {
    font-feature-settings: "afrc";
  }
  -ms-font-feature-settings: "afrc";
  font-variant-numeric: stacked-fractions;
}

.ordn {
  @supports not (font-variant-numeric: ordinal) {
    font-feature-settings: "ordn";
  }
  -ms-font-feature-settings: "ordn";
  font-variant-numeric: ordinal;
}

.sups {
  @supports not (font-variant-position: sup) {
    font-feature-settings: "sups";
    @supports (font-feature-settings: "sups") {
      font-size: 1em;
      vertical-align: baseline;
    }
    /* Since Safari lies and says it supports `font-feature-settings`, fix fallback subscript */
    @supports (overflow: -webkit-marquee) and (justify-content: inherit) {
      vertical-align: super;
    }
  }
  font-variant-position: super;
}

.subs,
.sinf {
  @supports not (font-variant-position: sub) {
    font-feature-settings: "subs";
    @supports (font-feature-settings: "subs") {
      font-size: 1em;
      vertical-align: baseline;
    }
    /* Since Safari lies and says it supports `font-feature-settings`, fix fallback subscript */
    @supports (overflow: -webkit-marquee) and (justify-content: inherit) {
      vertical-align: sub;
      font-size: smaller;
    }
  }
  font-size: inherit;
  font-variant-position: sub;
}

.sinf {
  @supports (font-feature-settings: "sinf") {
    font-variant-position: normal;
    font-feature-settings: "sinf";
    vertical-align: baseline;
  }
  /* Since Safari lies and says it supports `font-feature-settings`, fix fallback subscript */
  @supports (overflow: -webkit-marquee) and (justify-content: inherit) {
    vertical-align: sub;
    font-size: smaller;
  }
}

.lnum {
  @supports not (font-variant-numeric: lining-nums) {
    font-feature-settings: "lnum", "onum" 0;
   }
  font-variant-numeric: lining-nums;
}

.onum {
  @supports not (font-variant-numeric: oldstyle-nums) {
    font-feature-settings: "lnum" 0, "onum";
  }
  font-variant-numeric: oldstyle-nums;
}

.pnum {
  @supports not (font-variant-numeric: proportional-nums) {
    font-feature-settings: "pnum", "tnum" 0;
  }
  font-variant-numeric: proportional-nums;
}

.tnum {
  @supports not (font-variant-numeric: tabular-nums) {
    font-feature-settings: "pnum" 0, "tnum";
  }
  font-variant-numeric: tabular-nums;
}


/* High-level property cascade fallback, inherit doesn’t work */

.lnum.pnum {
  @supports not (font-feature-settings: "onum" inherit) {
    font-feature-settings: "lnum", "onum" 0, "pnum", "tnum" 0;
  }
  -ms-font-feature-settings: "lnum", "onum" 0, "pnum", "tnum" 0;
}

.lnum.tnum {
  @supports not (font-feature-settings: "onum" inherit) {
    font-feature-settings: "lnum", "onum" 0, "pnum" 0, "tnum";
  }
  -ms-font-feature-settings: "lnum", "onum" 0, "pnum" 0, "tnum";
}

.onum.pnum {
  @supports not (font-feature-settings: "onum" inherit) {
    font-feature-settings: "lnum" 0, "onum", "pnum", "tnum" 0;
  }
  -ms-font-feature-settings: "lnum" 0, "onum", "pnum", "tnum" 0;
}

.onum.tnum {
  @supports not (font-feature-settings: "onum" inherit) {
    font-feature-settings: "lnum" 0, "onum", "pnum" 0, "tnum";
  }
  -ms-font-feature-settings: "lnum" 0, "onum", "pnum" 0, "tnum";
}

.onum.zero {
  @supports not (font-feature-settings: "onum" inherit) {
    font-feature-settings: "onum", "zero";
  }
  -ms-font-feature-settings: "onum", "zero";
}

.onum.tnum.zero {
  @supports not (font-feature-settings: "onum" inherit) {
    font-feature-settings: "onum", "zero", "tnum";
  }
  -ms-font-feature-settings: "onum", "zero", "tnum";
}

.onum.pnum.zero {
  @supports not (font-feature-settings: "onum" inherit) {
    font-feature-settings: "onum", "zero", "pnum";
  }
  -ms-font-feature-settings: "onum", "zero", "pnum";
}

.lnum.zero {
  @supports not (font-feature-settings: "onum" inherit) {
    font-feature-settings: "lnum", "zero";
  }
  -ms-font-feature-settings: "lnum", "zero";
}

.lnum.tnum.zero {
  @supports not (font-feature-settings: "onum" inherit) {
  font-feature-settings: "lnum", "zero", "tnum";
  }
  -ms-font-feature-settings: "lnum", "zero", "tnum";
}

.lnum.pnum.zero {
  @supports not (font-feature-settings: "onum" inherit) {
  font-feature-settings: "lnum", "zero", "pnum";
  }
  -ms-font-feature-settings: "lnum", "zero", "pnum";
}

.zero {
  @supports not (font-variant-numeric: slashed-zero) {
    font-feature-settings: "zero";
  }
  font-variant-numeric: slashed-zero;
}
