/* =============================================================
   ErgoNeeds — styles.css
   1. Tokens              5. Componentes         9. Comparador
   2. Reset & base        6. Cabecera / pie      10. Guías
   3. Utilidades          7. Portada + Calc      11. Responsive
   4. Tipografía          8. Ficha de producto   12. Reduced-motion
   ============================================================= */

/* =============================================================
   1. Tokens
   ============================================================= */
:root {
  --cream:       #F7F4EF;   /* fondo blanco roto */
  --cream-soft:  #FBF9F5;   /* tarjetas, superficies elevadas */
  --cream-sunk:  #F1ECE3;   /* superficies hundidas */
  --ink:         #26262A;   /* gris carbón — texto principal */
  --ink-2:       #55555C;   /* texto secundario */
  --ink-3:       #67676F;   /* terciario / metadatos — oscurecido para llegar
                               a 4,5:1 sobre crema (antes #85858C daba 3,3) */
  --line:        #E4DDD1;   /* bordes suaves */
  --line-strong: #D2C8B6;

  --wood:        #B4834F;   /* madera — detalles decorativos */
  --wood-text:   #8A5F2E;   /* madera sobre texto: el tono claro daba 3,2:1 */
  --wood-soft:   #E8DBC8;
  --wood-tint:   #F3EADC;

  --cyan:        #0AA9C2;   /* azul cian vibrante — fondos y CTA */
  --cyan-deep:   #0A94A9;   /* hover */
  --cyan-text:   #0A7386;   /* el cian aplicado a TEXTO pequeño: el vibrante
                               solo daba 2,6:1 sobre crema */
  --cyan-ink:    #06323A;   /* texto sobre cian */
  --cyan-tint:   #E2F4F7;
  --cyan-glow:   rgba(10, 169, 194, 0.28);

  --ok:          #2F8F5B;
  --warn:        #B26B2E;

  /* Escala de notas (0-10). Tonos verificados a 4,5:1 sobre crema y blanco. */
  --nota-alto:   #256F47;
  --nota-medio:  #7A6013;
  --nota-bajo:   #9C5323;

  /* Color por categoría. Cada una tiene tres tonos: el vibrante para
     elementos decorativos (filetes, iconos), el oscuro para TEXTO y fondos
     de etiqueta —el vibrante no llega a 4,5:1— y el tinte para superficies. */
  --c-escritorios:      #0A9CBE;
  --c-escritorios-txt:  #0A7386;
  --c-escritorios-tint: #E3F3F8;
  --c-sillas:           #C0703C;
  --c-sillas-txt:       #9C5323;
  --c-sillas-tint:      #F8EBE0;
  --c-soportes:         #5A6DAF;
  --c-soportes-txt:     #4A5B99;
  --c-soportes-tint:    #EAECF7;
  --c-perifericos:      #45855F;
  --c-perifericos-txt:  #356B4A;
  --c-perifericos-tint: #E6F1EA;

  /* Acento activo: cada página de categoría lo sobrescribe en <body>. */
  --accent:      var(--cyan);
  --accent-txt:  var(--cyan-text);
  --accent-tint: var(--cyan-tint);

  /* Pie: azul pizarra en vez de negro puro — el logotipo y los enlaces
     ganan contraste y la página termina en color, no en un hueco. */
  --foot-bg:     #1B2128;
  --foot-bg-2:   #141920;
  --foot-text:   #B7BEC7;
  --foot-line:   rgba(255, 255, 255, 0.13);

  --radius-s: 8px;
  --radius:   14px;
  --radius-l: 22px;

  --shadow-s: 0 1px 2px rgba(38, 38, 42, 0.05), 0 2px 8px rgba(38, 38, 42, 0.05);
  --shadow:   0 4px 14px rgba(38, 38, 42, 0.07), 0 12px 34px rgba(38, 38, 42, 0.07);
  --shadow-l: 0 10px 30px rgba(38, 38, 42, 0.10), 0 30px 70px rgba(38, 38, 42, 0.10);

  --sans: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
  --display: "Space Grotesk", "Inter", "Segoe UI", system-ui, sans-serif;

  --container: 1180px;
  --gutter: clamp(1.1rem, 4vw, 2.4rem);

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-soft: cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* =============================================================
   2. Reset & base
   ============================================================= */
*, *::before, *::after { box-sizing: border-box; margin: 0; }
html {
  -webkit-text-size-adjust: 100%;
  tab-size: 2;
  scroll-behavior: smooth;
  overflow-x: clip;
  scroll-padding-top: 92px;
}
body {
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.62;
  color: var(--ink);
  background: var(--cream);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
  overscroll-behavior-y: none;
}
img, svg, video { display: block; max-width: 100%; }
img { height: auto; }
button { font: inherit; color: inherit; cursor: pointer; border: 0; background: none; }
a { color: inherit; text-decoration: none; }
p { text-wrap: pretty; }
h1, h2, h3, h4 { font-family: var(--display); text-wrap: balance; line-height: 1.1; letter-spacing: -0.02em; font-weight: 600; }
ul { list-style: none; padding: 0; }
:focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px; border-radius: 4px; }
::selection { background: var(--cyan); color: #fff; }

/* =============================================================
   3. Utilidades
   ============================================================= */
.container { width: min(100% - var(--gutter) * 2, var(--container)); margin-inline: auto; }
.container--narrow { width: min(100% - var(--gutter) * 2, 760px); margin-inline: auto; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link {
  position: fixed; top: -100px; left: 1rem; z-index: 9999;
  padding: .6rem 1rem; background: var(--ink); color: var(--cream);
  border-radius: 8px; font-weight: 600;
}
.skip-link:focus { top: 1rem; }
.section { padding-block: clamp(3rem, 8vw, 6rem); }
.section--tight { padding-block: clamp(2rem, 5vw, 3.5rem); }
.eyebrow {
  font-family: var(--display);
  font-size: .78rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase;
  color: var(--wood); display: inline-flex; align-items: center; gap: .5rem;
}
.eyebrow::before { content: ""; width: 26px; height: 2px; background: var(--wood); display: inline-block; }
.section-head { max-width: 44ch; margin-bottom: clamp(1.8rem, 4vw, 2.8rem); }
.section-head h2 { font-size: clamp(1.7rem, 3.6vw, 2.5rem); margin-top: .6rem; }
.section-head p { color: var(--ink-2); margin-top: .8rem; font-size: 1.03rem; }
.text-center { text-align: center; margin-inline: auto; }

/* =============================================================
   4. Tipografía
   ============================================================= */
.lead { font-size: clamp(1.05rem, 2vw, 1.22rem); color: var(--ink-2); line-height: 1.6; }
.prose { max-width: 68ch; }
.prose p { margin-bottom: 1rem; color: var(--ink-2); }
.prose h2 { font-size: 1.5rem; margin: 2.2rem 0 .8rem; color: var(--ink); }
.prose h3 { font-size: 1.18rem; margin: 1.8rem 0 .6rem; color: var(--ink); }
.prose ul { margin: 0 0 1.2rem; }
.prose ul li { position: relative; padding-left: 1.5rem; margin-bottom: .5rem; color: var(--ink-2); }
.prose ul li::before {
  content: ""; position: absolute; left: 0; top: .62em;
  width: 7px; height: 7px; border-radius: 2px; background: var(--cyan);
}
.prose a { color: var(--cyan-text); text-decoration: underline; text-underline-offset: 3px; }
.prose strong { color: var(--ink); }

/* =============================================================
   5. Componentes
   ============================================================= */
.btn {
  --btn-bg: var(--ink); --btn-fg: var(--cream);
  display: inline-flex; align-items: center; justify-content: center; gap: .55rem;
  padding: .85rem 1.4rem; border-radius: 999px;
  font-family: var(--display); font-weight: 600; font-size: .95rem; letter-spacing: .01em;
  background: var(--btn-bg); color: var(--btn-fg);
  transition: transform .25s var(--ease-out), background .25s var(--ease-out), box-shadow .25s var(--ease-out);
  white-space: nowrap;
}
.btn svg { width: 1.15em; height: 1.15em; flex: none; }
/* Defensa global: cualquier icono inline en texto nunca desborda (gotcha E.1) */
p svg, span svg, li svg, h1 svg, h2 svg, h3 svg, h4 svg, .ficha__rating svg, .breadcrumb svg { width: 1.15em; height: 1.15em; flex: none; vertical-align: -0.15em; }
.ficha__section > h2 svg, .empty-state svg, .cat-entry__icon svg, .calc__head svg { width: auto; height: auto; }
.ficha__section > h2 svg { width: 1.1em; height: 1.1em; }
.btn:hover { transform: translateY(-2px); }
.btn--primary { --btn-bg: var(--cyan); --btn-fg: var(--cyan-ink); box-shadow: 0 6px 20px var(--cyan-glow); }
.btn--primary:hover { --btn-bg: var(--cyan-deep); box-shadow: 0 10px 28px var(--cyan-glow); }
.btn--ghost { --btn-bg: transparent; --btn-fg: var(--ink); border: 1.5px solid var(--line-strong); }
.btn--ghost:hover { --btn-bg: var(--cream-soft); border-color: var(--ink); }
.btn--block { width: 100%; }
.btn--lg { padding: 1.05rem 1.8rem; font-size: 1.02rem; }
.btn--sm { padding: .6rem 1rem; font-size: .85rem; }

.badge {
  display: inline-flex; align-items: center; gap: .35rem;
  padding: .28rem .62rem; border-radius: 999px;
  font-size: .72rem; font-weight: 600; font-family: var(--display); letter-spacing: .03em;
  background: var(--cream-sunk); color: var(--ink-2);
}
.badge svg { width: 1em; height: 1em; flex: none; }
.badge--sample { background: var(--wood-tint); color: var(--wood); }
.badge--offer { background: var(--cyan-tint); color: var(--cyan-text); }
.badge--cat { background: var(--ink); color: var(--cream); }

.pill-row { display: flex; flex-wrap: wrap; gap: .5rem; }

.card {
  background: var(--cream-soft);
  border: 1px solid var(--line);
  border-radius: var(--radius-l);
  padding: 1.25rem;
  box-shadow: var(--shadow-s);
  transition: transform .3s var(--ease-out), box-shadow .3s var(--ease-out), border-color .3s var(--ease-out);
}
@media (min-width: 720px) { .card { padding: 1.5rem; } }
a.card:hover, .card--link:hover { transform: translateY(-4px); box-shadow: var(--shadow); border-color: var(--line-strong); }

/* Tarjeta de producto */
.product-card { display: flex; flex-direction: column; gap: .75rem; height: 100%; }
/* Las fotos de producto vienen sobre fondo blanco: se muestran ENTERAS
   (contain) sobre blanco, nunca recortadas. */
.product-card__media {
  position: relative; border-radius: var(--radius); overflow: hidden;
  background: #fff; border: 1px solid var(--line); aspect-ratio: 4 / 3;
}
.product-card__media img { width: 100%; height: 100%; object-fit: contain; padding: .5rem; }
.product-card__flags { position: absolute; top: .7rem; left: .7rem; z-index: 2; display: flex; flex-direction: column; gap: .4rem; }

/* Nota media del equipo, sobre la foto */
.product-card__nota {
  position: absolute; top: .7rem; right: .7rem; z-index: 2;
  display: inline-flex; align-items: baseline; gap: .2rem;
  padding: .3rem .6rem; border-radius: 999px;
  background: rgba(255, 255, 255, .94);
  border: 1px solid var(--line-strong);
  box-shadow: var(--shadow-s);
  font-family: var(--display);
}
.product-card__nota strong { font-size: .95rem; font-weight: 700; line-height: 1; }
.product-card__nota > span { font-size: .62rem; color: var(--ink-3); font-weight: 600; }
.product-card__nota[data-nivel="alto"]  strong { color: var(--nota-alto); }
.product-card__nota[data-nivel="medio"] strong { color: var(--nota-medio); }
.product-card__nota[data-nivel="bajo"]  strong { color: var(--nota-bajo); }

/* Destacados de portada: siempre una fila limpia de tres */
.grid--destacados { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
@media (min-width: 1040px) { .grid--destacados { grid-template-columns: repeat(3, 1fr); } }
.destacados__todos { margin-top: 1.6rem; }

/* Cuatro categorías en 2×2: con auto-fit salían tres columnas y la cuarta
   tarjeta quedaba huérfana y más baja que las demás. */
.grid--cats { grid-template-columns: 1fr; }
@media (min-width: 720px) { .grid--cats { grid-template-columns: repeat(2, 1fr); } }
.product-card__brand { font-size: .78rem; color: var(--ink-3); font-family: var(--display); letter-spacing: .04em; text-transform: uppercase; }
.product-card__name { font-size: 1.1rem; font-family: var(--display); font-weight: 600; }
.product-card__verdict { font-size: .92rem; color: var(--ink-2); flex-grow: 1; }
.product-card__meta {
  display: flex; align-items: baseline; flex-wrap: wrap; gap: .25rem .6rem;
  font-size: .85rem; color: var(--ink-3);
  padding-top: .5rem; border-top: 1px solid var(--line);
}
.product-card__price { font-family: var(--display); font-weight: 600; color: var(--ink); font-size: 1rem; }
.product-card__price--na { color: var(--ink-3); font-weight: 500; font-size: .88rem; }
.product-card__meta .was { text-decoration: line-through; color: var(--ink-3); font-size: .85rem; }
/* La acción principal ocupa todo el ancho: con dos botones lado a lado el
   texto quedaba pegado al borde en tarjetas estrechas. */
.product-card__actions { display: grid; gap: .55rem; margin-top: auto; }
.product-card__actions .btn { width: 100%; }
.product-card__more {
  text-align: center; font-size: .86rem; font-weight: 500; color: var(--ink-2);
  text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--line-strong);
  padding: .15rem 0; transition: color .2s var(--ease-out);
}
.product-card__more:hover { color: var(--cyan-text); text-decoration-color: currentColor; }

/* Etiquetas de la calculadora: por qué destacamos este modelo entre todos
   los que encajan (recomendación, calidad-precio, precio). */
.pick-tags { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: .2rem; }
.pick-tag {
  display: inline-flex; align-items: center; gap: .32rem;
  padding: .3rem .6rem; border-radius: 999px;
  font-family: var(--display); font-size: .72rem; font-weight: 600; letter-spacing: .01em;
  border: 1px solid transparent;
}
.pick-tag svg { width: 1em; height: 1em; flex: none; }
.pick-tag--rec { background: var(--cyan-text); color: #fff; }
.pick-tag--cp  { background: var(--cyan-tint); color: var(--cyan-text); border-color: #C7E7EC; }
.pick-tag--eco { background: var(--wood-tint); color: #8A5F2E; border-color: var(--wood-soft); }
.pick-tag--alt { background: var(--cream-sunk); color: var(--ink-2); border-color: var(--line-strong); }
/* La tarjeta destacada se separa ligeramente del resto */
.product-card--pick { border-color: var(--line-strong); box-shadow: var(--shadow); }

/* Cada grupo de resultados de la calculadora (sillas / escritorios) */
.calc-grupo { margin-top: clamp(1.8rem, 4vw, 2.6rem); }
.calc-grupo h3 { font-size: 1.15rem; margin-bottom: .3rem; }
.calc-grupo__sub { color: var(--ink-3); font-size: .88rem; margin-bottom: 1rem; max-width: 78ch; }
.calc__subtitulo {
  font-family: var(--display); font-weight: 600; font-size: .92rem;
  margin: 1.1rem 0 .8rem;
}

.calc__vertodo { margin-top: 1rem; font-size: .88rem; }
.calc__vertodo a {
  color: var(--cyan-text); text-decoration: underline; text-underline-offset: 3px;
  font-weight: 500;
}

.stars { display: inline-flex; align-items: center; gap: .3rem; color: var(--wood-text); font-weight: 600; font-family: var(--display); }
.stars svg { width: 1em; height: 1em; }

.grid { display: grid; gap: 1.2rem; }
.grid--cards { grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.grid--2 { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }

.notice {
  display: flex; gap: .8rem; align-items: flex-start;
  padding: 1rem 1.2rem; border-radius: var(--radius);
  background: var(--wood-tint); border: 1px solid var(--wood-soft);
  font-size: .92rem; color: var(--ink-2);
}
.notice svg { width: 1.3em; height: 1.3em; flex: none; color: var(--wood); margin-top: .1em; }
.notice--info { background: var(--cyan-tint); border-color: #C7E7EC; }
.notice--info svg { color: var(--cyan-deep); }

.empty-state {
  text-align: center; padding: clamp(2.5rem, 8vw, 5rem) 1.5rem;
  border: 1.5px dashed var(--line-strong); border-radius: var(--radius-l);
  background: var(--cream-soft);
}
.empty-state svg { width: 46px; height: 46px; margin: 0 auto 1rem; color: var(--wood); }
.empty-state h3 { font-size: 1.3rem; margin-bottom: .5rem; }
.empty-state p { color: var(--ink-2); max-width: 46ch; margin: 0 auto 1.2rem; }

/* =============================================================
   6. Cabecera / pie
   ============================================================= */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: color-mix(in srgb, var(--cream) 88%, transparent);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
}
.site-header__inner { display: flex; align-items: center; gap: 1rem; height: 72px; }
.logo { display: flex; align-items: center; flex: none; }
.logo img { height: 38px; width: auto; }
@media (max-width: 400px) { .logo img { height: 32px; } }
.nav { margin-left: auto; }
.nav-toggle { display: none; }
.nav-links { display: flex; align-items: center; gap: .3rem; }
.nav-links a {
  padding: .55rem .8rem; border-radius: 999px; font-size: .92rem; font-weight: 500;
  color: var(--ink-2); transition: color .2s var(--ease-out), background .2s var(--ease-out);
}
.nav-links a:hover, .nav-links a[aria-current="page"] { color: var(--ink); background: var(--cream-sunk); }
.nav-links a.nav-cta, .nav-links a.nav-cta:hover {
  color: var(--cyan-ink); background: var(--cyan); font-family: var(--display); font-weight: 600; margin-left: .4rem;
}
.nav-links a.nav-cta:hover { background: var(--cyan-deep); }
/* Acceso directo a la calculadora: presente en todas las páginas */
.nav-links a.nav-calc, .nav-links a.nav-calc:hover {
  display: inline-flex; align-items: center; gap: .4rem;
  color: var(--cyan-text); font-weight: 600; font-family: var(--display);
  border: 1.5px solid color-mix(in srgb, var(--cyan) 40%, transparent);
  background: var(--cyan-tint); margin-right: .3rem;
}
.nav-links a.nav-calc:hover { border-color: var(--cyan); background: color-mix(in srgb, var(--cyan) 18%, var(--cream)); }
.nav-links a.nav-calc svg { width: 1.05em; height: 1.05em; flex: none; }

.site-footer {
  background: linear-gradient(180deg, var(--foot-bg) 0%, var(--foot-bg-2) 100%);
  color: var(--foot-text);
  padding-block: clamp(2.8rem, 6vw, 4.2rem);
  font-size: .92rem;
  border-top: 3px solid var(--cyan);
}
.site-footer a { color: var(--foot-text); transition: color .2s var(--ease-out); }
.site-footer a:hover { color: #fff; }
.site-footer__grid { display: grid; gap: 2.2rem; grid-template-columns: 1.5fr repeat(3, 1fr); }
/* Los títulos de columna del pie son <h2> por jerarquía (venían como <h4> y
   creaban un salto de nivel tras el último encabezado de cada página), pero
   se muestran en tamaño pequeño. */
.site-footer h2 {
  color: #fff; font-size: .78rem; letter-spacing: .13em; text-transform: uppercase;
  margin-bottom: .9rem; font-family: var(--display); line-height: 1.3;
}
.site-footer ul li { margin-bottom: .55rem; }
/* El logotipo del pie es su propio archivo (crema + azul claro). Antes se
   reutilizaba el de cabecera con un filtro que lo dejaba todo blanco plano y
   el nombre se perdía contra el fondo. */
.site-footer__logo img { height: 38px; width: auto; }
.site-footer__tagline { margin-top: 1rem; max-width: 36ch; color: #98A1AC; font-size: .88rem; }
.site-footer__disclosure {
  margin-top: 2.4rem; padding-top: 1.6rem; border-top: 1px solid var(--foot-line);
  font-size: .82rem; color: #909AA5; line-height: 1.65;
}
.site-footer__disclosure strong { color: #D6DCE3; }
.site-footer__bottom {
  margin-top: 1.1rem; display: flex; flex-wrap: wrap; gap: .4rem 1.2rem;
  font-size: .8rem; color: #8A94A0;
}

/* =============================================================
   6b. Color por categoría
   El <body> de cada página de categoría y de cada ficha lleva
   data-cat, que reasigna --accent. Así los acentos siguen al
   contenido sin duplicar reglas.
   ============================================================= */
[data-cat="escritorios"] { --accent: var(--c-escritorios); --accent-txt: var(--c-escritorios-txt); --accent-tint: var(--c-escritorios-tint); }
[data-cat="sillas"]      { --accent: var(--c-sillas);      --accent-txt: var(--c-sillas-txt);      --accent-tint: var(--c-sillas-tint); }
[data-cat="soportes"]    { --accent: var(--c-soportes);    --accent-txt: var(--c-soportes-txt);    --accent-tint: var(--c-soportes-tint); }
[data-cat="perifericos"] { --accent: var(--c-perifericos); --accent-txt: var(--c-perifericos-txt); --accent-tint: var(--c-perifericos-tint); }

/* El texto usa el tono oscuro; el filete decorativo, el vibrante. */
.eyebrow { color: var(--accent-txt); }
.eyebrow::before { background: var(--accent); }
.badge--cat { background: var(--accent-txt); color: #fff; }
.cat-entry__icon { color: var(--accent-txt); }
.cat-entry__link { color: var(--accent-txt); }

/* Filete de color en la parte superior de las tarjetas de categoría */
.cat-entry {
  position: relative; overflow: hidden;
  border-top: 3px solid var(--accent);
}
.cat-entry--escritorios { --accent: var(--c-escritorios); --accent-txt: var(--c-escritorios-txt); --accent-tint: var(--c-escritorios-tint); }
.cat-entry--sillas      { --accent: var(--c-sillas);      --accent-txt: var(--c-sillas-txt);      --accent-tint: var(--c-sillas-tint); }
.cat-entry--soportes    { --accent: var(--c-soportes);    --accent-txt: var(--c-soportes-txt);    --accent-tint: var(--c-soportes-tint); }
.cat-entry--perifericos { --accent: var(--c-perifericos); --accent-txt: var(--c-perifericos-txt); --accent-tint: var(--c-perifericos-tint); }
.cat-entry__icon {
  display: grid; place-items: center;
  width: 46px; height: 46px; border-radius: 12px;
  background: var(--accent-tint);
}
.cat-entry__icon svg { width: 26px; height: 26px; }

/* Cabecera de categoría con lavado de color */
.cat-hero {
  background: linear-gradient(160deg, var(--accent-tint) 0%, var(--cream) 72%);
  border-bottom: 1px solid var(--line);
}
.cat-count {
  margin-top: 1rem; font-family: var(--display); font-size: .84rem; font-weight: 600;
  color: var(--accent-txt); background: #fff; border: 1px solid var(--line);
  display: inline-block; padding: .35rem .85rem; border-radius: 999px;
}

/* Aviso de afiliados compacto (arriba del pie, en todas las páginas) */
.affiliate-strip {
  background: var(--cream-sunk); border-top: 1px solid var(--line);
  font-size: .84rem; color: var(--ink-3); padding-block: .9rem;
}
.affiliate-strip .container { display: flex; gap: .6rem; align-items: center; justify-content: center; text-align: center; }
.affiliate-strip svg { width: 1.1em; height: 1.1em; flex: none; }
.affiliate-strip a { color: var(--cyan-text); text-decoration: underline; }

/* =============================================================
   7. Portada + Calculadora Antropométrica
   ============================================================= */
/* Lavado de color muy suave detrás del hero: da profundidad sin restar
   legibilidad al titular ni cansar la vista (el encargo pedía fondo crema). */
.hero {
  position: relative;
  padding-block: clamp(2.4rem, 6vw, 4rem) clamp(2.5rem, 7vw, 4.5rem);
  background:
    radial-gradient(58% 78% at 82% 8%, var(--cyan-tint) 0%, transparent 62%),
    radial-gradient(46% 60% at 4% 96%, var(--wood-tint) 0%, transparent 64%);
}
.hero__grid { display: grid; gap: clamp(1.8rem, 5vw, 3.4rem); align-items: start; grid-template-columns: 1fr; }
.hero__title {
  font-size: clamp(2.15rem, 5vw, 3.4rem);
  line-height: 1.06;
  max-width: 17ch;          /* sin esto el titular se iba a cuatro líneas */
  text-wrap: balance;
}
.hero__title em { font-style: normal; color: var(--cyan-deep); }
.hero__sub { margin-top: 1.1rem; max-width: 48ch; }

/* Cifras del catálogo: prueba social concreta, no adjetivos */
.hero__stats {
  margin-top: 1.8rem; display: flex; flex-wrap: wrap; gap: 0;
  border: 1px solid var(--line); border-radius: var(--radius);
  background: color-mix(in srgb, #fff 72%, transparent);
  overflow: hidden;
}
.hero__stats > div { padding: .85rem 1.15rem; flex: 1 1 auto; min-width: 0; }
/* En pantallas estrechas las cifras se apilan: la separación pasa a ser
   horizontal, o quedarían filetes verticales sueltos. */
.hero__stats > div + div { border-top: 1px solid var(--line); }
@media (min-width: 560px) {
  .hero__stats > div + div { border-top: 0; border-left: 1px solid var(--line); }
}
.hero__stats dt {
  font-size: .72rem; letter-spacing: .07em; text-transform: uppercase;
  color: var(--ink-3); font-family: var(--display); font-weight: 600;
  white-space: nowrap;
}
.hero__stats dd {
  margin: .2rem 0 0; font-family: var(--display); font-weight: 700;
  font-size: 1.6rem; line-height: 1; color: var(--cyan-text);
}

.hero__trust { margin-top: 1.4rem; display: flex; flex-wrap: wrap; gap: .5rem .9rem; }
.hero__trust-item {
  display: flex; align-items: center; gap: .45rem; font-size: .86rem; color: var(--ink-2);
  background: color-mix(in srgb, #fff 65%, transparent);
  border: 1px solid var(--line); border-radius: 999px; padding: .35rem .8rem;
}
.hero__trust-item svg { width: 1.1em; height: 1.1em; color: var(--cyan-deep); flex: none; }

/* Calculadora */
.calc {
  background: var(--cream-soft); border: 1px solid var(--line-strong);
  border-radius: var(--radius-l); padding: clamp(1.3rem, 3.5vw, 2rem);
  box-shadow: var(--shadow);
}
.calc__head { display: flex; align-items: center; gap: .7rem; margin-bottom: 1.1rem; }
.calc__head svg { width: 1.6rem; height: 1.6rem; color: var(--cyan-deep); flex: none; }
.calc__head h2 { font-size: 1.22rem; }
.calc__head p { font-size: .86rem; color: var(--ink-3); margin-top: .1rem; }
.calc__field { margin-bottom: 1.1rem; }
.calc__field > label { display: block; font-weight: 600; font-family: var(--display); font-size: .9rem; margin-bottom: .5rem; }
.calc__range-wrap { display: flex; align-items: center; gap: 1rem; }
.calc__range-wrap input[type="range"] { flex: 1; accent-color: var(--cyan); height: 6px; }
.calc__height-out {
  font-family: var(--display); font-weight: 600; font-size: 1.15rem; color: var(--ink);
  min-width: 4.4ch; text-align: right;
}
.calc__pain { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; }
.calc__pain input { position: absolute; opacity: 0; pointer-events: none; }
.calc__pain label {
  display: flex; flex-direction: column; align-items: center; gap: .35rem; text-align: center;
  padding: .8rem .4rem; border-radius: var(--radius-s); border: 1.5px solid var(--line-strong);
  background: var(--cream); font-size: .82rem; font-weight: 600; font-family: var(--display);
  cursor: pointer; transition: border-color .2s var(--ease-out), background .2s var(--ease-out);
}
.calc__pain label svg { width: 1.5rem; height: 1.5rem; color: var(--ink-3); }
.calc__pain input:checked + label { border-color: var(--cyan); background: var(--cyan-tint); }
.calc__pain input:checked + label svg { color: var(--cyan-deep); }
.calc__pain input:focus-visible + label { outline: 2px solid var(--cyan); outline-offset: 2px; }

.calc__results { margin-top: 1.4rem; }
.calc__results[hidden] { display: none; }
.calc__measures { display: grid; grid-template-columns: repeat(3, 1fr); gap: .7rem; margin-bottom: 1rem; }
.measure {
  background: var(--cream); border: 1px solid var(--line); border-radius: var(--radius-s);
  padding: .9rem .7rem; text-align: center;
}
.measure__label { font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-3); font-family: var(--display); }
.measure__value { font-family: var(--display); font-weight: 700; font-size: clamp(1.15rem, 3vw, 1.5rem); color: var(--ink); margin-top: .25rem; }
.measure__value span { font-size: .62em; font-weight: 500; color: var(--ink-3); }
.calc__tips { font-size: .88rem; color: var(--ink-2); background: var(--cyan-tint); border-radius: var(--radius-s); padding: .8rem 1rem; }
.calc__tips strong { color: var(--cyan-ink); }
.calc__cta { margin-top: 1rem; display: flex; gap: .6rem; flex-wrap: wrap; }
.calc__noscript { font-size: .9rem; color: var(--ink-2); }

/* Diagrama de silueta con medidas en la calculadora */
.posture-figure { position: relative; max-width: 440px; margin: 0 auto 1.1rem; }
.posture-figure svg { width: 100%; height: auto; }
.calc .value-diagram-wrap { display: block; }
.calc__measures .measure__value { white-space: nowrap; }

/* =============================================================
   7b. Resultados de la calculadora
   Van en su propia sección a ancho completo, bajo el hero: dentro
   de la columna de la calculadora dejaban vacía toda la mitad
   izquierda de la pantalla al bajar a ver las opciones.
   ============================================================= */
.calc-out {
  background: linear-gradient(180deg, var(--cyan-tint) 0%, var(--cream-soft) 55%);
  border-block: 1px solid var(--line);
  scroll-margin-top: 84px;
}
.calc-out[hidden] { display: none; }
.calc-out__head { max-width: 54ch; }
.calc-out__top { display: grid; gap: clamp(1.4rem, 4vw, 2.8rem); align-items: center; }
.calc-out__datos { min-width: 0; }
@media (min-width: 860px) {
  .calc-out__top { grid-template-columns: 0.95fr 1.05fr; }
  .calc-out .posture-figure { margin: 0; max-width: 460px; }
}
.calc-out .calc__measures { margin-bottom: 1.1rem; }
.calc-out .measure { padding: 1.1rem .8rem; background: #fff; }
.calc-out .measure__value { font-size: clamp(1.4rem, 3.4vw, 2rem); }
.calc-out .calc__tips {
  font-size: .95rem; background: #fff; border: 1px solid var(--line);
  padding: 1rem 1.2rem;
}
/* Con tres tarjetas, auto-fit reparte el ancho entre ellas en vez de dejar
   una cuarta columna vacía a la derecha. */
#calc-matches .grid--cards { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
@media (min-width: 1100px) { #calc-matches .grid--cards { grid-template-columns: repeat(3, 1fr); } }

/* Bloques portada */
.cat-entry { display: flex; flex-direction: column; gap: .7rem; padding: 1.3rem; height: 100%; }
.cat-entry__icon { width: 40px; height: 40px; color: var(--cyan-deep); }
.cat-entry__icon svg { width: 100%; height: 100%; }
.cat-entry h3 { font-size: 1.12rem; }
.cat-entry p { font-size: .9rem; color: var(--ink-2); flex-grow: 1; }
/* El enlace se ancla abajo para que las cuatro tarjetas midan lo mismo
   aunque sus textos tengan distinta longitud. */
.cat-entry__link {
  margin-top: auto; padding-top: .4rem;
  font-family: var(--display); font-weight: 600; font-size: .88rem;
  color: var(--cyan-text); display: inline-flex; align-items: center; gap: .35rem;
}
.cat-entry__link svg { width: 1em; height: 1em; transition: transform .2s var(--ease-out); }
.cat-entry:hover .cat-entry__link svg { transform: translateX(3px); }

.method-grid { display: grid; gap: 1.2rem; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.method-step { padding: 1.4rem; border-top: 3px solid var(--paso, var(--wood)); }
.method-step__num {
  font-family: var(--display); font-weight: 700; font-size: 1rem;
  color: #fff; background: var(--paso, var(--wood));
  width: 34px; height: 34px; border-radius: 10px;
  display: grid; place-items: center; margin-bottom: .7rem;
}
.method-step:nth-child(1) { --paso: var(--c-escritorios); }
.method-step:nth-child(2) { --paso: var(--c-sillas); }
.method-step:nth-child(3) { --paso: var(--c-soportes); }
.method-step:nth-child(4) { --paso: var(--c-perifericos); }
.method-step h3 { font-size: 1.05rem; margin: .4rem 0; }
.method-step p { font-size: .9rem; color: var(--ink-2); }

/* Alternancia de fondo: da ritmo a la página sin meter más colores */
.section--tinted {
  background: linear-gradient(180deg, var(--cyan-tint) 0%, var(--cream-soft) 100%);
  border-block: 1px solid var(--line);
}
.section--sunk { background: var(--cream-soft); border-block: 1px solid var(--line); }
/* Bloque oscuro de cierre: rompe la página en dos y destaca las guías */
.section--dark {
  background: linear-gradient(150deg, #1F262E 0%, #171C23 100%);
  color: var(--cream);
}
.section--dark .section-head h2 { color: var(--cream); }
.section--dark .section-head p { color: #AFB8C2; }
.section--dark .section-head .eyebrow { color: #6FD2E8; }
.section--dark .section-head .eyebrow::before { background: #6FD2E8; }
/* Las tarjetas del bloque oscuro tienen fondo claro: hay que devolverles el
   color de texto o heredan el crema de la sección y quedan ilegibles. */
.section--dark .card { color: var(--ink); }
.section--dark .card h3 { color: var(--ink); }
.section--dark .card p { color: var(--ink-2); }
.section--dark .card .eyebrow { color: var(--accent-txt); }
.section--dark .card .eyebrow::before { background: var(--accent); }

/* =============================================================
   8. Ficha de producto
   ============================================================= */
.ficha { padding-block: clamp(1.6rem, 4vw, 2.6rem) clamp(3rem, 8vw, 5rem); }
.breadcrumb { font-size: .82rem; color: var(--ink-3); margin-bottom: 1.4rem; display: flex; flex-wrap: wrap; gap: .4rem; }
.breadcrumb a:hover { color: var(--ink); }
.breadcrumb span { color: var(--ink-3); }

.ficha__top { display: grid; gap: clamp(1.5rem, 4vw, 3rem); grid-template-columns: 1fr; }

/* Galería */
.gallery__main {
  border: 1px solid var(--line); border-radius: var(--radius-l); overflow: hidden;
  background: #fff; aspect-ratio: 1 / 1; position: relative;
}
.gallery__main img { width: 100%; height: 100%; object-fit: contain; padding: .8rem; }
.gallery__thumbs { display: flex; gap: .6rem; margin-top: .7rem; flex-wrap: wrap; }
.gallery__thumb {
  width: 68px; height: 68px; border-radius: var(--radius-s); overflow: hidden;
  border: 1.5px solid var(--line); background: #fff; flex: none;
  transition: border-color .2s var(--ease-out);
}
.gallery__thumb:hover { border-color: var(--line-strong); }
.gallery__thumb[aria-current="true"] { border-color: var(--cyan); }
.gallery__thumb img { width: 100%; height: 100%; object-fit: contain; padding: 3px; }

/* Cabecera de ficha */
.ficha__head .product-card__brand { margin-bottom: .3rem; }
.ficha__title { font-size: clamp(1.5rem, 3.4vw, 2.1rem); }
.ficha__rating { display: flex; align-items: center; gap: .6rem; margin-top: .6rem; font-size: .9rem; color: var(--ink-3); }
.ficha__price { margin-top: 1rem; display: flex; align-items: baseline; gap: .6rem; flex-wrap: wrap; }
.ficha__price .now { font-family: var(--display); font-weight: 700; font-size: 1.6rem; color: var(--ink); }
.ficha__price .now--na { font-size: 1.15rem; font-weight: 600; color: var(--ink-3); }
.ficha__price .was { text-decoration: line-through; color: var(--ink-3); }
.ficha__price .note { font-size: .78rem; color: var(--ink-3); width: 100%; }
.ficha__buy { margin-top: 1.1rem; }
.ficha__buy .btn { min-width: 240px; }
.ficha__buy-sub { font-size: .78rem; color: var(--ink-3); margin-top: .5rem; }

/* Veredicto en 10 segundos */
.verdict {
  margin-top: 1.4rem; border-left: 3px solid var(--cyan); background: var(--cyan-tint);
  border-radius: 0 var(--radius) var(--radius) 0; padding: 1rem 1.2rem;
}
.verdict__label { font-family: var(--display); font-weight: 600; font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; color: var(--cyan-text); display: flex; align-items: center; gap: .4rem; }
.verdict__label svg { width: 1.1em; height: 1.1em; }
.verdict p { margin-top: .4rem; font-size: 1.02rem; color: var(--ink); }

.ficha__section { margin-top: clamp(2.4rem, 6vw, 3.6rem); }
.ficha__section > h2 { font-size: clamp(1.35rem, 3vw, 1.7rem); margin-bottom: 1.1rem; display: flex; align-items: center; gap: .6rem; }
.ficha__section > h2 svg { width: 1.1em; height: 1.1em; color: var(--wood); flex: none; }

/* Diagrama de valor */
.value-diagram { position: relative; border: 1px solid var(--line); border-radius: var(--radius-l); overflow: hidden; background: #fff; }
.value-diagram > img { width: 100%; display: block; }
.value-point { position: absolute; transform: translate(-50%, -50%); }
.value-point__dot {
  width: 28px; height: 28px; border-radius: 999px; background: var(--cyan); color: var(--cyan-ink);
  font-family: var(--display); font-weight: 700; font-size: .82rem;
  display: grid; place-items: center; box-shadow: 0 0 0 4px color-mix(in srgb, var(--cyan) 30%, transparent);
}
.value-legend { display: grid; gap: .8rem; margin-top: 1rem; }
.value-legend li { display: flex; gap: .7rem; font-size: .92rem; }
.value-legend .n {
  flex: none; width: 24px; height: 24px; border-radius: 999px; background: var(--cyan); color: var(--cyan-ink);
  font-family: var(--display); font-weight: 700; font-size: .78rem; display: grid; place-items: center;
}
.value-legend strong { color: var(--ink); }
.value-legend span { color: var(--ink-2); }

/* Radar */
.radar-wrap { display: grid; gap: 1.4rem; grid-template-columns: 1fr; align-items: center; }
.radar-box { background: var(--cream-soft); border: 1px solid var(--line); border-radius: var(--radius-l); padding: 1.2rem; }
.radar-box svg { width: 100%; height: auto; max-width: 480px; margin-inline: auto; }
.radar-legend-note { font-size: .78rem; color: var(--ink-3); text-align: center; margin-top: .5rem; }
.score-list { display: grid; gap: .7rem; }
.score-row { display: grid; grid-template-columns: 1fr auto; gap: .3rem .8rem; align-items: center; }
.score-row__label { font-size: .9rem; font-weight: 600; font-family: var(--display); }
.score-row__val { font-family: var(--display); font-weight: 700; color: var(--cyan-text); }
.score-row__bar { grid-column: 1 / -1; height: 7px; border-radius: 999px; background: var(--cream-sunk); overflow: hidden; }
/* La barra cambia de color según la nota: rojo-ámbar por debajo de 5,
   ámbar hasta 7 y verde a partir de 8. Se lee sin tener que leer el número. */
.score-row__bar i {
  display: block; height: 100%; border-radius: 999px;
  background: var(--cyan);
  transition: width .6s var(--ease-out);
}
/* La barra es decorativa y puede ir más viva; el número es texto y usa el
   tono verificado a 4,5:1. */
.score-row[data-nivel="bajo"]  .score-row__bar i { background: #C4713A; }
.score-row[data-nivel="medio"] .score-row__bar i { background: #C9A227; }
.score-row[data-nivel="alto"]  .score-row__bar i { background: #2F8F5B; }
.score-row[data-nivel="bajo"]  .score-row__val { color: var(--nota-bajo); }
.score-row[data-nivel="medio"] .score-row__val { color: var(--nota-medio); }
.score-row[data-nivel="alto"]  .score-row__val { color: var(--nota-alto); }

/* Tabla técnica */
.spec-table { width: 100%; border-collapse: collapse; font-size: .92rem; }
.spec-table caption { text-align: left; font-family: var(--display); font-weight: 600; color: var(--ink-3); font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; padding: 1rem 0 .5rem; }
.spec-table th, .spec-table td { text-align: left; padding: .7rem .8rem; border-bottom: 1px solid var(--line); vertical-align: top; }
.spec-table th { font-weight: 500; color: var(--ink-2); width: 46%; }
.spec-table td { color: var(--ink); font-weight: 500; }
.spec-table tr:nth-child(even) { background: var(--cream-soft); }

/* Pros / contras / ideal-para */
.pros-cons { display: grid; gap: 1rem; grid-template-columns: 1fr; }
.pc-col { border: 1px solid var(--line); border-radius: var(--radius); padding: 1.1rem 1.2rem; background: var(--cream-soft); }
.pc-col h3 { font-size: 1rem; display: flex; align-items: center; gap: .5rem; margin-bottom: .7rem; }
.pc-col h3 svg { width: 1.15em; height: 1.15em; flex: none; }
.pc-col--pro h3 svg { color: var(--ok); }
.pc-col--con h3 svg { color: var(--warn); }
.pc-col li { position: relative; padding-left: 1.4rem; margin-bottom: .5rem; font-size: .92rem; color: var(--ink-2); }
.pc-col li::before { content: ""; position: absolute; left: 0; top: .55em; width: 8px; height: 8px; border-radius: 2px; }
.pc-col--pro li::before { background: var(--ok); }
.pc-col--con li::before { background: var(--warn); }

.fit-block { display: grid; gap: 1rem; grid-template-columns: 1fr; margin-top: 1.2rem; }
.fit-card { border-radius: var(--radius); padding: 1.2rem 1.3rem; border: 1px solid var(--line); }
.fit-card h3 { font-size: 1rem; display: flex; align-items: center; gap: .5rem; margin-bottom: .5rem; }
.fit-card h3 svg { width: 1.2em; height: 1.2em; flex: none; }
.fit-card p { font-size: .94rem; color: var(--ink-2); }
.fit-card--yes { background: color-mix(in srgb, var(--ok) 8%, var(--cream-soft)); border-color: color-mix(in srgb, var(--ok) 25%, var(--line)); }
.fit-card--yes h3 svg { color: var(--ok); }
.fit-card--no { background: color-mix(in srgb, var(--warn) 8%, var(--cream-soft)); border-color: color-mix(in srgb, var(--warn) 25%, var(--line)); }
.fit-card--no h3 svg { color: var(--warn); }

/* Opiniones (solo el agregado real de Amazon) */
.rating-summary {
  display: grid; gap: 1.2rem; align-items: center;
  border: 1px solid var(--line); border-radius: var(--radius-l);
  background: var(--cream-soft); padding: 1.4rem;
}
.rating-summary__score {
  text-align: center; padding: 1rem; border-radius: var(--radius);
  background: var(--cream); border: 1px solid var(--line);
}
.rating-summary__score strong { font-family: var(--display); font-size: 2.6rem; font-weight: 700; line-height: 1; }
.rating-summary__score > span { color: var(--ink-3); font-size: .9rem; margin-left: .2rem; }
.rating-summary__score .stars { justify-content: center; margin-top: .4rem; }
.rating-summary p { font-size: .95rem; color: var(--ink-2); }
@media (min-width: 720px) { .rating-summary { grid-template-columns: 170px 1fr; } }

/* Productos similares */
.similar-strip { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }

/* Sticky buy bar (móvil) */
.buy-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
  background: var(--cream-soft); border-top: 1px solid var(--line-strong);
  padding: .7rem var(--gutter); display: none; align-items: center; gap: .8rem;
  box-shadow: 0 -6px 20px rgba(38,38,42,.08);
}
.buy-bar__name { font-size: .82rem; font-weight: 600; font-family: var(--display); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.buy-bar .btn { flex: none; }

/* =============================================================
   9. Comparador
   ============================================================= */
/* --- Selector del comparador: 3 huecos, con foto y nombre --- */
.cmp-picker {
  display: grid; gap: 1rem; margin-bottom: 1.6rem;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
}
.cmp-slot {
  position: relative; border-radius: var(--radius); background: var(--cream-soft);
  border: 1.5px solid var(--line); padding: .9rem;
  display: flex; flex-direction: column; gap: .7rem; min-height: 210px;
}
.cmp-slot--empty { border-style: dashed; border-color: var(--line-strong); background: transparent; }
.cmp-slot__num {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
  font-family: var(--display); font-size: .7rem; font-weight: 600; letter-spacing: .1em;
  text-transform: uppercase; color: var(--ink-3);
}
.cmp-slot__hint {
  letter-spacing: .04em; color: var(--cyan-text);
  background: var(--cyan-tint); border-radius: 999px; padding: .15rem .5rem;
}
.cmp-slot__thumb {
  width: 100%; aspect-ratio: 4/3; border-radius: var(--radius-s);
  border: 1px solid var(--line); overflow: hidden; background: #fff;
}
.cmp-slot__thumb img { width: 100%; height: 100%; object-fit: contain; padding: .35rem; }
.cmp-slot__name { display: block; font-family: var(--display); font-weight: 600; font-size: .9rem; line-height: 1.3; }
.cmp-slot__brand { display: block; font-size: .74rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); margin-bottom: .15rem; }
.cmp-slot__remove {
  align-self: flex-start; margin-top: auto; display: inline-flex; align-items: center; gap: .35rem;
  font-size: .8rem; color: var(--ink-3); padding: .3rem .1rem;
}
.cmp-slot__remove svg { width: .95em; height: .95em; }
.cmp-slot__remove:hover { color: var(--warn); }

/* Botón "añadir" del hueco vacío */
.cmp-add {
  flex: 1; width: 100%; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: .5rem; border-radius: var(--radius-s);
  color: var(--ink-2); font-family: var(--display); font-weight: 600; font-size: .9rem;
  transition: color .2s var(--ease-out), background .2s var(--ease-out);
}
.cmp-add svg { width: 26px; height: 26px; color: var(--cyan-deep); }
.cmp-add:hover { color: var(--ink); background: var(--cream-sunk); }
.cmp-slot--empty:hover { border-color: var(--cyan); }

/* Panel desplegable con las opciones */
.cmp-menu {
  position: absolute; inset-inline: -1px; top: calc(100% + 6px); z-index: 60;
  background: var(--cream-soft); border: 1px solid var(--line-strong);
  border-radius: var(--radius); box-shadow: var(--shadow-l);
  padding: .4rem; max-height: 340px; overflow-y: auto;
}
.cmp-menu[hidden] { display: none; }
.cmp-menu__empty { padding: .9rem; font-size: .86rem; color: var(--ink-3); text-align: center; }
.cmp-opt {
  display: flex; align-items: center; gap: .7rem; width: 100%; text-align: left;
  padding: .5rem; border-radius: var(--radius-s);
  transition: background .18s var(--ease-out);
}
.cmp-opt:hover, .cmp-opt:focus-visible { background: var(--cyan-tint); }
/* Foto pequeña, proporcional al texto de la opción */
.cmp-opt__img {
  flex: none; width: 46px; height: 46px; border-radius: 6px;
  border: 1px solid var(--line); background: #fff; overflow: hidden;
}
.cmp-opt__img img { width: 100%; height: 100%; object-fit: contain; padding: 2px; }
.cmp-opt__txt { min-width: 0; display: block; }
.cmp-opt__name { display: block; font-family: var(--display); font-weight: 600; font-size: .86rem; line-height: 1.25; color: var(--ink); }
.cmp-opt__meta { display: block; font-size: .76rem; color: var(--ink-3); margin-top: .15rem; }

.cmp-hint { font-size: .84rem; color: var(--ink-3); margin-bottom: 1.6rem; }

/* Filtro de categoría: manda sobre todo el comparador, así que va antes que los
   huecos y se ve como un selector de dos posiciones, no como dos botones sueltos. */
.cmp-filtro {
  display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem;
  padding: .4rem; border: 1.5px solid var(--line); border-radius: var(--radius);
  background: var(--cream-soft);
}
.cmp-filtro__btn {
  flex: 1 1 200px; display: flex; align-items: center; justify-content: center;
  gap: .55rem; padding: .75rem 1rem; border-radius: var(--radius-s);
  font-family: var(--display); font-weight: 600; font-size: .95rem;
  color: var(--ink-2); background: transparent; border: 1.5px solid transparent;
  transition: background .18s var(--ease-out), color .18s var(--ease-out),
              border-color .18s var(--ease-out);
}
.cmp-filtro__btn svg { width: 20px; height: 20px; flex: none; }
.cmp-filtro__btn em {
  font-style: normal; font-size: .78rem; font-weight: 600;
  padding: .1rem .45rem; border-radius: 999px;
  background: var(--cream-sunk); color: var(--ink-3);
}
.cmp-filtro__btn:hover { background: var(--cream-sunk); color: var(--ink); }
.cmp-filtro__btn.is-active {
  background: #fff; color: var(--cyan-text); border-color: var(--cyan);
  box-shadow: var(--shadow-s);
}
.cmp-filtro__btn.is-active em { background: var(--cyan-tint); color: var(--cyan-text); }

/* Cabecera dentro del desplegable: recuerda qué categoría se está listando. */
.cmp-menu__head {
  position: sticky; top: -.4rem; z-index: 1;
  margin: -.4rem -.4rem .3rem; padding: .55rem .75rem;
  background: var(--cream-sunk); border-bottom: 1px solid var(--line);
  border-radius: var(--radius) var(--radius) 0 0;
  font-family: var(--display); font-size: .72rem; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3);
}

.cmp-table-wrap { overflow-x: auto; overflow-y: visible; border: 1px solid var(--line); border-radius: var(--radius-l); }
.cmp-table { width: 100%; border-collapse: collapse; font-size: .9rem; min-width: 620px; }
.cmp-table th, .cmp-table td { padding: .85rem 1.1rem; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.cmp-table td .btn { margin-block: .15rem; }
.cmp-table thead th { background: var(--cream-soft); font-family: var(--display); position: sticky; top: 0; }
.cmp-table tbody th { font-weight: 500; color: var(--ink-2); }
.cmp-table .row-label { font-weight: 500; color: var(--ink-2); background: var(--cream-soft); position: sticky; left: 0; }
.cmp-table td.best { background: color-mix(in srgb, var(--cyan) 12%, transparent); font-weight: 700; color: var(--cyan-ink); }
.cmp-table .group-row th { background: var(--cream-sunk); font-family: var(--display); font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); }
.cmp-radar { max-width: 560px; margin: 2rem auto 0; }
.cmp-radar svg { width: 100%; height: auto; }
.cmp-radar__legend { display: flex; flex-wrap: wrap; gap: .8rem; justify-content: center; margin-top: .8rem; font-size: .85rem; }
.cmp-radar__legend span { display: inline-flex; align-items: center; gap: .4rem; }
.cmp-radar__legend i { width: 12px; height: 12px; border-radius: 3px; }
/* Estado inicial: todavía no hay nada que comparar */
.cmp-empty {
  text-align: center; padding: clamp(2.2rem, 7vw, 4rem) 1.5rem;
  border: 1.5px dashed var(--line-strong); border-radius: var(--radius-l);
  background: var(--cream-soft); color: var(--ink-2);
}
.cmp-empty svg { width: 42px; height: 42px; margin: 0 auto 1rem; color: var(--wood); }
.cmp-empty h2 { font-size: 1.2rem; margin-bottom: .5rem; color: var(--ink); }
.cmp-empty p { max-width: 46ch; margin: 0 auto; font-size: .95rem; }

/* =============================================================
   10. Guías
   ============================================================= */
.guide-hero { padding-block: clamp(2rem, 5vw, 3.4rem); border-bottom: 1px solid var(--line); }
.guide-hero h1 { font-size: clamp(1.8rem, 4vw, 2.7rem); max-width: 20ch; }
.guide-hero .lead { margin-top: 1rem; max-width: 60ch; }
.guide-meta { font-size: .82rem; color: var(--ink-3); margin-top: 1rem; display: flex; gap: 1rem; flex-wrap: wrap; }

.guide-toc { background: var(--cream-soft); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.1rem 1.3rem; margin: 1.6rem 0; }
.guide-toc h2 { font-size: .82rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); margin-bottom: .6rem; }
.guide-toc ol { padding-left: 1.2rem; }
.guide-toc li { margin-bottom: .35rem; }
.guide-toc a { color: var(--cyan-text); }

.guide-pick {
  display: grid; gap: 1rem; grid-template-columns: 1fr; align-items: start;
  border: 1px solid var(--line); border-radius: var(--radius-l); padding: 1.3rem; background: var(--cream-soft); margin: 1.4rem 0;
}
.guide-pick__rank { font-family: var(--display); font-weight: 700; color: var(--wood-text); font-size: .82rem; letter-spacing: .08em; text-transform: uppercase; }
.guide-pick h3 { font-size: 1.2rem; margin: .3rem 0 .5rem; }
.guide-pick__why { font-size: .94rem; color: var(--ink-2); }
.guide-pick img {
  border-radius: var(--radius); border: 1px solid var(--line); background: #fff;
  width: 100%; aspect-ratio: 4 / 3; object-fit: contain; padding: .5rem;
}

.faq-item { border-bottom: 1px solid var(--line); padding: 1rem 0; }
.faq-item h3 { font-size: 1.05rem; margin-bottom: .4rem; }
.faq-item p { color: var(--ink-2); font-size: .95rem; }

/* =============================================================
   11. Responsive
   ============================================================= */
@media (min-width: 720px) {
  .pros-cons { grid-template-columns: 1fr 1fr; }
  .fit-block { grid-template-columns: 1fr 1fr; }
  .hero__grid { grid-template-columns: 1.05fr 0.95fr; }
  .value-diagram-wrap { display: grid; grid-template-columns: 1.3fr 1fr; gap: 1.4rem; align-items: start; }
  .radar-wrap { grid-template-columns: 1fr 1fr; }
  .guide-pick { grid-template-columns: 200px 1fr; }
}
@media (min-width: 960px) {
  .ficha__top { grid-template-columns: 1fr 1fr; }
  .ficha__body { display: grid; grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 860px) {
  .nav-toggle {
    display: grid; place-items: center; width: 42px; height: 42px; margin-left: auto;
    border: 1px solid var(--line-strong); border-radius: 10px;
  }
  .nav-toggle svg { width: 22px; height: 22px; }
  .nav-links {
    position: fixed; inset: 72px 0 auto 0; flex-direction: column; align-items: stretch;
    background: var(--cream); border-bottom: 1px solid var(--line); padding: 1rem var(--gutter) 1.4rem;
    gap: .2rem; transform: translateY(-120%); transition: transform .32s var(--ease-out); box-shadow: var(--shadow);
  }
  .nav[data-open="true"] .nav-links { transform: translateY(0); }
  .nav-links a { padding: .8rem .6rem; font-size: 1rem; }
  .nav-links a.nav-cta, .nav-links a.nav-cta:hover { margin-left: 0; margin-top: .5rem; text-align: center; justify-content: center; display: flex; }
  .nav-links a.nav-calc, .nav-links a.nav-calc:hover { margin-right: 0; margin-bottom: .4rem; justify-content: center; }
  .buy-bar { display: flex; }
  .site-footer__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px) {
  .calc__measures, .calc__pain { grid-template-columns: 1fr; }
  .calc__pain { grid-template-columns: 1fr 1fr 1fr; }
  .site-footer__grid { grid-template-columns: 1fr; }
  .ficha__buy .btn { min-width: 0; width: 100%; }
}

/* =============================================================
   11b. Ajustes de móvil
   Todo lo de aquí vive dentro de la consulta de medios, así que la
   vista de escritorio queda exactamente como estaba.
   ============================================================= */
@media (max-width: 620px) {
  /* Los botones dejan de ir en una sola línea. El nowrap causaba dos
     problemas a la vez en pantalla estrecha: el botón «Comparar sillas y
     escritorios lado a lado» se salía 13 px de la pantalla, y el de la
     calculadora, que exige 290 px, obligaba a la rejilla del hero a medir
     333 px dentro de un contenedor de 325 — lo que dejaba todo el bloque
     descentrado, a 9 px del borde derecho y a 18 del izquierdo. */
  .btn { white-space: normal; max-width: 100%; text-wrap: balance; }

  /* Con interlineado 1,06 y un tope de 17 caracteres, el titular salía en
     cinco líneas muy apretadas. Suelta el aire y aprovecha el ancho. */
  .hero__title { line-height: 1.16; max-width: none; }

  /* La chapa de nota sobre la foto tenía el «/10 ErgoNeeds» a 9,9 px, que en
     un teléfono no se lee. */
  .product-card__nota { padding: .34rem .62rem; }
  .product-card__nota strong { font-size: 1.05rem; }
  .product-card__nota > span { font-size: .72rem; }

  /* Etiquetas secundarias: por debajo de 12 px cuesta leerlas en la mano. */
  .badge { font-size: .78rem; }
  .eyebrow { font-size: .82rem; }
  .verdict__label { font-size: .8rem; }
  .cmp-slot__num, .cmp-slot__hint { font-size: .74rem; }
  .product-card__brand { font-size: .82rem; }

  /* El control de estatura medía 6 px de alto: casi imposible de agarrar con
     el dedo. Se le da altura de zona táctil; el aspecto del control no
     cambia, solo el área que responde. */
  .calc__range-wrap input[type="range"] { height: 34px; }

  /* Zonas táctiles: estos enlaces medían entre 18 y 27 px de alto. */
  .product-card__more { padding: .55rem 0; }
  .site-footer__grid li a { display: inline-block; padding: .4rem 0; }

  /* Los puntos numerados del diagrama, sobre la foto del producto. */
  .value-point__dot { width: 32px; height: 32px; font-size: .9rem; }
}

/* La barra de compra fija aparece por debajo de 860 px y mide unos 65 px. Sin
   reservarle sitio tapaba el final del pie: el aviso legal y el enlace de
   privacidad quedaban escondidos detrás. Solo se aplica en las páginas que la
   llevan, que son las fichas de producto. */
@media (max-width: 860px) {
  body:has([data-buy-bar]) .site-footer { padding-bottom: calc(clamp(2.8rem, 6vw, 4.2rem) + 72px); }

  /* Enlaces sueltos que quedaban en 20-21 px de alto: se les da algo de aire
     vertical para poder pulsarlos sin apuntar. */
  .breadcrumb a { display: inline-block; padding-block: .25rem; }
  .site-footer__bottom a { display: inline-block; padding-block: .3rem; }
  .guide-toc li { margin-bottom: .1rem; }
  .guide-toc a { display: inline-block; padding-block: .35rem; }
}

/* Reveal (progresivo, no bloquea contenido) */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity .6s var(--ease-out), transform .6s var(--ease-out); }
.reveal.is-in { opacity: 1; transform: none; }
.no-js .reveal { opacity: 1; transform: none; }

/* =============================================================
   12. Reduced-motion (solo lo intrusivo)
   ============================================================= */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal { transition: none; opacity: 1; transform: none; }
  .nav-links { transition: none; }
}
