/**
 * Utility Classes
 *
 * @package Free_Psychicnet
 */

/* Text alignment */
.text-center { text-align: center; }
.text-left { text-align: left; }
.text-right { text-align: right; }

/* Font families */
.font-heading { font-family: var(--font-heading); }
.font-body { font-family: var(--font-body); }
.font-accent { font-family: var(--font-accent); }

/* Font weights */
.font-normal { font-weight: 400; }
.font-medium { font-weight: 500; }
.font-semibold { font-weight: 600; }
.font-bold { font-weight: 700; }

/* Text colors */
.text-primary { color: var(--color-text-primary); }
.text-secondary { color: var(--color-text-secondary); }
.text-light { color: var(--color-text-light); }
.text-accent { color: var(--color-primary); }

/* Margin utilities */
.mt-0 { margin-top: 0; }
.mb-0 { margin-bottom: 0; }
.mb-4 { margin-bottom: var(--space-4); }
.mb-6 { margin-bottom: var(--space-6); }
.mb-8 { margin-bottom: var(--space-8); }
.mb-12 { margin-bottom: var(--space-12); }

/* Display */
.hidden { display: none; }
.block { display: block; }
.flex { display: flex; }
.inline-flex { display: inline-flex; }

/* Flex utilities */
.flex-center {
	display: flex;
	align-items: center;
	justify-content: center;
}

.flex-between {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.flex-wrap { flex-wrap: wrap; }
.gap-2 { gap: var(--space-2); }
.gap-4 { gap: var(--space-4); }
.gap-6 { gap: var(--space-6); }

/* Width */
.w-full { width: 100%; }
.mx-auto { margin-left: auto; margin-right: auto; }

/* Screen reader only */
.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border-width: 0;
}

/* Visibility helpers */
@media (max-width: 767px) {
	.hide-mobile { display: none; }
}

@media (min-width: 768px) {
	.hide-desktop { display: none; }
}

/* Lazy load placeholder */
img[loading="lazy"] {
	background-color: var(--color-secondary);
}

/* Focus outline removal for mouse users */
:focus:not(:focus-visible) {
	outline: none;
}

/* Selection color */
::selection {
	background: var(--color-primary-light);
	color: var(--color-text-primary);
}

/* Print styles */
@media print {
	.site-header,
	.site-footer,
	.nav-toggle,
	.btn {
		display: none;
	}

	body {
		font-size: 12pt;
		color: #000;
	}
}
