/* ============================================================
   THE FESTIVE COUPLE — DESIGN TOKENS + SITE STYLES
   Premium boutique travel · Disney · Universal · Cruceros Disney
   Brand system — magenta + violet + cyan
   ============================================================ */

:root {
	/* ─── Color · brand palette ──────────────────────────── */
	/* Magenta — principal, CTAs, accents */
	--c-magenta:      #FF3390;
	--c-magenta-soft: #FFE5EE;
	--c-magenta-deep: #CC1A6F;

	/* Violet — secondary, eyebrows, decorative */
	--c-violet:       #5A5AFF;
	--c-violet-soft:  #EEEDFE;
	--c-violet-deep:  #3A3ACC;

	/* Cyan — tertiary, variety */
	--c-cyan:         #03B6F4;
	--c-cyan-soft:    #E6F8FE;
	--c-cyan-deep:    #028BBA;

	/* Ink — text + dark backgrounds */
	--c-ink:          #1A1A2E;
	--c-ink-2:        #4A4A5E;
	--c-ink-3:        #7A7A8C;

	/* Blush — soft warm backgrounds (replaces cream) */
	--c-blush:        #FFF5F9;
	--c-blush-soft:   #FFFAFC;
	--c-blush-deep:   #FFE5EE;

	/* Neutrals + lines */
	--c-white:        #FFFFFF;
	--c-paper:        #FDFCF8;
	--c-line:         #EBEBEF;
	--c-line-soft:    #F4F4F7;

	/* Legacy aliases — keep existing selectors working with new values */
	--c-navy:         var(--c-ink);
	--c-gold:         var(--c-magenta);
	--c-gold-soft:    var(--c-magenta-soft);
	--c-gold-deep:    var(--c-magenta-deep);
	--c-cream:        var(--c-blush);
	--c-cream-soft:   var(--c-blush-soft);
	--c-cream-deep:   var(--c-blush-deep);

	/* Semantic */
	--c-fg:           var(--c-ink);
	--c-fg-muted:     var(--c-ink-2);
	--c-fg-subtle:    var(--c-ink-3);
	--c-bg:           var(--c-paper);
	--c-bg-warm:      var(--c-blush);
	--c-bg-deep:      var(--c-ink);
	--c-accent:       var(--c-magenta);
	--c-cta:          var(--c-magenta);

	/* Typography */
	--font-serif: "Fraunces", Georgia, "Times New Roman", serif;
	--font-sans:  "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

	--fs-display: clamp(3rem, 6.5vw, 6rem);
	--fs-h1:      clamp(2.25rem, 4vw, 3.5rem);
	--fs-h2:      clamp(2rem, 3.6vw, 3rem);
	--fs-h3:      clamp(1.375rem, 2vw, 1.75rem);
	--fs-h4:      1.375rem;
	--fs-lede:    1.25rem;
	--fs-body:    1.0625rem;
	--fs-small:   0.9375rem;
	--fs-caption: 0.8125rem;
	--fs-eyebrow: 0.75rem;

	--lh-tight:   1.05;
	--lh-display: 1.08;
	--lh-heading: 1.15;
	--lh-body:    1.65;
	--lh-relaxed: 1.75;

	--ls-tight:   -0.02em;
	--ls-eyebrow:  0.18em;

	/* Spacing */
	--s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 20px;
	--s-6: 24px; --s-8: 32px; --s-10: 40px; --s-12: 48px;
	--s-16: 64px; --s-20: 80px; --s-24: 96px; --s-32: 128px;

	--section-y:        clamp(80px, 10vw, 160px);
	--gutter:           clamp(20px, 4vw, 48px);
	--container-max:    1280px;
	--container-narrow: 880px;
	--container-prose:  680px;

	/* Radii */
	--r-sm: 8px; --r-md: 12px; --r-lg: 16px; --r-xl: 24px; --r-pill: 999px;

	/* Shadows */
	--sh-1: 0 1px 2px rgba(26,26,46,.04), 0 1px 1px rgba(26,26,46,.03);
	--sh-2: 0 4px 12px rgba(26,26,46,.06), 0 2px 4px rgba(26,26,46,.04);
	--sh-3: 0 12px 32px rgba(26,26,46,.08), 0 4px 8px rgba(26,26,46,.04);
	--sh-4: 0 24px 64px rgba(26,26,46,.10), 0 8px 16px rgba(26,26,46,.04);
	--sh-hover: 0 18px 40px rgba(26,26,46,.12), 0 6px 12px rgba(26,26,46,.05);

	/* Motion */
	--ease-out: cubic-bezier(0.22, 1, 0.36, 1);
	--ease-soft: cubic-bezier(0.4, 0, 0.2, 1);
	--dur-fast: 160ms;
	--dur-base: 260ms;
	--dur-slow: 480ms;
	--dur-cine: 900ms;
}

/* ============================================================
   Reset-ish + Astra overrides
   ============================================================ */
html { -webkit-text-size-adjust: 100%; }

