/**
 * Hastika Promo Bar - Frontend Styles
 *
 * @package AdvancedTopBar
 */

/* ===========================
   CSS Custom Properties
   =========================== */
:root {
	--hastikapb-text-color: #ffffff;
	--hastikapb-bg-color: #333333;
	--hastikapb-cta-text-color: #333333;
	--hastikapb-cta-bg-color: #ffffff;
	--hastikapb-font-size: 14px;
	--hastikapb-cta-font-size: 14px;
	--hastikapb-bar-height: 50px;
}

/* ===========================
   Bar Container
   =========================== */
#hastikapb-bar {
	width: 100%;
	min-height: var(--hastikapb-bar-height);
	/* Bar background is transparent — each announcement carries its own bg */
	background-color: transparent;
	font-size: var(--hastikapb-font-size);
	display: flex;
	align-items: stretch;
	position: relative;
	z-index: 99999;
	box-sizing: border-box;
	-webkit-font-smoothing: antialiased;
	overflow: hidden;
}

#hastikapb-bar.hastikapb-bar--fixed {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
}

/* ===========================
   Inner wrapper
   =========================== */
.hastikapb-bar__inner {
	flex: 1;
	min-width: 0;
	min-height: var(--hastikapb-bar-height);
	display: flex;
	align-items: stretch;
	position: relative;
}

/* ===========================
   Alignment — applied directly to announcement
   =========================== */
#hastikapb-bar.hastikapb-align-left   .hastikapb-announcement { justify-content: flex-start; }
#hastikapb-bar.hastikapb-align-right  .hastikapb-announcement { justify-content: flex-end; }
#hastikapb-bar.hastikapb-align-center .hastikapb-announcement { justify-content: center; }

/* ===========================
   Announcement
   Uses position:absolute + inset:0 so its background fills the full bar.
   =========================== */
.hastikapb-announcement {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	box-sizing: border-box;
	padding: 8px 48px;
	/* Each announcement owns its colors — overrides cascade down from inline style */
	background-color: var(--hastikapb-bg-color);
	color: var(--hastikapb-text-color);
	width: 100%;
	z-index: 1;
}

/* Extra padding when manual nav arrows are visible */
.hastikapb-bar--manual .hastikapb-announcement {
	padding-inline-start: 44px;
	padding-inline-end: 90px;
}

.hastikapb-announcement--clickable {
	cursor: pointer;
}

.hastikapb-announcement__link {
	position: absolute;
	inset: 0;
	z-index: 1;
	text-decoration: none;
	cursor: pointer;
}

.hastikapb-announcement__content {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	position: relative;
	z-index: 2;
}

.hastikapb-announcement__body {
	display: flex;
	align-items: center;
	gap: 8px;
}

.hastikapb-announcement__text {
	color: var(--hastikapb-text-color);
	font-size: var(--hastikapb-font-size);
	line-height: 1.5;
}

.hastikapb-announcement__text a {
	color: inherit;
	text-decoration: underline;
}

/* Content Order */
.hastikapb-order-text_cta { flex-direction: row; }
.hastikapb-order-cta_text { flex-direction: row-reverse; }

/* ===========================
   CTA Button
   =========================== */
.hastikapb-cta {
	display: inline-block;
	padding: 6px 16px;
	background-color: var(--hastikapb-cta-bg-color);
	color: var(--hastikapb-cta-text-color);
	font-size: var(--hastikapb-cta-font-size);
	font-weight: 600;
	text-decoration: none;
	border-radius: 4px;
	border: none;
	cursor: pointer;
	white-space: nowrap;
	transition: opacity 0.2s ease;
	line-height: 1.4;
	position: relative;
	z-index: 2;
}

.hastikapb-cta:hover,
.hastikapb-cta:focus {
	opacity: 0.85;
	text-decoration: none;
}

