Két oka van annak, hogy oldalra is lehet húzni az oldalt:
1:
.location, .program, .gifts, .faq, .contact {
width: 95%;
margin: 1.5rem;
padding: .5rem 1rem;
text-align: center;
}
Itt a margin túl nagy. A width hozzáadódik a marginhoz, és az már több, mint 100%, ezért kilóg oldalra néhány elem.
2:
Több helyen width: 100vw
-et használsz. Ezzel az a gond, hogy ha függőleges irányban hosszabb az oldal, mint 100vh
(márpedig hosszabb, mert lehet lefelé görgetni), akkor megjelenik jobboldalt a görgetősáv. Ezt a vw
nem veszi figyelembe, tehát aminek 100vw
-t adsz, azok elérnek egészen a böngészőablak széléig, pedig egy görgetősávnyival hamarabb kellene véget érniük. Ha ezeket mind átírod 100%
-ra (100vw helyett), akkor ez is megoldódik. :-)