/*
 * Qualitas Funds – CSS global mínimo.
 * Todo lo que theme.json puede expresar está en theme.json; aquí solo
 * ajustes de layout que el editor no ofrece.
 */

:root {
	--qf-icon-size: clamp(9rem, 12vw, 12.5rem);
	--qf-transition: 180ms ease;
}

html {
	scroll-behavior: smooth;
}

/* Sin hueco entre cabecera, contenido y pie: cada bloque de raíz es a sangre
   y lleva su propio padding. Anula el blockGap que WP aplica a .wp-site-blocks. */
.wp-site-blocks > * + *,
.wp-site-blocks > main.wp--skip-link--target,
.wp-block-post-content > .alignfull + .alignfull {
	margin-block-start: 0;
}

/* Titulares con la cursiva serif de la marca: la clase la pone el bloque
   (fontFamily gelasio + fontStyle italic), esto solo afina el ritmo. */
.has-gelasio-font-family {
	letter-spacing: -0.01em;
}

/* Cabecera */
.qf-header .wp-block-site-logo img {
	height: auto;
}

.qf-header__cta .wp-block-button__link {
	padding-block: 0.7em;
}

/* En móvil, junto al selector ES|EN, el botón "Inicia Sesión"/"Log in" no
   cabe cómodo: se reduce a un círculo con icono de usuario. El texto se
   mantiene en el DOM (accesible para lectores de pantalla), solo se oculta
   visualmente con font-size: 0. */
@media (max-width: 599px) {
	/* Logo, ES | EN | PT, acceso y hamburguesa en una sola fila. */
	.qf-header .qf-header__actions {
		gap: 0.75rem !important;
	}

	.qf-header .wp-block-site-logo img {
		width: 104px !important;
	}

	@media (max-width: 379px) {
		.qf-header .qf-header__actions {
			gap: 0.5rem !important;
		}

		.qf-header .wp-block-site-logo img {
			width: 84px !important;
		}
	}

	.qf-header__cta .wp-block-button__link {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		box-sizing: border-box;
		flex-shrink: 0;
		width: 2.5rem;
		height: 2.5rem;
		padding: 0;
		border-radius: 50%;
		overflow: hidden;
		white-space: nowrap;
		font-size: 0 !important;
	}

	.qf-header__cta .wp-block-button__link::before {
		content: "";
		display: block;
		width: 1.1rem;
		height: 1.1rem;
		background-color: currentColor;
		-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 12c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm0 2c-3.33 0-10 1.67-10 5v3h20v-3c0-3.33-6.67-5-10-5z'/%3E%3C/svg%3E") center / contain no-repeat;
		mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 12c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm0 2c-3.33 0-10 1.67-10 5v3h20v-3c0-3.33-6.67-5-10-5z'/%3E%3C/svg%3E") center / contain no-repeat;
	}
}

/* Pie */
.qf-footer .wp-block-social-links .wp-social-link {
	transition: opacity var(--qf-transition);
}

.qf-footer .wp-block-social-links .wp-social-link:hover {
	opacity: 0.7;
}

/* Selector de idioma (Polylang) en la cabecera: ES | EN, el activo en acento.
   Desde Polylang 3.9 el bloque es un <div class="pll-switcher"> (width: 100%)
   con la lista dentro, en vertical: se fuerza fila y ancho de su contenido. */
.qf-header .qf-header__lang {
	width: auto;
}

.qf-header .qf-header__lang,
.qf-header .qf-header__lang ul {
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	display: flex;
	flex-direction: row;
	align-items: center;
	list-style: none;
	margin: 0;
	padding: 0;
}

/* Polylang 3.9 pone los enlaces en display: flex; el «|» va en la misma fila. */
.qf-header .qf-header__lang li {
	display: flex;
	align-items: center;
}

.qf-header .qf-header__lang li + li::before {
	content: "|";
	margin: 0 0.6em;
	opacity: 0.35;
}

.qf-header .qf-header__lang a {
	padding: 0;
	color: inherit;
	text-decoration: none;
	opacity: 0.55;
	transition: opacity var(--qf-transition), color var(--qf-transition);
}

.qf-header .qf-header__lang a:hover,
.qf-header .qf-header__lang a:focus-visible {
	opacity: 1;
}

