/* Кнопки: .btn (+ .primary .danger .ghost .small .icon-only), кнопка-ссылка .linkish.
   Слой component: --btn-* объявлены на самом компоненте, значения — semantic-токены темы. */
.btn {
  --btn-bg: var(--surface-1); --btn-fg: var(--fg); --btn-border: var(--border);
  --btn-bg-hover: var(--surface-2); --btn-bg-active: var(--surface-3);
  --btn-h: var(--control-h); --btn-px: var(--s4); --btn-fs: var(--fs-md); --btn-radius: var(--r);
  display: inline-flex; align-items: center; justify-content: center; gap: var(--s2);
  min-height: var(--btn-h); padding: 0 var(--btn-px); border-radius: var(--btn-radius);
  border: var(--border-w) solid var(--btn-border); background: var(--btn-bg); color: var(--btn-fg);
  font: var(--fw-medium) var(--btn-fs) var(--font); cursor: pointer; text-decoration: none; white-space: nowrap;
  transition: background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease);
}
.btn:hover:not(:disabled) { background: var(--btn-bg-hover); }
.btn:active:not(:disabled) { background: var(--btn-bg-active); transform: translateY(1px); }
.btn:disabled { background: var(--disabled-bg); color: var(--disabled-fg); border-color: var(--disabled-border); cursor: not-allowed; }
.btn.primary { --btn-bg: var(--accent); --btn-border: var(--accent); --btn-fg: var(--on-accent);
  --btn-bg-hover: var(--accent-hover); --btn-bg-active: var(--accent-active); }
.btn.danger { --btn-fg: var(--danger); --btn-bg-hover: var(--danger-soft); }
.btn.danger:hover:not(:disabled) { border-color: var(--danger); }
.btn.primary.danger { --btn-bg: var(--danger); --btn-border: var(--danger); --btn-fg: var(--on-danger);
  --btn-bg-hover: var(--danger-hover); --btn-bg-active: var(--danger-hover); }
.btn.ghost { --btn-bg: transparent; --btn-border: transparent; --btn-fg: var(--fg-muted); justify-content: flex-start; }
.btn.ghost:hover:not(:disabled) { color: var(--fg); }
.btn.ghost:disabled { background: transparent; border-color: transparent; }
.btn.small { --btn-h: var(--control-h-sm); --btn-px: var(--s3); --btn-fs: var(--fs-sm); }
.btn.icon-only { padding: 0; width: var(--btn-h); justify-content: center; }
.btn[aria-busy="true"] .icon { animation: spin 1s linear infinite; }

/* кнопка-ссылка внутри строки: «вернуть как в .env», «убрать» */
.linkish { border: 0; padding: 0; background: none; color: var(--link); font: inherit; font-size: var(--fs-xs);
  cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.linkish:hover { color: var(--link-hover); }
.linkish.danger { color: var(--danger); }
.linkish:focus-visible { border-radius: var(--r-xs); }
