/* PACI Floating Icons — frontend */

.pfi-item {
	display: flex;
	align-items: center;
	gap: 8px;
	transition: opacity .35s ease, transform .35s ease, visibility .35s;
}

.pfi-item.pfi-pending {
	opacity: 0 !important;
	visibility: hidden;
	transform: translateY(12px);
	pointer-events: none;
}

.pfi-item.pfi-visible {
	visibility: visible;
	transform: translateY(0);
	pointer-events: auto;
}

.pfi-trigger {
	display: flex;
	align-items: center;
	gap: 8px;
	background: none;
	border: 0;
	padding: 0;
	margin: 0;
	cursor: pointer;
	text-decoration: none;
	font: inherit;
	color: inherit;
}

/* Label position via flex direction */
.pfi-label-pos-left  .pfi-trigger { flex-direction: row-reverse; }
.pfi-label-pos-right .pfi-trigger { flex-direction: row; }
.pfi-label-pos-above .pfi-trigger { flex-direction: column-reverse; }
.pfi-label-pos-below .pfi-trigger { flex-direction: column; }

.pfi-bubble {
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: content-box;
	transition: transform .25s ease, box-shadow .25s ease;
}

.pfi-shadow .pfi-bubble {
	box-shadow: 0 4px 14px rgba(0, 0, 0, .25);
}

.pfi-bubble img,
.pfi-bubble .pfi-svg {
	width: 100%;
	height: 100%;
	display: block;
}

.pfi-bubble .pfi-svg svg {
	width: 100%;
	height: 100%;
	display: block;
}

/* Recolor SVG when a color is chosen */
.pfi-svg[data-colored="1"] svg,
.pfi-svg[data-colored="1"] svg * {
	fill: currentColor !important;
}

.pfi-label {
	white-space: nowrap;
	font-size: 13px;
	line-height: 1;
	padding: 7px 12px;
	border-radius: 999px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, .18);
	transition: opacity .25s ease, transform .25s ease;
}

.pfi-label-hover .pfi-label {
	opacity: 0;
	transform: translateX(4px);
	pointer-events: none;
}

.pfi-label-hover:hover .pfi-label,
.pfi-label-hover:focus-within .pfi-label {
	opacity: 1;
	transform: translateX(0);
}

/* ---------- Hover effects ---------- */
.pfi-hover-grow:hover   .pfi-bubble { transform: scale(1.15); }
.pfi-hover-shrink:hover .pfi-bubble { transform: scale(.88); }
.pfi-hover-rotate:hover .pfi-bubble { transform: rotate(14deg) scale(1.06); }
.pfi-hover-float:hover  .pfi-bubble { transform: translateY(-6px); }

.pfi-hover-pulse:hover  .pfi-bubble { animation: pfi-pulse 1s ease-in-out infinite; }
.pfi-hover-bounce:hover .pfi-bubble { animation: pfi-bounce .6s ease infinite; }
.pfi-hover-shake:hover  .pfi-bubble { animation: pfi-shake .5s ease infinite; }

@keyframes pfi-pulse {
	0%, 100% { transform: scale(1); }
	50%      { transform: scale(1.12); }
}

@keyframes pfi-bounce {
	0%, 100% { transform: translateY(0); }
	50%      { transform: translateY(-8px); }
}

@keyframes pfi-shake {
	0%, 100% { transform: translateX(0); }
	25%      { transform: translateX(-3px) rotate(-3deg); }
	75%      { transform: translateX(3px) rotate(3deg); }
}

/* ---------- Device visibility ---------- */
@media (min-width: 1025px) {
	.pfi-hide-desktop { display: none !important; }
}

@media (min-width: 768px) and (max-width: 1024px) {
	.pfi-hide-tablet { display: none !important; }
}

@media (max-width: 767px) {
	.pfi-hide-mobile { display: none !important; }
}

/* ---------- Modal ---------- */
.pfi-modal {
	position: fixed;
	inset: 0;
	display: none;
}

.pfi-modal.pfi-open {
	display: block;
}

.pfi-modal-overlay {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, .45);
	opacity: 0;
	transition: opacity .25s ease;
}

.pfi-modal.pfi-anim .pfi-modal-overlay {
	opacity: 1;
}

.pfi-modal-box {
	position: absolute;
	top: 50%;
	left: 50%;
	width: calc(100vw - 32px);
	max-height: calc(100vh - 48px);
	overflow: auto;
	background: #fff;
	border-radius: 14px;
	box-shadow: 0 20px 60px rgba(0, 0, 0, .3);
	padding: 28px;
	box-sizing: border-box;
	/* Start collapsed at the icon; JS sets transform-origin to the icon position. */
	transform: translate(-50%, -50%) scale(.05);
	opacity: 0;
	transition: transform .32s cubic-bezier(.34, 1.4, .64, 1), opacity .25s ease;
}

.pfi-modal.pfi-anim .pfi-modal-box {
	transform: translate(-50%, -50%) scale(1);
	opacity: 1;
}

.pfi-modal-close {
	position: absolute;
	top: 10px;
	right: 12px;
	width: 34px;
	height: 34px;
	border: 0;
	border-radius: 50%;
	background: rgba(0, 0, 0, .06);
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
	color: #333;
}

.pfi-modal-close:hover {
	background: rgba(0, 0, 0, .12);
}

@media (prefers-reduced-motion: reduce) {
	.pfi-item,
	.pfi-bubble,
	.pfi-label,
	.pfi-modal-box,
	.pfi-modal-overlay {
		transition: none !important;
		animation: none !important;
	}
}
