html {
  box-sizing: border-box;
}
*,
*:before,
*:after {
  box-sizing: inherit;
}
body {
  display: grid;
  grid-gap: 10px 15px;
  grid-template-columns: 1fr;
  grid-template-areas: "header" "main" "aside" "footer";
  max-width: 1024px;
  min-height: 100vh;
  margin: 0 auto;
  padding: 15px;
  background: #191b22;
  color: #fff;
}
h1 {
  font-size: 2.5em;
  text-align: center;
}
h2 {
  font-size: 1.5em;
}
.familiar header {
  font-size: 2.2em;
}
.familiar p {
  font-size: 1.2em;
}
.header {
  grid-area: header;
  justify-self: center;
  align-self: center;
}
.aside {
  grid-area: aside;
}
.main {
  grid-area: main;
}
.footer {
  grid-area: footer;
  justify-self: center;
  align-self: end;
  display: flex;
  flex-flow: column nowrap;
  font-size: 0.9em;
}
a {
  text-decoration: none;
  color: #a288bd;
}
b {
  color: #a288bd;
}
form {
  display: flex;
  flex-flow: column nowrap;
}
form:invalid button {
  cursor: not-allowed;
  opacity: 0.5;
}
label {
  flex: 1 0;
  padding: 10px;
}
input {
  flex: 1 0;
  background: #282c37;
  color: #fff;
  outline: 0;
  border: none;
  padding: 10px;
  margin: 0;
}
input:not(:placeholder-shown):invalid {
  color: #9f6000;
}
button {
  flex: 1 0;
  background-color: #a288bd;
  color: #fff;
  border: none;
  padding: 10px;
  margin: 0;
  cursor: pointer;
  white-space: nowrap;
}
@media (min-width: 768px) {
  body {
    grid-template-columns: 3fr 1fr;
    grid-template-areas: "header header" "main aside" "footer footer";
    font-size: 1.2em;
  }
  h1 {
    font-size: 4em;
  }
  h2 {
    font-size: 2em;
  }
  .familiar header {
    font-size: 3em;
  }
  .familiar p {
    font-size: 1.4em;
  }
  .footer {
    flex-flow: row;
  }
}