body {
	font-family: var(--font-sans);
	font-size: var(--fs-body);
	line-height: var(--lh-body);
	color: var(--c-fg);
	background: var(--c-bg);
	font-weight: 400;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

* { box-sizing: border-box; }

a { color: var(--c-navy); }
a:hover { color: var(--c-gold-deep); }

/* Hide Astra's primary header/footer on every page — we replace it. */
.ast-primary-header-bar,
header.site-header,
footer.site-footer { display: none !important; }

.tfc-container { max-width: var(--container-max); margin: 0 auto; padding: 0 var(--gutter); }
.tfc-container--narrow { max-width: var(--container-narrow); margin: 0 auto; padding: 0 var(--gutter); }
.tfc-container--prose  { max-width: var(--container-prose);  margin: 0 auto; padding: 0 var(--gutter); }

/* ============================================================
   Typography classes
   ============================================================ */
.tfc-display, .tfc-h1, .tfc-h2, .tfc-h3 {
	font-family: var(--font-serif);
	color: var(--c-navy);
	letter-spacing: var(--ls-tight);
	text-wrap: balance;
	font-weight: 400;
}
.tfc-display { font-size: var(--fs-display); line-height: var(--lh-display); }
.tfc-h1 { font-size: var(--fs-h1); line-height: var(--lh-heading); }
.tfc-h2 { font-size: var(--fs-h2); line-height: var(--lh-heading); }
.tfc-h3 { font-size: var(--fs-h3); line-height: var(--lh-heading); font-weight: 500; }
.tfc-display em, .tfc-h1 em, .tfc-h2 em, .tfc-h3 em {
	font-style: italic;
	font-weight: 400;
	color: var(--c-gold-deep);
}

.tfc-lede {
	font-size: var(--fs-lede);
	line-height: var(--lh-relaxed);
	color: var(--c-fg-muted);
	text-wrap: pretty;
}

.tfc-body { font-size: var(--fs-body); line-height: var(--lh-body); color: var(--c-fg); }

.tfc-eyebrow {
	font-family: var(--font-sans);
	font-size: var(--fs-eyebrow);
	font-weight: 500;
	letter-spacing: var(--ls-eyebrow);
	text-transform: uppercase;
	color: var(--c-gold-deep);
	display: inline-flex;
	align-items: center;
	gap: 12px;
}
.tfc-eyebrow-rule { width: 32px; height: 1px; background: var(--c-gold); display: inline-block; }

/* ============================================================
   Buttons
   ============================================================ */
.tfc-btn {
	font-family: var(--font-sans);
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 0.01em;
	cursor: pointer;
	border: none;
	border-radius: 12px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	text-decoration: none;
	white-space: nowrap;
	transition: background var(--dur-base) var(--ease-out),
	            color var(--dur-base) var(--ease-out),
	            border-color var(--dur-base),
	            transform var(--dur-fast) var(--ease-out);
}
.tfc-btn:active { transform: scale(0.98); }

.tfc-btn--primary {
	background: var(--c-magenta);
	color: #fff;
	padding: 14px 28px;
}
.tfc-btn--primary:hover { background: var(--c-magenta-deep); color: #fff; }

.tfc-btn--secondary {
	background: transparent;
	color: var(--c-navy);
	padding: 12.5px 26.5px;
	border: 1.5px solid var(--c-navy);
}
.tfc-btn--secondary:hover { background: var(--c-navy); color: var(--c-cream); }

.tfc-btn--secondary.on-dark { color: var(--c-cream); border-color: var(--c-cream); }
.tfc-btn--secondary.on-dark:hover { background: var(--c-cream); color: var(--c-navy); }

.tfc-btn--tertiary {
	background: transparent;
	color: var(--c-navy);
	padding: 4px 0;
	border-radius: 0;
	border-bottom: 1px solid var(--c-gold);
	font-weight: 500;
}
.tfc-btn--tertiary:hover { border-bottom-color: var(--c-gold-deep); border-bottom-width: 2px; }
.tfc-btn-arrow { color: var(--c-gold-deep); }

/* ============================================================
   Sticky nav
   ============================================================ */
.tfc-nav {
	position: fixed;
	top: 0; left: 0; right: 0;
	z-index: 50;
	height: 76px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0 var(--gutter);
	transition: background var(--dur-base) var(--ease-out),
	            border-color var(--dur-base) var(--ease-out),
	            backdrop-filter var(--dur-base) var(--ease-out);
	background: transparent;
	border-bottom: 1px solid transparent;
}
.tfc-nav.is-glass,
body:not(.tfc-has-hero) .tfc-nav {
	background: rgba(253, 252, 248, 0.85);
	backdrop-filter: blur(14px) saturate(140%);
	-webkit-backdrop-filter: blur(14px) saturate(140%);
	border-bottom-color: rgba(235, 235, 239, 0.6);
}
.tfc-nav__brand { display: flex; align-items: center; gap: 10px; text-decoration: none; }
.tfc-nav__logo { width: 44px; height: 44px; object-fit: contain; transition: opacity var(--dur-base); }
.tfc-nav__logo--navy { display: none; }
.tfc-nav.is-glass .tfc-nav__logo--cream,
body:not(.tfc-has-hero) .tfc-nav__logo--cream { display: none; }
.tfc-nav.is-glass .tfc-nav__logo--navy,
body:not(.tfc-has-hero) .tfc-nav__logo--navy { display: inline-block; }

.tfc-nav__name {
	font-family: var(--font-serif);
	font-size: 17px;
	font-weight: 500;
	letter-spacing: 0.02em;
	color: var(--c-cream);
	transition: color var(--dur-base) var(--ease-out);
}
.tfc-nav.is-glass .tfc-nav__name,
body:not(.tfc-has-hero) .tfc-nav__name { color: var(--c-navy); }

.tfc-nav__menu {
	display: flex; gap: 36px; list-style: none; margin: 0; padding: 0; align-items: center;
}
.tfc-nav__menu a {
	font-family: var(--font-sans);
	font-size: 14px;
	font-weight: 500;
	color: var(--c-cream);
	text-decoration: none;
	letter-spacing: 0.02em;
	transition: color var(--dur-base) var(--ease-out);
}
.tfc-nav.is-glass .tfc-nav__menu a,
body:not(.tfc-has-hero) .tfc-nav__menu a { color: var(--c-navy); }
.tfc-nav__menu a:hover { color: var(--c-gold-deep); }
.tfc-nav__menu .tfc-btn { padding: 11px 22px; font-size: 14px; }

.tfc-nav__toggle {
	display: none;
	width: 40px; height: 40px;
	background: transparent;
	border: 1px solid currentColor;
	border-radius: 999px;
	cursor: pointer;
	color: var(--c-cream);
	align-items: center;
	justify-content: center;
}
body:not(.tfc-has-hero) .tfc-nav__toggle { color: var(--c-navy); }
.tfc-nav.is-glass .tfc-nav__toggle { color: var(--c-navy); }

@media (max-width: 900px) {
	.tfc-nav__menu { display: none; }
	.tfc-nav__toggle { display: inline-flex; }
	.tfc-nav.is-open .tfc-nav__menu {
		display: flex;
		flex-direction: column;
		position: absolute;
		top: 76px; left: 0; right: 0;
		padding: 24px var(--gutter) 32px;
		background: var(--c-paper);
		border-bottom: 1px solid var(--c-line);
		gap: 18px;
		align-items: stretch;
	}
	.tfc-nav.is-open .tfc-nav__menu a { color: var(--c-navy); }
}

/* ============================================================
   Hero
   ============================================================ */
.tfc-hero {
	position: relative;
	min-height: 92vh;
	display: flex;
	align-items: flex-end;
	overflow: hidden;
	background: var(--c-navy);
}
.tfc-hero__base {
	position: absolute; inset: 0;
	background: linear-gradient(135deg, #2A2A3E 0%, #1a1a2e 100%);
}
.tfc-hero__image {
	position: absolute; inset: 0;
	background-image: url('../img/hero-cruise.png');
	background-size: cover;
	background-position: center 45%;
	animation: tfcHeroZoom 14s var(--ease-out) forwards;
}
.tfc-hero__sunset {
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(255,51,144,0.35) 0%, rgba(255,51,144,0.18) 45%, rgba(26,26,46,0) 75%);
	mix-blend-mode: overlay;
}
.tfc-hero__band {
	position: absolute; inset: 0;
	background: linear-gradient(to top, rgba(26,26,46,0.88) 0%, rgba(26,26,46,0.7) 25%, rgba(26,26,46,0.4) 50%, rgba(26,26,46,0.15) 75%, rgba(26,26,46,0) 90%);
}
.tfc-hero__vignette {
	position: absolute; inset: 0;
	background: radial-gradient(ellipse 80% 60% at 25% 90%, rgba(26,26,46,0.4) 0%, rgba(26,26,46,0) 70%);
}
.tfc-hero__content {
	position: relative;
	max-width: var(--container-max);
	width: 100%;
	margin: 0 auto;
	padding: 0 var(--gutter) clamp(80px, 9vw, 140px);
	color: var(--c-cream);
	animation: tfcRise 0.9s var(--ease-out) 0.1s both;
}
.tfc-hero h1 {
	font-family: var(--font-serif);
	font-size: clamp(3rem, 6.5vw, 6rem);
	line-height: 1.05;
	letter-spacing: var(--ls-tight);
	color: var(--c-cream);
	font-weight: 400;
	margin: 24px 0 0;
	max-width: 14ch;
	text-wrap: balance;
}
.tfc-hero h1 em { color: var(--c-gold-soft); font-style: italic; }
.tfc-hero__lede {
	font-size: clamp(1.0625rem, 1.5vw, 1.25rem);
	line-height: 1.6;
	color: rgba(255, 245, 249, 0.85);
	max-width: 52ch;
	margin: 28px 0 0;
	text-wrap: pretty;
}
.tfc-hero__ctas { display: flex; gap: 16px; margin-top: 40px; flex-wrap: wrap; }

.tfc-hero__scroll-hint {
	position: absolute;
	bottom: 32px;
	right: var(--gutter);
	color: rgba(255, 245, 249, 0.6);
	font-size: 11px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	writing-mode: vertical-rl;
	transform: rotate(180deg);
	display: flex;
	align-items: center;
	gap: 14px;
}
.tfc-hero__scroll-hint span {
	width: 1px; height: 48px; background: rgba(255,245,249,0.4);
}

@keyframes tfcHeroZoom { from { transform: scale(1.06); } to { transform: scale(1); } }
@keyframes tfcRise { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }

/* Compact page hero — for marketing inner pages */
.tfc-pagehero {
	background: var(--c-navy);
	color: var(--c-cream);
	padding: calc(76px + clamp(80px, 9vw, 120px)) var(--gutter) clamp(64px, 7vw, 96px);
	position: relative;
	overflow: hidden;
}
.tfc-pagehero::before {
	content: ''; position: absolute; inset: 0;
	background: radial-gradient(ellipse 90% 70% at 30% 100%, rgba(255,51,144,0.12) 0%, transparent 60%);
}
.tfc-pagehero__inner { position: relative; max-width: var(--container-max); margin: 0 auto; }
.tfc-pagehero h1 {
	font-family: var(--font-serif);
	font-size: clamp(2.5rem, 5vw, 4rem);
	line-height: 1.1;
	color: var(--c-cream);
	font-weight: 400;
	margin: 20px 0 0;
	max-width: 18ch;
	letter-spacing: var(--ls-tight);
}
.tfc-pagehero h1 em { color: var(--c-gold-soft); font-style: italic; }

/* ============================================================
   Section base
   ============================================================ */
.tfc-section {
	padding: var(--section-y) var(--gutter);
}
.tfc-section--paper { background: var(--c-paper); }
.tfc-section--cream { background: var(--c-cream); }
.tfc-section--navy  { background: var(--c-navy); color: var(--c-cream); }

.tfc-section__head {
	max-width: 720px;
	margin: 0 auto 0 0;
	margin-bottom: clamp(48px, 6vw, 88px);
}
.tfc-section__head--centered { margin: 0 auto clamp(48px, 6vw, 88px); text-align: center; }
.tfc-section__head h2 {
	font-family: var(--font-serif);
	font-size: clamp(2rem, 3.6vw, 3rem);
	line-height: 1.12;
	color: var(--c-navy);
	font-weight: 400;
	letter-spacing: var(--ls-tight);
	margin: 20px 0 0;
	text-wrap: balance;
}
.tfc-section--navy .tfc-section__head h2 { color: var(--c-cream); }
.tfc-section__head h2 em { color: var(--c-gold-deep); font-style: italic; }
.tfc-section--navy .tfc-section__head h2 em { color: var(--c-gold-soft); }

.tfc-section__lede {
	font-family: var(--font-sans);
	font-size: 17px;
	line-height: 1.65;
	color: var(--c-fg-muted);
	max-width: 40ch;
	margin: 0;
	text-wrap: pretty;
}
.tfc-section--navy .tfc-section__lede { color: rgba(255, 245, 249, 0.75); }

.tfc-section__head--split {
	display: flex; justify-content: space-between; align-items: flex-end;
	gap: 32px; flex-wrap: wrap;
	max-width: none;
}
.tfc-section__head--split > div:first-child { max-width: 640px; }

/* ============================================================
   Experiences cards
   ============================================================ */
.tfc-experiences__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: clamp(20px, 2.5vw, 32px);
}
@media (max-width: 900px) { .tfc-experiences__grid { grid-template-columns: 1fr; } }

.tfc-card {
	background: var(--c-white);
	border-radius: 16px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	box-shadow: var(--sh-2);
	transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}
.tfc-card:hover { box-shadow: var(--sh-hover); transform: translateY(-3px); }
.tfc-card__image {
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background: linear-gradient(155deg, #232336 0%, #1a1a2e 65%, #14141F 100%);
}
.tfc-card__image > div {
	width: 100%; height: 100%;
	background-size: cover; background-position: center;
	transition: transform var(--dur-slow) var(--ease-out);
}
.tfc-card:hover .tfc-card__image > div { transform: scale(1.04); }
.tfc-card__body { padding: 28px 28px 32px; display: flex; flex-direction: column; flex: 1; }
.tfc-card__title {
	font-family: var(--font-serif);
	font-size: 26px;
	line-height: 1.2;
	color: var(--c-navy);
	font-weight: 500;
	margin: 14px 0 12px;
	letter-spacing: -0.015em;
	text-wrap: balance;
}
.tfc-card__copy {
	font-size: 15px;
	color: var(--c-fg-muted);
	margin: 0;
	line-height: 1.6;
	text-wrap: pretty;
}
.tfc-card__star {
	display: flex; align-items: flex-start; gap: 10px;
	margin-top: 22px;
	padding: 14px 16px;
	background: var(--c-cream-soft);
	border-radius: 10px;
	border: 1px solid var(--c-line-soft);
}
.tfc-card__star::before {
	content: '\2605'; color: var(--c-gold-deep); font-size: 15px; flex: none; line-height: 1.5;
}
.tfc-card__star span {
	font-size: 13.5px; line-height: 1.5; color: var(--c-navy); font-weight: 500; text-wrap: pretty;
}
.tfc-card__foot {
	margin-top: 24px; padding-top: 20px;
	border-top: 1px solid var(--c-line-soft);
	flex: 1; display: flex; align-items: flex-end;
}

/* ============================================================
   Why us grid
   ============================================================ */
.tfc-whyus__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: clamp(32px, 4vw, 56px);
	row-gap: clamp(48px, 5vw, 72px);
}
@media (max-width: 1000px) { .tfc-whyus__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px)  { .tfc-whyus__grid { grid-template-columns: 1fr; } }

.tfc-feature { display: flex; flex-direction: column; gap: 16px; }
.tfc-feature__icon {
	width: 56px; height: 56px;
	border-radius: 50%;
	background: var(--c-paper);
	border: 1px solid var(--c-gold);
	display: flex; align-items: center; justify-content: center;
	color: var(--c-navy);
}
.tfc-feature__icon i { width: 24px; height: 24px; }
.tfc-feature h3 {
	font-family: var(--font-serif);
	font-size: 22px;
	line-height: 1.25;
	color: var(--c-navy);
	font-weight: 500;
	margin: 0;
	letter-spacing: -0.01em;
	text-wrap: balance;
}
.tfc-feature p {
	font-size: 15.5px;
	line-height: 1.6;
	color: var(--c-fg-muted);
	margin: 0;
	text-wrap: pretty;
}

/* ============================================================
   How we work timeline
   ============================================================ */
.tfc-steps { position: relative; }
.tfc-steps__rule {
	position: absolute;
	top: 28px; left: 8%; right: 8%;
	height: 1px; background: var(--c-gold); opacity: .4;
}
.tfc-steps__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: clamp(24px, 3vw, 48px);
	position: relative;
}
@media (max-width: 900px) {
	.tfc-steps__grid { grid-template-columns: 1fr 1fr; row-gap: 48px; }
	.tfc-steps__rule { display: none; }
}
@media (max-width: 600px) {
	.tfc-steps__grid { grid-template-columns: 1fr; }
}
.tfc-step { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; }
.tfc-step__num {
	width: 56px; height: 56px;
	border-radius: 50%;
	background: var(--c-paper);
	border: 1px solid var(--c-gold);
	display: flex; align-items: center; justify-content: center;
	font-family: var(--font-serif);
	font-size: 20px;
	font-style: italic;
	color: var(--c-navy);
	font-weight: 500;
}
.tfc-step h3 {
	font-family: var(--font-serif);
	font-size: 24px;
	line-height: 1.2;
	color: var(--c-navy);
	font-weight: 500;
	margin: 0;
}
.tfc-step p {
	font-size: 15.5px; line-height: 1.6; color: var(--c-fg-muted); margin: 0; text-wrap: pretty;
}

