I don't remember the specific source, but I am using:
/* Number of Cards by Row based on Viewport */
@media (min-width: 576px) {
.card-deck .card {
min-width: 50.1%; /* 1 Column */
margin-bottom: 12px;
}
}
@media (min-width: 768px) {
.card-deck .card {
min-width: 33.4%; /* 2 Columns */
}
}
@media (min-width: 1200px) {
.card-deck .card {
min-width: 25.1%; /* 3 Columns */
}
}
You may want to tinker with the specific values to fit your needs.