/**
 * Egypt Story Tours — canonical typography system
 *
 * The Traveler parent sets html to 10px and injects its own Poppins/Oxygen
 * typography.  This contract keeps the established Travel Packages treatment
 * (Playfair Display / Lora / Montserrat), removes accidental cascade drift,
 * and keeps component sizes in px or clamp() so the parent root scale cannot
 * collapse readable copy.
 */
:root {
	--est-font-display: 'Playfair Display', Georgia, 'Times New Roman', serif;
	--est-font-body: 'Lora', Georgia, 'Times New Roman', serif;
	--est-font-ui: 'Montserrat', Arial, Helvetica, sans-serif;
	--est-font-button: var(--est-font-ui);
	--est-type-body-size: 16px;
	--est-type-body-leading: 1.65;
	--est-type-small-size: 14px;
	--est-type-small-leading: 1.55;
	--est-color-navy: #1c2e55;
	--est-color-magenta: #a63e78;
	--est-color-magenta-dark: #7f2d5a;
	--est-color-cream: #f6f2ed;
	/* Shared Egypt Story UI contract. Components may add content-specific
	 * values, but their interaction language should inherit these tokens. */
	--est-space-1: 4px;
	--est-space-2: 8px;
	--est-space-3: 12px;
	--est-space-4: 16px;
	--est-space-5: 20px;
	--est-space-6: 24px;
	--est-space-7: 32px;
	--est-space-8: 40px;
	--est-space-9: 48px;
	--est-container-max: 1240px;
	--est-container-gutter: clamp(16px, 3vw, 32px);
	--est-radius-sm: 8px;
	--est-radius-md: 14px;
	--est-radius-lg: 20px;
	--est-border-subtle: rgba(28, 46, 85, .12);
	--est-shadow-card: 0 12px 32px rgba(28, 46, 85, .08);
	--est-shadow-card-hover: 0 18px 40px rgba(28, 46, 85, .14);
	--est-control-min: 44px;
	--est-focus-ring: 0 0 0 3px rgba(166, 62, 120, .28);
	--est-motion-fast: 160ms;
	--est-motion-standard: 200ms;
	--est-motion-mobile: 300ms;
	--est-motion-ease: cubic-bezier(.22, 1, .36, 1);
}

/* Shared layout and interaction primitives. These are intentionally
 * conservative: existing content, schema, and family-specific card fields
 * remain owned by their templates. */
html {
	box-sizing: border-box;
}

*,
*::before,
*::after {
	box-sizing: inherit;
}

body {
	max-width: 100%;
	overflow-x: clip;
}

body :where(button, input[type='submit'], input[type='button'], .btn, .button, summary) {
	min-height: var(--est-control-min);
	transition-property: transform, opacity, color, background-color, border-color, box-shadow;
	transition-duration: var(--est-motion-standard);
	transition-timing-function: var(--est-motion-ease);
}

body :where(button, input[type='submit'], input[type='button'], .btn, .button, summary):focus-visible,
body :where(a, input, select, textarea):focus-visible {
	outline: 3px solid var(--est-color-magenta);
	outline-offset: 3px;
	box-shadow: var(--est-focus-ring);
}

body :where(.est-card__cta, .est-shore-card__body .btn, .est-catcards__btn, .est-home-v2__card-cta) {
	min-height: var(--est-control-min);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* Keep repeated card surfaces coherent while allowing each family to supply
 * its own metadata and imagery. */
body :where(.est-card, .est-catclassic__card, .est-catcards__link, .est-pillars__card, .est-blog__card, .est-tailor-made__card, .est-shore-card__body, .est-home-v2__shape-card, .est-home-v2__journey-card) {
	border-radius: var(--est-radius-md);
}

body :where(.est-card, .est-catclassic__card, .est-catcards__link, .est-pillars__card, .est-blog__card, .est-tailor-made__card, .est-home-v2__shape-card, .est-home-v2__journey-card):hover,
body :where(.est-card, .est-catclassic__card, .est-catcards__link, .est-pillars__card, .est-blog__card, .est-tailor-made__card, .est-home-v2__shape-card, .est-home-v2__journey-card):focus-within {
	box-shadow: var(--est-shadow-card-hover);
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
		transition-duration: .01ms !important;
		transition-delay: 0ms !important;
		transform: none !important;
	}
}

/* High-value interaction targets: keep the primary enquiry, itinerary control,
 * card CTA, and pricing toggles comfortably tappable on touch devices. */
.etp-single-tour .etp-itinerary-section .expand,
.etp-mobile-booking .btn,
.est-card__cta,
.etp-pricing-packages .etp-season-toggle,
.est-shore-text-link {
	min-height: var(--est-control-min, 44px) !important;
}

/* Public text roles. Icon fonts are restored below and are not part of this rule. */
body {
	font-family: var(--est-font-body) !important;
	font-size: var(--est-type-body-size);
	line-height: var(--est-type-body-leading);
}

body :where(p, li, dt, dd, td, th, blockquote, figcaption, label, legend, small) {
	font-family: var(--est-font-body) !important;
}

body :where(h1, h2, h3, h4, h5, h6) {
	font-family: var(--est-font-display) !important;
}

body :where(a, button, input, select, textarea, .btn, .button, input[type='submit'], input[type='button']) {
	font-family: var(--est-font-ui) !important;
}

