/* =========================================================================
   Andez v4 — capa de diseño del sitio (inc/ds2.php la carga en todas las
   páginas del Sistema Andez 2.0, después de ds2.css).
   Paleta negro #080807 / blanco / claro #F2F2F2 (tokens en main.css y
   skin.css), escala de texto --ds-fs-* (ds2.css), botón con texto que sube,
   enlaces de línea, menú, footer, reseñas, método, formulario y entradas
   suaves. Lo propio de la portada va con body.home.
   ========================================================================= */

/* Alias cortos de la escala (ds2.css): H1 > H2 > H3 > entrada > texto > pequeño. */
body.ds2 {
	--v4-h1: var(--ds-fs-h1);
	--v4-h2: var(--ds-fs-h2);
	--v4-h3: var(--ds-fs-h4);
	--v4-lead: var(--ds-fs-lead);
	--v4-body: var(--ds-fs-base);
	--v4-sm: var(--ds-fs-sm);
	--v4-xs: var(--ds-fs-label);
}

/* Sin numeración en la web: (01), [06], «Paso • 01»… */
body.ds2 :is(.sec-label .num, .sec-label__count, .syst-card__idx) { display: none !important; }
body.ds2 .pj-label { font-size: 0 !important; }
body.ds2 .pj-label small { font-size: var(--v4-xs); }

/* --- Hero ------------------------------------------------------------------ */
body.home .hero--home .hero__badges { display: none; }
body.home .hero--home { min-height: 0; padding-top: 0; }
body.home .hero--home .hero__inner {
	display: grid; gap: var(--ds-s4); text-align: left; justify-items: start; align-items: end;
	padding-block: calc(var(--ds-s7) + var(--ds-s3)) var(--ds-s4);
}
@media (min-width: 960px) {
	body.home .hero--home .hero__inner { grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.9fr); column-gap: var(--ds-s7); align-items: start; }
	body.home .hero--home .hero__title { grid-row: 1 / span 2; }
	body.home .hero--home .hero__lead { grid-column: 2; grid-row: 1; align-self: start; padding-top: 0.2em; }
	body.home .hero--home .hero__actions { grid-column: 2; grid-row: 2; align-self: end; }
	/* Arriba, la entrada alinea con la primera línea del título; abajo, los botones con la última. */
	body.home .hero--home .hero__inner { row-gap: var(--ds-s3); align-items: stretch; }
	body.home .hero--home .hero__title { align-self: center; display: grid; align-content: start; }
	body.home .hero--home .hero__lead { align-self: start; }
	body.home .hero--home .hero__actions { align-self: end; }
}
body.home .hero--home:not(.hero--inner) .hero__title {
	margin: 0; font-size: var(--v4-h1); line-height: 1.02; letter-spacing: -0.04em; text-align: left; justify-items: start; gap: 0.12em;
}
body.home .hero--home .hero__title > span { display: block; white-space: nowrap; }
@media (max-width: 599px) { body.home .hero--home .hero__title > span { white-space: normal; } }
body.home .hero--home .hero__title-accent { margin-left: 0.1em; }
body.home .hero--home .hero__lead { margin: 0; max-width: 36ch; font-size: var(--v4-lead); line-height: 1.45; letter-spacing: -0.01em; color: var(--ink); text-align: left; }
body.home .hero--home .hero__actions { display: flex; flex-wrap: wrap; align-items: baseline; margin: 0; justify-content: flex-start; gap: var(--ds-s2) var(--ds-s5); }
body.home .hero--home .hero__actions .btn { font-size: var(--v4-sm); padding: var(--ds-s2) var(--ds-s3); }
body.home .hero--home .hero__link { font-size: var(--v4-sm); color: var(--ink); }

/* --- Proyectos: tarjetas más estrechas, texto pequeño ----------------------- */
body.ds2 .work--carousel { padding-top: var(--ds-s3); }
body.ds2 .work--carousel .hscroll .project-card { width: clamp(260px, 27vw, 410px); }
body.ds2 .work--carousel .project-card__media { aspect-ratio: 5 / 6; }
body.ds2 .work--carousel .project-card__media img { width: 100%; height: 100%; object-fit: cover; }
body.ds2 .work--carousel .project-card__body { padding-top: var(--ds-s2); gap: 0.15rem; }
body.ds2 .work--carousel .project-card__title { font-size: var(--v4-body); font-weight: 500; letter-spacing: -0.01em; text-transform: none; }
body.ds2 .work--carousel .project-card__tagline { font-size: var(--v4-sm); }
@media (max-width: 719px) { body.ds2 .work--carousel .hscroll .project-card { width: 68vw; } }

/* --- Sistemas: título contenido, entregables como items ----------------------- */
body.ds2 .systems .sec-label { display: none; }
/* Un mismo estilo de título en toda la portada (el de la casa: Geist 700). */
body.ds2 :is(.systems__title, .v4-method__title, .v4-reviews__title) {
	font-size: var(--v4-h2); font-weight: 700; line-height: 1.06; letter-spacing: -0.03em; text-transform: none; color: var(--light-ink);
}
/* Jerarquía: el H1 del hero manda; el resto de títulos va un paso por debajo. */
body.ds2 .contact-cta__title { font-size: var(--v4-h2); line-height: 1.06; letter-spacing: -0.03em; }
body.ds2 .v4-method .v4-method__title { color: var(--ink); }
body.ds2 .systems__title { max-width: 18ch; }
/* Subtítulos (sistemas, pasos): 600. */
body.ds2 :is(.syst-card__name, .v4-acc__name) { font-weight: 600; }
body.ds2 .syst { gap: 0; margin-top: var(--ds-s6); }
/* Se conserva el apilado de la portada publicada (sticky + --dim en motion.js):
   cada tarjeta sube y tapa a la anterior. Necesita fondo propio. */
