/*
Theme Name: Daniela Child (Shoptimizer)
Theme URI: https://danielamontespsic.com/
Description: Tema hijo para mejoras progresivas (UX, conversión, 
performance) sin romper el tema padre.
Author: Cristina Troconis
Template: shoptimizer
Version: 1.0.0
Text Domain: daniela-child
*/

/* ==========================================================================
   Variables
   ========================================================================== */

:root {
	/* ======================================================================
	   Edicion rapida cliente (valores nombrados, manuales)
	   ====================================================================== */
	--dm-brand-primary: #ad8fb7;
	--dm-brand-primary-dark: #7c6b8e;
	--dm-brand-accent: #56b6ae;
	--dm-brand-accent-dark: #4fa39c;
	--dm-brand-surface-soft: #e7dbc5;
	--dm-brand-text: #2d2d2d;
	--dm-brand-text-muted: #6b6b6b;
	--dm-brand-bg: #fdfdfd00;
	--dm-brand-bg-card: #ffffff;
	--dm-brand-border: #fdfdfd00;
	/* Tipografias nombradas (manuales)
	   Roles:
	   - heading = titulos/display
	   - body = lectura, inputs, labels, selects, textarea
	   - button = botones y CTAs */
	--dm-brand-font-heading-family: 'Cormorant Garamond', serif;
	--dm-brand-font-heading-weight: 700;
	--dm-brand-font-heading-line-height: 1.2;
	--dm-brand-font-heading-letter-spacing: 0;
	--dm-brand-font-heading-compact-line-height: 1.25;
	--dm-brand-font-heading-compact-letter-spacing: 0.012em;
	--dm-brand-font-body-family: 'DM Sans', sans-serif;
	--dm-brand-font-body-weight: 400;
	--dm-brand-font-body-line-height: 1.6;
	--dm-brand-font-button-family: 'DM Sans', sans-serif;
	--dm-brand-font-button-weight: 600;

	/* Sistema base del child (por defecto usa valores nombrados) */
	--dm-color-primary: var(--dm-brand-primary);
	--dm-color-primary-dark: var(--dm-brand-primary-dark);
	--dm-color-accent: var(--dm-brand-accent);
	--dm-color-accent-dark: var(--dm-brand-accent-dark);
	--dm-color-surface-soft: var(--dm-brand-surface-soft);
	--dm-color-text: var(--dm-brand-text);
	--dm-color-text-muted: var(--dm-brand-text-muted);
	--dm-color-bg: var(--dm-brand-bg);
	--dm-color-bg-card: var(--dm-brand-bg-card);
	--dm-color-border: var(--dm-brand-border);
	--dm-color-on-dark: #ffffff;
	--dm-color-error: #c97f72;
	--dm-color-primary-soft: rgba(124, 107, 142, 0.06);
	--dm-color-primary-soft-strong: rgba(124, 107, 142, 0.12);
	--dm-color-primary-soft-border: rgba(124, 107, 142, 0.18);
	--dm-color-accent-soft: rgba(86, 182, 174, 0.12);
	--dm-color-accent-soft-border: rgba(86, 182, 174, 0.28);
	--dm-color-success-soft: #e5f5e0;
	--dm-color-success: #2e7d32;
	--dm-overlay-scrim: rgba(0, 0, 0, 0.45);
	--dm-elevation-drawer: -4px 0 24px rgba(0, 0, 0, 0.10);
	--dm-elevation-popup: 0 8px 40px rgba(0, 0, 0, 0.18);
	--dm-radius: 8px;
	--dm-shadow: 0 2px 8px rgba(0, 0, 0, .07);
	--dm-transition: 0.2s ease;
	--dm-font-sans: var(--dm-brand-font-body-family);

	/* Tipografias activas del child */
	--dm-font-heading-family: var(--dm-brand-font-heading-family);
	--dm-font-heading-weight: var(--dm-brand-font-heading-weight);
	--dm-font-heading-line-height: var(--dm-brand-font-heading-line-height);
	--dm-font-heading-letter-spacing: var(--dm-brand-font-heading-letter-spacing);
	--dm-font-heading-compact-line-height: var(--dm-brand-font-heading-compact-line-height);
	--dm-font-heading-compact-letter-spacing: var(--dm-brand-font-heading-compact-letter-spacing);
	--dm-font-body-family: var(--dm-brand-font-body-family);
	--dm-font-body-weight: var(--dm-brand-font-body-weight);
	--dm-font-body-line-height: var(--dm-brand-font-body-line-height);
	--dm-font-button-family: var(--dm-brand-font-button-family);
	--dm-font-button-weight: var(--dm-brand-font-button-weight);
	--dm-text-size-base: 1rem;
	--dm-text-line-height-base: var(--dm-font-body-line-height);
	--dm-text-color-base: var(--dm-color-text);
	--dm-form-font-family: var(--dm-font-body-family);
	--dm-form-font-size: var(--dm-text-size-base);
	--dm-form-line-height: var(--dm-text-line-height-base);
	--dm-form-text-color: var(--dm-text-color-base);
	--dm-header-actions-gap: 0.75rem;
	--dm-header-actions-offset-inline: 0.5rem;
	--dm-header-login-pad-y: 0.45rem;
	--dm-header-login-pad-x: 1rem;

	/* Botones de marca */
	--dm-btn-radius: var(--dm-radius);
	--dm-btn-padding-y: 0.6rem;
	--dm-btn-padding-x: 1.2rem;
	--dm-btn-font-size: 0.875rem;
	--dm-btn-border-width: 1.5px;
	--dm-btn-hover-lift: -1px;
	--dm-btn-primary-bg: var(--dm-color-primary);
	--dm-btn-primary-bg-hover: var(--dm-color-primary-dark);
	--dm-btn-secondary-bg: var(--dm-color-accent);
	--dm-btn-secondary-bg-hover: var(--dm-color-accent-dark);
	--dm-btn-ghost-text: var(--dm-color-primary);
	--dm-btn-ghost-border: var(--dm-color-primary);
	--dm-btn-ghost-bg-hover: var(--dm-color-primary);

	/* Cards catálogo (recursos / escuela / servicios) */
	--dm-card-thumb-ratio: 16 / 9;
	--dm-card-thumb-bg: rgba(0, 0, 0, .06);
	--dm-card-min-height: 460px;
	--dm-card-transition: 0.35s ease;
	--dm-card-hover-shadow: 0 18px 40px rgba(0, 0, 0, .08);
	--dm-card-hover-lift: translateY(-6px);

	/* Home - Necesitas */
	--dm-necesitas-pad-y: 72px;
	--dm-necesitas-gap: 48px;
	--dm-necesitas-min-height: 420px;
	--dm-necesitas-radius: 16px;
	--dm-necesitas-kicker-tracking: 0.12em;
	--dm-necesitas-text: var(--dm-color-text);
	--dm-necesitas-muted: var(--dm-color-text-muted);
	--dm-necesitas-border: var(--dm-color-border);
	--dm-necesitas-shadow: var(--dm-shadow);
	--dm-necesitas-transition: 200ms ease;
	--dm-necesitas-pill-bg: rgba(255, 255, 255, 0.38);

	/* WooCommerce */
	--dm-woo-section-pad-y: var(--dm-necesitas-pad-y);
	--dm-woo-box-pad: clamp(1rem, 2.4vw, 2.25rem);
	--dm-woo-content-gap: clamp(1rem, 2vw, 1.5rem);
	--dm-woo-box-bg: var(--dm-color-bg-card);
	--dm-woo-box-border: var(--dm-color-border);
	--dm-woo-input-bg: var(--dm-color-bg-card);
	--dm-woo-input-border: var(--dm-color-border);
	--dm-woo-input-focus-ring: var(--dm-color-primary-soft-strong);
	--dm-woo-button-text: var(--dm-color-on-dark);
	--dm-woo-note-bg: var(--dm-color-primary-soft);
	--dm-woo-error: var(--dm-color-error);
	--dm-woo-product-border: var(--dm-color-primary-soft-border);
	--dm-woo-grid-min-col: 280px;
	--dm-woo-grid-gap: 1.5rem;
	--dm-woo-card-gap: 0.75rem;
	--dm-woo-card-header-gap: 0.65rem;
	--dm-woo-btn-line-height: 1.2;
	--dm-woo-btn-transition: background var(--dm-transition), color var(--dm-transition), border-color var(--dm-transition);
	--dm-drawer-width: 400px;
	--dm-drawer-overlay-bg: var(--dm-overlay-scrim);
	--dm-drawer-shadow: var(--dm-elevation-drawer);
	--dm-drawer-border: var(--dm-color-border);
	--dm-drawer-accent-bg: var(--dm-color-accent-soft);
	--dm-drawer-accent-border: var(--dm-color-accent-soft-border);
	--dm-drawer-thumb-size: 112px;
	--dm-drawer-thumb-ratio: var(--dm-card-thumb-ratio);
	--dm-popup-shadow: var(--dm-elevation-popup);

	/* Home carousel */
	--dm-carousel-slide-bg-fallback: #f4f0eb;
	--dm-carousel-slide-fg: #ffffff;
	--dm-carousel-hero-bg: rgba(255, 255, 255, 0.28);
	--dm-carousel-btn-border: rgba(255, 255, 255, 0.55);
	--dm-carousel-btn-bg: rgba(0, 0, 0, 0.22);
	--dm-carousel-btn-bg-hover: rgba(0, 0, 0, 0.3);
	--dm-carousel-btn-border-hover: rgba(255, 255, 255, 0.75);
	--dm-carousel-dot-bg: #ffffff;
	--dm-carousel-dot-opacity: 0.35;
	--dm-carousel-dot-opacity-active: 0.95;

	/* Layer scale */
	--dm-layer-base: 1;
	--dm-layer-ui: 3;
	--dm-layer-nav-popover: 11;
	--dm-layer-overlay: 9999;
	--dm-layer-drawer: 10000;
}

/* ==========================================================================
   Reglas de edicion de marca (tipografia y botones)
   Edita solo tokens :root para cambios globales.
   ========================================================================== */

body,
.site,
.site-content {
	font-family: var(--dm-font-body-family);
	font-size: var(--dm-text-size-base);
	font-weight: var(--dm-font-body-weight);
	line-height: var(--dm-font-body-line-height);
	color: var(--dm-color-text);
}

h1,
h2,
h3,
h4,
h5,
h6,
.entry-content h1,
.entry-content h2,
.entry-content h3,
.entry-content h4,
.entry-content h5,
.entry-content h6,
.elementor h1,
.elementor h2,
.elementor h3,
.elementor h4,
.elementor h5,
.elementor h6,
.elementor-widget-heading .elementor-heading-title {
	font-family: var(--dm-font-heading-family);
	font-weight: var(--dm-font-heading-weight);
	line-height: var(--dm-font-heading-line-height);
	letter-spacing: var(--dm-font-heading-letter-spacing);
	color: var(--dm-color-text);
}

p,
li,
blockquote,
.entry-content p,
.elementor p,
.elementor-widget-text-editor,
.elementor-widget-text-editor p {
	font-family: var(--dm-font-body-family);
	font-size: var(--dm-text-size-base);
	line-height: var(--dm-text-line-height-base);
	color: var(--dm-text-color-base);
}

