/* Shared button contract. Vendor-specific adapters live in integration files. */
:where(body) :where(button,
.button,
input[type="submit"],
input[type="button"],
input[type="reset"]) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--nidoo-space-2);
  min-height: 44px;
  padding: 12px 20px;
  border: 1px solid var(--nidoo-primary);
  border-radius: var(--nidoo-radius-md);
  background: var(--nidoo-primary);
  color: var(--nidoo-on-primary);
  font: 600 var(--nidoo-font-size-sm)/1.2 var(--nidoo-font-body);
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

:where(body) :where(button,
.button,
input[type="submit"],
input[type="button"],
input[type="reset"]):hover {
  background: var(--nidoo-primary-hover);
  border-color: var(--nidoo-primary-hover);
  color: var(--nidoo-on-primary);
}

:where(body) :where(button,
.button,
input[type="submit"],
input[type="button"],
input[type="reset"]):focus-visible {
  box-shadow: var(--nidoo-focus-ring);
}

:where(body) :where(button:disabled, .button.disabled, input:disabled) {
  background: var(--nidoo-disabled);
  border-color: var(--nidoo-disabled);
  cursor: not-allowed;
  opacity: 0.7;
}

/* Shared icons. Components apply these through ::before and currentColor. */
:root {
  --nidoo-icon-cart: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4h2l2.2 11.2a2 2 0 0 0 2 1.6h7.9a2 2 0 0 0 1.9-1.4L21 8H6M10 21h.01M18 21h.01'/%3E%3C/svg%3E");
  --nidoo-icon-gift: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10h18v11H3zM12 10v11M3 14h18M12 10H7.8a2.3 2.3 0 1 1 0-4.6c2.2 0 4.2 4.6 4.2 4.6Zm0 0h4.2a2.3 2.3 0 1 0 0-4.6c-2.2 0-4.2 4.6-4.2 4.6Z'/%3E%3C/svg%3E");
}

/* Semantic color modifiers. */
.nidoo-button--pink {
  --nidoo-button-color: var(--nidoo-accent-pink);
  --nidoo-button-color-hover: var(--nidoo-accent-pink-hover);
  --nidoo-button-hover-text: var(--nidoo-white);
}

.nidoo-button--green {
  --nidoo-button-color: var(--nidoo-primary);
  --nidoo-button-color-hover: var(--nidoo-primary-hover);
  --nidoo-button-hover-text: var(--nidoo-on-primary);
}

.nidoo-button--outline {
  background: transparent !important;
  border-color: var(--nidoo-button-color, var(--nidoo-primary)) !important;
  color: var(--nidoo-button-color, var(--nidoo-primary)) !important;
}

.nidoo-button--outline:hover {
  background: var(--nidoo-button-color, var(--nidoo-primary)) !important;
  border-color: var(--nidoo-button-color, var(--nidoo-primary)) !important;
  color: var(--nidoo-button-hover-text, var(--nidoo-on-primary)) !important;
}

.nidoo-button--solid.nidoo-button--pink {
  background: var(--nidoo-accent-pink) !important;
  border-color: var(--nidoo-accent-pink) !important;
  color: var(--nidoo-surface) !important;
}

.nidoo-button--solid.nidoo-button--pink:hover {
  background: var(--nidoo-accent-pink-hover) !important;
  border-color: var(--nidoo-accent-pink-hover) !important;
  color: var(--nidoo-surface) !important;
}

.nidoo-button--solid.nidoo-button--green {
  background: var(--nidoo-button-color, var(--nidoo-primary)) !important;
  border-color: var(--nidoo-button-color, var(--nidoo-primary)) !important;
  color: var(--nidoo-on-primary) !important;
}

.nidoo-button--solid.nidoo-button--green:hover {
  background: var(--nidoo-button-color-hover, var(--nidoo-primary-hover)) !important;
  border-color: var(--nidoo-button-color-hover, var(--nidoo-primary-hover)) !important;
  color: var(--nidoo-on-primary) !important;
}

.nidoo-button--danger {
  background: var(--nidoo-danger) !important;
  border-color: var(--nidoo-danger) !important;
}
