/* ═══════════════════════════════════════════════════════════════
   HoloPrism – Elementor Widget  |  assets/css/holo-prism.css
   ═══════════════════════════════════════════════════════════════ */

/* ── Custom Properties ─────────────────────────────────────── */
:root {
	--hp-rainbow-1: #ff0080;
	--hp-rainbow-2: #ff8c00;
	--hp-rainbow-3: #00e5ff;
	--hp-glass:     rgba(255,255,255,0.06);
	--hp-glass-bdr: rgba(255,255,255,0.18);
	--hp-ui-font:   'Courier New', monospace;
	--hp-radius:    12px;
	--hp-transition:400ms cubic-bezier(.4,0,.2,1);
}

/* ── Wrapper ────────────────────────────────────────────────── */
.holo-prism-wrapper {
	position:   relative;
	width:      100%;
	min-height: 400px;
	overflow:   hidden;
	cursor:     crosshair;
	border-radius: var(--hp-radius);
	background:    #0a0a0f;
}

/* ── Canvas ─────────────────────────────────────────────────── */
.holo-prism-canvas {
	position:   absolute;
	inset:      0;
	width:      100% !important;
	height:     100% !important;
	display:    block;
	z-index:    1;
}

/* ── Scene overlay ──────────────────────────────────────────── */
.holo-prism-scene {
	position: absolute;
	inset:    0;
	z-index:  2;
	pointer-events: none;
	height:   600px; /* overridden by Elementor control */
}

/* ── UI layer ───────────────────────────────────────────────── */
.holo-prism-ui {
	position: absolute;
	bottom:   20px;
	left:     50%;
	transform: translateX(-50%);
	z-index:  3;
	pointer-events: none;
}

.holo-prism-hint {
	font-family: var(--hp-ui-font);
	font-size:   11px;
	letter-spacing: .15em;
	text-transform: uppercase;
	color:   rgba(255,255,255,0.4);
	padding: 6px 14px;
	border:  1px solid rgba(255,255,255,0.12);
	border-radius: 20px;
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	background: rgba(0,0,0,0.3);
	transition: opacity .6s ease;
}

.holo-prism-wrapper:hover .holo-prism-hint {
	opacity: 0;
}

/* ── NoScript fallback ──────────────────────────────────────── */
.holo-prism-noscript {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	padding: 16px;
}
.holo-prism-noscript img {
	flex: 1 1 200px;
	max-width: 100%;
	border-radius: 8px;
	object-fit: cover;
}

/* ══════════════════════════════════════════════════════════════
   LIGHTBOX
   ══════════════════════════════════════════════════════════════ */
.holo-lightbox {
	position:   fixed;
	inset:      0;
	z-index:    99999;
	background: rgba(0,0,0,0.92);
	backdrop-filter: blur(14px);
	-webkit-backdrop-filter: blur(14px);
	display:    flex;
	align-items:     center;
	justify-content: center;
	opacity:    0;
	visibility: hidden;
	transition: opacity var(--hp-transition), visibility var(--hp-transition);
}

.holo-lightbox.is-open {
	opacity:    1;
	visibility: visible;
}

/* Content area */
.holo-lightbox-content {
	position:   relative;
	max-width:  90vw;
	max-height: 90vh;
	display:    flex;
	flex-direction: column;
	align-items: center;
	transform:  scale(.92);
	transition: transform var(--hp-transition);
}

.holo-lightbox.is-open .holo-lightbox-content {
	transform: scale(1);
}

.holo-lightbox-img {
	max-width:  90vw;
	max-height: 75vh;
	object-fit: contain;
	border-radius: 8px;
	box-shadow:
		0 0 0 1px rgba(255,255,255,.06),
		0 32px 80px rgba(0,0,0,.7),
		0 0 40px rgba(0,229,255,.08);
	display: block;
}