.hastikapb-cta:focus {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

/* ===========================
   Toggle / Close Button
   =========================== */
.hastikapb-toggle {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	background: transparent;
	border: none;
	cursor: pointer;
	/* Use the current announcement's text color */
	color: var(--hastikapb-text-color);
	padding: 6px 10px;
	font-size: 16px;
	line-height: 1;
	opacity: 0.8;
	transition: opacity 0.2s ease;
	z-index: 10;
}

.hastikapb-toggle--close {
	inset-inline-end: 8px;
}

[dir="ltr"] .hastikapb-toggle--close { right: 8px; left: auto; }
[dir="rtl"] .hastikapb-toggle--close { left: 8px; right: auto; }

/* Prev / Next navigation buttons (manual rotation mode) */
.hastikapb-toggle--prev,
.hastikapb-toggle--next {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	flex-shrink: 0;
	font-size: 18px;
	padding: 4px 10px;
	z-index: 100;
}

[dir="ltr"] .hastikapb-toggle--prev { left: 8px;  right: auto; }
[dir="ltr"] .hastikapb-toggle--next { right: 40px; left: auto; }
[dir="rtl"] .hastikapb-toggle--prev { right: 8px;  left: auto; }
[dir="rtl"] .hastikapb-toggle--next { left: 40px; right: auto; }

.hastikapb-toggle:hover,
.hastikapb-toggle:focus {
	opacity: 1;
}

.hastikapb-toggle:focus {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

/* ===========================
   Reopen Button
   =========================== */
.hastikapb-reopen {
	position: fixed;
	top: 0;
	right: 0;
	z-index: 99998;
	background-color: var(--hastikapb-bg-color);
	color: var(--hastikapb-text-color);
	border: none;
	cursor: pointer;
	padding: 6px 12px;
	font-size: 12px;
	border-radius: 0 0 0 4px;
	opacity: 0.9;
	transition: opacity 0.2s ease;
}

[dir="rtl"] .hastikapb-reopen {
	right: auto;
	left: 0;
	border-radius: 0 0 4px 0;
}

.hastikapb-reopen:hover,
.hastikapb-reopen:focus {
	opacity: 1;
}

.hastikapb-reopen:focus {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

/* ===========================
   Icon
   =========================== */
.hastikapb-icon {
	display: inline-flex;
	align-items: center;
	flex-shrink: 0;
	color: var(--hastikapb-text-color);
}

.hastikapb-icon--svg svg {
	width: 1.2em;
	height: 1.2em;
	fill: currentColor;
}

.hastikapb-icon--image img {
	width: 1.4em;
	height: 1.4em;
	object-fit: contain;
	display: block;
}

/* ===========================
   Countdown Timer
   =========================== */
.hastikapb-countdown {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	direction: ltr !important;
}

.hastikapb-countdown .hastikapb-cd-days,
.hastikapb-countdown .hastikapb-cd-hours,
.hastikapb-countdown .hastikapb-cd-mins,
.hastikapb-countdown .hastikapb-cd-secs {
	font-weight: 700;
	min-width: 1.5em;
	text-align: center;
}

.hastikapb-countdown .hastikapb-cd-label {
	font-size: 0.8em;
	margin-inline-end: 4px;
	opacity: 0.8;
}

/* ===========================
   Collapsed state
   =========================== */
#hastikapb-bar.hastikapb-bar--collapsed .hastikapb-bar__inner {
	display: none;
}

/* ===========================
   RTL Support
   =========================== */
[dir="rtl"] .hastikapb-announcement__content {
	flex-direction: row-reverse;
}
[dir="rtl"] .hastikapb-order-text_cta { flex-direction: row-reverse; }
[dir="rtl"] .hastikapb-order-cta_text { flex-direction: row; }

/* ===========================
   Responsive
   =========================== */
@media ( max-width: 767px ) {

	/* Allow bar height to grow with content */
	#hastikapb-bar {
		overflow: visible;
	}

	.hastikapb-bar__inner {
		height: auto;
		min-height: var(--hastikapb-bar-height);
	}

	/* Switch from absolute fill to normal flow so height is content-driven */
	.hastikapb-announcement {
		position: relative;
		inset: auto;
		width: 100%;
		min-height: var(--hastikapb-bar-height);
		padding: 10px 44px;
		flex-wrap: wrap;
		justify-content: center !important;
		text-align: center;
		align-items: center;
	}

	[dir="rtl"] .hastikapb-announcement {
		padding: 10px 44px;
	}

	/* Clickable overlay must stretch to fill the now-relative parent */
	.hastikapb-announcement__link {
		position: absolute;
		inset: 0;
	}

	.hastikapb-announcement__content {
		gap: 8px;
		justify-content: center;
		text-align: center;
		flex-wrap: wrap;
	}

	.hastikapb-announcement__body {
		justify-content: center;
	}

	/* Close button: pin to top-right of the announcement, centered vertically */
	.hastikapb-toggle--close {
		position: absolute;
		top: 50%;
		transform: translateY(-50%);
	}

	.hastikapb-cta {
		padding: 5px 12px;
		font-size: 13px;
	}

	#hastikapb-bar {
		font-size: 13px;
	}
}

