/* ==========================================================================
   Craftech Services Carousel
   Scoped under .csc — no external dependencies.
   ========================================================================== */

.csc {
	/* Theming tokens (overridable from the Elementor Style tab) */
	--csc-g1: #FF4E8D;
	--csc-g2: #AF35E7;
	--csc-g3: #4C82FC;
	--csc-highlight: #7C5CFF;
	--csc-ink: #14121A;
	--csc-muted: #8A8694;
	--csc-notch-bg: #FFFFFF;
	--csc-radius: 20px;

	/* Deck fan geometry */
	--csc-card-w: 320px;
	--csc-card-h: 220px;
	--csc-dx: 62px;   /* horizontal step between fanned cards */
	--csc-dy: 44px;   /* vertical step */

	--csc-grad: linear-gradient(100deg, var(--csc-g1) 0%, var(--csc-g2) 52%, var(--csc-g3) 100%);

	color: var(--csc-ink);
	position: relative;
}

.csc *,
.csc *::before,
.csc *::after { box-sizing: border-box; }

/* ----------------------------------------------------------------- HEADER */
.csc__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 40px;
	flex-wrap: wrap;
}

.csc__head-left { max-width: 445px; }

.csc__badge {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding: 8px 18px;
	background: #fff;
	border: 1px solid #ECECF1;
	border-radius: 999px;
	box-shadow: 0 4px 14px rgba(20, 18, 26, .04);
	font-size: 15px;
}
.csc__badge-dot { color: var(--csc-g2); display: inline-flex; }
.csc__badge-main { font-weight: 600; color: var(--csc-g2); }
.csc__badge-sep { width: 1px; height: 18px; background: #D9D9E0; }
.csc__badge-sub { color: var(--csc-muted); }

.csc__title {
	margin: 22px 0 0;
	font-weight: 800;
	font-size: clamp(30px, 4vw, 52px);
	line-height: 1.08;
	letter-spacing: -.01em;
	color: var(--csc-ink);
}
.csc__hl {
	background: var(--csc-grad);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
	color: transparent;
	text-decoration: underline;
	text-decoration-thickness: 3px;
	text-underline-offset: 6px;
	text-decoration-color: var(--csc-g2);
}

.csc__head-right {
	max-width: 900px;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 26px;
}
.csc__intro {
	margin: 0;
	text-align: left;
	color: var(--csc-muted);
	font-size: 17px;
	line-height: 1.6;
}

.csc__btn {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding: 6px 26px 6px 6px;
	border-radius: 999px;
	background: var(--csc-grad);
	color: #fff;
	font-weight: 600;
	font-size: 16px;
	text-decoration: none;
	box-shadow: 0 12px 28px -10px rgba(175, 53, 231, .55);
	transition: transform .25s ease, box-shadow .25s ease;
}
.csc__btn:hover { transform: translateY(-2px); box-shadow: 0 18px 34px -10px rgba(175, 53, 231, .7); }
.csc__btn-icon {
	display: inline-flex; align-items: center; justify-content: center;
	width: 40px; height: 40px; border-radius: 50%;
	background: rgba(255, 255, 255, .22);
}

/* ------------------------------------------------------------------ STAGE */
.csc__stage {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) auto minmax(0, 1.1fr);
	align-items: center;
	gap: 32px;
	margin-top: 52px;
}

/* ------------------------------------------------------ FEATURED (LEFT) */
.csc__featured { min-width: 0; }

.csc__feat-card {
	position: relative;
	width: 100%;
	aspect-ratio: 5 / 4;
	border-radius: var(--csc-radius);
	overflow: visible;           /* notch button overflows the bottom edge */
	isolation: isolate;
}

.csc__feat-layer {
	position: absolute;
	inset: 0;
	margin: 0;
	border-radius: var(--csc-radius);
	overflow: hidden;
	opacity: 0;
	visibility: hidden;
	transform: scale(1.02);
	transition: opacity .9s ease, transform .9s ease, visibility 0s linear .9s;
}
.csc__feat-layer.is-active {
	opacity: 1;
	visibility: visible;
	transform: scale(1);
	transition: opacity .9s ease, transform .9s ease, visibility 0s;
	z-index: 2;
}
.csc__feat-layer img {
	width: 100%; height: 100%;
	object-fit: cover;
	display: block;
}

/* Concave notch + gradient action button (the signature detail).
   Both live at the card level (above the image layers) so stacking is predictable. */
.csc__notch {
	position: absolute;
	left: 50%;
	bottom: -18px;
	transform: translateX(-50%);
	width: 90px; height: 90px;
	border-radius: 50%;
	background: var(--csc-notch-bg);
	z-index: 3;
	pointer-events: none;
}
.csc__feat-btn {
	position: absolute;
	left: 50%;
	bottom: 0;
	transform: translateX(-50%);
	width: 60px; height: 60px;
	display: inline-flex; align-items: center; justify-content: center;
	border-radius: 50%;
	background: var(--csc-grad);
	color: #fff;
	text-decoration: none;
	z-index: 4;
	box-shadow: 0 10px 24px -6px rgba(175, 53, 231, .6);
	transition: transform .25s ease;
}
.csc__feat-btn:hover { transform: translateX(-50%) scale(1.08); }

/* Title / description below the card */
.csc__meta {
	position: relative;
	margin-top: 40px;
	min-height: 64px;
}
.csc__meta-layer {
	position: absolute;
	inset: 0;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
	align-items: start;
	opacity: 0;
	transform: translateY(8px);
	transition: opacity .5s ease, transform .5s ease;
	pointer-events: none;
}
.csc__meta-layer.is-active { opacity: 1; transform: none; pointer-events: auto; }
.csc__meta-title {
	margin: 0;
	font-size: clamp(20px, 1.5vw, 24px);
	font-weight: 700;
	line-height: 1.25;
	color: var(--csc-ink);
}
.csc__meta-desc {
	margin: 0;
	color: var(--csc-muted);
	font-size: 16px;
	line-height: 1.6;
}

