/* ============================================================
   RSM Producciones — tokens, utilidades y componentes globales
   Complementa a Tailwind con:
   - tokens CSS de marca (color, tipografía)
   - utilidades de tipografía editorial (eyebrow, headline)
   - botones base con la estética RSM
   - header sticky + estilos del modal de contacto
   Pensado para que el HTML sea legible y editable por humanos.
   ============================================================ */

:root {
  /* Brand */
  --rsm-orange: #FF5C00;
  --rsm-orange-700: #D14A00;
  --rsm-orange-light: #FF9B85;
  --rsm-orange-bg: #FFF4ED;

  /* Tinta y neutros */
  --rsm-ink: #0d0d0d;
  --rsm-text: #1F1F1F;
  --rsm-text-muted: #5c5c5c;
  --rsm-text-faint: #9a9a9a;

  /* Fondos */
  --rsm-bg: #fafaf7;
  --rsm-bg-soft: #f4f2ed;
  --rsm-bg-faint: #f9f7f2;
  --rsm-border: #d8d6d0;
  --rsm-border-soft: #e8e6df;

  /* Oscuros */
  --rsm-dark: #1a1a1a;
  --rsm-darker: #0a0a0a;
  --rsm-darkest: #000000;

  /* Tipografía */
  --rsm-font-display: "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --rsm-font-serif:   "Fraunces", Georgia, serif;
  --rsm-font-sans:    "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --rsm-font-mono:    'Space Mono', ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;

  /* Layout */
  /* Altura común de los controles de la cabecera (FX · Mi lista · Presupuesto).
     Los .rsm-btn del cuerpo siguen a 3rem: ahí sí queremos el CTA más grande. */
  --rsm-header-ctl-h: 2.75rem;

  --rsm-container-max: 1440px;
  --rsm-container-x: clamp(1.25rem, 4vw, 4rem);
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--rsm-font-sans);
  color: var(--rsm-ink);
  background: var(--rsm-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.55;
}

img { max-width: 100%; height: auto; display: block; }
a  { color: inherit; }

/* Contenedor */
.rsm-container {
  width: 100%;
  max-width: var(--rsm-container-max);
  margin-left: auto; margin-right: auto;
  padding-left: var(--rsm-container-x);
  padding-right: var(--rsm-container-x);
}

/* ─── Tipografía ─── */
.rsm-display {
  font-family: var(--rsm-font-display);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1;
  text-wrap: pretty;
}
.rsm-display em, .rsm-serif {
  font-family: var(--rsm-font-serif);
  font-weight: 400;
  font-style: italic;
  color: var(--rsm-orange);
}
.rsm-h1 {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: clamp(2.5rem, 6vw, 5.5rem);
  letter-spacing: -0.03em; line-height: 0.96;
}
.rsm-h2 {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: clamp(2rem, 4.4vw, 3.5rem);
  letter-spacing: -0.025em; line-height: 1.05;
}
.rsm-h3 {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: clamp(1.5rem, 2.2vw, 2.2rem);
  letter-spacing: -0.015em; line-height: 1.15;
}
.rsm-lead { font-size: clamp(1.05rem, 1.4vw, 1.2rem); line-height: 1.6; color: var(--rsm-text-muted); }
.rsm-eyebrow {
  display: inline-block;
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 0.75rem; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--rsm-orange-700);
  margin-bottom: 1rem;
}
.rsm-mono { font-family: var(--rsm-font-mono); letter-spacing: 0.04em; }

