/* Titanium Strength — catálogo online · design system v2
   Sistema visual del layout del equipo (catalogonovo.indd, 09/2026): Menda Black + Rubik, negro y #E41B13.
   0 tokens · 1 base · 2 tipografía · 3 primitivas · 4 nav · 5 bloques · 6 paginador · 7 sistema · 8 responsive */
@font-face { font-family: "Menda"; src: url("data:font/woff2;base64,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") format("woff2"); font-weight: 900; font-display: swap; }

/* ============ 0 · TOKENS ============ */
:root {
  /* color */
  --bg: #0A0A0B; --bg2: #101012; --card: #16161A; --card2: #1C1C21; --line: #26262B; --line2: #34343B; --line3: #55555E;
  --ink: #FFFFFF; --ink2: #C4C4CA; --muted: #8A8A93; --red: #E41B13; --red2: #B8130E; --red3: #F2271E;
  --light: #FAFAF7; --light2: #EFEFEA; --lightink: #0B0B0C; --lightink2: #3A3A3E; --lightmuted: #6A6A70; --lightline: #E2E2DC;
  --amber: #E8BE86; --amber-bg: #241B10; --amber-line: #45341C; --green: #6FD3A0; --green-bg: #12261C;
  /* familias */
  --dsp: "Menda", "Arial Black", Impact, sans-serif;
  --body: Rubik, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --mono: ui-monospace, "SF Mono", Menlo, monospace;
  /* escala tipográfica (Menda es muy ancha: los display van medidos) */
  --t-display-xl: clamp(26px, 3.9vw, 56px);   /* portada: claim a un solo cuerpo */
  --t-display:    clamp(28px, 4.4vw, 60px);   /* h1 de página */
  --t-title:      clamp(24px, 2.9vw, 40px);   /* h2 de sección */
  --t-title-sm:   clamp(18px, 1.8vw, 24px);   /* h3 en tarjetas (Menda, corto) */
  --t-dsp-min:    16px;                       /* mínimo absoluto para Menda */
  --t-num:        clamp(28px, 3vw, 44px);     /* cifras */
  --t-num-lg:     clamp(22px, 6.4vw, 46px);   /* cifras destacadas (bignumbers): cifra y unidad van
                                                 en nowrap, así que el cuerpo se mide contra la más
                                                 larga ("+10 países") en su columna */
  --t-num-sm:     clamp(20px, 2vw, 26px);
  --t-lead:       17px;
  --t-body:       15px;
  --t-body-sm:    13.5px;
  --t-caption:    12.5px;
  --t-label:      12px;                       /* eyebrow: uppercase + tracking */
  --t-micro:      10.5px;                     /* etiquetas de specs */
  /* espacio */
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s5: 24px; --s6: 32px; --s7: 48px; --s8: 64px; --s9: 96px; --s10: 128px;
  --sec-y: clamp(64px, 8vw, 104px);   /* ritmo vertical de sección */
  --gap: 20px;                        /* separación entre tarjetas */
  --gap-lg: clamp(32px, 4.5vw, 56px); /* separación entre columnas editoriales */
  --card-pad: 24px;
  /* forma */
  --r-sm: 8px; --r: 14px; --r-lg: 20px; --r-pill: 999px;
  --w: 1280px; --w-wide: 1560px; --w-text: 60ch; --pad: 40px; --nav: 68px; --subnav: 54px;
  /* motion (definidos ahora, usados a fondo en fase 3) */
  --dur-1: 150ms; --dur-2: 260ms; --dur-3: 480ms; --dur-page: 640ms; --dur-count: 1600ms;
  --ease: cubic-bezier(.2,.7,.2,1); --ease-out: cubic-bezier(.16,1,.3,1); --ease-in: cubic-bezier(.7,0,.84,0);
}

/* ============ 1 · BASE ============ */
* { box-sizing: border-box; min-width: 0; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--body); font-weight: 300;
       font-size: 16px; line-height: 1.6; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
p { margin: 0; }
b, strong { font-weight: 600; color: var(--ink); }
button { font-family: var(--body); }
.wrap { max-width: var(--w); margin: 0 auto; padding: 0 var(--pad); }
.red { color: var(--red); }
.br { display: block; }

/* ============ 2 · TIPOGRAFÍA ============ */
h1, h2, h3, h4, .h1, .h2, .h3, .h4 { margin: 0; font-family: var(--dsp); font-weight: 900; text-transform: uppercase;
                 line-height: 1.02; letter-spacing: -.005em; overflow-wrap: normal; hyphens: none; }
.h1 { font-size: var(--t-display); }
.h2 { font-size: var(--t-title); }
.h3 { font-size: var(--t-title-sm); }
.h4 { font-size: var(--t-dsp-min); }
.rx { color: var(--red); font-style: italic; }
/* títulos "de texto": Rubik 600, para nombres largos y etiquetas pequeñas */
.tt { font-family: var(--body); font-weight: 600; text-transform: none; letter-spacing: 0; line-height: 1.3; }
.tt.up { text-transform: uppercase; letter-spacing: .02em; }
.eyebrow { font-family: var(--body); font-weight: 600; font-size: var(--t-label); letter-spacing: .18em;
           text-transform: uppercase; color: var(--muted); }
.micro { font-size: var(--t-micro); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.lead { font-size: var(--t-lead); color: var(--ink2); max-width: var(--w-text); }
.kicker { font-family: var(--body); font-weight: 600; text-transform: uppercase; letter-spacing: .03em; font-size: 14px; }
.p { color: var(--ink2); font-size: var(--t-body); } .p + .p { margin-top: var(--s4); }
.num { font-family: var(--dsp); font-size: var(--t-num); line-height: 1; white-space: nowrap; }
code { font-family: var(--mono); font-size: .85em; }

/* ---- ¿Qué es RX? ---- Todo centrado y, detrás del texto, la RX gigante en blueprint láser.
   La coreografía cuelga de --p (0 → 1 al entrar en pantalla), calcada de los pilares:
     0 → .12  aparece la rejilla técnica;
     0 → .55  el trazo de la RX se dibuja de izquierda a derecha, barrido por la línea láser;
    .3 → .6   entran titular y párrafos, escalonados;
    .6 → .9   la rejilla baja a un fondo tenue y la RX queda encendida, latiendo mientras se dibuja. */
.blk-rx { overflow: hidden; background: #000; }
.rxb { position: relative; display: grid; place-items: center; text-align: center; padding: var(--s4) 0; }
.rxb-fondo, .rxb-txt { grid-area: 1 / 1; }
.rxb-fondo { position: relative; pointer-events: none; user-select: none; z-index: 0; }
.rxb-fondo .bp-rejilla { inset: -18% -14%;
  opacity: calc(clamp(0, calc(var(--p) / .12), 1) * (1 - .8 * clamp(0, calc((var(--p) - .6) / .3), 1))); }
.rxb-mark { position: relative; font-family: var(--dsp); font-weight: 900; font-style: italic; line-height: .9; letter-spacing: -.03em;
  font-size: clamp(220px, 38vw, 560px); padding: 0 .14em 0 .06em; color: transparent;
  -webkit-text-stroke: 2px rgba(228,27,19,.85);
  filter: drop-shadow(0 0 12px rgba(228,27,19,.55));
  clip-path: inset(-14% calc((1 - clamp(0, calc(var(--p) / .55), 1)) * 114% - 14%) -14% -14%); }
.rxb[data-fase="trazo"] .rxb-mark { animation: bp-pulso 1.3s ease-in-out infinite alternate; }
.rxb-scan { position: absolute; top: -6%; bottom: -6%; width: 2px; pointer-events: none;
  left: calc(clamp(0, calc(var(--p) / .55), 1) * 100%); transform: translateX(-50%);
  background: linear-gradient(180deg, transparent, #fff 18%, #fff 82%, transparent);
  box-shadow: 0 0 10px 3px rgba(228,27,19,.95), 0 0 34px 8px rgba(228,27,19,.4);
  opacity: calc(clamp(0, calc(var(--p) / .04), 1) * (1 - clamp(0, calc((var(--p) - .55) / .06), 1))); }
.rxb-txt { position: relative; z-index: 1; max-width: 72ch; padding: var(--s5) var(--s6); }
/* charco oscuro detrás del texto: baja el trazo y la rejilla justo donde hay que leer, y se
   funde con el negro de la sección en los bordes. Entra con el texto. */
.rxb-txt::before { content: ""; position: absolute; inset: -14% -18%; z-index: -1; pointer-events: none;
  background: radial-gradient(ellipse at 50% 50%, rgba(0,0,0,.94) 0%, rgba(0,0,0,.86) 42%, rgba(0,0,0,.55) 66%, rgba(0,0,0,0) 86%);
  opacity: clamp(0, calc((var(--p) - .3) / .3), 1); }
.rxb-txt .eyebrow { display: block; margin-bottom: var(--s4); }
.rxb-txt .h2 { font-size: var(--t-display); }
@media (min-width: 700px) { .rxb-txt .h2 { white-space: nowrap; } }   /* de una pieza; en móvil ya cabe */
.rxb-txt .h2 .rx { font-size: .92em; }
.rxb-lead { margin: var(--s5) auto 0; font-size: var(--t-lead); color: var(--ink); max-width: 34em; }
.rxb-txt .p { margin: var(--s4) auto 0; max-width: 40em; color: var(--ink2); }
.rxb-txt .p b { color: var(--ink); font-weight: 600; }
/* titular y párrafos entran escalonados (--i) una vez el trazo lleva un tercio */
.rxb-txt > * { --e: clamp(0, calc((var(--p) - .3 - var(--i, 0) * .08) / .3), 1); opacity: var(--e); transform: translateY(calc((1 - var(--e)) * 16px)); }
@media (max-width: 640px) { .rxb-mark { font-size: clamp(170px, 46vw, 260px); -webkit-text-stroke-width: 1.5px; } .rxb-fondo .bp-rejilla { inset: -24% -20%; } }
@media (prefers-reduced-motion: reduce) { .rxb[data-fase="trazo"] .rxb-mark { animation: none; } }

/* ============ 3 · PRIMITIVAS ============ */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; height: 50px; padding: 0 26px;
       border-radius: var(--r-pill); font-family: var(--body); font-weight: 600; font-size: 14px; border: 1px solid transparent;
       cursor: pointer; transition: transform var(--dur-1) var(--ease), background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease); white-space: nowrap; }
.btn:hover { transform: translateY(-1px); }
.btn:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }
.btn-red { background: var(--red); color: #fff; } .btn-red:hover { background: var(--red3); }
.btn-white { background: #fff; color: var(--lightink); }
.btn-ghost { border-color: var(--line2); color: var(--ink); background: transparent; }
.btn-ghost:hover { border-color: var(--line3); }
.btn-dark { background: var(--lightink); color: #fff; }
.btn-sm { height: 40px; padding: 0 18px; font-size: 13px; }
.chip { display: inline-flex; align-items: center; height: 34px; padding: 0 14px; border-radius: var(--r-pill);
        border: 1px solid var(--line2); font-size: 13px; font-weight: 500; color: var(--ink2);
        background: transparent; cursor: pointer; transition: background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease); }
.chip.on { background: var(--red); border-color: var(--red); color: #fff; }
.chip:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }

.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); overflow: hidden;
        display: flex; flex-direction: column; }
.card.hov { transition: transform var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease); }
.card.hov:hover { transform: translateY(-3px); border-color: var(--line2); }
.card > .im { flex: none; min-height: 0; overflow: hidden; }
.card > .im img { width: 100%; height: 100%; object-fit: cover; }
.card > .body { padding: var(--card-pad); display: flex; flex-direction: column; flex: 1; }
.ph { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--s2); color: var(--muted);
      font-size: var(--t-micro); letter-spacing: .1em; text-transform: uppercase; text-align: center; }