/* ============================================================
   Testimonials
   ============================================================ */
.tfc-quotes {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: clamp(20px, 2.5vw, 32px);
}
@media (max-width: 900px) { .tfc-quotes { grid-template-columns: 1fr; } }

.tfc-quotes__cta { text-align: center; margin-top: clamp(40px, 5vw, 64px); }

.tfc-quote-card {
	background: var(--c-white);
	border-radius: 16px;
	padding: 36px 32px 32px;
	box-shadow: var(--sh-2);
	border-top: 2px solid var(--c-gold);
	margin: 0;
	display: flex; flex-direction: column;
}
.tfc-quote-card blockquote {
	font-family: var(--font-serif);
	font-style: italic;
	font-size: 19px;
	line-height: 1.5;
	color: var(--c-navy);
	font-weight: 400;
	margin: 0;
	flex: 1;
	text-wrap: pretty;
}
.tfc-quote-card figcaption {
	display: flex; align-items: center; gap: 14px;
	margin-top: 28px; padding-top: 22px;
	border-top: 1px solid var(--c-line-soft);
}
.tfc-quote-card__avatar {
	width: 44px; height: 44px; border-radius: 50%;
	background: linear-gradient(135deg, var(--c-magenta-soft), var(--c-violet-soft));
	flex: none;
}
.tfc-quote-card__name { font-family: var(--font-sans); font-size: 14px; font-weight: 600; color: var(--c-navy); }
.tfc-quote-card__where { font-family: var(--font-sans); font-size: 12.5px; color: var(--c-fg-subtle); }

