/* ==========================================================================
   Smart Popup Pro — Frontend styles
   Mobile-first, lightweight, GPU-accelerated.
   ========================================================================== */

.spp-popup {
	position: fixed;
	inset: 0;
	z-index: 999999;
	display: flex;
	align-items: center;
	justify-content: center;
	visibility: hidden;
	opacity: 0;
	transition: opacity 0.28s ease, visibility 0s linear 0.28s;
	-webkit-tap-highlight-color: transparent;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
.spp-popup.is-open {
	visibility: visible;
	opacity: 1;
	transition: opacity 0.28s ease;
}

/* Overlay */
.spp-popup-overlay {
	position: absolute;
	inset: 0;
	backdrop-filter: blur(2px);
	-webkit-backdrop-filter: blur(2px);
}

/* Wrapper / safe area */
.spp-popup-wrap {
	position: relative;
	width: 100%;
	max-width: 460px;
	margin: 0;
	padding: 24px;
	padding-top: max(24px, env(safe-area-inset-top));
	padding-bottom: max(24px, env(safe-area-inset-bottom));
	box-sizing: border-box;
	display: flex;
	justify-content: center;
}

/* Inner */
.spp-popup-inner {
	position: relative;
	width: 100%;
	background: #ffffff;
	overflow: hidden;
	box-shadow:
		0 30px 60px -20px rgba(0, 0, 0, 0.35),
		0 18px 30px -16px rgba(0, 0, 0, 0.25);
	transform-origin: center;
	will-change: transform, opacity;
	touch-action: pan-y;
}

/* Image wrap is a link or div */
.spp-popup-link {
	display: block;
	position: relative;
	cursor: pointer;
	color: inherit;
	text-decoration: none;
}
.spp-popup-link[href] { cursor: pointer; }

.spp-popup-image {
	display: block;
	width: 100%;
	height: auto;
	max-height: 80vh;
	object-fit: cover;
	user-select: none;
	-webkit-user-drag: none;
}

/* CTA button overlay */
.spp-popup-cta {
	position: absolute;
	left: 50%;
	bottom: 18px;
	transform: translateX(-50%);
	padding: 12px 26px;
	border-radius: 999px;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.01em;
	box-shadow: 0 8px 24px -8px rgba(0,0,0,0.45);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
	white-space: nowrap;
}
.spp-popup-link:hover .spp-popup-cta {
	transform: translateX(-50%) translateY(-2px);
	box-shadow: 0 12px 28px -10px rgba(0,0,0,0.5);
}

/* Close button */
.spp-close {
	position: absolute;
	top: 10px;
	right: 10px;
	width: 36px;
	height: 36px;
	padding: 0;
	background: rgba(255,255,255,0.95);
	color: #111;
	border: 0;
	border-radius: 50%;
	box-shadow: 0 4px 12px rgba(0,0,0,0.25);
	cursor: pointer;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: transform 0.15s ease, background 0.15s ease;
	-webkit-tap-highlight-color: transparent;
}
.spp-close:hover { background: #fff; transform: rotate(90deg); }
.spp-close:focus-visible {
	outline: 2px solid #6366f1;
	outline-offset: 3px;
}
.spp-close svg { width: 18px; height: 18px; display: block; }

/* Trigger button (shortcode) */
.spp-trigger-btn {
	padding: 12px 22px;
	background: #111;
	color: #fff;
	border: 0;
	border-radius: 10px;
	font-weight: 600;
	font-size: 14px;
	cursor: pointer;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.spp-trigger-btn:hover { transform: translateY(-1px); box-shadow: 0 10px 22px -8px rgba(0,0,0,0.35); }

/* Confetti container */
.spp-confetti {
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 1000000;
	overflow: hidden;
}
.spp-confetti span {
	position: absolute;
	top: -10px;
	width: 8px;
	height: 14px;
	border-radius: 1px;
	opacity: 0.95;
	animation: spp-confetti-fall linear forwards;
}
@keyframes spp-confetti-fall {
	0%   { transform: translate3d(0,0,0) rotate(0deg); opacity: 1; }
	100% { transform: translate3d(var(--dx,0), 120vh, 0) rotate(720deg); opacity: 0; }
}

/* Body lock */
body.spp-locked {
	overflow: hidden !important;
	touch-action: none;
}

/* Screen reader only */
.spp-popup .screen-reader-text {
	clip: rect(1px, 1px, 1px, 1px);
	position: absolute !important;
	height: 1px;
	width: 1px;
	overflow: hidden;
}

/* ---------- Animations ---------- */

/* Fade — handled by .is-open opacity transition */
.spp-anim-fade .spp-popup-inner { transform: none; }

/* Zoom */
.spp-anim-zoom .spp-popup-inner {
	transform: scale(0.92);
	opacity: 0;
	transition: transform 0.32s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.32s ease;
}
.spp-anim-zoom.is-open .spp-popup-inner {
	transform: scale(1);
	opacity: 1;
}

/* Slide up */
.spp-anim-slide-up .spp-popup-inner {
	transform: translateY(40px);
	opacity: 0;
	transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.32s ease;
}
.spp-anim-slide-up.is-open .spp-popup-inner {
	transform: translateY(0);
	opacity: 1;
}

/* Slide down */
.spp-anim-slide-down .spp-popup-inner {
	transform: translateY(-40px);
	opacity: 0;
	transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.32s ease;
}
.spp-anim-slide-down.is-open .spp-popup-inner {
	transform: translateY(0);
	opacity: 1;
}

/* Swipe-down drag */
.spp-popup.is-dragging .spp-popup-inner {
	transition: none;
}

/* ---------- Responsive tweaks ---------- */
@media (max-width: 600px) {
	.spp-popup-wrap {
		max-width: 100%;
		padding: 16px;
	}
	.spp-close {
		top: 6px;
		right: 6px;
		width: 40px;
		height: 40px;
	}
}

@media (min-width: 601px) {
	.spp-popup-wrap { max-width: 480px; }
}

@media (prefers-reduced-motion: reduce) {
	.spp-popup,
	.spp-popup-inner {
		transition: opacity 0.15s linear !important;
	}
	.spp-anim-zoom .spp-popup-inner,
	.spp-anim-slide-up .spp-popup-inner,
	.spp-anim-slide-down .spp-popup-inner {
		transform: none !important;
	}
}
