@use 'variables' as *;
@use 'mixins' as *;

$cat-input-height: 2.5rem;

.label {
  overflow: hidden;
  @include cat-break-word;
}

.input-field:not(.input-horizontal),
.textarea-field:not(.textarea-horizontal),
.select-field:not(.select-horizontal) {
  .label-container.hidden {
    @include cat-visually-hidden;
  }
}

.label-container {
  flex-basis: var(--label-size, 33.33%);
}

.label-wrapper {
  display: flex;
  gap: 0.25rem;
}

.label-metadata {
  display: flex;
  flex-shrink: 0;
  flex-grow: 1;
  justify-content: space-between;
  gap: 0.25rem;
  color: cat-token('color.ui.font.muted');
}

.label-optional,
.label-character-count {
  display: inline-flex;
  align-items: center;
  max-height: 1.25rem;
  @include cat-body('xs', null);
}

.label-character-count {
  margin-left: auto;
}

.input-horizontal,
.textarea-horizontal,
.select-horizontal {
  .label-container.hidden label {
    @include cat-visually-hidden;
  }

  .label-wrapper {
    flex-direction: column;
  }

  .label-container {
    flex-shrink: 0;
  }

  label {
    min-height: $cat-input-height;
    display: inline-flex;
    align-items: center;
  }

  .label-metadata {
    justify-content: flex-start;

    .label-character-count {
      margin-left: 0;
    }
  }
}
