/**
 * Havenlytics V3 — Base, Reset & Typography
 * Source: havenlytics-homepage-v3.html
 *
 * @package Havenlytics_Theme
 */

/* ── Reset ─────────────────────────────────────────────────── */
*,
*::before,
*::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

html {
	scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

body {
	font-family: var(--hvnly--font-body);
	font-size: var(--hvnly-body-font-size, var(--hvnly--text-base));
	font-weight: var(--hvnly-body-font-weight, 400);
	color: var(--hvnly-body-text-color, var(--hvnly--ink-600));
	background: var(--hvnly--surface-0);
	line-height: var(--hvnly-body-line-height, var(--hvnly--leading-normal));
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

img {
	max-width: 100%;
	display: block;
}

a {
	color: inherit;
	text-decoration: none;
}

button {
	font: inherit;
	cursor: pointer;
	border: none;
	background: none;
	color: inherit;
}

ul,
ol {
	list-style: none;
}

/* ── Headings ──────────────────────────────────────────────── */
h1,
h2,
h3,
h4,
h5,
h6 {
	font-family: var(--hvnly--font-display);
	color: var(--hvnly-heading-color, var(--hvnly--ink-900));
	font-weight: var(--hvnly--weight-bold);
	line-height: var(--hvnly--leading-tight);
	letter-spacing: var(--hvnly--tracking-snug);
}

h1 {
	font-size: var(--hvnly-h1-size, var(--hvnly--text-display-lg));
	line-height: var(--hvnly-h1-line-height, var(--hvnly--leading-tight));
	font-weight: var(--hvnly-h1-weight, var(--hvnly--weight-bold));
	letter-spacing: var(--hvnly-h1-letter-spacing, var(--hvnly--tracking-tight));
	text-transform: var(--hvnly-h1-transform, none);
}

h2 {
	font-size: var(--hvnly-h2-size, var(--hvnly--text-display-md));
	line-height: var(--hvnly-h2-line-height, var(--hvnly--leading-tight));
	font-weight: var(--hvnly-h2-weight, var(--hvnly--weight-bold));
	letter-spacing: var(--hvnly-h2-letter-spacing, var(--hvnly--tracking-snug));
	text-transform: var(--hvnly-h2-transform, none);
}

h3 {
	font-size: var(--hvnly-h3-size, var(--hvnly--text-xl));
	line-height: var(--hvnly-h3-line-height, var(--hvnly--leading-tight));
	font-weight: var(--hvnly-h3-weight, var(--hvnly--weight-bold));
	letter-spacing: var(--hvnly-h3-letter-spacing, var(--hvnly--tracking-snug));
	text-transform: var(--hvnly-h3-transform, none);
}

h4 {
	font-size: var(--hvnly-h4-size, var(--hvnly--text-md));
	line-height: var(--hvnly-h4-line-height, var(--hvnly--leading-tight));
	font-weight: var(--hvnly-h4-weight, var(--hvnly--weight-bold));
	letter-spacing: var(--hvnly-h4-letter-spacing, var(--hvnly--tracking-snug));
	text-transform: var(--hvnly-h4-transform, none);
}

h5 {
	font-size: var(--hvnly-h5-size, var(--hvnly--text-lg));
	line-height: var(--hvnly-h5-line-height, var(--hvnly--leading-tight));
	font-weight: var(--hvnly-h5-weight, var(--hvnly--weight-semibold));
	letter-spacing: var(--hvnly-h5-letter-spacing, var(--hvnly--tracking-snug));
	text-transform: var(--hvnly-h5-transform, none);
}

h6 {
	font-size: var(--hvnly-h6-size, var(--hvnly--text-base));
	line-height: var(--hvnly-h6-line-height, var(--hvnly--leading-tight));
	font-weight: var(--hvnly-h6-weight, var(--hvnly--weight-semibold));
	letter-spacing: var(--hvnly-h6-letter-spacing, var(--hvnly--tracking-wide));
	text-transform: var(--hvnly-h6-transform, uppercase);
	color: var(--hvnly-heading-color, var(--hvnly--ink-600));
}

p {
	margin-bottom: 0;
}

small {
	font-size: var(--hvnly--text-sm);
}

strong,
b {
	font-weight: var(--hvnly--weight-bold);
}

em,
i:not([class*="fa-"]) {
	font-style: italic;
}

code,
pre {
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

/* ── Focus ─────────────────────────────────────────────────── */
:focus-visible {
	outline: 2px solid var(--hvnly--core-primary);
	outline-offset: 3px;
	border-radius: var(--hvnly--space-1);
}

/* ── Typography utilities ──────────────────────────────────── */
.hvnly-text-display {
	font-family: var(--hvnly--font-display);
}

.hvnly-text-body {
	font-family: var(--hvnly--font-body);
}

.hvnly-text-ink-900 { color: var(--hvnly--ink-900); }
.hvnly-text-ink-600 { color: var(--hvnly--ink-600); }
.hvnly-text-ink-400 { color: var(--hvnly--ink-400); }
.hvnly-text-primary { color: var(--hvnly--core-primary); }
.hvnly-text-success { color: var(--hvnly--success); }
.hvnly-text-on-dark { color: rgba(255, 255, 255, 0.62); }

.hvnly-text-uppercase {
	text-transform: uppercase;
	letter-spacing: var(--hvnly--tracking-wider);
}

.hvnly-lead {
	font-size: var(--hvnly--text-2xl);
	color: var(--hvnly--ink-400);
	line-height: var(--hvnly--leading-normal);
}

.hvnly-grad {
	background: var(--hvnly--core-gradient);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

/* ── Spacing utilities ─────────────────────────────────────── */
.hvnly-stack-2 > * + * { margin-top: var(--hvnly--space-3); }
.hvnly-stack-3 > * + * { margin-top: var(--hvnly--space-5); }
.hvnly-stack-4 > * + * { margin-top: var(--hvnly--space-7); }
.hvnly-stack-5 > * + * { margin-top: var(--hvnly--space-9); }
.hvnly-stack-6 > * + * { margin-top: var(--hvnly--space-11); }

.hvnly-cluster {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--hvnly--space-6);
}

/* ── Reveal on scroll ──────────────────────────────────────── */
.hvnly-reveal {
	opacity: 0;
	transform: translateY(var(--hvnly--space-11));
	transition: var(--hvnly--transition-reveal);
}

.hvnly-reveal.is-visible {
	opacity: 1;
	transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
	.hvnly-reveal {
		opacity: 1;
		transform: none;
		transition: none;
	}
}

/* ── Skip link ───────────────────────────────────────────────── */
.hvnly-skip-link {
	position: absolute;
	left: -999px;
	top: 0;
	background: var(--hvnly--core-primary);
	color: var(--hvnly--on-primary);
	padding: var(--hvnly--space-5) var(--hvnly--space-9);
	z-index: var(--hvnly--z-skip);
	border-radius: 0 0 var(--hvnly--radius-sm) 0;
}

.hvnly-skip-link:focus {
	left: 0;
}

/* ── Screen-reader only ──────────────────────────────────────── */
.hvnly-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}