/* ============================================================
   Meet us
   ============================================================ */
.tfc-meet {
	display: grid;
	grid-template-columns: 1.05fr 1fr;
	gap: clamp(48px, 6vw, 96px);
	align-items: center;
	max-width: var(--container-max);
	margin: 0 auto;
}
@media (max-width: 900px) { .tfc-meet { grid-template-columns: 1fr; } }

.tfc-meet__portrait {
	aspect-ratio: 4 / 5;
	border-radius: 24px;
	overflow: hidden;
	position: relative;
	background: linear-gradient(155deg, #232336 0%, #1a1a2e 55%, #14141F 100%);
	box-shadow: var(--sh-4);
	display: flex;
	align-items: center;
	justify-content: center;
}
.tfc-meet__portrait::before,
.tfc-meet__portrait::after,
.tfc-meet__portrait > .tfc-corner-tl,
.tfc-meet__portrait > .tfc-corner-tr,
.tfc-meet__portrait > .tfc-corner-bl,
.tfc-meet__portrait > .tfc-corner-br {
	content: '';
	position: absolute;
	width: 40px; height: 40px;
	opacity: .6;
}
.tfc-corner-tl { top: 24px; left: 24px; border-top: 1px solid var(--c-gold); border-left: 1px solid var(--c-gold); }
.tfc-corner-tr { top: 24px; right: 24px; border-top: 1px solid var(--c-gold); border-right: 1px solid var(--c-gold); }
.tfc-corner-bl { bottom: 24px; left: 24px; border-bottom: 1px solid var(--c-gold); border-left: 1px solid var(--c-gold); }
.tfc-corner-br { bottom: 24px; right: 24px; border-bottom: 1px solid var(--c-gold); border-right: 1px solid var(--c-gold); }

.tfc-meet__placeholder {
	text-align: center;
	display: flex; flex-direction: column; align-items: center; gap: 20px;
	padding: 32px;
}
.tfc-meet__placeholder .star { color: var(--c-gold); font-size: 22px; letter-spacing: 0.3em; opacity: .85; }
.tfc-meet__monogram {
	font-family: var(--font-serif);
	font-style: italic;
	font-size: 64px;
	line-height: 1;
	color: var(--c-magenta);
	font-weight: 400;
	letter-spacing: -0.02em;
}
.tfc-meet__placeholder .hr { width: 40px; height: 1px; background: var(--c-gold); opacity: .7; }
.tfc-meet__placeholder .label {
	font-family: var(--font-sans);
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: rgba(255, 245, 249, 0.7);
}

.tfc-meet__body h2 {
	font-family: var(--font-serif);
	font-size: clamp(2rem, 3.6vw, 3rem);
	line-height: 1.12;
	color: var(--c-navy);
	font-weight: 400;
	letter-spacing: var(--ls-tight);
	margin: 20px 0 0;
	text-wrap: balance;
}
.tfc-meet__body h2 em { color: var(--c-gold-deep); font-style: italic; }
.tfc-meet__copy {
	font-size: 17px;
	line-height: 1.7;
	color: var(--c-fg-muted);
	margin: 32px 0 0;
	display: flex; flex-direction: column; gap: 20px;
	text-wrap: pretty;
}
.tfc-meet__copy p { margin: 0; }

.tfc-stats { display: flex; gap: 32px; margin-top: 36px; flex-wrap: wrap; }
.tfc-stat { border-left: 1px solid var(--c-gold); padding-left: 20px; }
.tfc-stat__n { font-family: var(--font-serif); font-size: 36px; color: var(--c-navy); font-weight: 500; line-height: 1; }
.tfc-stat__l { font-size: 12.5px; color: var(--c-fg-subtle); letter-spacing: 0.06em; margin-top: 6px; }

/* ============================================================
   Newsletter (navy)
   ============================================================ */
.tfc-newsletter {
	padding: clamp(80px, 10vw, 140px) var(--gutter);
	background: var(--c-navy);
	color: var(--c-cream);
	position: relative;
	overflow: hidden;
}
.tfc-newsletter__inner { max-width: 720px; margin: 0 auto; text-align: center; position: relative; }
.tfc-newsletter h2 {
	font-family: var(--font-serif);
	font-size: clamp(2rem, 3.6vw, 3rem);
	line-height: 1.12;
	color: var(--c-cream);
	font-weight: 400;
	letter-spacing: var(--ls-tight);
	margin: 20px 0 0;
	text-wrap: balance;
}
.tfc-newsletter h2 em { color: var(--c-gold-soft); font-style: italic; }
.tfc-newsletter__copy {
	font-size: 17px;
	line-height: 1.65;
	color: rgba(255, 245, 249, 0.75);
	margin: 24px auto 0;
	max-width: 52ch;
	text-wrap: pretty;
}
.tfc-newsletter__copy em { font-style: italic; }

.tfc-newsletter__form {
	display: flex; gap: 12px;
	margin: 40px auto 0;
	max-width: 520px;
	flex-wrap: wrap;
}
.tfc-newsletter__form input {
	flex: 1 1 240px;
	font-family: var(--font-sans);
	font-size: 16px;
	padding: 14px 18px;
	background: rgba(255, 245, 249, 0.06);
	border: 1px solid rgba(255, 245, 249, 0.2);
	border-radius: 12px;
	color: var(--c-cream);
	outline: none;
}
.tfc-newsletter__form input::placeholder { color: rgba(255, 245, 249, 0.4); }
.tfc-newsletter__form button {
	font-family: var(--font-sans);
	font-size: 15px;
	font-weight: 600;
	padding: 14px 28px;
	border-radius: 12px;
	background: var(--c-gold);
	color: var(--c-navy);
	border: none;
	cursor: pointer;
	letter-spacing: 0.01em;
}
.tfc-newsletter__form button:hover { background: var(--c-magenta-deep); }
.tfc-newsletter__note {
	font-size: 12px;
	color: rgba(255, 245, 249, 0.5);
	margin-top: 20px;
	letter-spacing: 0.04em;
}

/* ============================================================
   Footer
   ============================================================ */
.tfc-footer {
	background: var(--c-navy);
	color: var(--c-cream);
	padding: clamp(64px, 7vw, 96px) var(--gutter) 40px;
	border-top: 1px solid rgba(255, 51, 144, 0.25);
}
.tfc-footer__inner { max-width: var(--container-max); margin: 0 auto; }
.tfc-footer__grid {
	display: grid;
	grid-template-columns: 1.6fr 1fr 1fr 1fr;
	gap: clamp(32px, 4vw, 72px);
	margin-bottom: 64px;
}
@media (max-width: 900px) { .tfc-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .tfc-footer__grid { grid-template-columns: 1fr; } }

.tfc-footer__brand img { width: 88px; height: 88px; object-fit: contain; }
.tfc-footer__brand p {
	font-family: var(--font-serif);
	font-style: italic;
	font-size: 17px;
	line-height: 1.55;
	color: rgba(255, 245, 249, 0.8);
	margin-top: 20px;
	max-width: 36ch;
}
.tfc-footer__col-title {
	font-family: var(--font-sans);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--c-gold-soft);
	margin-bottom: 16px;
}
.tfc-footer__col a {
	font-family: var(--font-sans);
	font-size: 14px;
	color: rgba(255, 245, 249, 0.7);
	text-decoration: none;
	padding: 6px 0;
	display: block;
	transition: color var(--dur-fast) var(--ease-out);
}
.tfc-footer__col a:hover { color: var(--c-gold-soft); }