label,
input,
select,
textarea {
	font-family: var(--dm-form-font-family);
	font-size: var(--dm-form-font-size);
	line-height: var(--dm-form-line-height);
	color: var(--dm-form-text-color);
}

button,
.button,
input[type="button"],
input[type="submit"],
input[type="reset"],
.added_to_cart {
	font-family: var(--dm-font-button-family);
	font-weight: var(--dm-font-button-weight);
	border-radius: var(--dm-btn-radius);
}

.site-header .site-header-cart,
.header-4 .main-header .site-header-cart.menu {
	display: flex;
	align-items: center;
	gap: var(--dm-header-actions-gap);
}

.header-4 .col-full-nav {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: var(--dm-header-actions-gap);
	min-width: 0;
}

.header-4 .col-full-nav>.main-navigation {
	flex: 0 1 auto;
	width: auto;
	max-width: 100%;
	min-width: 0;
	display: block;
}

.header-4 .col-full-nav>.main-navigation .primary-navigation,
.header-4 .col-full-nav>.main-navigation .menu-primary-menu-container {
	display: block;
	max-width: 100%;
}

.header-4 .col-full-nav>.main-navigation .primary-navigation {
	flex: 0 1 auto;
	width: auto;
	max-width: 100%;
}

.header-4 .col-full-nav>.main-navigation .menu-primary-menu-container {
	margin: 0;
	max-width: 100%;
}

.header-4 .col-full-nav>.main-navigation #menu-primary-menu {
	margin: 0;
	padding: 0;
	list-style: none;
}

.header-4 .col-full-nav>.main-navigation #menu-primary-menu>li {
	position: relative;
}

.header-4 .col-full-nav>.main-navigation #menu-primary-menu>li>a.main-menu-link {
	white-space: nowrap;
}

.header-4 .col-full-nav>.site-header-cart.menu {
	margin-left: auto;
	justify-content: flex-end;
	padding-left: var(--dm-header-actions-offset-inline);
}

@media (min-width: 993px) {
	.header-4 .header-4-inner {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 1.5rem;
	}

	.header-4 .header-4-inner>.site-header {
		flex: 0 0 auto;
		margin-right: 0;
	}

	.header-4 .header-4-inner>.col-full-nav {
		flex: 1 1 auto;
		min-width: 0;
		position: relative;
		justify-content: flex-end;
	}

	.header-4 .header-4-inner>.col-full-nav>.main-navigation {
		display: block;
		flex: 0 1 auto;
		width: auto;
		height: auto;
		margin-left: auto;
	}

	.header-4 .header-4-inner>.col-full-nav>.main-navigation .primary-navigation {
		position: static;
		inset: auto;
		display: block;
		width: auto;
		height: auto;
	}

	.header-4 .header-4-inner>.col-full-nav>.main-navigation .menu-primary-menu-container {
		display: block;
	}

	.header-4 .header-4-inner>.col-full-nav>.main-navigation #menu-primary-menu {
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.header-4 .main-navigation ul.menu>li.menu-item-has-children:not(.full-width)>.sub-menu-wrapper {
		top: 100%;
	}

	.header-4 .main-navigation ul.menu>li.menu-item-has-children:not(.full-width)>.sub-menu-wrapper>.container>ul.sub-menu {
		top: 0;
	}

	.header-4 .header-4-inner>.col-full-nav>.site-header-cart.menu {
		position: relative;
		z-index: var(--dm-layer-nav-popover);
		margin-left: auto;
	}
}

.site-header .site-header-cart li {
	display: flex;
	align-items: center;
}

.site-header .site-header-cart .cart-contents {
	display: inline-flex !important;
	align-items: center;
}

.site-header .site-header-cart .dm-header-login>a,
.site-header .site-header-cart .menu-item.dm-header-login>a,
body.header-4 #page .col-full-nav .site-header-cart.menu .dm-header-login>a,
body.header-4 #page .col-full-nav .site-header-cart.menu .dm-header-login>a:visited {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.35rem;
	padding: var(--dm-header-login-pad-y) var(--dm-header-login-pad-x);
	border: var(--dm-btn-border-width) solid var(--dm-color-primary);
	border-radius: 2rem;
	background: transparent;
	color: var(--dm-color-primary);
	font-family: var(--dm-font-button-family);
	font-size: var(--dm-btn-font-size);
	font-weight: var(--dm-font-button-weight);
	letter-spacing: 0;
	line-height: 1.2;
	text-decoration: none;
	text-transform: none;
	transition: background var(--dm-transition), color var(--dm-transition), transform var(--dm-transition), border-color var(--dm-transition);
	outline: none;
	white-space: nowrap;
}

.site-header .site-header-cart .dm-header-login>a span,
.site-header .site-header-cart .menu-item.dm-header-login>a span {
	color: inherit;
	font: inherit;
	letter-spacing: inherit;
	text-transform: inherit;
}

.site-header .site-header-cart .dm-header-login.current-menu-item>a,
.site-header .site-header-cart .dm-header-login>a:hover,
.site-header .site-header-cart .dm-header-login>a:focus-visible,
.site-header .site-header-cart .menu-item.dm-header-login>a:hover,
.site-header .site-header-cart .menu-item.dm-header-login>a:focus-visible,
body.header-4 #page .col-full-nav .site-header-cart.menu .dm-header-login.current-menu-item>a,
body.header-4 #page .col-full-nav .site-header-cart.menu .dm-header-login>a:hover,
body.header-4 #page .col-full-nav .site-header-cart.menu .dm-header-login>a:focus-visible {
	background: var(--dm-btn-primary-bg);
	border-color: var(--dm-color-primary);
	color: #fff;
	transform: translateY(var(--dm-btn-hover-lift));
	outline: none;
}

.site-header-cart .dm-header-cart-item .cart-click {
	display: flex;
	align-items: center;
}

.site-header-cart .dm-header-cart-item .cart-contents {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.35rem;
}

.shoptimizer-mini-cart-wrap {
	display: none !important;
	visibility: hidden !important;
	pointer-events: none !important;
}

@media (max-width: 992px) {
	.header-4 .col-full-nav {
		position: fixed;
		top: 0;
		left: 0;
		bottom: 0;
		width: min(88vw, 360px);
		z-index: var(--dm-layer-overlay);
		pointer-events: none;
		overflow: hidden;
		display: none;
		flex-direction: column;
	}

	.header-4 .col-full-nav::before {
		content: "";
		position: fixed;
		inset: 0;
		background: var(--dm-overlay-scrim);
		opacity: 0;
		visibility: hidden;
		transition: opacity var(--dm-transition);
	}

	body.header-4.mobile-toggled .col-full-nav {
		display: flex;
		pointer-events: auto;
	}

	body.header-4.mobile-toggled .col-full-nav::before {
		opacity: 1;
		visibility: visible;
	}

	.header-4 .col-full-nav>.main-navigation {
		position: fixed;
		top: 0;
		left: 0;
		height: 100dvh;
		width: min(88vw, 360px);
		max-width: 100%;
		margin: 0;
		padding: 5rem 1rem 1.25rem;
		background: var(--dm-color-bg-card);
		box-shadow: var(--dm-elevation-drawer);
		overflow-y: auto;
		transform: translateX(-100%) !important;
		transition: transform var(--dm-transition);
		pointer-events: none;
		visibility: hidden;
		z-index: var(--dm-layer-drawer);
	}

	body.header-4.mobile-toggled .col-full-nav>.main-navigation {
		transform: translateX(0) !important;
		pointer-events: auto;
		visibility: visible;
	}

	.header-4 .col-full-nav>.main-navigation #menu-primary-menu {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 0.2rem;
	}

	.header-4 .col-full-nav>.main-navigation #menu-primary-menu>li>a.main-menu-link {
		display: block;
		white-space: normal;
		padding: 0.75rem 0.25rem;
		font-size: 1rem;
	}

	.header-4 .col-full-nav>.main-navigation .sub-menu-wrapper,
	.header-4 .col-full-nav>.main-navigation .sub-menu-wrapper>.container>ul.sub-menu {
		position: static !important;
		top: auto !important;
		left: auto !important;
		right: auto !important;
		width: 100%;
		transform: none;
		box-shadow: none;
		display: none;
		max-height: 0;
		overflow: hidden;
		opacity: 0;
		visibility: hidden;
		transition: max-height 0.3s ease, opacity 0.3s ease;
	}

	.header-4 .col-full-nav>.main-navigation .menu-item-has-children.expanded .sub-menu-wrapper,
	.header-4 .col-full-nav>.main-navigation .menu-item-has-children.expanded .sub-menu-wrapper>.container>ul.sub-menu {
		display: block !important;
		position: static !important;
		left: auto !important;
		top: auto !important;
		max-height: 500px;
		opacity: 1;
		visibility: visible;
	}

	body.header-4:not(.mobile-toggled) .col-full-nav>.main-navigation .sub-menu-wrapper,
	body.header-4:not(.mobile-toggled) .col-full-nav>.main-navigation .sub-menu-wrapper>.container>ul.sub-menu {
		display: none;
	}

	body.header-4:not(.mobile-toggled) .col-full-nav>.main-navigation a,
	body.header-4:not(.mobile-toggled) .col-full-nav>.main-navigation button {
		pointer-events: none;
	}
}

body.drawer-open {
	overflow: auto;
}

/* Ensure dm-card uses the correct thumb wrapper (image link) for ratio */
.dm-card__image-link {
	display: block;
	aspect-ratio: var(--dm-card-thumb-ratio);
	overflow: hidden;
	background: var(--dm-card-thumb-bg);
}

/* The inner thumb div should just inherit sizing */
.dm-card__thumb {
	width: 100%;
	height: 100%;
	position: relative;
}

/* Force the WP thumbnail img to fill the 16:9 box */
.dm-card__thumb img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* ==========================================================================
	Topic browser — [dm_recursos]
	========================================================================== */

.dm-topic-browser {
	margin: 2rem 0;
}

/* ---- Filter bar ---- */

.dm-topic-browser__filters {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	margin-bottom: 2rem;
}

.dm-topic-browser__filter-group {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
}

.dm-topic-browser__filter-label {
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--dm-color-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.04em;
	margin-right: 0.25rem;
}

/* Filter pills */

.dm-filter-pill {
	display: inline-flex;
	align-items: center;
	padding: 0.35rem 0.9rem;
	border: 1.5px solid var(--dm-color-border);
	border-radius: 2rem;
	font-size: 0.875rem;
	color: var(--dm-color-text);
	background: var(--dm-color-bg-card);
	text-decoration: none;
	transition: background var(--dm-transition), border-color var(--dm-transition), color var(--dm-transition);
	white-space: nowrap;
}

.dm-filter-pill:hover,
.dm-filter-pill:focus-visible {
	border-color: var(--dm-color-primary);
	color: var(--dm-color-primary);
	outline: none;
}

.dm-filter-pill.is-active {
	background: var(--dm-color-primary);
	border-color: var(--dm-color-primary);
	color: #fff;
	font-weight: 600;
}

/* ---- Product grid ---- */

.dm-topic-products__grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 1.5rem;
}

/* Column hint overrides (set via data-columns) */
.dm-topic-browser[data-columns="1"] .dm-topic-products__grid {
	grid-template-columns: 1fr;
}

.dm-topic-browser[data-columns="2"] .dm-topic-products__grid {
	grid-template-columns: repeat(2, 1fr);
}

