div > fieldset > form > div {
  position: relative;
  background: white;
}

div > fieldset > form > div > label {
  opacity: 0.3;
  font-weight: bold;
  position: absolute;
  top: 13px;
  left: 20px;
}

div > fieldset > form > div > input[type="text"][required=""],
div > fieldset > form > div > input[type="text"][optional=""],
div > fieldset > form > div > input[type="email"],
div > fieldset > form > div > input[type="tel"] {
  width: 100%;
  border: 0;
  padding: 15px 20px 20px 50px;
  background: #eee;
}

div > fieldset > form > div > input[type="text"][required=""]:focus,
div > fieldset > form > div > input[type="text"][optional=""]:focus,
div > fieldset > form > div > input[type="email"]:focus,
div > fieldset > form > div > input[type="tel"]:focus {
  outline: 0;
  background: white;
}

div > fieldset > form > div > input[type="text"][required=""]:focus + label,
div > fieldset > form > div > input[type="text"][optional=""]:focus + label,
div > fieldset > form > div > input[type="email"]:focus + label,
div > fieldset > form > div > input[type="tel"]:focus + label {
  opacity: 0;
}

div > fieldset > form > div > input[type="text"][required=""]:valid,
div > fieldset > form > div > input[type="text"][optional=""]:valid,
div > fieldset > form > div > input[type="email"]:valid,
div > fieldset > form > div > input[type="tel"]:valid {
  background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/3/check.svg);
  background-size: 20px;
  background-repeat: no-repeat;
  background-position: 20px 10px;
}

div > fieldset > form > div > input[type="text"][required=""]:valid + label,
div > fieldset > form > div > input[type="text"][optional=""]:valid + label,
div > fieldset > form > div > input[type="email"]:valid + label,
div > fieldset > form > div > input[type="tel"]:valid + label {
  opacity: 0;
}

div > fieldset > form > div > input[type="text"][required=""]:invalid:not(:focus):not(:placeholder-shown),
div > fieldset > form > div > input[type="text"][optional=""]:invalid:not(:focus):not(:placeholder-shown),
div > fieldset > form > div > input[type="email"]:invalid:not(:focus):not(:placeholder-shown),
div > fieldset > form > div > input[type="tel"]:invalid:not(:focus):not(:placeholder-shown) {
  background: pink;
}

div > fieldset > form > div > input[type="text"][required=""]:invalid:not(:focus):not(:placeholder-shown) + label,
div > fieldset > form > div > input[type="text"][optional=""]:invalid:not(:focus):not(:placeholder-shown) + label,
div > fieldset > form > div > input[type="email"]:invalid:not(:focus):not(:placeholder-shown) + label,
div > fieldset > form > div > input[type="tel"]:invalid:not(:focus):not(:placeholder-shown) + label {
  opacity: 0;
}

div > fieldset > form > div > input[type="text"][required=""]:invalid:focus:not(:placeholder-shown) ~ .requirements,
div > fieldset > form > div > input[type="text"][optional=""]:invalid:focus:not(:placeholder-shown) ~ .requirements,
div > fieldset > form > div > input[type="email"]:invalid:focus:not(:placeholder-shown) ~ .requirements,
div > fieldset > form > div > input[type="tel"]:invalid:focus:not(:placeholder-shown) ~ .requirements {
  max-height: 200px;
  padding: 15px 30px 0px 40px;
}

div > fieldset > form > div .requirements {
  padding: 0px 30px 0px 40px;
  color: #999;
  max-height: 0;
  -webkit-transition: 0.28s;
  -o-transition: 0.28s;
  transition: 0.28s;
  overflow: hidden;
  color: red;
  font-style: italic;
}

.styling {
  margin-top: 15px;
  margin-bottom: 15px;
}

fieldset {
  border: 1px solid black;
  margin: 0;
  padding: 25px;
  margin-top: 25px;
  background-color: #fcfcfc;
  border-radius: 10px;
  max-width: 600px;
  margin: auto;
}