@media ( min-width: 768px ) and ( max-width: 1024px ) {
	.hastikapb-announcement {
		padding: 0 52px 0 16px;
	}

	[dir="rtl"] .hastikapb-announcement {
		padding: 0 16px 0 52px;
	}
}

/* ===========================
   Animations - Out
   =========================== */

/* Fade */
@keyframes hastikapbFadeOut { from { opacity: 1; } to { opacity: 0; } }
@keyframes hastikapbFadeIn  { from { opacity: 0; } to { opacity: 1; } }
.hastikapb-anim-fade-out { animation: hastikapbFadeOut 0.35s ease forwards; }
.hastikapb-anim-fade-in  { animation: hastikapbFadeIn  0.35s ease forwards; }

/* Fade Up */
@keyframes hastikapbFadeUpOut { from { opacity:1; transform: translateY(0); } to { opacity:0; transform: translateY(-20px); } }
@keyframes hastikapbFadeUpIn  { from { opacity:0; transform: translateY(20px); } to { opacity:1; transform: translateY(0); } }
.hastikapb-anim-fade-up-out { animation: hastikapbFadeUpOut 0.35s ease forwards; }
.hastikapb-anim-fade-up-in  { animation: hastikapbFadeUpIn  0.35s ease forwards; }

/* Fade Down */
@keyframes hastikapbFadeDownOut { from { opacity:1; transform: translateY(0); } to { opacity:0; transform: translateY(20px); } }
@keyframes hastikapbFadeDownIn  { from { opacity:0; transform: translateY(-20px); } to { opacity:1; transform: translateY(0); } }
.hastikapb-anim-fade-down-out { animation: hastikapbFadeDownOut 0.35s ease forwards; }
.hastikapb-anim-fade-down-in  { animation: hastikapbFadeDownIn  0.35s ease forwards; }

/* Fade Left */
@keyframes hastikapbFadeLeftOut { from { opacity:1; transform: translateX(0); } to { opacity:0; transform: translateX(-30px); } }
@keyframes hastikapbFadeLeftIn  { from { opacity:0; transform: translateX(30px); } to { opacity:1; transform: translateX(0); } }
.hastikapb-anim-fade-left-out { animation: hastikapbFadeLeftOut 0.35s ease forwards; }
.hastikapb-anim-fade-left-in  { animation: hastikapbFadeLeftIn  0.35s ease forwards; }

/* Fade Right */
@keyframes hastikapbFadeRightOut { from { opacity:1; transform: translateX(0); } to { opacity:0; transform: translateX(30px); } }
@keyframes hastikapbFadeRightIn  { from { opacity:0; transform: translateX(-30px); } to { opacity:1; transform: translateX(0); } }
.hastikapb-anim-fade-right-out { animation: hastikapbFadeRightOut 0.35s ease forwards; }
.hastikapb-anim-fade-right-in  { animation: hastikapbFadeRightIn  0.35s ease forwards; }

