@font-face {
  font-family: 'Graphik-Bold';
  src: url(00832443904fee4c15271313a38cf193.eot);
  src: url(00832443904fee4c15271313a38cf193.eot?#iefix) format("embedded-opentype"), url(8577b4fc6385b8212ef28adeb9eb7429.woff2) format("woff2"), url(fae408ba8c850b22ac30219504eed4ea.woff) format("woff");
  font-weight: 500;
  font-style: normal;
  font-stretch: normal; }

html {
  font-family: 'Graphik-Bold', sans-serif;
  font-size: 100vw;
  text-align: center;
  text-transform: uppercase; }

body {
  border: calc( 0.14634 * (40.18px + 64.82 * ((1rem - 320px) / 390))) solid currentColor;
  margin: 16px;
  padding: 0 8px; }
  @media screen and (min-width: 710px) {
    body {
      border: calc( 0.14634 * 105px) solid currentColor; } }
  @media screen and (min-width: 710px) {
    body {
      font-size: 105px; } }

header {
  font-size: calc(13.85px + 12.65 * ((1rem - 320px) / 390));
  margin-top: 1em; }
  @media screen and (min-width: 710px) {
    header {
      font-size: 26.5px; } }

footer {
  font-size: calc(8.82px + 6.18 * ((1rem - 320px) / 390));
  margin: 2em 0; }
  @media screen and (min-width: 710px) {
    footer {
      font-size: 15px; } }

footer p {
  margin: 0.25em; }

footer a {
  color: inherit;
  text-decoration: none; }

.card__error {
  display: none; }

#card-number.StripeElement--invalid + .card__error,
.card__error--visible {
  display: block; }

.fieldset {
  border: none;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  margin: 0 auto;
  max-width: 710px;
  padding: 0; }
  @media screen and (min-width: 414px) {
    .fieldset {
      justify-content: space-between; } }

header span {
  display: block;
  margin-bottom: 2em; }

legend {
  flex-basis: 100%;
  font-size: calc(22px + 30 * ((1rem - 320px) / 390));
  margin: 0 0 0.8em 0;
  text-align: center; }
  @media screen and (min-width: 710px) {
    legend {
      font-size: 52px; } }

.fieldset label {
  border: 0.175em solid #000;
  flex-basis: calc(100% - 0.6em);
  font-size: calc(52px + 23 * ((1rem - 320px) / 390));
  text-align: center;
  margin-bottom: 0.2em;
  position: relative;
  transition: transform 100ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
  z-index: 9999; }
  @media screen and (min-width: 36em) {
    .fieldset label {
      flex-basis: calc(50% - 0.6em);
      width: calc(50% - 0.6em); } }
  @media (hover: hover) {
    .fieldset label:hover {
      background-color: #2ae42a;
      transform: scale(1.02); } }
  @media screen and (min-width: 710px) {
    .fieldset label {
      font-size: 72px; } }

input[type="radio"] {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  border-image-width: 0;
  border: none;
  border-radius: 0;
  margin: 0;
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: -1; }
  input[type="radio"]:checked {
    background-color: #FF00A3; }

label.payment__heading {
  display: block; }

.payment__body--hidden {
  visibility: hidden; }

.payment__body--hidden ~ * {
  visibility: hidden; }

.payment__body {
  font-size: calc(22px + 30 * ((1rem - 320px) / 390));
  width: 100%;
  margin: 0 auto; }
  @media screen and (min-width: 414px) {
    .payment__body {
      width: 75%; } }
  @media screen and (min-width: 710px) {
    .payment__body {
      font-size: 52px; } }
  .payment__body h1 {
    display: block;
    font-size: 1em;
    margin: 0.5em auto; }

.card__group {
  margin-bottom: 0.5em; }

.card__group--flex {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between; }
  @media screen and (min-width: 414px) {
    .card__group--flex {
      justify-content: center; } }

.card__group--flex .card__field {
  display: flex;
  flex-direction: column;
  margin: 0.5em 2em; }

.card__row--flex .card__error {
  flex-basis: 100%; }

.card__label,
.card__error {
  font-size: calc(12px + 2 * ((1rem - 320px) / 390)); }
  @media screen and (min-width: 710px) {
    .card__label,
    .card__error {
      font-size: 14px; } }

.card__label {
  display: flex;
  flex-direction: column;
  align-items: center;
  font-size: calc(12px + 2 * ((1rem - 320px) / 390)); }
  @media screen and (min-width: 414px) {
    .card__label {
      display: block; } }

.card__error {
  color: #ff0000;
  flex-basis: 100%;
  line-height: 1.4; }

.card__field {
  border-bottom: 2px solid #000;
  font-family: monospace;
  font-size: 16px;
  margin: 0.5em auto 0; }

#card-number {
  flex-basis: 100%;
  width: 19ch; }

#card-expiry {
  width: 7ch; }

#card-ccv {
  width: 4ch; }

input[type="email"] {
  border: none;
  border-bottom: 2px solid #000;
  display: block;
  font-family: inherit;
  font-size: 17px;
  line-height: 20px;
  margin: 0.5em auto 1em;
  padding-bottom: 0.25em;
  max-width: 532.5px;
  text-align: center;
  width: 75%; }

.email__heading {
  display: block;
  font-size: calc(22px + 30 * ((1rem - 320px) / 390)); }
  @media screen and (min-width: 710px) {
    .email__heading {
      font-size: 52px; } }

span.email__subtext {
  display: block;
  font-size: 0.3em;
  line-height: 1.4;
  margin: 1em auto;
  max-width: 497px;
  width: 70%; }

button {
  background-color: #7ED321;
  border: none;
  color: #fff;
  display: block;
  font-family: inherit;
  font-size: calc(30px + 20 * ((1rem - 320px) / 390));
  line-height: 1.8;
  margin: 0.75em auto;
  max-width: 351px;
  transition: background-color 200ms ease-in-out;
  width: 80%; }
  @media (hover: hover) {
    button:hover:not(:disabled) {
      background-color: #FF00A3; } }
  @media screen and (min-width: 710px) {
    button {
      font-size: 50px; } }
  button:disabled {
    background-color: rgba(125, 211, 33, 0.25); }

@keyframes border-to-5 {
  0% {
    top: 0;
    left: 0;
    z-index: 10; }
  to {
    top: -5px;
    left: -5px; } }

@keyframes border-to-10 {
  0% {
    top: 0;
    left: 0; }
  100% {
    top: 5px;
    left: 5px; } }

button {
  position: relative;
  z-index: 1; }
  button:after, button:before {
    box-sizing: padding-box;
    content: "Processing";
    display: none;
    width: 100%;
    height: 100%;
    position: absolute; }
  button.button--processing {
    background: none; }
    button.button--processing:after {
      animation: border-to-5 250ms ease-in-out alternate infinite;
      background-color: blue;
      display: block; }
    button.button--processing:before {
      animation: border-to-10 250ms ease-in-out alternate infinite;
      background-color: yellow;
      display: block; }

