/**
 * Typography
 */

// Reboot based on :
// - normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css
// - sanitize.css v13.0.0 | CC0 1.0 Universal | github.com/csstools/sanitize.css
// ––––––––––––––––––––

// Add the correct font weight in Chrome, Edge, and Safari
b,
strong {
  font-weight: bolder;
}

// Prevent `sub` and `sup` elements from affecting the line height in all browsers
sub,
sup {
  position: relative;
  font-size: 0.75em;
  line-height: 0;
  vertical-align: baseline;
}
sub {
  bottom: -0.25em;
}
sup {
  top: -0.5em;
}

// Pico
// ––––––––––––––––––––

address,
blockquote,
dl,
figure,
form,
ol,
p,
pre,
table,
ul {
  margin-top: 0;
  margin-bottom: var(--typography-spacing-vertical);
  color: var(--color);
  font-style: normal;
  font-weight: var(--font-weight);
  font-size: var(--font-size);
}

// Links
// 1. Remove the gray background on active links in IE 10
a,
[role="link"] {
  --color: var(--primary);
  --background-color: transparent;
  outline: none;
  background-color: var(--background-color); // 1
  color: var(--color);
  text-decoration: var(--text-decoration);

  @if $enable-transitions {
    transition: background-color var(--transition), color var(--transition),
      text-decoration var(--transition), box-shadow var(--transition);
  }

  &:is([aria-current], :hover, :active, :focus) {
    --color: var(--primary-hover);
    --text-decoration: underline;
  }

  &:focus {
    --background-color: var(--primary-focus);
  }

  @if $enable-classes {
    // Secondary
    &.secondary {
      --color: var(--secondary);

      &:is([aria-current], :hover, :active, :focus) {
        --color: var(--secondary-hover);
      }

      &:focus {
        --background-color: var(--secondary-focus);
      }
    }

    // Contrast
    &.contrast {
      --color: var(--contrast);

      &:is([aria-current], :hover, :active, :focus) {
        --color: var(--contrast-hover);
      }

      &:focus {
        --background-color: var(--contrast-focus);
      }
    }
  }
}

// Headings
h1,
h2,
h3,
h4,
h5,
h6 {
  margin-top: 0;
  margin-bottom: var(--typography-spacing-vertical);
  color: var(--color);
  font-weight: var(--font-weight);
  font-size: var(--font-size);
  font-family: var(--font-family);
}

h1 {
  --color: var(--h1-color);
}
h2 {
  --color: var(--h2-color);
}
h3 {
  --color: var(--h3-color);
}
h4 {
  --color: var(--h4-color);
}
h5 {
  --color: var(--h5-color);
}
h6 {
  --color: var(--h6-color);
}

// Margin-top for headings after a typography block
:where(address, blockquote, dl, figure, form, ol, p, pre, table, ul) {
  ~ :is(h1, h2, h3, h4, h5, h6) {
    margin-top: var(--typography-spacing-vertical);
  }
}

// Heading group
@if $enable-classes == false {
  hgroup {
    margin-bottom: var(--typography-spacing-vertical);

    > * {
      margin-bottom: 0;
    }

    > *:last-child {
      --color: var(--muted-color);
      --font-weight: unset;
      font-size: 1rem;
      font-family: unset;
    }
  }
}

@if $enable-classes {
  hgroup,
  .headings {
    margin-bottom: var(--typography-spacing-vertical);

    > * {
      margin-bottom: 0;
    }

    > *:last-child {
      --color: var(--muted-color);
      --font-weight: unset;
      font-size: 1rem;
      font-family: unset;
    }
  }
}

// Paragraphs
p {
  margin-bottom: var(--typography-spacing-vertical);
}

// Small
small {
  font-size: var(--font-size);
}

// Lists
:where(dl, ol, ul) {
  padding-right: 0;
  padding-left: var(--spacing);
  padding-inline-start: var(--spacing);
  padding-inline-end: 0;

  li {
    margin-bottom: calc(var(--typography-spacing-vertical) * 0.25);
  }
}

// Margin-top for nested lists
// 1. Remove the margin on nested lists in Chrome, Edge, IE, and Safari
:where(dl, ol, ul) {
  :is(dl, ol, ul) {
    margin: 0; // 1
    margin-top: calc(var(--typography-spacing-vertical) * 0.25);
  }
}

ul li {
  list-style: square;
}

// Highlighted text
mark {
  padding: 0.125rem 0.25rem;
  background-color: var(--mark-background-color);
  color: var(--mark-color);
  vertical-align: baseline;
}

// Blockquote
blockquote {
  display: block;
  margin: var(--typography-spacing-vertical) 0;
  padding: var(--spacing);
  border-right: none;
  border-left: 0.25rem solid var(--blockquote-border-color);
  border-inline-start: 0.25rem solid var(--blockquote-border-color);
  border-inline-end: none;

  footer {
    margin-top: calc(var(--typography-spacing-vertical) * 0.5);
    color: var(--blockquote-footer-color);
  }
}

// Abbreviations
// 1. Remove underline decoration in Chrome, Edge, IE, Opera, and Safari
abbr[title] {
  border-bottom: 1px dotted;
  text-decoration: none; // 1
  cursor: help;
}

// Ins
ins {
  color: var(--ins-color);
  text-decoration: none;
}

// del
del {
  color: var(--del-color);
}

// selection
::selection {
  background-color: var(--primary-focus);
}
