.button {
  position: relative;
  cursor: pointer;
  border: none;
  width: 180px;
  height: 50px;
  background: #111;
}

.text {
  position: relative;
  z-index: 1;
}

.button::before {
  content: "";
  position: absolute;
  inset: 0;
  opacity: 0;
  background: radial-gradient(
      circle at 50% 50%,
      #0000 0,
      #0000 20%,
      #111111aa 50%
    ),
    radial-gradient(ellipse 100% 100%, #ff0000, rgba(255, 0, 0, 0.63));
  background-size:
    3px 3px,
    auto auto;
  transition: 0.3s;
}

.button:hover::before {
  opacity: 0.3;
}

.a {
  pointer-events: none;
  position: absolute;
  --w: 2px;
  --t: -40px;
  --s: calc(var(--t) * -1);
  --e: calc(100% + var(--t));
  --g: #fff0, rgba(255, 0, 0, 0.2) var(--s), rgba(255, 0, 0, 0.667) var(--s), #ff0000, rgba(255, 0, 0, 0.667) var(--e),
    rgba(255, 0, 0, 0.2) var(--e), #fff0;
}

.a::before {
  content: "";
  position: absolute;
  inset: 0;
  background: inherit;
  filter: blur(4px) url(#unopaq);
  z-index: -2;
}

.a::after {
  content: "";
  position: absolute;
  inset: 0;
  background: inherit;
  filter: blur(10px) url(#unopaq);
  opacity: 0;
  z-index: -2;
  transition: 0.3s;
}

.button:hover .a::after {
  opacity: 1;
}

.l {
  left: -2px;
}

.r {
  right: -2px;
}

.l,
.r {
  background: linear-gradient(var(--g));
  top: var(--t);
  bottom: var(--t);
  width: var(--w);
}

.t {
  top: -2px;
}

.b {
  bottom: -2px;
}

.t,
.b {
  background: linear-gradient(90deg, var(--g));
  left: var(--t);
  right: var(--t);
  height: var(--w);
}

.backdrop {
  position: absolute;
  inset: -9900%;
  background: radial-gradient(
    circle at 50% 50%,
    #0000 0,
    #0000 20%,
    #111111aa 50%
  );
  background-size: 3px 3px;
  z-index: -1;
}