.tfc-footer__social { display: flex; gap: 14px; margin-top: 20px; }
.tfc-footer__social a {
	width: 38px; height: 38px;
	border-radius: 50%;
	border: 1px solid rgba(255, 51, 144, 0.4);
	display: inline-flex; align-items: center; justify-content: center;
	color: var(--c-cream);
	padding: 0;
	transition: border-color var(--dur-base), background var(--dur-base);
}
.tfc-footer__social a:hover { border-color: var(--c-gold); background: rgba(255, 51, 144, 0.1); }
.tfc-footer__social i { width: 16px; height: 16px; }

.tfc-footer__legal {
	padding-top: 28px;
	border-top: 1px solid rgba(255, 51, 144, 0.2);
	display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap;
	font-family: var(--font-sans);
	font-size: 12.5px;
	color: rgba(255, 245, 249, 0.55);
}
.tfc-footer__legal-links { display: flex; gap: 24px; }
.tfc-footer__legal a { color: inherit; text-decoration: none; }
.tfc-footer__legal a:hover { color: var(--c-gold-soft); }

/* ============================================================
   Default WP page wrapper (legal pages, page 96, etc.)
   ============================================================ */
.tfc-page {
	padding: calc(76px + clamp(48px, 6vw, 96px)) var(--gutter) clamp(80px, 9vw, 140px);
	background: var(--c-paper);
}
.tfc-page__inner { max-width: var(--container-prose); margin: 0 auto; }
.tfc-page h1 {
	font-family: var(--font-serif);
	font-size: clamp(2rem, 4vw, 3.25rem);
	line-height: 1.12;
	color: var(--c-navy);
	font-weight: 400;
	margin: 0 0 32px;
	letter-spacing: var(--ls-tight);
	text-wrap: balance;
}
.tfc-page__content { font-size: 17px; line-height: 1.7; color: var(--c-fg); }
.tfc-page__content h2, .tfc-page__content h3 {
	font-family: var(--font-serif);
	color: var(--c-navy);
	font-weight: 500;
	margin: 2em 0 .6em;
}
.tfc-page__content h2 { font-size: 1.75rem; }
.tfc-page__content h3 { font-size: 1.375rem; }
.tfc-page__content a { color: var(--c-navy); text-decoration: underline; text-decoration-color: var(--c-gold); text-underline-offset: 3px; }
.tfc-page__content a:hover { color: var(--c-gold-deep); }
.tfc-page__content ul, .tfc-page__content ol { padding-left: 1.4em; }
.tfc-page__content li { margin: .4em 0; }