.ph svg { width: 30px; height: 30px; }
.ico { width: 36px; height: 36px; border-radius: 50%; background: var(--card2); flex: none; display: flex; align-items: center; justify-content: center; }
.ico svg { width: 17px; height: 17px; stroke: #fff; fill: none; }
.ico.red { background: var(--red); border-radius: 9px; }

.estado { display: inline-flex; align-items: center; font-size: 10px; letter-spacing: .1em; text-transform: uppercase;
          padding: 3px 8px; border-radius: 3px; font-family: var(--body); font-weight: 600; white-space: nowrap; }
.estado.ok { background: var(--green-bg); color: var(--green); }
.estado.wip { background: var(--amber-bg); color: var(--amber); }
.estado.cs { background: #2A0A0A; color: #FF6B60; }
.estado.prov { background: #0F1F2E; color: #7CC4FF; }
.aviso.prov { background: #0F1A26; border-color: #1E3A55; color: #9CCBF5; }
.aviso.prov b { color: #CFE6FF; }
.subnav a.prov i { width: 6px; height: 6px; border-radius: 50%; background: #7CC4FF; display: inline-block; }
.validar { display: inline-flex; align-items: center; gap: 8px; font-size: var(--t-label); color: var(--amber); background: var(--amber-bg);
           border: 1px solid var(--amber-line); padding: 5px 10px; border-radius: 6px; }
.validar svg { width: 12px; height: 12px; flex: none; }
.validar-row { margin-top: var(--s4); }
.bene.first { margin-top: 0; }
.aviso { display: flex; gap: 12px; align-items: flex-start; background: var(--amber-bg); border: 1px solid var(--amber-line);
         border-radius: var(--r-sm); padding: 14px 18px; color: var(--amber); font-size: var(--t-body-sm); }
.aviso svg { width: 16px; height: 16px; flex: none; margin-top: 2px; }
.aviso b { color: #F2D9A8; }
.list { display: flex; flex-direction: column; margin-top: var(--s5); }
.list > div { display: flex; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.list > div:last-child { border-bottom: none; }
.list h4 { font-family: var(--body); text-transform: uppercase; font-weight: 600; font-size: var(--t-body-sm); letter-spacing: .02em; }
.list p { font-size: var(--t-body-sm); color: var(--ink2); margin-top: 3px; }

/* ============ 4 · NAV ============ */
.nav { position: sticky; top: 0; z-index: 40; background: rgba(10,10,11,.94); backdrop-filter: blur(16px);
       border-bottom: 1px solid var(--line); }
.nav .wrap { display: flex; align-items: center; justify-content: space-between; height: var(--nav); gap: var(--s5); max-width: var(--w-wide); position: relative; }
.nav .logo { display: flex; align-items: center; } .nav .logo img { height: 22px; width: auto; }
.nav nav { display: flex; gap: 4px; align-items: center; height: 100%; }
.nav nav > a, .nav nav > .dd > .dd-btn { display: inline-flex; align-items: center; gap: 6px; height: 40px; padding: 0 12px; border-radius: var(--r-pill);
       font-size: 14px; font-weight: 500; color: var(--ink2); transition: color var(--dur-1) var(--ease), background var(--dur-1) var(--ease); }
.nav nav > .dd > .dd-btn { border: 0; background: transparent; font-family: var(--body); cursor: pointer; }
.nav nav > .dd > .dd-btn:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }
.nav nav > a:hover, .nav nav > .dd > .dd-btn:hover, .nav nav .dd.open > .dd-btn { color: #fff; background: var(--card); }
.nav nav > a.on, .nav nav > .dd > .dd-btn.on { color: #fff; }
.nav nav > a.on::after, .nav nav > .dd > .dd-btn.on::after { content: ""; position: absolute; left: 12px; right: 12px; bottom: -14px; height: 2px; background: var(--red); }
.nav nav > a, .nav nav > .dd > .dd-btn { position: relative; white-space: nowrap; }
/* Nueve pestañas: hasta 1180 px va la hamburguesa, y hasta 1439 las pestañas se compactan
   (más aún hasta 1300) para que quepan en una fila junto al logo y Mi sala */
@media (min-width: 1181px) and (max-width: 1439px) {
  .nav nav { gap: 0; }
  .nav nav > a, .nav nav > .dd > .dd-btn { padding: 0 9px; font-size: 13.5px; }
  .nav nav > a.cta { margin-left: 6px; padding: 0 14px; }
}
@media (min-width: 1181px) and (max-width: 1300px) {
  .nav nav > a, .nav nav > .dd > .dd-btn { padding: 0 7px; font-size: 13px; }
  .nav nav > a.cta { margin-left: 4px; padding: 0 12px; }
  .nav nav > a.destacado { gap: 6px; }
}
/* LevantaTuGym va destacada para que se encuentre: en blanco, con un punto rojo delante que
   late dos veces al cargar (menos de 5 s: luego se queda quieto) y nada con reduced-motion */
.nav nav > a.destacado { color: #fff; font-weight: 600; gap: 8px; }
.punto { position: relative; flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--red); }
.punto::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 1.5px solid var(--red); opacity: 0;
                animation: punto-late 2.2s var(--ease-out) .6s 2; }
@keyframes punto-late { 0% { transform: scale(.4); opacity: .9; } 80%, 100% { transform: scale(1.7); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .punto::after { animation: none; } }
.mnav .grp a.big.destacado span { display: inline-flex; align-items: center; gap: 12px; white-space: nowrap; }
.mnav .grp a.big.destacado .punto { width: 9px; height: 9px; }
/* La pestaña de contacto es la llamada comercial: botón rojo, sin el subrayado de "encendida" */
.nav nav > a.cta { margin-left: 8px; padding: 0 16px; background: var(--red); color: #fff; font-weight: 600; }
.nav nav > a.cta:hover { background: var(--red3); color: #fff; }
.nav nav > a.cta.on::after { display: none; }
.mnav .grp a.big.cta { color: var(--red); }
/* móvil: las gamas colgando de su pestaña, más pequeñas y sangradas */
.mnav .msub { margin: 0 0 10px; padding-left: 14px; border-left: 1px solid var(--line2); }
.mnav .msub a { padding: 8px 0; font-family: var(--dsp); font-weight: 900; font-size: 15px; text-transform: uppercase; }
.mnav .msub a .rx { font-size: .75em; }
/* móvil: "Gamas" es rótulo, no enlace; los temas cierran la lista en letra de texto */
.mnav .grp .lbl { padding: 11px 0; font-family: var(--dsp); font-weight: 900; font-size: 22px; text-transform: uppercase; color: var(--ink); cursor: default; }
.mnav .msub-temas { display: flex; flex-direction: column; margin-top: 6px; padding-top: 6px; border-top: 1px solid var(--line); }
.mnav .msub .msub-temas a { font-family: var(--body); font-weight: 500; font-size: 15px; text-transform: none; color: var(--ink2); }
.nav .dd > .dd-btn svg { width: 12px; height: 12px; stroke: currentColor; fill: none; transition: transform var(--dur-1) var(--ease); }
.nav .dd.open > .dd-btn svg { transform: rotate(180deg); }
.nav .dd { position: relative; height: 100%; display: flex; align-items: center; }
.nav .dd.wide { position: static; }
.nav-right { display: flex; align-items: center; gap: 10px; }
/* En los otros idiomas una palabra puede ser más larga que el hueco del título
   (Individualisierung, Personalizzazione): se parte antes que salirse. El español no
   lo necesita y se queda como estaba. */
html:not([lang="es"]) :is(h1, h2, h3, h4, .h1, .h2) { overflow-wrap: break-word; }
/* Idioma: un <select> nativo, invisible, encima de la pastilla con el código (ES, EN…).
   Así el móvil abre su selector de siempre y el teclado lo maneja sin código. Solo sale
   con más de un idioma publicado (idioma.js). */
.idioma { position: relative; display: inline-flex; }
.idioma[hidden] { display: none; }
.idioma-l { display: inline-flex; align-items: center; justify-content: center; height: 40px; min-width: 44px; padding: 0 12px;
            border: 1px solid var(--line2); border-radius: var(--r-pill); color: var(--ink2);
            font-family: var(--body); font-size: 12.5px; font-weight: 600; letter-spacing: .06em;
            transition: color var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease); }
.idioma select { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; font-size: 16px; }
.idioma:hover .idioma-l { color: #fff; border-color: var(--line3); }
.idioma:focus-within .idioma-l { outline: 2px solid var(--red); outline-offset: 2px; }
/* Mi sala: lo marcado como interés. Pastilla con contador rojo, que no sale con la sala vacía.
   Entre 1181 y 1439 px el menú va justo y se queda en el icono; en los móviles pequeños, igual. */
.misala { display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 14px 0 12px; position: relative;
          border: 1px solid var(--line2); border-radius: var(--r-pill); background: transparent; color: var(--ink2);
          font-family: var(--body); font-size: 13.5px; font-weight: 500; white-space: nowrap; cursor: pointer;
          transition: color var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease); }
.misala:hover, .misala[aria-expanded="true"] { color: #fff; border-color: var(--line3); }
.misala:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }
.misala svg { width: 17px; height: 17px; stroke: currentColor; fill: none; flex: none; }
.misala b { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 6px;
            border-radius: 10px; background: var(--red); color: #fff; font-size: 12px; font-weight: 600; }
.misala.vacia b { display: none; }
.misala.late b { animation: misala-late .5s var(--ease-out); }
@keyframes misala-late { 40% { transform: scale(1.35); } }
@media (prefers-reduced-motion: reduce) { .misala.late b { animation: none; } }
@media (min-width: 1181px) and (max-width: 1439px), (max-width: 420px) {
  .misala { width: 40px; padding: 0; justify-content: center; }
  .misala-l { display: none; }
  .misala b { position: absolute; top: -6px; right: -7px; }
}
.burger { display: none; width: 40px; height: 40px; border: 1px solid var(--line2); border-radius: var(--r-pill); background: transparent;
          cursor: pointer; align-items: center; justify-content: center; color: #fff; }
.burger svg { width: 18px; height: 18px; stroke: currentColor; fill: none; }

/* mega-menú (desktop) */
.mega { position: absolute; top: calc(100% + 10px); left: 0; transform: translateY(-6px); opacity: 0; pointer-events: none;
        background: var(--bg2); border: 1px solid var(--line2); border-radius: var(--r-lg); padding: var(--s5); z-index: 50;
        box-shadow: 0 30px 80px rgba(0,0,0,.55); transition: opacity var(--dur-2) var(--ease), transform var(--dur-2) var(--ease); }
.dd.open .mega { opacity: 1; pointer-events: auto; transform: translateY(0); }
.dd.wide .mega { top: calc(var(--nav) - 6px); left: var(--pad); right: var(--pad); margin-inline: auto; }   /* centrado bajo el menú */
.mega-lineas { max-width: 1000px; }
/* Cardio & Hybrid: las dos soluciones, en dos columnas */
.mega-sol { max-width: 620px; }
.mega-sol .mega-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
.mega-head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s5); margin-bottom: var(--s4); }
.mega-head .eyebrow { color: var(--ink); }
.mega-head span { font-size: var(--t-caption); color: var(--muted); }
.mega-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 10px; }
.mega-grid a { display: grid; grid-template-columns: 56px minmax(0,1fr); gap: 12px; align-items: center; padding: 10px; border-radius: var(--r-sm);
               transition: background var(--dur-1) var(--ease); }
.mega-grid a:hover { background: var(--card); }
.mega-grid .im { width: 56px; height: 56px; border-radius: var(--r-sm); overflow: hidden; background: #120A0A; }
.mega-grid .im img { width: 100%; height: 100%; object-fit: cover; }
.mega-grid b { display: block; font-family: var(--dsp); font-weight: 900; font-size: var(--t-dsp-min); text-transform: uppercase; color: #fff; line-height: 1.05; }
.mega-grid b .rx { font-size: .7em; }
.mega-grid small { display: block; font-size: var(--t-caption); color: var(--muted); margin-top: 3px; line-height: 1.35; }
.mega-foot { display: flex; gap: var(--s4); margin-top: var(--s4); padding-top: var(--s4); border-top: 1px solid var(--line); flex-wrap: wrap; }
.mega-foot a { font-size: 13px; color: var(--ink2); display: inline-flex; align-items: center; gap: 6px; }
.mega-foot a:hover { color: #fff; }
.mega-foot a svg { width: 13px; height: 13px; stroke: currentColor; fill: none; }
.mega-lista { min-width: 300px; display: flex; flex-direction: column; gap: 2px; }
.mega-lista a { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 12px; padding: 11px 12px; border-radius: var(--r-sm); }
.mega-lista a:hover { background: var(--card); }
.mega-lista b { display: block; font-size: 14px; font-weight: 600; color: #fff; }
.mega-lista small { display: block; font-size: var(--t-caption); color: var(--muted); }

/* menú móvil */
.mnav { position: fixed; inset: 0; top: var(--nav); background: var(--bg); z-index: 39; overflow-y: auto; padding: var(--s5) var(--pad) var(--s8);
        transform: translateY(-8px); opacity: 0; pointer-events: none; transition: opacity var(--dur-2) var(--ease), transform var(--dur-2) var(--ease); }
body.menu .mnav { opacity: 1; pointer-events: auto; transform: none; }
body.menu { overflow: hidden; }
.mnav .grp { padding: var(--s4) 0; border-bottom: 1px solid var(--line); }
.mnav .grp > .eyebrow { margin-bottom: var(--s2); }
.mnav .grp a { display: flex; justify-content: space-between; align-items: center; padding: 11px 0; font-size: 17px; color: var(--ink); }
.mnav .grp a small { font-size: var(--t-caption); color: var(--muted); }
.mnav .grp a.big { font-family: var(--dsp); font-size: 22px; text-transform: uppercase; }
.mnav .grp a small { font-family: var(--body); text-transform: none; text-align: right; max-width: 55%; }
.mnav .cta { margin-top: var(--s5); display: flex; flex-direction: column; gap: 10px; }

/* subnav de línea */
.subnav { border-bottom: 1px solid var(--line); background: var(--bg2); position: sticky; top: var(--nav); z-index: 20; }
.subnav .wrap { display: flex; align-items: center; gap: 22px; height: var(--subnav); overflow-x: auto; scrollbar-width: none; }
.subnav .wrap::-webkit-scrollbar { display: none; }
.subnav a { flex: none; font-size: var(--t-body-sm); color: var(--ink2); white-space: nowrap; display: inline-flex; align-items: center; gap: 7px; height: 100%; position: relative; }
.subnav a:hover { color: #fff; }
.subnav a.pend { color: var(--muted); }
.subnav a.pend i { width: 6px; height: 6px; border-radius: 50%; background: var(--amber); display: inline-block; }
.subnav .back { gap: 4px; color: var(--muted); font-size: 13px; flex: none; padding-right: 14px; border-right: 1px solid var(--line2); }
.subnav .back svg { width: 16px; height: 16px; }
.subnav .lin { font-family: var(--dsp); font-weight: 900; text-transform: uppercase; font-size: var(--t-dsp-min); letter-spacing: .02em; color: #fff; flex: none; margin-right: 4px; }
.subnav a.on { color: #fff; }
.subnav a.on::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--red); }
/* Las soluciones de Cardio & Hybrid son de una página: su subnav es la vuelta y el título. En
   móvil «Entrenamiento híbrido» no cabe al lado de «Cardio & Hybrid» (el scroll-spy corría la
   barra y la vuelta quedaba cortada), así que la vuelta se queda en la flecha —el nombre sigue
   ahí para el lector de pantalla— y el título puede partirse en dos líneas. */
@media (max-width: 520px) {
  .subnav.sol .back { padding-right: 12px; }
  .subnav.sol .back span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .subnav.sol .lin { flex: 0 1 auto; min-width: 0; white-space: normal; line-height: 1.1; }
}
.crumbs { display: flex; align-items: center; gap: 8px; font-family: var(--body); font-weight: 600; font-size: var(--t-label); letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.crumbs a { color: var(--muted); } .crumbs a:hover { color: #fff; } .crumbs a:last-child { color: var(--red); }
.crumbs i { font-style: normal; color: var(--line2); }

/* ============ 5 · BLOQUES ============ */
section { padding: var(--sec-y) 0; border-bottom: 1px solid var(--line); scroll-margin-top: var(--nav); }
section.light { background: var(--light); color: var(--lightink); border-color: var(--lightline); }
section.light .eyebrow { color: var(--lightmuted); }
section.light .lead, section.light p { color: var(--lightink2); }
section.light b { color: var(--lightink); }
.shead { display: grid; grid-template-columns: minmax(0,1.25fr) minmax(0,1fr); gap: var(--gap-lg); align-items: end; margin-bottom: var(--s7); }
.shead .h2 { margin-top: var(--s4); }
.shead .lead { margin: 0; }

/* cover */
.hero { position: relative; min-height: calc(100vh - var(--nav)); display: flex; align-items: center;
        justify-content: center; text-align: center; padding: var(--s9) 0 var(--s8); border-bottom: 1px solid var(--line); }
.hero-bg { position: absolute; inset: 0; overflow: hidden; }
.hero-bg img, .hero-bg video { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero-bg::after { content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10,10,11,.92) 0%, rgba(10,10,11,.55) 45%, rgba(10,10,11,.94) 100%); }
.hero-in { position: relative; width: 100%; max-width: 1180px; padding: 0 var(--pad); }
/* En portada el rótulo no es un eyebrow cualquiera: es el nombre del catálogo. */
.hero-in .eyebrow { color: var(--red); font-size: clamp(15px, 1.6vw, 22px); letter-spacing: .14em; }
/* Interlineado más cerrado que el 1.02 general de los títulos: solo aquí, donde el claim va
   en caja alta y sin acentos. Si el claim llegara a llevar Á/Ó, revisar que no se recorten. */
/* Las dos líneas van al mismo cuerpo y en blanco: el color lo pone el rótulo de arriba. */
/* El min() es el tope de pantallas muy estrechas: "PROFESIONALES" es una sola palabra y a
   partir del suelo del clamp (26px) ya no cabe por debajo de ~365px, donde se salía de caja. */
.hero .h1 { margin-top: var(--s5); font-size: min(var(--t-display-xl), 6.3vw); line-height: .95; }
.hero .h1 .l1, .hero .h1 .l2 { display: block; }
.hero .lead { margin: var(--s5) auto 0; text-align: center; }
.hero .lead + .lead { margin-top: var(--s3); }
.hero-ctas { display: flex; gap: 12px; margin-top: var(--s6); justify-content: center; flex-wrap: wrap; }
/* Los CTA de portada van mayores que el .btn base (50/26/14): es la primera acción del catálogo. */
.hero-ctas .btn { height: 60px; padding: 0 34px; font-size: 16px; }
.hero-marks { display: flex; gap: var(--s5); justify-content: center; flex-wrap: wrap; margin-top: var(--s7);
              padding-top: var(--s5); border-top: 1px solid rgba(255,255,255,.12); }
.hero-marks span { font-size: var(--t-caption); color: var(--ink2); letter-spacing: .04em; }
.hero-marks b { font-family: var(--dsp); font-size: 17px; font-weight: 900; color: #fff; margin-right: 7px; }

/* Aviso de salida: al pulsar una categoría se pregunta antes de abrir titaniumstrength.es,
   enseñando el enlace. <dialog> nativo (foco atrapado, Esc cierra) con la caja del sistema;
   el botón de continuar es un enlace real con target=_blank, así la pestaña la abre el
   propio clic y ningún bloqueador de ventanas se interpone. */
dialog.salir { border: 0; padding: 0; background: transparent; color: var(--ink); max-width: none; }
dialog.salir::backdrop { background: rgba(10,10,11,.72); backdrop-filter: blur(6px); }
.salir-in { width: min(520px, calc(100vw - 2 * var(--pad))); background: var(--card); border: 1px solid var(--line2);
            border-radius: var(--r); padding: 28px 28px 24px; box-shadow: 0 30px 80px rgba(0,0,0,.6); }
.salir-in .eyebrow { display: block; margin-bottom: 10px; }
.salir-in h3 { font-size: 20px; }
.salir-in p { margin-top: 10px; font-size: var(--t-body-sm); color: var(--ink2); }
.salir-url { display: block; margin: 14px 0 22px; padding: 12px 14px; background: var(--bg2); border: 1px solid var(--line);
             border-radius: var(--r-sm); font-family: var(--mono); font-size: 13px; color: var(--red3); word-break: break-all; }
/* sin <dialog> nativo (navegador viejo) se abre a mano: caja fija centrada con su fondo */
dialog.salir.a-mano[open] { display: grid; position: fixed; inset: 0; place-items: center; background: rgba(10,10,11,.72); z-index: 80; }
.salir-btns { display: flex; gap: 10px; justify-content: flex-end; flex-wrap: wrap; }
dialog.salir[open] .salir-in { animation: salir-entra var(--dur-2) var(--ease-out) both; }
@keyframes salir-entra { from { opacity: 0; transform: translateY(10px) scale(.98); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { dialog.salir[open] .salir-in { animation: none; } }

/* pagehead */
.pagehead-sec { padding: var(--s8) 0 0; border-bottom: none; }
.pagehead .h1 { margin-top: var(--s4); }
.pagehead .lead { margin-top: var(--s5); }
/* Claim bajo el h1 (hoy, el concepto de Elite): Menda a cuerpo de h3, corto (≤ 4 palabras).
   color: inherit porque section.light p lo dejaría en el gris de los párrafos. */
.pagehead .pagehead-claim { margin-top: var(--s5); color: inherit; text-wrap: balance; }
.pagehead .pagehead-claim + .lead { margin-top: var(--s4); }
.pagehead-sec + section { padding-top: var(--s7); }

/* editorial */
/* La foto se estira a lo que mida la columna de texto y las dos acaban en la misma línea, que
   es lo que ata el bloque: antes la foto iba a su 4:5 y el texto flotaba a media altura al
   lado. El ::before le pone un suelo de 4:3 para que con textos cortos no quede en una banda
   fina, y la imagen va en absoluto para no empujar la altura de la fila. */
.marca { display: grid; grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); gap: var(--gap-lg); align-items: stretch; }
.marca-img { border-radius: var(--r); overflow: hidden; position: relative; }
.marca-img::before { content: ""; display: block; padding-top: 75%; }
.marca-img img, .marca-img video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* imagenEntera: un render de producto 4:3 (la cinta curva de Entrenamiento híbrido) se queda
   en 4:3 también en tablet y móvil, donde el marco de las fotos de sala lo recortaría */
.marca-img.entera::before { padding-top: 75%; }
.marca-txt .eyebrow { display: block; margin-bottom: var(--s4); }
.marca .h2 { margin-bottom: var(--s5); }
/* La entradilla da entrada al texto justo debajo del titular: sin ella los cuatro párrafos
   entraban todos con el mismo peso y el bloque se leía como una nota al margen de la foto. */
.marca-txt .p:first-of-type { font-size: var(--t-lead); color: var(--ink); }

/* bignumbers */
.nums { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: var(--s5); }
.nums > div { container-type: inline-size; }
.nums .l { margin-top: 10px; font-size: var(--t-label); letter-spacing: .07em; text-transform: uppercase; color: var(--muted); line-height: 1.45; }
.blk-bignumbers .nums { text-align: center; }
/* peso explícito: la única face de Menda es la Black; heredar el 300 del body pedía una
   variante que no existe y dejaba el render a merced de la síntesis del navegador. */
/* El cuerpo se mide contra el ancho de SU columna (cqi), no contra la ventana: con cuatro
   columnas entre 940 y 1040 px la más larga ("+10 países") ya se salía por unos píxeles, y al
   crecer la unidad la banda se ensanchaba. El 17cqi sale de la cifra más ancha con la unidad
   ya grande (5,5 veces el cuerpo) más un margen; en escritorio no recorta nada. */
.blk-bignumbers .numline { display: flex; align-items: baseline; justify-content: center; gap: .13em;
                           font-size: min(var(--t-num-lg), 17cqi); }
.blk-bignumbers .num { color: var(--red); font-size: 1em; font-weight: 900; font-variant-numeric: tabular-nums; }
/* La unidad ("M€", "países") no cabe al cuerpo de la cifra y tampoco debe pesar igual:
   va al lado, algo menor y sobre la misma línea de base. */
.blk-bignumbers .u { font-family: var(--dsp); font-weight: 900; color: var(--red);
                     font-size: .62em; line-height: 1; white-space: nowrap; }
.blk-bignumbers .nums .l { color: var(--ink); font-weight: 600; font-size: var(--t-body-sm); }
/* Entrada escalonada. Solo se oculta si el JS va a conducirla (.anim): sin JS, o con
   reduced-motion, la clase no se pone y las cuatro cifras quedan visibles desde el principio. */
.blk-bignumbers.anim .nums > div { opacity: 0; transform: translateY(12px);
  transition: opacity var(--dur-3) var(--ease-out), transform var(--dur-3) var(--ease-out); }
.blk-bignumbers.anim.contando .nums > div { opacity: 1; transform: none; }
.blk-bignumbers.anim.contando .nums > div:nth-child(2) { transition-delay: 90ms; }
.blk-bignumbers.anim.contando .nums > div:nth-child(3) { transition-delay: 180ms; }
.blk-bignumbers.anim.contando .nums > div:nth-child(4) { transition-delay: 270ms; }

/* diferenciales */
.pilares { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--gap); }
.pilar .im { aspect-ratio: 16/10; }
.pilar h3 { font-size: var(--t-title-sm); }
/* la frase de entrada se separa del nombre igual que en la tarjeta de caso */
.pilar .kicker { margin-top: 12px; font-size: 13px; line-height: 1.4; }
.pilar p { margin-top: var(--s3); font-size: var(--t-body-sm); color: var(--ink2); }
/* Pilares con revelado en blueprint. Cada .bp-revela lleva --p (0→1), que pone
   revelarPilares() con el scroll; toda la coreografía está aquí, en función de --p:
     0 → .55  el trazo rojo de líneas se dibuja de izquierda a derecha, barrido por una línea de
              energía blanca, sobre una rejilla de plano técnico;
    .5 → .85  el render real se funde debajo;
    .62 → .92 el trazo y la rejilla se apagan, y queda la imagen tal cual la referencia. */
.blk-pilares-bp .bp-cab { text-align: center; opacity: clamp(0, calc(var(--p) * 1.4), 1); transform: translateY(calc((1 - var(--p)) * 22px)); }
.bp-cab .eyebrow { display: block; margin-bottom: var(--s4); }
.bp-cab .h2 { max-width: 22ch; margin: 0 auto; }
.bp-actos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(40px, 6vw, 84px); margin-top: var(--s8); align-items: start; }
.bp-acto { display: grid; justify-items: center; text-align: center; gap: var(--s5);
           transform: translateY(calc((1 - clamp(0, calc(var(--p) / .5), 1)) * 28px)); }
/* caja de proporción fija: los renders no miden igual (el escudo es más alto) y así los tres
   textos arrancan a la misma altura; el trazo, encima, coincide con el render porque los dos
   van con object-fit: contain en la misma caja y tienen las mismas medidas */
.bp-fig { position: relative; width: min(100%, 300px); aspect-ratio: 10 / 9; }
.bp-fig img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; display: block; }
.bp-real { opacity: clamp(0, calc((var(--p) - .5) / .35), 1); }
.bp-lineas { pointer-events: none;
  opacity: calc(clamp(0, calc(var(--p) / .1), 1) * (1 - clamp(0, calc((var(--p) - .62) / .3), 1)));
  clip-path: inset(-6% calc((1 - clamp(0, calc(var(--p) / .55), 1)) * 106%) -6% -6%); }
.bp-rejilla { position: absolute; inset: -7% -5%; pointer-events: none;
  background: linear-gradient(rgba(228,27,19,.18) 1px, transparent 1px) 0 0 / 100% 34px,
              linear-gradient(90deg, rgba(228,27,19,.18) 1px, transparent 1px) 0 0 / 34px 100%;
  -webkit-mask-image: radial-gradient(ellipse at center, #000 40%, transparent 82%); mask-image: radial-gradient(ellipse at center, #000 40%, transparent 82%);
  opacity: calc(clamp(0, calc(var(--p) / .12), 1) * (1 - clamp(0, calc((var(--p) - .6) / .3), 1))); }
.bp-scan { position: absolute; top: -2%; bottom: -2%; width: 2px; pointer-events: none;
  left: calc(clamp(0, calc(var(--p) / .55), 1) * 100%); transform: translateX(-50%);
  background: linear-gradient(180deg, transparent, #fff 18%, #fff 82%, transparent);
  box-shadow: 0 0 10px 3px rgba(228,27,19,.95), 0 0 34px 8px rgba(228,27,19,.4);
  opacity: calc(clamp(0, calc(var(--p) / .04), 1) * (1 - clamp(0, calc((var(--p) - .55) / .06), 1))); }
/* el trazo late mientras está vivo: apagado antes de empezar y cuando ya quedó el render */
.bp-acto[data-fase="trazo"] .bp-lineas { animation: bp-pulso 1.3s ease-in-out infinite alternate; }
@keyframes bp-pulso { from { filter: brightness(1); } to { filter: brightness(1.5); } }
.bp-txt { max-width: 320px; opacity: clamp(0, calc((var(--p) - .3) / .3), 1);
          transform: translateY(calc((1 - clamp(0, calc((var(--p) - .3) / .3), 1)) * 16px)); }
.bp-txt h3 { font-size: var(--t-title-sm); }
.bp-txt .kicker { margin-top: 10px; font-size: 14px; line-height: 1.45; color: var(--ink); }
.bp-txt p { margin-top: var(--s3); font-size: var(--t-body-sm); color: var(--ink2); }
@media (prefers-reduced-motion: reduce) { .bp-acto[data-fase="trazo"] .bp-lineas { animation: none; } }
@media (max-width: 900px) { .bp-actos { grid-template-columns: 1fr; gap: var(--s9); } .bp-fig { width: min(100%, 360px); } .bp-txt { max-width: 480px; } .bp-txt p { font-size: 13px; } }
/* Tarjetas accionables (pilares y casos): crecen apenas al pasar por encima. El
   position/z-index evita que el 1.5% de más quede por debajo de la tarjeta vecina; cabe de
   sobra en el --gap de 20px. */
.pilar, .caso { position: relative;
         transition: transform var(--dur-2) var(--ease-out), border-color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease); }
.caso { cursor: pointer; }        /* el pilar crece, pero no se anuncia clicable: no lo es */
.pilar:hover, .caso:hover,
.caso:has(.card-mas:focus-visible) { transform: scale(1.015); z-index: 1;
         border-color: var(--line3); box-shadow: 0 18px 50px rgba(0,0,0,.45); }
.caso:has(.card-mas:focus-visible) { outline: 2px solid var(--red); outline-offset: 3px; }
.card-mas { display: inline-flex; align-items: center; gap: 6px; margin-top: var(--s4); align-self: flex-start;
             font-family: var(--body); font-size: var(--t-label); font-weight: 600; letter-spacing: .08em;
             text-transform: uppercase; color: var(--muted); background: none; border: 0; padding: 0; cursor: pointer;
             transition: color var(--dur-2) var(--ease); }
/* La superficie de clic es toda la tarjeta: el botón estira un ::after por encima de ella
   (la tarjeta es position:relative). Así el clic sigue siendo en cualquier punto de la caja
   sin que el contenedor tenga que ser un role=button. */
.card-mas::after { content: ""; position: absolute; inset: 0; border-radius: var(--r); }
.card-mas svg { width: 14px; height: 14px; stroke: currentColor; fill: none; }
.caso:hover .card-mas, .caso:has(.card-mas:focus-visible) .card-mas { color: var(--red); }

/* categorías — etiqueta en Rubik: Menda por debajo de 16 px pierde los acentos */
/* categorías · mosaico
   La jerarquía vive en el dato: las categorías marcadas tam:"xl" (dos como mucho) son las
   cabeceras y ocupan cuatro columnas por dos filas, una a cada lado. Las cuatro medianas
   caen solas en el hueco central que queda entre ellas y el resto cierra la fila de abajo,
   así que las doce leen como una sola pieza y no como una parrilla regular. Sin ninguna xl
   la rejilla vuelve a ser uniforme. */
.cats { display: grid; grid-template-columns: repeat(12, minmax(0,1fr)); grid-auto-flow: row dense; gap: var(--s3); }
.cat { position: relative; grid-column: span 2; display: block; isolation: isolate; cursor: pointer;
       border-radius: var(--r); overflow: hidden; border: 1px solid rgba(228,27,19,.2); background: #140909;
       box-shadow: 0 0 24px -14px rgba(228,27,19,.6);
       transition: transform var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease); }
.cat:hover { transform: translateY(-2px); border-color: rgba(228,27,19,.45); box-shadow: 0 0 38px -12px rgba(228,27,19,.9); }
.cat:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }
.cat-xl-1 { grid-column: 1 / span 4; grid-row: 1 / span 2; }
.cat-xl-2 { grid-column: 9 / span 4; grid-row: 1 / span 2; }
/* La cabecera no lleva contenido en flujo (imagen y rótulo van absolutos): su altura la dan
   las dos filas que cruza, no la foto. El min-height solo la salva si no hubiera medianas. */
.cat-xl { min-height: 260px; }
.cat > .im { width: 100%; }
/* El encuadre general va ANTES que el de las pequeñas: con la misma especificidad manda el
   último, y así el contain de .cat-sm no se lo comía el cover de aquí. */
.cat .im img { display: block; width: 100%; height: 100%; object-fit: cover; }
.cat-md > .im { aspect-ratio: 1/1; }
.cat-sm > .im { aspect-ratio: 5/4; }
/* Las pequeñas también van a sangre: los renders nuevos son escena completa (estudio negro
   con neón), así que el recorte a 5:4 no deja fuera nada que importe y la foto llena la
   tarjeta. Las fotos de antes, sobre blanco, iban en contain con un hueco granate. */
.cat-sm .im img { object-fit: cover; }
.cat-xl > .im { position: absolute; inset: 0; }
.cat .nb { position: absolute; top: 12px; left: 14px; z-index: 1; font-family: var(--mono);
           font-size: var(--t-micro); letter-spacing: .14em; color: rgba(255,255,255,.4); }
.cat .lb { position: absolute; inset: auto 0 0 0; z-index: 1; display: flex; align-items: flex-end;
           justify-content: space-between; gap: var(--s2); padding: 28px 14px 14px;
           background: linear-gradient(to top, rgba(8,5,5,.94), rgba(8,5,5,.66) 52%, transparent); }
.cat .tx { min-width: 0; }
.cat .t { display: block; font-family: var(--body); font-weight: 600; font-size: var(--t-label);
          letter-spacing: .06em; text-transform: uppercase; line-height: 1.25; overflow-wrap: anywhere; }
.cat:not(.cat-xl) .t { font-size: 11.5px; letter-spacing: .05em; }
.cat .go { flex: none; display: flex; align-items: center; justify-content: center; width: 30px; height: 30px;
           border-radius: 50%; border: 1px solid rgba(228,27,19,.5); color: var(--red3);
           transition: background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease); }
.cat:not(.cat-xl) .go { width: 28px; height: 28px; }
.cat .go svg { width: 13px; height: 13px; }
.cat:hover .go { background: var(--red); border-color: var(--red); color: #fff; }
.cat-sm .lb { padding: 20px 12px 11px; }
.cat-xl .lb { padding: 40px 20px 20px; }
/* El titular de la cabecera se mide contra su propia tarjeta, no contra la ventana: Menda
   es muy ancha y un nombre largo (SELECTORIZADAS) no cabía a cuerpo fijo. Con cqi la caja
   grande puede ser cualquier categoría sin que el rótulo se parta. */
.cat-xl { container-type: inline-size; }
.cat-xl .t { font-family: var(--dsp); font-weight: 900; font-size: clamp(15px, 5.6cqi, 26px); letter-spacing: -.005em; }
.cat-xl .go { width: 40px; height: 40px; } .cat-xl .go svg { width: 16px; height: 16px; }
.cat-xl i { display: block; width: 34px; height: 3px; background: var(--red); margin: 0 0 12px; }

/* La luz que recorre el borde: un cónico que gira, recortado al canto por la máscara.
   El desfase lo pone el render (--luz) para que las doce no marchen a la vez. */
@property --cat-ang { syntax: "<angle>"; initial-value: 0deg; inherits: false; }
.cat::after { content: ""; position: absolute; inset: 0; z-index: 2; border-radius: inherit; padding: 1.5px;
  pointer-events: none;
  background: conic-gradient(from var(--cat-ang), transparent 0 48%, rgba(228,27,19,.3) 60%,
              var(--red3) 70%, #ffe6e4 74%, var(--red3) 78%, rgba(228,27,19,.3) 88%, transparent 96%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  animation: cat-luz 7s linear infinite; animation-delay: var(--luz, 0s); }
@keyframes cat-luz { to { --cat-ang: 360deg; } }

/* red de centros: cifra a la izquierda, mapa a la derecha, sobre negro */
.blk-red { position: relative; overflow: hidden; }
/* Las barras rojas en diagonal de la esquina, como en la referencia. Detrás de todo y
   suaves: marcan el bloque sin competir con el titular. */
.blk-red::before { content: ""; position: absolute; left: -4%; top: -40%; width: 26%; height: 180%;
  background: repeating-linear-gradient(90deg, var(--red) 0 7px, transparent 7px 34px);
  transform: rotate(24deg); transform-origin: top left; opacity: .22; pointer-events: none; }
.blk-red .wrap { position: relative; }
.redmapa { display: grid; grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); gap: var(--gap-lg); align-items: center; }
.redmapa .h2 { margin-top: var(--s4); }
.redmapa .lead { margin-top: var(--s5); }
/* El rótulo va al lado de la cifra y centrado contra ella, no sobre su línea de base: con
   dos líneas, la base dejaba la segunda por debajo de la cifra y el rótulo parecía colgar. */
.redcifra { margin-top: var(--s7); display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.redcifra .num { color: var(--red); font-size: clamp(40px, 7.4vw, 72px); font-weight: 900; font-variant-numeric: tabular-nums; }
.redcifra-l { font-family: var(--body); font-weight: 600; font-size: clamp(14px, 1.15vw, 16px); letter-spacing: .09em;
              text-transform: uppercase; color: var(--ink); line-height: 1.35; max-width: 22ch; }
/* El aviso vive DEBAJO del iframe: si el mapa carga lo tapa, y si no carga —CSP, mapa sin
   compartir, red caída— queda a la vista en vez de dejar un hueco negro. Sin JS. */
/* El mar es negro con una retícula fina de puntos rojos y la tierra, gris oscuro liso: con
   los dos del mismo gris solo los separaba el trazo y no se leía qué era costa. Los puntos
   van en el fondo de la caja y la tierra los tapa, así que solo se ven en el agua. */
.redmapa-im { position: relative; aspect-ratio: 4/3; border-radius: var(--r); overflow: hidden;
              border: 1px solid rgba(228,27,19,.3);
              background-color: #08080A;
              background-image: radial-gradient(circle, rgba(228,27,19,.22) 1px, transparent 1.4px);
              background-size: 9px 9px;
              box-shadow: 0 0 44px -20px rgba(228,27,19,.85); }
.redmapa-im iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; z-index: 1; }
.redmapa-im .mapa { position: absolute; inset: 0; }
.redmapa-im svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
/* Trazo sin escalar: el mapa se estira con la caja y el filo rojo mantiene su grosor. */
.mapa-tierra path { fill: #212127; stroke: var(--red); stroke-width: 1.1; stroke-linejoin: round;
                    vector-effect: non-scaling-stroke; }
.mapa-punto { position: absolute; width: 11px; height: 11px; margin: -5.5px 0 0 -5.5px; border-radius: 50%;
              background: var(--red3); box-shadow: 0 0 0 4px rgba(228,27,19,.22), 0 0 14px 3px rgba(228,27,19,.75); }
/* Los puntos aparecen al llegar al bloque, de oeste a este, con la misma señal que la cifra
   (.anim la pone el JS, .contando entra con el bloque en pantalla y se rearma al salir). Sin
   JS o con reduced-motion la clase no llega y los puntos están desde el principio. */
.blk-red.anim .mapa-punto { opacity: 0; transform: scale(.2); }
/* Tras caer, cada punto sigue latiendo en bucle (escala y brillo) y su anillo vuelve a
   expandirse cada 4 s. Las dos animaciones encadenadas comparten el escalonado de --i, así
   que el latido recorre el mapa de oeste a este igual que la llegada, en vez de ir todos a
   la vez. El segundo par arranca justo cuando termina el primero: pop 520 ms, onda 220+900. */
.blk-red.anim.contando .mapa-punto { animation: pin-pop 520ms var(--ease-out) both, pin-latido 4s ease-in-out infinite;
              animation-delay: calc(var(--i) * 40ms), calc(var(--i) * 40ms + 520ms); }
.blk-red.anim.contando .mapa-punto::after { content: ""; position: absolute; inset: -3px; border-radius: 50%;
              border: 2px solid rgba(242,39,30,.75); opacity: 0;
              animation: pin-onda 900ms ease-out both, pin-eco 4s ease-out infinite;
              animation-delay: calc(var(--i) * 40ms + 220ms), calc(var(--i) * 40ms + 1120ms); }
@keyframes pin-pop { 0% { opacity: 0; transform: scale(.2); } 60% { opacity: 1; transform: scale(1.45); } 100% { opacity: 1; transform: scale(1); } }
@keyframes pin-onda { 0% { transform: scale(.7); opacity: .9; } 100% { transform: scale(3.2); opacity: 0; } }
@keyframes pin-latido { 0%, 100% { transform: scale(1); box-shadow: 0 0 0 4px rgba(228,27,19,.22), 0 0 14px 3px rgba(228,27,19,.75); }
                        50% { transform: scale(1.12); box-shadow: 0 0 0 5px rgba(228,27,19,.26), 0 0 18px 4px rgba(228,27,19,.85); } }
@keyframes pin-eco { 0% { transform: scale(.7); opacity: .6; } 45%, 100% { transform: scale(2.6); opacity: 0; } }
.mapa-abrir { position: absolute; right: 14px; bottom: 14px; z-index: 2;
              background: rgba(10,10,11,.72); backdrop-filter: blur(6px); }

/* otc */
.otc { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: var(--gap-lg); align-items: center; }
.otc .h2 { margin-top: var(--s4); }
.otc .kicker { margin-top: var(--s5); color: var(--ink); }
.otc p { margin-top: 14px; color: var(--ink2); font-size: var(--t-body); }
.otc-plate { border-radius: var(--r); overflow: hidden; border: 1px solid var(--line); aspect-ratio: 1/1; }
.otc-plate img { width: 100%; height: 100%; object-fit: cover; }
.otc-plate[data-placa3d] { background: var(--bg); transition: border-color var(--dur-3) var(--ease), background-color var(--dur-3) var(--ease); }
.otc-plate canvas { display: block; width: 100%; height: 100%; pointer-events: none; opacity: 0; transition: opacity var(--dur-3) var(--ease); }
/* con el 3D en marcha la caja desaparece: la placa flota sobre la página, el canvas es transparente */
.otc-plate.placa3d-on { border-color: transparent; background: transparent; overflow: visible; }
.otc-plate.placa3d-on canvas { opacity: 1; }
/* La imagen sale del flujo, no solo de la vista: con dos hijos en flujo (img + canvas) la caja
   perdía su aspect-ratio 1/1, el buffer se medía con la altura sumada y la placa salía estirada. */
.otc-plate.placa3d-on img { display: none; }
.bene { display: grid; grid-template-columns: repeat(5, minmax(0,1fr)); gap: 14px; margin-top: var(--s7); }
.bene > div { padding: 22px 20px 24px; }
.bene > div.sello { background: linear-gradient(160deg, #3C0D0D, #1A0808); border-color: #4A1414; }
.bene .ico { margin-bottom: 14px; background: var(--red); }   /* las bolitas, en rojo; el resto de la tarjeta, igual */
.bene h4 { font-size: 14.5px; }
.bene p { margin-top: 8px; font-size: 13px; color: var(--muted); }

/* cases */
.casos { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--gap); }
.caso .im { aspect-ratio: 16/10; }
.caso .city { font-size: var(--t-micro); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.caso h3 { margin-top: 10px; font-size: var(--t-title-sm); }
/* El claim hace de título de la tarjeta (el nombre baja al kicker): es una frase, no dos
   palabras, así que va un punto más pequeño que el título de tarjeta normal. */
.caso h3.claim { font-size: clamp(17px, 1.5vw, 21px); line-height: 1.08; }
.caso .kicker { margin-top: 14px; font-size: 13px; line-height: 1.4; }
.caso p { margin-top: 10px; font-size: 14px; color: var(--ink2); }
/* Las cifras del proyecto solo salen en el panel; la tarjeta las calla para ir al grano. */
.pi-body .m { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line); }
.pi-body .m b { display: block; font-family: var(--dsp); font-size: var(--t-num-sm); font-weight: 900; white-space: nowrap; }
.pi-body .m span { font-size: var(--t-label); color: var(--muted); }
/* Cifras que son frases (m-filas, lo decide B.__panel): una por fila y, si ni así caben, se
   parten equilibradas en vez de dejar una palabra sola abajo. */
.pi-body .m.m-filas { grid-template-columns: minmax(0,1fr); row-gap: 12px; }
.pi-body .m.m-filas b { white-space: normal; text-wrap: balance; line-height: 1.08; }
/* Líneas utilizadas: etiquetas de línea en Menda (la regla del sistema las admite), cada una
   enlazada a su gama. Cada nombre va pegado a su punto (.ln sin cortes) y el renglón solo
   puede partirse entre uno y otro (<wbr>): en un móvil estrecho el punto cierra la línea,
   nunca la abre. Cabe en una línea desde 390 px. */
.pi-lineas { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line); }
.pi-lineas p { margin-top: 10px; font-family: var(--dsp); font-weight: 900; font-size: var(--t-dsp-min);
  line-height: 1.3; text-transform: uppercase; }
.pi-lineas .ln { white-space: nowrap; }
.pi-lineas a { color: var(--ink); transition: color var(--dur-1) var(--ease); }
.pi-lineas a:hover, .pi-lineas a:focus-visible { color: var(--red3); }
.pi-lineas .sep { margin: 0 .45em; color: var(--line3); }
.pi-body .kicker { margin-top: var(--s4); }
/* Pie de la ficha: Instagram y el botón del vídeo completo en una sola fila, que se parte en
   dos cuando no caben (móvil). Con el texto del PDF y las líneas utilizadas el panel creció
   unos 130 px; juntar el pie y bajar el relleno vertical lo devuelven a caber en 1440×900. */
.pi-pie { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s3) var(--s4); margin-top: 20px; }
.pi-body .pi-pie .ig { padding-top: 0; }
.caso-yt svg { width: 16px; height: 16px; stroke: currentColor; fill: none; flex: none; }
.caso-yt:hover { border-color: var(--red); color: var(--red3); }
.caso .ig, .pi-body .ig { padding-top: 20px; font-size: 13px; color: var(--ink2); display: flex; align-items: center; gap: 8px; }
.caso .ig { margin-top: auto; }   /* el hueco lo absorbe Instagram; el botón queda debajo */

/* Opiniones: carrusel infinito a todo el ancho. La pista lleva las N tarjetas originales y
   las copias que hagan falta para cubrir la pantalla; la mueve el motor (JS) con un transform:
   anda sola y además se arrastra, se desliza con el dedo o el trackpad y tiene flechas. Sin el
   motor (.lista) queda como una fila con scroll lateral normal, alineada con el .wrap. */
.blk-reviews { overflow: hidden; }
.rev-marq { --rev-gap: 24px; position: relative; overflow-x: auto; scrollbar-width: none;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.rev-marq::-webkit-scrollbar { display: none; }
.rev-track { display: flex; gap: var(--rev-gap); width: max-content; padding: 6px 0 12px; }
.rev-marq:not(.lista) .rev-track { padding-left: max(var(--pad), calc(50vw - var(--w) / 2 + var(--pad))); padding-right: var(--pad); }
.rev-marq.lista { overflow: hidden; touch-action: pan-y; cursor: grab; }
.rev-marq.lista .rev-track { will-change: transform; }
.rev-marq.arrastrando { cursor: grabbing; }
.rev-marq.arrastrando .rev-track { user-select: none; -webkit-user-select: none; }
.rev-marq img { -webkit-user-drag: none; user-select: none; }
.rev-marq:focus-visible { outline: none; }
.rev-marq:focus-visible .rev-track > .rev:not([aria-hidden]) { border-color: var(--red); }
/* Cabecera: el titular a la izquierda y las flechas en la otra columna del .shead */
.rev-nav { justify-self: end; display: flex; gap: 10px; }
.rev-flecha { width: 48px; height: 48px; border-radius: 50%; border: 1px solid var(--line2); background: transparent; color: #fff;
  display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
  transition: border-color var(--dur-1) var(--ease), background var(--dur-1) var(--ease), color var(--dur-1) var(--ease); }
.rev-flecha:hover { border-color: var(--red); background: var(--red); }
.rev-flecha:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }
.rev-flecha svg { width: 20px; height: 20px; stroke: currentColor; fill: none; }
@media (max-width: 940px) { .rev-nav { justify-self: start; } }
.rev { position: relative; flex: none; width: min(580px, calc(100vw - 2 * var(--pad))); display: flex; gap: 22px; padding: 26px 28px;
  background: var(--card); border: 1px solid var(--line); border-radius: var(--r);
  transition: border-color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease); }
.rev:hover { border-color: var(--line3); box-shadow: 0 18px 50px rgba(0,0,0,.45); }
.rev-lado { flex: none; width: 96px; display: flex; flex-direction: column; align-items: center; gap: 14px; }
/* hexágono de punta: el borde es el fondo del contenedor y la foto va recortada 3 px por dentro */
.rev-hex { position: relative; width: 92px; height: 106px; clip-path: polygon(50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%);
  background: linear-gradient(160deg, #F2F2F0, #6A6A70 70%, #34343B); }
.rev-hex img { position: absolute; inset: 3px; width: calc(100% - 6px); height: calc(100% - 6px); object-fit: cover;
  clip-path: polygon(50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%); }
.rev-stars { display: flex; gap: 3px; color: var(--red); }
.rev-stars svg { width: 15px; height: 15px; display: block; }
.rev-cuerpo { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.rev-nombre { font-size: 15px; line-height: 1.25; letter-spacing: .01em; }
.rev-cargo { display: inline-block; margin-left: 10px; font-family: var(--body); font-weight: 600; font-size: 11px;
  letter-spacing: .14em; color: var(--ink2); vertical-align: 2px; }
.rev-gym { margin-top: 6px; font-size: 12.5px; color: var(--muted); display: flex; gap: 8px; align-items: baseline; }
.rev-gym b { text-transform: uppercase; letter-spacing: .08em; font-size: 12px; }
.rev-texto { margin: 14px 0 0; font-style: italic; font-size: 15px; line-height: 1.55; color: var(--ink2); }
.rev-texto b { color: var(--ink); }
/* Sin foto (las de Trustpilot): las iniciales ocupan el sitio de la foto, dentro del mismo
   borde de hexágono, sobre un granate casi negro como el de las tarjetas de categoría. */
.rev-ini { position: absolute; inset: 3px; display: grid; place-items: center;
  clip-path: polygon(50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%);
  background: radial-gradient(circle at 50% 30%, #3A100D, #140707 72%);
  font-family: var(--dsp); font-weight: 900; font-size: 26px; line-height: 1; letter-spacing: .02em; color: var(--ink); }
/* La fuente de la traducción cierra la tarjeta, abajo del todo aunque la cita sea corta. */
.rev-fuente { margin-top: auto; padding-top: 14px; font-size: 11.5px; line-height: 1.4; color: var(--muted); }
@media (max-width: 640px) {
  .rev { gap: 16px; padding: 20px 18px; }
  .rev-lado { width: 68px; gap: 10px; }
  .rev-hex { width: 64px; height: 74px; }
  .rev-ini { font-size: 19px; }
  .rev-stars { gap: 2px; }
  .rev-stars svg { width: 12px; height: 12px; }
  .rev-nombre { font-size: 13px; }
  .rev-cargo { display: block; margin: 6px 0 0; }
  .rev-texto { font-size: 14px; }
}
@media print {
  .rev-marq { overflow: visible; -webkit-mask-image: none; mask-image: none; }
  .rev-track { animation: none !important; transform: none !important; flex-wrap: wrap; width: auto; }
  .rev[aria-hidden] { display: none; }
}

/* lineas-index */
.gamas { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: var(--gap); }
/* El índice de Soluciones tiene dos entradas, no ocho: en la grilla de cuatro quedaban a media
   anchura con dos columnas vacías. Se escopa al bloque para no tocar el índice de líneas, y la
   foto pasa a 3/2 porque a 4/3 una tarjeta el doble de ancha crecía desproporcionada, y a 16/9
   el recorte se comía la cinta curva de Cardio & Hybrid por arriba y por abajo (la máquina
   ocupa el 82 % del alto del render). */
.blk-enlaces .gamas { grid-template-columns: repeat(2, minmax(0,1fr)); }
.blk-enlaces .gama .im { aspect-ratio: 3/2; }
.blk-enlaces .gama h3 { font-size: var(--t-title); }
.blk-enlaces .gama .tag { font-size: 15px; }
.blk-enlaces .gama .sub { font-size: var(--t-body); }
@media (max-width: 640px) { .blk-enlaces .gamas { grid-template-columns: 1fr; } }
.gama .im { aspect-ratio: 4/3; background: #120A0A; }
.gama .body { gap: 10px; }
.gama h3 { font-size: var(--t-title-sm); display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.gama h3 .rx { font-size: .62em; }
.gama h3 .estado { font-size: 9px; margin-left: 6px; align-self: center; }
.gama .tag { font-family: var(--body); font-weight: 600; font-size: 13px; text-transform: uppercase; line-height: 1.3; }
.gama .sub { font-size: var(--t-body-sm); color: var(--muted); }
.gama .rows { margin-top: 4px; display: flex; flex-direction: column; gap: 8px; }
.gama .row { display: grid; grid-template-columns: 74px minmax(0,1fr); gap: 10px; font-size: 13px; align-items: start; }
.gama .row span:first-child { color: var(--muted); letter-spacing: .06em; text-transform: uppercase; font-size: var(--t-micro); padding-top: 2px; }
.gama .foot { margin-top: auto; padding-top: 16px; border-top: 1px solid var(--line); display: flex;
              flex-direction: column; gap: 10px; font-size: var(--t-caption); color: var(--muted); }
.gama .foot b { color: var(--ink); font-weight: 500; }
/* Precios "a partir de" (fuentes/lineas-seccion.pdf): una fila por configuración, con la
   etiqueta como las de MEJOR PARA / VENTAJA y la cifra a la derecha. Si en una caja estrecha
   (4 columnas a 1200 px) no caben en una línea, la cifra baja debajo de su etiqueta. */
.gama .precios { display: flex; flex-direction: column; gap: 6px; }
.gama .precio { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 2px 8px; }
.gama .precio span:first-child { letter-spacing: .06em; text-transform: uppercase; font-size: var(--t-micro); }
.gama .precio span:last-child { color: var(--ink2); margin-left: auto; }   /* partida, la cifra sigue a la derecha */
.gama .precio b { font-size: 13.5px; font-weight: 600; }

/* linea-hero */
.dhero { position: relative; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: var(--s7);
         align-items: center; border-bottom: 1px solid var(--line);
         background: radial-gradient(900px 520px at 62% 40%, #34090A, transparent 70%), var(--bg); }
.dhero-l { padding: var(--s9) var(--pad) var(--s9) max(var(--pad), calc((100vw - var(--w)) / 2 + var(--pad))); }
.dhero-r { align-self: stretch; display: flex; align-items: center; justify-content: center; padding: var(--s7) var(--pad) var(--s7) 0; min-height: 640px; }
.dhero-r img { max-height: 560px; width: auto; }
.dhero .h1 { display: flex; align-items: baseline; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.dhero .h1 .rx { font-size: .5em; }
.dhero .tag { margin-top: 22px; }
.dhero .sub { margin-top: 10px; }
.specs { display: flex; flex-direction: column; gap: 10px; margin-top: var(--s5); max-width: 540px; }
.spec { display: flex; align-items: center; gap: 14px; background: linear-gradient(90deg, var(--card2), rgba(28,28,33,0));
        border-radius: var(--r-pill); padding: 8px 18px 8px 8px; }
.spec .ico { background: #2B2B32; }
.spec .k { font-size: var(--t-micro); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.spec .v { font-size: 14px; }
.dctas { display: flex; gap: 12px; margin-top: var(--s6); flex-wrap: wrap; }

/* specs-lista */
/* Como el editorial: la foto mide lo que mide la columna de texto y las dos acaban en la
   misma línea; el ::before le pone un suelo de 4:3 para los bloques de lista corta. */
.pillars { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: var(--gap-lg); align-items: stretch; }
.pillars .im { border-radius: var(--r); overflow: hidden; position: relative; }
.pillars .im::before { content: ""; display: block; padding-top: 75%; }
.pillars .im img, .pillars .im video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
/* Render de estudio (el giro de 360° del concepto de Elite): la máquina va entera, sin
   recortar, sobre el mismo blanco del vídeo, así que la caja pasa a ser una tarjeta blanca
   con filete. El 4 % arriba y abajo le deja aire cuando la caja es apaisada y el alto manda. */
.pillars .im.estudio { background: #fff; border: 1px solid var(--lightline); }
.pillars .im.estudio video { top: 4%; height: 92%; object-fit: contain; }
.marca-img.estudio { background: #fff; border: 1px solid var(--lightline); }   /* el mismo giro en un editorial (MaxGlute) */
.marca-img.estudio video { top: 4%; height: 92%; object-fit: contain; }
.pillars-cab { display: flex; align-items: center; gap: 12px; margin-bottom: var(--s4); }
.pillars-txt .h2 { margin-bottom: var(--s5); }
.pillars-txt .lead { margin-bottom: var(--s5); }
.pillars-txt .lead + .pl { border-top: 1px solid var(--lightline); }
.pl { display: flex; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--lightline); }
.pl:last-child { border-bottom: none; }
.pl .ico { background: #E7E7E1; } .pl .ico svg { stroke: var(--lightink); }
.pl h4 { font-family: var(--body); text-transform: uppercase; font-weight: 600; font-size: var(--t-body-sm); letter-spacing: .02em; }
.pl p { margin-top: 4px; font-size: 14px; }
.pl-nota { margin-top: 16px; font-size: var(--t-caption); color: var(--lightmuted); }
.bene-nota { margin-top: var(--s4); font-size: var(--t-caption); color: var(--muted); }

/* product-grid */
.prods { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--gap); }
.prod .im { background: #fff; padding: 18px; aspect-ratio: 16/11; display: flex; align-items: center; justify-content: center; position: relative; }
.prod .im img { max-height: 100%; width: auto; }
.prod .im::after { content: ""; position: absolute; left: 50%; bottom: 0; width: 110px; height: 3px; background: var(--red); transform: translateX(-50%); }
.prod .im .ph { color: #78736A; }
.prod .body { padding: 20px 20px 22px; text-align: center; }
.prod h4 { font-size: var(--t-dsp-min); line-height: 1.12; }
.prod .cod { font-size: var(--t-caption); color: var(--muted); margin-top: 6px; letter-spacing: .05em; }
.prod .sp { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 10px; margin-top: 16px; padding-top: 14px;
            border-top: 1px solid var(--line); text-align: left; }
.prod .sp .k { font-size: var(--t-micro); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.prod .sp .v { font-size: var(--t-caption); margin-top: 3px; color: var(--ink2); line-height: 1.3; }
.prod .dl { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line); }
.prod .dl a { font-size: var(--t-caption); color: var(--muted); display: inline-flex; align-items: center; gap: 5px; }
.prod .dl a:hover { color: #fff; }
.prod .dl svg { width: 12px; height: 12px; stroke: currentColor; fill: none; }
.prod .add { margin-top: auto; padding-top: 14px; }
.prod.slot { border-style: dashed; border-color: var(--line2); background: transparent; }
.prod.slot .im { background: var(--bg2); border-bottom: 1px dashed var(--line2); }
.prod.slot .im::after { display: none; }
.prod.slot .im .ph { color: var(--muted); }
.prod.slot h4 { color: var(--ink2); }
.prod.slot .hint { margin-top: 12px; font-size: var(--t-caption); color: var(--muted); line-height: 1.5; }
/* Cabecera de fila dentro de la rejilla de equipos: separa selectorizadas de palanca como hace
   la ficha técnica. Ocupa la fila entera; el modo edición no la cuenta como hueco. */
.prods-sub { grid-column: 1 / -1; display: flex; align-items: baseline; justify-content: space-between; gap: var(--gap); padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.prods-sub .n { font-size: var(--t-caption); color: var(--muted); }
.prods-sub:not(:first-child) { margin-top: var(--s4); }
.prods.grid-2x3 { grid-template-columns: repeat(2, minmax(0,1fr)); }
.prods.tira-4 { grid-template-columns: repeat(4, minmax(0,1fr)); }
.prods.destacado-1\+5 { grid-template-columns: repeat(3, minmax(0,1fr)); }
.prods.destacado-1\+5 > :first-child { grid-column: span 2; grid-row: span 2; }
.prods.lista-specs { grid-template-columns: 1fr; }
.prods.lista-specs .prod { display: grid; grid-template-columns: 220px minmax(0,1fr); }
.prods.lista-specs .prod .im { aspect-ratio: auto; border-radius: 0; }
.prods.lista-specs .prod .body { text-align: left; }

/* features */
.features { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--s4); }
.features .slot.foto { border: 1px dashed var(--line2); border-radius: var(--r); aspect-ratio: 4/3; display: flex; align-items: center; justify-content: center; background: var(--bg2); }
.features .slot.foto.big { grid-column: span 2; grid-row: span 2; aspect-ratio: auto; }
.features .slot.foto.img { border: 1px solid var(--line); overflow: hidden; background: #fff; }
.features .slot.foto.img img { width: 100%; height: 100%; object-fit: cover; }
.features + .validar-row { margin-top: var(--gap); }

/* ---- Features en hero (Elite) ----
   Escena en claro: la foto de producto viene sobre blanco y con multiply el blanco desaparece
   sobre el fondo, que solo lleva un brillo rojo muy suave detrás de la máquina. Los puntos
   entran uno detrás de otro cuando la escena aparece (data-fase lo pone revelarPilares) y
   luego se quedan quietos: sin latido. */
.blk-features-hero { background: #fff; border-top: 1px solid var(--lightline); overflow: hidden; }
.fxh { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); grid-template-rows: auto 1fr;
  grid-template-areas: "cab escena" "lista escena"; column-gap: var(--gap-lg); align-items: start; }
.fxh-cab { grid-area: cab; padding-top: var(--s5); }
.fxh-cab .crumbs a:hover { color: var(--lightink); }
.fxh-cab .h1 { margin-top: var(--s4); color: var(--lightink); }
.fxh-cab .lead { margin-top: var(--s5); max-width: 42ch; }
.fxh-pista { margin-top: var(--s5); display: inline-flex; align-items: center; gap: 12px; font-size: var(--t-label); font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase; color: var(--red); }
.fxh-pista i { width: 10px; height: 10px; border-radius: 50%; background: var(--red); }
.fxh-lista { grid-area: lista; list-style: none; margin: var(--s6) 0 0; padding: 0; border-top: 1px solid var(--lightline); }
.fxh-item { width: 100%; display: flex; align-items: baseline; gap: 14px; padding: 13px 4px; background: none; border: 0;
  border-bottom: 1px solid var(--lightline); color: var(--lightink); font: 600 15px/1.3 var(--body); text-align: left; cursor: pointer;
  transition: color var(--dur-1) var(--ease), padding-left var(--dur-2) var(--ease-out); }
.fxh-item-n { flex: none; min-width: 2.3em; font-family: var(--dsp); font-weight: 900; font-size: var(--t-dsp-min); color: var(--red); }
.fxh-item-t { flex: 1; }
.fxh-item-tag { flex: none; font-size: var(--t-micro); letter-spacing: .1em; text-transform: uppercase; color: var(--lightmuted); }
.fxh-item:hover, .fxh-item.hover, .fxh-item[aria-expanded="true"] { color: var(--red); padding-left: 12px; }
.fxh-item:focus-visible, .fxh-pin:focus-visible, .fxh-medallon:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }
.fxh-escena { grid-area: escena; position: relative; aspect-ratio: 1; }
.fxh-fondo { position: absolute; inset: -6% -5%; overflow: hidden; pointer-events: none;
  background: radial-gradient(closest-side at 50% 52%, rgba(228,27,19,.07), transparent 72%); }
.fxh-img { position: absolute; inset: 0; background: var(--fxh-img) center / contain no-repeat; mix-blend-mode: multiply;
  opacity: calc(.08 + .92 * clamp(0, var(--p) * 2, 1)); transform: translateY(calc((1 - clamp(0, var(--p) * 2, 1)) * 28px)); }
/* puntos: el individual translate centra, así scale queda libre para el hover y la entrada */
.fxh-pin, .fxh-medallon { position: absolute; z-index: 2; left: calc(var(--x) * 100%); top: calc(var(--y) * 100%); translate: -50% -50%;
  cursor: pointer; transition: scale var(--dur-2) var(--ease-out), background var(--dur-1) var(--ease), border-color var(--dur-1); }
.fxh-pin { width: 34px; height: 34px; padding: 0; border-radius: 50%; border: 3px solid #fff; background: var(--red); color: #fff;
  display: grid; place-items: center; box-shadow: 0 8px 22px rgba(228,27,19,.42), 0 0 0 1px rgba(10,10,11,.06); }
.fxh-pin-n { font: 700 13px/1 var(--body); }
.fxh-pin:hover, .fxh-pin.hover { scale: 1.14; }
.fxh-pin[aria-expanded="true"] { background: var(--lightink); scale: 1.2; }
/* lo que la máquina de la escena no tiene va en un medallón: una lente sobre otra imagen (o un dibujo) */
.fxh-medallon { width: 20%; aspect-ratio: 1; padding: 0; border-radius: 50%; background: #fff; border: 1px solid var(--lightline);
  box-shadow: 0 18px 44px rgba(10,10,11,.09); display: grid; place-items: center; }
.fxh-medallon .fxh-cable { width: 74%; height: 74%; }
.fxh-medallon .fxh-pin-n { position: absolute; top: 2%; right: 2%; width: 30px; height: 30px; border-radius: 50%; border: 3px solid #fff;
  background: var(--red); color: #fff; display: grid; place-items: center; box-shadow: 0 6px 16px rgba(228,27,19,.4); }
.fxh-medallon-l { position: absolute; top: calc(100% + 8px); left: 50%; translate: -50% 0; white-space: nowrap; font-size: var(--t-micro);
  font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--lightmuted); }
.fxh-medallon:hover, .fxh-medallon.hover { scale: 1.05; border-color: rgba(228,27,19,.4); }
.fxh-sello { cursor: default; }
.fxh-sello:hover { scale: none; border-color: var(--lightline); }
.fxh-medallon[aria-expanded="true"] { border-color: var(--red); }
/* medallón de detalle (detalle en un item): más grande, con aro rojo encendido, el número arriba
   a la izquierda y la etiqueta en una píldora roja montada sobre el borde de abajo */
.fxh-medallon.fxh-detalle { width: calc(var(--lw, 26) * 1%); border: 2px solid var(--red);
  box-shadow: 0 0 0 5px rgba(228,27,19,.1), 0 0 26px rgba(228,27,19,.42), 0 18px 44px rgba(10,10,11,.12); }
.fxh-detalle .fxh-lente { inset: 5%; background-color: #fff; }
.fxh-detalle .fxh-pin-n { left: 3%; right: auto; top: 3%; }
.fxh-detalle .fxh-medallon-l { top: auto; bottom: -14px; padding: 7px 16px; border-radius: var(--r-pill); background: var(--red); color: #fff;
  letter-spacing: .14em; box-shadow: 0 8px 20px rgba(228,27,19,.4); }
.fxh-detalle:hover, .fxh-detalle.hover { border-color: var(--red); }
/* lente con linea (detalle.linea): el trazo hasta la pieza, por debajo de puntos y medallones, y
   en la pieza un punto pequeño sin número */
.fxh-lineas { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; overflow: visible; pointer-events: none; }
.fxh-lineas polyline { fill: none; stroke: var(--red); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.fxh-lineas .fxh-flecha { fill: none; stroke: var(--red); stroke-width: 2.5; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.fxh-lineas .fxh-flecha-p { fill: var(--red); }
.fxh-ancla { position: absolute; z-index: 1; left: calc(var(--x) * 100%); top: calc(var(--y) * 100%); translate: -50% -50%;
  width: 12px; height: 12px; border-radius: 50%; background: var(--red); border: 2px solid #fff; pointer-events: none;
  box-shadow: 0 0 0 1px rgba(228,27,19,.3), 0 0 12px rgba(228,27,19,.55); }
.fxh-medallon[aria-expanded="true"] .fxh-pin-n { background: var(--lightink); }
.c-funda { fill: rgba(228,27,19,.08); stroke: var(--red); stroke-width: .5; }
.c-alma { fill: #1C1C21; }
.c-cordon { fill: #34343B; }
.c-hilo { fill: #B9B9C0; stroke: #fff; stroke-width: .12; }
/* entrada: cuando la escena aparece, los puntos saltan en orden */
.fxh-escena[data-fase="antes"] .fxh-pin, .fxh-escena[data-fase="antes"] .fxh-medallon,
.fxh-escena[data-fase="antes"] .fxh-ancla, .fxh-escena[data-fase="antes"] .fxh-lineas > * { opacity: 0; }
.fxh-escena:not([data-fase="antes"]) .fxh-pin, .fxh-escena:not([data-fase="antes"]) .fxh-medallon,
.fxh-escena:not([data-fase="antes"]) .fxh-ancla {
  animation: fxh-entra .55s var(--ease-out) backwards; animation-delay: calc(.15s + var(--d) * 80ms); }
.fxh-escena:not([data-fase="antes"]) .fxh-lineas > * { animation: fxh-traza .5s var(--ease-out) backwards; animation-delay: calc(.35s + var(--d) * 80ms); }
@keyframes fxh-entra { from { opacity: 0; scale: .2; } }
@keyframes fxh-traza { from { opacity: 0; } }
/* la caja: junto al punto en escritorio (la coloca el motor), hoja fija abajo en móvil */
.fxh-card { position: absolute; z-index: 5; width: 360px; background: #fff; color: var(--lightink); border: 1px solid var(--lightline);
  border-radius: var(--r); box-shadow: 0 30px 80px rgba(10,10,11,.2), 0 4px 14px rgba(10,10,11,.08); overflow: hidden;
  animation: fxh-card .35s var(--ease-out) both; }
.fxh-card[hidden] { display: none; }
.fxh-card::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: var(--red); z-index: 2; }
@keyframes fxh-card { from { opacity: 0; transform: translateY(10px) scale(.97); } }
.fxh-ficha[hidden] { display: none; }
/* zoom: la misma imagen, de entera (62,5 % × 100 % en una caja 16:10) a su escala zk centrada en zx/zy */
.fxh-zoom { --iw: 1200px; --ih: 1200px; position: relative; aspect-ratio: 16 / 10; border-bottom: 1px solid var(--lightline); background-color: #fff;
  background-image: var(--fxh-zimg, var(--fxh-img)); background-repeat: no-repeat;
  background-size: calc(var(--iw) * var(--zk)) calc(var(--ih) * var(--zk));
  background-position: calc(50% + (.5 - var(--zx)) * var(--iw) * var(--zk)) calc(50% + (.5 - var(--zy)) * var(--ih) * var(--zk));
  animation: fxh-zoom .9s var(--ease-out) both; }
/* de la imagen entera (alto de la caja; --z0w es su ancho en % de la caja 16:10) a su zoom */
@keyframes fxh-zoom { from { background-size: var(--z0w, 62.5%) 100%; background-position: 50% 50%; } }
/* lente del medallón: enseña lr px de la otra imagen centrados en zx/zy, mida lo que mida el
   medallón (todo en %: el tamaño es iw/lr del círculo y la posición despeja el punto al centro) */
.fxh-lente { position: absolute; inset: 7%; border-radius: 50%; background-color: #000;
  background-image: var(--fxh-zimg, var(--fxh-img)); background-repeat: no-repeat;
  background-size: calc(var(--iwn) / var(--lr) * 100%) calc(var(--ihn) / var(--lr) * 100%);
  background-position: calc((.5 - var(--zx) * var(--iwn) / var(--lr)) / (1 - var(--iwn) / var(--lr)) * 100%)
                       calc((.5 - var(--zy) * var(--ihn) / var(--lr)) / (1 - var(--ihn) / var(--lr)) * 100%); }
.fxh-zoom-cable { display: grid; place-items: center; animation: none; background: radial-gradient(circle at 50% 45%, #fff, #F2F2EE); }
/* foto de detalle del punto (features.fotos): 4:3 entera, con un leve acercamiento al abrir */
.fxh-zoom-foto { aspect-ratio: 4 / 3; }
.fxh-zoom-foto.con-foto { background-image: var(--fxh-zfoto); background-size: 100% 100%; background-position: 50% 50%;
  animation: fxh-foto .7s var(--ease-out) both; }
@keyframes fxh-foto { from { background-size: 108% 108%; } }
.fxh-cable-g { height: 80%; aspect-ratio: 1; animation: fxh-gira 60s linear infinite; }
/* la correa de Kevlar (el 2 de Forge): lente blanca con el dibujo y, en la caja, el dibujo quieto */
.fxh-lente-dib { background: #fff; display: grid; place-items: center; }
.fxh-lente-dib .fxh-correa { width: 86%; height: 86%; }
.fxh-correa-g { height: 78%; aspect-ratio: 1; translate: 12% -6%; }   /* a la derecha y arriba: abajo a la izquierda va la cifra */
.co-a { fill: #1C1C21; } .co-b { fill: #2E2E35; } .co-hilo { stroke: #4A4A52; stroke-width: .35; }
.co-brillo { fill: #fff; opacity: .07; } .co-canto { fill: #0B0B0D; }
.co-corte { fill: rgba(228,27,19,.1); stroke: var(--red); stroke-width: .7; } .co-cota { fill: none; stroke: var(--red); stroke-width: .5; }
@keyframes fxh-gira { to { transform: rotate(360deg); } }
.fxh-zoom-l { position: absolute; left: 16px; bottom: 12px; font-family: var(--dsp); font-weight: 900; font-size: 22px; color: var(--red); }
.fxh-ficha-c { padding: 18px 22px 8px; }
.fxh-ficha-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.fxh-ficha-n { font-family: var(--dsp); font-weight: 900; font-size: var(--t-dsp-min); color: var(--red); }
.fxh-dato { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--red); white-space: nowrap;
  border: 1px solid rgba(228,27,19,.35); border-radius: var(--r-pill); padding: 4px 10px; }
.fxh-ficha-t { margin-top: 10px; font-size: 18px; text-transform: uppercase; letter-spacing: .01em; color: var(--lightink); }
.fxh-ficha-c p { margin-top: 8px; font-size: 14px; line-height: 1.55; color: var(--lightink2); }
.fxh-x { position: absolute; top: 14px; right: 12px; z-index: 3; width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--lightline);
  background: rgba(255,255,255,.94); color: var(--lightink); font-size: 20px; line-height: 1; cursor: pointer; }
.fxh-x:hover { border-color: var(--red); color: var(--red); }
.fxh-nav { display: flex; justify-content: flex-end; gap: 8px; padding: 6px 22px 18px; }
.fxh-nav button { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--lightline); background: #fff; color: var(--lightink);
  display: grid; place-items: center; cursor: pointer; transition: border-color var(--dur-1), color var(--dur-1); }
.fxh-nav button:hover { border-color: var(--red); color: var(--red); }
.fxh-nav svg { width: 16px; height: 16px; }
@media (prefers-reduced-motion: reduce) {
  .fxh-cable-g, .fxh-zoom, .fxh-card { animation: none; }
}
@media (max-width: 860px) {
  .fxh { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; grid-template-areas: "cab" "escena" "lista"; }
  .fxh-cab { padding-top: 0; }
  .fxh-escena { margin-top: var(--s6); }
  .fxh-medallon-l { display: none; }   /* en móvil tocaba el borde; la lista ya lleva la etiqueta */
  .fxh-detalle .fxh-medallon-l { display: block; bottom: -11px; padding: 5px 10px; font-size: 9.5px; }
  .fxh-medallon.fxh-detalle { width: calc(var(--lw, 26) * 1.04%); }
  .fxh-pin { width: 28px; height: 28px; border-width: 2px; }
  .fxh-pin-n { font-size: 12px; }
  .fxh-medallon { width: 23%; }
  .fxh-medallon .fxh-pin-n { width: 24px; height: 24px; border-width: 2px; }
  .fxh-card { position: fixed; left: 12px !important; right: 12px; bottom: 12px; top: auto !important; width: auto; z-index: 60;
    max-height: min(80vh, 640px); overflow-y: auto; }
}

/* pendiente / coming soon */
.pendiente { border: 1px dashed var(--amber-line); background: #1A140C; border-radius: var(--r); padding: var(--s6) var(--s6); }
.pendiente .h3 { color: var(--amber); margin-top: var(--s3); }
.pendiente .lead { margin-top: var(--s3); }
.pendlist { margin: 18px 0 0; padding-left: 20px; color: var(--ink2); font-size: var(--t-body-sm); }
.pendlist li { margin-bottom: 6px; }
.comingsoon { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: var(--gap-lg); align-items: center; }
.comingsoon .h2 { margin-top: 18px; } .comingsoon .lead { margin-top: var(--s4); }
.comingsoon .im { border-radius: var(--r); overflow: hidden; aspect-ratio: 4/3; background: #120A0A; }
.comingsoon .im img { width: 100%; height: 100%; object-fit: cover; }

/* comparativa */
.filters { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 22px; }
.cmp-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--r); background: var(--bg2);
            scrollbar-width: thin; scrollbar-color: var(--line3) transparent; overscroll-behavior-x: contain; }
.cmp-wrap::-webkit-scrollbar { height: 10px; }
.cmp-wrap::-webkit-scrollbar-track { background: transparent; }
.cmp-wrap::-webkit-scrollbar-thumb { background: var(--line2); border-radius: 99px; border: 3px solid var(--bg2); }
.cmp-wrap::-webkit-scrollbar-thumb:hover { background: var(--line3); }
.cmp-hint { display: none; margin-top: 10px; font-size: var(--t-caption); color: var(--muted); align-items: center; gap: 7px; }
.cmp-hint svg { width: 14px; height: 14px; stroke: currentColor; fill: none; }
@media (max-width: 1120px) { .cmp-hint { display: inline-flex; } }
.cmp { border-collapse: separate; border-spacing: 0; min-width: 1020px; width: 100%; table-layout: fixed; }
.cmp th, .cmp td { padding: 15px 12px; vertical-align: top; text-align: left; font-size: 12.5px; line-height: 1.45; border-bottom: 1px solid var(--line); overflow-wrap: break-word; }
/* Sin sticky vertical: el scrollport de la tabla es .cmp-wrap —overflow-x: auto lo hace
   scrollport en los dos ejes— y ahí no hay scroll vertical, así que el top: nav no fijaba
   la cabecera a la ventana: la bajaba 68 px desde su sitio y tapaba la primera fila
   ("Configuración"). El sticky horizontal de la primera columna sí funciona y se queda. */
.cmp th { background: var(--bg2); z-index: 2; }
.cmp th .pill { display: inline-flex; align-items: center; gap: 5px; height: 28px; padding: 0 11px; border-radius: var(--r-pill);
                background: var(--red); color: #fff; font-family: var(--body); font-weight: 600; font-size: var(--t-label); letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }
.cmp th .pill.rx { background: #000; border: 1px solid var(--line2); }
.cmp th .pill .x { color: var(--red); font-style: italic; }
.cmp td:first-child, .cmp th:first-child { position: sticky; left: 0; background: var(--bg2); z-index: 3; color: var(--muted);
     font-weight: 500; letter-spacing: .05em; text-transform: uppercase; font-size: 10.5px; width: 148px; }
.cmp td.mejor { color: var(--ink); }
.cmp-precio + .cmp-precio { margin-top: 8px; }
.cmp-precio span { display: block; font-size: var(--t-micro); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.cmp-precio b { color: var(--ink); font-weight: 600; }
.cmp-pend { color: var(--muted); }
.cmp .off { opacity: .3; }
/* filtros en dos niveles: la columna de la «Mejor opción», con una raya roja arriba y un
   fondo apenas teñido; debajo del nombre, la etiqueta y cuántos criterios cumple */
.cmp .r1 { background: rgba(228, 27, 19, .06); }
.cmp th.r1 { box-shadow: inset 0 3px 0 var(--red); }
.cmp-rank { margin-top: 10px; font-size: var(--t-micro); line-height: 1.4; color: var(--muted); letter-spacing: .02em; }
.cmp-rank:empty { display: none; }
.cmp-rank b { display: block; margin-bottom: 2px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ink2); }
.cmp th.r1 .cmp-rank b { color: var(--red3); }
.cmp-res { margin: -8px 0 18px; font-size: var(--t-caption); line-height: 1.5; color: var(--muted); }
.cmp-res:empty { display: none; }
.cmp-res b { color: var(--ink); font-weight: 600; }
.cmp-nota { margin-top: var(--s4); font-size: var(--t-caption); color: var(--muted); }

/* misma-necesidad */
.mn { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: var(--gap); }
.mn .im { aspect-ratio: 4/3; background: #fff; display: flex; align-items: center; justify-content: center; padding: 16px; position: relative; }
.mn .im img { max-height: 100%; width: auto; }
.mn .im .ph { color: #9A958C; }
.mn .im::after { content: ""; position: absolute; left: 50%; bottom: 0; width: 96px; height: 3px; background: var(--red); transform: translateX(-50%); }
.mn .body { padding: 20px 20px 24px; gap: 8px; }
.mn .g { font-family: var(--dsp); font-size: var(--t-dsp-min); color: var(--red); text-transform: uppercase; }   /* ELITE, BLACK…: el nombre de la gama en mayúsculas (30.09) */
.mn h4 { font-size: 15px; }
.mn .cod { font-size: var(--t-label); color: var(--muted); letter-spacing: .05em; }
.mn .claim { font-size: var(--t-body-sm); color: var(--ink2); }
.mn .claim b { color: var(--ink); font-weight: 600; }
.mn .sp { margin-top: auto; padding-top: 14px; border-top: 1px solid var(--line); display: flex; flex-direction: column; gap: 6px; font-size: var(--t-caption); color: var(--ink2); }
.mn .sp i { font-style: normal; color: var(--muted); }

/* masalla */
.masalla { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: var(--gap-lg); align-items: center; }
.masalla + .masalla { margin-top: var(--s9); }
.masalla .im { border-radius: var(--r); overflow: hidden; aspect-ratio: 4/3; }
.masalla .im img { width: 100%; height: 100%; object-fit: cover; }
.masalla .h2 { margin-top: var(--s4); } .masalla .lead { margin-top: var(--s5); }
.masalla .h3.tt { margin-top: var(--s3); font-size: 22px; }
.masalla .p { margin-top: var(--s4); }
.masalla-ctas { display: flex; gap: 12px; margin-top: var(--s6); flex-wrap: wrap; }
/* Cardio, «Una sala más completa»: bajo la foto y el texto, sus puntos en tarjetas a lo ancho,
   con su icono rojo arriba; en móvil, una debajo de otra con el icono al lado */
.masalla-cardio .p { font-size: var(--t-lead); line-height: 1.6; color: var(--ink2); }
.masalla-ejes { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--gap); margin-top: var(--s8); }
.masalla-ejes .card { padding: 26px 24px 28px; }
.masalla-ejes .ico { margin-bottom: 18px; }
.masalla-ejes h3 { font-size: 14.5px; }
.masalla-ejes p { margin-top: 8px; font-size: var(--t-body-sm); line-height: 1.55; color: var(--ink2); }
/* con dos puntos (30.09), cada tarjeta bajo una de las columnas de arriba (foto | texto), con el
   mismo hueco entre ellas, y el icono al lado del texto: a media página, con el icono encima,
   la tarjeta quedaba medio vacía a la derecha */
.masalla-ejes.dos { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: var(--gap-lg); }
.masalla-ejes.dos .card { display: grid; grid-template-columns: 36px minmax(0,1fr); column-gap: 18px; align-content: start; }
.masalla-ejes.dos .ico { grid-row: span 2; margin: 0; }
.masalla-ejes.dos p { margin-top: 6px; }
/* apilada (tableta y móvil) la foto va más apaisada, para que no se coma la pantalla de alto */
@media (max-width: 1040px) { .masalla-cardio .im { aspect-ratio: 16/10; } .masalla-ejes.dos { gap: var(--gap); } }
@media (max-width: 720px) {
  .masalla-ejes, .masalla-ejes.dos { grid-template-columns: 1fr; gap: 12px; margin-top: var(--s6); }
  .masalla-ejes .card { display: grid; grid-template-columns: 36px minmax(0,1fr); column-gap: 14px; padding: 18px 20px; }
  .masalla-ejes .ico { grid-row: span 2; margin: 0; }
  .masalla-ejes p { margin-top: 4px; }
}

/* financiación */
/* Financiación (fuentes/financiacion.pdf), en bandas: cabecera (titular | texto), las tres
   fórmulas con el plazo al lado, los tres motivos en columnas y la llamada al simulador. En dos
   columnas la izquierda doblaba en alto a la derecha y dejaba media tarjeta vacía. */
.fin { border: 1px solid var(--line); border-radius: var(--r); padding: 48px 44px;
       background: radial-gradient(900px 480px at 0% 0%, #300B0B, transparent 65%), var(--card); }
.fin-cab { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,1fr); gap: var(--s5) var(--gap-lg); align-items: end; }
.fin .h2 { margin-top: 14px; }
.fin-cab .lead { margin: 0; }
.fin-bloque { margin-top: 40px; padding-top: 32px; border-top: 1px solid var(--line); }
.fin-sub { font-family: var(--body); font-weight: 700; font-size: var(--t-label); letter-spacing: .14em; color: var(--ink); }
.fin-ops { margin-top: 18px; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: var(--gap); }
.fin-ops > div { padding: 22px 20px 24px; border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--bg2); }
.fin-ops b { display: block; font-size: var(--t-body-sm); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--red3); }
.fin-ops p { margin-top: 8px; font-size: var(--t-body-sm); color: var(--ink2); }
.fin-ops .fin-plazo { border-color: rgba(228, 27, 19, .45); background: radial-gradient(300px 200px at 100% 100%, #3A0D0C, transparent 75%), var(--card2); }
.fin-cifra { display: block; margin-top: 6px; font-family: var(--dsp); font-size: var(--t-num-sm); font-weight: 900; line-height: 1.15; color: var(--ink); }
.fin-porque { margin-top: 20px; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--s5) var(--gap-lg); }
.fin-porque h5 { margin: 14px 0 0; font-family: var(--body); font-weight: 600; font-size: var(--t-body-sm); letter-spacing: .02em; text-transform: uppercase; }
.fin-porque p { margin-top: 6px; font-size: var(--t-body-sm); color: var(--ink2); }
.fin-cta { margin-top: 40px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px 40px; padding: 26px 30px;
           border: 1px solid var(--line2); border-radius: var(--r); background: radial-gradient(520px 260px at 100% 0%, #300B0B, transparent 70%), var(--bg2); }
.fin-cta h4 { font-size: 18px; line-height: 1.2; }
.fin-cta p { margin-top: 6px; font-size: var(--t-body-sm); color: var(--ink2); }
.fin-cta .btn { flex: none; }
.fin-nota { margin-top: 14px; font-size: var(--t-caption); color: var(--muted); }
@media (max-width: 1000px) {
  .fin { padding: 36px 28px; }
  .fin-cab { grid-template-columns: 1fr; }
  .fin-ops { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .fin-porque { grid-template-columns: 1fr; }
  .fin-porque > div { display: grid; grid-template-columns: 36px minmax(0,1fr); column-gap: 16px; }   /* el icono al lado, como en las listas */
  .fin-porque .ico { grid-row: span 2; }
  .fin-porque h5 { margin-top: 0; }
}
@media (max-width: 560px) { .fin { padding: 28px 20px; } .fin-ops { grid-template-columns: 1fr; } .fin-cta { padding: 22px 20px; } }

/* Simulador de cuota: pistas de puntos (radios) para importe y plazo, dos botones para la
   antigüedad y el resultado a la derecha */
.cuota { display: grid; grid-template-columns: minmax(0,1fr) minmax(260px, 340px); gap: var(--s7); padding: 40px; border-radius: var(--r-lg); overflow: visible; }
.cuota-paso + .cuota-paso { margin-top: 30px; }
.cuota-cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 6px 16px; }   /* «Más de 140.000 €» baja en el móvil */
.cuota-cab span { font-weight: 700; font-size: var(--t-label); letter-spacing: .12em; text-transform: uppercase; }
.cuota-cab output { font-family: var(--dsp); font-size: var(--t-num-sm); font-weight: 900; white-space: nowrap; }
.cuota-pista { position: relative; display: flex; justify-content: space-between; margin-top: 10px; padding-bottom: 24px; }
.cuota-pista::before, .cuota-pista::after { content: ""; position: absolute; left: 18px; right: 18px; top: 16px; height: 4px; border-radius: 2px; background: var(--line2); }
.cuota-pista::after { right: auto; width: calc((100% - 36px) * var(--p, 0)); background: var(--red); transition: width var(--dur-2) var(--ease); }
.cuota-op { position: relative; z-index: 1; display: grid; place-items: center; width: 36px; height: 36px; cursor: pointer; }
.cuota-op input, .cuota-boton input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.cuota-op i { width: 20px; height: 20px; border-radius: 50%; border: 2px solid #fff; background: var(--card); pointer-events: none;
              transition: background var(--dur-1) var(--ease); }
.cuota-op input:checked + i { background: var(--red); }
.cuota-op input:focus-visible + i, .cuota-boton input:focus-visible + span { outline: 2px solid var(--red3); outline-offset: 3px; }
.cuota-op span { position: absolute; top: 38px; left: 50%; transform: translateX(-50%); white-space: nowrap; font-size: var(--t-micro); color: var(--muted); pointer-events: none; }
.cuota-op:first-child span { left: 8px; transform: none; }     /* el primero y el último, alineados a su borde */
.cuota-op:last-child span { left: auto; right: 8px; transform: none; }
.cuota-iva { margin-top: 10px; font-size: var(--t-micro); color: var(--muted); }
.cuota-iva + .cuota-paso { margin-top: 26px; }
.cuota-botones { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 14px; }
.cuota-boton { position: relative; }
.cuota-boton span { display: inline-flex; align-items: center; height: 44px; padding: 0 20px; border: 1px solid var(--line2); border-radius: var(--r-sm);
                    font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; pointer-events: none;
                    transition: border-color var(--dur-1) var(--ease), background var(--dur-1) var(--ease); }
.cuota-boton input:checked + span { border-color: var(--red); background: rgba(228, 27, 19, .14); }
.cuota-res { display: flex; flex-direction: column; padding-left: var(--s7); border-left: 1px solid var(--line); }
.cuota-res-t { font-weight: 700; font-size: var(--t-label); letter-spacing: .12em; text-transform: uppercase; }
.cuota-cifra { margin-top: 14px; min-height: 104px; }
.cuota-desde { display: block; font-size: var(--t-caption); font-weight: 600; }
.cuota-num { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 4px; margin-top: 4px; color: var(--red3); }
.cuota-num b { font-family: var(--dsp); font-weight: 900; font-size: clamp(34px, 3.4vw, 50px); line-height: .95; color: var(--red3); }   /* cabe 11.667 (140.000 € a 12 meses) */
.cuota-num small { font-family: var(--dsp); font-weight: 900; font-size: 18px; margin: 2px 0 0 3px; }
.cuota-num span { align-self: flex-end; margin-bottom: 4px; font-size: var(--t-caption); color: var(--ink2); }
.cuota-no { display: block; font-family: var(--dsp); font-weight: 900; font-size: clamp(26px, 3vw, 36px); line-height: 1.05; color: var(--red3); }
.cuota-motivo { display: block; margin-top: 10px; font-size: var(--t-caption); font-weight: 600; color: var(--red3); }
.cuota-orient { margin: 16px 0 22px; font-size: var(--t-micro); line-height: 1.55; color: var(--muted); }
.cuota-orient b { display: block; margin-bottom: 4px; font-size: var(--t-caption); color: var(--ink); }
.cuota-res .btn { margin-top: auto; }
.cuota-pasos { margin-top: var(--s8); }
.cuota-pasos ol { list-style: none; margin: var(--s5) 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: var(--gap); }
.cuota-pasos li { padding: 24px 22px 26px; }
.cuota-pasos .n { font-family: var(--dsp); font-weight: 900; font-size: 15px; color: var(--red3); }
.cuota-pasos li h4 { margin-top: 14px; font-size: 17px; }
.cuota-pasos li p { margin-top: 6px; font-size: var(--t-body-sm); color: var(--ink2); }
.cuota-estudio { margin-top: var(--gap); display: grid; grid-template-columns: auto minmax(0,1fr); gap: 10px 32px; align-items: center; padding: 26px 28px;
                 background: radial-gradient(520px 260px at 0% 100%, #300B0B, transparent 70%), var(--card); }
.cuota-estudio b { font-family: var(--dsp); font-weight: 900; font-size: var(--t-num-sm); white-space: nowrap; }
.cuota-estudio p { font-size: var(--t-body-sm); color: var(--ink2); }
.cuota-nota { margin-top: 12px; font-size: var(--t-caption); color: var(--muted); }
@media (max-width: 1000px) {
  .cuota { grid-template-columns: 1fr; padding: 32px 28px; }
  .cuota-res { padding: var(--s6) 0 0; border-left: 0; border-top: 1px solid var(--line); }
  .cuota-cifra { min-height: 0; }
  .cuota-pasos ol { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 560px) {
  .cuota { padding: 26px 18px; }
  .cuota-paso[data-grupo="importe"] .cuota-op:not(:first-child):not(:last-child) span { display: none; }   /* no caben las siete cifras */
  .cuota-pasos ol, .cuota-estudio { grid-template-columns: 1fr; }
}

/* contacto */
.puertas { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--gap); margin-bottom: var(--s7); }
.puertas > div { padding: 26px 24px 28px; }
.puertas h4 { font-size: 17px; }
.puertas p { margin-top: 8px; font-size: var(--t-body-sm); color: var(--ink2); }
.contact { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(0,1fr); gap: var(--gap); align-items: start; }
.especialista { padding: 34px; display: grid; grid-template-columns: 110px minmax(0,1fr); gap: 24px; align-items: start; }
.especialista .ph { width: 110px; height: 110px; border-radius: 50%; background: var(--card2); display: block; object-fit: cover; }
.especialista h3 { font-size: var(--t-title-sm); margin-top: 8px; }
.especialista .cargo { margin-top: 6px; color: var(--red); font-size: var(--t-body-sm); font-weight: 500; }
.especialista p { margin-top: 14px; font-size: 14px; color: var(--ink2); }
/* el último párrafo es el cierre («Asesoramiento personalizado…»): en blanco, sin más */
.especialista p:last-of-type:not(:first-of-type) { margin-top: 10px; color: var(--ink); font-weight: 500; }
/* su teléfono y, debajo, el correo (30.09, de los cartones de Ventas y B2B, que salieron), como la
   línea del Instagram que llevaba: icono rojo y el dato; enlaces tel: y mailto: */
.especialista .vias { margin-top: 16px; display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.especialista .via { display: inline-flex; align-items: center; gap: 9px; max-width: 100%; font-size: 15px; font-weight: 600;
  color: var(--ink); letter-spacing: .02em; transition: color var(--dur-1) var(--ease); }
.especialista .via span { min-width: 0; overflow-wrap: anywhere; }
.especialista .via svg { width: 17px; height: 17px; flex: none; color: var(--red); }
.especialista .via:hover { color: var(--red3); }
.especialista .via:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; border-radius: 4px; }

/* LevantaTuGym: foto | texto con los tres ejes, y debajo los seis últimos posts en una fila
   (3:4, como la rejilla del perfil). Un halo rojo detrás de la foto, como el de Nuestra red. */
.blk-levanta { position: relative; overflow: hidden; }
.blk-levanta::before { content: ""; position: absolute; left: -12%; top: -10%; width: 60%; height: 80%; pointer-events: none;
  background: radial-gradient(closest-side, rgba(228,27,19,.16), rgba(228,27,19,0)); }
.blk-levanta .wrap { position: relative; }
.lvt { display: grid; grid-template-columns: minmax(0,.82fr) minmax(0,1.18fr); gap: var(--gap-lg); align-items: stretch; }
.lvt-foto { position: relative; margin: 0; min-height: 520px; border-radius: var(--r); overflow: hidden; border: 1px solid var(--line); background: var(--card); }
.lvt-foto img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
.lvt-foto figcaption { position: absolute; left: 14px; bottom: 14px; display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px 8px 11px;
  border-radius: var(--r-pill); background: rgba(10,10,11,.72); backdrop-filter: blur(6px); font-size: var(--t-body-sm); font-weight: 500; color: #fff; }
.lvt-foto figcaption svg, .lvt-perfil svg { width: 16px; height: 16px; flex: none; }
.lvt-txt { align-self: center; }
.lvt-txt .eyebrow { display: block; margin-bottom: var(--s4); }
.lvt-txt .h2 { font-size: var(--t-display); }
.lvt-claim { margin: var(--s4) 0 var(--s5); color: var(--ink); }
.lvt-claim + .p { font-size: var(--t-lead); color: var(--ink); }
.lvt-ejes { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 14px; margin-top: var(--s6); }
.lvt-ejes .card { padding: 22px 20px 24px; }
.lvt-ejes .ico { margin-bottom: 14px; background: var(--red); }
.lvt-ejes h3 { font-size: 14.5px; }
.lvt-ejes p { margin-top: 8px; font-size: 13px; color: var(--muted); }
.lvt-feed { margin-top: var(--s8); }
.lvt-cab { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s4); margin-bottom: var(--s4); }
.lvt-perfil { display: inline-flex; align-items: center; gap: 8px; font-size: var(--t-body-sm); font-weight: 500; color: var(--ink2); }
.lvt-grid { display: grid; grid-template-columns: repeat(6, minmax(0,1fr)); gap: 10px; }
.lvt-post { position: relative; display: block; aspect-ratio: 3/4; border-radius: var(--r-sm); overflow: hidden; background: var(--card); border: 1px solid var(--line); }
.lvt-post img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--dur-3) var(--ease); }
.lvt-post::after { content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 0 0 1px rgba(255,255,255,0); transition: box-shadow var(--dur-2) var(--ease); }
.lvt-post:hover img { transform: scale(1.04); }
.lvt-post:hover::after { box-shadow: inset 0 0 0 2px var(--red); }
.lvt-post:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }
.lvt-vacio { flex-direction: row; align-items: center; gap: 16px; padding: 22px 24px; }
.lvt-vacio p { margin-top: 4px; font-size: var(--t-body-sm); color: var(--ink2); }
.lvt-avatar { width: 52px; height: 52px; flex: none; border-radius: 50%; display: grid; place-items: center; color: #fff; background: linear-gradient(135deg, var(--red3), var(--red2)); }
.lvt-avatar svg { width: 24px; height: 24px; }
.lvt-mas { display: flex; width: max-content; margin: var(--s6) auto 0; gap: 10px; }
.lvt-mas svg { width: 17px; height: 17px; flex: none; }
@media (prefers-reduced-motion: reduce) { .lvt-post img { transition: none; } .lvt-post:hover img { transform: none; } }
@media (max-width: 1040px) {
  .lvt-ejes { grid-template-columns: 1fr; }
  .lvt-ejes .card { display: grid; grid-template-columns: 36px minmax(0,1fr); column-gap: 14px; padding: 18px; }
  .lvt-ejes .ico { grid-row: span 2; margin: 0; }
  .lvt-ejes p { margin-top: 4px; }
  .lvt-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (max-width: 720px) {
  .lvt { grid-template-columns: 1fr; }
  .lvt-cab { flex-direction: column; align-items: flex-start; gap: 6px; }
  .lvt-foto { min-height: 0; aspect-ratio: 4/5; }
  .lvt-grid { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px; }
  .lvt-mas { width: 100%; justify-content: center; }
}
.form { padding: 34px; }
.form .grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }
.form label { display: block; font-size: var(--t-micro); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); font-weight: 600; margin-bottom: 6px; }
.form input, .form textarea { width: 100%; background: var(--bg); border: 1px solid var(--line2); border-radius: var(--r-sm);
     color: #fff; padding: 12px 14px; font-family: var(--body); font-size: 14px; }
.form input:focus, .form textarea:focus { outline: 2px solid var(--red); outline-offset: 1px; border-color: transparent; }
.form .full { grid-column: 1 / -1; }
.sala-box { grid-column: 1 / -1; background: var(--bg); border: 1px dashed var(--line2); border-radius: var(--r-sm); padding: 14px 16px; }
.sala-items { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.sala-items span { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--line2); border-radius: var(--r-pill); padding: 5px 10px 5px 12px; font-size: var(--t-caption); }
.sala-items span button { background: none; border: 0; color: var(--muted); cursor: pointer; font-size: 14px; line-height: 1; padding: 0; }
.sala-items .empty { border: 0; color: var(--muted); padding-left: 0; }
.form .actions { margin-top: 18px; display: flex; gap: 12px; flex-wrap: wrap; }
.form .note { font-size: var(--t-caption); color: var(--muted); margin-top: 12px; }
.direct { margin-top: var(--gap); display: flex; flex-direction: column; gap: 12px; }
.direct > div { padding: 18px 22px; display: grid; grid-template-columns: 110px minmax(0,1fr); gap: 16px; align-items: baseline; }
.direct .s { font-size: var(--t-caption); color: var(--muted); margin-top: 5px; }
/* Síguenos con el canto de LED rojo, fijo: el borde en rojo vivo con un filete
   más claro por dentro (el tubo), el halo rojo por fuera y un reflejo suave hacia el cartón. Con
   el ratón encima la luz sube un punto. Sin movimiento, así que vale igual con reduced-motion. */
.direct > .card { border-color: #FF4336;
  box-shadow: inset 0 0 0 1px rgba(255,170,160,.16), inset 0 0 22px rgba(228,27,19,.14),
              0 0 0 1px rgba(255,54,40,.32), 0 0 10px rgba(255,40,28,.5), 0 0 26px rgba(228,27,19,.2);
  transition: box-shadow var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease); }
.direct > .card:hover { border-color: #FF5A4E;
  box-shadow: inset 0 0 0 1px rgba(255,190,182,.24), inset 0 0 26px rgba(228,27,19,.2),
              0 0 0 1px rgba(255,64,50,.45), 0 0 14px rgba(255,44,30,.66), 0 0 34px rgba(228,27,19,.3); }
/* Síguenos: las cuatro redes en botones, a lo ancho del cartón bajo su rótulo. Las clases son
   soc-*, no red-*: .red es la del texto en rojo de todo el catálogo (los titulares, «Elite»…). En reposo, el
   icono en blanco sobre un círculo gris; al pasar por encima (o con el foco) el botón sube un
   poco, el borde y el círculo toman el color de la red, se enciende un halo de ese color y
   asoma la flecha de enlace externo. La cuenta va bajo el nombre cuando el botón da para ella
   (el cartón es contenedor: con 680 px o más) y siempre en el title y en la etiqueta. */
.direct .siguenos { container-type: inline-size; }
.direct .siguenos > .s { margin-top: 0; }
.socs { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 8px; }
.soc { position: relative; display: flex; flex-direction: column; align-items: center; gap: 9px; min-width: 0; padding: 14px 6px 12px;
  border-radius: var(--r-sm); background: var(--bg2); border: 1px solid var(--line); color: var(--ink); text-align: center;
  transition: transform var(--dur-2) var(--ease-out), border-color var(--dur-1) var(--ease), box-shadow var(--dur-2) var(--ease); }
.soc-ico { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: var(--card2); color: #fff;
  transition: transform var(--dur-2) var(--ease-out); }
.soc-ico svg { width: 20px; height: 20px; }
.soc-t { display: grid; gap: 2px; min-width: 0; max-width: 100%; }
.soc-t b { font-size: 12px; font-weight: 600; letter-spacing: .02em; }
.soc-t small { display: none; font-size: 11px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.soc-ir { position: absolute; top: 7px; right: 7px; width: 13px; height: 13px; color: #fff; opacity: 0; transform: translate(-3px, 3px);
  transition: opacity var(--dur-1) var(--ease), transform var(--dur-2) var(--ease-out); }
.soc-ir svg { display: block; width: 100%; height: 100%; }
.soc:hover, .soc:focus-visible { transform: translateY(-3px); border-color: var(--rc); box-shadow: 0 16px 32px -14px var(--rs); }
.soc:hover .soc-ico, .soc:focus-visible .soc-ico { background: var(--rf, var(--rc)); transform: scale(1.07); }
.soc:hover .soc-ir, .soc:focus-visible .soc-ir { opacity: 1; transform: none; }
.soc:active { transform: translateY(-1px); }
.soc:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }
.soc-youtube { --rc: #FF0033; --rs: rgba(255,0,51,.55); }
.soc-instagram { --rc: #E1306C; --rs: rgba(214,36,159,.5);
  --rf: radial-gradient(circle at 30% 107%, #FDF497 0%, #FDF497 5%, #FD5949 45%, #D6249F 60%, #285AEB 90%); }
.soc-linkedin { --rc: #0A66C2; --rs: rgba(10,102,194,.6); }
.soc-tiktok { --rc: #25F4EE; --rs: rgba(254,44,85,.45); --rf: #000; }
.soc-tiktok:hover .soc-ico svg, .soc-tiktok:focus-visible .soc-ico svg { filter: drop-shadow(-1.4px -1.2px 0 #25F4EE) drop-shadow(1.4px 1.2px 0 #FE2C55); }
@container (min-width: 680px) { .soc-t small { display: block; } }
@container (max-width: 340px) {
  .soc { padding: 12px 3px 10px; gap: 8px; } .soc-ico { width: 36px; height: 36px; } .soc-ico svg { width: 18px; height: 18px; }
  .soc-t b { font-size: 11px; letter-spacing: 0; } .soc-ir { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .soc, .soc-ico, .soc-ir { transition: none; }
  .soc:hover, .soc:focus-visible, .soc:active, .soc:hover .soc-ico, .soc:focus-visible .soc-ico { transform: none; }
}

/* ---- MaxGlute · Booty Zone ----
   La pestaña especial de la zona: el letrero y la zona con sus máquinas. El letrero de neón va sobre un muro oscuro (ruido fino, más
   claro hacia el centro) con el resplandor rojo que dejan las letras encendidas y la línea de
   LED del suelo, como en las fotos. Encendido por defecto: .anim (del JS) lo apaga y .on lo
   enciende al entrar en pantalla, cada letra con su parpadeo (--d), el escudo con más tirones,
   la línea de abajo al final y, con ellas, el resplandor y el LED. */
.blk-letrero { position: relative; overflow: hidden; padding: clamp(72px, 10vw, 136px) 0 clamp(80px, 10vw, 140px);
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='r'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 .92 0 0 0 0 .9 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23r)'/%3E%3C/svg%3E"),
    radial-gradient(ellipse 75% 85% at 50% 42%, #1b1212 0%, #100b0b 48%, #070606 100%); }
.blk-letrero::after { content: ""; position: absolute; left: 5%; right: 5%; bottom: clamp(26px, 3.4vw, 44px); height: 2px; border-radius: 2px;
  background: #ff3b2f; box-shadow: 0 0 6px 1px rgba(255,48,36,.85), 0 0 22px 5px rgba(228,27,19,.45); }
.letrero { position: relative; container-type: inline-size; text-align: center; }
.letrero::before { content: ""; position: absolute; left: 50%; top: 45%; width: min(1180px, 135%); aspect-ratio: 2.6; transform: translate(-50%, -50%);
  pointer-events: none; background: radial-gradient(closest-side, rgba(228,27,19,.36), rgba(228,27,19,.11) 58%, rgba(228,27,19,0)); }
.letrero-vh { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.neon-svg { position: relative; display: block; width: min(100%, 1120px); height: auto; margin: 0 auto; overflow: visible; }
.neon-2l { display: none; }
.neon-svg use { fill: none; stroke-linejoin: round; }
.neon-apagado use { stroke: #3a2320; stroke-width: 3; }
.neon-luz .h { stroke: #ff1e12; stroke-width: 10; opacity: .72; }
.neon-luz .t { stroke: #ff3a2e; stroke-width: 3.2; }
.neon-luz .c { stroke: #ffe4df; stroke-width: 1.2; }
/* la línea de abajo, como en las fotos: casi tan ancha como las letras (un 80 %), a un quinto de
   su alto y pegada a ellas; el punto, blanco como el texto */
.blk-letrero p.neon-sub { position: relative; margin: clamp(2px, .8cqi, 12px) 0 0; font-family: var(--body); font-weight: 600; text-transform: uppercase;
  font-size: clamp(12px, 3.4cqi, 41px); letter-spacing: .1em; color: #fff;
  text-shadow: 0 0 3px rgba(255,255,255,.8), 0 0 12px rgba(255,110,100,.55), 0 0 26px rgba(228,27,19,.4); }
.neon-punto { margin: 0 .45em; }
.letrero.anim .nl { opacity: 0; }
.letrero.anim::before { opacity: 0; }
.blk-letrero .letrero.anim p.neon-sub { color: #3b3131; text-shadow: none; }
.blk-letrero:has(.letrero.anim)::after { opacity: .14; box-shadow: none; }
.letrero.anim.on .nl { animation: neon-chispa 1.5s steps(1, end) var(--d) both; }
.letrero.anim.on .nl.esc { animation-name: neon-chispa-esc; animation-duration: 2.2s; }
.letrero.anim.on::before { animation: neon-muro 1.8s var(--ease-out) .3s both; }
.blk-letrero .letrero.anim.on p.neon-sub { animation: neon-sub 1s steps(1, end) 1.7s both; }
.blk-letrero:has(.letrero.anim.on)::after { animation: neon-led 1.2s steps(1, end) 2.2s both; }
@keyframes neon-chispa { 0% { opacity: 0; } 5% { opacity: 1; } 8% { opacity: .08; } 13% { opacity: .9; } 17% { opacity: 0; }
                         30% { opacity: 1; } 33% { opacity: .3; } 37%, 100% { opacity: 1; } }
@keyframes neon-chispa-esc { 0% { opacity: 0; } 4% { opacity: .9; } 6% { opacity: 0; } 20% { opacity: 1; } 23% { opacity: .15; }
                             45% { opacity: 1; } 47% { opacity: .2; } 52% { opacity: 1; } 70% { opacity: .45; } 73%, 100% { opacity: 1; } }
@keyframes neon-muro { from { opacity: 0; } to { opacity: 1; } }
@keyframes neon-sub { 0% { color: #3b3131; text-shadow: none; }
                      12% { color: #fff; text-shadow: 0 0 3px rgba(255,255,255,.8), 0 0 12px rgba(255,110,100,.55), 0 0 26px rgba(228,27,19,.4); }
                      20% { color: #3b3131; text-shadow: none; }
                      34%, 100% { color: #fff; text-shadow: 0 0 3px rgba(255,255,255,.8), 0 0 12px rgba(255,110,100,.55), 0 0 26px rgba(228,27,19,.4); } }
@keyframes neon-led { 0% { opacity: .14; box-shadow: none; } 10% { opacity: 1; box-shadow: 0 0 6px 1px rgba(255,48,36,.85), 0 0 22px 5px rgba(228,27,19,.45); }
                      16% { opacity: .14; box-shadow: none; } 30%, 100% { opacity: 1; box-shadow: 0 0 6px 1px rgba(255,48,36,.85), 0 0 22px 5px rgba(228,27,19,.45); } }
@media (max-width: 560px) {
  .neon-1l { display: none; }
  .neon-2l { display: block; width: min(100%, 440px); }
  .blk-letrero p.neon-sub { font-size: 12.5px; letter-spacing: .12em; margin-top: 6px; }
  .letrero::before { width: 150%; aspect-ratio: 1.5; }
}

/* La zona entera: la foto a lo ancho con un punto numerado por máquina (x, y en fracción de la
   foto; el nombre sale al pasar por encima o enfocar) y, debajo, la leyenda por movimientos. */
.bz-mapa { margin: 0; }
.bz-foto { position: relative; aspect-ratio: 16 / 9; border-radius: var(--r-lg); overflow: hidden; background: #120c0b; }
.bz-foto img { display: block; width: 100%; height: 100%; object-fit: cover; }
.bz-pt { position: absolute; width: 32px; height: 32px; margin: -16px 0 0 -16px; padding: 0; border: 2px solid #fff; border-radius: 50%;
  background: var(--red); color: #fff; font: 600 14px/1 var(--body); cursor: pointer; display: grid; place-items: center;
  box-shadow: 0 0 0 5px rgba(228,27,19,.25), 0 0 18px 4px rgba(228,27,19,.6); transition: transform var(--dur-2) var(--ease); }
.bz-pt::after { content: ""; position: absolute; inset: -6px; border-radius: 50%; border: 2px solid rgba(242,39,30,.7); opacity: 0;
  animation: bz-eco 3.6s ease-out calc(var(--i) * 320ms) infinite; pointer-events: none; }
@keyframes bz-eco { 0% { transform: scale(.8); opacity: .75; } 55%, 100% { transform: scale(1.9); opacity: 0; } }
.bz-tag { position: absolute; left: calc(100% + 10px); top: 50%; transform: translateY(-50%); padding: 7px 12px; border-radius: var(--r-pill);
  background: rgba(10,10,11,.86); border: 1px solid var(--line2); backdrop-filter: blur(6px); white-space: nowrap;
  font: 500 13px/1 var(--body); opacity: 0; pointer-events: none; transition: opacity var(--dur-2); }
.bz-pt.izq .bz-tag { left: auto; right: calc(100% + 10px); }
.bz-pt:hover, .bz-pt:focus-visible, .bz-pt.activo { transform: scale(1.15); z-index: 2; }
.bz-pt:hover .bz-tag, .bz-pt:focus-visible .bz-tag, .bz-pt.activo .bz-tag { opacity: 1; }
.bz-pt:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
.bz-nota { margin-top: 12px; font-size: var(--t-caption); color: var(--muted); }
.bz-leyenda { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: var(--gap); margin-top: var(--s6); }
.bz-grupo { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding-top: 14px; border-top: 1px solid var(--line2); }
.bz-grupo .eyebrow { margin-bottom: 2px; }
.bz-eq { display: inline-flex; align-items: center; gap: 10px; max-width: 100%; padding: 5px 13px 5px 5px; border: 1px solid var(--line2); border-radius: var(--r-pill);
  background: transparent; color: var(--ink); font: 500 14px/1.2 var(--body); text-align: left; cursor: pointer;
  transition: border-color var(--dur-2), background var(--dur-2); }
.bz-eq b { flex: none; width: 26px; height: 26px; border-radius: 50%; background: var(--red); color: #fff; display: grid; place-items: center; font-size: 12.5px; font-weight: 600; }
.bz-eq small { color: var(--muted); font-size: 11.5px; letter-spacing: .02em; white-space: nowrap; }
.bz-eq:hover, .bz-eq:focus-visible, .bz-eq.activo { border-color: var(--red); background: rgba(228,27,19,.12); }
.bz-eq:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }

@media (max-width: 900px) { .bz-leyenda { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 560px) {
  .bz-pt { width: 24px; height: 24px; margin: -12px 0 0 -12px; font-size: 12px; border-width: 1.5px; }
  .bz-tag { display: none; }
  .bz-leyenda { gap: 18px 12px; }
  .bz-eq small { display: none; }
}
@media (prefers-reduced-motion: reduce) { .bz-pt::after { animation: none; } }

/* ============ 6 · CAPÍTULOS ============ */
.pag { scroll-margin-top: calc(var(--nav) + var(--subnav) + 8px); }
/* La landing Titanium no lleva subnav: sus anclas suben esos 54 px. */
#view.sinsub .pag { scroll-margin-top: calc(var(--nav) + 8px); }
.pag + .pag { border-top: 2px solid var(--line2); }
.pag > section:first-child.pagehead-sec { padding-top: var(--s8); }
/* La zona de MaxGlute empieza por la rejilla, sin cabecera: arranca donde lo haría la cabecera */
.pag > section:first-child.blk-product-grid { padding-top: var(--s8); }
.pagehead-top { display: flex; align-items: center; gap: var(--s4); flex-wrap: wrap; }
.misala { white-space: nowrap; }

/* Mi sala en el panel lateral: lo marcado, por gama, con su foto y su "quitar" */
.ms { padding: var(--s7) var(--s6) var(--s8); }
.ms .h2 { margin-top: 10px; outline: none; }
.ms-sub { margin-top: 12px; color: var(--ink2); font-size: var(--t-body); max-width: 42ch; }
.ms-grupo { margin-top: var(--s6); }
.ms-grupo > .micro { color: var(--red3); margin-bottom: 10px; }
.ms-lista { list-style: none; margin: 0; padding: 0; }
.ms-item { display: grid; grid-template-columns: 64px minmax(0,1fr) auto; gap: 14px; align-items: center; padding: 12px 0; border-top: 1px solid var(--line); }
.ms-lista .ms-item:last-child { border-bottom: 1px solid var(--line); }
.ms-foto { width: 64px; height: 64px; border-radius: 8px; background: #fff; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.ms-foto img { width: 100%; height: 100%; object-fit: contain; padding: 4px; }
.ms-foto svg { width: 22px; height: 22px; stroke: #9A958C; fill: none; }
.ms-txt b { display: block; font-size: var(--t-body); font-weight: 600; color: #fff; line-height: 1.3; }
.ms-txt span { display: block; margin-top: 3px; font-size: var(--t-caption); color: var(--muted); }
.ms-x { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--line2); background: transparent; color: var(--ink2);
        font-size: 19px; line-height: 1; cursor: pointer; }
.ms-x:hover { color: #fff; border-color: var(--line3); }
.ms-x:focus-visible, .ms-vaciar:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }
.ms-ctas { display: flex; gap: 10px; flex-wrap: wrap; margin-top: var(--s6); }
.ms-ctas .btn[disabled] { opacity: .7; cursor: progress; }
.ms-vaciar { margin-top: var(--s4); background: none; border: 0; padding: 6px 0; color: var(--muted); font-family: var(--body);
             font-size: var(--t-caption); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.ms-vaciar:hover { color: var(--ink2); } .ms-vaciar.seguro { color: var(--red3); }
.ms-vacia { margin-top: var(--s6); padding: var(--s6); border: 1px dashed var(--line2); border-radius: var(--r); text-align: center; }
.ms-vacia p + p { margin-top: 8px; color: var(--muted); font-size: var(--t-body-sm); }
.ms-vacia .btn { margin-top: var(--s5); }
@media (max-width: 640px) { .ms { padding: var(--s7) var(--pad) var(--s8); } .ms-item { grid-template-columns: 56px minmax(0,1fr) auto; } .ms-foto { width: 56px; height: 56px; } }

/* ficha en panel lateral */
.drawer { position: fixed; inset: 0; z-index: 70; pointer-events: none; }
.drawer-bg { position: absolute; inset: 0; background: rgba(0,0,0,.6); opacity: 0; transition: opacity var(--dur-2) var(--ease); }
/* Cerrado se aparta 120 px más allá del borde: la sombra (-30 px + 80 de difuminado) llega
   ~110 px hacia la izquierda, y con el panel justo en el borde asomaba como una franja gris
   en el lado derecho de todas las páginas, muy visible sobre las secciones claras. */
.drawer-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(560px, 100vw); background: var(--bg2); border-left: 1px solid var(--line2);
                transform: translateX(calc(100% + 120px)); transition: transform var(--dur-3) var(--ease-out); overflow-y: auto; box-shadow: -30px 0 80px rgba(0,0,0,.5); }
.drawer.on { pointer-events: auto; } .drawer.on .drawer-bg { opacity: 1; } .drawer.on .drawer-panel { transform: none; }
/* Variante modal del mismo panel: centrada y grande, en vez de la hoja lateral. Se centra
   con grid (no con transform) porque el transform queda libre para la animación de apertura:
   el panel arranca en el rectángulo exacto de la tarjeta pulsada y crece hasta su tamaño. */
.drawer.modal { display: grid; place-items: center; padding: 4vh var(--pad); }
.drawer.modal .drawer-panel { position: relative; top: auto; right: auto; bottom: auto;
   width: min(1040px, 100%); max-height: 92vh; border: 1px solid var(--line2); border-radius: var(--r-lg);
   box-shadow: 0 40px 120px rgba(0,0,0,.62); transform: scale(.96); opacity: 0;
   transition: transform var(--dur-3) var(--ease-out), opacity var(--dur-2) var(--ease);
   transform-origin: center center; will-change: transform; }
.drawer.modal.on .drawer-panel { transform: none; opacity: 1; }
.pi { display: grid; grid-template-columns: minmax(0,.82fr) minmax(0,1.18fr); align-items: stretch;
      min-height: min(680px, 80vh); }
.pi-im { position: relative; min-height: 320px; background: var(--card); }
.pi-im img, .pi-im video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.caso .im video { width: 100%; height: 100%; object-fit: cover; display: block; background: var(--card); }
.pi-body { padding: var(--s7); display: flex; flex-direction: column; justify-content: center; }
/* Menda no parte palabra (overflow-wrap: normal en la regla general de títulos), así que
   "PERSONALIZACIÓN" tiene que caber entera en la columna: el cuerpo va medido, no al 3vw. */
.pi-body .h2 { margin-top: var(--s3); font-size: clamp(22px, 2.1vw, 30px); }
/* El claim es una frase entera, no un nombre: va más pequeño y más apretado que un h2 de dos
   palabras, igual que en la tarjeta (.caso h3.claim). */
.pi-body .h2.pi-claim { font-size: clamp(20px, 1.8vw, 26px); line-height: 1.08; }
.pi-body .lead { margin-top: var(--s5); text-align: left; }
@media (max-width: 860px) {
  .pi { grid-template-columns: 1fr; }
  /* El width explícito es obligatorio: con align-items:stretch el item recibe altura
     definida y el aspect-ratio pasa a calcular el ANCHO desde ella (242 × 1.6 = 388 px en un
     panel de 333), que era el desbordamiento horizontal. Con ancho definido manda la columna
     y la imagen rellena por object-fit. */
  /* El aspect-ratio deriva la altura del ancho y no sabe nada del max-height del panel: en
     landscape de móvil la foto sola medía 447 px dentro de un panel de 345 y empujaba título
     y texto fuera de la vista. El tope en vh la mantiene dentro. */
  .pi-im { min-height: 0; aspect-ratio: 16/10; width: 100%; max-height: 34vh; }
  .pi-body { padding: var(--s6) var(--s5) var(--s7); }
  /* La columna se estrecha mucho y "PERSONALIZACIÓN" no cabe: se mide para una línea en los
     anchos de móvil habituales y el break-word queda de red, para que nunca haya scroll
     horizontal en el panel por más estrecha que sea la pantalla. */
  .pi-body .h2 { font-size: clamp(19px, 5.4vw, 26px); overflow-wrap: break-word; }
  .pi-body .h2.pi-claim { font-size: clamp(17px, 4.8vw, 22px); }
}
.drawer-x { position: absolute; top: 14px; right: 14px; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--line2); background: var(--bg); color: #fff; font-size: 22px; cursor: pointer; z-index: 2; }
.fi-im { background: #fff; aspect-ratio: 4/3; display: flex; align-items: center; justify-content: center; padding: 28px; position: relative; }
.fi-im img { max-height: 100%; width: auto; }
.fi-im::after { content: ""; position: absolute; left: 50%; bottom: 0; width: 140px; height: 3px; background: var(--red); transform: translateX(-50%); }
/* Carrusel de la ficha: mismo marco que la foto sola (4:3 sobre blanco, filete rojo abajo);
   cada foto ocupa la pista entera y encaja con scroll-snap, una por gesto (snap-stop). */
.fi-gal { position: relative; background: #fff; }
.fi-gal::after { content: ""; position: absolute; left: 50%; bottom: 0; width: 140px; height: 3px; background: var(--red); transform: translateX(-50%); pointer-events: none; }
.fi-pista { display: flex; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; }
.fi-pista::-webkit-scrollbar { display: none; }
.fi-pista:focus-visible { outline: 2px solid var(--red); outline-offset: -2px; }
.fi-slide { flex: 0 0 100%; margin: 0; aspect-ratio: 4/3; padding: 28px; display: flex; align-items: center; justify-content: center; scroll-snap-align: center; scroll-snap-stop: always; }
.fi-slide img { max-width: 100%; max-height: 100%; width: auto; height: auto; -webkit-user-drag: none; }
.fi-slide.amb { padding: 0; }
.fi-slide.amb img { width: 100%; height: 100%; object-fit: cover; }
.fi-flecha { position: absolute; top: 50%; width: 40px; height: 40px; margin-top: -20px; border-radius: 50%; border: 0; background: rgba(17,17,17,.72); color: #fff;
             display: grid; place-items: center; cursor: pointer; transition: background var(--dur-1) var(--ease), opacity var(--dur-1) var(--ease); }
.fi-flecha.ant { left: 12px; } .fi-flecha.sig { right: 12px; }
.fi-flecha:hover { background: var(--red); }
.fi-flecha:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }
/* En el extremo no desaparece (quien la tenga enfocada se quedaría sin foco visible): se apaga. */
.fi-flecha[aria-disabled="true"] { opacity: .3; cursor: default; background: rgba(17,17,17,.72); }
.fi-flecha svg { width: 18px; height: 18px; stroke: currentColor; fill: none; }
.fi-cont { position: absolute; right: 12px; bottom: 12px; padding: 3px 9px; border-radius: 999px; background: rgba(17,17,17,.72); color: #fff;
           font-size: var(--t-micro); font-weight: 600; letter-spacing: .06em; font-variant-numeric: tabular-nums; pointer-events: none; }
.fi-minis { position: relative; display: flex; gap: 8px; padding: 12px var(--s6) 6px; overflow-x: auto; scrollbar-width: thin; scrollbar-color: var(--line2) transparent; }
.fi-mini { flex: 0 0 auto; width: 58px; height: 58px; padding: 4px; border-radius: 6px; border: 2px solid transparent; background: #fff; cursor: pointer;
           opacity: .65; transition: opacity var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease); }
.fi-mini img { width: 100%; height: 100%; object-fit: contain; display: block; }
.fi-mini.amb { padding: 0; } .fi-mini.amb img { object-fit: cover; border-radius: 4px; }
.fi-mini:hover { opacity: 1; }
.fi-mini[aria-current="true"] { opacity: 1; border-color: var(--red); }
.fi-mini:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.fi-vivo { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (max-width: 640px) {
  .fi-flecha { width: 34px; height: 34px; margin-top: -17px; } .fi-flecha.ant { left: 8px; } .fi-flecha.sig { right: 8px; }
  .fi-minis { padding-top: 10px; } .fi-mini { width: 50px; height: 50px; }
}
.fi-body { padding: var(--s6) var(--s6) var(--s8); }
.fi-body .h2 { margin-top: var(--s3); font-size: clamp(22px, 2.4vw, 30px); }
.fi-body .cod { margin-top: 6px; font-size: var(--t-caption); color: var(--muted); letter-spacing: .05em; }
.frows { margin-top: var(--s5); border-top: 1px solid var(--line); }
.frow { display: grid; grid-template-columns: 150px minmax(0,1fr); gap: var(--s4); padding: 11px 0; border-bottom: 1px solid var(--line); font-size: var(--t-body-sm); }
.frow span { color: var(--muted); text-transform: uppercase; letter-spacing: .08em; font-size: var(--t-micro); font-weight: 600; padding-top: 2px; }
.frow b { font-weight: 400; color: var(--ink); }
.fi-body .dl { display: flex; gap: 14px; flex-wrap: wrap; margin-top: var(--s4); }
.fi-body .dl a { font-size: var(--t-caption); color: var(--muted); display: inline-flex; align-items: center; gap: 5px; }
.fi-body .dl a:hover { color: #fff; } .fi-body .dl svg { width: 12px; height: 12px; stroke: currentColor; fill: none; }
.fi-ctas { display: flex; gap: 10px; flex-wrap: wrap; margin-top: var(--s5); }
/* El scroller del viewport es <html>, no <body>: bloquear solo el body dejaba el fondo
   rodando por detrás del panel. El padding compensatorio lo pone el engine, para que al
   desaparecer la barra de scroll la página no salte. */
body.drawer-open, html.drawer-open { overflow: hidden; }
.prod .add { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }

@media print {
  @page { size: A4 landscape; margin: 0; }
  html, body { background: var(--bg) !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .nav, .subnav, .mnav, footer, .toast, .drawer, .imp-head, .btn, .misala, .aviso, .prod .add, .prod .dl, .filters, .dctas, .hero-ctas { display: none !important; }
  .pag { break-before: page; page-break-before: always; border-top: 0 !important; }
  .pag:first-child { break-before: auto; page-break-before: auto; }
  .pag > section:first-child.pagehead-sec, .pag > section:first-child { padding-top: 32px !important; }
  section { padding: 32px 0; break-inside: avoid; }
  .hero { min-height: auto; padding: 60px 0; }
  .card, .prod, .gama, .caso, .pilar { break-inside: avoid; }
  .cmp-wrap { overflow: visible; } .cmp { min-width: 0; }
}

/* ============ 6b · PAGINADOR (obsoleto, se conserva para el bloque __pager) ============ */
.pager { border-bottom: 1px solid var(--line); background: var(--bg2); }
.pager .wrap { display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); gap: var(--gap); align-items: stretch; padding-top: 0; padding-bottom: 0; }
.pager a { display: flex; flex-direction: column; gap: 6px; padding: var(--s6) 0; min-width: 0; }
.pager a.next { text-align: right; align-items: flex-end; }
.pager a .k { font-size: var(--t-micro); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); font-weight: 600; display: inline-flex; align-items: center; gap: 6px; }
.pager a .k svg { width: 12px; height: 12px; stroke: currentColor; fill: none; }
.pager a .t { font-family: var(--dsp); font-weight: 900; text-transform: uppercase; font-size: var(--t-title-sm); line-height: 1.05; color: #fff; }
.pager a .t .rx { font-size: .7em; }
.pager a:hover .t { color: var(--red); }
.pager .mid { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 0 var(--s5);
              border-left: 1px solid var(--line); border-right: 1px solid var(--line); font-size: var(--t-caption); color: var(--muted); text-align: center; }
.pager .mid b { color: var(--ink2); font-weight: 500; }
.pager .mid a { padding: 0; flex-direction: row; gap: 6px; color: var(--muted); font-size: var(--t-caption); }
.pager .mid a:hover { color: #fff; }
.pager .mid a svg { width: 13px; height: 13px; stroke: currentColor; fill: none; }
.pager .bar { grid-column: 1 / -1; height: 2px; background: var(--line); margin: 0 calc(-1 * var(--pad)); }
.pager .bar i { display: block; height: 100%; background: var(--red); }

footer { padding: var(--s7) 0; color: var(--muted); font-size: 13px; }
footer .wrap { display: flex; justify-content: space-between; align-items: center; gap: var(--gap); flex-wrap: wrap; }
footer img { height: 20px; opacity: .8; }

.toast { position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%) translateY(20px); background: #fff; color: var(--lightink);
         padding: 12px 18px; border-radius: var(--r-pill); font-size: var(--t-body-sm); font-weight: 500; opacity: 0; transition: all var(--dur-2) var(--ease); z-index: 90; pointer-events: none;
         width: max-content; max-width: calc(100vw - 2 * var(--pad)); text-align: center; }
/* Por encima del panel (70) y de los diálogos (80): "Añadir a mi sala" también está dentro de
   la ficha, y con el toast debajo el aviso quedaba tapado (en el móvil, la ficha es la pantalla).
   width: max-content porque con left: 50% el ancho disponible era media pantalla y el aviso se
   partía en tres líneas en el móvil. */
.toast.on { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ============ 7 · SISTEMA (styleguide vivo) ============ */
.sis h2.h3 { margin-bottom: var(--s5); padding-bottom: var(--s3); border-bottom: 1px solid var(--line); }
.sis-grp + .sis-grp { margin-top: var(--s8); }
.swatches { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.swatch { border: 1px solid var(--line); border-radius: var(--r-sm); overflow: hidden; }
.swatch i { display: block; height: 64px; }
.swatch div { padding: 8px 10px; font-size: var(--t-caption); }
.swatch code { display: block; color: var(--muted); font-size: 11px; }
.spaces { display: flex; flex-direction: column; gap: 8px; }
.spaces div { display: grid; grid-template-columns: 90px 1fr; align-items: center; gap: 12px; font-size: var(--t-caption); color: var(--muted); }
.spaces i { display: block; height: 14px; background: var(--red); border-radius: 2px; }
.types { display: flex; flex-direction: column; }
.types > div { display: grid; grid-template-columns: 200px minmax(0,1fr); gap: var(--s5); align-items: baseline; padding: var(--s4) 0; border-bottom: 1px solid var(--line); }
.types .meta { font-size: var(--t-caption); color: var(--muted); line-height: 1.5; }
.types .meta code { display: block; color: var(--ink2); font-size: 11.5px; }
.motions { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }
.motions div { border: 1px solid var(--line); border-radius: var(--r-sm); padding: 12px 14px; font-size: var(--t-caption); color: var(--muted); }
.motions code { color: var(--ink2); display: block; }
.regla { border-left: 3px solid var(--red); padding: var(--s3) var(--s5); color: var(--ink2); font-size: var(--t-body); max-width: 70ch; }
.blk-label { display: flex; justify-content: space-between; align-items: baseline; gap: var(--gap); flex-wrap: wrap;
             padding: 12px var(--pad); background: var(--card); border-top: 1px solid var(--line2); border-bottom: 1px solid var(--line); position: sticky; top: var(--nav); z-index: 10; }
.blk-label b { font-family: var(--mono); font-size: 13px; color: #fff; font-weight: 500; }
.blk-label span { font-family: var(--mono); font-size: 11.5px; color: var(--muted); }
.blk-label span code { color: var(--amber); }

/* ============ 8 · RESPONSIVE ============ */
@media (max-width: 1140px) { .gamas { grid-template-columns: repeat(2, 1fr); } .mega-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 1100px) {
  /* El mosaico se rehace a cuatro columnas: cada cabecera ocupa un cuadrante de 2x2 y el
     resto la acompaña de una en una. */
  .cats { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .cat { grid-column: span 1; }
  .cat-xl-1, .cat-xl-2 { grid-column: span 2; grid-row: span 2; }
  .cat-sm > .im { aspect-ratio: 1/1; }
}
@media (max-width: 1180px) { .nav nav { display: none; } .burger { display: inline-flex; } }
@media (max-width: 1040px) {
  .otc, .masalla, .comingsoon, .pillars, .fin, .contact, .marca, .dhero, .redmapa { grid-template-columns: 1fr; }
  /* apiladas ya no hay nada a lo que igualarse y la foto ocupa todo el ancho: manda el
     ::before, más apaisado, para que en una tableta no se coma la pantalla de alto */
  .marca-img::before, .pillars .im::before { padding-top: 62%; }
  .redcifra { margin-top: var(--s5); } .redmapa-im { aspect-ratio: 3/2; }
  .bene, .mn { grid-template-columns: repeat(2, 1fr); }
  .casos, .prods, .prods.grid-2x3, .prods.tira-4, .prods.destacado-1\+5, .puertas, .pilares { grid-template-columns: 1fr; }
  .prods.destacado-1\+5 > :first-child { grid-column: auto; grid-row: auto; }
  .prods.lista-specs .prod { grid-template-columns: 1fr; }
  .direct > div, .especialista { grid-template-columns: 1fr; }
  .dhero-l { padding: var(--s8) var(--pad) var(--s5); } .dhero-r { padding: 0 var(--pad) var(--s7); }
}
@media (max-width: 940px) { .shead { grid-template-columns: 1fr; gap: 18px; } .nums { grid-template-columns: repeat(2, 1fr); } .types > div { grid-template-columns: 1fr; gap: 8px; } }
@media (max-width: 900px) { .features { grid-template-columns: 1fr; } .features .slot.foto.big { grid-column: auto; grid-row: auto; aspect-ratio: 4/3; }
  .pager .wrap { grid-template-columns: 1fr 1fr; } .pager .mid { grid-column: 1 / -1; grid-row: 1; border: 0; padding: var(--s4) 0 0; flex-direction: row; justify-content: space-between; } }
@media (max-width: 820px) { .sumlist a { grid-template-columns: 1fr auto; } .sumlist .b { display: none; } }
@media (max-width: 760px) { .nav .btn { display: none; } .nav .wrap { gap: 12px; } :root { --pad: 20px; } }
@media (max-width: 680px) { .bene, .mn { grid-template-columns: 1fr; } .pager a .t { font-family: var(--body); font-weight: 600; text-transform: none; letter-spacing: 0; font-size: 14px; line-height: 1.3; } .pager .mid { font-size: 11.5px; } }
@media (max-width: 640px) { .cats { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .marca-img::before, .pillars .im::before { padding-top: 105%; }   /* en el móvil la foto vuelve a ser casi vertical */
  /* En dos columnas no caben rótulo y flecha: un nombre largo de una sola palabra
     (SELECTORIZADAS) se partía. La flecha se retira de las tarjetas pequeñas —la tarjeta
     entera ya es el enlace y en táctil no hay hover— y el rótulo se queda con todo el ancho. */
  .cat:not(.cat-xl) .go { display: none; }
  .cat:not(.cat-xl) .t { font-size: 11.5px; letter-spacing: .04em; }
  .cat-xl-1, .cat-xl-2 { grid-column: span 2; grid-row: auto; }
  .cat-xl > .im { position: relative; inset: auto; aspect-ratio: 16/9; }
  .gamas { grid-template-columns: 1fr; } .form .grid { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; } html { scroll-behavior: auto; }
  /* sin recorrido: el canto se queda con un reflejo rojo fijo */
  .cat::after { animation: none; background: linear-gradient(140deg, rgba(228,27,19,.55), rgba(228,27,19,.08) 62%); }
  .rev-track { animation: none !important; } .rev-marq { overflow-x: auto; -webkit-mask-image: none; mask-image: none; } }

/* ============ 9 · MODO EDICIÓN ============ */
.edpasos { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--gap); margin-bottom: var(--s6); }
.edpaso { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); padding: 24px; }
.edpaso b { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%;
            background: var(--red); color: #fff; font-family: var(--dsp); font-size: 13px; margin-bottom: 14px; }
.edpaso p { font-size: var(--t-body-sm); color: var(--ink2); }

.edbar { position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); z-index: 64; display: flex; align-items: center; gap: 12px;
         background: rgba(16,16,18,.94); backdrop-filter: blur(12px); border: 1px solid var(--line2); border-radius: var(--r-pill);
         padding: 9px 10px 9px 18px; box-shadow: 0 20px 50px rgba(0,0,0,.5); max-width: calc(100vw - 32px); flex-wrap: wrap; }
.edbar .tag { font-family: var(--dsp); text-transform: uppercase; font-size: var(--t-dsp-min); color: #fff; }
.edbar .n { font-size: var(--t-caption); color: var(--muted); }
.edbar.sucio .n { color: var(--amber); }
.edbar .sp { width: 6px; }
body.edicion { padding-bottom: 84px; }

.edcab { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; padding: 10px 14px;
         border: 1px dashed var(--line2); border-radius: var(--r-sm); background: var(--bg2); }
.edcab b { font-family: var(--mono); font-size: 12.5px; color: #fff; font-weight: 500; }
.edcab .sp { flex: 1; }

.edcard { position: relative; }
.edtools { position: absolute; top: 8px; left: 8px; right: 8px; display: flex; gap: 5px; justify-content: center; z-index: 3; }
.edtools button { border: 1px solid var(--line2); background: rgba(10,10,11,.92); color: var(--ink2); border-radius: var(--r-pill);
                  font-family: var(--body); font-size: 11.5px; font-weight: 600; padding: 5px 10px; cursor: pointer; backdrop-filter: blur(6px); }
.edtools button:hover:not([disabled]) { color: #fff; border-color: var(--line3); }
.edtools button[disabled] { opacity: .3; cursor: default; }

.edsel { position: fixed; inset: 0; z-index: 80; pointer-events: none; }
.edsel-bg { position: absolute; inset: 0; background: rgba(0,0,0,.65); opacity: 0; transition: opacity var(--dur-2) var(--ease); }
.edsel-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(620px, 100vw); background: var(--bg2); border-left: 1px solid var(--line2);
               transform: translateX(100%); transition: transform var(--dur-3) var(--ease-out); display: flex; flex-direction: column; }
.edsel.on { pointer-events: auto; } .edsel.on .edsel-bg { opacity: 1; } .edsel.on .edsel-panel { transform: none; }
.edsel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--s4); padding: 24px 24px 16px; border-bottom: 1px solid var(--line); }
.edsel-head .drawer-x { position: static; flex: none; }
.edsel-head .h3 { margin-top: 6px; font-family: var(--mono); font-weight: 500; text-transform: none; font-size: 13px; color: var(--ink2); letter-spacing: 0; }
.edsel-filtros { padding: 16px 24px; border-bottom: 1px solid var(--line); display: flex; flex-direction: column; gap: 12px; }
.edsel-filtros input { width: 100%; background: var(--bg); border: 1px solid var(--line2); border-radius: var(--r-sm); color: #fff;
                       padding: 11px 14px; font-family: var(--body); font-size: 14px; }
.edsel-filtros input:focus { outline: 2px solid var(--red); outline-offset: 1px; border-color: transparent; }
.edsel-filtros .chips { display: flex; flex-direction: column; gap: 8px; }
.edsel-filtros .cgr { display: flex; gap: 6px; flex-wrap: wrap; }
.edsel-filtros .chip { height: 28px; padding: 0 11px; font-size: 12px; }
.edsel-lista { flex: 1; overflow-y: auto; padding: 10px 14px 24px; }
.edprod { display: grid; grid-template-columns: 64px minmax(0,1fr) auto; gap: 14px; align-items: center; width: 100%; text-align: left;
          background: transparent; border: 1px solid transparent; border-radius: var(--r-sm); padding: 8px 10px; cursor: pointer; color: inherit; }
.edprod:hover { background: var(--card); border-color: var(--line2); }
.edprod .im { width: 64px; height: 64px; border-radius: 6px; background: #fff; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.edprod .im img { max-width: 100%; max-height: 100%; width: auto; height: auto; }
.edprod b { display: block; font-size: 14px; font-weight: 500; color: #fff; line-height: 1.25; }
.edprod small { display: block; font-size: var(--t-caption); color: var(--muted); margin-top: 3px; }

.edexp-body { padding: 20px 24px 24px; display: flex; flex-direction: column; gap: 14px; flex: 1; min-height: 0; }
.edexp-ctas { display: flex; gap: 10px; flex-wrap: wrap; }
#edexp-txt { flex: 1; min-height: 240px; width: 100%; background: var(--bg); border: 1px solid var(--line2); border-radius: var(--r-sm);
             color: var(--ink2); padding: 14px; font-family: var(--mono); font-size: 11.5px; line-height: 1.5; resize: none; }

@media (max-width: 900px) { .edpasos { grid-template-columns: 1fr; } }
@media print { .edbar, .edcab, .edtools, .edsel { display: none !important; } body.edicion { padding-bottom: 0; } }

/* campo trampa del formulario: fuera de la vista, no fuera del DOM */
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