body.ds2 .syst-card { min-height: min(62vh, 560px); height: auto; padding-block: var(--ds-s5); background: var(--light-bg); border-top: 1px solid var(--light-line); }
body.ds2 .syst-card:last-child { border-bottom: 1px solid var(--light-line); }
body.ds2 .syst-card__divider { display: none; }
body.ds2 .syst-card__head { margin: 0; }
body.ds2 .syst-card__name { font-size: var(--v4-h3); letter-spacing: -0.025em; }
/* Sin numeración en la portada. */
body.ds2 .syst-card__idx { display: none; }
body.ds2 .syst-card__body { gap: var(--ds-s4); margin-top: var(--ds-s3); }
body.ds2 .syst-card__desc { max-width: 46ch; font-size: var(--v4-body); line-height: 1.55; color: var(--light-muted); }
body.ds2 .syst-card__foot { display: grid; gap: var(--ds-s4); justify-content: stretch; margin-top: var(--ds-s4); }
body.ds2 .syst-card__list { display: grid; grid-template-columns: 1fr; gap: 0; margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--light-line); }
body.ds2 .syst-card__list li { position: relative; padding: var(--ds-s1) 0 var(--ds-s1) var(--ds-s3); font-size: var(--v4-sm); color: var(--light-ink); border-bottom: 1px solid var(--light-line); }
body.ds2 .syst-card__list li::before { content: "+"; position: absolute; left: 0; top: 0.6rem; color: var(--light-muted); }
body.ds2 .syst-card .btn--line { justify-self: start; font-size: var(--v4-sm); }
body.ds2 .syst-card__img { aspect-ratio: 4 / 3; overflow: hidden; border-radius: 4px; }
body.ds2 .syst-card__img img { width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 900px) {
	body.ds2 .syst-card { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 2.2fr); column-gap: var(--ds-s6); align-items: start; }
	body.ds2 .syst-card__head { display: flex; flex-direction: column-reverse; justify-content: flex-end; align-items: flex-start; gap: var(--ds-s1); height: auto; }
	body.ds2 .syst-card__body { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); column-gap: var(--ds-s6); margin-top: 0; align-items: start; }
	body.ds2 .syst-card__list { grid-template-columns: 1fr 1fr; column-gap: var(--ds-s4); }
}

/* --- Método: texto + acordeón a la izquierda, una foto a la derecha ---------- */
body.ds2 .v4-method, body.has-footer-reveal.ds2 .site-main > .v4-method { background: var(--bg); color: var(--ink); padding-block: var(--ds-s7); }
body.ds2 .v4-method :is(h2, h3) { color: var(--ink); margin: 0; }
body.ds2 .v4-method__grid { display: grid; gap: var(--ds-s6); }
@media (min-width: 960px) {
	body.ds2 .v4-method__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: var(--ds-s7); align-items: center; }
}
body.ds2 .v4-method__intro { display: grid; gap: var(--ds-s4); justify-items: start; align-content: start; }
body.ds2 .v4-method__title { max-width: 16ch; }
body.ds2 .v4-method__lead { max-width: 36ch; margin: 0; font-size: var(--v4-lead); line-height: 1.45; color: var(--muted); }
body.ds2 .v4-link { display: inline-block; padding-bottom: 0.3rem; border-bottom: 1px solid currentColor; font-size: var(--v4-sm); color: inherit; text-decoration: none; }
body.ds2 .v4-acc { width: 100%; margin-block: var(--ds-s2); border-top: 1px solid var(--line); }
body.ds2 .v4-acc__item { border-bottom: 1px solid var(--line); }
body.ds2 .v4-acc__head { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: var(--ds-s2); padding: var(--ds-s3) 0; cursor: pointer; list-style: none; }
body.ds2 .v4-acc__head::-webkit-details-marker { display: none; }
body.ds2 .v4-acc__num { font-size: max(0.75rem, 12px); color: var(--muted); }
body.ds2 .v4-acc__name { font-size: var(--v4-h3); letter-spacing: -0.02em; }
body.ds2 .v4-acc__icon { position: relative; width: 0.9rem; height: 0.9rem; }
body.ds2 .v4-acc__icon::before, body.ds2 .v4-acc__icon::after { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1.5px; background: currentColor; transition: transform 0.35s var(--ds-ease, ease); }
body.ds2 .v4-acc__icon::after { transform: rotate(90deg); }
body.ds2 .v4-acc__item[open] .v4-acc__icon::after { transform: rotate(0deg); }
body.ds2 .v4-acc__head:focus-visible { outline: 2px solid var(--ink); outline-offset: 4px; }
body.ds2 .v4-acc__body { display: grid; gap: var(--ds-s2); padding: 0 0 var(--ds-s3); }
body.ds2 .v4-acc__body p { margin: 0; max-width: 46ch; font-size: var(--v4-body); line-height: 1.55; color: var(--muted); }
/* Lo que incluye cada paso, en etiquetas. */
body.ds2 .v4-acc__body ul { display: flex; flex-wrap: wrap; gap: var(--ds-s1); margin: 0.25rem 0 0; padding: 0; list-style: none; }
body.ds2 .v4-acc__body li { padding: var(--ds-s1) var(--ds-s2); font-size: var(--v4-sm); line-height: 1.2; color: var(--ink); background: #1C1F1D; border-radius: 4px; }
body.ds2 .v4-acc__body { overflow: hidden; }
@keyframes v4-acc-in { from { opacity: 0; transform: translateY(-6px); } }
body.ds2 .v4-method__pic { position: relative; aspect-ratio: 4 / 5; overflow: hidden; border-radius: 8px; background: #1A1D1B; }
body.ds2 .v4-method__pic img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transform: scale(1.06); transition: opacity 1.1s cubic-bezier(.4,0,.2,1), transform 1.8s cubic-bezier(.2,.7,.2,1); }
body.ds2 .v4-method__pic img.is-on { opacity: 1; transform: none; z-index: 1; }
@media (max-width: 959px) { body.ds2 .v4-method__pic { aspect-ratio: 4 / 3; order: -1; } }
@media (prefers-reduced-motion: reduce) { body.ds2 .v4-method__pic img, body.ds2 .v4-acc__item[open] .v4-acc__body { transition: none; animation: none; } }

/* --- Reseñas --------------------------------------------------------------------- */
body.ds2 .v4-reviews { background: var(--light-bg); color: var(--light-ink); padding-block: var(--ds-s7) var(--ds-s5); border-top: 0; }
body.ds2 .contact-cta.section, body.ds2 .contact-cta { padding-top: var(--ds-s5) !important; }
body.ds2 .v4-reviews__head { display: grid; gap: var(--ds-s3); align-items: end; margin-bottom: var(--ds-s6); }
@media (min-width: 900px) { body.ds2 .v4-reviews__head { grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.8fr); column-gap: var(--ds-s6); } }
body.ds2 .v4-reviews__title { margin: 0; max-width: 16ch; }
body.ds2 .v4-reviews__note { margin: 0; font-size: var(--v4-body); line-height: 1.45; }
body.ds2 .v4-reviews__note a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
body.ds2 .v4-reviews__count { margin: 0; font-size: 0.9375rem; color: var(--light-muted); white-space: nowrap; }
body.ds2 .v4-reviews__wrap { padding-inline: var(--gutter); }
body.ds2 .v4-reviews__track { gap: var(--ds-s3); padding-bottom: var(--ds-s3); }
body.ds2 .v4-rev { display: grid; align-content: start; gap: var(--ds-s5); width: clamp(280px, 30vw, 440px); min-height: 22rem; margin: 0; padding: var(--ds-s5); background: #fff; border-radius: 8px; }
body.ds2 .v4-rev__who { display: flex; align-items: center; gap: var(--ds-s2); }
body.ds2 .v4-rev__ava { display: grid; place-items: center; flex: none; width: 3rem; height: 3rem; border-radius: 50%; background: var(--light-bg); font-size: 1.25rem; color: var(--light-ink); }
body.ds2 .v4-rev__name { display: block; font-size: var(--v4-body); color: var(--light-ink); }
body.ds2 .v4-rev__role { display: block; font-size: var(--v4-sm); color: var(--light-muted); }
body.ds2 .v4-rev__quote { margin: 0; font-size: var(--v4-lead); line-height: 1.45; letter-spacing: -0.01em; color: var(--light-ink); }
body.ds2 .v4-rev__src { margin: auto 0 0; font-size: var(--v4-xs); color: var(--light-muted); }

/* --- Footer equilibrado: correo a la izquierda, enlaces a la derecha y la
       marca a todo el ancho abajo ------------------------------------------------- */
body.ds2 .site-footer > .container { display: flex; flex-direction: column; }
body.ds2 .site-footer__bottom { order: 3; }
body.ds2 .site-footer__marklogo { order: 2; width: 100%; height: auto; max-width: none; margin: var(--ds-s5) 0 var(--ds-s3); align-self: stretch; }
body.ds2 .site-footer__topline { display: none; }
@media (min-width: 1024px) {
	body.ds2 .site-footer__grid { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 2.1fr); column-gap: var(--ds-s7); align-items: start; }
	body.ds2 .site-footer__newsletter { order: -1; grid-column: 1; grid-row: 1; }
	body.ds2 .site-footer__links { grid-column: 2; grid-row: 1; }
}
body.ds2 .site-footer { padding-top: var(--ds-s7); }
body.ds2 .site-footer__marklogo { width: var(--v4-wm, min(100%, calc((100vh - 39rem) * 3.9))); align-self: flex-start; }