.dm-topic-browser[data-columns="4"] .dm-topic-products__grid {
	grid-template-columns: repeat(4, 1fr);
}

.dm-topic-products__item {
	display: flex;
}

.dm-topic-products__empty {
	color: var(--dm-color-text-muted);
	font-style: italic;
	padding: 1.5rem 0;
}

/* ---- Recurso card — type-specific styles only ---- */

.dm-topic-card__cta {
	margin-top: auto;
	padding-top: 0.5rem;
	display: flex;
	gap: 0.5rem;
	flex-wrap: wrap;
}

/* Badge for type */
.dm-topic-card--gratis::before {
	content: "Gratis";
	display: inline-block;
	background: var(--dm-color-success-soft);
	color: var(--dm-color-success);
	font-size: 0.7rem;
	font-weight: 700;
	padding: 0.2rem 0.6rem;
	border-radius: 2rem;
	margin: 0.75rem 1.25rem 0;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	align-self: flex-start;
}

/* ==========================================================================
   Products Grid — [dm_products]
   ========================================================================== */

.dm-products-grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 1.5rem;
}

.dm-products-grid--cols-1 {
	grid-template-columns: 1fr;
}

.dm-products-grid--cols-2 {
	grid-template-columns: repeat(2, 1fr);
}

.dm-products-grid--cols-4 {
	grid-template-columns: repeat(4, 1fr);
}

.dm-products-grid__item {
	display: flex;
}

.dm-products-grid__empty,
.dm-products__empty,
.dm-products__error {
	color: var(--dm-color-text-muted);
	font-style: italic;
}

/* ==========================================================================
   CPT Grid — dm-grid layout
   Motivo: con 1 solo item, grid con 1fr estira demasiado la card.
   Solución: columnas auto-fit con ancho máximo por card + centrado.
   ========================================================================== */

.dm-grid {
	display: grid;
	gap: clamp(1rem, 2vw, 1.5rem);

	/* Mantener cards a tamaño catálogo */
	justify-content: start;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.dm-grid.dm-grid--count-1 {
	grid-template-columns: minmax(min(100%, 260px), 380px);
}

.dm-grid.dm-grid--count-2 {
	grid-template-columns: repeat(2, minmax(min(100%, 260px), 380px));
}

@media (min-width: 1200px) {
	.dm-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* ==========================================================================
	Unified Card System — .dm-card · .dm-topic-card · .dm-product-card
   One visual baseline for all catalog cards (CPT archives / recursos hub /
   products grid). Thumb ratio matches the home carousel (16 : 9).
   ========================================================================== */

/* 1 · Card container — flex column + shared chrome */
.dm-card,
.dm-topic-card,
.dm-product-card {
	display: flex;
	flex-direction: column;
	background: var(--dm-color-bg-card);
	border: 1px solid var(--dm-color-border);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
	overflow: hidden;
	transition: box-shadow var(--dm-card-transition), transform var(--dm-card-transition);
	width: 100%;
}

/* CPT cards also enforce a minimum height */
.dm-card {
	min-height: var(--dm-card-min-height);
}

/* 2 · Thumb wrapper — unified 16 : 9 ratio */
.dm-card__thumb,
.dm-card__thumb-link,
.dm-topic-card__thumb-link,
.dm-product-card__thumb-link {
	display: block;
	aspect-ratio: var(--dm-card-thumb-ratio);
	overflow: hidden;
	background: var(--dm-card-thumb-bg);
}

/* 3 · Thumb image — fill wrapper, never distort */
.dm-card__thumb img,
.dm-topic-card__thumb,
.dm-product-card__thumb {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--dm-card-transition);
}

/* 4 · Card body — grows so CTA can align to bottom */
.dm-card__body,
.dm-topic-card__body,
.dm-product-card__body {
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
	text-align: center;
	align-items: stretch;
	flex: 1;
	padding: 1.1rem 1.25rem 1.25rem;
	gap: 0.6rem;
}

.dm-card__content,
.dm-topic-card__content {
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 100%;
	gap: 0.6rem;
	margin-block: auto;
}

.dm-card__title,
.dm-topic-card__title,
.dm-product-card__title {
	font-family: var(--dm-font-heading-family);
	font-size: 20px;
	font-weight: var(--dm-font-heading-weight);
	margin: 0;
	line-height: var(--dm-font-heading-compact-line-height);
	letter-spacing: var(--dm-font-heading-compact-letter-spacing);
}

.dm-card__title a,
.dm-topic-card__title a,
.dm-product-card__title a {
	color: var(--dm-color-text);
	text-decoration: none;
}

.dm-card__title a:hover,
.dm-topic-card__title a:hover,
.dm-product-card__title a:hover {
	color: var(--dm-color-primary);
}

/* 6 · Excerpt */
.dm-card__excerpt,
.dm-topic-card__excerpt,
.dm-product-card__excerpt {
	font-family: var(--dm-font-body-family);
	font-size: 0.875rem;
	color: var(--dm-color-text-muted);
	margin: 0;
	line-height: var(--dm-text-line-height-base);
}

/* 7 · Price */
.dm-card__price,
.dm-topic-card__price,
.dm-product-card__price {
	font-size: 1rem;
	font-weight: 700;
	color: var(--dm-color-primary-dark);
	margin: 0;
	white-space: nowrap;
}

/* --- .dm-card specific --- */

/* Título + precio en la misma línea (CPT cards) */
.dm-card__title-row {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: center;
	gap: 8px;
	width: 100%;
}

.dm-card__title-row .dm-card__title {
	flex: 0 1 auto;
	text-align: center;
}

.dm-card__title-row .dm-card__price {
	flex: 0 0 auto;
}

.dm-card__price--free {
	font-size: 0.75rem;
	font-weight: 800;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	padding: 0.15rem 0.55rem;
	border-radius: 999px;
	background: var(--dm-color-success-soft);
	color: var(--dm-color-success);
}

/* ==========================================================================
   Card hover lift — shared premium effect
   Applies to CPT cards (.dm-card), product cards (.dm-product-card),
	and topic cards (.dm-topic-card). Restricted to real-pointer devices
   and augmented with :focus-within for keyboard / assistive tech users.
   ========================================================================== */

@media (hover: hover) and (pointer: fine) {

	.dm-card:hover,
	.dm-card:focus-within,
	.dm-product-card:hover,
	.dm-product-card:focus-within,
	.dm-topic-card:hover,
	.dm-topic-card:focus-within {
		box-shadow: var(--dm-card-hover-shadow);
		transform: var(--dm-card-hover-lift);
	}

	.dm-card:hover .dm-card__thumb img,
	.dm-card:focus-within .dm-card__thumb img,
	.dm-product-card:hover .dm-product-card__thumb,
	.dm-product-card:focus-within .dm-product-card__thumb,
	.dm-topic-card:hover .dm-topic-card__thumb,
	.dm-topic-card:focus-within .dm-topic-card__thumb {
		transform: scale(1.03);
	}
}

/* ==========================================================================
   Shared buttons
   ========================================================================== */

.dm-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: var(--dm-btn-padding-y) var(--dm-btn-padding-x);
	border-radius: var(--dm-btn-radius);
	font-family: var(--dm-font-button-family);
	font-size: var(--dm-btn-font-size);
	font-weight: var(--dm-font-button-weight);
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	border: var(--dm-btn-border-width) solid transparent;
	transition: background var(--dm-transition), color var(--dm-transition), transform var(--dm-transition);
	white-space: nowrap;
}

.dm-btn--primary,
.dm-btn--comprar,
.dm-btn--gratis,
.dm-btn--secondary {
	background: var(--dm-btn-primary-bg);
	color: #fff;
}

.dm-btn--primary:hover,
.dm-btn--primary:focus-visible,
.dm-btn--comprar:hover,
.dm-btn--comprar:focus-visible,
.dm-btn--gratis:hover,
.dm-btn--gratis:focus-visible,
.dm-btn--secondary:hover,
.dm-btn--secondary:focus-visible {
	background: var(--dm-btn-primary-bg-hover);
	color: #fff;
	transform: translateY(var(--dm-btn-hover-lift));
	outline: none;
}

/* Compat visual: aliases legacy a 3 variantes reales
   - Primario: .dm-btn--primary / --comprar / --gratis / --secondary
   - Secundario (outline): .dm-btn--ghost / --ver-mas */

.dm-btn--ver-mas,
.dm-btn--ghost {
	background: transparent;
	color: var(--dm-btn-ghost-text);
	border: var(--dm-btn-border-width) solid var(--dm-btn-ghost-border);
}

.dm-btn--ver-mas {
	margin-top: auto;
}

.dm-btn--ver-mas:hover,
.dm-btn--ver-mas:focus-visible,
.dm-btn--ghost:hover,
.dm-btn--ghost:focus-visible {
	background: var(--dm-btn-ghost-bg-hover);
	color: #fff;
	transform: translateY(var(--dm-btn-hover-lift));
	outline: none;
}

/* single-dm safety override: evita hovers verdes heredados del tema padre/plugins */
.dm-single .dm-single__actions a,
.dm-single .dm-single__actions button,
.dm-single .dm-single__actions .button,
.dm-single .dm-single__actions .add_to_cart_button,
.dm-single .dm-single__actions input[type="submit"],
.dm-single .dm-single__actions input[type="button"] {
	background: var(--dm-btn-primary-bg);
	border-color: var(--dm-btn-primary-bg);
	color: #fff;
}

.dm-single .dm-single__actions a:hover,
.dm-single .dm-single__actions a:focus-visible,
.dm-single .dm-single__actions button:hover,
.dm-single .dm-single__actions button:focus-visible,
.dm-single .dm-single__actions .button:hover,
.dm-single .dm-single__actions .button:focus-visible,
.dm-single .dm-single__actions .add_to_cart_button:hover,
.dm-single .dm-single__actions .add_to_cart_button:focus-visible,
.dm-single .dm-single__actions input[type="submit"]:hover,
.dm-single .dm-single__actions input[type="submit"]:focus-visible,
.dm-single .dm-single__actions input[type="button"]:hover,
.dm-single .dm-single__actions input[type="button"]:focus-visible {
	background: var(--dm-btn-primary-bg-hover);
	border-color: var(--dm-btn-primary-bg-hover);
	color: #fff;
	transform: translateY(var(--dm-btn-hover-lift));
	outline: none;
}

/* Card footer with dual action buttons (Ver detalles + Agregar al carrito) */
.dm-card__footer--actions {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	padding: 0.75rem 1rem;
}

.dm-card__footer--actions .dm-cta {
	display: flex;
	align-items: center;
	gap: 8px;
}

/* ==========================================================================
   Newsletter Opt-In checkbox (checkout)
   ========================================================================== */

.dm-newsletter-optin {
	margin-top: 1rem;
	margin-bottom: 0.5rem;
}

.dm-newsletter-optin label {
	font-size: 0.875rem;
	color: var(--dm-color-text-muted);
	line-height: 1.5;
}

/**
 * Horizontally scrollable chip row (nav.dm-chips).
 * Falls back gracefully to wrapping when JS is unavailable.
 */
.dm-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 2rem;
	overflow-x: auto;
	scrollbar-width: none;
	/* Firefox */
	-webkit-overflow-scrolling: touch;
}