.qf-header .qf-header__lang .current-lang a {
	color: var(--wp--preset--color--accent);
	opacity: 1;
}

/* ---------------------------------------------------------------------------
 * Hero (patrón qualitas-funds/hero)
 * ------------------------------------------------------------------------- */

/* Cabecera y hero con el mismo negro (#050404), sin línea de separación. */
.qf-header,
.qf-hero {
	background-color: #050404 !important;
	border: 0 !important;
	box-shadow: none !important;
}

/* Escritorio: águila a todo el ancho y pegada arriba, casi bajo la cabecera;
   "100% auto" mantiene el mismo encuadre en cualquier ancho (con "auto 100%"
   el recorte crecía en ~1000-1300px y la tarjeta tapaba el águila). El texto
   y el formulario suben (antes padding-top de 240px en el patrón). */
.qf-hero.qf-bg-right {
	position: relative;
	background-size: 100% auto !important;
	background-position: center top !important;
	padding-top: clamp(4rem, 9vw, 10rem) !important;
}

.qf-hero__note {
	opacity: 0.9;
}

/* Tablet y móvil: el águila cubre todo el fondo de la sección, con una capa
   oscura para que el texto y el formulario se lean. */
@media (max-width: 1024px) {
	.qf-hero.qf-bg-right {
		background-size: cover !important;
		background-position: 70% top !important;
	}

	.qf-hero.qf-bg-right::before {
		content: "";
		position: absolute;
		inset: 0;
		background: rgba(5, 4, 4, 0.45);
		pointer-events: none;
	}

	.qf-hero.qf-bg-right > * {
		position: relative;
		z-index: 1;
	}
}

/* Tablet (600-1024px): como en escritorio, textos a la izquierda y
   formulario a la derecha, con tipografía más contenida. */
@media (min-width: 600px) and (max-width: 1024px) {
	.qf-hero .wp-block-columns {
		flex-wrap: nowrap !important;
		gap: var(--wp--preset--spacing--40) !important;
	}

	.qf-hero .wp-block-columns > .wp-block-column:first-child {
		flex: 1 1 54% !important;
	}

	.qf-hero .wp-block-columns > .wp-block-column:last-child {
		flex: 1 1 46% !important;
	}

	.qf-hero h1 {
		font-size: clamp(1.75rem, 4.2vw, 2.75rem) !important;
	}

	.qf-hero .has-large-font-size {
		font-size: 1rem !important;
	}

	.qf-hero .qf-hero__note {
		font-size: 0.875rem !important;
	}
}

/* Móvil: primero texto y después formulario. El titular baja de tamaño para
   que "Invertimos con criterio" quepa en una línea, y la nota de CNMV se
   parte en dos líneas limpias en lugar de cortarse a mitad de frase. */
@media (max-width: 599px) {
	.qf-hero.qf-bg-right {
		background-position: 72% top !important;
	}

	.qf-hero.qf-bg-right::before {
		background: rgba(5, 4, 4, 0.55);
	}

	.qf-hero h1 {
		font-size: clamp(1.375rem, 6vw, 2.5rem) !important;
	}

	.qf-hero .qf-hero__note {
		font-size: 0.875rem !important;
	}

	.qf-hero__sep {
		display: block;
		height: 0;
		overflow: hidden;
	}
}

/* ---------------------------------------------------------------------------
 * Cifras (patrón qualitas-funds/stats)
 * ------------------------------------------------------------------------- */
.qf-stats .wp-block-heading {
	white-space: nowrap;
}

@media (max-width: 1280px) {
	.qf-stats .wp-block-heading {
		font-size: clamp(1.5rem, 2.6vw, 2.25rem) !important;
	}

	.qf-stats p {
		font-size: 0.9375rem;
	}
}

/* Tablet: rejilla de 3 columnas (2 filas) para que no quede tan vertical;
   por debajo de 700px no caben bien y pasa a 2 columnas. */
@media (min-width: 600px) and (max-width: 1024px) {
	.wp-block-columns.qf-stats {
		display: grid !important;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: var(--wp--preset--spacing--20) !important;
	}

	.wp-block-columns.qf-stats > .wp-block-column {
		flex-basis: auto !important;
		margin: 0 !important;
	}
}

