The real cost is sitting in your extensions
Here is the part most quotes get wrong, and the reason two Hyvä estimates for the same store can differ by a factor of three.
Every third-party extension on your store was written against Luma. Hyvä's own documentation is blunt about what that means: modules built for Luma or Blank require a compatibility module to work, and that module re-implements the parts of the extension that do not work out of the box on a Hyvä storefront.
Some of your extensions already have one, maintained by the vendor or the community. Some do not. For those, someone writes it, and that someone is billing you.
So the honest version of a Hyvä estimate starts with a list, not a design. Layered navigation, product reviews, the loyalty programme, the size-guide popup, the third-party payment method your finance team insisted on in 2019, the abandoned-cart tool nobody remembers buying. Each one is either already supported, cheap to bridge, or the thing that quietly doubles your timeline.
In our own migrations the number almost never turns on the theme work. It turns on that list. An owner who sends it over before asking for a quote gets a real number back; an owner who asks "how much for Hyvä" gets a range wide enough to be useless to both of us.