.dm-chips::-webkit-scrollbar {
	display: none;
	/* Chrome / Safari */
}

/* Individual chip link */
.dm-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.35rem 0.9rem;
	border: 1.5px solid var(--dm-color-border);
	border-radius: 2rem;
	font-size: 0.875rem;
	color: var(--dm-color-text);
	background: var(--dm-color-bg-card);
	text-decoration: none;
	white-space: nowrap;
	transition: background var(--dm-transition), border-color var(--dm-transition), color var(--dm-transition);
}

.dm-chip:hover,
.dm-chip:focus-visible {
	background: var(--dm-color-primary);
	border-color: var(--dm-color-primary);
	color: #fff;
	outline: none;
}

/* Active state */
.dm-chip--active {
	background: var(--dm-color-primary);
	border-color: var(--dm-color-primary);
	color: #fff;
	font-weight: 600;
}

.dm-chip--active:hover,
.dm-chip--active:focus-visible {
	background: var(--dm-color-primary-dark);
	border-color: var(--dm-color-primary-dark);
	color: #fff;
}

/* Product count badge inside each chip */
.dm-chip__count {
	font-size: 0.75rem;
	opacity: 0.7;
}

.dm-chip--active .dm-chip__count {
	opacity: 0.85;
}

/* ==========================================================================
   Responsive adjustments
   ========================================================================== */

@media (max-width: 600px) {

	.dm-topic-products__grid,
	.dm-products-grid {
		grid-template-columns: 1fr;
	}

	/* Always single column on very small screens regardless of data-columns */
	.dm-topic-browser[data-columns="2"] .dm-topic-products__grid,
	.dm-topic-browser[data-columns="3"] .dm-topic-products__grid,
	.dm-topic-browser[data-columns="4"] .dm-topic-products__grid,
	.dm-products-grid--cols-2,
	.dm-products-grid--cols-3,
	.dm-products-grid--cols-4 {
		grid-template-columns: 1fr;
	}
}

@media (min-width: 601px) and (max-width: 900px) {

	.dm-topic-products__grid,
	.dm-products-grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.dm-topic-browser[data-columns="4"] .dm-topic-products__grid,
	.dm-products-grid--cols-4 {
		grid-template-columns: repeat(2, 1fr);
	}
}

/* ==========================================================================
   Reduced-motion override — disable all card transitions/transforms
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {

	.dm-card,
	.dm-product-card,
	.dm-topic-card {
		transition: none;
	}

	.dm-card__thumb img,
	.dm-product-card__thumb,
	.dm-topic-card__thumb {
		transition: none;
	}
}

/* ==========================================================================
   Topic tags — informational only
   ========================================================================== */

.dm-topic-card__tags,
.dm-topic-tags {
	list-style: none;
	margin: 0 0 12px;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.dm-card .dm-topic-tags,
.dm-topic-card .dm-topic-tags {
	justify-content: center;
	width: 100%;
	margin: 0 0 0.15rem;
	gap: 0.35rem;
}

.dm-card .dm-topic-tag,
.dm-topic-card .dm-topic-tag {
	padding: 0.12rem 0.48rem;
	font-size: 0.68rem;
	font-weight: 500;
}

/* Informativo, no clicable: sin transición de hover (no hay estado :hover) y
   cursor por defecto para no simular el comportamiento de .dm-chip. */
.dm-topic-card__tag,
.dm-topic-tag {
	display: inline-block;
	padding: 3px 10px;
	border-radius: 999px;
	border: 1px solid var(--dm-color-primary);
	font-family: var(--dm-font-body-family);
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--dm-color-primary);
	text-decoration: none;
	cursor: default;
}

/* ==========================================================================
   Archive pages — dm-archive (recursos / escuela / servicios)
   ========================================================================== */

.dm-archive {
	padding: 3rem 0 4rem;
	background: var(--dm-color-bg);
}

.dm-archive__header {
	margin-bottom: 2.5rem;
}

.dm-archive__header-inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 1.5rem;
}

.dm-archive__title {
	font-family: var(--dm-font-heading-family);
	font-size: clamp(1.5rem, 4vw, 2.25rem);
	font-weight: var(--dm-font-heading-weight);
	color: var(--dm-color-text);
	margin: 0 0 0.75rem;
	line-height: var(--dm-font-heading-compact-line-height);
	letter-spacing: var(--dm-font-heading-compact-letter-spacing);
	text-wrap: balance;
}

.dm-archive__description {
	font-family: var(--dm-font-body-family);
	font-size: 1rem;
	color: var(--dm-color-text-muted);
	margin: 0 0 1.75rem;
	max-width: 600px;
	line-height: var(--dm-text-line-height-base);
}

.dm-archive__content {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 1.5rem;
}

@media (max-width: 600px) {
	.dm-archive {
		padding: 2rem 0 3rem;
	}

	.dm-archive__header {
		margin-bottom: 1.5rem;
	}

	.dm-archive__content {
		padding-right: 1rem;
		padding-left: 1rem;
	}

	.dm-grid.dm-grid--count-2 {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ==========================================================================
   Single pages — dm-single
   Full-height section. Two-column grid: image left, content right.
   Proportions match global grid containers (minmax(0, 1fr) minmax(0, 1fr)).
   ========================================================================== */

.dm-single {
	padding: 3rem 0 4rem;
	background: var(--dm-color-bg);
	min-height: calc(100vh - 120px);
	display: flex;
	flex-direction: column;
	justify-content: space-around;
	align-items: center;
}

.dm-single__article {
	display: flex;
	justify-content: space-around;
	width: 100%;
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 1.5rem;
}

/* Two-column grid layout — image left, body right */
.dm-single__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 3rem;
	align-items: center;
	justify-content: space-evenly;
}

/* No-image fallback: single centred column */
.dm-single__layout--no-image {
	grid-template-columns: minmax(0, 1fr);
	gap: 3rem;
	max-width: min(100%, 960px);
	margin: 0;
}

.dm-single__layout--no-image .dm-single__body {
	max-width: min(100%, 960px);
	width: 100%;
	max-width: 100%;
	align-items: center;
	justify-content: space-evenly;
}

.dm-single__layout--no-image .dm-single__header,
.dm-single__layout--no-image .dm-single__content,
.dm-single__layout--no-image .dm-single__actions,
.dm-single__layout--no-image .dm-single__footer,
.dm-single__layout--no-image .dm-editorial {
	width: 100%;
}

/* Left column: image */
.dm-single__media {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 100%;
}

.dm-single__thumbnail {
	width: 100%;
	height: clamp(460px, 72vh, 820px);
	border-radius: var(--dm-radius);
	overflow: hidden;
	aspect-ratio: auto;
	background: var(--dm-card-thumb-bg);
}

.dm-single__thumbnail img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Tutor LMS pages inherit the same decorative shell used by singles. */
body.single-courses .site-main,
body.single-course .site-main,
body.single-tutor_course .site-main,
body.single-courses .tutor-wrap,
body.single-course .tutor-wrap,
body.single-tutor_course .tutor-wrap,
body.single-courses .tutor-course-single-content-wrapper,
body.single-course .tutor-course-single-content-wrapper,
body.single-tutor_course .tutor-course-single-content-wrapper {
	max-width: 1200px;
	margin: 0;
	padding-left: 1.25rem;
	padding-right: 1.25rem;
}

body.single-courses .tutor-course-single-content-wrapper,
body.single-course .tutor-course-single-content-wrapper,
body.single-tutor_course .tutor-course-single-content-wrapper,
body.single-courses .tutor-course-details-page,
body.single-course .tutor-course-details-page,
body.single-tutor_course .tutor-course-details-page {
	background: var(--dm-color-bg-card);
	border: 1px solid var(--dm-color-border);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
	padding: clamp(1rem, 2.2vw, 2rem);
}

body.single-courses,
body.single-course,
body.single-tutor_course {
	background: var(--dm-color-bg);
}

/* Right column: title, description, actions, footer */
.dm-single__body {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
	justify-content: center;
	align-items: flex-start;
}

.dm-single__header {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
}

.dm-single__type,
.dm-single__terms {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.dm-single__title {
	font-family: var(--dm-font-heading-family);
	font-weight: var(--dm-font-heading-weight);
	color: var(--dm-color-text);
	margin: 0;
	line-height: var(--dm-font-heading-compact-line-height);
	letter-spacing: var(--dm-font-heading-compact-letter-spacing);
	text-wrap: balance;
}

.dm-single__content {
	font-family: var(--dm-font-body-family);
	font-size: 0.975rem;
	color: var(--dm-color-text-muted);
	line-height: var(--dm-text-line-height-base);
}

.dm-single__content p:last-child {
	margin-bottom: 0;
}

.dm-single__layout--no-image .dm-single__content> :first-child,
.dm-single__layout--no-image .dm-editorial> :first-child {
	margin-top: 0;
}

.dm-single__layout--no-image .dm-single__content> :last-child,
.dm-single__layout--no-image .dm-editorial> :last-child {
	margin-bottom: 0;
}

.dm-single__layout--no-image .dm-single__content .elementor,
.dm-single__layout--no-image .dm-single__content .elementor-section,
.dm-single__layout--no-image .dm-single__content .elementor-container,
.dm-single__layout--no-image .dm-single__content .e-con,
.dm-single__layout--no-image .dm-single__content .e-parent {
	max-width: 100%;
}

/* CTAs side by side */
.dm-single__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	align-items: center;
}

.dm-single__actions--hero {
	padding-top: 0.25rem;
}

.dm-single__actions .dm-single__cta,
.dm-single__actions .dm-cta {
	display: flex;
	align-items: center;
}

/* Footer back link */
.dm-single__footer {
	padding-top: 0.5rem;
}

/* Small chip variant — used in single pages */
.dm-chip--sm {
	color: var(--dm-color-primary);
	border-color: var(--dm-color-primary);
	padding: 0.2rem 0.65rem;
	font-size: 0.75rem;
}

.dm-single__kicker {
	margin: 0;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--dm-color-primary);
}

.dm-single__intro {
	margin: 0;
	font-size: 1rem;
	line-height: 1.7;
	color: var(--dm-color-text-muted);
}

/* Structured editorial sections inside singles */
.dm-editorial {
	display: grid;
	gap: 3rem;
	margin-top: 1rem;
}

.dm-editorial__section {
	margin: 0;
}

.dm-editorial__panel,
.dm-editorial__final {
	padding: clamp(1rem, 2vw, 1.5rem);
	border-radius: var(--dm-radius);
	border: 1px solid var(--dm-color-border);
}

.dm-editorial__panel {
	background: var(--dm-color-surface-soft);
}

.dm-editorial__final {
	background: var(--dm-brand-accent);
	gap: 1rem;
	display: flex;
	flex-direction: column;
	text-align: center;
}

.dm-editorial__panel--soft {
	display: flex;
	flex-direction: column;
	gap: 0.85rem;
	background: #fff;
}

.dm-editorial__section--split {
	border-radius: var(--dm-radius);
	background: #fff;
}

.dm-editorial__section--alt {
	background: var(--dm-color-surface-soft);
}

.dm-editorial__grid {
	padding: clamp(1rem, 2vw, 1.5rem);
	border: 1px solid var(--dm-color-border);
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
	gap: 3rem;
	align-items: center;
}