@media (min-width: 600px) and (max-width: 699px) {
	.wp-block-columns.qf-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ---------------------------------------------------------------------------
 * Reconocimientos (patrón qualitas-funds/timeline)
 * ------------------------------------------------------------------------- */

/* Móvil: el texto "Reconocimientos" en su línea y debajo los premios en una sola fila. */
@media (max-width: 599px) {
	.qf-awards {
		justify-content: flex-start !important;
		row-gap: var(--wp--preset--spacing--20) !important;
		column-gap: var(--wp--preset--spacing--20) !important;
	}

	.qf-awards > p {
		flex-basis: 100%;
	}

	.qf-awards > .wp-block-group {
		flex: 1 1 0;
		min-width: 0;
		gap: 0.35rem !important;
	}

	.qf-awards .wp-block-image:first-child img {
		width: 36px !important;
	}

	.qf-awards .wp-block-image:last-child img {
		width: 100% !important;
		max-width: 110px;
		height: auto;
	}
}

/* ---------------------------------------------------------------------------
 * La plataforma: en tablet se mantienen las tarjetas a 2 columnas.
 * ------------------------------------------------------------------------- */
@media (min-width: 600px) and (max-width: 781px) {
	#plataforma .wp-block-columns {
		flex-wrap: nowrap !important;
	}

	#plataforma .wp-block-columns > .wp-block-column {
		flex-basis: 0 !important;
		flex-grow: 1;
	}
}

/* ---------------------------------------------------------------------------
 * El portal del inversor: tipografía más fina en todas las resoluciones.
 * ------------------------------------------------------------------------- */
.wp-block-media-text:has(.is-style-qf-bullets-accent) .wp-block-heading {
	font-size: clamp(1.875rem, 3.2vw, 3rem) !important;
}

.wp-block-media-text .wp-block-list.is-style-qf-bullets-accent {
	font-size: clamp(1.0625rem, 1.6vw, 1.375rem);
}

.wp-block-media-text .wp-block-list.is-style-qf-bullets-accent li::before {
	width: 0.7rem;
	height: 0.7rem;
	top: 0.45em;
}

.wp-block-media-text .wp-block-list.is-style-qf-bullets-accent li {
	padding-left: 1.75rem;
}

/* ---------------------------------------------------------------------------
 * Pie: enlaces de "Descubre más sobre nosotros" a 10px y, de 781px hacia
 * abajo, esa columna a la derecha del logo (redes debajo, a lo ancho).
 * ------------------------------------------------------------------------- */
.qf-footer .qf-menu-footer {
	font-size: 10px;
}

@media (max-width: 781px) {
	.qf-footer > .wp-block-columns {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40) !important;
	}

	.qf-footer > .wp-block-columns > .wp-block-column {
		flex-basis: auto !important;
		margin: 0 !important;
	}

	.qf-footer > .wp-block-columns > .wp-block-column:last-child {
		grid-column: 1 / -1;
	}

	.qf-footer .wp-block-site-logo img {
		max-width: 100%;
	}
}

/* Imágenes decorativas de fondo en grupos: en móvil el motivo no debe tapar el texto. */
@media (max-width: 781px) {
	.qf-bg-right:not(.qf-hero) {
		background-image: none !important;
	}
}

/* Accesibilidad: foco visible coherente con el acento. */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
	outline: 2px solid var(--wp--preset--color--accent);
	outline-offset: 2px;
}

/* ---------------------------------------------------------------------------
 * Animación al aparecer (ajuste de bloque; inc/reveal.php + assets/js/reveal.js).
 * Solo actúa con JS activo (html.qf-js) y sin "reducir movimiento".
 * ------------------------------------------------------------------------- */
