.ca-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 50px;
    padding: 10px 10px 10px 22px;
    border: 0;
    border-radius: var(--ca-radius-normal, 8px);
    background: var(--color-primary);
    box-shadow: none;
    color: var(--ca-text-inverse);
    font-weight: var(--ca-weight-500);
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.2s ease;
}

.ca-button:hover {
    color: var(--ca-text-inverse);
    text-decoration: none;
    box-shadow: none;
    background-color: rgba(var(--color-primary-rgb), 0.92);
}

.ca-button__label {
    display: inline-flex;
    align-items: center;
}

.ca-button--plain,
.ca-button--ghost {
    padding-right: 22px;
}

.ca-button--plain .ca-button-circle,
.ca-button--ghost .ca-button-circle {
    display: none;
}

.ca-button-circle {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    flex-shrink: 0;
    border-radius: 50%;
    background: rgba(var(--ca-text-inverse-rgb), 0.18);
}

.ca-button-circle svg {
    width: 16px;
    height: 16px;
    stroke: var(--ca-text-inverse);
    fill: none;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.ca-button-circle::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid rgba(var(--ca-text-inverse-rgb), 0.7);
    mask: conic-gradient(#000 var(--ring), transparent 0);
    -webkit-mask: conic-gradient(#000 var(--ring), transparent 0);
    --ring: 0%;
    transition: --ring 0.45s ease;
}

.ca-button:hover .ca-button-circle::after {
    --ring: 100%;
}

@property --ring {
    syntax: "<percentage>";
    inherits: false;
    initial-value: 0%;
}