/* ============================================================
   Blog (posts page + single + archive) — light editorial dress
   ============================================================ */
.tfc-blog {
	padding: calc(76px + clamp(48px, 6vw, 96px)) var(--gutter) clamp(80px, 9vw, 140px);
	background: var(--c-paper);
}
.tfc-blog__inner { max-width: var(--container-max); margin: 0 auto; }
.tfc-blog__head { max-width: var(--container-prose); margin: 0 auto clamp(48px, 6vw, 80px); text-align: center; }
.tfc-blog__head h1 {
	font-family: var(--font-serif);
	font-size: clamp(2.25rem, 4vw, 3.5rem);
	line-height: 1.12;
	color: var(--c-navy);
	font-weight: 400;
	letter-spacing: var(--ls-tight);
	margin: 20px 0 0;
	text-wrap: balance;
}
.tfc-blog__head h1 em { color: var(--c-gold-deep); font-style: italic; }
.tfc-blog__head .tfc-section__lede { margin: 16px auto 0; }

.tfc-blog__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: clamp(20px, 2.5vw, 32px);
}
@media (max-width: 900px) { .tfc-blog__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .tfc-blog__grid { grid-template-columns: 1fr; } }

.tfc-postcard {
	background: var(--c-white);
	border-radius: 16px;
	overflow: hidden;
	box-shadow: var(--sh-2);
	display: flex; flex-direction: column;
	transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}
