[clause],可是 / 但是 + [clause]
可是 and 但是 both mean "but". They open the second clause.
可是 is lighter and belongs to speech. 但是 is a little firmer and turns up more in writing. In conversation they swap freely, and neither is wrong where the other would go.
What follows has to be a clause with its own predicate. The subject can drop when it's the same as in the first clause.
虽然 "although" in the first clause pairs with 但是 or 可是 in the second. English drops one of the two; Chinese keeps both, and it isn't redundant.
不过 is a softer "but", closer to "though".