@import url(https://fonts.googleapis.com/css?family=PT+Sans:400,700);
div { background: white;}
form {
  max-width:950px;
  margin: 0 auto;
}
form > div {
  position: relative;
  background: white;
}
form > div > label {
  opacity: 0.3;
  font-weight: bold;
  position: absolute;
  top: 22px;
  left: 20px;
}
form > div > input[type="text"],
form > div > input[type="email"],
form > div > input[type="password"],
form > div > input[type="number"] {
  width: 100%;
  border: 0;
  padding: 20px 20px 20px 50px;
  background: #eee;
  border-bottom: 1px solid #999;

}
form > div > input[type="text"]:focus,
form > div > input[type="email"]:focus,
form > div > input[type="password"]:focus,
form > div > input[type="number"]:focus {
  outline: 0;
  background: white;
}
form > div > input[type="text"]:focus + label,
form > div > input[type="email"]:focus + label,
form > div > input[type="password"]:focus + label,
form > div > input[type="number"]:focus + label {
  opacity: 0;
}
form > div > input[type="text"]:valid,
form > div > input[type="email"]:valid,
form > div > input[type="password"]:valid,
form > div > input[type="number"]: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 20px;
}
form > div > input[type="text"]:valid + label,
form > div > input[type="email"]:valid + label,
form > div > input[type="password"]:valid + label,
form > div > input[type="number"]:valid + label {
  opacity: 0;
}
form > div > input[type="text"]:invalid:not(:focus):not(:placeholder-shown),
form > div > input[type="email"]:invalid:not(:focus):not(:placeholder-shown),
form > div > input[type="password"]:invalid:not(:focus):not(:placeholder-shown),
form > div > input[type="number"]:invalid:not(:focus):not(:placeholder-shown) {
  background: pink;
}
form > div > input[type="text"]:invalid:not(:focus):not(:placeholder-shown) + label,
form > div > input[type="email"]:invalid:not(:focus):not(:placeholder-shown) + label,
form > div > input[type="password"]:invalid:not(:focus):not(:placeholder-shown) + label,
form > div > input[type="number"]:invalid:not(:focus):not(:placeholder-shown) + label {
  opacity: 0;
}
form > div > input[type="text"]:invalid:focus:not(:placeholder-shown) ~ .requirements,
form > div > input[type="email"]:invalid:focus:not(:placeholder-shown) ~ .requirements,
form > div > input[type="password"]:invalid:focus:not(:placeholder-shown) ~ .requirements,
form > div > input[type="number"]:invalid:focus:not(:placeholder-shown) ~ .requirements {
  max-height: 200px;
  padding: 0 30px 20px 50px;
}
form > div .requirements {
  padding: 0 30px 0 50px;
  color: #999;
  max-height: 0;
  transition: 0.28s;
  overflow: hidden;
  color: red;
  font-style: italic;
}
form input[type="submit"] {
  display: block;
  width: 100%;
  margin: 20px 0;
  background: #41D873;
  color: white;
  border: 0;
  padding: 20px;
  font-size: 1.2rem;
}
body {
  background: #333;
  font-family: 'PT Sans', sans-serif;
}

* {
  box-sizing: border-box;
}
option {
  width: 100%;
  border: 0;
  padding: 20px 20px 20px 50px;
  background: #eee;
}