.dm-editorial__grid--single {
	grid-template-columns: 1fr;
}

.dm-editorial__grid--split {
	align-items: center;
}

.dm-editorial__copy {
	display: flex;
	flex-direction: column;
	gap: 0.85rem;
}

.dm-editorial__copy--split {
	align-self: center;
	justify-content: center;
}

.dm-editorial__copy--split>.dm-editorial__section-title {
	width: 100%;
	font-size: clamp(1.45rem, 2.5vw, 1.9rem);
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
}

.dm-editorial__copy--split>.dm-editorial__title-media {
	margin-top: 0;
}

.dm-editorial__body {
	align-self: auto;
	display: grid;
	min-width: 0;
	gap: 0.85rem;
}

.dm-editorial__section-title,
.dm-editorial__final-title {
	margin: 0;
	font-size: clamp(1.15rem, 2vw, 1.45rem);
	line-height: 1.3;
	color: var(--dm-color-text);
}

.dm-editorial__title-media {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	margin: 0 0 0.85rem;
}

.dm-editorial__title-media img {
	display: block;
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 100%;
	margin: 0 auto;
	object-fit: contain;
	object-position: center;
}

.dm-editorial__title-media--section {
	width: min(100%, 462px);
	height: 100px;
	justify-content: center;
	align-items: center;
	overflow: hidden;
}

.dm-editorial__title-media--section img {
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 100%;
}

.dm-editorial__lead {
	margin: 0;
	font-size: 0.98rem;
	line-height: 1.7;
	color: var(--dm-color-text-muted);
}

.dm-editorial__list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 0.55rem;
	color: var(--dm-color-text);
}

.dm-editorial__list li {
	position: relative;
	padding-left: 1.75rem;
}

.dm-editorial__list li::before {
	position: absolute;
	left: 0;
	top: 0.1rem;
	font-weight: 700;
	line-height: 1;
}

.dm-editorial__list--stars li::before {
	content: '★';
	color: var(--dm-color-primary);
}

.dm-editorial__list--checks li::before {
	content: '✓';
	color: var(--dm-color-accent);
}

.dm-editorial__figure img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: cover;
	border-radius: var(--dm-radius);
}

.dm-single__media--inline {
	width: 100%;
	height: auto;
}

.dm-single__thumbnail--inline {
	width: 100%;
	height: auto;
	max-height: none;
	background: transparent;
}

.dm-single__thumbnail--inline img {
	display: block;
	width: 100%;
	height: auto;
	max-height: min(72vh, 760px);
	object-fit: cover;
	border-radius: var(--dm-radius);
}

.dm-single__thumbnail--catalog-fallback {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: clamp(10px, 1.6vw, 18px);
	background: var(--dm-card-thumb-bg);
	border-radius: var(--dm-radius);
	overflow: hidden;
}

.dm-single__thumbnail--catalog-fallback img {
	width: 100%;
	height: auto;
	max-height: min(72vh, 760px);
	object-fit: contain;
	object-position: center;
}

.dm-editorial__figure--hero {
	align-self: stretch;
}

.dm-editorial__cta-row {
	padding-top: 0.25rem;
}

/* Responsive: stack columns below 768px */
@media (max-width: 768px) {
	.dm-single {
		align-items: flex-start;
		padding: 2rem 0 3rem;
		min-height: auto;
	}

	.dm-single__layout {
		grid-template-columns: 1fr;
		gap: 1.5rem;
	}

	.dm-single__thumbnail {
		height: clamp(320px, 56vh, 560px);
	}

	.dm-editorial__grid {
		grid-template-columns: 1fr;
	}

	.dm-editorial__copy--split {
		display: flex;
	}

}

/* ==========================================================================
   Cart Drawer — #dm-cart-drawer (off-canvas mini-cart, right side)
   ========================================================================== */

/* Outer wrapper — covers the full viewport when open.
   [hidden] keeps it display:none until JS removes it. */
.dm-cart-drawer {
	position: fixed;
	inset: 0;
	z-index: var(--dm-layer-drawer);
	display: flex;
	justify-content: flex-end;
	/* Disable pointer events while closed/transitioning so overlay
	   clicks don't register before the drawer is fully open. */
	pointer-events: none;
}

.dm-cart-drawer.is-open {
	pointer-events: auto;
}

/* Semi-transparent backdrop */
.dm-cart-drawer__overlay {
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0);
	transition: background 0.35s ease;
	cursor: pointer;
}

.dm-cart-drawer.is-open .dm-cart-drawer__overlay {
	background: var(--dm-drawer-overlay-bg);
}

/* Slide-in panel from the right */
.dm-cart-drawer__panel {
	position: relative;
	z-index: var(--dm-layer-base);
	width: var(--dm-drawer-width);
	max-width: 100vw;
	height: 100%;
	background: var(--dm-woo-box-bg);
	display: flex;
	flex-direction: column;
	transform: translateX(100%);
	transition: transform 0.35s ease;
	overflow: hidden;
	box-shadow: var(--dm-drawer-shadow);
}

.dm-cart-drawer.is-open .dm-cart-drawer__panel {
	transform: translateX(0);
}

/* Header */
.dm-cart-drawer__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 1rem 1.25rem;
	border-bottom: 1px solid var(--dm-drawer-border);
	flex-shrink: 0;
}

.dm-cart-drawer__title {
	margin: 0;
	font-size: 1.1rem;
	font-weight: 600;
	color: var(--dm-color-text);
}

.dm-cart-drawer__close {
	background: none;
	border: none;
	cursor: pointer;
	font-size: 1.1rem;
	color: var(--dm-color-text-muted);
	padding: 0.25rem 0.5rem;
	line-height: 1;
	transition: color var(--dm-transition);
}

.dm-cart-drawer__close:hover,
.dm-cart-drawer__close:focus-visible {
	color: var(--dm-color-text);
	outline: none;
}

/* Scrollable body */
.dm-cart-drawer__body {
	flex: 1;
	overflow-y: auto;
	padding: 1rem 1.25rem;
	-webkit-overflow-scrolling: touch;
}

.dm-cart-drawer__notice {
	display: none;
	margin-bottom: 0.85rem;
	padding: 0.75rem 0.9rem;
	border-radius: var(--dm-radius);
	background: var(--dm-drawer-accent-bg);
	border: 1px solid var(--dm-drawer-accent-border);
	color: var(--dm-color-text);
	font-size: 0.9rem;
	line-height: 1.45;
}

/* Footer with action buttons */
.dm-cart-drawer__footer {
	display: flex;
	gap: 0.75rem;
	padding: 1rem 1.25rem;
	border-top: 1px solid var(--dm-drawer-border);
	flex-shrink: 0;
}

.dm-cart-drawer__footer .dm-btn {
	flex: 1;
	text-align: center;
}

/* Prevent body scroll while drawer is open */
body.dm-cart-drawer-open {
	overflow: hidden;
}

/* Full-width on small screens */
@media (max-width: 480px) {
	.dm-cart-drawer__panel {
		width: 100%;
	}
}

/* Safety-net: hide WooCommerce's default mini-cart buttons inside the DM drawer.
   The wp_loaded hook in cart-drawer.php removes them server-side, but this rule
   catches any edge-case where a plugin re-registers those hooks. */
#dm-cart-drawer .woocommerce-mini-cart__buttons {
	display: none !important;
}

#dm-cart-drawer .widget_shopping_cart_content {
	color: var(--dm-color-text);
}

#dm-cart-drawer .woocommerce-mini-cart,
#dm-cart-drawer .cart_list.product_list_widget {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 1rem;
}

#dm-cart-drawer .woocommerce-mini-cart-item,
#dm-cart-drawer .mini_cart_item {
	position: relative;
	padding: 0 0 1rem;
	border-bottom: 1px solid var(--dm-drawer-border);
	min-height: 0;
}

#dm-cart-drawer .woocommerce-mini-cart-item:last-child,
#dm-cart-drawer .mini_cart_item:last-child {
	padding-bottom: 0;
	border-bottom: 0;
}

#dm-cart-drawer .woocommerce-mini-cart-item a:not(.remove),
#dm-cart-drawer .mini_cart_item a:not(.remove) {
	display: flow-root;
	color: var(--dm-color-text);
	font-weight: 600;
	text-decoration: none;
	line-height: 1.4;
}

#dm-cart-drawer .woocommerce-mini-cart-item a:not(.remove):hover,
#dm-cart-drawer .woocommerce-mini-cart-item a:not(.remove):focus-visible,
#dm-cart-drawer .mini_cart_item a:not(.remove):hover,
#dm-cart-drawer .mini_cart_item a:not(.remove):focus-visible {
	color: var(--dm-color-primary);
	outline: none;
}

#dm-cart-drawer .woocommerce-mini-cart-item img,
#dm-cart-drawer .mini_cart_item img {
	display: block;
	width: var(--dm-drawer-thumb-size);
	max-width: none;
	height: auto;
	aspect-ratio: var(--dm-drawer-thumb-ratio);
	border-radius: var(--dm-radius);
	object-fit: cover;
	background: var(--dm-card-thumb-bg);
	margin: 0 0.875rem 0 0;
	float: left;
}

#dm-cart-drawer .woocommerce-mini-cart-item .quantity,
#dm-cart-drawer .mini_cart_item .quantity {
	display: block;
	clear: both;
	margin-top: 0.5rem;
	padding-left: calc(var(--dm-drawer-thumb-size) + 0.875rem);
	color: var(--dm-color-text-muted);
	font-size: 0.95rem;
	line-height: 1.45;
}

#dm-cart-drawer .woocommerce-mini-cart-item .amount,
#dm-cart-drawer .mini_cart_item .amount,
#dm-cart-drawer .woocommerce-mini-cart__total .amount {
	color: var(--dm-color-primary-dark);
	font-weight: 600;
}

#dm-cart-drawer .woocommerce-mini-cart-item .remove,
#dm-cart-drawer .mini_cart_item .remove {
	position: absolute;
	top: -0.15rem;
	right: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.75rem;
	height: 1.75rem;
	border-radius: 999px;
	background: transparent;
	color: var(--dm-color-text-muted) !important;
	font-size: 1.1rem;
	font-weight: 400;
	line-height: 1;
	text-decoration: none;
	transition: background var(--dm-transition), color var(--dm-transition);
	float: none;
	margin: 0;
	left: auto;
	border: 0;
	box-shadow: none;
	padding: 0;
	min-width: 0;
	min-height: 0;
	transform: none;
	text-indent: 0;
	overflow: visible;
}

#dm-cart-drawer .woocommerce-mini-cart-item .remove:hover,
#dm-cart-drawer .woocommerce-mini-cart-item .remove:focus-visible,
#dm-cart-drawer .mini_cart_item .remove:hover,
#dm-cart-drawer .mini_cart_item .remove:focus-visible {
	background: var(--dm-woo-note-bg);
	color: var(--dm-color-primary) !important;
	outline: none;
}

#dm-cart-drawer .woocommerce-mini-cart__total {
	margin: 1.25rem 0 0;
	padding-top: 1rem;
	border-top: 1px solid var(--dm-drawer-border);
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	align-items: baseline;
	font-size: 1rem;
	color: var(--dm-color-text);
}

#dm-cart-drawer .woocommerce-mini-cart__total strong {
	font-weight: 600;
}

