/* ═══════════════════════════════════════════════════════════
   Scroll Indicator — Logo Inside Dot (یکپارچه)
   ─────────────────────────────────────────────────────────────
   • هر dot شامل: bullet + logo + label
   • bullet اندازه‌اش با --scale lerp می‌شود (default → 0px) → (active → 40px)
   • logo فقط در dot active (scale=1) نمایش داده می‌شود
   • CSS transition روی scale ها smooth (برای scroll سریع)
   • لوگو در dot قبلی fade-out + در dot جدید fade-in
   ═══════════════════════════════════════════════════════════ */

.cbsi {
	--cbsi-bg:        var(--cb-bg, #0d1117);
	--cbsi-fg:        #e6edf3;
	--cbsi-muted:     rgba(255, 255, 255, .35);
	--cbsi-accent:    var(--cb-steel, #6aaecc);
	--cbsi-active:    var(--cb-gold, #c8a84c);
	--cbsi-spine-w:   2px;
	--cbsi-active-size: 40px;          /* اندازه‌ی نهایی dot وقتی فعال */
	--cbsi-dot:       9px;             /* اندازه‌ی پیش‌فرض bullet */
	--cbsi-track:     320px;
	/* --cbsi-logo: inline از PHP می‌آید */

	position: fixed;
	top: 50%;
	transform: translateY(-50%);
	z-index: 800;
	display: flex;
	align-items: center;
	pointer-events: none;
	opacity: 0;
	transition: opacity .5s ease-out;
}
.cbsi[hidden] { display: flex !important; }
.cbsi.is-ready { opacity: 1; }

.cbsi[data-pos="left"]  { left:  20px; }
.cbsi[data-pos="right"] { right: 20px; }

/* ─── حالت روشن — رنگ‌های تیره‌تر تا روی پس‌زمینه‌ی روشن دیده شوند ─── */
.cbasco-theme-light .cbsi,
html[data-cb-theme="light"] .cbsi {
	--cbsi-bg:    #ffffff;
	--cbsi-fg:    #1a2632;
	--cbsi-muted: rgba(26, 38, 50, .55);    /* تیره‌تر از قبل (0.55 به‌جای 0.3) */
	--cbsi-accent: #2b6c8c;                 /* آبی فولادی حالت روشن */
}

/* خط نشانگر در حالت روشن باید صریحاً تیره باشد */
.cbasco-theme-light .cbsi-spine::before,
html[data-cb-theme="light"] .cbsi-spine::before {
	background: rgba(26, 38, 50, .5);
}

/* bullet در حالت روشن قوی‌تر */
.cbasco-theme-light .cbsi-dot-bullet,
html[data-cb-theme="light"] .cbsi-dot-bullet {
	background: rgba(26, 38, 50, .55);
}

.cbasco-theme-light .cbsi-dot:hover .cbsi-dot-bullet,
.cbasco-theme-light .cbsi-dot:focus-visible .cbsi-dot-bullet,
html[data-cb-theme="light"] .cbsi-dot:hover .cbsi-dot-bullet,
html[data-cb-theme="light"] .cbsi-dot:focus-visible .cbsi-dot-bullet {
	background: #1a2632;
}

/* ─────────────────────────────────────────────────────────────
   SPINE — خط عمودی + dotها
   ───────────────────────────────────────────────────────────── */
.cbsi-spine {
	position: relative;
	width: var(--cbsi-active-size);
	height: var(--cbsi-track);
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	align-items: center;
	padding: 6px 0;
	pointer-events: auto;
}

.cbsi-spine::before {
	content: '';
	position: absolute;
	top: var(--cbsi-active-size);
	bottom: var(--cbsi-active-size);
	left: 50%;
	width: var(--cbsi-spine-w);
	transform: translateX(-50%);
	background: var(--cbsi-muted);
	border-radius: 2px;
}

/* ─────────────────────────────────────────────────────────────
   DOT — container شامل bullet + logo
   ───────────────────────────────────────────────────────────── */
.cbsi-dot {
	--scale: 0;                        /* JS تنظیم می‌کند */
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--cbsi-active-size);
	height: var(--cbsi-active-size);
	padding: 0;
	background: transparent;
	border: 0;
	cursor: pointer;
	z-index: 2;
	pointer-events: auto;
}

/* ─── BULLET — دایره‌ی اصلی dot ─── */
.cbsi-dot-bullet {
	display: block;
	width: calc(var(--cbsi-dot) + (var(--cbsi-active-size) - var(--cbsi-dot)) * var(--scale));
	height: calc(var(--cbsi-dot) + (var(--cbsi-active-size) - var(--cbsi-dot)) * var(--scale));
	border-radius: 50%;
	background: var(--cbsi-muted);
	transition: background .35s ease-out, box-shadow .35s ease-out;
	box-shadow:
		inset 0 0 0 calc(2px * var(--scale)) var(--cbsi-accent),
		0 calc(4px * var(--scale)) calc(14px * var(--scale)) rgba(0, 0, 0, calc(.4 * var(--scale)));
}

/* وقتی scale > 0.5 (یعنی dot داره بزرگ میشه) background مات بشه */
.cbsi-dot[style*="--scale: 1"] .cbsi-dot-bullet,
.cbsi-dot[style*="--scale:1"]  .cbsi-dot-bullet,
.cbsi-dot.is-active .cbsi-dot-bullet {
	background: var(--cbsi-bg);
}

.cbsi-dot:hover .cbsi-dot-bullet,
.cbsi-dot:focus-visible .cbsi-dot-bullet {
	background: var(--cbsi-fg);
}

/* ─── LOGO داخل dot ─── */
.cbsi-dot-logo {
	position: absolute;
	top: 50%;
	left: 50%;
	width: var(--cbsi-active-size);
	height: var(--cbsi-active-size);
	margin-top:  calc(var(--cbsi-active-size) / -2);
	margin-left: calc(var(--cbsi-active-size) / -2);
	border-radius: 50%;
	overflow: hidden;
	pointer-events: none;
	/* لوگو از CSS variable می‌آید — مقیاسش با --scale تنظیم می‌شود */
	background-image: var(--cbsi-logo);
	background-size: 70%;
	background-position: center;
	background-repeat: no-repeat;
	opacity: var(--scale);             /* لوگو متناسب با scale fade in می‌شود */
	transform: scale(calc(.5 + .5 * var(--scale))); /* از .5 شروع → 1 */
	transition: opacity .35s ease-out, transform .35s cubic-bezier(.34, 1.56, .64, 1);
}

/* ─── RIPPLE — قطره روی سطح آب وقتی dot جدید active شد ─── */
.cbsi-dot.is-ripple::after {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	width: var(--cbsi-active-size);
	height: var(--cbsi-active-size);
	margin-left: calc(var(--cbsi-active-size) / -2);
	margin-top:  calc(var(--cbsi-active-size) / -2);
	border-radius: 50%;
	border: 2px solid var(--cbsi-accent);
	opacity: 0;
	pointer-events: none;
	animation: cbsi-drop .85s cubic-bezier(.16, 1, .3, 1) forwards;
}

@keyframes cbsi-drop {
	0%   { transform: scale(.4);  opacity: .9; border-width: 3px; }
	35%  { transform: scale(1.0); opacity: .65; border-width: 2.5px; }
	60%  { transform: scale(1.6); opacity: .35; border-width: 2px; }
	100% { transform: scale(2.4); opacity: 0;   border-width: 1px; }
}

/* ─── DOT LABEL (روی hover کنار dot) ─── */
.cbsi-dot-label {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	background: var(--cbsi-bg);
	color: var(--cbsi-fg);
	font-size: 12px;
	font-weight: 600;
	padding: 5px 10px;
	border-radius: 8px;
	white-space: nowrap;
	opacity: 0;
	pointer-events: none;
	transition: opacity .2s;
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	box-shadow: 0 4px 12px rgba(0, 0, 0, .25);
}
.cbsi[data-pos="left"]  .cbsi-dot-label { left:  calc(100% + 14px); right: auto; }
.cbsi[data-pos="right"] .cbsi-dot-label { right: calc(100% + 14px); left:  auto; }
.cbsi-dot:hover .cbsi-dot-label,
.cbsi-dot:focus-visible .cbsi-dot-label { opacity: 1; }

/* ─────────────────────────────────────────────────────────────
   TOOLTIP
   ───────────────────────────────────────────────────────────── */
.cbsi-tooltip {
	position: absolute;
	top: 50%;
	background: var(--cbsi-bg);
	color: var(--cbsi-fg);
	font-size: 13px;
	font-weight: 700;
	padding: 8px 14px;
	border-radius: 10px;
	white-space: nowrap;
	pointer-events: none;
	transform: translateY(-50%) scale(.9);
	opacity: 0;
	transition: opacity .25s, transform .35s cubic-bezier(.34, 1.56, .64, 1);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	box-shadow: 0 6px 18px rgba(0, 0, 0, .35);
	max-width: 240px;
	overflow: hidden;
	text-overflow: ellipsis;
}
.cbsi[data-pos="left"]  .cbsi-tooltip { left:  calc(var(--cbsi-active-size) + 18px); right: auto; }
.cbsi[data-pos="right"] .cbsi-tooltip { right: calc(var(--cbsi-active-size) + 18px); left:  auto; }
.cbsi-tooltip.is-visible {
	opacity: 1;
	transform: translateY(-50%) scale(1);
}

/* ─────────────────────────────────────────────────────────────
   MOBILE — نوار افقی پایین
   ───────────────────────────────────────────────────────────── */
@media (max-width: 700px) {
	.cbsi[data-mobile="hide"] { display: none !important; }

	.cbsi[data-mobile="bottom-bar"] {
		--cbsi-track:        100%;
		--cbsi-active-size:  36px;
		--cbsi-dot:          8px;
		top: auto;
		bottom: 16px;
		left: 12px !important;
		right: 12px !important;
		transform: none;
		flex-direction: column;
		align-items: stretch;
		background: var(--cbsi-bg);
		backdrop-filter: blur(14px);
		-webkit-backdrop-filter: blur(14px);
		border-radius: 100px;
		padding: 6px 14px;
		box-shadow: 0 8px 28px rgba(0, 0, 0, .45);
	}

	.cbsi[data-mobile="bottom-bar"] .cbsi-spine {
		flex-direction: row;
		justify-content: space-between;
		width: 100%;
		height: var(--cbsi-active-size);
		padding: 0 14px;
	}

	.cbsi[data-mobile="bottom-bar"] .cbsi-spine::before {
		top: 50%;
		bottom: auto;
		left: var(--cbsi-active-size);
		right: var(--cbsi-active-size);
		width: auto;
		height: var(--cbsi-spine-w);
		transform: translateY(-50%);
	}

	.cbsi[data-mobile="bottom-bar"] .cbsi-tooltip {
		top: -42px !important;
		left: 50% !important;
		right: auto !important;
		transform: translateX(-50%) scale(.9) !important;
	}
	.cbsi[data-mobile="bottom-bar"] .cbsi-tooltip.is-visible {
		transform: translateX(-50%) scale(1) !important;
	}

	.cbsi[data-mobile="bottom-bar"] .cbsi-dot-label { display: none; }
}

/* ─── ACCESSIBILITY ─── */
@media (prefers-reduced-motion: reduce) {
	.cbsi-dot-bullet,
	.cbsi-dot-logo,
	.cbsi-tooltip,
	.cbsi-dot-label { transition-duration: .01s !important; }
	.cbsi-dot.is-ripple::after { animation: none; }
}

@media print {
	.cbsi { display: none !important; }
}
