Colchetes nos cantos

Colchetes nos cantos: um botão em CSS. Copie as regras, ou o prompt que o reconstrói.

bracketcorner-markrectangleoutlinehover-expand

CSS
.btn-151 {
  position: relative;
  font: 600 14px/1 system-ui,sans-serif;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #111827;
  background: transparent;
  border: 0;
  padding: 14px 28px;
  cursor: pointer;
  transition: color .2s
}
.btn-151::before,.btn-151::after {
  content: "";
  position: absolute;
  width: 12px;
  height: 12px;
  border: 2px solid #111827;
  transition: width .25s,height .25s,border-color .25s
}
.btn-151::before {
  top: 0;
  left: 0;
  border-right: 0;
  border-bottom: 0
}
.btn-151::after {
  bottom: 0;
  right: 0;
  border-left: 0;
  border-top: 0
}
.btn-151:hover::before,.btn-151:hover::after {
  width: 100%;
  height: 100%
}
.btn-151:focus-visible {
  outline: 2px solid #111827;
  outline-offset: 4px
}
.btn-151:active {
  color: #2563eb
}
.btn-151:active::before,.btn-151:active::after {
  border-color: #2563eb
}
HTML
<button class="btn-151">Select</button>
Prompt

Um botão sem borda, em caixa alta, 14px semibold (texto #111827, tracking 0.06em, padding 14px por 28px), marcado apenas por dois colchetes em L de 12px, com 2px de espessura, no canto superior esquerdo e no inferior direito. No hover os dois colchetes crescem até a largura e a altura totais, se encontram e formam um retângulo completo, 250ms. No active, texto e colchetes ficam azul #2563eb. Focus com outline escuro de 2px e offset de 4px.