/**
 * Frontend styles for Scrolling Notice Strip
 *
 * Provides CSS animations and styling for the scrolling notice display
 *
 * @package scrolling-notice-strip
 */

/* ===== Container Styles ===== */

.scrolling-notice-container {
	position: relative;
	width: 100%;
	overflow: hidden;
	box-sizing: border-box;
	font-size: 16px;
	font-weight: 500;
	letter-spacing: 0.5px;
	white-space: nowrap;
	/* GPU acceleration for smooth animation */
	transform: translateZ(0);
	-webkit-backface-visibility: hidden;
	backface-visibility: hidden;
	will-change: transform;
}

/* ===== Track & Item Structure ===== */

.scrolling-notice-track {
	display: flex;
	align-items: center;
	height: 100%;
	/* Apply animation to the track */
	animation: scroll-left var(--scroll-duration, 20s) linear infinite;
	/* GPU acceleration */
	transform: translateZ(0);
	will-change: transform;
}

.scrolling-notice-item {
	display: inline-flex;
	align-items: center;
	height: 100%;
	padding: 0 var(--scroll-gap, 50px) 0 0;
	flex-shrink: 0;
	white-space: nowrap;
}

/* Group wrapper for combined notices */
.scrolling-notice-group {
	display: inline-flex;
	align-items: center;
	height: 100%;
	flex-shrink: 0;
}

/* ===== Link & Text Styles ===== */

.scrolling-notice-link,
.scrolling-notice-text {
	display: inline-block;
	color: inherit;
	text-decoration: none;
	transition: opacity 0.3s ease;
}

.scrolling-notice-link:hover {
	opacity: 0.8;
	text-decoration: underline;
}

.scrolling-notice-link:focus {
	outline: 2px solid currentColor;
	outline-offset: 4px;
}

/* ===== Animation Keyframes ===== */

@keyframes scroll-left {
	0% {
		transform: translateX(0);
	}
	100% {
		/* Move left by exact pixel width (set via CSS variable) */
		transform: translateX(calc(-1 * var(--scroll-width, 100%)));
	}
}

/* ===== Pause on Hover (Accessibility) ===== */

.scrolling-notice-container:hover .scrolling-notice-track {
	animation-play-state: paused;
}

/* ===== Responsive Design ===== */

/* Tablets and smaller desktops */
@media screen and (max-width: 1024px) {
	.scrolling-notice-container {
		font-size: 15px;
		letter-spacing: 0.4px;
	}
}

/* Mobile devices */
@media screen and (max-width: 768px) {
	.scrolling-notice-container {
		font-size: 14px;
		letter-spacing: 0.3px;
	}

	.scrolling-notice-item {
		padding: 0 30px 0 0;
	}
}

/* Small mobile devices */
@media screen and (max-width: 480px) {
	.scrolling-notice-container {
		font-size: 13px;
		letter-spacing: 0.2px;
	}

	.scrolling-notice-item {
		padding: 0 20px 0 0;
	}
}

/* ===== Accessibility: Reduced Motion ===== */

@media (prefers-reduced-motion: reduce) {
	.scrolling-notice-track {
		animation: none;
	}

	.scrolling-notice-container {
		overflow-x: auto;
		overflow-y: hidden;
		-webkit-overflow-scrolling: touch;
	}

	.scrolling-notice-track {
		justify-content: flex-start;
	}

	/* Hide second copy when animation is disabled */
	.scrolling-notice-item:nth-child(2) {
		display: none;
	}
}

/* ===== Print Styles ===== */

@media print {
	.scrolling-notice-container {
		display: none;
	}
}

/* ===== High Contrast Mode Support ===== */

@media (prefers-contrast: high) {
	.scrolling-notice-link {
		text-decoration: underline;
	}

	.scrolling-notice-link:focus {
		outline: 3px solid currentColor;
		outline-offset: 5px;
	}
}

/* ===== RTL (Right-to-Left) Support ===== */

[dir="rtl"] .scrolling-notice-track {
	animation-name: scroll-right;
}

@keyframes scroll-right {
	0% {
		transform: translateX(0);
	}
	100% {
		transform: translateX(var(--scroll-width, 100%));
	}
}

/* ===== Performance Optimizations ===== */

/* Force GPU rendering for smoother animations */
.scrolling-notice-container,
.scrolling-notice-track,
.scrolling-notice-item {
	-webkit-transform: translate3d(0, 0, 0);
	transform: translate3d(0, 0, 0);
}

/* Optimize text rendering */
.scrolling-notice-container {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

/* ===== Dark Mode Support ===== */

@media (prefers-color-scheme: dark) {
	/* Styles are already applied via inline styles from PHP,
	   but this section can be used for theme-specific overrides */
}

/* ===== Loading State (Optional) ===== */

.scrolling-notice-container.is-loading {
	opacity: 0;
	transition: opacity 0.3s ease;
}

.scrolling-notice-container.is-loaded {
	opacity: 1;
}

/* ===== Focus Visible (Modern Browsers) ===== */

.scrolling-notice-link:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 4px;
}

.scrolling-notice-link:focus:not(:focus-visible) {
	outline: none;
}
