/* ============================================================
   JE Card Button — widget styles
   Defaults live here; Elementor controls override them via
   selectors / CSS variables.
   ============================================================ */

.je-cbtn {
	--je-img-size:   88px;
	--je-gap:        22px;
	--je-cal-size:   64px;
	--je-cal-radius: 14px;
	--je-cal-rotate: 14deg;
	--je-accent-1:   #4AA8FF;
	--je-accent-2:   #1B6BF2;
	--je-speed:      .45s;
	--je-ease:       cubic-bezier(.4, 0, .2, 1);

	position: relative;
	display: block;
	max-width: 560px;
	background-color: #0F2333;
	border-radius: 24px;
	padding: 22px 28px;
	overflow: hidden; /* clips the portrait as it slides out */
	text-decoration: none;
	cursor: pointer;
	transition:
		background-color var(--je-speed) var(--je-ease),
		transform var(--je-speed) var(--je-ease),
		box-shadow var(--je-speed) var(--je-ease);
}

/* optional lift (toggle in Animation section) */
.je-lift-yes .je-cbtn:hover,
.je-lift-yes .je-cbtn:focus-visible {
	transform: translateY(-2px);
}

.je-cbtn:focus-visible {
	outline: 2px solid var(--je-accent-1);
	outline-offset: 3px;
}

/* ---------- sliding row: portrait + text ---------- */
.je-cbtn__track {
	display: flex;
	align-items: center;
	gap: var(--je-gap);
	transition: transform var(--je-speed) var(--je-ease);
	will-change: transform;
}
.je-cbtn:hover .je-cbtn__track,
.je-cbtn:focus-visible .je-cbtn__track {
	/* slide left by exactly the portrait width + gap */
	transform: translateX(calc(-1 * (var(--je-img-size) + var(--je-gap))));
}

/* ---------- portrait ---------- */
.je-cbtn__img {
	flex: 0 0 var(--je-img-size);
	width: var(--je-img-size);
	height: var(--je-img-size);
	border-radius: 16px;
	object-fit: cover;
	transition:
		opacity var(--je-speed) var(--je-ease),
		transform var(--je-speed) var(--je-ease);
}
.je-cbtn:hover .je-cbtn__img,
.je-cbtn:focus-visible .je-cbtn__img {
	opacity: 0;
	transform: scale(.85);
}

/* ---------- text ---------- */
.je-cbtn__text {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 6px;
	/* keep text clear of the arrow / calendar tile */
	padding-right: calc(var(--je-cal-size) + 10px);
}
.je-cbtn__title {
	margin: 0;
	font-size: 26px;
	font-weight: 700;
	line-height: 1.2;
	color: #FFFFFF;
}
.je-cbtn__desc {
	margin: 0;
	display: block;
	font-size: 17px;
	line-height: 1.45;
	color: #B9C6D2;
}

/* ---------- arrow (default state) ---------- */
.je-cbtn__arrow {
	position: absolute;
	top: 50%;
	right: 28px;
	transform: translateY(-50%);
	display: flex;
	font-size: 26px;
	line-height: 1;
	color: #FFFFFF;
	transition:
		opacity var(--je-speed) var(--je-ease),
		transform var(--je-speed) var(--je-ease);
}
.je-cbtn__arrow svg {
	display: block;
	width: 1em;
	height: 1em;
	fill: currentColor;
}
/* rotate font icons to a diagonal ↗ (toggle in Content section) */
.je-cbtn--rotate-arrow .je-cbtn__arrow i,
.je-cbtn--rotate-arrow .je-cbtn__arrow svg {
	transform: rotate(-45deg);
}
.je-cbtn:hover .je-cbtn__arrow,
.je-cbtn:focus-visible .je-cbtn__arrow {
	opacity: 0;
	transform: translate(14px, calc(-50% - 14px)); /* flies away up-right */
}

/* ---------- calendar tile (hover state) ---------- */
.je-cbtn__cal {
	position: absolute;
	top: 50%;
	right: 22px;
	opacity: 0;
	font-size: 30px;
	line-height: 1;
	color: #FFFFFF;
	transform: translate(160%, -50%) rotate(var(--je-cal-rotate));
	transition:
		opacity var(--je-speed) var(--je-ease),
		transform var(--je-speed) var(--je-ease);
	pointer-events: none;
}
.je-cbtn:hover .je-cbtn__cal,
.je-cbtn:focus-visible .je-cbtn__cal {
	opacity: 1;
	transform: translate(0, -50%) rotate(0deg);
}
.je-cbtn__cal-tile {
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--je-cal-size);
	height: var(--je-cal-size);
	border-radius: var(--je-cal-radius);
	background: linear-gradient(160deg, var(--je-accent-1), var(--je-accent-2));
	/* soft inner glow at the bottom, like the reference */
	box-shadow: inset 0 -18px 24px -12px rgba(255, 255, 255, .35);
}
.je-cbtn__cal svg {
	display: block;
	width: 1em;
	height: 1em;
	fill: currentColor;
}

/* ---------- mobile ---------- */
@media (max-width: 640px) {
	.je-cbtn {
		--je-img-size: 68px;
		--je-gap: 16px;
		--je-cal-size: 54px;
	}
	.je-cbtn__title { font-size: 21px; }
	.je-cbtn__desc  { font-size: 15px; }
	.je-cbtn__arrow { right: 20px; }
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.je-cbtn,
	.je-cbtn * {
		transition-duration: .01ms !important;
	}
}
