/* LTS Editor Phase 6: controlled interactions and modal runtime. */

.lts-interaction {
	--lts-motion-x: 0px;
	--lts-motion-y: 0px;
	--lts-motion-scale: 1;
	--lts-motion-rotate: 0deg;
	--lts-parallax-y: 0px;
	--lts-motion-duration: 500ms;
	--lts-motion-ease: cubic-bezier(.2, .72, .2, 1);
	transform: translate3d(var(--lts-motion-x), calc(var(--lts-motion-y) + var(--lts-parallax-y)), 0) scale(var(--lts-motion-scale)) rotate(var(--lts-motion-rotate));
	transition-property: opacity, transform, box-shadow, filter, background-color, border-color;
	transition-duration: var(--lts-motion-duration);
	transition-timing-function: var(--lts-motion-ease);
	will-change: auto;
}

.lts-interaction[data-lts-entrance].is-lts-pending {
	opacity: 0;
	will-change: opacity, transform;
}

.lts-interaction[data-lts-entrance].is-lts-visible {
	opacity: 1;
	--lts-motion-x: 0px;
	--lts-motion-y: 0px;
	--lts-motion-scale: 1;
}

.lts-entrance-fade.is-lts-pending { opacity: 0; }
.lts-entrance-fade-up.is-lts-pending { --lts-motion-y: 32px; }
.lts-entrance-fade-down.is-lts-pending { --lts-motion-y: -32px; }
.lts-entrance-fade-left.is-lts-pending { --lts-motion-x: -36px; }
.lts-entrance-fade-right.is-lts-pending { --lts-motion-x: 36px; }
.lts-entrance-zoom.is-lts-pending { --lts-motion-scale: .92; }
.lts-entrance-scale-up.is-lts-pending { --lts-motion-scale: .82; }
.lts-entrance-slide-up.is-lts-pending { --lts-motion-y: 56px; }

.lts-interaction[data-lts-duration="quick"],
.lts-transition-quick { --lts-motion-duration: 300ms; }
.lts-interaction[data-lts-duration="standard"],
.lts-transition-standard { --lts-motion-duration: 500ms; }
.lts-interaction[data-lts-duration="smooth"],
.lts-transition-smooth { --lts-motion-duration: 700ms; }
.lts-interaction[data-lts-duration="deliberate"] { --lts-motion-duration: 1000ms; }

@media (hover: hover) and (pointer: fine) {
	.lts-hover-lift:hover {
		--lts-motion-y: -8px;
		box-shadow: 0 18px 38px rgba(15, 35, 61, .16);
	}
	.lts-hover-grow:hover { --lts-motion-scale: 1.035; }
	.lts-hover-glow:hover {
		box-shadow: 0 0 0 1px rgba(184, 134, 35, .36), 0 16px 36px rgba(184, 134, 35, .19);
		filter: saturate(1.04);
	}
	.lts-hover-tilt:hover {
		--lts-motion-y: -4px;
		--lts-motion-rotate: -.7deg;
	}
	.lts-hover-image-zoom {
		overflow: hidden;
	}
	.lts-hover-image-zoom img {
		transition: transform var(--lts-motion-duration, 500ms) var(--lts-motion-ease, ease);
	}
	.lts-hover-image-zoom:hover img { transform: scale(1.055); }
}

.lts-parallax-subtle,
.lts-parallax-medium {
	will-change: transform;
}

.lts-interaction[data-lts-action] {
	cursor: pointer;
}

