# [J], 39 bytes

    ((<&91*64&<)(32+#)`(I.@[)`]}])&.(a.i.])

[Try it online!][TIO-ju9uxm0a]

[J]: http://jsoftware.com/
[TIO-ju9uxm0a]: https://tio.run/##y/qvpKeepmBrpaCuoKNgoGAFxLp6Cs5BPm7/NTRs1CwNtcxM1Gw0NYyNtJU1EzQ89RyiNRNia2M11fQ0EvUy9WI1/2typSZn5CukKSioJzolu6S6KTooOqj/BwA "J – Try It Online"

Convert the string to indexes within the J alphabet `a.`, create a mask for those that are uppercase `(<&91*64&<)`, then use amend `}` to update just those indexes `I.` that are uppercase with their lowercase counterpart `(32+#)`