@media (prefers-reduced-motion: no-preference) {
	.qf-js .qf-reveal[data-qf-reveal="fade-up"],
	.qf-js .qf-reveal[data-qf-reveal="fade"],
	.qf-js .qf-reveal--stagger > .qf-reveal__child {
		opacity: 0;
		transform: translateY(28px);
		transition:
			opacity 0.7s cubic-bezier(0.22, 0.61, 0.36, 1) var(--qf-delay, 0ms),
			transform 0.7s cubic-bezier(0.22, 0.61, 0.36, 1) var(--qf-delay, 0ms);
		will-change: opacity, transform;
	}

	.qf-js .qf-reveal[data-qf-reveal="fade"] {
		transform: none;
	}

	.qf-js .qf-reveal.is-visible,
	.qf-js .qf-reveal--stagger.is-visible > .qf-reveal__child {
		opacity: 1;
		transform: none;
	}

	/* Al salir, sin retardo escalonado. */
	.qf-js .qf-reveal:not(.is-visible),
	.qf-js .qf-reveal--stagger:not(.is-visible) > .qf-reveal__child {
		transition-delay: 0ms;
	}

	/* Gráfico de evolución: las barras crecen desde la base, una tras otra. */
	.qf-js .qf-timeline.qf-reveal .qf-timeline__bar {
		transform: scaleY(0);
		transform-origin: bottom;
		transition: transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1) calc(var(--qf-bar-i, 0) * 45ms + 150ms);
	}

	.qf-js .qf-timeline.qf-reveal.is-visible .qf-timeline__bar {
		transform: scaleY(1);
	}

	.qf-js .qf-timeline.qf-reveal .qf-timeline__milestone {
		opacity: 0;
		transition: opacity 0.5s ease 0.5s;
	}

	.qf-js .qf-timeline.qf-reveal.is-visible .qf-timeline__milestone {
		opacity: 1;
	}
}

/* Indicador en el editor: el bloque tiene animación configurada. */
.editor-styles-wrapper .qf-has-reveal {
	outline: 1px dashed rgba(228, 100, 71, 0.45);
	outline-offset: 2px;
}

/* ---------------------------------------------------------------------------
 * Plantilla "Página legal" (templates/page-legal.html)
 * ------------------------------------------------------------------------- */
.qf-legal__hero {
	position: relative;
	overflow: hidden;
}

/* Marca de agua tipográfica: una gran "§" serif en el fondo de la cabecera. */
.qf-legal__hero::after {
	content: "§";
	position: absolute;
	right: 4vw;
	bottom: -0.35em;
	font-family: var(--wp--preset--font-family--gelasio);
	font-style: italic;
	font-size: clamp(14rem, 32vw, 30rem);
	line-height: 1;
	color: var(--wp--preset--color--accent);
	opacity: 0.12;
	pointer-events: none;
}

.qf-legal__hero .wp-block-post-title {
	max-width: 14ch;
	margin-top: var(--wp--preset--spacing--20);
}

.qf-legal__meta {
	color: var(--wp--preset--color--gray-mid);
}

.qf-legal__meta p,
.qf-legal__meta time {
	margin: 0;
}

.qf-legal__meta .wp-block-post-date {
	color: var(--wp--preset--color--white);
}

/* Contenido: titulares numerados en serif de acento, ritmo generoso. */
.qf-legal .entry-content {
	counter-reset: qf-legal;
	font-size: var(--wp--preset--font-size--medium);
}

.qf-legal .entry-content > h2 {
	counter-increment: qf-legal;
	position: relative;
	margin-top: var(--wp--preset--spacing--60);
	padding-top: var(--wp--preset--spacing--20);
	border-top: 1px solid var(--wp--preset--color--gray);
	font-size: var(--wp--preset--font-size--x-large);
	scroll-margin-top: 6rem;
}

.qf-legal .entry-content > h2::before {
	content: counter(qf-legal, decimal-leading-zero);
	display: block;
	margin-bottom: 0.25em;
	font-family: var(--wp--preset--font-family--gelasio);
	font-style: italic;
	font-weight: 400;
	font-size: 2.75rem;
	line-height: 1;
	color: var(--wp--preset--color--accent);
}

.qf-legal .entry-content > h3 {
	margin-top: var(--wp--preset--spacing--40);
	font-size: var(--wp--preset--font-size--large);
	font-weight: 600;
}

.qf-legal .entry-content > p,
.qf-legal .entry-content > ul,
.qf-legal .entry-content > ol {
	max-width: 70ch;
}

.qf-legal .entry-content a:not(.wp-block-button__link) {
	color: var(--wp--preset--color--accent);
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.qf-legal .entry-content ul li::marker {
	color: var(--wp--preset--color--accent);
}

/* Índice del documento (patrón): caja con borde y enlaces numerados. */
.qf-legal-index {
	border: 1px solid var(--wp--preset--color--black);
	border-left: 4px solid var(--wp--preset--color--accent);
	border-radius: 4px;
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--white);
}

