Anel com halo
Anel com halo: um botão em CSS. Copie as regras, ou o prompt que o reconstrói.
CSS
@property --a103 {
syntax: "<angle>";
inherits: false;
initial-value: 0deg
}
.btn-103 {
position: relative;
font: 600 15px/1 system-ui,sans-serif;
color: #fff;
background: #111;
border: 0;
border-radius: 999px;
padding: 14px 32px;
cursor: pointer;
isolation: isolate
}
.btn-103::before,.btn-103::after {
content: "";
position: absolute;
inset: -2px;
border-radius: inherit;
background: conic-gradient(from var(--a103),#34d399,#3b82f6,#d946ef,#34d399);
z-index: -2;
animation: spin103 4s linear infinite
}
.btn-103::after {
filter: blur(12px);
opacity: .6;
z-index: -3
}
.btn-103 span {
position: absolute;
inset: 0;
border-radius: inherit;
background: #111;
z-index: -1
}
.btn-103:hover::after {
opacity: 1
}
.btn-103:focus-visible {
outline: 2px solid #3b82f6;
outline-offset: 5px
}
.btn-103:active {
transform: translateY(1px)
}
@keyframes spin103 {
to {
--a103: 360deg
}
}
@media (prefers-reduced-motion: reduce) {
.btn-103, .btn-103 * { animation: none; transition: none; }
}
HTML
<button class="btn-103"><span></span>Generate</button>Prompt
Um botão pílula preto com borda cônica giratória (#34d399, #3b82f6, #d946ef) mais uma segunda cópia do mesmo gradiente com blur de 12px atrás dele, como um halo suave a 60% de opacidade, subindo a 100% no hover. Borda de 2px, rotação 4s linear infinite via @property. Texto branco de 15px semibold, padding de 14px por 32px. Um span interno vazio mascara o interior. No active desce 1px, foco com outline azul de 2px e offset de 5px.