/* ─── Botones ─── */
.rsm-btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: 0.5rem; height: 3rem; padding: 0 1.25rem;
  font-family: var(--rsm-font-display); font-weight: 600;
  font-size: 0.875rem; letter-spacing: -0.005em;
  border-radius: 6px; border: none; cursor: pointer;
  text-decoration: none; white-space: nowrap;
  transition: background 150ms ease, transform 150ms ease, color 150ms ease, border-color 150ms ease;
}
.rsm-btn:focus-visible { outline: 3px solid var(--rsm-orange-light); outline-offset: 2px; }
.rsm-btn--primary { background: var(--rsm-orange); color: #fff; }
.rsm-btn--primary:hover { background: var(--rsm-orange-700); transform: translateY(-1px); }
.rsm-btn--secondary { background: #fff; color: var(--rsm-ink); border: 1.5px solid var(--rsm-ink); }
.rsm-btn--secondary:hover { background: var(--rsm-ink); color: #fff; }
.rsm-btn--ghost-light { background: transparent; color: #fff; border: 1.5px solid rgba(255,255,255,0.4); }
.rsm-btn--ghost-light:hover { border-color: #fff; background: rgba(255,255,255,0.08); }
.rsm-btn--lg { height: 3.5rem; padding: 0 1.75rem; font-size: 0.95rem; }

/* Link con flecha */
.rsm-link-arrow {
  display: inline-flex; align-items: center; gap: 0.4em;
  color: var(--rsm-ink); font-size: 0.875rem; font-weight: 600;
  text-decoration: none; padding-bottom: 2px;
  border-bottom: 1px solid var(--rsm-ink);
  transition: color 150ms;
}
.rsm-link-arrow:hover { color: var(--rsm-orange-700); border-bottom-color: var(--rsm-orange-700); }

/* ─── Breadcrumb ─── */
.rsm-breadcrumb {
  display: flex; flex-wrap: wrap; gap: 0.4em;
  font-family: var(--rsm-font-mono); font-size: 0.75rem;
  letter-spacing: 0.06em; color: var(--rsm-text-faint);
  text-transform: uppercase;
}
.rsm-breadcrumb a { color: var(--rsm-text-muted); text-decoration: none; }
.rsm-breadcrumb a:hover { color: var(--rsm-ink); }
.rsm-breadcrumb .current { color: var(--rsm-ink); }

/* ─── Card de proyecto / servicio (común) ─── */
.rsm-card {
  display: block; text-decoration: none; color: inherit;
  border-radius: 10px; overflow: hidden; transition: transform 250ms ease, box-shadow 250ms ease;
  padding-bottom: 6px;
}
.rsm-card:hover { transform: translateY(-3px); box-shadow: 0 18px 36px rgba(0,0,0,0.10); }
.rsm-card > *:not(.rsm-card-img) { padding-left: 6px; padding-right: 6px; }
.rsm-card-img {
  aspect-ratio: 4 / 3; background: #0a0a0a; overflow: hidden;
}
.rsm-card-img img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 600ms ease;
}
.rsm-card:hover .rsm-card-img img { transform: scale(1.04); }

.rsm-badge {
  display: inline-block; padding: 0.3rem 0.7rem;
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 0.6875rem; letter-spacing: 0.06em;
  text-transform: uppercase; border-radius: 3px;
  background: rgba(255,255,255,0.95); color: var(--rsm-ink);
}

/* ─── Header sticky ─── */
.rsm-header {
  position: sticky; top: 0; z-index: 40;
  background: transparent; color: #fff;
  border-bottom: 1px solid transparent;
  transition: background 200ms, border-color 200ms, color 200ms, backdrop-filter 200ms;
}
.rsm-header--solid { /* sin hero oscuro debajo */
  background: #fff; color: var(--rsm-ink);
  border-bottom-color: var(--rsm-border-soft);
}
.rsm-header.is-scrolled {
  background: rgba(255,255,255,0.97); color: var(--rsm-ink);
  border-bottom-color: var(--rsm-border-soft);
  backdrop-filter: blur(12px);
}
.rsm-header-inner {
  height: 88px; display: flex; align-items: center;
  justify-content: space-between; gap: 1.5rem;
}
.rsm-header__logo { display: inline-flex; align-items: center; }
.rsm-header__logo img { height: 46px; transition: height 200ms ease; }
.rsm-header.is-scrolled .rsm-header__logo img { height: 38px; }
.rsm-header__logo .logo-light { display: block; }
.rsm-header__logo .logo-dark  { display: none; }
.rsm-header.is-scrolled .rsm-header__logo .logo-light,
.rsm-header--solid .rsm-header__logo .logo-light { display: none; }
.rsm-header.is-scrolled .rsm-header__logo .logo-dark,
.rsm-header--solid .rsm-header__logo .logo-dark { display: block; }

.rsm-nav { display: flex; gap: 0.25rem; align-items: center; }
.rsm-nav__item { position: static; }
.rsm-nav__item > a {
  display: inline-flex; align-items: center; gap: 0.4em;
  padding: 0.625rem 0.875rem; border-radius: 6px;
  font-family: var(--rsm-font-display); font-size: 0.9rem; font-weight: 500;
  letter-spacing: 0.01em; color: inherit; opacity: 0.85;
  text-decoration: none; transition: opacity 150ms, background 150ms;
}
.rsm-nav__item > a:hover, .rsm-nav__item > a.is-active { opacity: 1; }
.rsm-nav__item > a.is-active {
  border-bottom: 2px solid var(--rsm-orange); border-radius: 0; padding-bottom: 6px;
}
.rsm-nav__chev { transition: transform 200ms ease; }
.rsm-nav__item:hover .rsm-nav__chev { transform: rotate(180deg); }

/* ─── Megamenús ─── */
.rsm-mega {
  position: absolute; top: 100%; left: 0; right: 0;
  background: #fff; color: var(--rsm-ink);
  border-top: 1px solid var(--rsm-border-soft);
  border-bottom: 1px solid var(--rsm-border-soft);
  box-shadow: 0 24px 48px rgba(0,0,0,0.08);
  opacity: 0; visibility: hidden; transform: translateY(-8px);
  transition: opacity 200ms ease, transform 200ms ease, visibility 200ms;
  z-index: 39;
}
.rsm-mega.is-open { opacity: 1; visibility: visible; transform: translateY(0); }
.rsm-mega__inner {
  padding: 3rem var(--rsm-container-x);
  display: grid; gap: 4rem; align-items: start;
  grid-template-columns: 1fr 1.4fr;
  max-width: var(--rsm-container-max); margin: 0 auto;
}
.rsm-mega__title {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 1.75rem; letter-spacing: -0.02em; line-height: 1.1;
  margin: 0 0 0.75rem;
}
.rsm-mega__desc { font-size: 0.95rem; color: var(--rsm-text-muted); line-height: 1.6; margin: 0 0 1.5rem; max-width: 380px; }
.rsm-mega__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }
.rsm-mega__item {
  display: grid; grid-template-columns: 1fr 20px;
  gap: 1rem; align-items: center; padding: 1rem 1.25rem;
  text-decoration: none; color: inherit; border-radius: 8px;
  transition: background 150ms ease;
}
.rsm-mega__item:hover { background: var(--rsm-bg-soft); }
.rsm-mega__item:hover .rsm-mega__arrow { transform: translateX(4px); color: var(--rsm-orange); }
.rsm-mega__body { display: flex; flex-direction: column; gap: 2px; }
.rsm-mega__label { font-family: var(--rsm-font-display); font-weight: 700; font-size: 1rem; letter-spacing: -0.005em; }
.rsm-mega__hint  { font-size: 0.8125rem; color: var(--rsm-text-muted); }
.rsm-mega__arrow { font-size: 1.125rem; color: var(--rsm-text-faint); transition: transform 200ms ease, color 200ms ease; }
@media (max-width: 1023px) { .rsm-mega { display: none; } }

/* ─── Loader ─── */
.rsm-loader {
  position: fixed; inset: 0; z-index: 200;
  background: var(--rsm-darker); color: #fff;
  display: flex; align-items: center; justify-content: center;
  transition: opacity 600ms ease;
  overflow: hidden;
}
.rsm-loader__bg {
  position: absolute; inset: 0;
  background:
    radial-gradient(circle at 30% 40%, rgba(255,92,0,0.18) 0%, transparent 40%),
    radial-gradient(circle at 70% 70%, rgba(255,92,0,0.10) 0%, transparent 50%);
  animation: rsm-loader-bg 4s ease-in-out infinite alternate;
}
@keyframes rsm-loader-bg {
  from { transform: scale(1) rotate(0deg); }
  to   { transform: scale(1.2) rotate(8deg); }
}
.rsm-loader__content {
  position: relative; display: flex; flex-direction: column;
  align-items: center; gap: 28px;
  animation: rsm-loader-rise 800ms cubic-bezier(.22,.61,.36,1) both;
}
@keyframes rsm-loader-rise {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: none; }
}
.rsm-loader__logo {
  height: 64px; opacity: 0; animation: rsm-loader-logo 900ms cubic-bezier(.22,.61,.36,1) 100ms forwards;
}
@keyframes rsm-loader-logo {
  from { opacity: 0; transform: scale(0.92); filter: blur(6px); }
  to   { opacity: 1; transform: scale(1);     filter: none; }
}
.rsm-loader__bar {
  width: 200px; height: 2px; background: rgba(255,255,255,0.12);
  overflow: hidden; border-radius: 2px;
}
.rsm-loader__bar-fill {
  height: 100%; width: 30%; background: var(--rsm-orange);
  animation: rsm-loader-bar 1.2s cubic-bezier(.65,.05,.36,1) infinite;
}
@keyframes rsm-loader-bar {
  0%   { transform: translateX(-100%); width: 30%; }
  50%  { width: 60%; }
  100% { transform: translateX(360%); width: 30%; }
}
.rsm-loader__caption {
  font-family: var(--rsm-font-mono); font-size: 11px;
  letter-spacing: 0.2em; color: rgba(255,255,255,0.45);
  text-transform: uppercase;
}
.rsm-loader.is-leaving { opacity: 0; pointer-events: none; }
@media (prefers-reduced-motion: reduce) {
  .rsm-loader__bg, .rsm-loader__content, .rsm-loader__logo, .rsm-loader__bar-fill { animation: none; }
}

.rsm-header__right { display: flex; align-items: center; gap: 0.75rem; }
/* Todos los controles de la cabecera comparten caja: lo que los distingue es el
   relleno (fantasma / contorno / sólido), no el tamaño ni la forma. */
.rsm-header__right > .rsm-header__fx,
.rsm-header__right > .rsm-cart-btn,
.rsm-header__right > .rsm-btn,
.rsm-header__right > .rsm-burger {
  height: var(--rsm-header-ctl-h);
  border-radius: 6px;
  font-size: 0.8125rem;
}
.rsm-header__phone {
  font-family: var(--rsm-font-mono); font-size: 0.8125rem;
  opacity: 0.7; text-decoration: none; color: inherit;
}
/* Botón a rsmfx.com: el logo real de la marca sobre pastilla blanca, para que
   lea igual con la cabecera transparente sobre el hero y con la cabecera sólida. */
.rsm-header__fx {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  height: 2.375rem; padding: 0 0.75rem; border-radius: 6px;
  background: #fff; border: 1px solid rgba(0,0,0,.08);
  text-decoration: none; white-space: nowrap;
  transition: box-shadow 150ms ease, transform 150ms ease;
}
.rsm-header__fx img { height: 1.15rem; width: auto; display: block; }
.rsm-header__fx:hover { box-shadow: 0 6px 16px -8px rgba(0,0,0,.5); transform: translateY(-1px); }
@media (max-width: 1150px) { .rsm-header__fx { display: none; } }

.rsm-burger { display: none; background: transparent; border: 0; color: inherit; padding: 8px; cursor: pointer; }
.rsm-burger svg { width: 24px; height: 24px; }

/* ─── Mobile drawer ─── */
.rsm-drawer {
  position: fixed; top: 0; right: 0; height: 100dvh;
  width: min(360px, 84vw); background: var(--rsm-darker); color: #fff;
  z-index: 80; transform: translateX(100%); transition: transform 280ms ease-in-out;
  display: flex; flex-direction: column; padding: 28px 28px 36px;
}
.rsm-drawer.is-open { transform: translateX(0); }
.rsm-drawer__close { align-self: flex-end; background: transparent; border: 0; color: #fff; font-size: 28px; cursor: pointer; line-height: 1; }
.rsm-drawer nav { display: flex; flex-direction: column; gap: 16px; margin-top: 24px; flex: 1; }
.rsm-drawer nav a {
  font-family: var(--rsm-font-display); font-weight: 600; font-size: 1.5rem;
  color: #fff; text-decoration: none;
}
.rsm-drawer nav a:hover { color: var(--rsm-orange); }
.rsm-overlay {
  position: fixed; inset: 0; background: rgba(0,0,0,0.5); opacity: 0; pointer-events: none;
  transition: opacity 200ms ease; z-index: 70;
}
.rsm-overlay.is-open { opacity: 1; pointer-events: auto; }


/* ─── Mega backdrop ─── */
.rsm-mega-backdrop {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.35);
  z-index: 35;
  opacity: 0; pointer-events: none;
  transition: opacity 200ms ease;
}
.rsm-mega-backdrop.is-open { opacity: 1; pointer-events: auto; }

/* ─── Hero ─── */
.rsm-hero {
  position: relative; overflow: hidden; color: #fff;
  background: var(--rsm-darker);
  margin-top: -88px; padding-top: 88px;
}
.rsm-hero--lg { min-height: 720px; }
.rsm-hero--md { min-height: 540px; }
.rsm-hero__img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; opacity: 0.55;
}
.rsm-hero__veil {
  position: absolute; inset: 0;
  background: linear-gradient(105deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.4) 55%, rgba(0,0,0,0) 100%);
}
.rsm-hero__inner {
  position: relative; min-height: inherit;
  display: flex; flex-direction: column; justify-content: center;
  padding-top: 80px; padding-bottom: 80px;
}

/* Eyebrow con línea para hero oscuro */
.rsm-eyebrow-line {
  display: inline-flex; align-items: center; gap: 14px;
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 0.75rem; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--rsm-orange);
  margin-bottom: 1.75rem;
}
.rsm-eyebrow-line::before {
  content: ""; width: 36px; height: 1px; background: var(--rsm-orange);
}