.qf-legal-index ol {
	columns: 2;
	column-gap: var(--wp--preset--spacing--40);
	margin: 0;
	padding-left: 1.5em;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.qf-legal-index li {
	break-inside: avoid;
	margin-bottom: 0.4em;
}

.qf-legal-index li::marker {
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--gelasio);
	font-style: italic;
}

.qf-legal-index a {
	color: var(--wp--preset--color--black);
	text-decoration: none;
}

.qf-legal-index a:hover {
	color: var(--wp--preset--color--accent);
}

/* Tabla de cookies y datos: líneas finas, cabecera en mayúsculas. */
.qf-legal .entry-content .wp-block-table {
	font-size: var(--wp--preset--font-size--small);
}

.qf-legal .entry-content .wp-block-table table {
	border-collapse: collapse;
}

.qf-legal .entry-content .wp-block-table th {
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-size: 0.75rem;
	background: var(--wp--preset--color--black);
	color: var(--wp--preset--color--white);
	border-color: var(--wp--preset--color--black);
}

.qf-legal .entry-content .wp-block-table td {
	border-color: var(--wp--preset--color--gray);
	vertical-align: top;
}

/* Caja destacada (datos del responsable, resumen). */
.qf-legal-callout {
	border-left: 4px solid var(--wp--preset--color--accent);
	background: var(--wp--preset--color--white);
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
	border-radius: 0 4px 4px 0;
}

@media (max-width: 599px) {
	.qf-legal-index ol {
		columns: 1;
	}

	.qf-legal .entry-content > h2::before {
		font-size: 2rem;
	}
}

/* Sin fecha de modificación (página nunca editada), la etiqueta no se muestra. */
.qf-legal__meta:not(:has(.wp-block-post-date)) {
	display: none;
}

/* ===========================================================================
 * Páginas internas (patrones page-fondos, page-como-empezar,
 * page-como-invertimos, page-donde-invertimos).
 * ======================================================================== */

/* Antetítulo en mayúsculas ("VER FONDOS", "CÓMO EMPEZAR"…). */
.qf-eyebrow {
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 500;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	margin-block: 0;
}

/* Hero de página interna: foto de fondo negro anclada a la derecha (alto
   mínimo según su proporción, ver qf_page_hero()). */
