.TextField {
  --border-color: var(--color-light);
  --label-color: var(--color-middle);
  --label-position-top: 0.4em;
  --label-font-size: 1rem;
  --icon-color: var(--color-main-dark);
  --message-color: var(--color-middle);

  position: relative;
  flex: 25% 1 0;

  &:focus-within {
    --border-color: var(--color-main-dark);
  }

  &:focus-within,
  &:has(input:not(:placeholder-shown)) {
    --icon-color: var(--color-main-dark);
    --label-color: var(--color-main-dark);
    --label-position-top: -11px;
    --label-font-size: 0.8rem;
  }

  &.error {
    --label-color: var(--color-error);
    --icon-color: var(--color-error);
    --border-color: var(--color-error);
    --message-color: var(--color-error);
  }

  & .wrapper {
    display: flex;
    align-items: center;
    padding: 0.1rem 0.5rem;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-default);
  }

  & label {
    position: absolute;
    background: var(--color-lightest);
    padding: 0.2rem;
    left: 1.8rem;
    color: var(--label-color);
    top: var(--label-position-top);
    font-size: var(--label-font-size);
    transition: var(--transition-default);
  }

  & .icon {
    color: var(--icon-color);
  }

  & input {
    all: unset;
    padding: var(--padding-small);
    font-size: 1rem;
    width: 100%;
    flex: 25% 1 0;
    color: var(--color-darkest);
  }

  & span {
    color: var(--message-color);
    font-size: 0.6rem;
  }
}