/* Slide Left */
@keyframes hastikapbSlideLeftOut { from { transform: translateX(0); } to { transform: translateX(-100%); } }
@keyframes hastikapbSlideLeftIn  { from { transform: translateX(100%); } to { transform: translateX(0); } }
.hastikapb-anim-slide-left-out { animation: hastikapbSlideLeftOut 0.35s ease forwards; overflow: hidden; }
.hastikapb-anim-slide-left-in  { animation: hastikapbSlideLeftIn  0.35s ease forwards; }

/* Slide Right */
@keyframes hastikapbSlideRightOut { from { transform: translateX(0); } to { transform: translateX(100%); } }
@keyframes hastikapbSlideRightIn  { from { transform: translateX(-100%); } to { transform: translateX(0); } }
.hastikapb-anim-slide-right-out { animation: hastikapbSlideRightOut 0.35s ease forwards; }
.hastikapb-anim-slide-right-in  { animation: hastikapbSlideRightIn  0.35s ease forwards; }

/* Slide Up */
@keyframes hastikapbSlideUpOut { from { transform: translateY(0); } to { transform: translateY(-100%); } }
@keyframes hastikapbSlideUpIn  { from { transform: translateY(100%); } to { transform: translateY(0); } }
.hastikapb-anim-slide-up-out { animation: hastikapbSlideUpOut 0.35s ease forwards; }
.hastikapb-anim-slide-up-in  { animation: hastikapbSlideUpIn  0.35s ease forwards; }

/* Slide Down */
@keyframes hastikapbSlideDownOut { from { transform: translateY(0); } to { transform: translateY(100%); } }
@keyframes hastikapbSlideDownIn  { from { transform: translateY(-100%); } to { transform: translateY(0); } }
.hastikapb-anim-slide-down-out { animation: hastikapbSlideDownOut 0.35s ease forwards; }
.hastikapb-anim-slide-down-in  { animation: hastikapbSlideDownIn  0.35s ease forwards; }

/* Zoom In */
@keyframes hastikapbZoomInOut { from { opacity:1; transform: scale(1); } to { opacity:0; transform: scale(0.7); } }
@keyframes hastikapbZoomInIn  { from { opacity:0; transform: scale(0.7); } to { opacity:1; transform: scale(1); } }
.hastikapb-anim-zoom-in-out { animation: hastikapbZoomInOut 0.35s ease forwards; }
.hastikapb-anim-zoom-in-in  { animation: hastikapbZoomInIn  0.35s ease forwards; }

/* Zoom Out */
@keyframes hastikapbZoomOutOut { from { opacity:1; transform: scale(1); } to { opacity:0; transform: scale(1.3); } }
@keyframes hastikapbZoomOutIn  { from { opacity:0; transform: scale(1.3); } to { opacity:1; transform: scale(1); } }
.hastikapb-anim-zoom-out-out { animation: hastikapbZoomOutOut 0.35s ease forwards; }
.hastikapb-anim-zoom-out-in  { animation: hastikapbZoomOutIn  0.35s ease forwards; }

/* Flip Horizontal */
@keyframes hastikapbFlipHOut { from { transform: rotateY(0); opacity:1; } to { transform: rotateY(90deg); opacity:0; } }
@keyframes hastikapbFlipHIn  { from { transform: rotateY(-90deg); opacity:0; } to { transform: rotateY(0); opacity:1; } }
.hastikapb-anim-flip-horizontal-out { animation: hastikapbFlipHOut 0.35s ease forwards; }
.hastikapb-anim-flip-horizontal-in  { animation: hastikapbFlipHIn  0.35s ease forwards; }

/* Flip Vertical */
@keyframes hastikapbFlipVOut { from { transform: rotateX(0); opacity:1; } to { transform: rotateX(90deg); opacity:0; } }
@keyframes hastikapbFlipVIn  { from { transform: rotateX(-90deg); opacity:0; } to { transform: rotateX(0); opacity:1; } }
.hastikapb-anim-flip-vertical-out { animation: hastikapbFlipVOut 0.35s ease forwards; }
.hastikapb-anim-flip-vertical-in  { animation: hastikapbFlipVIn  0.35s ease forwards; }

