/* =============================================================
   Spline Viewer for Elementor — Frontend Styles
   ============================================================= */

/* ----- Editor Placeholder ----- */

.spline-viewer-placeholder {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 16px;
	min-height: 300px;
	border: 2px dashed rgba(150, 150, 150, 0.35);
	border-radius: 12px;
	background: rgba(0, 0, 0, 0.03);
	padding: 40px 20px;
	text-align: center;
}

.spline-viewer-placeholder__icon {
	opacity: 0.45;
	color: #888;
}

.spline-viewer-placeholder__text {
	color: #777;
	font-size: 14px;
	line-height: 1.5;
	max-width: 320px;
}

/* ----- Container (base) ----- */

.spline-viewer-wrap {
	position: relative;
	width: 100%;
	line-height: 0;
}

.spline-viewer-wrap spline-viewer {
	display: block;
	width: 100%;
	height: 100%;
}

/* ----- Scroll: Normal ----- */

.spline-scroll--normal {
	/* Default document-flow behavior — no overrides needed. */
}

/* ----- Scroll: Sticky ----- */

.spline-scroll--sticky {
	position: -webkit-sticky;
	position: sticky;
	top: 0;
	z-index: 10;
}

/* ----- Scroll: Fixed ----- */

.spline-scroll--fixed {
	position: fixed;
	pointer-events: none;
}

.spline-scroll--fixed spline-viewer {
	pointer-events: auto;
}

.spline-fixed--fullscreen {
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
}

/* ----- Interaction Blocker ----- */

.spline-no-interaction {
	pointer-events: none;
}

.spline-interaction-blocker {
	position: absolute;
	inset: 0;
	z-index: 2;
	cursor: default;
	background: transparent;
	pointer-events: auto;
}

/* ----- Loading pulse (while scene downloads) ----- */

.spline-viewer-wrap.is-loading {
	animation: spline-pulse 2s ease-in-out infinite;
}

@keyframes spline-pulse {
	0%, 100% { opacity: 0.5; }
	50%      { opacity: 1; }
}