#dm-cart-drawer .woocommerce-mini-cart__empty-message {
	margin: 0;
	color: var(--dm-color-text-muted);
	line-height: 1.6;
}

.dm-cta .added_to_cart.wc-forward,
.dm-single__actions .added_to_cart.wc-forward,
.dm-card .added_to_cart.wc-forward,
.dm-topic-card .added_to_cart.wc-forward,
.dm-product-card .added_to_cart.wc-forward {
	display: none !important;
}

/* ==========================================================================
   Add-to-Cart Popup — dm-cart-popup
   ========================================================================== */

.dm-cart-popup__overlay {
	display: none;
	position: fixed;
	inset: 0;
	z-index: var(--dm-layer-overlay);
	background: var(--dm-drawer-overlay-bg);
	align-items: center;
	justify-content: center;
}

.dm-cart-popup__overlay.is-visible {
	display: flex;
}

.dm-cart-popup {
	position: relative;
	background: var(--dm-color-bg-card);
	border-radius: 12px;
	padding: 2rem 2.5rem 2rem;
	max-width: 420px;
	width: calc(100% - 2rem);
	box-shadow: var(--dm-popup-shadow);
	text-align: center;
	animation: dm-popup-in 0.22s ease;
}

@keyframes dm-popup-in {
	from {
		transform: translateY(-20px);
		opacity: 0;
	}

	to {
		transform: translateY(0);
		opacity: 1;
	}
}

.dm-cart-popup__close {
	position: absolute;
	top: 0.75rem;
	right: 0.9rem;
	background: none;
	border: none;
	font-size: 1.1rem;
	cursor: pointer;
	color: var(--dm-color-text-muted);
	line-height: 1;
	padding: 0.25rem;
}

.dm-cart-popup__close:hover {
	color: var(--dm-color-text);
}

.dm-cart-popup__icon {
	font-size: 2.5rem;
	color: var(--dm-color-primary);
	margin-bottom: 0.5rem;
}

.dm-cart-popup__message {
	font-size: 1rem;
	font-weight: 600;
	color: var(--dm-color-text);
	margin: 0 0 1.5rem;
	line-height: 1.4;
}

.dm-cart-popup__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	justify-content: center;
}

.dm-cart-popup__actions .dm-btn {
	flex: 1 1 140px;
}

/* =============================================================================
   WooCommerce — estilos unificados en style.css
   ============================================================================= */

body.woocommerce .site-main,
body.woocommerce-page .site-main {
	padding-top: clamp(2rem, 4vw, var(--dm-woo-section-pad-y));
	padding-bottom: clamp(2rem, 4vw, var(--dm-woo-section-pad-y));
}

.woocommerce .woocommerce-breadcrumb,
.woocommerce-page .woocommerce-breadcrumb {
	margin-bottom: 1rem;
}

.woocommerce form .form-row,
.woocommerce-page form .form-row {
	margin-bottom: 0.9rem;
}

.woocommerce,
.woocommerce-page,
.woocommerce button,
.woocommerce input,
.woocommerce select,
.woocommerce textarea,
.woocommerce-page button,
.woocommerce-page input,
.woocommerce-page select,
.woocommerce-page textarea {
	font-family: var(--dm-form-font-family);
	font-size: var(--dm-form-font-size);
	line-height: var(--dm-form-line-height);
	color: var(--dm-color-text);
}

.woocommerce,
.woocommerce-page {
	line-height: 1.6;
}

.woocommerce h1,
.woocommerce h2,
.woocommerce h3,
.woocommerce h4,
.woocommerce h5,
.woocommerce h6,
.woocommerce-page h1,
.woocommerce-page h2,
.woocommerce-page h3,
.woocommerce-page h4,
.woocommerce-page h5,
.woocommerce-page h6 {
	color: var(--dm-color-text);
}

:is(.woocommerce, .woocommerce-page) .woocommerce-products-header {
	margin-bottom: 1.25rem;
}

:is(.woocommerce, .woocommerce-page) .woocommerce-products-header__title,
:is(.woocommerce, .woocommerce-page) .woocommerce-products-header h1.page-title {
	font-family: var(--dm-font-heading-family);
	font-weight: var(--dm-font-heading-weight);
	line-height: var(--dm-font-heading-compact-line-height);
	letter-spacing: var(--dm-font-heading-compact-letter-spacing);
	color: var(--dm-color-text);
	margin-bottom: 0.6rem;
}

:is(.woocommerce, .woocommerce-page) .shoptimizer-sorting {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.85rem;
	margin: 0 0 1.25rem;
	padding: 0.85rem 1rem;
	background: var(--dm-color-bg-card);
	border: 1px solid var(--dm-woo-product-border);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
}

:is(.woocommerce, .woocommerce-page) .woocommerce-result-count {
	margin: 0;
	font-family: var(--dm-font-body-family);
	font-size: 0.9rem;
	line-height: 1.45;
	color: var(--dm-color-text-muted);
}

:is(.woocommerce, .woocommerce-page) .woocommerce-ordering {
	margin: 0;
}

:is(.woocommerce, .woocommerce-page) .woocommerce-ordering select.orderby {
	min-height: 42px;
	padding: 0.45rem 0.75rem;
	font-family: var(--dm-font-body-family);
	font-size: 0.92rem;
	line-height: 1.3;
	color: var(--dm-color-text);
	background: var(--dm-color-bg-card);
	border: 1px solid var(--dm-woo-input-border);
	border-radius: var(--dm-radius);
	box-shadow: none;
}

:is(.woocommerce, .woocommerce-page) .columns-3 ul.products,
:is(.woocommerce, .woocommerce-page) ul.products {
	display: grid !important;
	grid-template-columns: repeat(auto-fit, minmax(var(--dm-woo-grid-min-col), 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
	gap: var(--dm-woo-grid-gap);
}

:is(.woocommerce, .woocommerce-page) .columns-3 ul.products::before,
:is(.woocommerce, .woocommerce-page) .columns-3 ul.products::after,
:is(.woocommerce, .woocommerce-page) ul.products::before,
:is(.woocommerce, .woocommerce-page) ul.products::after {
	content: none !important;
	display: none !important;
}

:is(.woocommerce, .woocommerce-page) ul.products li.product .product__categories,
:is(.woocommerce, .woocommerce-page) ul.products li.product .posted_in {
	margin: 0;
	font-family: var(--dm-font-body-family);
	font-size: 0.78rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--dm-color-text-muted);
}

:is(.woocommerce, .woocommerce-page) ul.products li.product .product__categories a,
:is(.woocommerce, .woocommerce-page) ul.products li.product .posted_in a {
	color: inherit;
	text-decoration: none;
}

:is(.woocommerce, .woocommerce-page) .widget-area .widget {
	margin-bottom: 1rem;
	padding: 1rem;
	background: var(--dm-color-bg-card);
	border: 1px solid var(--dm-woo-product-border);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
}

:is(.woocommerce, .woocommerce-page) .widget-area .widget-title {
	display: block;
	margin: 0 0 0.6rem;
	font-family: var(--dm-font-heading-family);
	font-weight: var(--dm-font-heading-weight);
	letter-spacing: var(--dm-font-heading-compact-letter-spacing);
	color: var(--dm-color-text);
}

:is(.woocommerce, .woocommerce-page) .widget-area .product-categories,
:is(.woocommerce, .woocommerce-page) .widget-area .product-categories ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.4rem;
}

:is(.woocommerce, .woocommerce-page) .widget-area .product-categories a {
	display: inline-block;
	color: var(--dm-color-text);
	text-decoration: none;
	line-height: 1.35;
}

:is(.woocommerce, .woocommerce-page) .widget-area .product-categories a:hover,
:is(.woocommerce, .woocommerce-page) .widget-area .product-categories a:focus-visible {
	color: var(--dm-color-primary);
	outline: none;
}

:is(.woocommerce, .woocommerce-page) .mobile-filter {
	border-radius: var(--dm-btn-radius);
	border: var(--dm-btn-border-width) solid var(--dm-btn-ghost-border);
	color: var(--dm-btn-ghost-text);
	background: var(--dm-color-bg-card);
}

.woocommerce a:not(.button),
.woocommerce-page a:not(.button) {
	color: var(--dm-color-primary);
	transition: color var(--dm-transition);
}

.woocommerce a:not(.button):hover,
.woocommerce a:not(.button):focus-visible,
.woocommerce-page a:not(.button):hover,
.woocommerce-page a:not(.button):focus-visible {
	color: var(--dm-color-primary-dark);
	outline: none;
}

.woocommerce input.input-text,
.woocommerce select,
.woocommerce textarea,
.woocommerce-page input.input-text,
.woocommerce-page select,
.woocommerce-page textarea,
.woocommerce .select2-container--default .select2-selection--single,
.woocommerce .select2-container--default .select2-selection--multiple,
.woocommerce-page .select2-container--default .select2-selection--single,
.woocommerce-page .select2-container--default .select2-selection--multiple {
	background: var(--dm-woo-input-bg);
	align-content: center;
	border: 1px solid var(--dm-woo-input-border);
	border-radius: var(--dm-radius);
	box-shadow: none;
	color: var(--dm-color-text);
}

.woocommerce input.input-text:focus,
.woocommerce select:focus,
.woocommerce textarea:focus,
.woocommerce-page input.input-text:focus,
.woocommerce-page select:focus,
.woocommerce-page textarea:focus {
	border-color: var(--dm-color-primary);
	outline: none;
	box-shadow: 0 0 0 3px var(--dm-woo-input-focus-ring);
}

.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce-page a.button,
.woocommerce-page button.button,
.woocommerce-page input.button,
.woocommerce-page #respond input#submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: var(--dm-btn-padding-y) var(--dm-btn-padding-x);
	border: var(--dm-btn-border-width) solid var(--dm-btn-primary-bg);
	border-radius: var(--dm-btn-radius);
	background: var(--dm-btn-primary-bg);
	color: var(--dm-woo-button-text);
	font-family: var(--dm-font-button-family);
	font-size: var(--dm-btn-font-size);
	font-weight: var(--dm-font-button-weight);
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--dm-transition), color var(--dm-transition), transform var(--dm-transition), border-color var(--dm-transition);
	box-shadow: none;
}

.woocommerce a.button:hover,
.woocommerce a.button:focus-visible,
.woocommerce button.button:hover,
.woocommerce button.button:focus-visible,
.woocommerce input.button:hover,
.woocommerce input.button:focus-visible,
.woocommerce #respond input#submit:hover,
.woocommerce #respond input#submit:focus-visible,
.woocommerce-page a.button:hover,
.woocommerce-page a.button:focus-visible,
.woocommerce-page button.button:hover,
.woocommerce-page button.button:focus-visible,
.woocommerce-page input.button:hover,
.woocommerce-page input.button:focus-visible,
.woocommerce-page #respond input#submit:hover,
.woocommerce-page #respond input#submit:focus-visible {
	background: var(--dm-btn-primary-bg-hover);
	border-color: var(--dm-btn-primary-bg-hover);
	color: var(--dm-woo-button-text);
	transform: translateY(var(--dm-btn-hover-lift));
	outline: none;
}

