 :root{
    --red:#e5573f;
    --purple:#6c3fd9;
    --blue:#3f5fd9;
    --gold:#f4c542;
  }
  *{box-sizing:border-box;}
  .grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:24px;
    max-width:1200px;
    margin:0 auto;
  }
  @media (max-width:900px){
    .grid{grid-template-columns:1fr;}
  }
  .card{
    position:relative;
    border-radius:10px;
    overflow:hidden;
    color:#fff;
    text-align:center;
    box-shadow:0 6px 18px rgba(0,0,0,.12);
  }
  .card-top{
    padding:36px 24px 30px;
  }
  .card-top img.logo{
    max-height:60px;
    margin-bottom:20px;
  }
  .card-top .stat{
    font-size:1.3rem;
    font-weight:700;
    margin:0 0 18px;
  }
  .card-top a{
    color:var(--gold);
    text-decoration:none;
    font-weight:700;
    font-size:1rem;
  }
  .card-top a:hover{text-decoration:underline;}

  /* the wave strip: this is what actually creates the dip from color into the image */
  .wave{
    display:block;
    width:100%;
    height:50px;
    margin-bottom:-1px; /* removes hairline gap */
  }
  .wave path{
    /* flat along the top edge (so it joins seamlessly with card-top above)
       and curved along the bottom edge (so it dips down over the image) */
  }

  .card-img{
    height:150px;
    background-size:cover;
    background-position:center;
    display:block;
  }

  .red    .card-top{background:var(--red);}
  .purple .card-top{background:var(--purple);}
  .blue   .card-top{background:var(--blue);}

  .red    .wave path{fill:var(--red);}
  .purple .wave path{fill:var(--purple);}
  .blue   .wave path{fill:var(--blue);}