/**
 * @ownership components
 * Reusable design system components.
 *
 * components.css
 * ----------------
 * Allowed selectors:
 *   .dsp-button*
 *   .dsp-input*
 *   .dsp-select*
 *   .dsp-textarea*
 *   .dsp-card*
 *   .dsp-badge*
 *   .dsp-alert*
 *   .dsp-form*
 *   .dsp-grid*
 *   .dsp-section*
 *   .dsp-icon*
 *   .dsp-field*
 *   .dsp-modal*
 *   .dsp-spinner*
 *   .dsp-container
 *
 * Forbidden:
 *   body
 *   html
 *   main
 *   .dsp-product-card*
 *   .dsp-home*
 *   .dsp-shop*
 */

/* Buttons */
.dsp-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--dsp-space-2);
	padding: var(--dsp-space-3) var(--dsp-space-6);
	font-family: var(--dsp-font-family-heading);
	font-size: var(--dsp-font-size-sm);
	font-weight: var(--dsp-font-weight-semibold);
	line-height: var(--dsp-line-height-snug);
	text-decoration: none;
	border: 1px solid transparent;
	border-radius: var(--dsp-radius-lg);
	cursor: pointer;
	transition:
		background-color var(--dsp-transition-fast),
		border-color var(--dsp-transition-fast),
		color var(--dsp-transition-fast),
		box-shadow var(--dsp-transition-fast);
}

.dsp-button:focus-visible {
	outline: 2px solid var(--dsp-color-focus-ring);
	outline-offset: 2px;
}

.dsp-button--primary {
	background-color: var(--dsp-color-accent);
	color: var(--dsp-color-text-on-accent);
}

.dsp-button--primary:hover,
.dsp-button--primary:focus-visible {
	background-color: var(--dsp-color-accent-hover);
	color: var(--dsp-color-text-on-accent);
}

.dsp-button--secondary {
	background-color: var(--dsp-color-bg-elevated);
	color: var(--dsp-color-text-primary);
	border-color: var(--dsp-color-border-default);
}

.dsp-button--secondary:hover,
.dsp-button--secondary:focus-visible {
	border-color: var(--dsp-color-accent);
	color: var(--dsp-color-text-primary);
}

.dsp-button--lg {
	padding: var(--dsp-space-4) var(--dsp-space-8);
	font-size: var(--dsp-font-size-base);
}

.dsp-button--xl {
	padding: var(--dsp-space-5) var(--dsp-space-10);
	font-size: var(--dsp-font-size-md);
	border-radius: var(--dsp-radius-xl);
}

.dsp-button--primary:hover,
.dsp-button--primary:focus-visible {
	box-shadow: 0 8px 24px var(--dsp-color-accent-subtle);
}

.dsp-button--sm {
	padding: var(--dsp-space-2) var(--dsp-space-4);
	font-size: var(--dsp-font-size-xs);
}

.dsp-button--block {
	display: flex;
	width: 100%;
}

.dsp-button--ghost {
	background-color: transparent;
	color: var(--dsp-color-text-secondary);
	border-color: var(--dsp-color-border-default);
}

.dsp-button--ghost:hover,
.dsp-button--ghost:focus-visible {
	background-color: var(--dsp-color-bg-muted);
	color: var(--dsp-color-text-primary);
	border-color: var(--dsp-color-border-default);
	box-shadow: none;
}

/* Icons */
.dsp-icon {
	display: inline-block;
	width: 1.25rem;
	height: 1.25rem;
	flex-shrink: 0;
	color: inherit;
	vertical-align: middle;
}

.dsp-icon svg {
	display: block;
	width: 100%;
	height: 100%;
}

/* Cards (structural hooks) */
.dsp-section {}
.dsp-grid {}
.dsp-card {}
.dsp-form {}
.dsp-field {}
.dsp-alert {}
.dsp-badge {}
.dsp-modal {}
.dsp-spinner {}