.woocommerce a.button.disabled,
.woocommerce a.button:disabled,
.woocommerce button.button:disabled,
.woocommerce input.button:disabled,
.woocommerce-page a.button.disabled,
.woocommerce-page a.button:disabled,
.woocommerce-page button.button:disabled,
.woocommerce-page input.button:disabled {
	opacity: 0.65;
	cursor: not-allowed;
	transform: none;
}

.woocommerce a.added_to_cart,
.woocommerce-page a.added_to_cart {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-top: 0.5rem;
	padding: var(--dm-btn-padding-y) 1rem;
	border: var(--dm-btn-border-width) solid var(--dm-btn-ghost-border);
	border-radius: var(--dm-btn-radius);
	color: var(--dm-btn-ghost-text);
	font-family: var(--dm-font-button-family);
	font-size: var(--dm-btn-font-size);
	font-weight: var(--dm-font-button-weight);
	text-decoration: none;
	transition: background var(--dm-transition), color var(--dm-transition), border-color var(--dm-transition);
}

.woocommerce a.added_to_cart:hover,
.woocommerce a.added_to_cart:focus-visible,
.woocommerce-page a.added_to_cart:hover,
.woocommerce-page a.added_to_cart:focus-visible {
	background: var(--dm-btn-ghost-bg-hover);
	border-color: var(--dm-btn-ghost-bg-hover);
	color: var(--dm-woo-button-text);
	outline: none;
}

body.woocommerce-cart .woocommerce-cart-form,
body.woocommerce-cart .cart-collaterals .cart_totals,
body.woocommerce-cart .shop_table {
	background: var(--dm-woo-box-bg);
	border: 1px solid var(--dm-woo-box-border);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
}

body.woocommerce-cart .woocommerce-cart-form,
body.woocommerce-cart .cart-collaterals .cart_totals {
	padding: var(--dm-woo-box-pad);
}

body.woocommerce-cart .cart-collaterals {
	margin-top: 1.5rem;
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td,
.woocommerce-page table.shop_table th,
.woocommerce-page table.shop_table td {
	padding: 1rem 0.85rem;
}

body.woocommerce-checkout .col2-set .col-1,
body.woocommerce-checkout .col2-set .col-2,
body.woocommerce-checkout #order_review,
body.woocommerce-checkout #payment {
	background: var(--dm-woo-box-bg);
	align-items: center;
	border: 1px solid var(--dm-woo-box-border);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
}

body.woocommerce-checkout .col2-set .col-1,
body.woocommerce-checkout .col2-set .col-2,
body.woocommerce-checkout #order_review {
	padding: var(--dm-woo-box-pad);
}

body.woocommerce-checkout .dm-checkout-coupon-slot {
	margin-bottom: 1.5rem;
}

body.woocommerce-checkout .dm-checkout-coupon-slot .woocommerce-form-coupon-toggle {
	background: var(--dm-woo-box-bg);
	border: 1px solid var(--dm-woo-box-border);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
	margin: 0 0 1rem;
	padding: var(--dm-woo-box-pad);
}

body.woocommerce-checkout .dm-checkout-coupon-slot .woocommerce-form-coupon-toggle>p:first-child {
	margin: 0;
}

body.woocommerce-checkout .dm-checkout-coupon-slot .form-row {
	margin-top: 1rem;
}

body.woocommerce-checkout .dm-checkout-coupon-slot .form-row-first {
	float: left;
	width: calc(100% - 190px);
	margin-right: 1rem;
}

body.woocommerce-checkout .dm-checkout-coupon-slot .form-row-last {
	float: right;
	width: 174px;
	margin-right: 0;
}

body.woocommerce-checkout .dm-checkout-coupon-slot .input-text,
body.woocommerce-checkout .dm-checkout-coupon-slot .button {
	height: 44px;
	width: 100%;
}

body.woocommerce-checkout .dm-checkout-coupon-slot .clear {
	clear: both;
}

body.woocommerce-checkout #customer_details {
	margin-bottom: 1.5rem;
}

body.woocommerce-checkout #payment {
	overflow: hidden;
}

body.woocommerce-checkout #payment .place-order {
	padding: 1rem var(--dm-woo-box-pad) var(--dm-woo-box-pad);
}

body.woocommerce-account .woocommerce-MyAccount-navigation,
body.woocommerce-account .woocommerce-MyAccount-content {
	background: var(--dm-woo-box-bg);
	border: 1px solid var(--dm-woo-box-border);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
	padding: var(--dm-woo-box-pad);
}

body.woocommerce-account .woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

body.woocommerce-account .woocommerce-MyAccount-navigation a {
	display: block;
	padding: 0.5rem 0;
	color: var(--dm-color-text);
	text-decoration: none;
}

body.woocommerce-account .woocommerce-MyAccount-navigation .is-active a,
body.woocommerce-account .woocommerce-MyAccount-navigation a:hover,
body.woocommerce-account .woocommerce-MyAccount-navigation a:focus-visible {
	color: var(--dm-color-primary);
	outline: none;
}

:is(.woocommerce, .woocommerce-page) ul.products li.product {
	float: none !important;
	clear: none !important;
	width: auto !important;
	margin: 0 !important;
	background: var(--dm-color-bg-card);
	border: 1px solid var(--dm-woo-product-border);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
	overflow: hidden;
	padding: var(--dm-woo-box-pad);
	display: flex;
	flex-direction: column;
	gap: var(--dm-woo-card-gap);
	transition: box-shadow var(--dm-transition), transform var(--dm-transition);
}

@media (max-width: 680px) {
	:is(.woocommerce, .woocommerce-page) ul.products {
		grid-template-columns: 1fr;
	}
}

:is(.woocommerce, .woocommerce-page) ul.products li.product::before,
:is(.woocommerce, .woocommerce-page) .site-main ul.products li.product::before {
	display: none !important;
	content: none !important;
	opacity: 0 !important;
	visibility: hidden !important;
}

:is(.woocommerce, .woocommerce-page) ul.products li.product .woocommerce-card__header {
	display: flex;
	flex-direction: column;
	gap: var(--dm-woo-card-header-gap);
	flex: 1;
}

:is(.woocommerce, .woocommerce-page) ul.products li.product a img {
	display: block;
	width: 100%;
	aspect-ratio: var(--dm-card-thumb-ratio);
	object-fit: cover;
	border-radius: calc(var(--dm-radius) - 2px);
}

:is(.woocommerce, .woocommerce-page) ul.products li.product .woocommerce-loop-product__title,
:is(.woocommerce, .woocommerce-page) ul.products li.product .woocommerce-LoopProduct-link {
	font-family: var(--dm-font-heading-family);
	font-weight: var(--dm-font-heading-weight);
	line-height: var(--dm-font-heading-compact-line-height);
	letter-spacing: var(--dm-font-heading-compact-letter-spacing);
	color: var(--dm-color-text);
}

:is(.woocommerce, .woocommerce-page) ul.products li.product .price {
	margin: 0;
	color: var(--dm-color-primary-dark);
	font-weight: 600;
}

:is(.woocommerce, .woocommerce-page) ul.products li.product a.button,
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button.add_to_cart_button,
:is(.woocommerce, .woocommerce-page) .return-to-shop .button,
:is(.woocommerce, .woocommerce-page) .return-to-shop .wc-backward,
:is(.woocommerce, .woocommerce-page) .wc-proceed-to-checkout a.checkout-button,
:is(.woocommerce, .woocommerce-page) a.button.wc-backward {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: var(--dm-btn-padding-y) var(--dm-btn-padding-x);
	border-width: var(--dm-btn-border-width);
	border-style: solid;
	border-radius: var(--dm-btn-radius);
	background: var(--dm-btn-primary-bg);
	border-color: var(--dm-btn-primary-bg);
	color: var(--dm-woo-button-text);
	font-family: var(--dm-font-button-family);
	font-size: var(--dm-btn-font-size);
	font-weight: var(--dm-font-button-weight);
	line-height: var(--dm-woo-btn-line-height) !important;
	text-decoration: none;
	text-transform: none;
	cursor: pointer;
	transition: var(--dm-woo-btn-transition);
}

/* Loop CTA contract: keep native Woo markup but force stable DM button behavior. */
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button,
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button.add_to_cart_button,
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button.ajax_add_to_cart {
	position: static !important;
	inset: auto;
	top: auto;
	right: auto;
	bottom: auto;
	left: auto;
	display: inline-flex;
	width: auto !important;
	height: auto !important;
	min-height: 0 !important;
	padding: var(--dm-btn-padding-y) var(--dm-btn-padding-x) !important;
	margin-bottom: 0 !important;
	line-height: var(--dm-woo-btn-line-height) !important;
	opacity: 1 !important;
	visibility: visible !important;
	transform: none !important;
	transition: var(--dm-woo-btn-transition) !important;
}

:is(.woocommerce, .woocommerce-page) ul.products li.product a.button,
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button.add_to_cart_button {
	margin-top: auto;
	align-self: flex-start;
}

/* Keep loop CTA stable on card hover; only direct button hover/focus should alter it. */
:is(.woocommerce, .woocommerce-page) ul.products li.product:hover a.button,
:is(.woocommerce, .woocommerce-page) ul.products li.product:hover a.button.add_to_cart_button {
	background: var(--dm-btn-primary-bg) !important;
	border-color: var(--dm-btn-primary-bg) !important;
	color: var(--dm-woo-button-text) !important;
	opacity: 1 !important;
	visibility: visible !important;
	transform: none !important;
	box-shadow: none !important;
}

:is(.woocommerce, .woocommerce-page) .return-to-shop .button:hover,
:is(.woocommerce, .woocommerce-page) .return-to-shop .button:focus-visible,
:is(.woocommerce, .woocommerce-page) .return-to-shop .wc-backward:hover,
:is(.woocommerce, .woocommerce-page) .return-to-shop .wc-backward:focus-visible,
:is(.woocommerce, .woocommerce-page) .wc-proceed-to-checkout a.checkout-button:hover,
:is(.woocommerce, .woocommerce-page) .wc-proceed-to-checkout a.checkout-button:focus-visible,
:is(.woocommerce, .woocommerce-page) a.button.wc-backward:hover,
:is(.woocommerce, .woocommerce-page) a.button.wc-backward:focus-visible {
	background: var(--dm-btn-primary-bg-hover);
	border-color: var(--dm-btn-primary-bg-hover);
	color: var(--dm-woo-button-text);
	transform: translateY(var(--dm-btn-hover-lift));
	outline: none;
}

/* Hard override only for loop CTA hover: parent/plugin rules keep reasserting base state. */
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button.add_to_cart_button:hover,
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button.add_to_cart_button:focus-visible,
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button.product_type_simple:hover,
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button.product_type_simple:focus-visible,
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button.product_type_subscription:hover,
:is(.woocommerce, .woocommerce-page) ul.products li.product a.button.product_type_subscription:focus-visible {
	background: var(--dm-btn-primary-bg-hover) !important;
	border-color: var(--dm-btn-primary-bg-hover) !important;
	color: var(--dm-woo-button-text) !important;
	transform: none !important;
}

:is(.woocommerce, .woocommerce-page) .cart-empty,
:is(.woocommerce, .woocommerce-page) .woocommerce-info.cart-empty {
	margin-bottom: 1rem;
	padding: var(--dm-woo-box-pad);
	background: var(--dm-woo-box-bg);
	border: 1px solid var(--dm-woo-product-border);
	border-top: 4px solid var(--dm-color-primary);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
	color: var(--dm-color-text);
}