/* --- Flechas que siguen al mouse (v4.js) --------------------------------
   Las flechas fijas se ocultan (siguen disponibles con teclado). */
@media (pointer: fine) {
	body.ds2 .carousel-arrow { opacity: 0 !important; pointer-events: none !important; }
	body.ds2 .carousel-arrow:focus-visible { opacity: 1 !important; pointer-events: auto !important; }
	body.ds2 .v4-cursor-on, body.ds2 .v4-cursor-on * { cursor: none !important; }
}
.v4-cur {
	position: fixed; left: 0; top: 0; z-index: 90; width: 5.5rem; height: 5.5rem; margin: -2.75rem 0 0 -2.75rem;
	display: grid; place-items: center; border-radius: 50%; pointer-events: none;
	background: #161816; color: #F5F7FA; font-size: 1.75rem; line-height: 1;
	transform: translate3d(var(--x, -200px), var(--y, -200px), 0) scale(0); transition: transform 0.35s cubic-bezier(.2,.8,.2,1);
	will-change: transform;
}
.v4-cur.is-on { transform: translate3d(var(--x), var(--y), 0) scale(1); }
.v4-cur.is-light { background: #F5F7FA; color: #080807; }
.v4-cur.is-off { opacity: 0.35; }
@media (prefers-reduced-motion: reduce) { .v4-cur { transition: none; } }
/* ® y ™ pequeños (v4.js los envuelve). */
body.ds2 .v4-mark { font-size: 0.55em; font-weight: inherit; vertical-align: super; position: static; margin-left: 0.04em; letter-spacing: 0; line-height: 0; }

/* Footer: enlaces más juntos. */
body.ds2 .site-footer .site-footer__col ul { gap: var(--ds-s1); }
body.ds2 .site-footer .site-footer__col li { font-size: var(--v4-sm); line-height: 1.3 !important; }
body.ds2 .site-footer .site-footer__col li a { line-height: 1.3 !important; }
body.ds2 .site-footer__title { margin-bottom: var(--ds-s2); }

/* --- Enlaces de línea (como en un portafolio editorial): al entrar el mouse
   la línea sale hacia el lado contrario y vuelve a dibujarse desde el lado
   por donde entró (v4.js pone data-dir). -------------------------------- */
body.ds2 :is(.v4-line, .v4-link, .btn--line, .hero__link, .v4-reviews__note a, .nav-panel__links a) {
	position: relative; display: inline-flex; align-items: center; gap: 0; min-height: 0; padding: 0 0 0.4rem; border: 0; border-radius: 0;
	background: none; color: inherit; font-weight: 500; text-decoration: none; transform: none; box-shadow: none;
}
body.home .hero__actions .v4-line { font-size: var(--v4-sm); color: var(--ink); }
body.ds2 .v4-reviews__note a { padding-bottom: 0.2rem; }
body.ds2 :is(.v4-line, .v4-link, .btn--line, .hero__link, .v4-reviews__note a, .nav-panel__links a)::before,
body.ds2 :is(.v4-line, .v4-link, .btn--line, .hero__link, .v4-reviews__note a, .nav-panel__links a)::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor;
	transition: transform 0.45s cubic-bezier(.65, 0, .35, 1); animation: none !important;
}
body.ds2 :is(.v4-line, .v4-link, .btn--line, .hero__link, .v4-reviews__note a, .nav-panel__links a)::before { transform: scaleX(1); transform-origin: right; transition-delay: 0.22s; }
body.ds2 :is(.v4-line, .v4-link, .btn--line, .hero__link, .v4-reviews__note a, .nav-panel__links a)::after { transform: scaleX(0); transform-origin: left; transition-delay: 0s; }
body.ds2 :is(.v4-line, .v4-link, .btn--line, .hero__link, .v4-reviews__note a, .nav-panel__links a):is(:hover, :focus-visible)::before { transform: scaleX(0); transition-delay: 0s; }
body.ds2 :is(.v4-line, .v4-link, .btn--line, .hero__link, .v4-reviews__note a, .nav-panel__links a):is(:hover, :focus-visible)::after { transform: scaleX(1); transition-delay: 0.22s; }
body.ds2 [data-dir="r"]::before { transform-origin: left !important; }
body.ds2 [data-dir="r"]::after { transform-origin: right !important; }
body.ds2 :is(.v4-line, .v4-link, .btn--line):hover { color: inherit; }
body.home .hero__actions .v4-line:hover { color: var(--ink); }
body.ds2 :is(.v4-line, .v4-link, .btn--line, .hero__link, .v4-reviews__note a, .nav-panel__links a):focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }
@media (prefers-reduced-motion: reduce) {
	body.ds2 :is(.v4-line, .v4-link, .btn--line, .hero__link, .v4-reviews__note a, .nav-panel__links a)::before,
	body.ds2 :is(.v4-line, .v4-link, .btn--line, .hero__link, .v4-reviews__note a, .nav-panel__links a)::after { transition: none; }
}