/* Caption */
.holo-lightbox-caption {
	margin-top: 18px;
	text-align: center;
	font-family: var(--hp-ui-font);
	color: rgba(255,255,255,0.85);
}
.holo-lightbox-title {
	font-size:   14px;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	margin: 0 0 6px;
	background: linear-gradient(90deg,var(--hp-rainbow-1),var(--hp-rainbow-3));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
.holo-lightbox-text {
	font-size:  12px;
	opacity:    .6;
	margin:     0;
	line-height: 1.6;
}

/* Buttons */
.holo-lightbox button {
	position:   absolute;
	background: var(--hp-glass);
	border:     1px solid var(--hp-glass-bdr);
	color:      rgba(255,255,255,0.8);
	cursor:     pointer;
	border-radius: 50%;
	width:  48px;
	height: 48px;
	font-size:   20px;
	display:     flex;
	align-items: center;
	justify-content: center;
	transition:  background .2s, transform .2s;
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
	z-index: 2;
}
.holo-lightbox button:hover {
	background: rgba(255,255,255,0.12);
	transform:  scale(1.1);
}

.holo-lightbox-close {
	top:   16px;
	right: 16px;
	font-size: 18px !important;
}
.holo-lightbox-prev { left: 16px; top: 50%; transform: translateY(-50%); }
.holo-lightbox-next { right: 16px; top: 50%; transform: translateY(-50%); }
.holo-lightbox-prev:hover { transform: translateY(-50%) scale(1.1); }
.holo-lightbox-next:hover { transform: translateY(-50%) scale(1.1); }

/* ══════════════════════════════════════════════════════════════
   PRISM OVERLAY (canvas post-processing atmosphere)
   ══════════════════════════════════════════════════════════════ */
.holo-prism-wrapper::after {
	content:  '';
	position: absolute;
	inset:    0;
	z-index:  2;
	pointer-events: none;
	background:
		radial-gradient(ellipse 60% 40% at 20% 50%,  rgba(255,0,128,.04)   0%, transparent 60%),
		radial-gradient(ellipse 50% 30% at 80% 30%,  rgba(0,229,255,.05)   0%, transparent 60%),
		radial-gradient(ellipse 80% 60% at 50% 100%, rgba(0,0,0,.5)        0%, transparent 70%);
}

/* ══════════════════════════════════════════════════════════════
   RESPONSIVE
   ══════════════════════════════════════════════════════════════ */
@media (max-width: 767px) {
	.holo-prism-wrapper {
		min-height: 300px;
		cursor: default;
	}
	.holo-prism-hint { font-size: 10px; }
	.holo-lightbox-prev { left: 8px; width: 38px; height: 38px; }
	.holo-lightbox-next { right: 8px; width: 38px; height: 38px; }
}

/* ══════════════════════════════════════════════════════════════
   LOADING STATE
   ══════════════════════════════════════════════════════════════ */
.holo-prism-wrapper.is-loading .holo-prism-canvas {
	opacity: 0;
	transition: opacity .8s ease;
}
.holo-prism-wrapper.is-ready .holo-prism-canvas {
	opacity: 1;
}

/* Loading shimmer */
.holo-prism-loader {
	position:   absolute;
	inset:      0;
	z-index:    4;
	display:    flex;
	align-items:     center;
	justify-content: center;
	transition: opacity .6s ease;
}
.holo-prism-wrapper.is-ready .holo-prism-loader { opacity: 0; pointer-events: none; }

.holo-prism-loader-ring {
	width:  48px;
	height: 48px;
	border: 2px solid rgba(255,255,255,0.1);
	border-top-color: var(--hp-rainbow-3);
	border-right-color: var(--hp-rainbow-1);
	border-radius: 50%;
	animation: hp-spin 1s linear infinite;
}
@keyframes hp-spin {
	to { transform: rotate(360deg); }
}

/* Rainbow edge glow on hover */
.holo-prism-wrapper:hover {
	box-shadow:
		0 0 0 1px rgba(255,255,255,.04),
		0 0 40px -10px rgba(0,229,255,.25),
		0 0 80px -20px rgba(255,0,128,.2);
}
