const ddButtonCss = `
.dd-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  font-family: var(--font-sans); font-weight: var(--weight-medium);
  border-radius: var(--radius-sm); border: 1px solid transparent;
  cursor: pointer; white-space: nowrap; user-select: none;
  transition: background var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast) var(--ease-out),
              color var(--dur-fast) var(--ease-out);
}
.dd-btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.dd-btn--sm { height: var(--control-sm); padding: 0 12px; font-size: var(--text-sm); }
.dd-btn--md { height: var(--control-md); padding: 0 16px; font-size: var(--text-base); }
.dd-btn--lg { height: var(--control-lg); padding: 0 20px; font-size: var(--text-md); }
.dd-btn--block { width: 100%; }
.dd-btn--primary { background: var(--accent); color: var(--text-on-accent); }
.dd-btn--primary:hover { background: var(--accent-hover); }
.dd-btn--primary:active { background: var(--accent-press); }
.dd-btn--secondary { background: var(--surface-card); border-color: var(--border-2); color: var(--text-1); }
.dd-btn--secondary:hover { background: var(--surface-2); }
.dd-btn--secondary:active { background: var(--surface-3); }
.dd-btn--ghost { background: transparent; color: var(--accent-text); }
.dd-btn--ghost:hover { background: var(--accent-soft); }
.dd-btn--ghost:active { background: var(--accent-soft-2); }
.dd-btn--danger { background: var(--danger); color: #fff; }
.dd-btn--danger:hover { filter: brightness(0.94); }
.dd-btn[disabled] { opacity: 0.45; pointer-events: none; }
`;

if (typeof document !== 'undefined' && !document.getElementById('dd-button-css')) {
  const s = document.createElement('style');
  s.id = 'dd-button-css';
  s.textContent = ddButtonCss;
  document.head.appendChild(s);
}

export function Button({ variant = 'primary', size = 'md', block = false, disabled = false, children, ...rest }) {
  const cls = `dd-btn dd-btn--${variant} dd-btn--${size}${block ? ' dd-btn--block' : ''}`;
  return <button type="button" className={cls} disabled={disabled} {...rest}>{children}</button>;
}
