.btn-topo{
  position:fixed;
  right:18px;
  bottom:18px;
  width:58px;
  height:58px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;

  background:linear-gradient(135deg,#7c3aed,#6d28d9);
  color:#fff;
  border:0;
  border-radius:14px;
  box-shadow:0 10px 26px rgba(0,0,0,.28);
  cursor:pointer;
  z-index:9999;

  opacity:0;
  pointer-events:none;
  transform:translateY(14px) scale(.96);
  transition:opacity .22s ease, transform .22s ease, background .22s ease, box-shadow .22s ease;
}

.btn-topo:hover{
  background:linear-gradient(135deg,#6d28d9,#5b21b6);
  box-shadow:0 12px 30px rgba(0,0,0,.34);
}

.btn-topo:active{
  transform:translateY(0) scale(.94);
}

.btn-topo-ico{
  line-height:0;
  opacity:.95;
}

.btn-topo-txt{
  font-size:10px;
  font-weight:800;
  letter-spacing:.6px;
  line-height:10px;
  opacity:.95;
}

.btn-topo.is-visible{
  opacity:1;
  pointer-events:auto;
  transform:translateY(0) scale(1);
}

@keyframes topoPulse{
  0%{ transform:translateY(0) scale(1); }
  50%{ transform:translateY(0) scale(1.06); }
  100%{ transform:translateY(0) scale(1); }
}

.btn-topo.is-pulse{
  animation: topoPulse .38s ease-in-out 0s 2;
}