/* Bounce */
@keyframes hastikapbBounceOut { 0%{transform:scale(1);opacity:1} 30%{transform:scale(1.1)} 100%{transform:scale(0);opacity:0} }
@keyframes hastikapbBounceIn  { 0%{transform:scale(0);opacity:0} 60%{transform:scale(1.1)} 80%{transform:scale(0.95)} 100%{transform:scale(1);opacity:1} }
.hastikapb-anim-bounce-out { animation: hastikapbBounceOut 0.45s ease forwards; }
.hastikapb-anim-bounce-in  { animation: hastikapbBounceIn  0.45s ease forwards; }

/* Scale */
@keyframes hastikapbScaleOut { from { transform:scale(1); opacity:1; } to { transform:scale(0.5); opacity:0; } }
@keyframes hastikapbScaleIn  { from { transform:scale(1.5); opacity:0; } to { transform:scale(1); opacity:1; } }
.hastikapb-anim-scale-out { animation: hastikapbScaleOut 0.35s ease forwards; }
.hastikapb-anim-scale-in  { animation: hastikapbScaleIn  0.35s ease forwards; }

/* Rotate */
@keyframes hastikapbRotateOut { from { transform:rotate(0); opacity:1; } to { transform:rotate(180deg); opacity:0; } }
@keyframes hastikapbRotateIn  { from { transform:rotate(-180deg); opacity:0; } to { transform:rotate(0); opacity:1; } }
.hastikapb-anim-rotate-out { animation: hastikapbRotateOut 0.4s ease forwards; }
.hastikapb-anim-rotate-in  { animation: hastikapbRotateIn  0.4s ease forwards; }

/* Blur */
@keyframes hastikapbBlurOut { from { opacity:1; filter:blur(0); } to { opacity:0; filter:blur(8px); } }
@keyframes hastikapbBlurIn  { from { opacity:0; filter:blur(8px); } to { opacity:1; filter:blur(0); } }
.hastikapb-anim-blur-out { animation: hastikapbBlurOut 0.4s ease forwards; }
.hastikapb-anim-blur-in  { animation: hastikapbBlurIn  0.4s ease forwards; }

/* Elastic */
@keyframes hastikapbElasticOut { 0%{transform:scale(1);opacity:1} 50%{transform:scale(1.2)} 100%{transform:scale(0);opacity:0} }
@keyframes hastikapbElasticIn  { 0%{transform:scale(0);opacity:0} 50%{transform:scale(1.15)} 75%{transform:scale(0.95)} 100%{transform:scale(1);opacity:1} }
.hastikapb-anim-elastic-out { animation: hastikapbElasticOut 0.5s cubic-bezier(0.68,-0.55,0.27,1.55) forwards; }
.hastikapb-anim-elastic-in  { animation: hastikapbElasticIn  0.5s cubic-bezier(0.68,-0.55,0.27,1.55) forwards; }

/* Reveal */
@keyframes hastikapbRevealOut { from { clip-path:inset(0 0 0 0); opacity:1; } to { clip-path:inset(0 100% 0 0); opacity:1; } }
@keyframes hastikapbRevealIn  { from { clip-path:inset(0 0 0 100%); opacity:1; } to { clip-path:inset(0 0 0 0); opacity:1; } }
.hastikapb-anim-reveal-out { animation: hastikapbRevealOut 0.4s ease forwards; }
.hastikapb-anim-reveal-in  { animation: hastikapbRevealIn  0.4s ease forwards; }

/* Smooth Transition */
@keyframes hastikapbSmoothOut { from { opacity:1; transform:translateX(0); } to { opacity:0; transform:translateX(-15px); } }
@keyframes hastikapbSmoothIn  { from { opacity:0; transform:translateX(15px); } to { opacity:1; transform:translateX(0); } }
.hastikapb-anim-smooth-out { animation: hastikapbSmoothOut 0.4s cubic-bezier(0.4,0,0.2,1) forwards; }
.hastikapb-anim-smooth-in  { animation: hastikapbSmoothIn  0.4s cubic-bezier(0.4,0,0.2,1) forwards; }
