@Greg_pns and @HeyItsPrescott, I ended up solving this by using a CSS pseudo-element instead of a script. In custom CSS, added:
.field.first-name .caption-text {visibility:hidden}
.field.first-name .caption-text::before {content:"Prénom"; display:inline-block !important; visibility:visible !important;}
.field.last-name .caption-text {visibility:hidden}
.field.last-name .caption-text::before {content:"Nom de famille"; display:inline-block !important; visibility:visible !important;}
.description.required {visibility:hidden}
.description.required::before {content:"(requis)"; display:inline-block; visibility:visible}
Hope this helps!