.qf-page-hero {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.qf-page-hero .wp-block-buttons .wp-block-button__link {
	padding-block: 0.55em;
}

@media (max-width: 781px) {
	.qf-page-hero {
		background-size: cover !important;
		background-position: 75% 50% !important;
	}

	.qf-page-hero::before {
		content: "";
		position: absolute;
		inset: 0;
		background: rgba(5, 4, 4, 0.6);
		pointer-events: none;
	}

	.qf-page-hero > * {
		position: relative;
		z-index: 1;
	}
}

/* Botón con flecha a la derecha ("Ver Fondo →", "Ver casos reales →"). */
.wp-block-button.qf-btn-arrow .wp-block-button__link::after {
	content: "→";
	margin-left: 1.5em;
}

/* Cursiva serif dentro de un párrafo ("Solo ganamos cuando…"). */
.qf-serif-em em {
	font-family: var(--wp--preset--font-family--gelasio);
	font-style: italic;
	font-weight: 700;
}

/* ---------------------------------------------------------------------------
 * Pestañas de las cuatro estrategias (assets/js/tabs.js).
 * ------------------------------------------------------------------------- */
.qf-tabs__panel[hidden] {
	display: none !important;
}

.qf-tabs__media,
.qf-tabs__media img {
	width: 100%;
	margin: 0;
}

.qf-tabs__card p {
	margin-block: 0;
}

.qf-tabs__list {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}

.qf-tabs__tab {
	margin-block: 0 0.4em;
	padding-bottom: 0.25em;
	font-size: clamp(1.75rem, 3vw, 3.25rem);
	font-weight: 700;
	line-height: 1.2;
	color: var(--wp--preset--color--gray-mid);
	cursor: pointer;
	transition: color var(--qf-transition);
}

.qf-tabs__tab:hover,
.qf-tabs__tab.is-active {
	color: var(--wp--preset--color--black);
}

.qf-tabs__tab.is-active {
	align-self: stretch;
	border-bottom: 2px solid var(--wp--preset--color--black);
}

@media (max-width: 781px) {
	/* Móvil: primero los nombres (pestañas) y debajo la ficha. */
	.qf-tabs {
		flex-direction: column-reverse;
	}
}

/* ---------------------------------------------------------------------------
 * Lista numerada en círculo ("Construye tu cartera").
 * ------------------------------------------------------------------------- */
.wp-block-list.qf-numbered {
	list-style: none;
	padding-left: 0;
	counter-reset: qf-step;
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.3;
}

.wp-block-list.qf-numbered li {
	position: relative;
	counter-increment: qf-step;
	padding-left: 3.75rem;
	margin-bottom: 1.1em;
}

.wp-block-list.qf-numbered li::before {
	content: counter(qf-step);
	position: absolute;
	left: 0;
	top: 50%;
	translate: 0 -50%;
	width: 2.25rem;
	height: 2.25rem;
	border: 1px solid var(--wp--preset--color--accent);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0.625rem;
	font-weight: 600;
}

.wp-block-list.qf-numbered strong {
	color: var(--wp--preset--color--accent);
	font-weight: 700;
}

/* ---------------------------------------------------------------------------
 * Caja gris con globo y viñetas con título + detalle (diversificación).
 * ------------------------------------------------------------------------- */
.qf-info-box {
	background: #efefeb;
}

.qf-info-box p {
	margin: 0;
}

.qf-info-box .wp-block-image {
	flex: 0 0 auto;
	margin: 0;
}

.wp-block-list.is-style-qf-bullets-accent.qf-bullets-detail {
	font-size: var(--wp--preset--font-size--medium);
	line-height: 1.3;
}

.wp-block-list.qf-bullets-detail li {
	margin-bottom: 1em;
}

.wp-block-list.qf-bullets-detail li::before {
	width: 0.7rem;
	height: 0.7rem;
	top: 0.5em;
}

.wp-block-list.qf-bullets-detail strong {
	font-size: var(--wp--preset--font-size--large);
}

/* ---------------------------------------------------------------------------
 * Pasos con icono o número, punto y línea con flecha (.qf-process).
 * El primer hijo de cada paso (icono o número) marca la posición del punto.
 * ------------------------------------------------------------------------- */
.qf-process {
	--qf-step: clamp(3.5rem, 5.5vw, 6.75rem);
	--qf-step-gap: var(--wp--preset--spacing--20);
}

.qf-process--numbers {
	--qf-step: clamp(2.75rem, 4.2vw, 5.25rem);
}

.qf-track {
	--qf-step: clamp(4rem, 5.5vw, 6.75rem);
}

.qf-process__icon {
	width: var(--qf-step, 5.5rem);
	height: var(--qf-step, 5.5rem);
	flex: 0 0 auto;
	margin: 0;
	box-sizing: border-box;
	padding: calc(var(--qf-step, 5.5rem) * 0.24);
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
}

.qf-process__icon img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.qf-track p {
	margin: 0;
	line-height: 1.3;
}

.qf-process__num {
	width: var(--qf-step);
	height: var(--qf-step);
	margin: 0;
	box-sizing: border-box;
	border: 1px solid var(--wp--preset--color--accent);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.qf-process > .wp-block-column {
	position: relative;
}

.qf-process > .wp-block-column > :first-child {
	position: relative;
	margin-bottom: 2.75rem;
}

.qf-process > .wp-block-column > :not(:first-child) {
	margin-top: 0.4rem;
	padding-left: calc(var(--qf-step) / 2 - 4px);
}

.qf-process > .wp-block-column > :first-child::after {
	content: "";
	position: absolute;
	left: calc(50% - 4px);
	top: calc(100% + 1.25rem - 4px);
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
}

/* Línea desde el punto hasta el siguiente paso, con punta de flecha. */
.qf-process > .wp-block-column:not(:last-child)::before {
	content: "";
	position: absolute;
	left: calc(var(--qf-step) / 2 + 6px);
	right: calc(var(--qf-step-gap) * -1 + 10px);
	top: calc(var(--qf-step) + 1.25rem - 1px);
	height: 1px;
	background: var(--wp--preset--color--accent);
}

.qf-process > .wp-block-column:not(:last-child)::after {
	content: "";
	position: absolute;
	right: calc(var(--qf-step-gap) * -1 + 6px);
	top: calc(var(--qf-step) + 1.25rem - 5px);
	border: 4px solid transparent;
	border-left: 8px solid var(--wp--preset--color--accent);
	border-right: 0;
}

.qf-process h3 {
	margin-bottom: 0.5rem;
	line-height: 1.25;
}

.qf-process .has-small-font-size {
	font-size: 0.75rem !important;
	line-height: 1.35;
}

@media (max-width: 781px) {
	/* Móvil: pasos en vertical, icono a la izquierda y sin línea. */
	.qf-process > .wp-block-column {
		display: grid;
		grid-template-columns: var(--qf-step) 1fr;
		column-gap: var(--wp--preset--spacing--20);
		align-items: center;
	}

	.qf-process > .wp-block-column > :first-child {
		grid-row: span 2;
		margin-bottom: 0;
	}

	.qf-process > .wp-block-column > :not(:first-child) {
		padding-left: 0;
		margin: 0;
	}

	.qf-process > .wp-block-column::before,
	.qf-process > .wp-block-column::after,
	.qf-process > .wp-block-column > :first-child::after {
		display: none;
	}
}

/* ---------------------------------------------------------------------------
 * Preguntas frecuentes (core/details).
 * ------------------------------------------------------------------------- */
.qf-faq .wp-block-details {
	background: #5d5d5d;
	color: var(--wp--preset--color--white);
	padding: 0;
}

.qf-faq .wp-block-details summary {
	list-style: none;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	padding: 2rem 3.5rem 2rem 2.25rem;
	font-size: var(--wp--preset--font-size--small);
	cursor: pointer;
}

.qf-faq .wp-block-details summary::-webkit-details-marker {
	display: none;
}

.qf-faq .wp-block-details summary::after {
	content: "→";
	opacity: 0.8;
	transition: transform var(--qf-transition);
}

.qf-faq .wp-block-details[open] summary::after {
	transform: rotate(90deg);
}

.qf-faq .wp-block-details > :not(summary) {
	margin: 0;
	padding: 0 2.25rem 2rem;
	font-size: var(--wp--preset--font-size--small);
}

/* ---------------------------------------------------------------------------
 * Tarjetas apiladas 001 / 002 / 003 (universo de inversión).
 * Animación al hacer scroll solo con CSS: cada tarjeta es sticky con un tope
 * un poco más bajo que la anterior, así la siguiente sube, se queda encima y
 * de las de detrás solo asoma la pestaña con su número (como en el diseño).
 * El margen entre tarjetas es el recorrido de scroll de cada una.
 * ------------------------------------------------------------------------- */
.qf-stack {
	--qf-stack-top: clamp(4rem, 12vh, 8rem);
	--qf-stack-tab: 2.4rem;
}

.qf-stack__card {
	position: sticky;
	box-sizing: border-box;
	margin-inline: auto;
	padding: 0.9rem clamp(1.5rem, 4vw, 3.5rem) 2rem;
	border-radius: 24px;
	color: var(--wp--preset--color--white);
	box-shadow: 0 -10px 30px rgba(0, 0, 0, 0.35);
	container-type: inline-size;
}

.qf-stack__card p {
	margin: 0;
}

.qf-stack__card + .qf-stack__card {
	margin-top: 35vh !important;
}

.qf-stack__card--1 {
	top: var(--qf-stack-top);
	width: 88%;
	background: #2f2f2f;
}

.qf-stack__card--2 {
	top: calc(var(--qf-stack-top) + var(--qf-stack-tab));
	width: 94%;
	background: #7a7a7a;
}

.qf-stack__card--3 {
	top: calc(var(--qf-stack-top) + var(--qf-stack-tab) * 2);
	width: 100%;
}

.qf-stack__card .qf-stack__pre {
	margin-top: 1.25rem;
	padding-left: 0.3em;
}

.qf-stack__big {
	/* "oportunidades" ocupa ~8,5em: se escala al ancho de la tarjeta. */
	font-size: min(10.5cqi, 8rem);
	font-weight: 700;
	line-height: 0.95;
	letter-spacing: -0.01em;
}

/* ---------------------------------------------------------------------------
 * Qualitas Insight: tres columnas con separador de acento.
 * ------------------------------------------------------------------------- */
.qf-insight__cols h3 {
	margin: 0;
}

@media (min-width: 782px) {
	.qf-insight__cols > .wp-block-column + .wp-block-column {
		border-left: 3px solid var(--wp--preset--color--accent);
		padding-left: var(--wp--preset--spacing--30);
	}
}

.qf-team h3 {
	margin-top: 0.75rem;
}

.qf-footnote {
	font-size: 0.625rem;
	line-height: 1.5;
	opacity: 0.85;
}

/* ---------------------------------------------------------------------------
 * ¿Qué es el Private Equity? (imagen a sangre a la izquierda).
 * ------------------------------------------------------------------------- */
.qf-media-fill {
	min-height: 440px;
}

.qf-media-fill .wp-block-media-text__media {
	align-self: stretch;
	height: 100%;
}

.qf-media-fill .wp-block-media-text__media img {
	width: 100%;
	height: 100%;
	min-height: 300px;
	object-fit: cover;
}

.qf-media-fill .wp-block-media-text__content {
	padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--60);
	max-width: 760px;
}

/* ---------------------------------------------------------------------------
 * Barras mercados públicos vs. privados.
 * ------------------------------------------------------------------------- */
.qf-bars {
	--qf-bar: clamp(5rem, 9vw, 9rem);
}

.qf-bars__plot {
	position: relative;
	gap: 2.5rem !important;
	padding-right: 2.5rem;
	margin-left: 2.5rem;
	border-bottom: 2px solid var(--wp--preset--color--accent);
}

.qf-bars__plot::after {
	content: "";
	position: absolute;
	right: -2px;
	bottom: -7px;
	border: 6px solid transparent;
	border-left: 11px solid var(--wp--preset--color--accent);
	border-right: 0;
}

.qf-bars__bar {
	width: var(--qf-bar);
	flex: 0 0 auto;
}

.qf-bars__labels {
	gap: 2.5rem !important;
	padding-right: 2.5rem;
	margin-top: 0.75rem !important;
}

.qf-bars__labels p {
	margin: 0;
}

.qf-bars__axis {
	margin-right: auto !important;
	color: var(--wp--preset--color--accent);
	font-weight: 700;
}

.qf-bars__label {
	width: var(--qf-bar);
	text-align: center;
	text-transform: uppercase;
	font-size: 0.75rem;
	line-height: 1.25;
}

/* Cifras grandes en acento (99% / >60%). */
.qf-figure {
	margin-bottom: 0;
	color: var(--wp--preset--color--accent);
	font-size: clamp(2.5rem, 4vw, 3.5rem);
	font-weight: 700;
	line-height: 1.1;
}

.qf-figure + p {
	margin-top: 0.25rem;
}

/* Checks en línea sobre fondo claro/negro, repartidos a lo ancho. */
.wp-block-list.is-style-qf-checklist-inline.qf-checklist-light li::before {
	background-image: url("../images/icons/check-circle.svg");
}

.wp-block-list.is-style-qf-checklist-inline.qf-checklist-spread {
	justify-content: space-between;
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 300;
	line-height: 1.2;
}

.wp-block-list.is-style-qf-checklist-inline.qf-checklist-spread li {
	align-items: flex-start;
	padding-left: 3.25rem;
}

.wp-block-list.is-style-qf-checklist-inline.qf-checklist-spread li::before {
	top: 0.1em;
	translate: none;
	width: 2.25rem;
	height: 2.25rem;
}

/* Columna estrecha (¿Qué significa invertir a largo plazo?): rejilla alineada
   en vez de flex con huecos, para que ningún elemento quede suelto. */
.wp-block-list.is-style-qf-checklist-inline.qf-checklist-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr));
	gap: var(--wp--preset--spacing--30);
}

@media (max-width: 599px) {
	.wp-block-list.is-style-qf-checklist-inline.qf-checklist-spread {
		font-size: var(--wp--preset--font-size--large);
	}
}
