/* PULSE theme layer — bold color + animation on top of the block theme + Beaver Builder */

/* ponytail: in this BB + block-theme setup, the flexbox row-content-wrap/row-content pairing
   collapses to 0 width (flex-basis:auto has nothing definite to size against) and, when forced
   to a width, mis-centers via justify-content math. Switching the wrap to block display and
   centering row-content with a classic auto-margin sidesteps the flex circularity entirely.
   Remove if BB ships a fix upstream. */
.fl-row-content-wrap { display: block !important; }
.fl-row-content { width: 100% !important; margin: 0 auto !important; }

/* Home page: BB's hero already carries the page identity, so hide the theme's automatic
   page title, and let the BB row (built as fixed-width) bleed full width edge to edge. */
.home .wp-block-post-title { display: none; }
.home .fl-builder-content,
.home .fl-builder-content .fl-row-fixed-width,
.home .fl-builder-content .fl-row-content.fl-row-fixed-width { max-width: none !important; }
.home .wp-block-post-content.has-global-padding { padding-left: 0 !important; padding-right: 0 !important; }
.home main.wp-block-group { margin-top: 0 !important; }
.home main.wp-block-group > .wp-block-group { padding-top: 0 !important; }

:root {
	--pulse-bg: #0b0b14;
	--pulse-blue: #3d5cff;
	--pulse-magenta: #ff2e9a;
	--pulse-yellow: #ffd23f;
	--pulse-cyan: #29e0d6;
	--pulse-white: #f5f6ff;
}

/* ---------- Global feel ---------- */
body {
	background: var(--pulse-white);
}

a {
	transition: color 0.2s ease;
}

/* Header nav */
.wp-block-template-part.header,
header.wp-block-group {
	position: relative;
	z-index: 20;
}

.wp-block-navigation a.wp-block-navigation-item__content {
	font-weight: 700;
	position: relative;
}

.wp-block-navigation a.wp-block-navigation-item__content:hover {
	color: var(--pulse-magenta) !important;
}

/* ---------- Animated gradient hero ---------- */
.pulse-hero {
	position: relative;
	overflow: hidden;
	background: linear-gradient(120deg, var(--pulse-bg), var(--pulse-blue), var(--pulse-magenta), var(--pulse-bg));
	background-size: 300% 300%;
	animation: pulse-gradient-shift 12s ease infinite;
	color: var(--pulse-white);
}

@keyframes pulse-gradient-shift {
	0% { background-position: 0% 50%; }
	50% { background-position: 100% 50%; }
	100% { background-position: 0% 50%; }
}

.pulse-hero h1, .pulse-hero h2 {
	color: var(--pulse-white);
	text-shadow: 0 2px 30px rgba(0,0,0,0.35);
}

.pulse-glow {
	animation: pulse-glow 2.4s ease-in-out infinite;
}

@keyframes pulse-glow {
	0%, 100% { box-shadow: 0 0 20px 0 rgba(61, 92, 255, 0.6); }
	50% { box-shadow: 0 0 40px 8px rgba(255, 46, 154, 0.6); }
}

.pulse-float {
	animation: pulse-float 5s ease-in-out infinite;
}

@keyframes pulse-float {
	0%, 100% { transform: translateY(0px); }
	50% { transform: translateY(-14px); }
}

/* ---------- Breaking ticker ---------- */
.pulse-ticker {
	background: var(--pulse-bg);
	color: var(--pulse-yellow);
	overflow: hidden;
	white-space: nowrap;
	font-weight: 700;
	letter-spacing: 0.02em;
	border-top: 3px solid var(--pulse-magenta);
	border-bottom: 3px solid var(--pulse-magenta);
}

.pulse-ticker-track {
	display: inline-block;
	padding-left: 100%;
	animation: pulse-ticker-scroll 28s linear infinite;
}

@keyframes pulse-ticker-scroll {
	0% { transform: translateX(0); }
	100% { transform: translateX(-100%); }
}

/* ---------- Cards / grid ---------- */
.pulse-card {
	position: relative;
	overflow: hidden;
	border-radius: 14px;
	display: block;
	text-decoration: none;
	background: var(--pulse-bg);
	box-shadow: 0 10px 30px rgba(0,0,0,0.15);
	transition: transform 0.35s ease, box-shadow 0.35s ease;
}

.pulse-card:hover {
	transform: translateY(-6px);
	box-shadow: 0 20px 40px rgba(0,0,0,0.25);
}

.pulse-card img {
	display: block;
	width: 100%;
	height: 260px;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.pulse-card:hover img {
	transform: scale(1.08);
}

.pulse-card-body {
	position: absolute;
	left: 0; right: 0; bottom: 0;
	padding: 20px;
	background: linear-gradient(0deg, rgba(11,11,20,0.95), rgba(11,11,20,0.1));
	color: var(--pulse-white);
}

.pulse-chip {
	display: inline-block;
	font-size: 12px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 4px 10px;
	border-radius: 999px;
	margin-bottom: 8px;
	color: var(--pulse-bg);
	background: var(--pulse-cyan);
}

.pulse-chip.cat-ai { background: var(--pulse-magenta); color: #fff; }
.pulse-chip.cat-gadgets { background: var(--pulse-yellow); }
.pulse-chip.cat-space-science { background: var(--pulse-cyan); }
.pulse-chip.cat-software { background: var(--pulse-blue); color: #fff; }

.pulse-card-title {
	font-size: 20px;
	font-weight: 800;
	line-height: 1.25;
	margin: 0;
}

/* ---------- Scroll reveal ---------- */
.pulse-reveal {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity 0.7s ease, transform 0.7s ease;
}

.pulse-reveal.pulse-in-view {
	opacity: 1;
	transform: translateY(0);
}

/* ---------- Native post templates (archives / single) ---------- */
.wp-block-post-featured-image img {
	border-radius: 14px;
	transition: transform 0.5s ease;
}

a:hover > .wp-block-post-featured-image img {
	transform: scale(1.03);
}

.wp-block-post-title a {
	font-weight: 800;
}

.wp-block-post-title a:hover {
	color: var(--pulse-magenta);
}

.wp-block-post-terms a {
	display: inline-block;
	font-size: 12px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	padding: 3px 10px;
	border-radius: 999px;
	background: var(--pulse-blue);
	color: #fff !important;
	text-decoration: none;
}

/* Newsletter / CTA band */
.pulse-cta-band {
	background: linear-gradient(90deg, var(--pulse-magenta), var(--pulse-blue));
	color: #fff;
}

.pulse-cta-band input[type="email"] {
	border-radius: 999px;
	border: none;
	padding: 14px 20px;
}

.pulse-cta-band button, .pulse-cta-band .fl-button {
	border-radius: 999px !important;
	background: var(--pulse-bg) !important;
	border: none !important;
}
