/* ==========================================================
   FastBookPrint — site-wide motion and hover effects
   Entrance animations only run when fbp-motion.js adds
   html.fbp-motion (never in the Elementor editor, never for
   visitors who ask for reduced motion), so content is always
   visible without JavaScript.
   ========================================================== */

:root {
	--fbp-ease: cubic-bezier(.2, .65, .3, 1);
	--fbp-lift-shadow: 0 14px 30px rgb(15 14 23 / .08);
	--fbp-orange-line: rgb(240 64 0 / .35);
}

/* ---------- Scroll reveal ---------- */
html.fbp-motion .fbp-reveal {
	opacity: 0;
	transform: translateY(22px);
	transition:
		opacity .7s var(--fbp-ease) var(--fbp-d, 0ms),
		transform .7s var(--fbp-ease) var(--fbp-d, 0ms);
	will-change: opacity, transform;
}
html.fbp-motion .fbp-reveal--fade { transform: none; }
html.fbp-motion .fbp-reveal--zoom { transform: scale(.97); }
html.fbp-motion .fbp-reveal.is-in { opacity: 1; transform: none; }

/* ---------- Home hero entrance ---------- */
@keyframes fbp-rise {
	from { opacity: 0; transform: translateY(18px); }
	to { opacity: 1; transform: none; }
}
html.fbp-motion .fbp-h-hero__badge,
html.fbp-motion .fbp-h-hero__title,
html.fbp-motion .fbp-h-hero__lead,
html.fbp-motion .fbp-h-hero__ctas,
html.fbp-motion .fbp-h-chips li {
	animation: fbp-rise .8s var(--fbp-ease) both;
}
html.fbp-motion .fbp-h-hero__title { animation-delay: .08s; }
html.fbp-motion .fbp-h-hero__lead { animation-delay: .18s; }
html.fbp-motion .fbp-h-hero__ctas { animation-delay: .28s; }
html.fbp-motion .fbp-h-chips li { animation-delay: calc(.38s + var(--fbp-i, 0) * 60ms); }

.fbp-h-hero__badge::before { animation: fbp-pulse 2.2s ease-in-out infinite; }
@keyframes fbp-pulse {
	0%, 100% { box-shadow: 0 0 0 0 rgb(240 64 0 / .45); }
	60% { box-shadow: 0 0 0 6px rgb(240 64 0 / 0); }
}

/* ---------- Buttons (home, blog, posts) ---------- */
.fbp-h .fbp-h-btn:active,
.fbp-b .fbp-b-btn:active,
.fbp-post .fbp-post-cta__btn:active,
a.fbp-btn-pill:active { transform: translateY(0) scale(.98); }
.fbp-h .fbp-h-btn--outline:hover,
.fbp-b .fbp-b-btn--outline:hover {
	transform: translateY(-1px);
	box-shadow: 0 6px 16px rgb(240 64 0 / .14);
}

/* ---------- Shared card hover ---------- */
.fbp-h-step,
.fbp-h-price,
.fbp-h-spec,
.fbp-h-rv__card,
.fbp-h-chips li,
.fbp-post-toc,
.fbp-post-cta {
	transition: transform .3s var(--fbp-ease), box-shadow .3s var(--fbp-ease), border-color .3s ease;
}
.fbp-h-step:hover,
.fbp-h-price:hover,
.fbp-h-rv__card:hover {
	transform: translateY(-5px);
	box-shadow: var(--fbp-lift-shadow);
	border-color: var(--fbp-orange-line);
}
.fbp-h-spec:hover {
	transform: translateY(-3px);
	box-shadow: var(--fbp-lift-shadow);
	border-color: var(--fbp-orange-line);
}
.fbp-h-chips li:hover {
	transform: translateY(-2px);
	border-color: var(--fbp-orange-line);
	box-shadow: 0 6px 14px rgb(15 14 23 / .06);
}
.fbp-post-toc:hover,
.fbp-post-cta:hover { box-shadow: var(--fbp-lift-shadow); }

/* How it works: step number pops */
.fbp-h-step__num { transition: background .3s ease, color .3s ease, transform .35s var(--fbp-ease); }
.fbp-h-step:hover .fbp-h-step__num {
	background: var(--fbp-orange);
	color: #fff;
	transform: rotate(-8deg) scale(1.1);
}

