/**
 * Infynic Theme - Typography System & Utilities
 *
 * @package Infynic_Theme
 * @author Jyotirmay Ray <https://jyotirmayray.in/>
 */

/* Standard Elements */
h1, h2, h3, h4, h5, h6 {
	font-family: var(--infynic-font-family);
	font-weight: var(--infynic-font-weight-bold);
	line-height: var(--infynic-line-height-tight);
	color: var(--infynic-text-primary);
	letter-spacing: var(--infynic-letter-spacing-tight);
	margin-bottom: var(--infynic-space-4);
}

h1 { font-size: var(--infynic-font-size-h1); }
h2 { font-size: var(--infynic-font-size-h2); }
h3 { font-size: var(--infynic-font-size-h3); }
h4 { font-size: var(--infynic-font-size-h4); font-weight: var(--infynic-font-weight-semibold); }
h5 { font-size: var(--infynic-font-size-h5); font-weight: var(--infynic-font-weight-semibold); }
h6 { font-size: var(--infynic-font-size-h6); font-weight: var(--infynic-font-weight-semibold); letter-spacing: var(--infynic-letter-spacing-normal); }

p {
	font-size: var(--infynic-font-size-body);
	line-height: var(--infynic-line-height-relaxed);
	color: var(--infynic-text-secondary);
	margin-bottom: var(--infynic-space-4);
}

p:last-child {
	margin-bottom: 0;
}

a {
	color: var(--infynic-primary-500);
	text-decoration: none;
	transition: color var(--infynic-duration-fast) ease;
}

a:hover {
	color: var(--infynic-primary-600);
}

/* ==========================================================================
   Typography Scale Utility Classes
   ========================================================================== */
.infynic-display-xl {
	font-size: var(--infynic-font-size-display-xl);
	font-weight: var(--infynic-font-weight-bold);
	line-height: var(--infynic-line-height-tight);
	letter-spacing: var(--infynic-letter-spacing-tighter);
}

.infynic-display-l {
	font-size: var(--infynic-font-size-display-l);
	font-weight: var(--infynic-font-weight-bold);
	line-height: var(--infynic-line-height-tight);
	letter-spacing: var(--infynic-letter-spacing-tighter);
}

.infynic-display-m {
	font-size: var(--infynic-font-size-display-m);
	font-weight: var(--infynic-font-weight-bold);
	line-height: var(--infynic-line-height-snug);
	letter-spacing: var(--infynic-letter-spacing-tight);
}

.infynic-heading-1 { font-size: var(--infynic-font-size-h1); font-weight: var(--infynic-font-weight-bold); }
.infynic-heading-2 { font-size: var(--infynic-font-size-h2); font-weight: var(--infynic-font-weight-bold); }
.infynic-heading-3 { font-size: var(--infynic-font-size-h3); font-weight: var(--infynic-font-weight-semibold); }
.infynic-heading-4 { font-size: var(--infynic-font-size-h4); font-weight: var(--infynic-font-weight-semibold); }
.infynic-heading-5 { font-size: var(--infynic-font-size-h5); font-weight: var(--infynic-font-weight-semibold); }
.infynic-heading-6 { font-size: var(--infynic-font-size-h6); font-weight: var(--infynic-font-weight-semibold); }

.infynic-body-lg {
	font-size: var(--infynic-font-size-body-lg);
	line-height: var(--infynic-line-height-relaxed);
}

.infynic-body {
	font-size: var(--infynic-font-size-body);
	line-height: var(--infynic-line-height-relaxed);
}

.infynic-body-sm {
	font-size: var(--infynic-font-size-body-sm);
	line-height: var(--infynic-line-height-normal);
}

.infynic-caption {
	font-size: var(--infynic-font-size-caption);
	line-height: var(--infynic-line-height-normal);
	color: var(--infynic-text-muted);
}

.infynic-overline {
	font-size: var(--infynic-font-size-overline);
	font-weight: var(--infynic-font-weight-bold);
	line-height: var(--infynic-line-height-none);
	text-transform: uppercase;
	letter-spacing: var(--infynic-letter-spacing-wider);
	color: var(--infynic-primary-500);
}

.infynic-label-lg { font-size: var(--infynic-font-size-body-lg); font-weight: var(--infynic-font-weight-semibold); }
.infynic-label { font-size: var(--infynic-font-size-body); font-weight: var(--infynic-font-weight-medium); }
.infynic-label-sm { font-size: var(--infynic-font-size-body-sm); font-weight: var(--infynic-font-weight-medium); }

/* Color Modifier Helpers */
.infynic-text-primary { color: var(--infynic-text-primary) !important; }
.infynic-text-secondary { color: var(--infynic-text-secondary) !important; }
.infynic-text-muted { color: var(--infynic-text-muted) !important; }
.infynic-text-brand { color: var(--infynic-primary-500) !important; }
.infynic-text-success { color: var(--infynic-success-500) !important; }
.infynic-text-warning { color: var(--infynic-warning-500) !important; }
.infynic-text-danger { color: var(--infynic-danger-500) !important; }
