.gutter
  .heart
    %h2 0
  .inner
  
#wrap

.card.new
  %h2 Morgan Sweeney
  .title Ant Collector
  .desc Morgan has collected ants since they were six years old and now has many dozen ants but none in their pants.
  .actions
    %button.like like
    %button.trade.tradeCard trade
    %button.close close
  %svg{:viewbox => "0 0 100 100"}
    %path{:d => "m38.977 59.074c0 2.75-4.125 2.75-4.125 0s4.125-2.75 4.125 0"}
    %path{:d => "m60.477 59.074c0 2.75-4.125 2.75-4.125 0s4.125-2.75 4.125 0"}
    %path{:d => "m48.203 69.309c1.7344 0 3.1484-1.4141 3.1484-3.1484 0-0.27734-0.22266-0.5-0.5-0.5-0.27734 0-0.5 0.22266-0.5 0.5 0 1.1836-0.96484 2.1484-2.1484 2.1484s-2.1484-0.96484-2.1484-2.1484c0-0.27734-0.22266-0.5-0.5-0.5-0.27734 0-0.5 0.22266-0.5 0.5 0 1.7344 1.4141 3.1484 3.1484 3.1484z"}
    %path{:d => "m35.492 24.371c0.42187-0.35156 0.48047-0.98438 0.125-1.4062-0.35156-0.42188-0.98438-0.48438-1.4062-0.125-5.1602 4.3047-16.422 17.078-9.5312 42.562 0.21484 0.79688 0.85547 1.4062 1.6641 1.582 0.15625 0.035156 0.31641 0.050781 0.47266 0.050781 0.62891 0 1.2344-0.27344 1.6445-0.76562 0.82812-0.98828 2.0039-1.5391 2.793-1.8203 0.56641 1.6055 1.4766 3.3594 2.9727 4.9414 2.2852 2.4219 5.4336 3.9453 9.3867 4.5547-3.6055 4.5-3.8047 10.219-3.8086 10.484-0.011719 0.55078 0.42187 1.0078 0.97656 1.0234h0.023438c0.53906 0 0.98437-0.42969 1-0.97266 0-0.054688 0.17187-4.8711 2.9805-8.7773 0.63281 1.2852 1.7266 2.5 3.4141 2.5 1.7109 0 2.7578-1.2695 3.3398-2.6172 2.8867 3.9258 3.0586 8.8359 3.0586 8.8906 0.015625 0.54297 0.46094 0.97266 1 0.97266h0.023438c0.55078-0.015625 0.98828-0.47266 0.97656-1.0234-0.007812-0.26953-0.20703-6.0938-3.9141-10.613 7.0781-1.3086 10.406-5.4219 11.969-8.9766 1.0508 0.98828 2.75 2.1992 4.793 2.1992 0.078126 0 0.15625 0 0.23828-0.003906 0.47266-0.023438 1.5781-0.074219 3.4219-4.4219 1.1172-2.6406 2.1406-6.0117 2.8711-9.4922 4.8281-22.945-4.7852-30.457-9.1445-32.621-12.316-6.1172-22.195-3.6055-28.312-0.42188-0.48828 0.25391-0.67969 0.85938-0.42578 1.3477s0.85938 0.67969 1.3477 0.42578c5.7031-2.9688 14.934-5.3047 26.5 0.4375 7.1875 3.5703 9 11.586 9.2539 17.684 0.49609 11.93-4.2617 23.91-5.7344 25.062h-0.015626c-1.832 0-3.4102-1.5742-4.0352-2.2852 0.28906-0.99609 0.44531-1.8672 0.52734-2.5117 0.62891 0.16797 1.2812 0.27344 1.9727 0.27344 0.55469 0 1-0.44922 1-1 0-0.55078-0.44531-1-1-1-7.3203 0-10.703-13.941-10.734-14.082-0.097656-0.40625-0.4375-0.71094-0.85156-0.76172-0.43359-0.050781-0.82031 0.16406-1.0117 0.53906-1.8984 3.7188-1.4297 6.7539-0.67969 8.668-6.2383-2.2852-8.9766-8.6914-9.0078-8.7617-0.17969-0.43359-0.62891-0.68359-1.1016-0.60156-0.46094 0.082032-0.80469 0.47266-0.82422 0.94141-0.14062 3.3359 0.67188 5.75 1.5 7.3164-8.3125-2.4297-10.105-11.457-10.184-11.875-0.097656-0.51562-0.57422-0.86328-1.0898-0.8125-0.51953 0.054687-0.90625 0.50391-0.89062 1.0234 0.41406 13.465-1.8516 17.766-3.2383 19.133-0.66406 0.65625-1.1992 0.67188-1.2383 0.67188-0.53906-0.050781-1.0156 0.31641-1.0938 0.85156-0.078125 0.54688 0.29688 1.0547 0.84375 1.1328 0.03125 0.003906 0.11328 0.015625 0.23828 0.015625 0.36719 0 1.1016-0.09375 1.9414-0.66406 0.050781 0.38672 0.125 0.81641 0.21875 1.2656-1.0273 0.35156-2.6211 1.0781-3.7812 2.4648-0.015625 0.019532-0.054687 0.066406-0.15625 0.046875-0.039062-0.007812-0.13281-0.039062-0.16406-0.15234-2.1875-8.1094-5.7148-28.309 8.8867-40.496zm12.711 51.828c-1.0039 0-1.5898-1.207-1.8672-2.0117 0.48047 0.023438 0.95703 0.050781 1.4531 0.050781 0.74219 0 1.4453-0.035156 2.1289-0.082031-0.24219 0.83594-0.76172 2.043-1.7148 2.043zm-13.148-30.664c1.9531 3.6211 5.6367 7.9102 12.305 8.6992 0.43359 0.046875 0.83984-0.18359 1.0234-0.57422 0.18359-0.39062 0.089844-0.85938-0.22656-1.1523-0.074219-0.070312-1.2734-1.2227-1.9688-3.6367 2 2.6094 5.3359 5.6836 10.305 6.5664 0.42187 0.070312 0.83594-0.125 1.0469-0.49219 0.21094-0.36719 0.16406-0.82812-0.11719-1.1484-0.023437-0.027344-1.9414-2.2969-1.2891-5.8906 1.2227 3.5508 3.7461 9.2227 7.8945 11.551-0.03125 0.55859-0.14844 1.668-0.55078 3.0156-0.085937 0.13672-0.125 0.28516-0.13672 0.44531-1.3008 3.8906-5.0039 9.3281-15.547 9.3281-5.375 0-9.4414-1.418-12.086-4.2109-3.5664-3.7656-3.332-8.8477-3.332-8.8984v-0.011719c1.5898-2.7227 2.5-7.3203 2.6797-13.59z"}