@media (hover: hover) and (pointer: fine) {

	:is(.woocommerce, .woocommerce-page) ul.products li.product:hover {
		box-shadow: var(--dm-shadow);
		transform: none;
	}
}

.woocommerce div.product {
	color: var(--dm-color-text);
}

.woocommerce div.product div.images img {
	border-radius: var(--dm-radius);
}

.woocommerce div.product form.cart {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
}

.woocommerce div.product .quantity .qty {
	min-height: 42px;
	border-radius: var(--dm-radius);
}

body.woocommerce-checkout .dm-newsletter-optin {
	margin-top: 1rem;
	margin-bottom: 1rem;
	padding: 1rem 1.125rem;
	background: var(--dm-woo-note-bg);
	border: 1px solid var(--dm-woo-box-border);
	border-radius: var(--dm-radius);
}

body.woocommerce-checkout .dm-checkout-download-note {
	margin-top: 1rem;
	margin-bottom: 0;
	padding: 1rem 1.125rem;
	background: var(--dm-woo-note-bg);
	border: 1px solid var(--dm-woo-box-border);
	border-radius: var(--dm-radius);
}

body.woocommerce-checkout .dm-newsletter-optin .woocommerce-form__label-for-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	cursor: pointer;
}

body.woocommerce-checkout .dm-newsletter-optin input[type="checkbox"] {
	margin-top: 0.25rem;
	accent-color: var(--dm-color-primary);
}

body.woocommerce-checkout .dm-newsletter-optin span {
	line-height: 1.5;
	color: var(--dm-color-text);
}

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	background: var(--dm-woo-box-bg);
	border: 1px solid var(--dm-woo-box-border);
	border-top: 4px solid var(--dm-color-primary);
	border-radius: var(--dm-radius);
	box-shadow: var(--dm-shadow);
	color: var(--dm-color-text);
	padding: var(--dm-woo-box-pad);
}

.woocommerce-error {
	border-top-color: var(--dm-woo-error);
}

@media (max-width: 768px) {

	body.woocommerce-cart .woocommerce-cart-form,
	body.woocommerce-cart .cart-collaterals .cart_totals,
	body.woocommerce-checkout .dm-checkout-coupon-slot .woocommerce-form-coupon-toggle,
	body.woocommerce-checkout .col2-set .col-1,
	body.woocommerce-checkout .col2-set .col-2,
	body.woocommerce-checkout #order_review,
	body.woocommerce-account .woocommerce-MyAccount-navigation,
	body.woocommerce-account .woocommerce-MyAccount-content {
		padding: 0.85rem;
	}

	body.woocommerce-checkout .dm-checkout-coupon-slot .form-row-first,
	body.woocommerce-checkout .dm-checkout-coupon-slot .form-row-last {
		float: none;
		width: 100%;
		margin-right: 0;
	}
}

/* ========================================================================
	Home — Sección "¿Qué necesitas?"
	Fuente de verdad: este style.css
	======================================================================== */

.dm-necesitas {
	padding: var(--dm-necesitas-pad-y) 0px;
	position: relative;
	overflow: hidden;
	isolation: isolate;
	color: var(--dm-necesitas-text);
}

.dm-necesitas__inner {
	max-width: 1200px;
	margin: 0 auto;
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: var(--dm-necesitas-gap);
	align-items: stretch;
	min-height: var(--dm-necesitas-min-height);
}

.dm-necesitas__left {
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	display: flex;
	flex-direction: column;
	justify-content: stretch;
	align-items: stretch;
	gap: 25px;
	height: 100%;
	min-height: var(--dm-necesitas-min-height);
	max-height: 100%;
	min-width: 0;
	padding: 42px 36px;
}

.dm-necesitas__copy {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 16px;
	max-width: 34rem;
	margin: 0 auto;
	flex: 1 1 auto;
	align-self: stretch;
	height: 100%;
}

.dm-necesitas__kicker {
	margin: 0;
	display: inline-flex;
	align-self: flex-start;
	padding: 0.35rem 0.8rem;
	border-radius: var(--dm-radius);
	background: var(--dm-necesitas-pill-bg);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--dm-color-primary);
}

.dm-necesitas__title,
.dm-necesitas__title-wrap {
	margin: 0;
}

.dm-necesitas__title {
	line-height: 1.08;
	font-size: clamp(1.75rem, 3vw, 2.8rem);
	text-wrap: balance;
}

.dm-necesitas__title-wrap--media .dm-editorial__title-media {
	justify-content: flex-start;
	margin: 0;
}

.dm-necesitas__title-wrap--media .dm-editorial__title-media img,
.dm-necesitas__title-image {
	display: block;
	width: min(100%, 520px);
	height: auto;
	margin: 0;
	object-fit: contain;
}

.dm-necesitas__lead {
	max-width: 34rem;
	line-height: 1.6;
	font-family: var(--dm-font-body-family);
	font-size: 1.25rem;
	color: var(--dm-color-text);
	text-align: center;
}

.dm-necesitas__lead p,
.dm-necesitas__note p {
	margin: 0;
}

.dm-necesitas__note {
	margin: 0;
	display: inline-flex;
	align-self: flex-start;
	padding: 0.35rem 0.8rem;
	border-radius: var(--dm-radius);
	background: var(--dm-necesitas-pill-bg);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--dm-color-primary);
}

.dm-necesitas__image {
	display: block;
	width: 100%;
	max-width: 360px;
	height: auto;
	align-self: flex-start;
	border-radius: var(--dm-necesitas-radius);
	border: 1px solid var(--dm-necesitas-border);
	box-shadow: var(--dm-necesitas-shadow);
}

.dm-necesitas__right {
	min-width: 0;
	height: 100%;
	position: relative;
}

.dm-carousel {
	height: 100%;
	position: relative;
	overflow: hidden;
	border-radius: var(--dm-necesitas-radius);
	min-height: var(--dm-necesitas-min-height);
	border: 1px solid var(--dm-necesitas-border);
	box-shadow: var(--dm-necesitas-shadow);
	transition: box-shadow var(--dm-card-transition), transform var(--dm-card-transition);
}

.dm-carousel__track {
	display: flex;
	height: 100%;
	will-change: transform;
	transition: transform 420ms ease;
}

.dm-carousel__slide {
	flex: 0 0 100%;
	width: 100%;
	min-height: var(--dm-necesitas-min-height);
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
	gap: 14px;
	padding: 42px 36px;
	box-sizing: border-box;
	text-decoration: none;
	color: inherit;
	background: var(--dm-slide-bg, var(--dm-carousel-slide-bg-fallback));
	position: relative;
	overflow: hidden;
	transition: transform var(--dm-necesitas-transition);
}

.dm-carousel__slide-hero {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	padding: clamp(10px, 1.4vw, 16px);
	border-radius: calc(var(--dm-necesitas-radius, 16px) - 6px);
	background: var(--dm-carousel-hero-bg);
}

.dm-carousel__slide-hero-img {
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
	object-position: center;
	display: block;
	transform: none;
	transition: transform var(--dm-card-transition), opacity 260ms ease;
}

@media (hover: hover) and (pointer: fine) {

	.dm-carousel:hover,
	.dm-carousel:focus-within {
		box-shadow: var(--dm-card-hover-shadow);
		transform: var(--dm-card-hover-lift);
	}

	.dm-carousel:hover .dm-carousel__slide-hero-img,
	.dm-carousel:focus-within .dm-carousel__slide-hero-img {
		transform: scale(1.03);
		opacity: 0.96;
	}
}

.dm-carousel__slide-body {
	position: relative;
	z-index: var(--dm-layer-base);
	color: var(--dm-carousel-slide-fg);
}

.dm-carousel__slide-kicker {
	display: block;
	margin: 0 0 8px;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: var(--dm-necesitas-kicker-tracking);
	text-transform: uppercase;
	opacity: 0.9;
}

.dm-carousel__slide-title {
	margin: 0 0 10px;
	font-family: var(--dm-font-heading-family);
	font-size: 40px;
	color: var(--dm-color-text);
	line-height: 1.25;
	font-weight: var(--dm-font-heading-weight);
}

.dm-carousel__slide-text {
	margin: 0 0 16px;
	max-width: 44ch;
	line-height: 1.55;
	font-size: 1.25rem;
	color: var(--dm-color-text);
	font-family: var(--dm-font-body-family);
	opacity: 0.95;
}

.dm-carousel__slide-cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-weight: 700;
	text-underline-offset: 3px;
}

.dm-carousel__slide-cta--accent,
.dm-carousel__slide-cta--accent:hover,
.dm-carousel__slide-cta--accent:focus-visible {
	background: var(--dm-brand-accent-dark);
	border: none;
	color: #fff;
}

.dm-carousel__slide-cta--accent:hover,
.dm-carousel__slide-cta--accent:focus-visible {
	background: var(--dm-color-accent-dark);
	border-color: var(--dm-color-accent-dark);
	transform: translateY(var(--dm-btn-hover-lift));
	outline: none;
}

.dm-carousel__controls {
	display: flex;
	justify-content: flex-end;
	gap: 10px;
	position: absolute;
	right: 14px;
	bottom: 14px;
	z-index: var(--dm-layer-ui);
}

.dm-carousel__btn {
	width: 42px;
	height: 42px;
	padding: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 999px;
	border: 1px solid var(--dm-carousel-btn-border);
	background: var(--dm-carousel-btn-bg);
	cursor: pointer;
	color: var(--dm-carousel-slide-fg);
	transition: transform var(--dm-necesitas-transition),
		background var(--dm-necesitas-transition),
		border-color var(--dm-necesitas-transition);
}

.dm-carousel__btn:hover {
	transform: translateY(-1px);
	background: var(--dm-carousel-btn-bg-hover);
	border-color: var(--dm-carousel-btn-border-hover);
}

.dm-carousel__btn svg {
	width: 18px;
	height: 18px;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.dm-carousel__dots {
	position: absolute;
	left: 16px;
	bottom: 18px;
	z-index: var(--dm-layer-ui);
	display: flex;
	gap: 7px;
	align-items: center;
}

.dm-carousel__dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	border: none;
	padding: 0;
	cursor: pointer;
	background: var(--dm-carousel-dot-bg);
	opacity: var(--dm-carousel-dot-opacity);
	transition: opacity var(--dm-necesitas-transition),
		transform var(--dm-necesitas-transition);
}

.dm-carousel__dot.is-active {
	opacity: var(--dm-carousel-dot-opacity-active);
	transform: scale(1.25);
}

.no-js .dm-carousel__track {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 16px;
}

.no-js .dm-carousel__slide {
	flex: unset;
	min-height: 320px;
}

.no-js .dm-carousel__controls,
.no-js .dm-carousel__dots {
	display: none;
}

@media (max-width: 980px) {
	.dm-necesitas__inner {
		grid-template-columns: 1fr;
	}

	.dm-necesitas__image {
		max-width: 100%;
	}
}

@media (max-width: 480px) {
	.dm-necesitas {
		padding-left: 16px;
		padding-right: 16px;
	}

	.dm-carousel__slide {
		padding: 28px 20px;
	}

	.dm-carousel__controls {
		right: 10px;
		bottom: 10px;
	}

	.dm-carousel__dots {
		left: 12px;
		bottom: 14px;
	}
}