/**
 * Elite Cart token aliases and reusable foundation components.
 * Component declarations intentionally consume variables only.
 */
:root {
	--elite-color-primary: var(--wp--preset--color--primary);
	--elite-color-primary-dark: var(--wp--preset--color--primary-dark);
	--elite-color-secondary: var(--wp--preset--color--secondary);
	--elite-color-heading: var(--wp--preset--color--heading);
	--elite-color-body: var(--wp--preset--color--body);
	--elite-color-muted: var(--wp--preset--color--muted);
	--elite-color-border: var(--wp--preset--color--border);
	--elite-color-surface: var(--wp--preset--color--surface);
	--elite-color-success: var(--wp--preset--color--success);
	--elite-color-warning: var(--wp--preset--color--warning);
	--elite-color-danger: var(--wp--preset--color--danger);
	--elite-color-info: var(--wp--preset--color--info);
	--elite-space-2xs: var(--wp--preset--spacing--10);
	--elite-space-xs: var(--wp--preset--spacing--20);
	--elite-space-sm: var(--wp--preset--spacing--30);
	--elite-space-md: var(--wp--preset--spacing--40);
	--elite-space-lg: var(--wp--preset--spacing--50);
	--elite-space-xl: var(--wp--preset--spacing--60);
	--elite-space-2xl: var(--wp--preset--spacing--70);
	--elite-space-3xl: var(--wp--preset--spacing--80);
	--elite-radius-none: var(--wp--custom--elite--radius--none);
	--elite-radius-sm: var(--wp--custom--elite--radius--small);
	--elite-radius-md: var(--wp--custom--elite--radius--medium);
	--elite-radius-lg: var(--wp--custom--elite--radius--large);
	--elite-radius-pill: var(--wp--custom--elite--radius--pill);
	--elite-shadow-sm: var(--wp--preset--shadow--small);
	--elite-shadow-md: var(--wp--preset--shadow--medium);
	--elite-shadow-lg: var(--wp--preset--shadow--large);
	--elite-transition-fast: var(--wp--custom--elite--transition--fast);
	--elite-transition-base: var(--wp--custom--elite--transition--base);
	--elite-transition-slow: var(--wp--custom--elite--transition--slow);
	--elite-content-width: var(--wp--custom--elite--container--content);
	--elite-wide-width: var(--wp--custom--elite--container--wide);
	--elite-gutter: var(--wp--custom--elite--container--gutter);
	--elite-control-height: var(--wp--custom--elite--control--height);
	--elite-border-hairline: var(--wp--custom--elite--border--hairline);
	--elite-font-weight-semibold: var(--wp--custom--elite--font-weight--semibold);
	--elite-font-weight-bold: var(--wp--custom--elite--font-weight--bold);
	--elite-opacity-disabled: var(--wp--custom--elite--opacity--disabled);
	--elite-overlay-modal: var(--wp--custom--elite--overlay--modal);
	--elite-layer-modal: var(--wp--custom--elite--layer--modal);
	--elite-modal-max-width: var(--wp--custom--elite--modal--width);
}

.elite-container {
	inline-size: min(100% - (var(--elite-gutter) * 2), var(--elite-wide-width));
	margin-inline: auto;
}

.elite-stack {
	display: flex;
	flex-direction: column;
	gap: var(--elite-stack-space, var(--elite-space-md));
}

.elite-cluster {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--elite-cluster-space, var(--elite-space-md));
}

.elite-button {
	display: inline-flex;
	min-block-size: var(--elite-control-height);
	align-items: center;
	justify-content: center;
	gap: var(--elite-space-xs);
	padding: var(--elite-space-sm) var(--elite-space-lg);
	border: var(--elite-button-border-width, var(--elite-radius-none)) solid var(--elite-button-border, var(--elite-color-primary));
	border-radius: var(--elite-button-radius, var(--elite-radius-none));
	background: var(--elite-button-background, var(--elite-color-primary));
	color: var(--elite-button-color, var(--elite-color-surface));
	font: inherit;
	font-weight: var(--elite-button-weight, var(--elite-font-weight-semibold));
	line-height: 1;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--elite-transition-base), border-color var(--elite-transition-base), color var(--elite-transition-base), box-shadow var(--elite-transition-base), transform var(--elite-transition-fast);
}

.elite-button:hover {
	--elite-button-background: var(--elite-color-primary-dark);
	--elite-button-border: var(--elite-color-primary-dark);
	--elite-button-color: var(--elite-color-surface);
}

.elite-button:active { transform: translateY(var(--elite-button-active-offset, var(--elite-radius-none))); }
.elite-button:disabled,
.elite-button[aria-disabled="true"] { cursor: not-allowed; opacity: var(--elite-disabled-opacity, var(--elite-opacity-disabled)); }
.elite-button--secondary { --elite-button-background: var(--elite-color-heading); --elite-button-border: var(--elite-color-heading); }
.elite-button--outline { --elite-button-background: transparent; --elite-button-color: var(--elite-color-heading); --elite-button-border: var(--elite-color-border); }
.elite-button--ghost { --elite-button-background: transparent; --elite-button-color: var(--elite-color-heading); --elite-button-border-width: var(--elite-radius-none); }
.elite-button--small { min-block-size: auto; padding: var(--elite-space-xs) var(--elite-space-md); }
.elite-button--large { padding: var(--elite-space-md) var(--elite-space-xl); }

