Every browser ships slightly different default styles for the same HTML elements — a CSS reset or Normalize.css exists to paper over those inconsistencies before your own styles apply, but they take opposite approaches.
/* A classic hard reset: strip EVERYTHING to zero */
* {
margin: 0;
padding: 0;
border: 0;
font: inherit;
}
/* Normalize.css's philosophy: fix inconsistencies,
but preserve useful browser defaults */
/* e.g. it keeps sensible default margins on headings,
but makes them consistent ACROSS browsers, rather than removing them */
A hard reset gives you a completely blank slate but means you must explicitly style every single default (heading sizes, list bullets, form element appearance) yourself. Normalize.css instead makes each browser’s defaults consistent with each other while keeping generally useful defaults intact — less total CSS to write for most projects, at the cost of slightly less absolute control.