Preenchimento inset lateral

Preenchimento inset lateral: um botão em CSS. Copie as regras, ou o prompt que o reconstrói.

inset-filloutlinerectanglebox-shadowleft-to-right

CSS
.btn-146 {
  font: 600 14px/1 system-ui,sans-serif;
  color: #111827;
  background: transparent;
  border: 2px solid #111827;
  border-radius: 6px;
  padding: 12px 24px;
  cursor: pointer;
  box-shadow: inset 0 0 0 0 #111827;
  transition: box-shadow .3s ease-out,color .3s
}
.btn-146:hover {
  box-shadow: inset 200px 0 0 0 #111827;
  color: #fff
}
.btn-146:focus-visible {
  outline: 2px solid #111827;
  outline-offset: 3px
}
.btn-146:active {
  box-shadow: inset 200px 0 0 0 #000;
  border-color: #000
}
HTML
<button class="btn-146">Read more</button>
Prompt

Um botão outline (transparente, borda de 2px #111827, raio de 6px, texto escuro de 14px semibold, padding de 12px por 24px) que se preenche a partir da esquerda no hover usando um box-shadow inset com spread horizontal crescendo de 0 a 200px, texto ficando branco, 300ms ease-out. No active se preenche de preto puro. Foco com outline escuro de 2px e offset de 3px.