:root {
  --trans-time: 300ms;
}

.group {
  position: relative;
}

/*  INPUTS  */
.group textarea {
  resize: none;
}

.group input,
.group textarea {
  background: none;
  font-family: var(--font-sans);
  font-size: 1.125rem;
  display: block;
  border-radius: 0;
  border-bottom-width: 1px;
  border-bottom-style: solid;
}

input:focus,
textarea:focus {
  outline: none;
}

.group input:placeholder-shown ~ label,
.group textarea:placeholder-shown ~ label {
  top: 10px !important;
  font-size: 1rem !important;
}

.group input:focus ~ label,
.group textarea:focus ~ label {
  top: -0.875rem !important;
  font-size: 0.875rem !important;
}

.group input:valid ~ label,
.group textarea:valid ~ label,
.group input:invalid ~ label,
.group textarea:invalid ~ label {
  top: -0.875rem;
  font-size: 0.875rem;
}

.group input:focus ~ .bar:before,
.group textarea:focus ~ .bar:before {
  width: 100%;
}

.group input[type='password'] {
  letter-spacing: 0.3em;
}

.group label {
  font-size: 1rem;
  position: absolute;
  pointer-events: none;
  left: 0;
  top: 10px;
  transition: var(--trans-time) ease all;
}

.bar {
  position: relative;
  display: block;
  width: 100%;
}

.bar:before {
  content: '';
  height: 2px;
  width: 0;
  bottom: 0px;
  position: absolute;
  background: var(--gray-900);
  transition: var(--trans-time) ease all;
  left: 0%;
}

/* CHECKBOX */

.checkbox + label::before {
  display: inline-block;
  border: 1px solid;
  content: '';
  min-width: 22px;
  min-height: 22px;
  width: 22px;
  height: 22px;
  background-color: transparent;
  cursor: pointer;
  transition: background 0.5s;
}

.checkbox + label::after {
  content: '';
  position: absolute;
  display: inline-block;
  width: 7px;
  margin-left: 7px;
  margin-top: 2px;
  height: 13px;
  border: solid white;
  border-width: 0 2px 2px 0;
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
  opacity: 0;
  transition: opacity 0.5s;
  cursor: pointer;
}

.checkbox.white + label::before {
  border-color: white;
}

.checkbox.cyan-600 + label::before {
  border-color: var(--cyan-600);
}

.checkbox:checked + label:before {
  background-color: var(--gray-900);
  border-color: var(--gray-900);
}

.checkbox:checked + label:after {
  opacity: 1;
}