/* --- Hero: verde del fondo un poco más presente --------------------------- */
body.home .hero--home.has-pleats .hero__pleats { filter: brightness(1.3) saturate(1.2); }

/* --- Botón principal: el texto sube y entra otra copia desde abajo; la
   flecha aparece a la derecha. Misma pastilla verde de la casa. ------------ */
body.ds2 .v4-roll { display: inline-flex; align-items: center; gap: 0; overflow: hidden; transition: background-color 0.35s ease, gap 0.45s cubic-bezier(.65,0,.35,1), padding 0.45s cubic-bezier(.65,0,.35,1); }
body.ds2 .v4-roll__txt { display: inline-block; overflow: hidden; line-height: 1.3; }
body.ds2 .v4-roll__in { position: relative; display: inline-block; transition: transform 0.55s cubic-bezier(.65,0,.35,1); }
body.ds2 .v4-roll__in::after { content: attr(data-text); position: absolute; left: 0; top: 100%; white-space: nowrap; }
body.ds2 .v4-roll__arrow { display: inline-block; width: 0; opacity: 0; transform: translateX(-0.4rem); transition: width 0.45s cubic-bezier(.65,0,.35,1), opacity 0.3s ease, transform 0.45s cubic-bezier(.65,0,.35,1); }
body.ds2 .v4-roll:is(:hover, :focus-visible) { transform: none; box-shadow: none; background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
body.ds2 .v4-roll:is(:hover, :focus-visible) .v4-roll__in { transform: translateY(-100%); }
body.ds2 .v4-roll:is(:hover, :focus-visible) .v4-roll__arrow { width: 1em; opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { body.ds2 .v4-roll, body.ds2 .v4-roll * { transition: none !important; } }

/* Mismos pasos en el resto de la portada. */
body.ds2 .syst-card__name { line-height: 1.15; }
body.ds2 .v4-acc__head { padding-block: var(--ds-s2); }
body.ds2 .v4-rev__quote { line-height: 1.5; }
body.ds2 .v4-rev { min-height: 18rem; }
body.ds2 .contact-cta :is(label, legend, .contact-cta__label) { font-size: var(--v4-sm); }
body.ds2 .site-footer__newsletter > p { font-size: var(--v4-body); line-height: 1.45; }
body.ds2 .site-footer__title { font-size: var(--v4-body); }

/* --- Formulario final: el título acompaña al bajar (bajo el header) y los
   chips en el gris neutro de la portada. ---------------------------------- */
@media (min-width: 960px) {
	body.ds2 .contact-cta__grid { align-items: start; }
	body.ds2 .contact-cta__intro { position: sticky; top: 7rem; display: grid; gap: var(--ds-s5); justify-items: start; }
}
body.ds2 .contact-cta .cc-pill span { background: #E4E4E4; }
body.ds2 .contact-cta .cc-pill input:checked + span { background: var(--accent); color: var(--accent-ink); }

/* --- Entradas suaves (v4.js · data-v4-in): suben y aparecen despacio,
   escalonadas, con una curva larga. ------------------------------------------ */
.v4-js [data-v4-in] { opacity: 0; transform: translate3d(0, 28px, 0); transition: opacity 1.1s cubic-bezier(.16, 1, .3, 1), transform 1.3s cubic-bezier(.16, 1, .3, 1); transition-delay: calc(var(--d, 0) * 90ms); }
.v4-js [data-v4-in].is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .v4-js [data-v4-in] { opacity: 1; transform: none; transition: none; } }

/* =========================================================================
   Móvil (portada v4)
   ========================================================================= */
@media (max-width: 959px) {
	/* Menú sin la cápsula. */
	body.ds2 .site-nav { background: none !important; border: 0 !important; box-shadow: none !important; backdrop-filter: none !important; padding-inline: 0 !important; }

	/* Hero: título en dos líneas que llenan el ancho, entrada al 100 %, un solo botón. */
	body.home .hero--home .hero__inner { padding-block: calc(var(--ds-s6) + var(--ds-s5)) var(--ds-s4); gap: var(--ds-s3); }
	body.home .hero--home:not(.hero--inner) .hero__title { font-size: min(7.7vw, 3.25rem); line-height: 1.08; gap: 0.08em; }
	body.home .hero--home .hero__title > span { white-space: nowrap; }
	body.home .hero--home .hero__lead { max-width: none; padding-top: 0; }
	body.home .hero--home .hero__actions { width: 100%; }
	body.home .hero--home .hero__actions .btn { flex: 1 1 100%; justify-content: center; }
	body.home .hero--home .hero__actions .v4-line { display: none; }
	body.ds2 .work--carousel { padding-top: 0; }

	/* Sistemas: ritmo parejo, sin altura mínima. */
	body.ds2 .systems.section { padding-block: var(--ds-s6) var(--ds-s5); }
	body.ds2 .syst { margin-top: var(--ds-s5); }
	body.ds2 .syst-card { min-height: 0; padding-block: var(--ds-s4) var(--ds-s5); }
	body.ds2 .syst-card__body { margin-top: var(--ds-s2); gap: var(--ds-s3); }
	body.ds2 .syst-card__foot { margin-top: var(--ds-s3); gap: var(--ds-s3); }
	body.ds2 .syst-card__list li { padding-block: var(--ds-s1); }

	/* Formulario compacto. */
	body.ds2 .contact-cta .cc-pills { gap: var(--ds-s1); }
	body.ds2 .contact-cta .cc-pill span { padding: var(--ds-s1) var(--ds-s2); font-size: var(--v4-sm); }
	body.ds2 .contact-cta .cc-group { margin-bottom: var(--ds-s3); }
	body.ds2 .contact-cta__grid { gap: var(--ds-s4); }

	/* Footer: sin las listas de enlaces (ya están en el menú). */
	body.ds2 .site-footer__links { display: none; }
	body.ds2 .site-footer { padding-top: var(--ds-s6); }
	body.ds2 .site-footer__newsletter .newsletter-form__row .btn { padding-block: var(--ds-s2); }
}

/* Datos de contacto bajo el título del formulario. */
body.ds2 .contact-cta__details { display: grid; width: min(100%, 26rem); margin: 0; border-top: 1px solid var(--light-line); }
body.ds2 .contact-cta__details div { display: flex; justify-content: space-between; gap: var(--ds-s3); padding: var(--ds-s2) 0; border-bottom: 1px solid var(--light-line); }
body.ds2 .contact-cta__details dt { font-size: var(--v4-sm); color: var(--light-muted); }
body.ds2 .contact-cta__details dd { margin: 0; font-size: var(--v4-sm); text-align: right; }
body.ds2 .contact-cta__details a { color: inherit; text-decoration: none; }
body.ds2 .contact-cta__details a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* --- Menú: mismo orden de siempre (enlaces, soluciones, acción, redes),
   en el claro nuevo, sin líneas y con entradas suaves en cascada. --------- */
body.ds2 .nav-panel { background: #F2F2F2 !important; }
body.ds2 .nav-panel :is(.nav-panel__top, .nav-sol, .nav-panel__side, .nav-panel__mail, .nav-panel__cta) { border: 0 !important; }
body.ds2 .nav-panel .nav-panel__top { padding-bottom: 0; }
body.ds2 .nav-panel .nav-panel__links a { letter-spacing: -0.03em; opacity: 1 !important; transform: none !important; }
body.ds2 .nav-panel .nav-panel__cta { font-size: var(--v4-sm); }
body.ds2 .nav-panel :is(.nav-panel__loc, .nav-panel__side a, .nav-panel__mail) { font-size: var(--v4-sm); }
/* Panel: entra deslizándose con una curva larga. */
body.ds2 .nav-panel { transform: translateX(32px); transition: opacity 0.5s cubic-bezier(.16,1,.3,1), transform 0.8s cubic-bezier(.16,1,.3,1), visibility 0s linear 0.5s !important; }
body.ds2:has(.site-nav.is-open) .nav-panel { transform: none; transition: opacity 0.5s cubic-bezier(.16,1,.3,1), transform 0.8s cubic-bezier(.16,1,.3,1), visibility 0s !important; }
/* Contenido en cascada: enlaces, soluciones, acción y redes. */
body.ds2 .nav-panel :is(.nav-panel__links li, .nav-sol__col, .nav-panel__cta, .nav-panel__side, .nav-panel__mail) {
	opacity: 0; transform: translate3d(0, 18px, 0);
	transition: opacity 0.7s cubic-bezier(.16,1,.3,1), transform 0.9s cubic-bezier(.16,1,.3,1);
	transition-delay: 0s;
}
body.ds2:has(.site-nav.is-open) .nav-panel :is(.nav-panel__links li, .nav-sol__col, .nav-panel__cta, .nav-panel__side, .nav-panel__mail) { opacity: 1; transform: none; }
body.ds2:has(.site-nav.is-open) .nav-panel__links li:nth-child(1) { transition-delay: 0.08s; }
body.ds2:has(.site-nav.is-open) .nav-panel__links li:nth-child(2) { transition-delay: 0.13s; }
body.ds2:has(.site-nav.is-open) .nav-panel__links li:nth-child(3) { transition-delay: 0.18s; }
body.ds2:has(.site-nav.is-open) .nav-panel__links li:nth-child(4) { transition-delay: 0.23s; }
body.ds2:has(.site-nav.is-open) .nav-panel__links li:nth-child(5) { transition-delay: 0.28s; }
body.ds2:has(.site-nav.is-open) .nav-panel__links li:nth-child(6) { transition-delay: 0.33s; }
body.ds2:has(.site-nav.is-open) .nav-sol__col:nth-child(1) { transition-delay: 0.38s; }
body.ds2:has(.site-nav.is-open) .nav-sol__col:nth-child(2) { transition-delay: 0.43s; }
body.ds2:has(.site-nav.is-open) .nav-sol__col:nth-child(3) { transition-delay: 0.48s; }
body.ds2:has(.site-nav.is-open) .nav-panel__cta { transition-delay: 0.5s; }
body.ds2:has(.site-nav.is-open) :is(.nav-panel__side, .nav-panel__mail) { transition-delay: 0.56s; }
@media (prefers-reduced-motion: reduce) {
	body.ds2 .nav-panel, body.ds2 .nav-panel * { transition: none !important; transform: none !important; }
}

/* Móvil: sin hueco entre el hero y el carrusel. */
@media (max-width: 959px) {
	body.home .hero--home { padding-bottom: 0 !important; }
	body.home .hero--home .hero__inner { padding-bottom: var(--ds-s5); row-gap: var(--ds-s4); }
	body.ds2 .work--carousel { padding-top: 0 !important; }
}

body.ds2 .nav-panel .nav-panel__links a { display: inline-flex; width: max-content; font-weight: 600; color: var(--light-ink); }
/* En el menú la línea solo aparece al pasar el mouse (sin línea en reposo). */
body.ds2 .nav-panel .nav-panel__links a::before { display: none; }
body.ds2 .nav-panel .nav-panel__links a::after { height: 2px; bottom: 0.1em; }

/* Nada se sale de lado a lado (carruseles a sangre). clip no rompe sticky. */
body.ds2 .site-main { overflow-x: clip; }

/* --- Heroes de todas las páginas: sin etiqueta arriba; en páginas internas,
   título a la izquierda y entrada, nota y acciones a la derecha (como en la
   portada). Solo cuando el hero trae acciones (no el del auditor con su campo). */
body.ds2 .hero .hero__badges { display: none !important; }
body.ds2 .hero__link { color: var(--ink); font-size: var(--v4-sm); }
@media (min-width: 960px) {
	body.ds2 .hero--inner .hero__inner:has(> .hero__actions) {
		display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.9fr); column-gap: var(--ds-s7); row-gap: var(--ds-s3);
		align-items: start; text-align: left; justify-items: start;
	}
	body.ds2 .hero--inner .hero__inner:has(> .hero__actions) > .hero__title { grid-column: 1; grid-row: 1 / span 3; align-self: center; margin: 0; }
	body.ds2 .hero--inner .hero__inner:has(> .hero__actions) > :is(.hero__lead, .svc-hero__note, .hero__actions) { grid-column: 2; margin: 0; max-width: 40ch; }
	body.ds2 .hero--inner .hero__inner:has(> .hero__actions) > .hero__lead { font-size: var(--v4-lead); line-height: 1.45; color: var(--ink); grid-row: 1; }
	body.ds2 .hero--inner .hero__inner:has(> .hero__actions) > .svc-hero__note { grid-row: 2; }
	body.ds2 .hero--inner .hero__inner:has(> .hero__actions) > .hero__actions { grid-row: 3; position: static; }
	body.ds2 .hero--inner .hero__inner:has(> .hero__actions) > .hero__actions { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--ds-s2) var(--ds-s5); justify-content: flex-start; }
}
body.ds2 .hero--inner .hero__actions .btn { font-size: var(--v4-sm); padding: var(--ds-s2) var(--ds-s3); }

/* =========================================================================
   /nosotros/ (lectura editorial)
   ========================================================================= */
/* Hero con foto: título a la izquierda, entrada a la derecha. */
body.ds2 .about-hero__crumb { display: none; }
@media (min-width: 960px) {
	body.ds2 .about-hero--img > .container { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.9fr); column-gap: var(--ds-s7); align-items: center; }
	body.ds2 .about-hero--img .about-hero__title { margin: 0; }
	body.ds2 .about-hero--img .about-hero__lead { margin: 0; max-width: 40ch; font-size: var(--v4-lead); line-height: 1.45; color: var(--ink); }
}
body.ds2 .about-hero__title { font-size: var(--ds-fs-h1p); }
body.ds2 .ab-title { margin: 0; font-size: var(--v4-h2); font-weight: 700; line-height: 1.06; letter-spacing: -0.03em; }

