// These CSS custom properties are added here instead of in variables.scss
// because variables.scss is injected into every theme CSS file
// which causes problems when overriding custom properties in themes
:root {
  --topic-body-width: #{$topic-body-width};
  --topic-body-width-padding: var(--space-3);
  --topic-avatar-width: #{$topic-avatar-width};
  --d-border-radius: 4px;
  --d-border-radius-large: calc(var(--d-border-radius) * 2);
  --d-nav-pill-border-radius: var(--d-border-radius);
  --d-input-border-radius: var(--d-border-radius);
  --d-content-background: initial;

  // used for padding & margin
  --space: 0.25rem; // 4px
  --space-half: calc(var(--space) / 2); // 2px
  --space-1: var(--space); // 4px
  --space-2: calc(var(--space) * 2);
  --space-3: calc(var(--space) * 3);
  --space-4: calc(var(--space) * 4);
  --space-5: calc(var(--space) * 5);
  --space-6: calc(var(--space) * 6);
  --space-7: calc(var(--space) * 7);
  --space-8: calc(var(--space) * 8);
  --space-9: calc(var(--space) * 9);
  --space-10: calc(var(--space) * 10);
  --space-11: calc(var(--space) * 11);
  --space-12: calc(var(--space) * 12);
}

// --------------------------------------------------
// Base styles for HTML elements
// --------------------------------------------------
html {
  color: var(--primary);
  font-family: var(--font-family);
  font-size: var(--base-font-size);
  line-height: var(--line-height-large);
  background-color: var(--secondary);
  overflow-y: scroll;
  direction: ltr;

  &.text-size-smallest {
    font-size: var(--base-font-size-smallest);
  }

  &.text-size-smaller {
    font-size: var(--base-font-size-smaller);
  }

  &.text-size-larger {
    font-size: var(--base-font-size-larger);
  }

  &.text-size-largest {
    font-size: var(--base-font-size-largest);
  }
}

// Links
// --------------------------------------------------
a,
a:visited,
a:hover,
a:active {
  color: var(--d-link-color);
  text-decoration: none;
  cursor: pointer;
}

// Typography
// --------------------------------------------------
hr {
  display: block;
  height: 1px;
  margin: 1em 0;
  border: 0;
  border-top: 1px solid var(--content-border-color);
  padding: 0;
}

// Lists
// --------------------------------------------------
ul,
ol,
dd {
  margin: 1em 0 1em 1.25em;
  padding: 0;
}

.cooked ul,
.cooked ol,
.cooked dd {
  clear: both;
}

.cooked,
.d-editor-preview {
  ul,
  ol {
    padding-inline-start: 1.25em;
  }
}

li,
.cooked li,
.d-editor-preview li {
  > ul,
  > ol {
    margin: 0;
  }
}

// Embedded content
// --------------------------------------------------
img {
  vertical-align: middle;
}

.svg-icon {
  color: inherit;
}

// Forms
// --------------------------------------------------
fieldset {
  margin: 0;
  border: 0;
  padding: 0;
}

pre code {
  overflow: auto;
  tab-size: 4;

  &.lang-markdown {
    white-space: pre-wrap;
  }
}

// Tables
// --------------------------------------------------
table {
  border-collapse: collapse;
}

tbody {
  border-top: var(--d-table-border-top-height) solid var(--table-border-color);
}

.topic-list-item,
tbody tr {
  border-bottom: var(--table-border-width) solid var(--table-border-color);

  @media (prefers-reduced-motion: no-preference) {
    &.highlighted {
      animation: background-fade-highlight 2.5s ease-out;
    }
  }
}

.topic-list-header tr {
  border-bottom: var(--table-border-width) solid var(--table-border-color);
}

// https://en.wikipedia.org/wiki/Ruby_character
ruby > rt {
  font-size: 72%; // ~10px with 14px base
}

// Buttons (was in normalized)
// --------------------------------------------------
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  cursor: pointer;
}

// Inline form
// --------------------------------------------------
.inline-form {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;

  &.full-width {
    display: flex;
  }

  > input[type="text"],
  > input[type="search"],
  > input[type="password"] {
    display: inline-flex;
    flex: 1;
  }

  > .select-kit,
  > input[type="text"],
  > input[type="search"],
  > input[type="password"],
  > label,
  > .btn,
  > .d-date-input {
    margin-bottom: 0.5em; // for when items wrap (mobile, narrow windows)
    margin-right: 0.5em;

    &:last-child {
      margin-right: 0;
    }
  }
}

// Inputs
// --------------------------------------------------
input[type="checkbox"],
input[type="radio"] {
  accent-color: var(--tertiary);
}

textarea,
input,
select,
button {
  font-variation-settings: inherit;
  font-feature-settings: inherit;
}
