.rio-button {
display: inline-flex;
align-items: center;
gap: var(--rio-s2);
min-height: 44px;
padding: var(--rio-s2) var(--rio-s4);
background: var(--rio-surface);
color: var(--rio-text);
border: 1px solid var(--rio-border);
border-radius: var(--rio-radius-sm);
font-size: var(--rio-fs-md);
font-weight: var(--rio-fw-semibold);
letter-spacing: 0.005em;
line-height: var(--rio-lh-ui);
cursor: pointer;
text-decoration: none;
box-shadow: var(--rio-shadow-xs);
transition: background-color 0.12s, border-color 0.12s, color 0.12s,
box-shadow 0.12s, transform 0.06s;
}
.rio-button:hover {
background: var(--rio-accent-soft);
border-color: var(--rio-accent-border);
color: var(--rio-accent-hover);
text-decoration: none;
}
.rio-button:focus-visible {
outline: none;
border-color: var(--rio-accent);
box-shadow: var(--rio-shadow-xs),
0 0 0 4px var(--rio-accent-border);
}
.rio-button:active { transform: translateY(1px); }
.rio-button:disabled { opacity: 0.5; cursor: not-allowed; }
.rio-button--primary {
color: #fff;
background-color: var(--rio-accent);
background-image: linear-gradient(
to bottom,
color-mix(in srgb, var(--rio-accent) 92%, white) 0%,
var(--rio-accent) 100%
);
border-color: color-mix(in srgb, var(--rio-accent) 80%, black);
box-shadow: 0 1px 2px rgb(var(--rio-accent-rgb) / 0.30),
inset 0 1px 0 rgb(255 255 255 / 0.14);
}
.rio-button--primary:hover {
background-image: linear-gradient(
to bottom,
var(--rio-accent) 0%,
var(--rio-accent-hover) 100%
);
border-color: var(--rio-accent-hover);
color: #fff;
}
.rio-button--primary:focus-visible {
border-color: color-mix(in srgb, var(--rio-accent) 80%, black);
box-shadow: 0 1px 2px rgb(var(--rio-accent-rgb) / 0.30),
inset 0 1px 0 rgb(255 255 255 / 0.14),
0 0 0 3px rgb(var(--rio-accent-rgb) / 0.30);
}
.rio-button--danger {
background: var(--rio-danger);
color: #fff;
border-color: var(--rio-danger);
}
.rio-button--danger:hover { color: #fff; }
.rio-button--ghost {
background: transparent;
border-color: transparent;
color: var(--rio-text-muted);
box-shadow: none;
}
.rio-button--ghost:hover {
color: var(--rio-text-strong);
background: var(--rio-surface-3);
border-color: transparent;
}
.rio-button--danger-ghost {
background: transparent;
border-color: transparent;
color: var(--rio-danger);
box-shadow: none;
}
.rio-button--danger-ghost:hover {
background: var(--rio-danger-bg);
border-color: transparent;
}
.rio-button--sm {
padding: 0.3rem 0.55rem;
font-size: var(--rio-fs-sm);
gap: 0.3rem;
}
.rio-button--sm .rio-icon { width: 14px; height: 14px; }
[dir="rtl"] .rio-icon--directional {
transform: scaleX(-1);
}