/* Historia: título y texto a la izquierda; la foto, fija a la derecha mientras se lee. */
body.ds2 .ab-story { background: var(--bg); color: var(--ink); }
body.ds2 .ab-story .ab-title { color: var(--ink); }
body.ds2 .ab-story__grid { display: grid; gap: var(--ds-s5); }
body.ds2 .ab-story__main { display: grid; gap: var(--ds-s4); justify-items: start; align-content: start; }
body.ds2 .ab-story__main .btn--line { color: var(--ink); }
body.ds2 .ab-story__pic { margin: 0; aspect-ratio: 4 / 5; overflow: hidden; border-radius: 8px; background: #1A1A1A; }
body.ds2 .ab-story__pic img { width: 100%; height: 100%; object-fit: cover; object-position: 55% 50%; }
@media (min-width: 960px) {
	body.ds2 .ab-story__grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); column-gap: var(--ds-s7); align-items: start; }
	body.ds2 .ab-story__pic { position: sticky; top: 6.5rem; max-height: calc(100vh - 8rem); }
}
@media (max-width: 959px) { body.ds2 .ab-story__pic { order: -1; aspect-ratio: 3 / 2; } }
/* Texto de la historia: un solo tamaño y un solo color, ancho cómodo de lectura. */
body.ds2 .ab-story__text { display: grid; gap: 1em; max-width: 58ch; }
body.ds2 .ab-story__text p { margin: 0; font-size: var(--v4-body); line-height: 1.65; color: var(--muted); }