.tfc-postcard:hover { box-shadow: var(--sh-hover); transform: translateY(-3px); }
.tfc-postcard__thumb {
	aspect-ratio: 16 / 11;
	background: linear-gradient(155deg, #232336 0%, #1a1a2e 65%, #14141F 100%);
	overflow: hidden;
}
.tfc-postcard__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tfc-postcard__body { padding: 24px 28px 28px; display: flex; flex-direction: column; gap: 10px; }
.tfc-postcard__cat {
	font-family: var(--font-sans); font-size: 11px; letter-spacing: .18em;
	text-transform: uppercase; color: var(--c-gold-deep); font-weight: 500;
}
.tfc-postcard__title {
	font-family: var(--font-serif); font-size: 22px; line-height: 1.25; color: var(--c-navy);
	font-weight: 500; margin: 0; letter-spacing: -0.01em; text-wrap: balance;
}
.tfc-postcard__title a { color: inherit; text-decoration: none; }
.tfc-postcard__title a:hover { color: var(--c-gold-deep); }
.tfc-postcard__date { font-size: 13px; color: var(--c-fg-subtle); }

/* Blog categories index strip — appears at top of /blog/ */
.tfc-cats {
	display: flex; flex-wrap: wrap; gap: 12px;
	justify-content: center;
	margin: 0 auto clamp(40px, 5vw, 64px);
	max-width: var(--container-narrow);
}
.tfc-cats a {
	font-family: var(--font-sans); font-size: 13px; font-weight: 500;
	color: var(--c-navy);
	padding: 8px 18px;
	border-radius: 999px;
	border: 1px solid var(--c-line);
	background: var(--c-white);
	text-decoration: none;
	letter-spacing: 0.02em;
	transition: border-color var(--dur-base), background var(--dur-base), color var(--dur-base);
}
.tfc-cats a:hover { border-color: var(--c-gold); color: var(--c-gold-deep); }
.tfc-cats a.is-active { background: var(--c-navy); color: var(--c-cream); border-color: var(--c-navy); }

/* Single post */
.tfc-single { padding: calc(76px + clamp(48px, 6vw, 96px)) var(--gutter) clamp(80px, 9vw, 140px); background: var(--c-paper); }
.tfc-single__inner { max-width: var(--container-prose); margin: 0 auto; }
.tfc-single__meta { display: flex; gap: 16px; align-items: center; font-size: 13px; color: var(--c-fg-subtle); }
.tfc-single__meta a { color: var(--c-gold-deep); text-decoration: none; text-transform: uppercase; letter-spacing: .18em; font-weight: 500; }
.tfc-single h1 {
	font-family: var(--font-serif); font-size: clamp(2.25rem, 4vw, 3.5rem); line-height: 1.1;
	color: var(--c-navy); font-weight: 400; margin: 20px 0 24px; letter-spacing: var(--ls-tight); text-wrap: balance;
}
.tfc-single__hero { aspect-ratio: 16 / 9; border-radius: 24px; overflow: hidden; margin: 0 auto 48px; max-width: var(--container-narrow); }
.tfc-single__hero img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tfc-single__content { font-size: 18px; line-height: 1.75; color: var(--c-fg); }
.tfc-single__content h2 { font-family: var(--font-serif); color: var(--c-navy); font-weight: 500; font-size: 2rem; margin: 1.8em 0 .6em; letter-spacing: -0.01em; }
.tfc-single__content h3 { font-family: var(--font-serif); color: var(--c-navy); font-weight: 500; font-size: 1.5rem; margin: 1.6em 0 .5em; }
.tfc-single__content a { color: var(--c-navy); text-decoration: underline; text-decoration-color: var(--c-gold); text-underline-offset: 3px; }
.tfc-single__content a:hover { color: var(--c-gold-deep); }
.tfc-single__content blockquote {
	font-family: var(--font-serif); font-style: italic; font-size: 24px; line-height: 1.45;
	color: var(--c-navy); border-left: 2px solid var(--c-gold); padding: .5em 0 .5em 1.2em; margin: 1.5em 0;
}
.tfc-single__content img { max-width: 100%; height: auto; border-radius: 16px; margin: 1.4em 0; }

/* Cotizar anchor target */
#cotizar {
	scroll-margin-top: 96px;
	padding: var(--section-y) var(--gutter);
	background: var(--c-cream);
	text-align: center;
}
#cotizar h2 {
	font-family: var(--font-serif);
	font-size: clamp(2rem, 3.6vw, 3rem);
	line-height: 1.12;
	color: var(--c-navy);
	font-weight: 400;
	letter-spacing: var(--ls-tight);
	margin: 16px auto 24px;
	max-width: 18ch;
	text-wrap: balance;
}
#cotizar h2 em { color: var(--c-gold-deep); font-style: italic; }
#cotizar p { max-width: 52ch; margin: 0 auto 32px; color: var(--c-fg-muted); font-size: 17px; line-height: 1.65; }

