title: Why is this input type=time invalid in some browsers with a "stepMismatch": true?
body: <p>I have a very simple <code>input type=time</code> with a valid time value according to <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#time_strings" rel="nofollow noreferrer">MDN</a>:</p>
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-css lang-css prettyprint-override"><code>:invalid { border-color: red; }</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;input type="time" value="00:00:00.750" onchange="console.log(this.validity)" /&gt;</code></pre>
  </div>
  </div>
  </p>
  <p>If I just run the snippet (Safari) <em>and edit the value (Firefox 93)</em>, whatever I edit it to, the input is considered <strong>invalid</strong> afterwards, with a  <code>&quot;stepMismatch&quot;: true</code> validity fail reason (Safari 15, Firefox 93 and 94, MacOS 12).</p>
  <p>What's going on here? How is <code>step</code> even working for this input type, and how to get rid of the invalid state?</p>