.elite-field,
.elite-select,
.elite-textarea {
	inline-size: 100%;
	min-block-size: var(--elite-control-height);
	padding: var(--elite-space-sm) var(--elite-space-md);
	border: var(--elite-field-border-width, var(--elite-border-hairline)) solid var(--elite-field-border, var(--elite-color-border));
	border-radius: var(--elite-field-radius, var(--elite-radius-none));
	background: var(--elite-field-background, var(--elite-color-surface));
	color: var(--elite-field-color, var(--elite-color-body));
	font: inherit;
	transition: border-color var(--elite-transition-base), box-shadow var(--elite-transition-base);
}

.elite-textarea { min-block-size: calc(var(--elite-control-height) * 3); resize: vertical; }
.elite-field-group { display: grid; gap: var(--elite-space-xs); }
.elite-label { color: var(--elite-color-heading); font-weight: var(--elite-font-weight-semibold); }
.elite-help { color: var(--elite-color-muted); font-size: var(--wp--preset--font-size--small); }
.elite-field[aria-invalid="true"] { --elite-field-border: var(--elite-color-danger); }

.elite-card {
	overflow: hidden;
	border: var(--elite-card-border-width, var(--elite-border-hairline)) solid var(--elite-card-border, var(--elite-color-border));
	border-radius: var(--elite-card-radius, var(--elite-radius-none));
	background: var(--elite-card-background, var(--elite-color-surface));
	color: var(--elite-card-color, var(--elite-color-body));
	box-shadow: var(--elite-card-shadow, none);
}

.elite-card__media img { display: block; inline-size: 100%; block-size: auto; }
.elite-card__body { display: grid; gap: var(--elite-space-sm); padding: var(--elite-card-padding, var(--elite-space-lg)); }
.elite-card__title { margin: 0; color: var(--elite-color-heading); }
.elite-card--elevated { --elite-card-border-width: var(--elite-radius-none); --elite-card-shadow: var(--elite-shadow-md); }

.elite-badge {
	display: inline-flex;
	align-items: center;
	inline-size: fit-content;
	padding: var(--elite-space-2xs) var(--elite-space-sm);
	border-radius: var(--elite-badge-radius, var(--elite-radius-pill));
	background: var(--elite-badge-background, var(--elite-color-secondary));
	color: var(--elite-badge-color, var(--elite-color-heading));
	font-size: var(--wp--preset--font-size--xs);
	font-weight: var(--elite-font-weight-bold);
	line-height: 1;
}

.elite-badge--success { --elite-badge-background: var(--elite-color-success); --elite-badge-color: var(--elite-color-surface); }
.elite-badge--warning { --elite-badge-background: var(--elite-color-warning); --elite-badge-color: var(--elite-color-surface); }
.elite-badge--danger { --elite-badge-background: var(--elite-color-danger); --elite-badge-color: var(--elite-color-surface); }

.elite-alert {
	display: flex;
	align-items: flex-start;
	gap: var(--elite-space-sm);
	padding: var(--elite-space-md);
	border-inline-start: var(--elite-alert-border-width, var(--elite-space-2xs)) solid var(--elite-alert-accent, var(--elite-color-info));
	border-radius: var(--elite-alert-radius, var(--elite-radius-sm));
	background: var(--elite-alert-background, var(--elite-color-secondary));
	color: var(--elite-alert-color, var(--elite-color-body));
}

.elite-alert--success { --elite-alert-accent: var(--elite-color-success); }
.elite-alert--warning { --elite-alert-accent: var(--elite-color-warning); }
.elite-alert--danger { --elite-alert-accent: var(--elite-color-danger); }

.elite-modal {
	position: fixed;
	inset: 0;
	z-index: var(--elite-modal-z-index, var(--elite-layer-modal));
	display: grid;
	place-items: center;
	padding: var(--elite-gutter);
	background: var(--elite-modal-overlay, var(--elite-overlay-modal));
}

.elite-modal[hidden] { display: none; }
.elite-modal__dialog {
	inline-size: min(100%, var(--elite-modal-width, var(--elite-modal-max-width)));
	max-block-size: calc(100vh - (var(--elite-gutter) * 2));
	overflow: auto;
	border-radius: var(--elite-modal-radius, var(--elite-radius-md));
	background: var(--elite-color-surface);
	box-shadow: var(--elite-shadow-lg);
}
.elite-modal__header,
.elite-modal__body,
.elite-modal__footer { padding: var(--elite-space-lg); }
.elite-modal__header { display: flex; align-items: center; justify-content: space-between; gap: var(--elite-space-md); border-block-end: var(--elite-border-hairline) solid var(--elite-color-border); }
.elite-modal__footer { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--elite-space-sm); border-block-start: var(--elite-border-hairline) solid var(--elite-color-border); }

.elite-sr-only {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.elite-text-center { text-align: center; }
.elite-width-full { inline-size: 100%; }
.elite-hidden { display: none !important; }
