Think of it this way:
HiSPANIc ---> descending from Spain, of a place of SPANIsh-speaking origin
LATINo ---> from LATIN America, which is considered the top border of Mexico and all the way down the pants of the Americas**
Mexican ---> from a Spanish-speaking country so Hispanic; from Latin America so Latino.
Spaniard ---> from a Spanish-speaking country so Hispanic; from Europe so not Latino.
Brazilian ---> from a Portuguese-speaking country so not Hispanic; from Latin America so Latino.
Bonus round: There is no Hispanic culture. There is no Hispanic accent. There is no Latino culture. There is no Latino accent. Whenever the words "Hispanic/Latino" are used to describe something like an accent or a culture, there's always a culture automatically assumed (Mexican where I live) or it's used as a catch-all when many actually apply e.g. a Latin festival where many Latin cultures are celebrated together.
If you need to describe such a thing as a "Hispanic culture" or "Latino accent," you should default to the county instead: Cuban culture, Mexican accent (even though there are many accents, it's still nicer than saying "Latino accent"). In fact, if you ever see butthurt from someone because they were called "Hispanic" or "Latin," 9 times out of 10 it's because you didn't default to the country by just calling them Mexican or whatever their country of origin is.
**although some people dislike the word Latin because of its origins and we get shirts like this.