body :where(.fa, .fas, .far, .fal, .fab, [class^='fa-'], [class*=' fa-'], .la, .las, .lar, .lab) {
	font-family: FontAwesome !important;
}

/* Homepage v2: explicit ownership prevents the parent body p rules from
 * shrinking labels, notes and card copy or changing their intended family. */
.est-home-v2 {
	font-family: var(--est-font-body) !important;
	font-size: var(--est-type-body-size);
	line-height: var(--est-type-body-leading);
}

.est-home-v2__eyebrow,
.est-home-v2__section-head > p:first-child,
.est-home-v2__route-label,
.est-home-v2__guide > span,
.est-home-v2__meta span {
	font-family: var(--est-font-ui) !important;
	font-size: 12px !important;
	line-height: 18px !important;
}

.est-home-v2__hero h1 {
	font-family: var(--est-font-display) !important;
}

.est-home-v2__hero-text {
	font-family: var(--est-font-body) !important;
	font-size: clamp(17px, 2vw, 20px) !important;
	line-height: 1.6 !important;
}

.est-home-v2__hero-note {
	font-family: var(--est-font-body) !important;
	font-size: 14px !important;
	line-height: 22px !important;
}

.est-home-v2__button,
.est-home-v2__card-cta,
.est-home-v2__text-link {
	font-family: var(--est-font-ui) !important;
}

.est-home-v2__button {
	font-size: 16px !important;
	line-height: 24px !important;
}

.est-home-v2__button--primary {
	background: linear-gradient(135deg, var(--est-color-magenta) 0%, var(--est-color-magenta-dark) 100%) !important;
	color: #fff !important;
}

.est-home-v2__button--primary:hover,
.est-home-v2__button--primary:focus-visible {
	background: linear-gradient(135deg, #8b2d62 0%, #682347 100%) !important;
	color: #fff !important;
}

.est-home-v2__shape-card .est-home-v2__card-body > strong,
.est-home-v2__journey-card h3,
.est-home-v2__stop h3,
.est-home-v2__extension h3,
.est-home-v2__process-step h3,
.est-home-v2__why-visual strong,
.est-home-v2__values h3,
.est-home-v2__guide h3 {
	font-family: var(--est-font-display) !important;
}

.est-home-v2__shape-card .est-home-v2__card-body > strong {
	font-size: 23px !important;
	line-height: 28px !important;
}

.est-home-v2__shape-card .est-home-v2__card-body > span:not(.est-home-v2__card-cta),
.est-home-v2__journey-card .est-home-v2__summary,
.est-home-v2__section-head > p:last-child,
.est-home-v2__connection-copy,
.est-home-v2__stop p,
.est-home-v2__extension p,
.est-home-v2__route-note,
.est-home-v2__process-step p,
.est-home-v2__values p,
.est-home-v2__answer-grid p,
.est-home-v2__guide p,
.est-home-v2__final p:last-child {
	font-family: var(--est-font-body) !important;
	font-size: 16px !important;
	line-height: 1.65 !important;
}

.est-home-v2__journey-card h3 {
	font-size: 25px !important;
	line-height: 30px !important;
}

.est-home-v2__card-cta,
.est-home-v2__text-link {
	font-size: 14px !important;
	line-height: 22px !important;
}

.est-home-v2__price small,
.est-home-v2__price strong {
	font-family: var(--est-font-ui) !important;
}

.est-home-v2__price small {
	font-size: 13px !important;
	line-height: 20px !important;
}

.est-home-v2__price strong {
	font-size: 21px !important;
	line-height: 28px !important;
}

/* Keep the homepage imagery coherent with the package palette without
 * muting the approved local photographs. */
.est-home-v2__hero {
	background-image: linear-gradient(90deg, rgba(14, 28, 57, .93) 0%, rgba(14, 28, 57, .76) 48%, rgba(14, 28, 57, .28) 82%), var(--est-home-v2-hero) !important;
}

.est-home-v2__shape-card img,
.est-home-v2__journey-image img,
.est-home-v2__why-visual {
	filter: saturate(.94) contrast(1.02);
}

.est-home-v2__shape-card:hover img,
.est-home-v2__journey-card:hover img,
.est-home-v2__journey-card:focus-within img {
	filter: saturate(1) contrast(1.02);
}

@media (max-width: 680px) {
	.est-home-v2__hero-text {
		font-size: 17px !important;
	}

	.est-home-v2__shape-card .est-home-v2__card-body > strong,
	.est-home-v2__journey-card h3 {
		font-size: 21px !important;
		line-height: 27px !important;
	}

	.est-home-v2__shape-card .est-home-v2__card-body > span:not(.est-home-v2__card-cta),
	.est-home-v2__journey-card .est-home-v2__summary,
	.est-home-v2__section-head > p:last-child,
	.est-home-v2__connection-copy,
	.est-home-v2__stop p,
	.est-home-v2__extension p,
	.est-home-v2__route-note,
	.est-home-v2__process-step p,
	.est-home-v2__values p,
	.est-home-v2__answer-grid p,
	.est-home-v2__guide p,
	.est-home-v2__final p:last-child {
		font-size: 16px !important;
		line-height: 1.6 !important;
	}
}