/* ----------------------------------------------------------- NAV (CENTER) */
.csc__nav {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 24px;
	align-self: center;
	justify-self: center;
}
.csc__nav-btns { display: inline-flex; gap: 14px; }
.csc__arrow {
	width: 56px; height: 56px;
	border-radius: 50%;
	display: inline-flex; align-items: center; justify-content: center;
	cursor: pointer;
	background: #fff;
	color: var(--csc-ink);
	border: 1.5px solid transparent;
	background-image: linear-gradient(#fff, #fff), var(--csc-grad);
	background-origin: border-box;
	background-clip: padding-box, border-box;
	transition: transform .2s ease, box-shadow .2s ease, color .2s ease;
}
.csc__arrow:hover { transform: translateY(-2px); box-shadow: 0 10px 22px -8px rgba(175, 53, 231, .5); }
.csc__next {
	color: #fff;
	background-image: var(--csc-grad);
	border-color: transparent;
}
.csc__arrow:focus-visible { outline: 3px solid var(--csc-highlight); outline-offset: 2px; }

.csc__nav-line { display: block; width: 120px; opacity: .9; }
.csc__nav-line svg { display: block; width: 100%; height: auto; }

/* ------------------------------------------------------------ DECK (RIGHT) */
.csc__deck {
	position: relative;
	min-width: 0;
	/* container sized so the whole fan fits */
	width: calc(var(--csc-card-w) + (var(--csc-n) - 1) * var(--csc-dx));
	height: calc(var(--csc-card-h) + (var(--csc-n) - 1) * var(--csc-dy));
	max-width: 100%;
	margin-left: auto;
}

.csc__card {
	position: absolute;
	top: 0; left: 0;
	width: var(--csc-card-w);
	height: var(--csc-card-h);
	max-width: 86%;
	padding: 0;
	border: 0;
	cursor: pointer;
	background: #eee;
	border-radius: 14px;
	overflow: hidden;
	z-index: calc(var(--i) + 1);
	transform: translate(calc(var(--i) * var(--csc-dx)), calc(var(--i) * var(--csc-dy)));
	box-shadow: 0 18px 40px -22px rgba(20, 18, 26, .55);
	transition: transform .45s cubic-bezier(.22, 1, .36, 1), box-shadow .45s ease, filter .45s ease;
}
.csc__card img { width: 100%; height: 100%; object-fit: cover; display: block; }
.csc__card:not(.is-active) img { filter: saturate(.96) brightness(.97); }

/* gradient highlight border on the active card */
.csc__card::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 14px;
	padding: 3px;
	background: var(--csc-grad);
	-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
	-webkit-mask-composite: xor;
	        mask-composite: exclude;
	opacity: 0;
	transition: opacity .4s ease;
	pointer-events: none;
}
.csc__card.is-active {
	transform: translate(calc(var(--i) * var(--csc-dx)), calc(var(--i) * var(--csc-dy))) scale(1.04);
	box-shadow: 0 24px 50px -18px color-mix(in srgb, var(--csc-highlight) 60%, transparent);
}
.csc__card.is-active::after { opacity: 1; }
.csc__card:focus-visible { outline: 3px solid var(--csc-highlight); outline-offset: 3px; }

/* placeholder when no image is set */
.csc__ph {
	position: absolute;
	inset: 0;
	display: flex; align-items: center; justify-content: center;
	text-align: center;
	padding: 16px;
	color: #fff;
	font-weight: 600;
	font-size: 15px;
	background: var(--csc-grad);
}

/* ------------------------------------------------------------- RESPONSIVE */
@media (max-width: 1200px) {
	.csc { --csc-card-w: 280px; --csc-card-h: 192px; --csc-dx: 52px; --csc-dy: 38px; }
}

@media (max-width: 991px) {
	.csc__stage {
		grid-template-columns: 1fr;
		gap: 28px;
	}
	.csc__head { flex-direction: column; align-items: flex-start; gap: 20px; }
	.csc__head-right { max-width: none; align-items: flex-start; }
	.csc__intro { text-align: left; }

	/* nav becomes a horizontal row under the featured card */
	.csc__nav { flex-direction: row; justify-content: center; order: 3; }
	.csc__nav-line { display: none; }

	/* deck collapses into a simple horizontal thumbnail strip */
	.csc__deck {
		order: 2;
		width: 100%;
		height: auto;
		display: flex;
		gap: 12px;
		overflow-x: auto;
		padding-bottom: 6px;
		scrollbar-width: thin;
	}
	.csc__card {
		position: relative;
		transform: none !important;
		width: 150px;
		height: 104px;
		max-width: none;
		flex: 0 0 auto;
		z-index: auto !important;
	}
	.csc__card.is-active { transform: none !important; }
	.csc__meta-layer { grid-template-columns: 1fr; gap: 8px; }

	/* let the active text dictate height so it can't overlap the deck strip */
	.csc__meta { min-height: 0; }
	.csc__meta-layer { position: relative; opacity: 1; transform: none; }
	.csc__meta-layer:not(.is-active) { display: none; }
}

@media (max-width: 575px) {
	.csc__feat-card { aspect-ratio: 4 / 3; }
	.csc__card { width: 124px; height: 88px; }
}

/* --------------------------------------------------------- REDUCED MOTION */
@media (prefers-reduced-motion: reduce) {
	.csc__feat-layer,
	.csc__meta-layer,
	.csc__card,
	.csc__btn,
	.csc__arrow,
	.csc__feat-btn { transition-duration: .001ms !important; }
}