/* Equipo: retratos iguales lado a lado; «Leer bio» abre la página de cada uno. */
body.ds2 .ab-team__grid { display: grid; gap: var(--ds-s6) var(--ds-s3); margin-top: var(--ds-s6); }
@media (min-width: 720px) { body.ds2 .ab-team__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; } }
body.ds2 .ab-member__sum { display: grid; gap: 0.15rem; color: inherit; text-decoration: none; }
body.ds2 .ab-member__pic { display: block; margin-bottom: var(--ds-s3); aspect-ratio: 4 / 5; overflow: hidden; border-radius: 6px; background: var(--light-line); }
body.ds2 .ab-member__pic img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s cubic-bezier(.16,1,.3,1); }
body.ds2 .ab-member__sum:hover .ab-member__pic img { transform: scale(1.03); }
body.ds2 .ab-member__name { font-size: var(--v4-h3); font-weight: 600; letter-spacing: -0.02em; color: var(--light-ink); }
body.ds2 .ab-member__role { font-size: var(--v4-body); color: var(--light-muted); }
body.ds2 .ab-member__toggle { justify-self: start; margin-top: var(--ds-s2); padding-bottom: 0.2rem; border-bottom: 1px solid currentColor; font-size: var(--v4-sm); color: var(--light-ink); }

/* Principios sin numeración. */
body.ds2 .principle-row__num { display: none; }
body.ds2 .principle-row { grid-template-columns: 1fr; }

/* Círculo con texto que sigue al mouse (data-v4-cursor, v4.js). */
.v4-cur--label { width: 6.5rem; height: 6.5rem; margin: -3.25rem 0 0 -3.25rem; font-size: 0.9375rem; font-weight: 500; text-align: center; line-height: 1.15; padding: 0.5rem; }
/* Hero de /nosotros/ más compacto y con la entrada en tamaño de texto. */
body.ds2 .about-hero--img { min-height: 0; padding-block: calc(var(--ds-s8) + var(--ds-s4)) var(--ds-s7); }
body.ds2 .about-hero--img .about-hero__lead { font-size: var(--v4-body) !important; line-height: 1.55; max-width: 44ch; }
/* Mismo ancho y espaciado que «Por qué elegir Andez». */
body.ds2 .ab-story.section { padding-block: var(--ds-s7); }
body.ds2 .ab-story > .container { max-width: 1180px; }
/* Equipo: retratos que caben en pantalla con nombre y cargo. */
body.ds2 .ab-team.section { padding-block: var(--ds-s6); }
body.ds2 .ab-member__pic { aspect-ratio: 4 / 5; width: 100%; }
@media (min-width: 720px) { body.ds2 .ab-team__grid { margin-top: var(--ds-s5); } }

/* =========================================================================
   Página de cada fundador (founder.php)
   ========================================================================= */
