.text-body-base {
  font: var(--sds-font-body-base);
}
.text-line-height-single {
  line-height: 1;
}
.text-line-height-body {
  line-height: var(--global-line-height-body);
}
.text-body-small {
  font: var(--sds-font-body-small);
}
.text-body-small-strong {
  font: var(--sds-font-body-small-strong);
}
.text-body-strong {
  font: var(--sds-font-body-strong);
}
.text-body-emphasis {
  font: var(--sds-font-body-emphasis);
}

.text-body-link {
  --border-radius: var(--sds-size-radius-100);
  color: inherit;
  cursor: pointer;
  font: var(--sds-font-body-link);
  position: relative;
  /* Override */
  &.link {
    text-decoration: underline;
  }
  &:focus-visible {
    outline: none;
    --offset: calc(var(--sds-size-stroke-border) * 2);
    &::before {
      content: "";
      border-radius: calc(var(--border-radius) + var(--offset));
      bottom: calc(-1 * var(--offset));
      box-shadow: 0 0 0 var(--global-focus-ring-size)
        var(--global-focus-ring-color);
      left: calc(-1 * var(--offset));
      position: absolute;
      right: calc(-1 * var(--offset));
      top: calc(-1 * var(--offset));
      z-index: var(--global-stack-focus);
    }
  }
}

.text-input {
  font: var(--sds-font-input);
}
.text-body-code {
  font: var(--sds-font-body-code);
}
.text-subtitle {
  font: var(--sds-font-subtitle);
}
.text-subheading {
  font: var(--sds-font-subheading);
}
.text-heading {
  font: var(--sds-font-heading);
}
.text-title-hero {
  font: var(--sds-font-title-hero);
}
.text-title-page {
  font: var(--sds-font-title-page);
}

.text-list {
  display: flex;
  flex-direction: column;
  margin: 0;

  &.text-list-density-default {
    gap: var(--sds-size-space-300);
    .text-list-title {
      margin-bottom: var(--sds-size-space-400);
    }
  }

  &.text-list-density-tight {
    gap: var(--sds-size-space-200);
    .text-list-title {
      margin-bottom: var(--sds-size-space-100);
    }
  }

  &.text-link-list {
    list-style: none;
    padding: 0;
  }

  &:not(.text-link-list) {
    color: var(--sds-color-text-default-secondary);
    padding-left: 1rem;
  }
}

.text-list-item {
  font: var(--sds-font-body);
}

.text-price {
  align-items: end;
  display: flex;

  &.text-price-size-small {
    gap: var(--sds-size-space-100);

    > .text-body-small {
      margin-bottom: var(--sds-size-space-100);
    }
  }

  &.text-price-size-large {
    gap: var(--sds-size-space-200);

    > .text-body-small {
      margin-bottom: var(--sds-size-space-300);
    }
  }

  .text-price-currency {
    font-size: 0.6em;
    margin-right: var(--sds-size-space-050);
  }
}

.text-align-center {
  text-align: center;
}
.text-align-start {
  text-align: left;
}
.text-align-end {
  text-align: right;
}

.text-content-title,
.text-content-heading {
  > * {
    width: 100%;
  }
}

/* Text truncation with ellipsis */
.text-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: var(--text-truncate-line-clamp, 9999);
  line-clamp: var(--text-truncate-line-clamp, 9999);
}
