/* =============================================================================
   Diakonis — fused testimonials section ([diakonis_testimonials])
   Design system: .claude/skills/diakonis-design-system
   Palette: indigo #170B3A · purple #350F79 · magenta #C434C9 · lavender #FBF1FB
            · pastel card #D7E5EB
   Fonts: Raleway 800 (title) · switzer (body/UI)
   Layout: horizontal carousel (arrows + dots + pause/play + edge fades + autoplay).
   Quote mark: the original site icon (quote-icon-01.png), centered at the card top.
   NB: the whole site renders inside #page-container{zoom:.8}.
   ============================================================================= */

.dkTestimonials {
	background-color: #FBF1FB;
	padding: 80px 0 150px;
	overflow: hidden;
}
/* Service pages finish with a generous 150px content-section gutter. Pull only
   their auto-injected testimonials upward; the homepage shortcode is unchanged. */
.dkTestimonials--service {
	margin-top: -100px;
	position: relative;
	z-index: 1;
}
.dkTestimonials__inner {
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 30px;
	text-align: center;
}

/* --- Eyebrow + title ----------------------------------------------------- */
.dkTestimonials__eyebrow {
	margin: 0 0 12px;
	text-transform: uppercase;
	letter-spacing: 3px;
	font-size: 13px;
	font-weight: 600;
	color: #C434C9;
	font-family: switzer, Georgia, "Times New Roman", serif;
}
.dkTestimonials__title {
	margin: 0 auto 34px;
	max-width: 720px;
	color: #170B3A;
	font-family: "Raleway", Helvetica, Arial, sans-serif;
	font-weight: 800;
	font-size: 35px;
	line-height: 1.3;
}

