/**
 * Cyber Canvas Light & Dark — Toggle Widget Styles
 *
 * Four style variants: slider, pill, icon, fab
 * + floating positioning system
 *
 * @package CyberCanvas\LightDark
 */

/* ============================================================
   Base
   ============================================================ */
.cc-toggle-wrapper {
	display: inline-block;
	line-height: 1;
}

.cc-toggle {
	--cc-toggle-size: 44px;
	--cc-toggle-bg-light: transparent;
	--cc-toggle-bg-dark: transparent;
	--cc-toggle-hover-bg-light: transparent;
	--cc-toggle-hover-bg-dark: transparent;
	--cc-toggle-knob-light: #f9a825;
	--cc-toggle-knob-dark: #c9d1ff;

	display: inline-flex;
	align-items: center;
	gap: 8px;
	cursor: pointer;
	border: none;
	background: none;
	padding: 0;
	font-family: inherit;
	outline: none;
	position: relative;
	-webkit-tap-highlight-color: transparent;
}

.cc-toggle:focus-visible {
	outline: 2px solid var(--cc-primary);
	outline-offset: 3px;
	border-radius: 4px;
}

/* ============================================================
   Labels
   ============================================================ */
.cc-toggle-label {
	font-size: 13px;
	font-weight: 500;
	white-space: nowrap;
}

/* In light mode, show light label; in dark, show dark */
[data-theme="light"] .cc-toggle-label--dark,
:root:not([data-theme]) .cc-toggle-label--dark {
	display: none;
}

[data-theme="dark"] .cc-toggle-label--light {
	display: none;
}

/* ============================================================
   Style 1: Classic Slider
   ============================================================ */
.cc-toggle--slider .cc-toggle__track {
	position: relative;
	display: flex;
	align-items: center;
	width: calc(var(--cc-toggle-size) * 1.8);
	height: var(--cc-toggle-size);
	background: var(--cc-toggle-bg-light);
	border-radius: calc(var(--cc-toggle-size) / 2);
	padding: 3px;
	box-sizing: border-box;
	transition: background-color 0.3s ease;
}

[data-theme="dark"] .cc-toggle--slider .cc-toggle__track {
	background: var(--cc-toggle-bg-dark);
}