/* ─── Trust band ─── */
.rsm-trust {
  background: var(--rsm-dark); color: #fff;
  padding: 1.25rem 0;
}
.rsm-trust__inner {
  display: flex; align-items: center; justify-content: center; gap: 2rem;
  flex-wrap: wrap; font-size: 0.8125rem; font-weight: 600;
  font-family: var(--rsm-font-display);
}
.rsm-trust__inner span.dot { width: 6px; height: 6px; background: var(--rsm-orange); border-radius: 1px; display: inline-block; margin-right: 8px; vertical-align: middle; }
.rsm-trust__sep { opacity: 0.3; }

/* ─── Logos de cliente (placeholder) ─── */
.rsm-client-logo {
  height: 4.5rem; display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--rsm-border-soft); border-radius: 6px;
  background: #fff; color: var(--rsm-text-muted);
  font-family: var(--rsm-font-display); font-weight: 700; font-size: 0.8125rem;
  text-align: center; padding: 0 1rem; filter: grayscale(1); opacity: 0.75;
  transition: all 200ms;
}
.rsm-client-logo:hover { filter: grayscale(0); opacity: 1; color: var(--rsm-ink); }

/* ═══════════════════════════════════════════════════════════════
   MARQUEE — logos animados en bucle continuo (3 carriles a velocidades distintas)
   Uso:
     <div class="rsm-marquee rsm-marquee--brands">
       <div class="rsm-marquee__edge rsm-marquee__edge--l"></div>
       <div class="rsm-marquee__row" data-marquee-row data-speed="60">
         <div class="rsm-marquee__track">
           <div class="rsm-marquee__tile"><img src="..." /></div>
           ... (N tiles)
         </div>
       </div>
       ...
       <div class="rsm-marquee__edge rsm-marquee__edge--r"></div>
     </div>
   El JS clona el track una vez para que el bucle sea infinito sin saltos.
   ═══════════════════════════════════════════════════════════════ */
.rsm-marquee {
  position: relative;
  /* permitimos que el tile pueda subir un poco en hover sin que se corte,
     pero seguimos recortando el desplazamiento horizontal del track */
  overflow-x: clip;
  overflow-y: visible;
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 14px 0;
  /* máscara suave en los bordes para que los logos no aparezcan/desaparezcan bruscamente */
  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 8%, #000 92%, transparent 100%);
          mask-image: linear-gradient(to right, transparent 0, #000 8%, #000 92%, transparent 100%);
}
.rsm-marquee__row {
  display: flex;
  overflow-x: clip;
  overflow-y: visible;
  /* un row contiene un track duplicado, ambos animados con translateX */
}
.rsm-marquee__track {
  display: flex;
  flex: 0 0 auto;
  gap: 14px;
  padding-right: 14px;
  align-items: center;
  animation: rsm-marquee-scroll linear infinite;
  animation-duration: var(--rsm-marquee-duration, 60s);
  will-change: transform;
}
.rsm-marquee__row[data-dir="reverse"] .rsm-marquee__track {
  animation-direction: reverse;
}
@keyframes rsm-marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.rsm-marquee:hover .rsm-marquee__track,
.rsm-marquee__track:hover {
  animation-play-state: paused;
}

/* Tile de marca (PNG logo) — fondo blanco, bordes suaves, hover destaca naranja */
.rsm-marquee__tile {
  flex: 0 0 auto;
  width: 200px;
  height: 96px;
  background: #fff;
  border: 1px solid var(--rsm-border-soft);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8px 14px;
  transition: transform 220ms ease, border-color 220ms ease, box-shadow 220ms ease;
}
.rsm-marquee__tile img {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  transition: filter 220ms ease, opacity 220ms ease;
}
.rsm-marquee__tile:hover {
  transform: translateY(-3px);
  border-color: var(--rsm-orange);
  box-shadow: 0 12px 28px rgba(255,92,0,0.16);
}

/* Variante "brands": neutralizar color con grayscale por defecto, hover en color */
.rsm-marquee--brands .rsm-marquee__tile img {
  filter: grayscale(1) contrast(1.05);
  opacity: 0.78;
}
.rsm-marquee--brands .rsm-marquee__tile:hover img {
  filter: none;
  opacity: 1;
}

/* Variante "clients" — tiles cuadrados más anchos porque vienen con imágenes JPG full color */
.rsm-marquee--clients .rsm-marquee__tile {
  width: 220px;
  height: 110px;
  padding: 8px 14px;
  background: #fff;
}
.rsm-marquee--clients .rsm-marquee__tile img {
  filter: grayscale(1) contrast(1.05);
  opacity: 0.82;
}
.rsm-marquee--clients .rsm-marquee__tile:hover img {
  filter: none;
  opacity: 1;
}

/* Variante dark — fondo oscuro, tiles oscurecidos */
.rsm-marquee--dark .rsm-marquee__tile {
  background: #111;
  border-color: rgba(255,255,255,0.08);
}
.rsm-marquee--dark .rsm-marquee__tile img {
  filter: invert(1) grayscale(1) contrast(1.1) brightness(1.05);
  opacity: 0.7;
  mix-blend-mode: screen;
}
.rsm-marquee--dark .rsm-marquee__tile:hover {
  border-color: var(--rsm-orange);
}
.rsm-marquee--dark .rsm-marquee__tile:hover img {
  filter: invert(1) grayscale(0) contrast(1) brightness(1.15);
  opacity: 1;
}

/* Bordes con fade lateral (cuando no se usa mask) — opcionales como adorno extra */
.rsm-marquee__edge {
  position: absolute;
  top: 0; bottom: 0;
  width: 120px;
  z-index: 2;
  pointer-events: none;
}
.rsm-marquee__edge--l { left: 0;  background: linear-gradient(to right, var(--rsm-marquee-bg, transparent), transparent); }
.rsm-marquee__edge--r { right: 0; background: linear-gradient(to left,  var(--rsm-marquee-bg, transparent), transparent); }

@media (max-width: 639px) {
  .rsm-marquee__tile { width: 160px; height: 80px; padding: 6px 10px; }
  .rsm-marquee--clients .rsm-marquee__tile { width: 170px; height: 90px; padding: 6px 10px; }
}

@media (prefers-reduced-motion: reduce) {
  .rsm-marquee__track { animation: none; }
}

/* ─── Producto: contenedor de imagen / placeholder ─── */
.rsm-product-ph {
  aspect-ratio: 1.3 / 1; background: #fff; border-radius: 4px;
  border: 1px solid var(--rsm-border-soft); position: relative; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
}
/* Con foto real: fondo blanco limpio, la imagen respira con algo de aire. */
.rsm-product-ph--img { padding: 10px; }
.rsm-product-ph--img img { width: 100%; height: 100%; object-fit: contain; display: block; }
/* Sin foto (placeholder): fondo suave + icono. */
.rsm-product-ph--empty { background: var(--rsm-bg-soft); }
.rsm-product-ph svg { opacity: 0.22; width: 56px; height: 56px; }

/* ─── Sección de capacidades — card ─── */
.rsm-cap-card {
  background: #fff; padding: 1.5rem; border-radius: 8px;
  border: 1px solid var(--rsm-border-soft);
  display: flex; gap: 1.125rem; align-items: flex-start;
}
.rsm-cap-card__code {
  width: 52px; height: 52px; border-radius: 6px;
  background: var(--rsm-ink); color: var(--rsm-orange);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--rsm-font-display); font-weight: 700; font-size: 1.125rem;
  flex-shrink: 0;
}

/* ─── Contact modal ─── */
.rsm-modal {
  position: fixed; inset: 0; z-index: 90;
  background: rgba(0,0,0,0.6); backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; pointer-events: none; transition: opacity 200ms;
}
.rsm-modal.is-open { opacity: 1; pointer-events: auto; }
.rsm-modal__card {
  width: min(720px, 92vw); max-height: 90vh; overflow: auto;
  background: #fff; border-radius: 12px; padding: clamp(1.75rem, 4vw, 3rem);
  position: relative; box-shadow: 0 32px 80px rgba(0,0,0,0.4);
  transform: scale(0.96); transition: transform 250ms;
}
.rsm-modal.is-open .rsm-modal__card { transform: scale(1); }
.rsm-modal__close {
  position: absolute; top: 18px; right: 18px;
  width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid var(--rsm-border); background: #fff;
  cursor: pointer; font-size: 20px; line-height: 1;
}
.rsm-modal h3 {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: clamp(1.5rem, 3vw, 2rem); letter-spacing: -0.02em;
  line-height: 1.05; margin: 0 0 1rem;
}