.lts-interaction[data-lts-action]:focus-visible,
.lts-trigger:focus-visible,
.lts-modal__close:focus-visible {
	outline: 3px solid var(--wp--preset--color--lts-gold, #b88623);
	outline-offset: 3px;
}

.is-lts-hidden {
	display: none !important;
}

/* Dedicated trigger block. */
.lts-trigger-wrap {
	display: flex;
	width: 100%;
}
.lts-trigger-wrap.is-align-left { justify-content: flex-start; }
.lts-trigger-wrap.is-align-center { justify-content: center; }
.lts-trigger-wrap.is-align-right { justify-content: flex-end; }

.lts-trigger {
	appearance: none;
	border: 1px solid transparent;
	border-radius: var(--lts-radius-card, 8px);
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .55em;
	font: inherit;
	font-weight: 700;
	line-height: 1.2;
	min-height: 44px;
	padding: .78em 1.2em;
	text-decoration: none;
	transition: transform 220ms ease, box-shadow 220ms ease, background-color 220ms ease, border-color 220ms ease, color 220ms ease;
}
.lts-trigger:hover { transform: translateY(-2px); }
.lts-trigger.is-style-primary {
	background: var(--wp--preset--color--lts-navy, #102a43);
	color: var(--wp--preset--color--lts-paper, #fffdf8);
	box-shadow: 0 8px 20px rgba(16, 42, 67, .16);
}
.lts-trigger.is-style-primary:hover { background: var(--wp--preset--color--lts-deep-navy, #081b2d); }
.lts-trigger.is-style-secondary {
	background: transparent;
	border-color: var(--wp--preset--color--lts-gold, #b88623);
	color: var(--wp--preset--color--lts-navy, #102a43);
}
.lts-trigger.is-style-secondary:hover { background: var(--wp--preset--color--lts-gold-soft, #f7f0e4); }
.lts-trigger.is-style-link {
	background: transparent;
	border: 0;
	border-radius: 0;
	color: var(--wp--preset--color--lts-blue, #245b8a);
	min-height: auto;
	padding: .25em 0;
	text-decoration: underline;
	text-underline-offset: .18em;
}

/* Modal, popup, slide-in, and bottom-sheet engine. */
html.lts-modal-open,
body.lts-modal-open {
	overflow: hidden !important;
}

.lts-modal[hidden] { display: none !important; }

.lts-modal {
	align-items: center;
	display: flex;
	inset: 0;
	justify-content: center;
	padding: clamp(16px, 4vw, 48px);
	position: fixed;
	z-index: 100000;
}

.lts-modal__backdrop {
	background: rgba(3, 15, 27, .72);
	backdrop-filter: blur(3px);
	inset: 0;
	opacity: 0;
	position: absolute;
	transition: opacity 240ms ease;
}

.lts-modal__dialog {
	background: var(--wp--preset--color--lts-paper, #fffdf8);
	border: 1px solid rgba(184, 134, 35, .42);
	border-radius: var(--lts-radius-card, 12px);
	box-shadow: 0 30px 80px rgba(0, 0, 0, .34);
	color: var(--wp--preset--color--lts-ink, #18212b);
	max-height: min(88vh, 920px);
	overflow: auto;
	padding: clamp(24px, 4vw, 44px);
	position: relative;
	transform-origin: center;
	transition: opacity 240ms ease, transform 280ms cubic-bezier(.2, .75, .2, 1);
	width: min(100%, 680px);
	z-index: 1;
}

.lts-modal.is-size-small .lts-modal__dialog { width: min(100%, 460px); }
.lts-modal.is-size-medium .lts-modal__dialog { width: min(100%, 680px); }
.lts-modal.is-size-large .lts-modal__dialog { width: min(100%, 920px); }
.lts-modal.is-size-xlarge .lts-modal__dialog { width: min(100%, 1180px); }
.lts-modal.is-size-full { padding: 0; }
.lts-modal.is-size-full .lts-modal__dialog {
	border: 0;
	border-radius: 0;
	height: 100%;
	max-height: none;
	width: 100%;
}

.lts-modal.is-position-right,
.lts-modal.is-position-left {
	padding: 0;
}
.lts-modal.is-position-right { justify-content: flex-end; }
.lts-modal.is-position-left { justify-content: flex-start; }
.lts-modal.is-position-right .lts-modal__dialog,
.lts-modal.is-position-left .lts-modal__dialog {
	border-radius: 0;
	height: 100%;
	max-height: none;
	width: min(92vw, 560px);
}
.lts-modal.is-position-bottom {
	align-items: flex-end;
	padding: 0;
}
.lts-modal.is-position-bottom .lts-modal__dialog {
	border-radius: var(--lts-radius-card, 14px) var(--lts-radius-card, 14px) 0 0;
	max-height: 85vh;
	width: 100%;
}

.lts-modal__close {
	align-items: center;
	appearance: none;
	background: rgba(16, 42, 67, .08);
	border: 0;
	border-radius: 999px;
	color: var(--wp--preset--color--lts-navy, #102a43);
	cursor: pointer;
	display: flex;
	font-size: 28px;
	height: 40px;
	justify-content: center;
	line-height: 1;
	padding: 0 0 3px;
	position: absolute;
	right: 14px;
	top: 14px;
	width: 40px;
	z-index: 3;
}
.lts-modal__close:hover { background: rgba(184, 134, 35, .18); }

.lts-modal__title {
	color: var(--wp--preset--color--lts-navy, #102a43);
	font-family: var(--wp--preset--font-family--lts-heading, Georgia, serif);
	font-size: clamp(1.45rem, 3vw, 2.15rem);
	line-height: 1.18;
	margin: 0 48px .8em 0;
}
.lts-modal__body > :first-child { margin-top: 0; }
.lts-modal__body > :last-child { margin-bottom: 0; }

.lts-modal .lts-modal__backdrop,
.lts-modal .lts-modal__dialog { opacity: 0; }
.lts-modal.is-animation-fade .lts-modal__dialog { transform: none; }
.lts-modal.is-animation-zoom .lts-modal__dialog { transform: scale(.94); }
.lts-modal.is-animation-slide-up .lts-modal__dialog { transform: translateY(38px); }
.lts-modal.is-animation-slide-side.is-position-left .lts-modal__dialog { transform: translateX(-52px); }
.lts-modal.is-animation-slide-side:not(.is-position-left) .lts-modal__dialog { transform: translateX(52px); }

.lts-modal.is-open .lts-modal__backdrop,
.lts-modal.is-open .lts-modal__dialog { opacity: 1; }
.lts-modal.is-open .lts-modal__dialog { transform: none; }
.lts-modal.is-closing .lts-modal__backdrop,
.lts-modal.is-closing .lts-modal__dialog { opacity: 0; }

@media (max-width: 600px) {
	.lts-modal { padding: 12px; }
	.lts-modal__dialog { padding: 26px 20px; }
	.lts-modal.is-position-center .lts-modal__dialog { max-height: 92vh; }
	.lts-modal__title { margin-right: 42px; }
}

@media (prefers-reduced-motion: reduce) {
	html.lts-respect-reduced-motion .lts-interaction,
	html.lts-respect-reduced-motion .lts-interaction *,
	html.lts-respect-reduced-motion .lts-modal__backdrop,
	html.lts-respect-reduced-motion .lts-modal__dialog,
	html.lts-respect-reduced-motion .lts-trigger {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
		transition-duration: .01ms !important;
	}
	html.lts-respect-reduced-motion .lts-interaction {
		--lts-motion-x: 0px !important;
		--lts-motion-y: 0px !important;
		--lts-motion-scale: 1 !important;
		--lts-motion-rotate: 0deg !important;
		--lts-parallax-y: 0px !important;
		opacity: 1 !important;
	}
}