/* --- Toggle -------------------------------------------------------------- */
.dkTestimonials__toggle {
	display: inline-flex;
	gap: 4px;
	margin: 0 auto 44px;
	padding: 6px;
	background: #FFFFFF;
	border-radius: 50px;
	box-shadow: 0 10px 24px rgba(23, 11, 58, 0.08);
}
.dkTestimonials__tab {
	appearance: none;
	border: 0;
	background: transparent;
	color: #170B3A;
	font-family: switzer, Georgia, "Times New Roman", serif;
	font-size: 16px;
	font-weight: 600;
	line-height: 1;
	padding: 13px 30px;
	border-radius: 50px;
	cursor: pointer;
	transition: background-color .25s ease, color .25s ease;
	white-space: nowrap;
}
.dkTestimonials__tab:hover { color: #350F79; }
.dkTestimonials__tab.is-active { background: #350F79; color: #FFFFFF; }
.dkTestimonials__tab.is-active:hover { color: #FFFFFF; }
.dkTestimonials__tab:focus-visible { outline: 2px solid #350F79; outline-offset: 2px; }

/* --- Panels -------------------------------------------------------------- */
.dkTestimonials__panel[hidden] { display: none; }
.dkTestimonials__panel { animation: dkTestiFade .35s ease both; }
.dkTestimonials__panel:focus-visible { outline: none; }
@keyframes dkTestiFade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* =============================================================================
   Carousel
   ========================================================================== */
.dkTesti-carousel { position: relative; }
.dkTesti-carousel__stage { position: relative; }
/* room on the sides for the arrows, only when the carousel is active */
.dkTesti-carousel.is-carousel .dkTesti-carousel__stage { padding: 0 56px; }

.dkTesti-carousel__viewport { position: relative; overflow: hidden; }

/* edge "smoke" fades — shown for whichever direction can still scroll */
.dkTesti-carousel__viewport::before,
.dkTesti-carousel__viewport::after {
	content: "";
	position: absolute;
	top: 0; bottom: 0;
	width: 56px;
	z-index: 3;
	pointer-events: none;
	opacity: 0;
	transition: opacity .3s ease;
}
.dkTesti-carousel__viewport::before { left: 0;  background: linear-gradient(to right, #FBF1FB 18%, rgba(251,241,251,0)); }
.dkTesti-carousel__viewport::after  { right: 0; background: linear-gradient(to left,  #FBF1FB 18%, rgba(251,241,251,0)); }
.dkTesti-carousel.can-prev .dkTesti-carousel__viewport::before { opacity: 1; }
.dkTesti-carousel.can-next .dkTesti-carousel__viewport::after  { opacity: 1; }

.dkTesti-carousel__track {
	position: relative;
	display: flex;
	gap: 28px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	-webkit-overflow-scrolling: touch;
	padding: 26px 4px 12px; /* top room for the overhanging quote badge */
	scrollbar-width: none;
	text-align: left;
}
.dkTesti-carousel__track::-webkit-scrollbar { display: none; }
.dkTesti-carousel.is-dragging .dkTesti-carousel__track { scroll-snap-type: none; cursor: grabbing; }

/* When everything fits (<= per-view): centered static row, no controls/gutter. */
.dkTesti-carousel.is-static .dkTesti-carousel__track { justify-content: center; overflow: hidden; }

/* Arrows — sit in the side gutter, outside the cards; shown only for a carousel */
.dkTesti-carousel__arrow {
	display: none;
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 4;
	width: 46px; height: 46px;
	border: 0;
	border-radius: 50%;
	background: #350F79;
	color: #FFFFFF;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: 0 8px 20px rgba(23, 11, 58, 0.25);
	transition: background-color .2s ease;
}
.dkTesti-carousel.is-carousel .dkTesti-carousel__arrow { display: flex; }
.dkTesti-carousel__arrow--prev { left: 2px; }
.dkTesti-carousel__arrow--next { right: 2px; }
.dkTesti-carousel__arrow:hover { background: #170B3A; }
.dkTesti-carousel__arrow:focus-visible { outline: 2px solid #170B3A; outline-offset: 2px; }

/* Controls row: pause/play + dots */
.dkTesti-carousel__dots {
	display: none;
	justify-content: center;
	align-items: center;
	gap: 8px;
	margin-top: 28px;
}
.dkTesti-carousel.is-carousel .dkTesti-carousel__dots { display: flex; }
.dkTesti-carousel__playpause {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px; height: 30px;
	margin-right: 8px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #FFFFFF;
	color: #350F79;
	cursor: pointer;
	box-shadow: 0 4px 12px rgba(23, 11, 58, 0.12);
}
.dkTesti-carousel__playpause:hover { color: #170B3A; }
.dkTesti-carousel__playpause:focus-visible { outline: 2px solid #350F79; outline-offset: 2px; }
.dkTesti-carousel__dot {
	width: 9px; height: 9px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #cdbbe0;
	cursor: pointer;
	transition: width .25s ease, background-color .25s ease;
}
.dkTesti-carousel__dot.is-active { background: #350F79; width: 26px; border-radius: 5px; }
.dkTesti-carousel__dot:focus-visible { outline: 2px solid #350F79; outline-offset: 2px; }

/* =============================================================================
   Card
   ========================================================================== */
.dkTesti-card {
	position: relative;
	scroll-snap-align: start;
	flex: 0 0 calc((100% - 56px) / 3); /* 3 per view, 2 gaps of 28px */
	box-sizing: border-box;
	background: #D7E5EB; /* Clients / corporate skin (blue-grey) */
	border-radius: 14px;
	padding: 34px 30px 28px;
	display: flex;
	flex-direction: column;
}

/* Talents skin — distinct pink card (#F2DCEF), any language. Deeper than the
   lavender section (#FBF1FB) so the card clearly pops (no shadow needed).
   Corporate/Clients cards stay blue-grey (#D7E5EB), so the two are unmistakable. */
.dkTestimonials__panel[data-variant="talents"] .dkTesti-card {
	background: #F2DCEF;
}

.dkTesti-card__media { margin-bottom: 20px; }
.dkTesti-card__media--photo {
	position: relative;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border-radius: 10px;
}
.dkTesti-card__media--photo img {
	position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
	object-position: var(--dk-crop-x, 50%) var(--dk-crop-y, 50%);
	transform: translate(var(--dk-crop-tx, 0%), var(--dk-crop-ty, 0%)) scale(var(--dk-crop-zoom, 1));
	transform-origin: 50% 50%;
	display: block;
}
.dkTesti-card__ratio {
	position: relative; width: 100%; padding-top: 56.25%;
	border-radius: 10px; overflow: hidden; background: #170B3A;
}
.dkTesti-card__ratio iframe,
.dkTesti-card__ratio video,
.dkTesti-card__ratio object,
.dkTesti-card__ratio embed {
	position: absolute; inset: 0; width: 100%; height: 100%; border: 0; object-fit: cover;
}
/* Divi/FitVids wraps portrait YouTube Shorts in another ratio box and gives it
   a tall inline padding value. Keep that wrapper inside our controlled 16:9
   frame so one Short cannot stretch every card in the carousel. */
.dkTesti-card__ratio > .fluid-width-video-wrapper {
	position: absolute !important;
	inset: 0 !important;
	width: 100% !important;
	height: 100% !important;
	padding-top: 0 !important;
}
.dkTesti-card__ratio > .fluid-width-video-wrapper iframe {
	position: absolute !important;
	inset: 0 !important;
	width: 100% !important;
	height: 100% !important;
}

/* quote mark — original site icon, an absolute badge half-overhanging the card top */
.dkTesti-card__mark {
	position: absolute;
	top: 0;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 46px; height: 34px;
	z-index: 2;
	background: url('/wp-content/uploads/2026/02/quote-icon-01.png') center / contain no-repeat;
}

.dkTesti-card__quote {
	color: #4a4a55;
	font-family: switzer, Georgia, "Times New Roman", serif;
	font-size: 15px;
	line-height: 1.7;
}
.dkTesti-card__quote p { margin: 0 0 10px; }
.dkTesti-card__quote p:last-child { margin-bottom: 0; }
.dkTesti-card.is-collapsible .dkTesti-card__quote {
	max-height: 10.2em; /* six lines at the 1.7 line-height above */
	overflow: hidden;
}
.dkTesti-card__readmore {
	align-self: flex-start;
	margin: 10px 0 0;
	padding: 0;
	border: 0;
	background: transparent;
	color: #350F79;
	font-family: switzer, Georgia, "Times New Roman", serif;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.4;
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}
.dkTesti-card__readmore[hidden] { display: none !important; }
.dkTesti-card__readmore:hover { color: #170B3A; }
.dkTesti-card__readmore:focus-visible { outline: 2px solid #350F79; outline-offset: 4px; }

.dkTesti-card__meta {
	margin-top: auto;
	padding-top: 22px;
	display: flex;
	align-items: center;
	gap: 12px;
}
.dkTesti-card__avatar {
	display: block; width: 50px; height: 50px; flex: 0 0 50px;
	overflow: hidden; border-radius: 50%;
}
.dkTesti-card__avatar img {
	width: 50px; height: 50px; object-fit: cover; display: block;
	object-position: var(--dk-crop-x, 50%) var(--dk-crop-y, 50%);
	transform: translate(var(--dk-crop-tx, 0%), var(--dk-crop-ty, 0%)) scale(var(--dk-crop-zoom, 1));
	transform-origin: 50% 50%;
}
.dkTesti-card__author {
	margin: 0 0 2px;
	color: #170B3A;
	font-family: switzer, Georgia, "Times New Roman", serif;
	font-weight: 700;
	font-size: 15px;
	line-height: 1.35;
}
.dkTesti-card__role {
	margin: 0;
	color: #5a5a66;
	font-family: switzer, Georgia, "Times New Roman", serif;
	font-size: 13px;
	line-height: 1.4;
}
.dkTesti-card__vlink { display: inline-block; margin-bottom: 8px; color: #350F79; font-weight: 600; }

/* Service link — the service this testimonial refers to; links to that page.
   Simple bold clickable text at the very bottom of the card (after author/role). */
.dkTesti-card__service {
	align-self: flex-start;
	margin-top: 10px;
	color: #C434C9;
	font-family: switzer, Georgia, "Times New Roman", serif;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.3;
	text-decoration: none;
	transition: color .2s ease;
}
.dkTesti-card__service:hover,
.dkTesti-card__service:focus-visible { color: #350F79; text-decoration: underline; }

/* =============================================================================
   Full-testimonial modal
   ========================================================================== */
body.dkTesti-modal-open { overflow: hidden !important; }
.dkTesti-modal[hidden] { display: none !important; }
.dkTesti-modal {
	position: fixed;
	inset: 0;
	z-index: 2147483647; /* above Divi's fixed mobile header */
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
	box-sizing: border-box;
	font-family: switzer, Georgia, "Times New Roman", serif;
}
.dkTesti-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(23, 11, 58, 0.72);
	backdrop-filter: blur(5px);
	-webkit-backdrop-filter: blur(5px);
}
.dkTesti-modal__dialog {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	width: min(860px, calc(100vw - 48px));
	max-height: calc(100vh - 48px);
	overflow: hidden;
	background: #FBF1FB;
	border-radius: 20px;
	box-shadow: 0 24px 70px rgba(23, 11, 58, 0.35);
}
.dkTesti-modal__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding: 22px 28px 14px;
	flex: 0 0 auto;
}
.dkTesti-modal__title {
	margin: 0;
	color: #170B3A;
	font-family: "Raleway", Helvetica, Arial, sans-serif;
	font-size: 25px;
	font-weight: 800;
	line-height: 1.25;
}
.dkTesti-modal__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	padding: 0 0 3px;
	flex: 0 0 42px;
	border: 0;
	border-radius: 50%;
	background: #350F79;
	color: #FFFFFF;
	font: 400 30px/1 Arial, sans-serif;
	cursor: pointer;
}
.dkTesti-modal__close:hover { background: #170B3A; }
.dkTesti-modal__close:focus-visible { outline: 3px solid #C434C9; outline-offset: 3px; }
.dkTesti-modal__content {
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 18px 28px 28px;
}
.dkTesti-modal .dkTesti-card {
	width: 100%;
	max-width: none;
	min-height: 0;
	flex: none;
	box-sizing: border-box;
	padding: 38px 34px 32px;
	text-align: left;
}
.dkTesti-modal .dkTesti-card__quote {
	max-height: none !important;
	overflow: visible !important;
}
.dkTesti-modal .dkTesti-card__readmore { display: none !important; }
.dkTesti-modal .dkTesti-card__media--photo {
	aspect-ratio: auto;
	overflow: visible;
}
.dkTesti-modal .dkTesti-card__media--photo img {
	position: static;
	height: auto;
	aspect-ratio: auto;
	max-height: 60vh;
	object-fit: contain;
	object-position: 50% 50%;
	transform: none;
	background: rgba(255, 255, 255, 0.45);
}
.dkTesti-modal .dkTesti-card__meta { margin-top: 0; }

/* =============================================================================
   Responsive (design-system breakpoints: 980 / 768)
   ========================================================================== */
@media (max-width: 980px) {
	.dkTestimonials { padding: 60px 0 120px; }
	.dkTestimonials__title { font-size: 34px; }
	.dkTesti-carousel.is-carousel .dkTesti-carousel__stage { padding: 0 48px; }
	.dkTesti-card { flex-basis: calc((100% - 24px) / 2); } /* 2 per view, gap 24 */
	.dkTesti-carousel__track { gap: 24px; }
}
@media (max-width: 768px) {
	.dkTestimonials__title { font-size: 26px; }
	.dkTestimonials__toggle { display: flex; width: 100%; }
	.dkTestimonials__tab { flex: 1; padding: 13px 16px; }
	.dkTesti-carousel.is-carousel .dkTesti-carousel__stage { padding: 0; }
	.dkTesti-carousel.is-carousel .dkTesti-carousel__arrow { display: none; } /* swipe + dots on phones */
	.dkTesti-card { flex-basis: 86%; } /* ~1 per view, peek of next to hint scroll */
	.dkTesti-carousel__track { gap: 16px; }
	.dkTesti-card.is-collapsible .dkTesti-card__quote { max-height: 8.5em; } /* five lines */
	.dkTesti-modal { align-items: flex-end; padding: 10px; }
	.dkTesti-modal__dialog { width: 100%; max-height: calc(100vh - 20px); border-radius: 18px; }
	.dkTesti-modal__header { padding: 18px 18px 12px; }
	.dkTesti-modal__title { font-size: 21px; }
	.dkTesti-modal__close { width: 40px; height: 40px; flex-basis: 40px; }
	.dkTesti-modal__content { padding: 17px 14px 16px; }
	.dkTesti-modal .dkTesti-card { padding: 34px 20px 24px; }
	.dkTesti-modal .dkTesti-card__media--photo img { max-height: 52vh; }
}

@media (prefers-reduced-motion: reduce) {
	.dkTestimonials__panel { animation: none; }
	.dkTesti-carousel__track { scroll-behavior: auto; }
}