.cc-toggle--slider .cc-toggle__knob {
	position: absolute;
	left: 3px;
	width: calc(var(--cc-toggle-size) - 6px);
	height: calc(var(--cc-toggle-size) - 6px);
	background: var(--cc-toggle-knob-light);
	border-radius: 50%;
	transition: transform 0.3s ease, background-color 0.3s ease;
	z-index: 2;
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

[data-theme="dark"] .cc-toggle--slider .cc-toggle__knob {
	transform: translateX(calc(var(--cc-toggle-size) * 0.8));
	background: var(--cc-toggle-knob-dark);
}

.cc-toggle--slider .cc-toggle__icon {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 1;
	color: rgba(0, 0, 0, 0.4);
	transition: color 0.3s ease, opacity 0.3s ease;
}

.cc-toggle--slider .cc-toggle__icon--sun { color: #f9a825; }
.cc-toggle--slider .cc-toggle__icon--moon { color: rgba(0, 0, 0, 0.3); }

[data-theme="dark"] .cc-toggle--slider .cc-toggle__icon--sun { color: rgba(255, 255, 255, 0.3); }
[data-theme="dark"] .cc-toggle--slider .cc-toggle__icon--moon { color: #c9d1ff; }

/* ============================================================
   Style 2: Pill with Labels
   ============================================================ */
.cc-toggle--pill .cc-toggle__pill {
	position: relative;
	display: flex;
	background: var(--cc-toggle-bg-light);
	border-radius: calc(var(--cc-toggle-size) / 2);
	overflow: hidden;
	height: var(--cc-toggle-size);
	transition: background-color 0.3s ease;
}

[data-theme="dark"] .cc-toggle--pill .cc-toggle__pill {
	background: var(--cc-toggle-bg-dark);
}

.cc-toggle--pill .cc-toggle__pill-option {
	display: flex;
	align-items: center;
	gap: 4px;
	padding: 0 16px;
	font-size: 12px;
	font-weight: 600;
	position: relative;
	z-index: 2;
	transition: color 0.3s ease;
	white-space: nowrap;
	color: var(--cc-text);
}

.cc-toggle--pill .cc-toggle__pill-slider {
	position: absolute;
	top: 3px;
	left: 3px;
	width: calc(50% - 3px);
	height: calc(100% - 6px);
	background: var(--cc-bg);
	border-radius: calc(var(--cc-toggle-size) / 2);
	transition: transform 0.3s ease, background-color 0.3s ease;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
	z-index: 1;
}

[data-theme="dark"] .cc-toggle--pill .cc-toggle__pill-slider {
	transform: translateX(100%);
	background: var(--cc-surface);
}

[data-theme="dark"] .cc-toggle--pill .cc-toggle__pill-option--light {
	color: var(--cc-secondary);
}

[data-theme="dark"] .cc-toggle--pill .cc-toggle__pill-option--dark {
	color: var(--cc-heading);
}

[data-theme="light"] .cc-toggle--pill .cc-toggle__pill-option--light,
:root:not([data-theme]) .cc-toggle--pill .cc-toggle__pill-option--light {
	color: var(--cc-heading);
}

[data-theme="light"] .cc-toggle--pill .cc-toggle__pill-option--dark,
:root:not([data-theme]) .cc-toggle--pill .cc-toggle__pill-option--dark {
	color: var(--cc-secondary);
}

/* ============================================================
   Style 3: Icon Button
   ============================================================ */
.cc-toggle--icon {
	width: var(--cc-toggle-size);
	height: var(--cc-toggle-size);
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--cc-toggle-bg-light);
	transition: background-color 0.3s ease, color 0.3s ease, transform 0.15s ease;
}

[data-theme="dark"] .cc-toggle--icon {
	background: var(--cc-toggle-bg-dark);
}

.cc-toggle--icon:hover {
	background: var(--cc-toggle-hover-bg-light);
	transform: scale(1.08);
}

[data-theme="dark"] .cc-toggle--icon:hover {
	background: var(--cc-toggle-hover-bg-dark);
}

.cc-toggle--icon:active {
	transform: scale(0.95);
}

.cc-toggle--icon .cc-toggle__icon-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	width: 100%;
	height: 100%;
}

.cc-toggle--icon .cc-toggle__icon {
	position: absolute;
	transition: opacity 0.3s ease, transform 0.3s ease;
}

.cc-toggle--icon .cc-toggle__icon--sun {
	color: var(--cc-toggle-knob-light);
	opacity: 1;
	transform: rotate(0deg);
}

.cc-toggle--icon .cc-toggle__icon--moon {
	color: var(--cc-toggle-knob-dark);
	opacity: 0;
	transform: rotate(-90deg);
}

[data-theme="dark"] .cc-toggle--icon .cc-toggle__icon--sun {
	opacity: 0;
	transform: rotate(90deg);
}

[data-theme="dark"] .cc-toggle--icon .cc-toggle__icon--moon {
	opacity: 1;
	transform: rotate(0deg);
}

/* ============================================================
   Style 4: Floating Action Button (FAB)
   ============================================================ */
.cc-toggle--fab {
	width: var(--cc-toggle-size);
	height: var(--cc-toggle-size);
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--cc-toggle-bg-light);
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
	transition: background-color 0.3s ease, color 0.3s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

[data-theme="dark"] .cc-toggle--fab {
	background: var(--cc-toggle-bg-dark);
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
}

.cc-toggle--fab:hover {
	background: var(--cc-toggle-hover-bg-light);
	transform: scale(1.1);
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
}

[data-theme="dark"] .cc-toggle--fab:hover {
	background: var(--cc-toggle-hover-bg-dark);
}

.cc-toggle--fab:active {
	transform: scale(0.95);
}

.cc-toggle--fab .cc-toggle__fab-inner {
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	width: 100%;
	height: 100%;
}

.cc-toggle--fab .cc-toggle__icon {
	position: absolute;
	transition: opacity 0.3s ease, transform 0.3s ease;
}

.cc-toggle--fab .cc-toggle__icon--sun {
	color: var(--cc-toggle-knob-light);
	opacity: 1;
	transform: scale(1);
}

.cc-toggle--fab .cc-toggle__icon--moon {
	color: var(--cc-toggle-knob-dark);
	opacity: 0;
	transform: scale(0.5);
}

[data-theme="dark"] .cc-toggle--fab .cc-toggle__icon--sun {
	opacity: 0;
	transform: scale(0.5);
}

[data-theme="dark"] .cc-toggle--fab .cc-toggle__icon--moon {
	opacity: 1;
	transform: scale(1);
}

/* ============================================================
   Floating Position System
   ============================================================ */
.cc-toggle--floating {
	position: fixed !important;
	z-index: 9999;
	--cc-float-x: 20px;
	--cc-float-y: 20px;
}

.cc-toggle--float-top-left {
	top: var(--cc-float-y);
	left: var(--cc-float-x);
}

.cc-toggle--float-top-right {
	top: var(--cc-float-y);
	right: var(--cc-float-x);
}

.cc-toggle--float-bottom-left {
	bottom: var(--cc-float-y);
	left: var(--cc-float-x);
}

.cc-toggle--float-bottom-right {
	bottom: var(--cc-float-y);
	right: var(--cc-float-x);
}

/* Floating entrance animation */
.cc-toggle--floating {
	animation: ccFloatIn 0.4s ease-out;
}

@keyframes ccFloatIn {
	from {
		opacity: 0;
		transform: scale(0.5) translateY(20px);
	}
	to {
		opacity: 1;
		transform: scale(1) translateY(0);
	}
}

/* Scroll-triggered: hidden by default, shown via JS */
.cc-toggle--floating[data-cc-scroll-trigger] {
	opacity: 0;
	pointer-events: none;
	transform: scale(0.5) translateY(20px);
	transition: opacity 0.3s ease, transform 0.3s ease;
	animation: none;
}

.cc-toggle--floating[data-cc-scroll-trigger].cc-toggle--visible {
	opacity: 1;
	pointer-events: auto;
	transform: scale(1) translateY(0);
}

/* ============================================================
   Responsive Visibility
   ============================================================ */
@media (min-width: 1025px) {
	.cc-toggle--hide-desktop { display: none !important; }
}

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

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

/* ============================================================
   Reduced motion
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
	.cc-toggle--floating {
		animation: none;
	}

	.cc-toggle--slider .cc-toggle__knob,
	.cc-toggle--pill .cc-toggle__pill-slider,
	.cc-toggle--icon .cc-toggle__icon,
	.cc-toggle--fab .cc-toggle__icon {
		transition: none;
	}
}
