Custom <select>
Here’s a recipe for transitioning and customizing a <select> element.
The HTML:
<select>
  <option hidden>Choose…</option>
  <optgroup label="Group A">
    <option>One</option>
    <option>Two</option>
  </optgroup>
  <optgroup label="Group B">
    <option>Three</option>
    <option>Four</option>
  </optgroup>
</select>
The CSS:
Here’s some highly stylized ones on Codepen that also show how to put custom stuff into the options and selected state.