View Compiled
@import url("https://fonts.googleapis.com/css?family=Roboto:400,400i,700");

$b: #0192ff;
$db: #024a75;
$b2: #0061e5;
$w: #eeeceb;
$y: #ffd200;
$p: #ffd9d4;
$t: transparent;

body {
  font-family: Roboto, sans-serif;
  margin: 0;
  height: 100vh;
  display: grid;
  place-items: center;
  overflow:hidden;
  background: $b;
  &.finish{
    .gutter{
      .heart{
        transform:scale(0);
      }
      &:before{
        transform:translateX(-50%) scale(1);
      }
      .inner{
        h4{
          animation:slideDown 0.5s cubic-bezier(1,0,0,1) 1 reverse;
        }
      }
    }
  }
  &.noClick{
    .card{
      pointer-events:none;
    }
  }
  &.inactive{
    #wrap{
      .card{
        @for $i from 1 through 5{
          &:nth-of-type(#{$i}){
            transform: translateX(-50%) translateY(-50%) rotate(#{($i * 5) - 15}deg);
            box-shadow:0 20px 20px -10px rgba(0,0,0,0.25);
            button{
              display:none;
            }
            &:hover{
              transform: translateX(-50%) translateY(-75%) rotate(#{($i * 5) - 15}deg);
            }
          }
        }
      }
    }
    .card{
      button.close{
        display:block;
      }
    }
    .new button.like, &:not(.liked) button.like{
      pointer-events:none;
      position:relative;
      background:rgba(255,255,255,0.25);
      &:before{
        content:'';
        position:absolute;
        width:100%;
        height:100%;
        left:0;
        top:0;
        background:repeating-linear-gradient(45deg, $db, $db 2px, $t 2px, $t 5px);
        box-shadow:inset 0 0 0 2px $db;
      }
    }
  }
  &:before{
    content:'';
    position:absolute;
    width:75vw;
    height:75vw;
    min-width:600px;
    min-height:600px;
    border-radius:100%;
    background:radial-gradient(circle at center, $y, $y 2px, $t 2px, $t 20px);
    background-size:20px 20px;
    bottom:-50%;
    left:50%;
    transform:translateX(-50%);
  }
}
.gutter{
  position:absolute;
  width:100vw;
  height:auto;
  min-height:50px;
  top:0;
  left:0;
  box-shadow:0 0 0 1px;
  padding:0 20px;
  display:flex;
  justify-content:flex-start;
  align-items:center;
  box-sizing:border-box;
  background:#fff;
  z-index:999;
  &:before{
    content:'Your Cards';
    position:absolute;
    left:50%;
    top:100%;
    margin-top:1rem;
    font-size:3rem;
    font-family:"Grenze";
    transform:translateX(-50%) scale(0);
    color:$y;
    transition:0.3s ease-in-out;
  }
  .inner{
    flex-grow:1;
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    align-items:center;
    padding:0 60px;
    h4{
      margin:10px;
      font-size:14px;
      padding:5px 10px;
      border-radius:50px;
      background:$w;
      font-weight:100;
      animation:slideDown 0.5s cubic-bezier(1,0,0,1) 1 forwards;
      animation-delay:0.75s;
      transform:translateY(-100px);
      position:relative;
      cursor:default;
      z-index:9;
      transition:0.2s ease-in-out;
      &.remove{
        animation:remove 0.2s ease-in-out;
        .card{
          display:none;
        }
        @keyframes remove{
          from{
            transform:translateY(0px) scaleX(1);
          }
          to{
            transform:translateY(0px) scaleX(0);
          }
        }
      }
      .close{
        position:absolute;
        display:flex;
        justify-content:center;
        align-items:center;
        background:$y;
        box-shadow:0 0 0 1px $db;
        width:12.5px;
        height:12.5px;
        border-radius:100%;
        font-size:0.65rem;
        left:7.5px;
        top:50%;
        transform:translateY(-50%) scale(0);
        transition:0.2s ease-in-out;
        transition-delay:0s;
        cursor:pointer;
      }
      &:hover{
        padding-left:25px;
        .close{
          transition-delay:0.2s;
          transform:translateY(-50%) scale(1);
        }
        .liked{
          transform:translateX(-50%) scale(0.5);
          z-index:10;
        }
      }
      @keyframes slideDown{
        to{
          transform:translateY(0);
        }
      }
    }
  }
}
.heart{
  position:absolute;
  top:15px;
  left:15px;
  width:20px;
  height:20px;
  display:flex;
  justify-content:center;
  align-items:center;
  transform:rotate(45deg);
  background:$p;
  margin-right:30px;
  transition:0.3s ease-in-out;
  &:before, &:after{
    content:'';
    position:absolute;
    width:100%;
    height:100%;
    background:inherit;
    border-radius:100%;
    left:0;
    top:-50%;
  }
  &:after{
    top:0;
    left:-50%;
  }
  h2{
    margin:0;
    transform:translateX(-2px) translateY(-2px) rotate(-45deg);
    font-size:14px;
    color:$b;
    position:relative;
    z-index:2;
  }
}
.card {
  background: $db;
  border-radius: 4px;
  box-shadow: 1px 1px 4px rgba(0,0,0,0.1);
  max-width: 300px;
  display: flex;
  flex-direction: column;
  width:100%;
  min-height:200px;
  position:absolute;
  left:50%;
  top:50%;
  perspective:1000px;
  transform:translateX(-50%) translateY(-50%);
  transform-style:preserve-3d;
  transition:transform 0.3s cubic-bezier(1,0,0,1);
  z-index:2;
  transform-origin:50% 500%;
  min-height:400px;
  box-shadow:0 10px 0 -5px darken($db, 5%), 0 10px 0 -4px #222, 0 20px 0 -10px darken($db, 10%), 0 20px 0 -9px #222;
  &.remove{
    pointer-events:none;
    transform:translateX(-50%) translateY(-50%) scale(0) !important;
    transform-origin:50% 50%;
  }
  &.cardStyle1{
    background: $p;
    &:before{
      background:$db;
    }
    *, .title{
      color:$db;
    }
  }
  &.cardStyle2{
    background: $w;
    &:before{
      background:$y;
    }
    img, svg{
      filter:none;
      opacity:0.75;
    }
    *, .title{
      color:$b;
    }
  }
  &:before{
    content:'';
    position:absolute;
    width:150px;
    height:150px;
    background:$b2;
    border-radius:100%;
    left:calc(50% - 75px);
    top:95px;
    z-index:0;
  }
  h2{
    font-family:"Grenze";
  }
  &.new{
    box-shadow:0 10px 0 -5px darken($db, 5%), 0 10px 0 -4px #222, 0 20px 0 -10px darken($db, 10%), 0 20px 0 -9px #222;
  }
  &.liked{
    button.close{
      display:none;
      opacity:0;
    }
  }
  &.liked.tooltip{
    animation:moveUp 0.75s cubic-bezier(1,0,0,1) 1 forwards;
    animation-delay:0.5s;
    @keyframes moveUp{
      from{
        transform:translateX(-50%) translateY(-50%) scale(1);
      }
      to{
        transform:translateX(-50%) translateY(-200vh) scale(0.75);
        box-shadow:0 0px 0 -5px darken($db, 5%), 0 0px 0 -4px #222, 0 0px 0 -10px darken($db, 10%), 0 0px 0 -9px #222;
      }
    }
  }
  &.liked:not(.tooltip){
    position: absolute;
    min-height:0px;
    background:#fff;
    height:auto;
    width:400px;
    left: 50%;
    height:auto;
    top: calc(100% + 25px);
    transform: translateX(-50%) scale(0);
    transform-origin: top;
    transition:0.2s cubic-bezier(1,0,0,1);
    box-shadow:0 10px 20px -5px rgba(0,0,0,0.25);
    z-index:999;
    padding:30px;
    display:flex;
    align-items:center;
    &:before{
      display:none;
    }
    img, svg{
      filter:none;
      opacity:0.5;
    }
    img{
      margin-bottom:25px;
    }
    .title:before{
      display:none;
    }
    *{
      color:$db;
      line-height:1;
    }
    .desc{
      display:none;
    }
    *{
      text-align:center;
      border:none;
    }
    &:after{
      content:'';
      position:absolute;
      top:-20px;
      left:calc(50% - 20px);
      width: 0;
      height: 0;
      border-style: solid;
      border-width: 0 20px 20px 20px;
      border-color: transparent transparent #fff transparent;
      border-radius:0px;
    }
    .actions{
      display:none;
    }
  }
  &:not(.new):not(.liked):not(.tooltip){
    animation:rotateOut 0.75s cubic-bezier(1,0,0,1) 1 forwards;
    animation-delay:0.5s;
    &.rightSide{
      animation:rotateOut2 0.75s cubic-bezier(1,0,0,1) 1 forwards;
    animation-delay:0.5s;
    }
    @keyframes rotateOut2{
      0%{
        transform:translateX(-50%) translateY(-50%);
      }
      50%{
        transform:translateX(-50%) translateY(-50%) rotate(15deg);
        box-shadow:0 0px 0 -5px darken($db, 5%), 0 0px 0 -4px #222, 0 0px 0 -10px darken($db, 10%), 0 0px 0 -9px #222;
        filter:brightness(1);
      }
      100%{
        transform:translateX(-50%) translateY(-50%);
        z-index:-1;
        box-shadow:0 0px 0 -5px #fff, 0 0px 0 -4px #ccc, 0 0px 0 -10px #fff, 0 0px 0 -9px #ccc;
        filter:brightness(0.75);
      }
    }
    @keyframes rotateOut{
      0%{
        transform:translateX(-50%) translateY(-50%);
      }
      50%{
        transform:translateX(-50%) translateY(-50%) rotate(-15deg);
        box-shadow:0 0px 0 -5px #fff, 0 0px 0 -4px #ccc, 0 0px 0 -10px #fff, 0 0px 0 -9px #ccc;
        filter:brightness(1);
      }
      100%{
        transform:translateX(-50%) translateY(-50%);
        box-shadow:0 0px 0 -5px #fff, 0 0px 0 -4px #ccc, 0 0px 0 -10px #fff, 0 0px 0 -9px #ccc;
        z-index:-1;
        filter:brightness(0.75);
      }
    }
  }
  &.new{
    transform:translateX(-50%) translateY(-50%);
    z-index:1;
    animation:fadeIn 0.5s ease-in-out 1 forwards;
    opacity:0;
    .title{
      &:before{
        animation:scaleIn 0.5s ease-in-out 1 forwards;
        transform:scaleX(0);
        animation-delay:1s;
        @keyframes scaleIn{
          from{
            transform:scaleX(0);
          }
          to{
            transform:scaleX(1);
          }
        }
      }
    }
    @keyframes fadeIn{
      50%{
        opacity:0;
      }
      100%{
        opacity:1;
      }
    }
  }
}
.card h2 {
  margin: 0;
  padding: 0.25rem 1rem;
  font-size:2rem;
  color:$w;
}
.card .title {
  padding: 0.45rem 1rem 0.25rem;
  position:relative;
  color:$w;
  text-transform:uppercase;
  font-size:0.75rem;
  letter-spacing:2px;
  &:before{
    content:'';
    width:50px;
    top:-0.35rem;
    left:1rem;
    height:5px;
    background:$y;
    position:absolute;
    border-radius:50px;
    transition:0.3s ease-in-out;
    transform-origin:left;
  }
}
.card .desc {
  padding: 0.5rem 1.5rem;
  line-height:1.5;
  order: 99;
  color:$w;
  font-size:0.85rem;
}
.card .actions {
  order: 100;
  padding: 1rem 1rem 0;
  display:flex;
  justify-content:space-around;
  button{
    background:transparent;
    box-shadow: 0 0 0 1px $db;
    padding:10px;
    overflow:hidden;
    border:0px;
    text-transform:uppercase;
    letter-spacing:2px;
    width:45%;
    color:$db;
    cursor:pointer;
    outline:none;
    transition:0.3s ease-in-out;
    background:$w;
    font-weight:900;
    &.close{
      display:none;
      position:absolute;
      top:-5px;
      right:-5px;
      width:20px;
      height:20px;
      padding:0;
      font-size:0;
      background:$y;
      border:none;
      border-radius:100%;
      &:before{
        content:'X';
        color:$db;
        font-size:14px;
        position:absolute;
        left:50%;
        top:50%;
        transform:translateX(-50%) translateY(-50%);
        z-index:2;
        margin-left:1.5px;
        transition:0.3s ease-in-out;
      }
    }
    &:hover{
      color:$w;
      background:$b;
      outline:none;
      &:before{
        color:$w;
      }
    }
  }
}
.card svg{
  width: 150px;
  height: 150px;
  margin: 0 auto;
  filter:invert(1);
}

.card svg, .card img{
  z-index:3;
  position:relative;
  margin-top:20px;
}

.card img{
  width:100px;
  height:100px;
  margin:40px auto 75px;
  filter:invert(1);
} 
View Compiled
var cardCount = 0;
var likedCards = 0;
var styleCount = 0;

$("body").on("click", ".trade", function(){
    cardCount++;
    newCard();
    if(cardCount % 2 == 0){
      $(".new").removeClass("rightSide");
    }
});

$("body").on("click", ".like", function(){
    likedCards++;
    if (likedCards == 5){
      $("body").addClass("inactive");
    };
    newCard();    
 $(".card").not(".liked").not(".new").addClass("tooltip");
    $(".card").not(".new").addClass("liked");
    var newLike = $(".card.tooltip h2").text();
  console.log(newLike);
    $(".gutter .inner").append("<h4 class='newLike'><span class='close'>X</span>"+newLike+"</h4>");
    $(".heart h2").html(likedCards);
    setTimeout(function(){
      $(".tooltip").appendTo(".newLike")
      $(".tooltip").removeClass("tooltip");
      $(".newLike").removeClass("newLike");
    }, 1500);
  
});

$("body").on("click", "h4 .close", function(){
  $(this).parent().addClass("remove");
  setTimeout(function(){
    $(".remove").remove();
   }, 500);
  likedCards--;
  $(".heart h2").html(likedCards);
  if (likedCards < 5){
      $("body").removeClass("inactive");
    };
});

$("body").on("click", "button.close", function(){
  $(this).parent().parent().addClass("remove");
  $("body").addClass("finish");
  $('.gutter h4 .card').each(function(index) {
        $(this).removeClass("liked").addClass("new").appendTo("#wrap");
    });
});

function newCard(){
  styleCount++;
  if (styleCount > 3){
    styleCount = 1;
  }
  var randomName = faker.name.findName().substr(0, 15);
  var randomTitle = faker.commerce.productName();
  var randomDesc = faker.commerce.productName();
  $("body").addClass("noClick");
    setTimeout(function(){
      $(".card").not(".new").not(".liked").remove();
      $("body").removeClass("noClick");
    }, 1500);
  $(".new").removeClass("new");  
  $("body").append("<div class='card new rightSide cardStyle"+styleCount+"'></div>");
  $(".card.new").append("<h2>"+randomName+"</h2><div class='title'>"+randomTitle+"</div><div class='actions'><button class='like'>like</button><button class='trade'>trade</button><button class='close'>close</button></div><img src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/383755/user"+(Math.floor(Math.random() * 29)+1)+".svg'>");
};

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js
  2. https://cdn.rawgit.com/Marak/faker.js/master/build/build/faker.js