/* Quotes */
q {
  quotes: "“" "”" "‘" "’";
}

blockquote {
  padding-inline-start: 1lh;
  border-left: 1px solid var(--color-border);
  margin-right: 0;
  
  blockquote {
    margin-left: 1lh;
  }
}

blockquote > *:not(:last-child) {
  margin-bottom: var(--spacing);
}

cite {
  font-style: italic;
}

/* Lists */

li {
  margin-block: calc(var(--spacing) / 2)
}

ol ol {
  list-style: lower-alpha;
}

.task-list {
  list-style: none;
  padding-inline-start: 0;
}

.task-list .task-list-item-checkbox {
  margin-right: 0.5lh;
}

dl {
  margin
}

dt {
  font-weight: 700;
}

dd + dt {
  margin-top: calc(var(--spacing) / 2);
}

/* Links */

a {
  color: var(--color-link);
  text-decoration-color: transparent;
  transition-property: color, text-decoration-color, text-decoration-style;
  transition-duration: var(--transition-duration);
  transition-timing-function: ease;
}

a:hover,
a:focus {
  color: var(--color-link-hover);
  text-decoration: underline;
  text-underline-offset: 0.2rem;
  text-decoration-color: color-mix(in srgb, currentcolor, transparent 75%);
}

a:active {
  text-decoration-thickness: 1px;
  text-decoration-style: wavy;
}


/* Headings */

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-headings);
  font-weight: 400;
}

h1 {
  font-size: 2em;
}

h2 {
  font-size: 1.75em;
}

h3 {
  font-size: 1.5em;
}

h4 {
  font-size: 1.25em;
}

h5 {
  font-size: 1em;
}

h6 {
  font-size: .75em;
}

/* Inputs */

input[type="checkbox"],
inpit[type="radio"] {
  accent-color: var(--color-support);
}

/* Buttons */
button,
input[type="button"],
input[type="reset"],
input[type="submit"],
.as-button {
  display: inline-block;
  padding: calc(var(--spacing) / 4) calc(var(--spacing) / 2);
  background-color: var(--color-support);
  border: 2px solid var(--color-border);
  box-shadow: var(--shadow);
  color: var(--color-background) !important;
  font-weight: 700;
  text-decoration: none !important;
  transition-property: background-color, box-shadow;
  transition-duration: var(--transition-duration);
  transition-timing-function: ease;
  
  &:hover {
    box-shadow: var(--shadow-hover);
  }
  
  &:active {
    box-shadow: var(--shadow-active);
  }
  
  ~ & {
    border-collapse: collapse;
    border-left: 0;
  }
  
  &:first-of-type {
    border-top-left-radius: var(--spacing);
    border-bottom-left-radius: var(--spacing);
  }
  
  &:last-of-type {
    border-top-right-radius: var(--spacing);
    border-bottom-right-radius: var(--spacing);
  }
}

/* Misc elements */

abbr {
  cursor: help;
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 0.2rem;
}

mark {
  background-color: var(--color-support);
  color: var(--color-background);
}

del, ins {
  text-decoration-style: wavy;
  text-decoration-color: var(--color-support);
}

/* Details */

details {
  outline: 1px solid var(--color-border);
  outline-offset: -1px;
  border-radius: .3rem;
  padding: calc(var(--spacing) / 2);
  box-shadow: var(--shadow);
  transform: scale(1);
  transform-origin: center center;
  transition: transform var(--transition-duration) ease;
  
  &:hover,
  &:focus {
    transform: scale(1.025)
  }
  
  &:active {
    transform: scale(0.98);
  }
  
  summary + * {
    border-top: 1px solid var(--color-border);
    margin-top: calc(var(--spacing) / 2);
    padding-top: calc(var(--spacing) / 2);
  }
}

summary {
  cursor: pointer;
  font-weight: 700;
}

/* Media */

img, video, audio, iframe {
  border-radius: .3rem;
  box-shadow: var(--shadow);
  outline: 1px solid var(--color-border);
  outline-offset: -1px;
}

video, audio, iframe {
  display: block;
}

iframe[src*="youtube"],
iframe[src*="vimeo"],
iframe[src*="twitch"] {
  height: auto;
  aspect-ratio: 16 / 9;
}

img + em,
figcaption {
  display: block;
  padding-inline-start: 0.5lh;
  color: var(--color-shadows-hover);
  font-size: 1.2rem;
}

/* Tables */

table {
  outline: 1px solid var(--color-border);
  outline-offset: -1px;
  border-radius: .3rem;
  border-collapse: collapse;
  border-spacing: 0;
  box-shadow: var(--shadow);
  
  td, th {
    padding-block: calc(var(--spacing) / 2);
    padding-inline: calc(var(--spacing) / 2);
    border-bottom: 1px solid var(--color-border);
  }
  
  th {
    background-color: var(--color-border);
  }
}

/* Horizontal rule */
hr {
  border: none;
  height: var(--spacing);
  width: 100%;
}

/* Footnotes */

.footnotes {
  padding-top: var(--spacing);
  margin-top: calc(var(--spacing) * 2);
  border-top: 1px solid var(--color-border);
  font-size: 1.2rem;
}

/* Pre-formatted text and code */

:not(pre) > code {
  background-color: var(--color-shadows);
  padding: .3rem;
  border-radius: .3rem;
  outline: 1px solid var(--color-border);
  outline-offset: -1px;
  font-size: 1.2rem;
}

pre {
  font-size: 1.2rem;
  padding: calc(var(--spacing) / 2);
  border-radius: .3rem;
  box-shadow: var(--shadow);
}