/* Price examples: price turns orange */
.fbp-h-price__amt strong { transition: color .25s ease; }
.fbp-h-price:hover .fbp-h-price__amt strong { color: var(--fbp-orange); }

/* Why FastBookPrint: label turns orange */
.fbp-h-spec dt { transition: color .25s ease; }
.fbp-h-spec:hover dt { color: var(--fbp-orange); }

/* Bulk block: list items nudge, dot grows */
.fbp-h-bulk { transition: transform .4s var(--fbp-ease), box-shadow .4s var(--fbp-ease); }
.fbp-h-bulk:hover { box-shadow: 0 22px 50px rgb(0 0 0 / .18); }
.fbp-h-bulk li { transition: padding-left .25s var(--fbp-ease), color .25s ease; }
.fbp-h-bulk li::before { transition: transform .25s var(--fbp-ease); }
.fbp-h-bulk li:hover { padding-left: 24px; color: #fff; }
.fbp-h-bulk li:hover::before { transform: scale(1.5); }

/* FAQ: highlight and smooth open */
.fbp-h-faq details { transition: border-color .25s ease, box-shadow .25s ease; }
.fbp-h-faq details:hover { border-color: var(--fbp-orange-line); box-shadow: 0 8px 20px rgb(15 14 23 / .05); }
.fbp-h-faq summary { transition: color .2s ease; }
.fbp-h-faq summary:hover { color: var(--fbp-orange); }
.fbp-h-faq details[open] .fbp-h-faq__a { animation: fbp-rise .4s var(--fbp-ease); }

/* Reviews summary bar */
.fbp-h-gbp { transition: box-shadow .3s ease, border-color .3s ease; }
.fbp-h-gbp:hover { border-color: var(--fbp-orange-line); box-shadow: var(--fbp-lift-shadow); }

/* ---------- Image zoom on guide / blog cards ---------- */
.fbp-h-guide__img img,
.fbp-b__img img { transition: transform .6s var(--fbp-ease); }
.fbp-h-guide:hover .fbp-h-guide__img img,
.fbp-b-card:hover .fbp-b__img img,
.fbp-b-featured:hover .fbp-b__img img { transform: scale(1.05); }
.fbp-b-card,
.fbp-b-featured { transition: border-color .25s ease, box-shadow .3s ease, transform .3s var(--fbp-ease); }
.fbp-b-card:hover { transform: translateY(-5px); }

/* "Read guide" arrows */
.fbp-h-guide__more::after,
.fbp-b-more::after {
	content: "\2192";
	display: inline-block;
	margin-left: 6px;
	transition: transform .25s var(--fbp-ease);
}
.fbp-h-guide:hover .fbp-h-guide__more::after,
.fbp-b-card:hover .fbp-b-more::after,
.fbp-b-featured:hover .fbp-b-more::after { transform: translateX(5px); }

/* ---------- Blog post ---------- */
.fbp-post__hero img { transition: transform .8s var(--fbp-ease); }
.fbp-post__hero:hover img { transform: scale(1.02); }
.fbp-post-toc a { transition: color .15s ease, transform .2s var(--fbp-ease); }
.fbp-post-toc a:hover { transform: translateX(4px); }
.fbp-post-cta li::before { transition: transform .25s var(--fbp-ease); }
.fbp-post-cta li:hover::before { transform: scale(1.5); }

/* ---------- Header menu: sliding underline ---------- */
#masthead .hfe-nav-menu a.hfe-menu-item {
	background-image: linear-gradient(#f04000, #f04000);
	background-position: 0 calc(100% - 2px);
	background-size: 0 2px;
	background-repeat: no-repeat;
	transition: background-size .3s var(--fbp-ease), color .2s ease;
}
#masthead .hfe-nav-menu a.hfe-menu-item:hover,
#masthead .hfe-nav-menu a.hfe-menu-item:focus-visible {
	background-size: 100% 2px;
	color: #f04000;
}

/* ---------- Footer links ---------- */
.fbp-foot a { display: inline-block; transition: color .2s ease, transform .2s var(--fbp-ease); }
.fbp-foot a:hover { transform: translateX(4px); }

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