/*
 * Each screen corner (h + v position) gets one fixed, flex-stacking group
 * so multiple independent channel widgets sharing a corner don't overlap.
 */
.jikona-cw-group {
	position: fixed;
	right: 20px;
	bottom: 20px;
	z-index: 99990;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 10px;
}

.jikona-cw-group.jikona-cw-h-left {
	right: auto;
	left: 20px;
	align-items: flex-start;
}

.jikona-cw-group.jikona-cw-v-top {
	bottom: auto;
	top: 20px;
}

.jikona-cw-group.jikona-cw-v-middle {
	bottom: auto;
	top: 50%;
	transform: translateY( -50% );
}

/* One channel's own widget — just a positioning context for its button + bubble */
.jikona-cw-widget {
	position: relative;
	display: inline-flex;
}

.jikona-cw-widget.jikona-cw-await-trigger {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

.jikona-cw-widget.jikona-cw-triggered {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transition: opacity 0.35s ease;
}

.jikona-cw-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: var( --jikona-cw-icon-size, 56px );
	height: var( --jikona-cw-icon-size, 56px );
	border-radius: 50%;
	border: var( --jikona-cw-border, none );
	box-shadow: 0 4px 14px rgba( 0, 0, 0, 0.25 );
	background: var( --jikona-cw-icon-bg, #fff );
	overflow: hidden;
	position: relative;
	transition: transform 0.15s ease;
}

.jikona-cw-btn:hover {
	transform: scale( 1.06 );
}

.jikona-cw-btn svg,
.jikona-cw-btn img {
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
}

.jikona-cw-btn[data-tooltip]::after {
	content: attr( data-tooltip );
	position: absolute;
	right: calc( 100% + 12px );
	top: 50%;
	transform: translateY( -50% );
	background: #1f2937;
	color: #fff;
	padding: 6px 12px;
	border-radius: 6px;
	font-size: 13px;
	line-height: 1.3;
	white-space: nowrap;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.15s ease;
}

.jikona-cw-btn[data-tooltip]:hover::after {
	opacity: 1;
}

.jikona-cw-group.jikona-cw-h-left .jikona-cw-btn[data-tooltip]::after {
	right: auto;
	left: calc( 100% + 12px );
}

.jikona-cw-badge {
	position: absolute;
	top: -4px;
	right: -4px;
	min-width: 20px;
	height: 20px;
	padding: 0 5px;
	border-radius: 10px;
	background: var( --jikona-cw-pending-bg, #e53935 );
	color: var( --jikona-cw-pending-color, #fff );
	font-family: var( --jikona-cw-pending-font, inherit );
	font-size: 12px;
	font-weight: 700;
	line-height: 20px;
	text-align: center;
	box-shadow: 0 0 0 2px #fff;
	z-index: 1;
}

.jikona-cw-bubble {
	position: absolute;
	right: calc( 100% + 12px );
	top: 50%;
	transform: translateY( -50% );
	max-width: 220px;
	background: #fff;
	color: #1f2937;
	padding: 10px 30px 10px 14px;
	border-radius: 10px;
	box-shadow: 0 4px 14px rgba( 0, 0, 0, 0.2 );
	font-size: 14px;
	line-height: 1.35;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.2s ease;
}

.jikona-cw-bubble.is-visible {
	opacity: 1;
	visibility: visible;
}

.jikona-cw-group.jikona-cw-h-left .jikona-cw-bubble {
	right: auto;
	left: calc( 100% + 12px );
	padding: 10px 14px 10px 30px;
}

.jikona-cw-bubble-close {
	position: absolute;
	top: 2px;
	right: 6px;
	border: none;
	background: transparent;
	font-size: 16px;
	line-height: 1;
	cursor: pointer;
	color: #9ca3af;
	padding: 4px;
}

.jikona-cw-bubble-close:hover {
	color: #1f2937;
}

.jikona-cw-group.jikona-cw-h-left .jikona-cw-bubble-close {
	right: auto;
	left: 6px;
}

@media ( max-width: 767px ) {
	.jikona-cw-group {
		right: 14px;
		bottom: 14px;
	}

	.jikona-cw-group.jikona-cw-h-left {
		right: auto;
		left: 14px;
	}

	.jikona-cw-group.jikona-cw-v-top {
		top: 14px;
		bottom: auto;
	}

	.jikona-cw-desktop-only {
		display: none !important;
	}
}

@media ( min-width: 768px ) {
	.jikona-cw-mobile-only {
		display: none !important;
	}
}

/* Background blur (toggled on <body> via JS while a channel's bubble is open) */
body.jikona-cw-blur-open::after {
	content: '';
	position: fixed;
	inset: 0;
	background: rgba( 15, 23, 42, 0.25 );
	backdrop-filter: blur( 6px );
	-webkit-backdrop-filter: blur( 6px );
	z-index: 99980;
	pointer-events: none;
}

/* Attention effects — looped on a channel's button until it's first clicked */
@keyframes jikona-cw-bounce {
	0%, 100% { transform: translateY( 0 ); }
	25% { transform: translateY( -10px ); }
	50% { transform: translateY( 0 ); }
	75% { transform: translateY( -5px ); }
}

.jikona-cw-attn-bounce .jikona-cw-attn-target {
	animation: jikona-cw-bounce 1.6s ease-in-out infinite;
}

@keyframes jikona-cw-waggle {
	0%, 100% { transform: rotate( 0deg ); }
	20% { transform: rotate( -12deg ); }
	40% { transform: rotate( 10deg ); }
	60% { transform: rotate( -8deg ); }
	80% { transform: rotate( 6deg ); }
}

.jikona-cw-attn-waggle .jikona-cw-attn-target {
	animation: jikona-cw-waggle 1.8s ease-in-out infinite;
}

@keyframes jikona-cw-floating {
	0%, 100% { transform: translateY( 0 ); }
	50% { transform: translateY( -6px ); }
}

.jikona-cw-attn-floating .jikona-cw-attn-target {
	animation: jikona-cw-floating 2.4s ease-in-out infinite;
}

@keyframes jikona-cw-sheen-sweep {
	0% { transform: translateX( -120% ) rotate( 20deg ); }
	60%, 100% { transform: translateX( 160% ) rotate( 20deg ); }
}

.jikona-cw-attn-sheen .jikona-cw-attn-target {
	position: relative;
	overflow: hidden;
}

.jikona-cw-attn-sheen .jikona-cw-attn-target::after {
	content: '';
	position: absolute;
	top: -50%;
	left: 0;
	width: 30%;
	height: 200%;
	background: rgba( 255, 255, 255, 0.55 );
	animation: jikona-cw-sheen-sweep 2.4s ease-in-out infinite;
	pointer-events: none;
}

@keyframes jikona-cw-spin {
	from { transform: rotate( 0deg ); }
	to { transform: rotate( 360deg ); }
}

.jikona-cw-attn-spin .jikona-cw-attn-target {
	animation: jikona-cw-spin 2.2s linear infinite;
}

@keyframes jikona-cw-fade {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.45; }
}

.jikona-cw-attn-fade .jikona-cw-attn-target {
	animation: jikona-cw-fade 1.8s ease-in-out infinite;
}

@keyframes jikona-cw-shockwave-ring {
	0% { transform: scale( 1 ); opacity: 0.6; }
	100% { transform: scale( 1.9 ); opacity: 0; }
}

.jikona-cw-attn-shockwave .jikona-cw-attn-target {
	position: relative;
	overflow: visible;
}

.jikona-cw-attn-shockwave .jikona-cw-attn-target::before {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: 50%;
	border: 2px solid var( --jikona-cw-icon-bg, #1e88e5 );
	animation: jikona-cw-shockwave-ring 1.6s ease-out infinite;
	pointer-events: none;
}

@keyframes jikona-cw-blink {
	0%, 90%, 100% { opacity: 1; }
	95% { opacity: 0.15; }
}

.jikona-cw-attn-blink .jikona-cw-attn-target {
	animation: jikona-cw-blink 1.6s ease-in-out infinite;
}

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

.jikona-cw-attn-pulse .jikona-cw-attn-target {
	animation: jikona-cw-pulse 1.4s ease-in-out infinite;
}
