Hi there! You did amazing, in fact, I actually learned something while looking at your code, you're going to save me so much time in the future, I didn't know you could establish variables! (I'll credit you in my next project, of course).
Accessibility
Landmarks are very important for people who use screen readers, so get used to applying them. They are your basic built in tags that specify the content within them , like <main>, <footer>, <header>, etc. All HTML must be contained by landmarks
I use <main> to encase the focus of the website (in this case, the QR code), and footer for the attribution:
<footer>
<div class="attribution">
Challenge by <a href="https://www.frontendmentor.io?ref=challenge" target="_blank">Frontend Mentor</a>.
Coded by <a href="https://github.com/AlvaNeedsFood">Alvaro Alvarez P</a>.
</div>
</footer>
Centering vertically
Whenever I have issues with flexbox I use grid, it's very easy to understand. In this case, you just need to use:
display: grid;
place-items: center;
height:100vh;
Hope this helps!