body.ds2 .fd { background: var(--light-bg); color: var(--light-ink); padding-top: calc(var(--ds-s7) + var(--ds-s3)); }
body.ds2 .fd :is(h1, h2) { color: var(--light-ink); margin: 0; }
body.ds2 .fd__grid { display: grid; gap: var(--ds-s5); padding-bottom: var(--ds-s7); }
@media (min-width: 960px) {
	body.ds2 .fd__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: var(--ds-s7); align-items: start; }
	body.ds2 .fd__pic { position: sticky; top: 6.5rem; }
}
body.ds2 .fd__pic { margin: 0; aspect-ratio: 4 / 5; max-height: calc(100vh - 8rem); overflow: hidden; border-radius: 8px; background: var(--light-line); }
body.ds2 .fd__pic img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; }
body.ds2 .fd__body { display: grid; gap: var(--ds-s3); align-content: start; }
body.ds2 .fd__back { justify-self: start; margin-bottom: var(--ds-s3); font-size: var(--v4-sm); color: var(--light-ink); }
body.ds2 .fd__name { font-size: var(--v4-h2); font-weight: 700; line-height: 1.04; letter-spacing: -0.035em; }
body.ds2 .fd__role { margin: 0; font-size: var(--v4-body); color: var(--light-muted); }
body.ds2 .fd__lead { margin: var(--ds-s3) 0 0; }
/* Bio: un solo tamaño y un solo color. */
body.ds2 :is(.fd__lead, .fd__bio p) { font-size: var(--v4-body); line-height: 1.65; color: var(--light-muted); }
body.ds2 .fd__bio { display: grid; gap: 1em; }
body.ds2 .fd__bio p { margin: 0; }
/* Datos en filas con línea: etiqueta a la izquierda, dato a la derecha. */
body.ds2 .fd__kicker { margin: var(--ds-s5) 0 0; font-size: var(--v4-body); color: var(--light-ink); }
body.ds2 .fd__facts { margin: var(--ds-s3) 0 0; border-top: 1px solid var(--light-line); }
body.ds2 .fd__facts div { display: flex; justify-content: space-between; align-items: baseline; gap: var(--ds-s4); padding: var(--ds-s3) 0; border-bottom: 1px solid var(--light-line); }
body.ds2 .fd__facts dt { flex: none; font-size: var(--v4-body); color: var(--light-ink); }
body.ds2 .fd__facts dd { margin: 0; max-width: 65%; font-size: var(--v4-body); line-height: 1.4; text-align: right; color: var(--light-ink); }
/* Playlist: tarjeta negra con el reproductor de Spotify bajo pedido. */
body.ds2 .fd__music { position: relative; overflow: hidden; margin-top: var(--ds-s5); padding: var(--ds-s5); background: var(--bg); color: var(--ink); border-radius: 8px; display: grid; gap: var(--ds-s1); }
/* Ecualizador decorativo. */
body.ds2 .fd__music::after { content: ""; position: absolute; right: clamp(1.25rem, 2.5vw, 2rem); top: clamp(1.5rem, 2.5vw, 2.25rem); width: 2.25rem; height: 1.5rem; background: linear-gradient(var(--accent), var(--accent)) 0 100% / 4px 60% no-repeat, linear-gradient(var(--accent), var(--accent)) 8px 100% / 4px 100% no-repeat, linear-gradient(var(--accent), var(--accent)) 16px 100% / 4px 40% no-repeat, linear-gradient(var(--accent), var(--accent)) 24px 100% / 4px 80% no-repeat, linear-gradient(var(--accent), var(--accent)) 32px 100% / 4px 50% no-repeat; animation: fd-eq 1.4s ease-in-out infinite alternate; }
@keyframes fd-eq { to { background-size: 4px 30%, 4px 70%, 4px 100%, 4px 45%, 4px 90%; } }
@media (prefers-reduced-motion: reduce) { body.ds2 .fd__music::after { animation: none; } }
body.ds2 .fd__music-kicker { margin: 0; font-size: var(--v4-xs); letter-spacing: 0.06em; text-transform: uppercase; color: var(--accent); }
body.ds2 .fd .fd__music-title { color: var(--ink); font-size: var(--v4-h2); line-height: 1.05; padding-right: 3rem; font-weight: 600; letter-spacing: -0.02em; }
body.ds2 .fd__music-desc { margin: 0; font-size: var(--v4-sm); line-height: 1.55; color: var(--muted); max-width: 46ch; }
body.ds2 .fd__play { justify-self: start; margin-top: var(--ds-s2); text-decoration: none; display: inline-flex; align-items: center; gap: var(--ds-s1); padding: var(--ds-s2) var(--ds-s3); border: 0; border-radius: 999px; background: var(--accent); color: var(--accent-ink); font: inherit; font-size: var(--v4-sm); font-weight: 600; cursor: pointer; }
body.ds2 .fd__social { display: flex; flex-wrap: wrap; gap: var(--ds-s4); margin: var(--ds-s4) 0 0; padding: 0; list-style: none; }
body.ds2 .fd__social a { font-size: var(--v4-sm); color: var(--light-ink); }
/* El otro fundador */
body.ds2 .fd-next { background: var(--bg); color: var(--ink); }
body.ds2 .fd-next__link { display: grid; grid-template-columns: clamp(5rem, 10vw, 8rem) 1fr; gap: var(--ds-s4); align-items: center; padding-block: var(--ds-s6); color: inherit; text-decoration: none; }
body.ds2 .fd-next__pic { aspect-ratio: 1; overflow: hidden; border-radius: 50%; }
body.ds2 .fd-next__pic img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; }
body.ds2 .fd-next__txt { display: grid; gap: 0.3rem; }
body.ds2 .fd-next__kicker { font-size: var(--v4-sm); color: var(--muted); }
body.ds2 .fd-next__name { font-size: var(--v4-h2); font-weight: 700; letter-spacing: -0.035em; line-height: 1; }
body.ds2 .fd-next__name span { display: inline-block; transition: transform 0.6s cubic-bezier(.16,1,.3,1); }
body.ds2 .fd-next__link:hover .fd-next__name span { transform: translateX(0.4rem); }
body.ds2 .fd-next__role { font-size: var(--v4-sm); color: var(--muted); }
/* Equipo: más aire a los lados (retratos más centrados). */
@media (min-width: 720px) {
	body.ds2 .ab-team__grid { max-width: 62rem; margin-inline: auto; column-gap: var(--ds-s5); }
	body.ds2 .ab-team .ab-title { max-width: 62rem; margin-inline: auto; }
}

/* El equipo de cuatro patas (/nosotros/) */
body.ds2 .ab-cats.section { padding-top: 0; }
body.ds2 .ab-cats__head { display: grid; gap: var(--ds-s2); max-width: 62rem; margin-inline: auto; }
body.ds2 .ab-cats__lead { margin: 0; font-size: var(--v4-body); color: var(--light-muted); }
body.ds2 .ab-cats__grid { display: grid; gap: var(--ds-s5) var(--ds-s3); max-width: 62rem; margin: var(--ds-s5) auto 0; }
@media (min-width: 720px) { body.ds2 .ab-cats__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
body.ds2 .ab-cat { margin: 0; display: grid; gap: var(--ds-s3); align-content: start; }
@media (min-width: 720px) { body.ds2 .ab-cats__grid { align-items: start; } }
body.ds2 .ab-cat__pic { display: block; aspect-ratio: 1; overflow: hidden; border-radius: 6px; background: var(--light-line); }
body.ds2 .ab-cat__pic img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s cubic-bezier(.16,1,.3,1); }
body.ds2 .ab-cat:hover .ab-cat__pic img { transform: scale(1.04) rotate(-1deg); }
body.ds2 .ab-cat figcaption { display: grid; gap: 0.15rem; }
body.ds2 .ab-cat__name { font-size: var(--v4-h3); font-weight: 600; letter-spacing: -0.02em; color: var(--light-ink); }
body.ds2 .ab-cat__role { font-size: var(--v4-body); color: var(--light-muted); }
body.ds2 .ab-cat__note { margin-top: 0.4rem; font-size: var(--v4-sm); line-height: 1.5; color: var(--light-muted); }

/* =========================================================================
   /proyectos/ (como la portada: hero en dos columnas, tarjetas limpias)
   ========================================================================= */