.rsm-pill {
  padding: 0.75rem 1rem; border: 1.5px solid var(--rsm-border);
  background: #fff; color: var(--rsm-ink); border-radius: 6px;
  cursor: pointer; font-size: 0.8125rem; font-weight: 600;
  font-family: var(--rsm-font-display); text-align: left;
  transition: all 150ms;
}
.rsm-pill:hover { border-color: var(--rsm-orange); }
.rsm-pill.is-active {
  border-color: var(--rsm-orange);
  background: rgba(255,92,0,0.06);
  color: var(--rsm-orange-700);
}

.rsm-input, .rsm-textarea, .rsm-select {
  width: 100%; height: 3rem; border: 1px solid var(--rsm-border);
  border-radius: 6px; padding: 0 0.875rem; font-size: 0.875rem;
  font-family: var(--rsm-font-sans); outline: none;
  background: #fff; color: var(--rsm-ink);
  transition: border-color 150ms;
}
.rsm-input:focus, .rsm-textarea:focus, .rsm-select:focus { border-color: var(--rsm-orange); }
.rsm-textarea { height: auto; padding: 0.875rem; resize: vertical; }

/* ─── Floating contact button ─── */
.rsm-fab {
  position: fixed; bottom: 24px; right: 24px; z-index: 50;
  width: 56px; height: 56px; border-radius: 50%;
  background: var(--rsm-orange); color: #fff; border: none;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 12px 32px rgba(255,92,0,0.35); cursor: pointer;
  transition: transform 200ms ease, background 200ms ease;
}
.rsm-fab:hover { transform: translateY(-2px); background: var(--rsm-orange-700); }
.rsm-fab svg { width: 24px; height: 24px; }

/* ─── Stats / proceso ─── */
.rsm-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border-top: 1px solid rgba(255,255,255,0.1);
}
.rsm-stats > div {
  padding: 2.5rem 2rem 0 0;
  border-right: 1px solid rgba(255,255,255,0.1);
}
.rsm-stats > div:last-child { border-right: none; padding-right: 0; }
.rsm-stats > div:not(:first-child) { padding-left: 2rem; }
.rsm-stats__num {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: clamp(2.25rem, 4.5vw, 4rem);
  color: var(--rsm-orange); letter-spacing: -0.03em; line-height: 1;
  margin-bottom: 0.75rem;
}

/* ─── Footer ─── */
.rsm-footer {
  background: var(--rsm-darkest); color: #fff;
  padding: 5rem 0 2rem;
}
.rsm-footer__cols {
  display: grid; gap: 3rem; margin-bottom: 5rem;
  grid-template-columns: 2fr 1fr 1fr 1fr;
}
.rsm-footer__brand-logo { height: 44px; margin-bottom: 1.5rem; }
.rsm-footer__title {
  font-family: var(--rsm-font-mono); font-size: 0.6875rem; letter-spacing: 0.12em;
  color: var(--rsm-orange); margin-bottom: 1.25rem; text-transform: uppercase;
}
.rsm-footer__cols ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.75rem; }
.rsm-footer__cols a { color: rgba(255,255,255,0.7); text-decoration: none; font-size: 0.875rem; }
.rsm-footer__cols a:hover { color: var(--rsm-orange); }
.rsm-footer__bottom {
  padding-top: 1.75rem;
  border-top: 1px solid rgba(255,255,255,0.1);
  display: flex; justify-content: space-between; gap: 1.5rem;
  font-size: 0.75rem; color: rgba(255,255,255,0.4);
  font-family: var(--rsm-font-mono); flex-wrap: wrap;
}
.rsm-footer__bottom a { color: inherit; text-decoration: none; }

/* Franja de logos: ayudas públicas (obligación de publicidad) + asociaciones */
/* Los dos grupos arrancan arriba y sus filas comparten banda de altura fija, de
   modo que los dos rótulos quedan a la misma línea y los logos centrados en la
   misma franja aunque unos sean apaisados y otros casi cuadrados. Con
   `align-items: flex-end` se igualaban por abajo y el desnivel se iba a los
   rótulos, que es lo que chirriaba a RSM (aviso de Ana, 28-jul). */
.rsm-footer__logos {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 2.5rem; flex-wrap: wrap;
  padding-top: 2rem; margin-bottom: 2rem;
  border-top: 1px solid rgba(255,255,255,0.1);
}
.rsm-footer__logos-group { display: flex; flex-direction: column; gap: 0.875rem; }
.rsm-footer__logos-row {
  display: flex; gap: 2rem; flex-wrap: wrap; align-items: center;
  min-height: 56px;
}
/* Los logos van en blanco directamente sobre el fondo oscuro, sin pastilla y a
   media opacidad para que acompañen sin gritar. Al pasar por encima suben a
   blanco pleno. Los assets son siluetas blancas con transparencia. */
.rsm-footer__logo-tile {
  display: flex; align-items: center; justify-content: center;
  height: 36px;
  transition: opacity 150ms ease;
  opacity: 0.62;
}
.rsm-footer__logo-tile:hover,
.rsm-footer__logo-tile:focus-visible { opacity: 1; }
.rsm-footer__logo-tile img {
  max-height: 100%; width: auto; max-width: 190px; object-fit: contain; display: block;
}
/* Los logos se igualan ópticamente, no por altura de caja: el de AESAV es casi
   cuadrado y a 36px pesaba la mitad que los apaisados. */
.rsm-footer__logo-tile--square { height: 48px; }
/* El de la Generalitat va por encima del resto porque lleva el escudo y el
   nombre de la conselleria en dos líneas, y a 36px la letra no se leía. Petición
   de RSM del 28-jul. */
.rsm-footer__logo-tile--ayudas { height: 56px; }
.rsm-footer__logo-tile--ayudas img { max-width: 260px; }

/* ─── Mapa del contacto ─── */
/* El embed de OpenStreetMap pinta abajo una barra con los enlaces de reportar
   un problema, donar y términos del sitio. Va dentro del iframe y es de otro
   origen, así que no se puede ocultar por CSS. Se recorta **solo por abajo**,
   agrandando el iframe y dejando que el contenedor lo corte, y la atribución,
   que es obligatoria, se pinta debajo del mapa en pequeño. Por arriba no se
   recorta nada porque ahí va el botón de zoom «+», pegado a la esquina.
   Petición de Roman del 29-jul. */
.rsm-map { position: relative; aspect-ratio: 4 / 3; }
/* El alto del recorte depende del ancho, porque la barra reparte su texto en
   más líneas cuanto más estrecho es el iframe. Medido en el propio embed el
   29-jul: 40px a 427px de ancho, 40px a 280px y 60px a 230px. El recorte va
   holgado sobre eso porque el reparto de líneas puede cambiar si OSM toca el
   texto. Si se ajusta, medir con viewport real, no cambiando el ancho del
   elemento, que no dispara la media query. */
.rsm-map__frame {
  position: absolute; border: 0;
  top: 0; left: 0; width: 100%; height: calc(100% + 80px);
  filter: grayscale(0.4) contrast(1.05);
}
@media (max-width: 640px) {
  .rsm-map__frame { height: calc(100% + 96px); }
}
.rsm-map__credit {
  margin-top: 0.5rem;
  font-family: var(--rsm-font-mono); font-size: 0.6875rem;
  color: var(--rsm-text-muted);
}
.rsm-map__credit a { color: inherit; text-decoration: underline; }

