/* Reset */
*, *::before, *::after { box-sizing: border-box; }
/* overscroll-behavior-x (not overflow-x:hidden) stops the whole site from
   bouncing/dragging left-right on mobile Safari. overflow-x:hidden looks
   like the obvious fix but it makes body/html a scroll container, which
   breaks position:sticky for every descendant (the sticky header went
   dead site-wide the one time this was tried) — overscroll-behavior kills
   the bounce without that side effect. Inner carousels (press-strip,
   pricing/testimonials swipers) are unaffected either way since they
   scroll via their own overflow-x:auto.
   scroll-behavior:smooth applies to every in-page #anchor jump site-wide
   (nav "Get Started" → #pricing, FAQ/blog quick-nav, post TOC), so those
   read as a deliberate scroll instead of an instant jump. Direct/initial
   hash navigation (e.g. a footer link straight to /resources/#seo) is the
   one case this breaks — see the inline script at the top of header.php's
   <head>, which forces an instant jump for that specific case and lets
   blog.js correct to the precise offset once the page has actually
   settled. */
html { -webkit-text-size-adjust: 100%; overscroll-behavior-x: none; scroll-behavior: smooth; }
body { margin: 0; overscroll-behavior-x: none; }
img { max-width: 100%; height: auto; display: block; }
ul, ol { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4, p { margin: 0; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }

/* Variables */
:root {
	--color-purple: #673de6;
	--color-purple-dark: #5025d1;
	--color-teal: #00b090;
	--color-ink: #1d1e20;
	--color-body: #4d4d51;
	--color-hero-bg: #f4f5ff;
	--color-navy: #2f1c6a;
	--color-border: #d5dfff;
	--radius-pill: 50px;
	--radius-card: 16px;
	--container-width: 1188px; /* 1140px measured content + 24px padding each side (border-box) */
	--container-wide: 1264px; /* 1216px measured content + 24px padding each side (border-box) */
	--font-heading: 'DM Sans', -apple-system, 'system-ui', 'Segoe UI', Roboto, sans-serif;
	--font-body: 'DM Sans', -apple-system, 'system-ui', 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

body {
	font-family: var(--font-body);
	font-size: 16px;
	line-height: 1.6;
	color: var(--color-body);
	background: #ffffff;
}

h1, h2, h3, h4 {
	font-family: var(--font-heading);
	color: var(--color-ink);
	line-height: 1.15;
}

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

a:focus-visible,
button:focus-visible {
	outline: 2px solid var(--color-purple);
	outline-offset: 2px;
}

/* Container utilities: the <section> itself is full-bleed (so its
   background color spans the whole viewport, matching Elementor's actual
   outer-container/inner-container split); a .container inside constrains
   the content width. */
.site-footer__inner,
.container {
	max-width: var(--container-width);
	margin-left: auto;
	margin-right: auto;
	padding-left: 24px;
	padding-right: 24px;
}

/* Wider container: measured 1216px content on hero and FAQ specifically */
.hero__inner,
.container--wide {
	max-width: var(--container-wide);
	margin-left: auto;
	margin-right: auto;
	padding-left: 24px;
	padding-right: 24px;
}

section {
	padding-top: 80px;
	padding-bottom: 80px;
}

/* Eyebrow pill badge: verified via _elementor_data — the live markup is a flex
   container (align-items:center) wrapping a heading with line-height:20px, not
   a padded inline text node, so it centers vertically regardless of font
   metrics. */
.eyebrow {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--font-heading);
	font-weight: 900;
	font-size: 14px;
	line-height: 20px;
	text-transform: uppercase;
	color: #4a0efb;
	background: #ffffff;
	border: 1px solid #d1ceff;
	border-radius: 100px;
	padding: 10px 24px;
	margin: 0 0 24px;
}
/* inline-flex is an inline-level box, so margin:auto alone can't center it;
   forcing a shrink-wrapped block-level flex container makes centering work
   again while keeping the internal flex vertical-centering above. */
.eyebrow--center { display: flex; width: max-content; margin-left: auto; margin-right: auto; }
/* Verified via _elementor_data: the hero eyebrow container is width:65% of its
   column (not fixed padding), which is why it has more side whitespace than a
   text-hugging pill. */
.eyebrow--hero { width: 65%; }

/* Section titles: verified via _elementor_data — DM Sans 36px/700/40 line-height
   is the shared heading style across every section except FAQ. */
.section-title {
	font-family: var(--font-heading);
	font-size: 36px;
	font-weight: 700;
	line-height: 40px;
	margin-bottom: 16px;
}
.section-title--center { text-align: center; margin-left: auto; margin-right: auto; max-width: 720px; }
.section-title--invert { color: #ffffff; }

@media (max-width: 768px) {
	.section-title { font-size: 20px; line-height: 28px; }
}
.section-subtitle { font-family: var(--font-heading); font-size: 16px; font-weight: 400; line-height: 24px; color: var(--color-body); margin-bottom: 40px; }
.section-subtitle--center { text-align: center; max-width: 640px; margin-left: auto; margin-right: auto; }
.section-subtitle--invert { color: rgba(255,255,255,0.8); }

/* Buttons */
.btn {
	display: inline-block;
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 16px;
	border-radius: var(--radius-pill);
	padding: 12px 25px;
	transition: background-color 0.15s ease, transform 0.1s ease;
}
.btn--primary {
	background: var(--color-purple);
	color: #ffffff;
}
.btn--primary:hover { background: var(--color-purple-dark); }
.btn--outline {
	background: #ffffff;
	border: 2px solid var(--color-purple);
	color: var(--color-purple);
}
.btn--outline:hover { background: #f4f2ff; }
.btn--block { display: block; width: 100%; text-align: center; }

/* Checkout CTAs are <button type="submit"> inside a <form> (POST, not a
   ?add-to-cart= link) so the product ID never appears in the visible URL.
   display:contents keeps the form itself out of the layout entirely, so
   the button flows exactly as if it were a direct child of its parent
   (price-card, compare table cell, etc.) -- and the reset below strips
   native <button> chrome so it's pixel-identical to the old <a class="btn">. */
.hypeflare-checkout-cta { display: contents; }
.hypeflare-checkout-cta button {
	appearance: none;
	-webkit-appearance: none;
	border: 0;
	background: none;
	cursor: pointer;
	font: inherit;
}

.link-cta {
	display: inline-block;
	margin-top: 16px;
	font-weight: 600;
	color: var(--color-purple);
	text-decoration: underline;
}

/* Checklist */
.checklist { margin: 24px 0; }
.checklist li {
	position: relative;
	padding-left: 36px;
	margin-bottom: 12px;
	font-size: 16px;
}
.checklist li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 2px;
	width: 25px;
	height: 25px;
	border: 2px solid #333333;
	border-radius: 50%;
}
.checklist li::after {
	content: '';
	position: absolute;
	left: 7px;
	top: 10px;
	width: 11px;
	height: 6px;
	border-left: 2px solid #333333;
	border-bottom: 2px solid #333333;
	transform: rotate(-45deg);
}

/* Icon variant: real check-circle.svg (verified via _elementor_data), used by the hero checklist */
.checklist--icon li {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding-left: 0;
	font-family: var(--font-heading);
	font-size: 20px;
	font-weight: 400;
	line-height: 28px;
	color: #4d4d51;
}
.checklist--icon li::before,
.checklist--icon li::after {
	content: none;
}
.checklist--icon img {
	flex-shrink: 0;
	width: 25px;
	height: 25px;
	margin-top: 2px;
}

.section-cta { text-align: center; margin-top: 40px; }

@media (max-width: 768px) {
	section { padding-top: 48px; padding-bottom: 48px; }
}

/* Footer (shared across every page). Modeled loosely on ascendviral.com's
   footer structure: brand row, then a company blurb on the left with three
   link columns on the right (Company/internal pages, Guides/blog category
   links, Legal) — deliberately WITHOUT their attached top CTA banner, and
   keeping this site's own dark purple + white treatment throughout. */
.site-footer {
	background: #1f1346;
	color: #ffffff;
	padding: 48px 0 32px;
}
.site-footer__inner { padding-top: 0; padding-bottom: 0; }
.site-footer a { color: #ffffff; }
.site-footer a:hover { color: #ffffff; }

.site-footer__brand {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 16px;
	padding-bottom: 32px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.site-footer__logo img { width: 200px; }
.site-footer__payments { width: 220px; height: auto; max-width: 100%; }

/* Left column (company blurb + contact) is wider than the three equal nav
   columns, matching the reference's about-column-plus-three-columns split. */
.site-footer__columns {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr 1fr;
	gap: 32px;
	padding-top: 40px;
	padding-bottom: 32px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.site-footer__tagline { font-size: 14px; line-height: 1.6; color: rgba(255, 255, 255, 0.75); margin-bottom: 16px; max-width: 320px; }
.site-footer__contact { font-size: 14px; line-height: 1.6; color: rgba(255, 255, 255, 0.75); }
.site-footer__contact a { color: rgba(255, 255, 255, 0.75); }
.site-footer__contact a:hover { color: #ffffff; }

.site-footer__col { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.site-footer__col-title {
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.5);
	margin-bottom: 4px;
}
.site-footer__col a,
.site-footer__col button {
	font-size: 14px;
	color: rgba(255, 255, 255, 0.85);
	text-align: left;
}
.site-footer__col a:hover,
.site-footer__col button:hover { color: #ffffff; }

.site-footer__copyright { margin-top: 24px; font-size: 13px; }
.site-footer__disclaimer { margin-top: 16px; font-size: 12px; line-height: 1.6; opacity: 0.7; }

@media (max-width: 900px) {
	.site-footer__columns { grid-template-columns: 1fr 1fr; row-gap: 32px; }
	.site-footer__about { grid-column: 1 / -1; }
}

@media (max-width: 560px) {
	.site-footer__columns { grid-template-columns: 1fr; }
	/* Keep logo + payment icons on one row (logo left, icons right)
	   instead of the default flex-wrap stacking them — combined width at
	   the default 200px/220px sizes exceeds a narrow viewport, so both
	   shrink and the gap tightens to fit within a 320px-wide screen's
	   content area (320 - 48px container padding = 272px). */
	.site-footer__brand { flex-wrap: nowrap; gap: 12px; }
	.site-footer__logo img { width: 120px; }
	.site-footer__payments { width: 138px; }
}
