Start here, always. HTML is the structure of a page: headings, paragraphs, links, images, forms, and the layout boxes that hold them. CSS is the appearance: colours, spacing, fonts, and how the layout rearranges itself on a phone versus a laptop. Every web developer, frontend or full-stack, learned these first, and you will use them every working day for the rest of your career. They are not a warm-up you graduate out of.
You do not need to be a designer. You need to be able to take a plain idea and turn it into a page that holds together and works on small screens. That means understanding the box model (how padding, borders, and margins stack), how Flexbox and CSS Grid position things, and how to make a layout responsive so it does not break on a phone.
Good free resources: freeCodeCamp's Responsive Web Design certification runs entirely in the browser, so there is nothing to install, and it walks you from basic tags through Grid and responsive layouts. The Odin Project's Foundations covers the same ground with more emphasis on setting up a real editor and using Git early. For a ranked list with the tradeoffs of each option, see
our free CSS course ranking, and /languages/html-css lists the free courses in our catalog.
Estimated time: 4 to 6 weeks at an hour a day. What "done" looks like: you can build a static page from scratch, no template, with a working navigation bar, a main content section, and a footer, and it stays readable on a phone. The most common mistake here is rushing to JavaScript because CSS feels fiddly. Resist that. Weak CSS foundations make every later step harder, because you will spend your framework time fighting layouts instead of learning the framework.