/* ==========================================================================
   Base: type scale, links, focus, skip link, reduced motion
   ========================================================================== */

body {
	background-color: var(--ce-ivory);
	color: var(--ce-charcoal);
	font-family: var(--ce-font-sans);
	font-size: var(--ce-fs-body);
	line-height: var(--ce-lh-body);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

#wrapper,
#main {
	background-color: var(--ce-ivory);
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4,
.heading-font {
	color: var(--ce-forest-dark);
	font-family: var(--ce-font-serif);
	font-weight: 600;
	font-optical-sizing: auto;
	letter-spacing: -.01em;
	line-height: var(--ce-lh-heading);
	text-wrap: balance;
}

h1, .h1 { font-size: var(--ce-fs-h1); font-weight: 500; letter-spacing: -.02em; }
h2, .h2 { font-size: var(--ce-fs-h2); }
h3, .h3 { font-size: var(--ce-fs-h3); }
h4, .h4 { font-size: var(--ce-fs-h4); }

.alt-font {
	font-family: var(--ce-font-serif);
	font-style: italic;
	font-weight: 400;
}

p { text-wrap: pretty; }

small,
.is-small { font-size: var(--ce-fs-small); }

.ce-eyebrow {
	color: var(--ce-terracotta-ink);
	font-family: var(--ce-font-sans);
	font-size: var(--ce-fs-eyebrow);
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
}

a {
	color: var(--ce-forest);
	text-underline-offset: .18em;
	transition: color var(--ce-dur-fast) var(--ce-ease);
}

a:hover { color: var(--ce-forest-dark); }

::selection {
	background: var(--ce-forest);
	color: var(--ce-on-dark);
}

/* Focus: visible for keyboard users only */
:focus { outline: none; }

:focus-visible {
	border-radius: 4px;
	box-shadow: var(--ce-focus-ring);
	outline: 2px solid transparent; /* Windows high-contrast mode */
}

/* Skip link (Flatsome outputs .skip-link) */
.skip-link.screen-reader-text:focus {
	background: var(--ce-forest);
	border-radius: var(--ce-radius-sm);
	clip: auto;
	color: var(--ce-on-dark);
	font-weight: 600;
	height: auto;
	left: var(--ce-space-4);
	padding: var(--ce-space-3) var(--ce-space-4);
	top: var(--ce-space-4);
	width: auto;
	z-index: 100000;
}

hr,
.is-divider {
	background-color: var(--ce-border);
	border-color: var(--ce-border);
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .01ms !important; /* reduced-motion override must win */
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
		transition-duration: .01ms !important;
	}
}