/* ─── Búsqueda en vivo ─── */
.rsm-livesearch {
  position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 60;
  background: #fff; border: 1px solid var(--rsm-border); border-radius: 10px;
  box-shadow: 0 16px 40px rgba(0,0,0,0.12);
  max-height: min(480px, 60vh); overflow-y: auto; padding: 6px;
  text-align: left;
}
.rsm-livesearch__group { padding: 4px 0; }
.rsm-livesearch__group + .rsm-livesearch__group { border-top: 1px solid var(--rsm-border-soft, rgba(0,0,0,0.06)); }
.rsm-livesearch__label {
  font-family: var(--rsm-font-mono); font-size: 10px; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--rsm-text-muted); padding: 8px 10px 4px;
}
.rsm-livesearch__item {
  display: flex; align-items: center; gap: 10px; padding: 8px 10px;
  border-radius: 8px; text-decoration: none; color: inherit;
}
.rsm-livesearch__item:hover, .rsm-livesearch__item.is-focus { background: var(--rsm-bg-soft, #f6f6f3); }
.rsm-livesearch__thumb {
  flex: 0 0 40px; width: 40px; height: 40px; border-radius: 6px; overflow: hidden;
  background: #fff; border: 1px solid var(--rsm-border-soft, rgba(0,0,0,0.06));
  display: flex; align-items: center; justify-content: center;
}
.rsm-livesearch__thumb img { width: 100%; height: 100%; object-fit: contain; }
.rsm-livesearch__body { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.rsm-livesearch__title { font-weight: 600; font-size: 0.875rem; line-height: 1.3; }
.rsm-livesearch__meta { font-family: var(--rsm-font-mono); font-size: 11px; color: var(--rsm-text-muted); }
.rsm-livesearch__all {
  display: block; padding: 10px; text-align: center; font-weight: 600; font-size: 0.8125rem;
  color: var(--rsm-orange-700); text-decoration: none; border-top: 1px solid var(--rsm-border-soft, rgba(0,0,0,0.06));
}
.rsm-livesearch__all:hover { background: var(--rsm-bg-soft, #f6f6f3); }
.rsm-livesearch__empty { padding: 14px; font-size: 0.875rem; color: var(--rsm-text-muted); text-align: center; }

/* ─── Responsive ─── */
@media (max-width: 1023px) {
  .rsm-nav, .rsm-header__phone { display: none; }
  .rsm-burger { display: inline-flex; }
  .rsm-footer__cols { grid-template-columns: 1fr 1fr; }
  .rsm-stats { grid-template-columns: repeat(2, 1fr); gap: 0; }
  .rsm-stats > div:nth-child(2) { border-right: none; }
  .rsm-stats > div:nth-child(3) { padding-left: 0; border-top: 1px solid rgba(255,255,255,0.1); padding-top: 2rem; margin-top: 2rem; }
  .rsm-stats > div:nth-child(4) { padding-left: 2rem; border-top: 1px solid rgba(255,255,255,0.1); padding-top: 2rem; margin-top: 2rem; }
}
@media (max-width: 639px) {
  .rsm-hero--lg, .rsm-hero--md { min-height: 80vh; }
  .rsm-stats { grid-template-columns: 1fr; gap: 1.5rem; }
  .rsm-stats > div { padding: 1.5rem 0 0; border: none; border-top: 1px solid rgba(255,255,255,0.1) !important; margin-top: 0 !important; }
  .rsm-footer__cols { grid-template-columns: 1fr; }
  .rsm-footer__bottom { flex-direction: column; }
}

/* Animaciones suaves para reveals */
@media (prefers-reduced-motion: no-preference) {
  .rsm-reveal { opacity: 0; transform: translateY(20px); transition: opacity 700ms cubic-bezier(.22,.61,.36,1), transform 700ms cubic-bezier(.22,.61,.36,1); will-change: opacity, transform; }
  .rsm-reveal.is-in { opacity: 1; transform: none; }
  .rsm-reveal.rsm-reveal--scale { transform: translateY(20px) scale(0.97); }
  .rsm-reveal--scale.is-in { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .rsm-reveal { opacity: 1 !important; transform: none !important; }
}

/* Hero entrance — sin esperar IO */
.rsm-hero h1, .rsm-hero p, .rsm-hero .rsm-eyebrow-line, .rsm-hero a, .rsm-hero button {
  animation: rsm-hero-rise 900ms cubic-bezier(.22,.61,.36,1) both;
}
.rsm-hero .rsm-eyebrow-line { animation-delay: 100ms; }
.rsm-hero h1                 { animation-delay: 200ms; }
.rsm-hero p                  { animation-delay: 350ms; }
.rsm-hero .rsm-btn,
.rsm-hero a.rsm-btn,
.rsm-hero a[href^="tel"]     { animation-delay: 500ms; }
@keyframes rsm-hero-rise {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .rsm-hero h1, .rsm-hero p, .rsm-hero .rsm-eyebrow-line, .rsm-hero a, .rsm-hero button { animation: none; }
}

/* Pequeño float en el FAB */
.rsm-fab { animation: rsm-fab-pulse 3.5s ease-in-out 1s infinite; }
@keyframes rsm-fab-pulse {
  0%, 100% { box-shadow: 0 12px 32px rgba(255,92,0,0.35); }
  50%      { box-shadow: 0 12px 32px rgba(255,92,0,0.55), 0 0 0 8px rgba(255,92,0,0.08); }
}

/* ═══════════════════════════════════════════════════════════════
   FICHA DE PRODUCTO — galería + estructura nueva
   ═══════════════════════════════════════════════════════════════ */
.rsm-gallery { display: flex; flex-direction: column; gap: 0.75rem; }
.rsm-gallery__main {
  position: relative;
  background: #fff; border-radius: 10px;
  border: 1px solid var(--rsm-border-soft);
  overflow: hidden;
  aspect-ratio: 3/2;
}
.rsm-gallery__main img {
  width: 100%; height: 100%; object-fit: contain;
  padding: clamp(1rem, 2vw, 2rem);
  transition: opacity 220ms ease;
}
.rsm-gallery__main img.is-fading { opacity: 0.4; }
.rsm-gallery__nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 42px; height: 42px; border-radius: 50%;
  background: rgba(255,255,255,0.92); border: 1px solid var(--rsm-border);
  cursor: pointer; font-size: 22px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  transition: all 150ms ease;
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  font-family: var(--rsm-font-display); font-weight: 400;
  color: var(--rsm-ink);
}
.rsm-gallery__nav:hover { background: #fff; border-color: var(--rsm-orange); color: var(--rsm-orange); }
.rsm-gallery__nav--prev { left: 12px; }
.rsm-gallery__nav--next { right: 12px; }
.rsm-gallery__counter {
  position: absolute; bottom: 14px; right: 14px;
  font-family: var(--rsm-font-mono); font-size: 0.72rem;
  background: rgba(0,0,0,0.6); color: #fff;
  padding: 4px 10px; border-radius: 999px;
  letter-spacing: 0.04em;
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.rsm-gallery__zoom {
  position: absolute; top: 14px; right: 14px;
  width: 36px; height: 36px; border-radius: 50%;
  background: rgba(0,0,0,0.55); color: #fff; border: 0;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: background 150ms;
}
.rsm-gallery__zoom:hover { background: var(--rsm-ink); }
.rsm-gallery__thumbs {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(82px, 1fr));
  gap: 0.5rem;
}
.rsm-gallery__thumb {
  aspect-ratio: 1; background: #fff;
  border-radius: 6px; overflow: hidden;
  border: 1px solid var(--rsm-border-soft); cursor: pointer; padding: 0;
  transition: border-color 150ms ease;
}
.rsm-gallery__thumb img { width: 100%; height: 100%; object-fit: contain; padding: 6px; }
.rsm-gallery__thumb.is-active { border-color: var(--rsm-orange); border-width: 2px; }
.rsm-gallery__thumb:hover { border-color: var(--rsm-orange-light); }
.rsm-gallery--scroll .rsm-gallery__thumbs {
  grid-template-columns: none;
  display: flex; flex-wrap: nowrap; overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 0.5rem;
}
.rsm-gallery--scroll .rsm-gallery__thumb {
  flex: 0 0 82px; scroll-snap-align: start;
}

/* Ficha cabecera derecha — caja de info */
.rsm-product-meta {
  display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center;
  margin-bottom: 1.25rem;
}
.rsm-product-meta__tag {
  display: inline-flex; align-items: center;
  font-family: var(--rsm-font-mono); font-size: 0.7rem;
  letter-spacing: 0.06em; text-transform: uppercase;
  padding: 0.35rem 0.7rem; border-radius: 4px;
  background: var(--rsm-bg-soft); color: var(--rsm-text-muted);
}
.rsm-product-meta__tag--stock {
  background: rgba(34, 139, 84, 0.1); color: rgb(34, 110, 70);
  font-weight: 600;
}
.rsm-product-meta__tag--ref {
  font-weight: 600;
}

/* Caja CTA en cabecera */
.rsm-product-cta {
  border: 1px solid var(--rsm-border-soft);
  border-radius: 12px;
  padding: 1.5rem;
  background: var(--rsm-bg-faint);
}

/* Descripción larga del producto */
.rsm-prose {
  font-size: 1rem; line-height: 1.75; color: var(--rsm-text);
}
.rsm-prose p { margin: 0 0 1rem; }
.rsm-prose ul {
  margin: 0 0 1.25rem; padding-left: 0;
  list-style: none;
}
.rsm-prose ul li {
  position: relative; padding-left: 1.6rem; margin-bottom: 0.4rem;
}
.rsm-prose ul li::before {
  content: ""; position: absolute;
  left: 0; top: 0.7em;
  width: 14px; height: 1px;
  background: var(--rsm-orange);
}
.rsm-prose ul li strong { color: var(--rsm-ink); font-weight: 600; }
.rsm-prose h3 {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 1.125rem; letter-spacing: -0.01em;
  margin: 1.75rem 0 0.75rem;
}

/* Bloque marca destacada */
.rsm-brand-block {
  display: grid; grid-template-columns: auto 1fr auto; gap: 1.75rem;
  align-items: center; padding: 1.75rem 2rem;
  background: var(--rsm-bg-soft); border-radius: 12px;
}
@media (max-width: 720px) {
  .rsm-brand-block { grid-template-columns: 1fr; text-align: left; gap: 1rem; padding: 1.5rem; }
}
.rsm-brand-block__logo {
  width: 140px; height: 80px;
  background: #fff; border-radius: 8px; border: 1px solid var(--rsm-border-soft);
  display: flex; align-items: center; justify-content: center;
  padding: 12px 18px; flex-shrink: 0;
}
.rsm-brand-block__logo img {
  max-width: 100%; max-height: 100%; object-fit: contain;
  filter: grayscale(1) contrast(1.05);
}

/* Bloque descargas */
.rsm-download {
  display: flex; align-items: center; gap: 1rem;
  padding: 1rem 1.25rem; background: #fff;
  border: 1px solid var(--rsm-border-soft); border-radius: 8px;
  text-decoration: none; color: inherit;
  transition: border-color 150ms ease, transform 150ms ease;
}
.rsm-download:hover { border-color: var(--rsm-orange); transform: translateX(2px); }
.rsm-download__icon {
  width: 44px; height: 44px; border-radius: 6px;
  background: rgba(255,92,0,0.08); color: var(--rsm-orange);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.rsm-download__body { flex: 1; min-width: 0; }
.rsm-download__title {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 0.95rem; letter-spacing: -0.01em; margin-bottom: 0.1rem;
}
.rsm-download__meta {
  font-family: var(--rsm-font-mono); font-size: 0.72rem;
  color: var(--rsm-text-muted); letter-spacing: 0.04em; text-transform: uppercase;
}
.rsm-download__arrow {
  font-family: var(--rsm-font-display); font-size: 1.1rem;
  color: var(--rsm-text-faint);
}
.rsm-download:hover .rsm-download__arrow { color: var(--rsm-orange); }

/* Bloque ayuda */
.rsm-help-grid {
  display: grid; gap: 0.75rem;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.rsm-help-card {
  padding: 1.25rem 1.5rem; background: #fff;
  border: 1px solid var(--rsm-border-soft); border-radius: 10px;
  display: flex; flex-direction: column; gap: 0.45rem;
  text-decoration: none; color: inherit;
  transition: all 150ms ease;
}
.rsm-help-card:hover {
  border-color: var(--rsm-orange);
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(255,92,0,0.08);
}
.rsm-help-card__eyebrow {
  font-family: var(--rsm-font-mono); font-size: 0.7rem;
  letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--rsm-orange-700); display: flex; align-items: center; gap: 0.5rem;
}
.rsm-help-card__title {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 1.1rem; line-height: 1.2; letter-spacing: -0.01em;
}
.rsm-help-card__sub { font-size: 0.85rem; color: var(--rsm-text-muted); }

/* Strip disponibilidad */
.rsm-availability {
  display: flex; flex-wrap: wrap; gap: 1.25rem 2.5rem;
  align-items: center;
  padding: 1.25rem 1.75rem;
  background: var(--rsm-ink); color: rgba(255,255,255,0.85);
  border-radius: 10px;
}
.rsm-availability__row {
  display: flex; align-items: center; gap: 0.65rem;
  font-family: var(--rsm-font-display); font-size: 0.85rem; font-weight: 500;
}
.rsm-availability__row svg { color: var(--rsm-orange); width: 18px; height: 18px; flex-shrink: 0; }

/* ═══════════════════════════════════════════════════════════════
   PRESUPUESTO — carrito multipágina
   Estructura:
   - Botón "Mi lista" en header (con badge)
   - Mini-botón "+" sobre cada tarjeta de producto
   - Drawer lateral con la lista + formulario + confirmación
   - Toast al añadir
   ═══════════════════════════════════════════════════════════════ */

/* Botón "Mi lista" en el header */
.rsm-cart-btn {
  position: relative;
  display: inline-flex; align-items: center; gap: 0.5rem;
  padding: 0 0.9rem; height: 2.625rem;
  border: 1.5px solid currentColor; opacity: 0.7;
  background: transparent; color: inherit;
  border-radius: 999px; cursor: pointer;
  font-family: var(--rsm-font-display); font-weight: 600;
  font-size: 0.8125rem;
  transition: opacity 150ms ease, background 150ms ease, border-color 150ms ease;
}
.rsm-cart-btn:hover { opacity: 1; }
.rsm-cart-btn[data-cart-count]:not([data-cart-count="0"]) {
  border-color: var(--rsm-orange);
  background: var(--rsm-orange);
  color: #fff; opacity: 1;
}
.rsm-cart-btn svg { width: 16px; height: 16px; }
.rsm-cart-btn__badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px;
  background: rgba(255,255,255,0.18); color: inherit;
  font-family: var(--rsm-font-mono); font-size: 0.7rem; font-weight: 700;
}
.rsm-cart-btn[data-cart-count="0"] .rsm-cart-btn__badge { display: none; }

/* Mini-botón "+" sobre tarjeta de producto */
.rsm-card-add {
  position: absolute; top: 10px; right: 10px; z-index: 3;
  width: 32px; height: 32px; border-radius: 999px;
  background: #fff; border: 1.5px solid var(--rsm-border);
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--rsm-ink); cursor: pointer;
  font-family: var(--rsm-font-display); font-size: 16px; font-weight: 600;
  opacity: 0; transform: translateY(-2px);
  transition: all 180ms ease;
  box-shadow: 0 4px 10px rgba(0,0,0,0.06);
}
.rsm-card:hover .rsm-card-add { opacity: 1; transform: none; }
.rsm-card-add:hover {
  background: var(--rsm-orange); border-color: var(--rsm-orange); color: #fff;
  transform: scale(1.08);
}
.rsm-card-add.is-added {
  background: var(--rsm-orange); border-color: var(--rsm-orange); color: #fff;
  opacity: 1; transform: none;
}
.rsm-card-add svg { width: 14px; height: 14px; }

/* Tooltip flotante (posicionado por JS con position: fixed, escapa de overflow:hidden) */
.rsm-tooltip-fly {
  position: fixed; z-index: 130;
  background: var(--rsm-ink); color: #fff;
  font-family: var(--rsm-font-display); font-size: 0.72rem; font-weight: 500;
  letter-spacing: 0.01em;
  padding: 5px 9px; border-radius: 4px; white-space: nowrap;
  opacity: 0; transform: translateY(2px);
  transition: opacity 140ms ease, transform 140ms ease;
  pointer-events: none;
  box-shadow: 0 6px 14px rgba(0,0,0,0.22);
}
.rsm-tooltip-fly.is-visible { opacity: 1; transform: none; }
.rsm-tooltip-fly::after {
  content: ''; position: absolute;
  top: 100%; right: var(--arrow-right, 10px);
  border: 5px solid transparent; border-top-color: var(--rsm-ink);
}
.rsm-tooltip-fly[data-pos="below"]::after {
  top: auto; bottom: 100%;
  border-top-color: transparent; border-bottom-color: var(--rsm-ink);
}

/* En táctil, sin tooltip */
@media (hover: none) {
  .rsm-card-add { opacity: 1; transform: none; }
}

/* Drawer lateral del carrito */
.rsm-cart-drawer {
  position: fixed; top: 0; right: 0; height: 100dvh;
  width: min(480px, 100vw); background: #fff; color: var(--rsm-ink);
  z-index: 95; box-shadow: -20px 0 60px rgba(0,0,0,0.18);
  transform: translateX(100%); transition: transform 320ms cubic-bezier(.22,.61,.36,1);
  display: flex; flex-direction: column;
}
.rsm-cart-drawer.is-open { transform: translateX(0); }
.rsm-cart-drawer__head {
  padding: 1.5rem 1.75rem 1.25rem;
  border-bottom: 1px solid var(--rsm-border-soft);
  display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem;
}
.rsm-cart-drawer__head .rsm-eyebrow { margin-bottom: 0.25rem; }
.rsm-cart-drawer__head h3 {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 1.375rem; letter-spacing: -0.02em; line-height: 1.15;
  margin: 0;
}
.rsm-cart-drawer__sub {
  font-size: 0.8rem; color: var(--rsm-text-muted); margin-top: 0.35rem;
}
.rsm-cart-drawer__close {
  width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid var(--rsm-border); background: #fff;
  cursor: pointer; font-size: 20px; line-height: 1; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
}
.rsm-cart-drawer__body { flex: 1 1 auto; overflow-y: auto; padding: 1.25rem 1.75rem; }
.rsm-cart-drawer__foot {
  padding: 1.25rem 1.75rem 1.5rem;
  border-top: 1px solid var(--rsm-border-soft);
  display: flex; flex-direction: column; gap: 0.5rem;
  background: var(--rsm-bg);
}

/* Empty state */
.rsm-cart-empty { text-align: center; padding: 3rem 1rem; }
.rsm-cart-empty__icon {
  width: 76px; height: 76px; margin: 0 auto 1.25rem;
  border-radius: 50%; background: var(--rsm-bg-soft);
  display: flex; align-items: center; justify-content: center;
  color: var(--rsm-text-faint);
}
.rsm-cart-empty h4 {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 1.125rem; margin: 0 0 0.5rem;
}
.rsm-cart-empty p {
  font-size: 0.9rem; color: var(--rsm-text-muted);
  max-width: 30ch; margin: 0 auto 1.5rem; line-height: 1.55;
}

/* Item de lista */
.rsm-cart-item {
  display: grid; grid-template-columns: 64px 1fr; gap: 0.875rem;
  padding: 1rem 0; border-bottom: 1px solid var(--rsm-border-soft);
}
.rsm-cart-item:first-child { padding-top: 0.25rem; }
.rsm-cart-item:last-child { border-bottom: 0; }
.rsm-cart-item__thumb {
  width: 64px; height: 64px; border-radius: 6px;
  background: var(--rsm-bg-soft); border: 1px solid var(--rsm-border-soft);
  display: flex; align-items: center; justify-content: center;
  color: var(--rsm-text-faint); flex-shrink: 0;
}
.rsm-cart-item__thumb svg { width: 28px; height: 28px; opacity: 0.5; }
.rsm-cart-item__body { display: flex; flex-direction: column; gap: 0.3rem; min-width: 0; }
.rsm-cart-item__cat {
  font-family: var(--rsm-font-mono); font-size: 0.65rem;
  text-transform: uppercase; letter-spacing: 0.06em; color: var(--rsm-text-faint);
}
.rsm-cart-item__name {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 0.95rem; line-height: 1.2; letter-spacing: -0.01em;
  color: var(--rsm-ink);
}
.rsm-cart-item__brand { font-size: 0.75rem; color: var(--rsm-text-muted); }
.rsm-cart-item__controls {
  display: flex; align-items: center; gap: 0.5rem; margin-top: 0.35rem;
}

/* Stepper de cantidad */
.rsm-qty {
  display: inline-flex; align-items: stretch;
  border: 1px solid var(--rsm-border); border-radius: 6px;
  overflow: hidden; background: #fff;
}
.rsm-qty button {
  width: 28px; height: 28px; border: 0; background: #fff;
  color: var(--rsm-ink); cursor: pointer; font-size: 14px; font-weight: 600;
  font-family: var(--rsm-font-display);
  transition: background 120ms ease;
}
.rsm-qty button:hover { background: var(--rsm-bg-soft); }
.rsm-qty input {
  width: 38px; border: 0; border-left: 1px solid var(--rsm-border);
  border-right: 1px solid var(--rsm-border); text-align: center;
  font-family: var(--rsm-font-mono); font-size: 0.8rem; outline: none;
}
.rsm-cart-item__remove {
  background: transparent; border: 0; color: var(--rsm-text-faint);
  font-family: var(--rsm-font-mono); font-size: 0.7rem;
  letter-spacing: 0.06em; text-transform: uppercase;
  cursor: pointer; padding: 0.25rem 0;
}
.rsm-cart-item__remove:hover { color: var(--rsm-orange-700); }

/* Resumen mini en form */
.rsm-cart-summary {
  background: var(--rsm-bg-soft); border-radius: 8px; padding: 1rem 1.25rem;
  margin-bottom: 1.5rem;
}
.rsm-cart-summary__head {
  display: flex; justify-content: space-between; align-items: center;
  font-family: var(--rsm-font-mono); font-size: 0.7rem;
  text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--rsm-text-muted); margin-bottom: 0.5rem;
}
.rsm-cart-summary__list {
  list-style: none; padding: 0; margin: 0; font-size: 0.85rem;
  max-height: 140px; overflow-y: auto;
}
.rsm-cart-summary__list li {
  display: flex; justify-content: space-between; gap: 0.5rem;
  padding: 0.25rem 0;
}
.rsm-cart-summary__list li span:last-child {
  font-family: var(--rsm-font-mono); color: var(--rsm-text-muted); flex-shrink: 0;
}

/* Form fields dentro del drawer */
.rsm-cart-field { display: flex; flex-direction: column; gap: 0.4rem; margin-bottom: 1rem; }
.rsm-cart-field > label {
  font-family: var(--rsm-font-mono); font-size: 0.7rem;
  letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--rsm-text-muted);
}
.rsm-cart-field--grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; }

/* Confirmación */
.rsm-cart-sent {
  padding: 2rem 1rem; text-align: center;
}
.rsm-cart-sent__icon {
  width: 64px; height: 64px; border-radius: 50%;
  background: rgba(255,92,0,0.12); color: var(--rsm-orange);
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 1.25rem;
}
.rsm-cart-sent__icon svg { width: 32px; height: 32px; }
.rsm-cart-sent h4 {
  font-family: var(--rsm-font-display); font-weight: 700;
  font-size: 1.5rem; letter-spacing: -0.02em; margin: 0 0 0.5rem;
}
.rsm-cart-sent p { font-size: 0.95rem; color: var(--rsm-text-muted); line-height: 1.6; max-width: 36ch; margin: 0 auto; }
.rsm-cart-sent__ref {
  display: inline-block; margin-top: 1.25rem;
  padding: 0.5rem 0.875rem; background: var(--rsm-bg-soft);
  border-radius: 4px; font-family: var(--rsm-font-mono);
  font-size: 0.78rem; letter-spacing: 0.04em;
}

/* Toast al añadir */
.rsm-toast {
  position: fixed; left: 50%; bottom: 30px; transform: translate(-50%, 30px);
  z-index: 120;
  display: inline-flex; align-items: center; gap: 0.75rem;
  padding: 0.85rem 1.25rem; background: var(--rsm-ink); color: #fff;
  border-radius: 999px;
  box-shadow: 0 12px 32px rgba(0,0,0,0.25);
  font-family: var(--rsm-font-display); font-size: 0.875rem; font-weight: 500;
  opacity: 0; pointer-events: none;
  transition: transform 280ms cubic-bezier(.22,.61,.36,1), opacity 200ms ease;
}
.rsm-toast.is-visible { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.rsm-toast__check {
  width: 22px; height: 22px; border-radius: 50%;
  background: var(--rsm-orange); display: inline-flex;
  align-items: center; justify-content: center; flex-shrink: 0;
}
.rsm-toast__check svg { width: 14px; height: 14px; color: #fff; }
.rsm-toast a {
  font-weight: 600; color: var(--rsm-orange); text-decoration: none;
  padding-left: 0.5rem; border-left: 1px solid rgba(255,255,255,0.18); margin-left: 0.25rem;
}
.rsm-toast a:hover { color: #fff; }

/* Mobile: ocultar etiqueta del botón header, mostrar solo icono */
@media (max-width: 1023px) {
  .rsm-cart-btn__label { display: none; }
  .rsm-cart-btn { padding: 0; width: var(--rsm-header-ctl-h); justify-content: center; }
}
@media (max-width: 639px) {
  .rsm-cart-drawer { width: 100vw; }
  .rsm-cart-drawer__head, .rsm-cart-drawer__body, .rsm-cart-drawer__foot { padding-left: 1.25rem; padding-right: 1.25rem; }
}

/* ============================================================
   CARDS DE CATEGORÍA — componente único (home + /catalogo/)
   Fondo tintado (no blanco) para que despeguen del fondo de página.
   ============================================================ */
.rsm-cat-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
@media (min-width: 640px)  { .rsm-cat-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .rsm-cat-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1280px) { .rsm-cat-grid { grid-template-columns: repeat(5, 1fr); } }

.rsm-cat-card {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: 250px;
  padding: 1.6rem 1.4rem 1.3rem;
  background: var(--rsm-bg-soft);
  border: 1px solid var(--rsm-border-soft);
  border-radius: 10px;
  text-decoration: none;
  color: inherit;
  overflow: hidden;
  transition: background .18s ease, border-color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.rsm-cat-card::before {
  content: "";
  position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: var(--rsm-orange);
  transform: scaleX(.28);
  transform-origin: left;
  transition: transform .28s cubic-bezier(.2,.7,.3,1);
}
.rsm-cat-card:hover {
  background: #fff;
  border-color: var(--rsm-border);
  transform: translateY(-3px);
  box-shadow: 0 14px 30px -18px rgba(0,0,0,.35);
}
.rsm-cat-card:hover::before { transform: scaleX(1); }
.rsm-cat-card:focus-visible { outline: 2px solid var(--rsm-orange); outline-offset: 3px; }

.rsm-cat-card__title {
  font-family: var(--rsm-font-display);
  font-weight: 700; font-size: 1.45rem; line-height: 1.12;
  letter-spacing: -0.02em;
  margin-bottom: .45rem;
}
.rsm-cat-card__meta {
  font-family: var(--rsm-font-mono);
  font-size: 11px; color: var(--rsm-text-muted);
  margin-bottom: .9rem;
}
.rsm-cat-card__desc {
  font-size: 13px; line-height: 1.55; color: var(--rsm-text-muted);
  margin: 0;
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden;
}
.rsm-cat-card__cta {
  margin-top: 1.4rem;
  font-size: 13px; font-weight: 600; color: var(--rsm-orange-700);
}

/* ============================================================
   SIDEBAR DEL CATÁLOGO — árbol con jerarquía visible
   ============================================================ */
.rsm-tree {
  list-style: none; margin: 0; padding: .35rem 0 0;
  font-family: var(--rsm-font-display);
  border-top: 1px solid var(--rsm-border);
}
.rsm-tree__item > a {
  display: flex; align-items: baseline; gap: .5rem;
  text-decoration: none; color: inherit;
  padding: .5rem .6rem;
  border-radius: 6px;
  transition: background .15s ease, color .15s ease;
}
.rsm-tree__item > a:hover { background: var(--rsm-bg-soft); color: var(--rsm-ink); }
.rsm-tree__label { flex: 1 1 auto; }
.rsm-tree__count {
  font-family: var(--rsm-font-mono); font-size: 10px;
  color: var(--rsm-text-faint); flex: 0 0 auto;
}

/* Rama de primer nivel: separador + peso */
.rsm-tree__top { border-top: 1px solid var(--rsm-border-soft); }
.rsm-tree__top:first-child { border-top: 0; }
.rsm-tree__top > a {
  font-weight: 600; font-size: .95rem;
  color: var(--rsm-text-muted);
  padding-top: .7rem; padding-bottom: .7rem;
}
.rsm-tree__top.is-open > a { color: var(--rsm-ink); font-weight: 700; }
.rsm-tree__arrow {
  flex: 0 0 auto; width: .85rem;
  font-size: 10px; color: var(--rsm-orange);
  transition: transform .18s ease;
}

/* Bloque de hijos de la rama abierta */
.rsm-tree__branch {
  list-style: none; margin: 0 0 .5rem; padding: .15rem 0 .15rem .55rem;
  border-left: 2px solid var(--rsm-orange);
  margin-left: .6rem;
}
.rsm-tree__sub > a { font-size: .875rem; color: var(--rsm-text-muted); padding: .32rem .5rem; }
.rsm-tree__leaf > a { font-size: .8125rem; color: var(--rsm-text-faint); padding: .28rem .5rem .28rem 1.1rem; }
.rsm-tree__item.is-current > a {
  background: var(--rsm-orange-bg);
  color: var(--rsm-orange-700);
  font-weight: 700;
}
.rsm-tree__item.is-current > a .rsm-tree__count { color: var(--rsm-orange-700); }

/* Caja del aside */
.rsm-catalog-aside {
  background: var(--rsm-bg-faint);
  border: 1px solid var(--rsm-border-soft);
  border-radius: 10px;
  padding: 1.25rem 1.1rem;
}
.rsm-catalog-aside__sep {
  border: 0; border-top: 1px solid var(--rsm-border-soft);
  margin: 1.35rem 0 1.1rem;
}
.rsm-brandlist { list-style: none; margin: 0; padding: 0; }
.rsm-brandlist a {
  display: block; text-decoration: none; font-size: .875rem;
  color: var(--rsm-text-muted); padding: .3rem .6rem; border-radius: 6px;
}
.rsm-brandlist a:hover { background: var(--rsm-bg-soft); color: var(--rsm-ink); }
.rsm-brandlist a.is-active { color: var(--rsm-orange-700); font-weight: 700; background: var(--rsm-orange-bg); }
.rsm-tree__leaves { list-style: none; margin: 0 0 .25rem; padding: 0; }

/* ============================================================
   FICHA DE PROYECTO — hero y tabla de equipo técnico
   ============================================================ */
.rsm-proy-hero {
  position: relative;
  aspect-ratio: 16 / 7;
  min-height: 320px;
  max-height: 540px;
  overflow: hidden;
}
.rsm-proy-hero__img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  /* Las fotos de escenario tienen la acción en la mitad inferior del encuadre:
     al recortar en apaisado hay que anclar por debajo del centro. */
  object-position: center 60%;
}
.rsm-proy-hero__veil {
  position: absolute; inset: 0;
  background: linear-gradient(to bottom,
    rgba(0,0,0,.35) 0%,
    rgba(0,0,0,.10) 30%,
    rgba(0,0,0,.55) 72%,
    rgba(0,0,0,.92) 100%);
}
.rsm-proy-hero__inner {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding-top: 2.5rem; padding-bottom: 2.25rem;
}
@media (max-width: 767px) {
  .rsm-proy-hero { aspect-ratio: 4 / 3; max-height: 420px; }
}

/* Tabla de datos (equipo técnico) */
.rsm-table-wrap {
  background: #fff;
  border: 1px solid var(--rsm-border-soft);
  border-radius: 10px;
  overflow-x: auto;
}
.rsm-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .9375rem;
  min-width: 640px;
}
.rsm-table thead th {
  position: sticky; top: 0;
  background: var(--rsm-bg-soft);
  font-family: var(--rsm-font-mono);
  font-size: 10px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--rsm-text-muted);
  text-align: left;
  padding: .85rem 1.1rem;
  border-bottom: 1px solid var(--rsm-border);
  white-space: nowrap;
}
.rsm-table td { padding: .85rem 1.1rem; vertical-align: baseline; color: var(--rsm-text-muted); }
.rsm-table tbody tr + tr td { border-top: 1px solid var(--rsm-border-soft); }
/* Primera fila de cada familia: separador más marcado */
.rsm-table tbody tr.is-group-start + tr td { border-top-color: var(--rsm-border-soft); }
.rsm-table tbody tr.is-group-start td { border-top: 1px solid var(--rsm-border); }
.rsm-table tbody tr:first-child td { border-top: 0; }
.rsm-table tbody tr:hover td { background: var(--rsm-bg-faint); }
.rsm-table__fam {
  font-family: var(--rsm-font-display); font-weight: 700;
  color: var(--rsm-ink); white-space: nowrap;
}
.rsm-table__mono { font-family: var(--rsm-font-mono); font-size: .8125rem; }
.rsm-table__num  { text-align: right; }
.rsm-table__uds  {
  font-family: var(--rsm-font-mono); font-weight: 700;
  color: var(--rsm-orange-700); white-space: nowrap;
}

/* Móvil: la tabla se apila en fichas, cada celda con su etiqueta */
@media (max-width: 639px) {
  .rsm-table-wrap { overflow-x: visible; border: 0; background: transparent; }
  .rsm-table { min-width: 0; display: block; }
  .rsm-table thead { display: none; }
  .rsm-table tbody, .rsm-table tr, .rsm-table td { display: block; width: 100%; }
  .rsm-table tbody tr {
    background: #fff; border: 1px solid var(--rsm-border-soft);
    border-radius: 8px; padding: .35rem .25rem; margin-bottom: .6rem;
  }
  .rsm-table tbody tr td, .rsm-table tbody tr + tr td, .rsm-table tbody tr.is-group-start td { border-top: 0; }
  .rsm-table td {
    display: flex; justify-content: space-between; gap: 1rem;
    padding: .4rem .85rem; text-align: left;
  }
  .rsm-table td:empty { display: none; }
  .rsm-table td::before {
    content: attr(data-th);
    font-family: var(--rsm-font-mono); font-size: 10px;
    letter-spacing: .12em; text-transform: uppercase;
    color: var(--rsm-text-faint); flex: 0 0 auto;
  }
}

/* Desarrollo del caso de éxito (bloques narrativos del documento del cliente) */
.rsm-caso { max-width: 820px; }
.rsm-caso__bloque + .rsm-caso__bloque { margin-top: 3rem; }
.rsm-caso__titulo {
  font-family: var(--rsm-font-display);
  font-weight: 700; font-size: clamp(1.35rem, 2.2vw, 1.75rem);
  letter-spacing: -0.02em; line-height: 1.2;
  margin: 0 0 1rem;
  padding-left: .9rem;
  border-left: 3px solid var(--rsm-orange);
}
.rsm-caso__texto p {
  font-size: 1rem; line-height: 1.75; color: var(--rsm-text-muted);
  margin: 0 0 1rem;
}
.rsm-caso__texto p:last-child { margin-bottom: 0; }
.rsm-caso__lista { list-style: none; margin: 1.25rem 0 0; padding: 0; }
.rsm-caso__lista li {
  position: relative;
  padding: .5rem 0 .5rem 1.6rem;
  font-size: .9375rem; line-height: 1.6; color: var(--rsm-text-muted);
  border-top: 1px solid var(--rsm-border-soft);
}
.rsm-caso__lista li:first-child { border-top: 0; }
.rsm-caso__lista li::before {
  content: "+";
  position: absolute; left: .35rem; top: .5rem;
  font-family: var(--rsm-font-mono); color: var(--rsm-orange);
}

/* Prosa de páginas corporativas (texto largo del cliente en varios párrafos) */
.rsm-prose p {
  font-size: 1rem; line-height: 1.75; color: var(--rsm-text-muted);
  margin: 0 0 1.05rem;
}
.rsm-prose p:last-child { margin-bottom: 0; }
.rsm-prose--sm p { font-size: .875rem; line-height: 1.7; margin-bottom: .85rem; }
