:root {
  --textarea-background: var(--color-input);
  --textarea-foreground: var(--color-input-foreground);
  --textarea-placeholder-color: var(--color-placeholder);
  --textarea-placeholder-opacity: var(--opacity-100);
  --textarea-default-border: var(--control-border-width) solid var(--color-input-border);
  --textarea-invalid-border: var(--control-border-width) solid var(--color-error-border);
  --textarea-disabled-border: var(--control-border-width) solid var(--color-disabled-border);
  --textarea-radius: var(--control-radius);
  --textarea-padding: var(--space-4);
  --textarea-min-height: var(--control-target-size);
  --textarea-font: var(--font-type-body);
  --textarea-focus-outline: var(--focus-width) solid var(--color-focus-ring);
  --textarea-field-gap: var(--space-2);
  --textarea-label-font: var(--font-type-label-strong);
  --textarea-description-font: var(--font-type-caption);
}

.textarea-control {
  --textarea-border: var(--textarea-default-border);
}

.textarea-control[aria-invalid="true"] {
  --textarea-border: var(--textarea-invalid-border);
}

.textarea-field {
  display: grid;
  gap: var(--textarea-field-gap);
  inline-size: 100%;
  min-inline-size: 0;
  color: var(--color-foreground);
  white-space: normal;
}

.textarea-field__label {
  font: var(--textarea-label-font);
  overflow-wrap: anywhere;
}

.textarea-control {
  box-sizing: border-box;
  box-shadow: none;
  display: block;
  inline-size: 100%;
  min-inline-size: 0;
  max-inline-size: 100%;
  min-block-size: var(--textarea-min-height);
  margin: 0;
  padding: var(--textarea-padding);
  border: var(--textarea-border);
  border-radius: var(--textarea-radius);
  background: var(--textarea-background);
  color: var(--textarea-foreground);
  font: var(--textarea-font);
  resize: vertical;
}

/* Preserve caller-supplied rows even when the host enables content sizing. */
.textarea-control--fixed { field-sizing: fixed; }

.textarea-control::placeholder {
  color: var(--textarea-placeholder-color);
  opacity: var(--textarea-placeholder-opacity);
}

.textarea-control:focus-visible {
  outline: var(--textarea-focus-outline);
  outline-offset: var(--focus-offset);
}

.textarea-control:disabled {
  background: var(--color-disabled);
  color: var(--color-disabled-foreground);
  border: var(--textarea-disabled-border);
  cursor: not-allowed;
}

.textarea-field__description,
.textarea-field__error {
  margin: 0;
  font: var(--textarea-description-font);
  overflow-wrap: anywhere;
}

.textarea-field__description { color: var(--color-muted-foreground); }
.textarea-field__error { color: var(--color-error-text); }
