I have a window of 3-9pm. However, I will sometimes allow later check ins, but I charge a few for this, which is mentioned in my house rules. Mostly, guests ask in advance if they can check in after 9pm. Sometimes they have already noted that there is a fee and say they will pay it before I have to ask. If not, I respond saying, "Okay, but don't forget there is a fee, as mentioned on the listing."
Mostly this has worked absolutely fine. I've only had problems a couple of times where the guests told me they were going to arrive within my check in window, announced last minute that they were coming after 9pm and then seemed taken aback by the idea of a late check in fee.
If a guest is 30-45 minues late, I'm not even going to ask them for the money, especially if they are delayed for reasons beyond their control. However, if a guest chooses to come to my place well after my check in window, then they need to pay for my time (and we're talking about minimum wage here).
It's worth noting however, that Airbnb will not have your back if the guest refuses to pay. I had one incident where the guests were seriously late and kept me up until the early hours of the morning. They knew full well about the late check in fee (all confirmed via Airbnb messaging), but ignored any attempts to collect it from them and didn't respond to Airbnb, who then simply closed the case. Make sure if you are collecting this fee to do it as soon after arrival as possible.