What are you most proud of, and what would you do differently next time?
I am proud of finding the solution on my own with little guidance, I have to push my self to find the best lay out and functions in JS to handle event listeners.
What challenges did you encounter, and how did you overcome them?
Oveflowing, responsive design, I had to try several times to match the design as close as possible.
What specific areas of your project would you like help with?
I would like help with JS since this is my first project using JS. I am new to this language.
Your HTML looks semantic but your solution is somewhat different from the design mainly in terms of size. My guess, It's due to the image. Decrease the size of image and it should do the trick.
I can't help you with the JS part as this is first JS project for me too.
What are you most proud of, and what would you do differently next time?
I used flexbox next time will use CSS grid
What challenges did you encounter, and how did you overcome them?
The background image on the first card. First I used it in HTML, which either disappeared once the background color was applied or the text was overwritten. Later I switched to the style sheet and applied the image there that's how I resolved it.
It's not a good practice to build different projects on different branches. You could make different repos for each projects.
Now coming to the code
I know you have said you will use grid next time but the project's name itself is saying to use grid. It would have been better if you had learned to use grid first and then started this project.
Don't use the id selector so casually. Id's have high specificity so they can easily override other tags and classes. So better don't use them unless it's very necessary.
In your CSS reset use box-sizing: border-box;. It's difficult to know what is happening as I am used to border-box. It makes much easier for other people for reviewing your code and time efficient too.
Use relative units (em, rem) instead of absolute units (px).
Your font isn't working. Remove the quotation marks on the sans-serif. Fallbacks fonts types such as serif, sans-serif, roboto etc don't require quotation marks. Font property cannot be used with single value it should have at least two values of font-size and font-family. So better to use font-family. Reference
If you open it in the dev tools and bring your cursor over the content class you can see there is some space below image. This is the default space set by the browser for the inline element. To get rid of that space use display: block;.
There was no need to use .card::before instead you can use box-shadow to gain this effect.
First of all, don't keep your focus on just the component think of the bigger picture here, when this component is going to be used in blog websites there's going to be multiple components similar to this one.
Keeping the first point in mind, you can use min-height instead of height in the body. In a website there's going to be more content after this component min-height: 100vh makes the screen scroll if there's more content than the viewport height without overflowing. So it's better to use min-height.
Instead of absolute units (px) use relative units such as rem.
You can use margin to create some space between the screen and card in mobile view.
There is no need to use button element. In most of the websites cards are sorted using these tags in this case it is learning. They use javascript to do this. What I'm trying to say is learning is not a button just text, so use <p> , <span> or simply write this in a new div.
Instead of using Next-Sibling Combinator h2 + p you could have given a class to each element. Moving forward you will have to create larger projects and using these combinators will make things messy. Use classes instead.
Lastly, You haven't done the active states of the card.
What are you most proud of, and what would you do differently next time?
I'm proud of my semantic HTML, even though I'm sure there's still room for improvement
What challenges did you encounter, and how did you overcome them?
Styling the list markers was especially hard since I've never had to style it with different colors and weights before. I'm not sure if I like the way I solve this, but it seemed like the best solution for this project.
What specific areas of your project would you like help with?
If anyone has documentation or tips on how to style lists and tables in a better way, it would be very appreciated.
There is no need to use flexbox everywhere. Usage in class main and profile was not needed.
You should use anchor tags instead of button tag. Button is used when the user has to do some activity on the same page but on this links profile when user will click on the button, he would have to go to another website.
So Button is not appropriate here, Instead make use of anchor tags and maybe wrap them in the list tag of unordered list tag.
Lastly, Use em or rem instead of px for things like font-size , margin, padding, border-radius etc.
You could write better alt attribute in image. Imagine there are going to many number of cards in a website. A keyboard user can't understand what the image is all about when "bold, abstract illustration in yellow, white, and black" is spoken by the text-reader. Try to write a meaningful alt text.
According to the figma file provided you could have increased the size of box shadow when hovered on the card. Here is a reference article.