.vx-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:var(--type-body-strong);
  border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;
  transition:var(--transition-control);text-decoration:none}
.vx-btn:disabled{opacity:.42;cursor:not-allowed;box-shadow:none;transform:none}
.vx-btn:focus-visible{outline:none;box-shadow:var(--ring)}
.vx-btn--sm{height:var(--control-h-sm);padding:0 var(--pad-control-x-sm);font:var(--type-small-strong);border-radius:var(--radius-sm)}
.vx-btn--md{height:var(--control-h);padding:0 var(--pad-control-x)}
.vx-btn--lg{height:var(--control-h-lg);padding:0 var(--pad-control-x-lg);font:600 16px/1 var(--font-text)}
.vx-btn--primary{background:var(--accent);color:var(--accent-ink);box-shadow:var(--inset-top-strong),var(--shadow-2)}
.vx-btn--primary:hover:not(:disabled){background:var(--accent-hover)}
.vx-btn--primary:active:not(:disabled){background:var(--accent-press);transform:translateY(1px);box-shadow:var(--shadow-1)}
.vx-btn--secondary{background:var(--surface-3);color:var(--text-1);border-color:var(--border-2);box-shadow:var(--inset-top)}
.vx-btn--secondary:hover:not(:disabled){background:var(--warm-750);border-color:var(--border-strong)}
.vx-btn--secondary:active:not(:disabled){transform:translateY(1px);background:var(--surface-3)}
.vx-btn--ghost{background:transparent;color:var(--text-2)}
.vx-btn--ghost:hover:not(:disabled){background:var(--ghost-hover);color:var(--text-1)}
.vx-btn--ghost:active:not(:disabled){background:var(--ghost-press)}
.vx-btn--record{background:var(--record);color:#fff;box-shadow:var(--inset-top-strong),var(--shadow-record)}
.vx-btn--record:hover:not(:disabled){filter:brightness(1.08)}
.vx-btn--record:active:not(:disabled){transform:translateY(1px)}
.vx-btn--danger{background:transparent;color:var(--text-danger);border-color:rgba(226,75,75,.42)}
.vx-btn--danger:hover:not(:disabled){background:rgba(226,75,75,.12)}
/* Успех: мята шкалы сигналов, тёмная краска поверх — светлый текст на #4FC98A
   не читается, а затемнять фон значило бы спорить с ProgressBar ready. */
.vx-btn--success{background:var(--mint-500);color:#0E2318;box-shadow:var(--inset-top-strong),var(--shadow-2)}
.vx-btn--success:hover:not(:disabled){filter:brightness(1.06)}
.vx-btn--success:active:not(:disabled){transform:translateY(1px)}
.vx-btn--block{width:100%}
.vx-btn__spin{width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-top-color:transparent;animation:vx-spin .7s linear infinite}