/* ============================================================
   Reveal-on-scroll
   ============================================================ */
.tfc-reveal { opacity: 0; transform: translateY(12px); transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
.tfc-reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; transition: none !important; }
	.tfc-reveal { opacity: 1; transform: none; }
}

/* ============================================================
   Reseñas page — client reviews (CPT) above Facebook grid
   ============================================================ */
.tfc-resenas-clientes {
	margin: 0 auto 3rem;
	max-width: 1080px;
}
.tfc-quotes--clientes .tfc-quote-card__photo {
	width: 56px;
	height: 56px;
	border-radius: 50%;
	object-fit: cover;
	flex: none;
	display: block;
	background: var(--c-line-soft, #eee);
}
.tfc-quotes--clientes .tfc-quote-card__avatar {
	width: 56px;
	height: 56px;
}

/* ============================================================
   Reseñas page — masonry grid for Facebook embeds
   ============================================================ */
.tfc-resenas-intro {
	max-width: 720px;
	margin: 0 auto 2.5rem;
	text-align: center;
	font-size: 1.125rem;
	line-height: 1.6;
}
.tfc-resenas-grid {
	column-count: 2;
	column-gap: 1.5rem;
	margin: 0 auto;
	max-width: 1080px;
}
.tfc-resenas-card {
	break-inside: avoid;
	-webkit-column-break-inside: avoid;
	page-break-inside: avoid;
	margin: 0 0 1.5rem;
	display: block;
}
.tfc-resenas-card .fb-post,
.tfc-resenas-card .fb-post > span,
.tfc-resenas-card .fb-post iframe {
	width: 100% !important;
	max-width: 500px !important;
	display: block !important;
	margin: 0 auto;
}
.tfc-resenas-card .fb-post {
	border-radius: 8px;
	overflow: hidden;
	box-shadow: 0 2px 12px rgba(0,0,0,.06);
	background: #fff;
}
.tfc-resenas-card .fb-post iframe {
	border: 0;
}
.tfc-resenas-cta {
	text-align: center;
	margin: 3rem 0 1rem;
}
@media (max-width: 640px) { .tfc-resenas-grid { column-count: 1; } }