body.ds2 .work-page__head { min-height: 0; }
body.ds2 .work-hero { padding-block: calc(var(--ds-s7) + var(--ds-s4)) var(--ds-s4); }
@media (min-width: 960px) {
	body.ds2 .work-hero__content { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.9fr); column-gap: var(--ds-s7); row-gap: var(--ds-s3); align-items: start; max-width: none; }
	body.ds2 .work-hero__title { grid-column: 1; grid-row: 1 / span 2; align-self: center; margin: 0; }
	body.ds2 .work-hero__lead { grid-column: 2; grid-row: 1; margin: 0; max-width: 40ch; }
	body.ds2 .work-hero__content > .hero__actions { grid-column: 2; grid-row: 2; margin: 0; }
}
body.ds2 .work-hero__title { font-size: var(--ds-fs-h1p); line-height: 1.04; letter-spacing: -0.035em; }
body.ds2 .work-hero__lead { font-size: var(--v4-body); line-height: 1.55; color: var(--ink); }
body.ds2 .work-hero__content > .hero__actions { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--ds-s2) var(--ds-s5); }
body.ds2 .work-hero__content > .hero__actions .btn { font-size: var(--v4-sm); padding: var(--ds-s2) var(--ds-s3); }

/* Tarjetas: foto, nombre, frase y una sola etiqueta discreta. */
body.ds2 .wk-grid { gap: var(--ds-s5) var(--ds-s3); }
body.ds2 .wk-card__media { border-radius: 6px; overflow: hidden; }
body.ds2 .wk-card__body { padding-top: var(--ds-s2); }
body.ds2 .wk-card__title { font-size: var(--v4-h3); font-weight: 600; letter-spacing: -0.02em; text-transform: none; }
body.ds2 .wk-card__tagline { font-size: var(--v4-sm); color: var(--muted); }
body.ds2 .wk-card__evidence { display: none; }
body.ds2 .wk-card__cat { font-size: var(--v4-xs); padding: 0.35rem 0.7rem; border-radius: 999px; background: var(--surface-2); color: var(--muted); border: 0; }
body.ds2 .wk-dd__btn { font-size: var(--v4-sm); }
/* Filtro de proyectos: separadores tenues que no tocan los bordes. */
body.ds2 .wk-dd__panel { padding: 0.4rem; border: 1px solid rgba(255,255,255,0.06); }
body.ds2 .wk-dd__item { position: relative; border-bottom: 0 !important; border-radius: 10px; }
body.ds2 .wk-dd__item + .wk-dd__item::after { content: ""; position: absolute; left: 1rem; right: 1rem; top: 0; height: 1px; background: rgba(255,255,255,0.07); }
body.ds2 .wk-dd__item:hover { background: rgba(255,255,255,0.05); }
body.ds2 .wk-dd__item:hover::after, body.ds2 .wk-dd__item:hover + .wk-dd__item::after { opacity: 0; }

/* Móvil: títulos con recuadro que no se parten (el recuadro va entero y el
   tamaño baja lo justo para que quepa). */
@media (max-width: 599px) {
	body.ds2 :is(h1, h2) .frame-box { white-space: nowrap; display: inline-block; }
	body.ds2 :is(.hero--inner .hero__title, .about-hero__title, .work-hero__title, .pj-hero__title) { font-size: min(7.4vw, 2rem); line-height: 1.12; }
	body.ds2 :is(.systems__title, .v4-method__title, .v4-reviews__title, .contact-cta__title, .section__title, .ab-title) { font-size: min(7vw, 1.875rem); }
}
@media (max-width: 640px) { body.ds2 .hero__actions .hero__link { align-self: center; width: auto; } }

/* /proyectos/: filtro fijo abajo (también en móvil) y sin el chat flotante. */
body.ds2.post-type-archive-proyecto .aa { display: none !important; }
@media (max-width: 959px) {
	body.ds2 .wk-dd { position: fixed !important; top: auto !important; left: var(--gutter) !important; right: var(--gutter) !important; bottom: 12px !important; transform: none !important; z-index: 60; margin: 0; padding-inline: 0 !important; }
	body.ds2 .wk-dd__btn { width: 100%; box-shadow: 0 14px 40px -12px rgba(0,0,0,.6); }
	body.ds2 .wk-dd__panel { top: auto; bottom: calc(100% + 8px); left: 0; right: 0; }
}
@media (min-width: 960px) { body.ds2 .work-hero__title { grid-row: 1; } }

/* Imágenes con esquinas rectas en todo el sitio. */
body.ds2 main :is(img, picture, video, figure, [class*="__media"], [class*="__pic"], [class*="__img"], .cs-fig, .project-card__media, .wk-card__media, .syst-card__img, .v4-method__pic, .ab-story__pic, .ab-member__pic, .ab-cat__pic, .fd__pic, .principles__media, .journey-step__media) { border-radius: 0 !important; }
body.ds2 .fd-next__pic { border-radius: 50% !important; }
/* /proyectos/: menos aire bajo el hero y tarjetas un poco más altas. */
body.ds2 .work-hero { padding-bottom: var(--ds-s4); }
body.ds2 .work-page__body { padding-top: var(--ds-s3); }
body.ds2 .wk-grid { margin-top: 0; }
body.ds2 .wk-card__media { aspect-ratio: 5 / 4.4; }
@media (max-width: 719px) { body.ds2 .wk-card__media { aspect-ratio: 1 / 1; } }

/* =========================================================================
   Pulido móvil: espacios parejos
   ========================================================================= */
@media (max-width: 719px) {
	/* Hero de /nosotros/: sin el vacío bajo el texto. */
	body.ds2 .about-hero--img { padding-block: calc(var(--ds-s6) + var(--ds-s5)) var(--ds-s5); }
	body.ds2 .ab-story.section { padding-block: var(--ds-s6); }
	/* Formulario: grupos más juntos, el primero pegado a los datos. */
	body.ds2 .contact-cta__grid { gap: var(--ds-s4); }
	body.ds2 .contact-cta__form { gap: var(--ds-s4); }
	body.ds2 .contact-cta .cc-group { margin: 0; padding: 0; }
	body.ds2 .contact-cta .cc-label { margin-bottom: var(--ds-s1); }
	body.ds2 .contact-cta__details div { padding-block: var(--ds-s2); }
	/* Reseñas: la tarjeta mide lo que su texto. */
	body.ds2 .v4-rev { min-height: 0; gap: var(--ds-s3); width: 82vw; }
	/* Proyectos: sin el dato repetido (cliente) en el detalle. */
	body.ds2 .cs-intro__facts div:first-child:nth-last-child(1) { display: none; }
}

/* El equipo de cuatro patas: carrusel en móvil. */
@media (max-width: 719px) {
	body.ds2 .ab-cats__grid { display: flex; gap: var(--ds-s2); overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter); margin-inline: calc(-1 * var(--gutter)); padding: 0 var(--gutter) var(--ds-s2); scrollbar-width: none; }
	body.ds2 .ab-cats__grid::-webkit-scrollbar { display: none; }
	body.ds2 .ab-cat { flex: 0 0 72vw; scroll-snap-align: start; }
}
