:host {
  display: inline-block;
  width: 100%;
  position: relative;
}
:host div {
  display: flex;
  flex-direction: column;
}
:host div label {
  display: inline-block;
  font-size: 0.9rem;
  padding-bottom: 0.4rem;
  padding-left: 0.4rem;
  transition: all 0.3s;
  color: var(--font-color, black);
}
:host div input.text-input {
  border: 0;
  border-bottom: 0.1rem solid var(--secondary-color, black);
  color: var(--font-color, black);
  font-size: 1.6rem;
  padding: 0 0.4rem 0.3rem 0.4rem;
  background-color: inherit;
  box-shadow: none;
}
:host div input.text-input:focus, :host div input.text-input:hover {
  outline: 0;
  box-shadow: none;
}
:host div input.text-input:invalid {
  border-bottom: 0.1rem solid red;
}

:host(.empty) div > label {
  opacity: 0;
  transform: translateY(0.5rem);
}