/* =============================================================================
   Right Step — theme.css · "Confianza azul" (paleta corporativa Webflow)
   Design system + componentes. Mobile-first. Fraunces + Inter, azul #2F6BFF.
   ========================================================================== */

:root{
  /* El sitio es claro por diseño y no tiene variante oscura. Declararlo evita que
     Chrome en Android (auto dark theme) invente una versión oscurecida con colores
     y contrastes que nadie diseñó. Decisión del 2026-07-26: se mantiene el tono claro. */
  color-scheme: light;
  /* Marca / primario — azul corporativo (paleta Webflow) */
  --rs-teal:#2F6BFF; --rs-teal-600:#1F57E6; --rs-teal-700:#123FB0; --rs-teal-50:#EEF3FF;
  /* CTA — mismo azul (color de acción único, estilo Webflow) */
  --rs-cta:#2F6BFF; --rs-cta-600:#1F57E6; --rs-cta-50:#EEF3FF;
  /* Neutros */
  --rs-ink:#0F1B2D; --rs-body:#5A6B80; --rs-muted:#8695A8;
  --rs-bg:#FFFFFF; --rs-surface:#FFFFFF; --rs-bg-soft:#F7F9FC;
  /* Texto/superficie sobre fondo oscuro (paneles, footer, bandas invertidas) */
  --rs-on-dark:#FFFFFF;
  --rs-on-dark-muted:#9FB0C3;              /* texto secundario sobre navy (7.73:1 ✓) */
  --rs-on-dark-soft:rgba(255,255,255,.08); /* superficie sutil sobre navy (píldoras, social) */
  --rs-line:#E9EEF5; --rs-line-soft:#F3F6FC;
  /* Semánticos */
  --rs-emerald:#0FB37A; --rs-amber:#F6A609; --rs-wa:#25D366; --rs-ink-panel:#0F1B2D;
  /* Acentos de card por vertical (§4) — tile usa el color brillante, link usa la variante -700 (AA) */
  --rs-acc-tax:#2F6BFF;    --rs-acc-tax-50:#EEF3FF;    --rs-acc-tax-700:#123FB0;
  --rs-acc-book:#0FB37A;   --rs-acc-book-50:#E6F7F0;   --rs-acc-book-700:#0A7D56;
  --rs-acc-credit:#7A5CFF; --rs-acc-credit-50:#F1EDFF; --rs-acc-credit-700:#5B3FE0;
  --rs-acc-llc:#123FB0;    --rs-acc-llc-50:#E7EDFB;    --rs-acc-llc-700:#123FB0;
  --rs-acc-ins:#0EA5B7;    --rs-acc-ins-50:#E3F5F7;    --rs-acc-ins-700:#0B7C8A;
  /* Tipografía */
  --rs-font-display:'Sora','Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --rs-font-body:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  /* Escala tipográfica (§1) — más suave: H1 máx 57.6px, pasos ×1.5 luego ×1.22 */
  --rs-h1:clamp(2.3rem,5.0vw,3.6rem);
  --rs-h2:clamp(1.8rem,3.2vw,2.4rem);
  --rs-h3:clamp(1.35rem,2.0vw,1.6rem);
  --rs-h4:clamp(1.15rem,1.4vw,1.3rem);
  /* Line-heights por tamaño (§2) */
  --rs-lh-base:1.6; --rs-lh-sm:1.5; --rs-lh-xs:1.45; --rs-lh-prose:1.7;
  /* Radios / sombras / layout */
  --rs-r-sm:12px; --rs-r:20px; --rs-r-lg:28px; --rs-pill:999px;
  --rs-shadow:0 1px 2px rgba(15,27,45,.05),0 12px 32px rgba(15,27,45,.08);
  --rs-shadow-lg:0 30px 60px rgba(15,27,45,.14);
  --rs-maxw:1160px; --rs-maxw-narrow:720px;
  --rs-pad:clamp(64px,9vw,112px);
  --rs-header-h:74px;
  --rs-ctl-h:46px;   /* alto canónico de los controles del header: teléfono, burger, idioma */
}

/* ---------- Reset acotado ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;font-family:var(--rs-font-body);font-size:1.0625rem;line-height:var(--rs-lh-base);
  color:var(--rs-ink);background:var(--rs-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:clip}
img,svg,video{max-width:100%;height:auto;display:block}
picture{display:contents}
a{color:var(--rs-teal);text-decoration:none}
a:hover{color:var(--rs-teal-600)}
h1,h2,h3,h4{font-family:var(--rs-font-display);color:var(--rs-ink);font-weight:700;margin:0 0 .4em}
h1{font-size:var(--rs-h1);letter-spacing:-.03em;font-weight:800;line-height:1.06}
h2{font-size:var(--rs-h2);letter-spacing:-.02em;line-height:1.14}
h3{font-size:var(--rs-h3);letter-spacing:-.015em;line-height:1.25}
h4{font-size:var(--rs-h4);letter-spacing:-.01em;line-height:1.3}
p{margin:0 0 1rem}
ul,ol{margin:0 0 1rem;padding-left:1.2rem}
button{font:inherit}
:focus-visible{outline:2.5px solid var(--rs-teal);outline-offset:2px;border-radius:4px}
.rs-ic{flex:none}
/* Salvaguardas de overflow: ningún elemento supera 100vw (complementa overflow-x:clip) */
h1,h2,h3,h4,p,li,summary,blockquote,td,th{overflow-wrap:break-word}
.rs-footer__nap a,.rs-prose a{word-break:break-word}
.rs-highlight>div,.rs-why__item>div,.rs-step>div,.rs-advisor__list li,.rs-nap li{min-width:0}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-999px;top:0;z-index:200;background:var(--rs-ink);color:#fff;padding:12px 18px;border-radius:0 0 10px 0}
.skip-link:focus{left:0;color:#fff}

/* ---------- Layout ---------- */
.rs-wrap{max-width:var(--rs-maxw);margin:0 auto;padding-inline:24px}
.rs-narrow{max-width:var(--rs-maxw-narrow);margin-inline:auto}
.rs-section{padding-block:var(--rs-pad)}
.rs-section--tight{padding-block:clamp(48px,6vw,72px)}
.rs-section--soft{background:var(--rs-bg-soft)}
.rs-section--panel{background:var(--rs-ink-panel);color:#C3CEDA}
.rs-section--panel h2,.rs-section--panel h3{color:#fff}
.rs-center{text-align:center}
.rs-eyebrow{display:inline-block;font-family:var(--rs-font-body);font-size:.78rem;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;color:var(--rs-teal);margin-bottom:1rem}
.rs-section--panel .rs-eyebrow{color:#7FA0FF}
.rs-hero .rs-eyebrow,.rs-phero .rs-eyebrow{color:var(--rs-teal-700)}
.rs-lead{font-size:1.2rem;color:var(--rs-body);max-width:60ch;line-height:1.55}
.rs-center .rs-lead{margin-inline:auto}
.rs-section--panel .rs-lead{color:#A9B8CF}
.rs-head{margin-bottom:clamp(36px,5vw,56px)}
.rs-head--tight{margin-bottom:32px}
/* Fragmento resaltado del H1 del hero (mismo patrón en las dos homes). */
.rs-hl{color:var(--rs-teal)}
/* Enlaces "más" bajo un bloque centrado (stats, grid de posts). */
.rs-stats__more{margin-top:clamp(28px,4vw,40px)}
.rs-stats__more .rs-card__link{justify-content:center}
.rs-posts__more{margin-top:36px}

/* ---------- Botones (§3 — componente autónomo y autoritativo) ---------- */
/* Base: tamaño intermedio por defecto (min-height 48px táctil) */
.rs-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  font-family:var(--rs-font-body);font-weight:600;font-size:1rem;line-height:1;
  padding:14px 24px;border-radius:var(--rs-pill);border:1.5px solid transparent;
  cursor:pointer;transition:transform .2s ease,background .2s ease,box-shadow .2s ease,border-color .2s ease;
  text-decoration:none;min-height:48px}
.rs-btn .rs-ic{width:20px;height:20px}
.rs-btn:hover{transform:translateY(-2px)}
.rs-btn:active{transform:translateY(0)}
@media (prefers-reduced-motion:reduce){.rs-btn:hover,.rs-btn:active{transform:none}}
/* Estado deshabilitado (nuevo) */
.rs-btn:disabled,.rs-btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}
/* Foco visible por variante (el invert usa outline blanco para contraste sobre oscuro) */
.rs-btn:focus-visible{outline:2.5px solid var(--rs-teal);outline-offset:2px}
.rs-btn.rs-btn--ghost-invert:focus-visible{outline-color:#fff}

/* Tamaños (min-height táctil ≥44px siempre) */
.rs-btn.rs-btn--sm{padding:10px 18px;font-size:.9375rem;min-height:44px}
.rs-btn.rs-btn--sm .rs-ic{width:18px;height:18px}
.rs-btn.rs-btn--lg{padding:17px 32px;font-size:1.05rem;min-height:54px}
.rs-btn.rs-btn--lg .rs-ic{width:22px;height:22px}

/* Variantes de color como doble clase → especificidad (0,2,0), gana a `.contenedor a` (0,1,1) */
.rs-btn.rs-btn--cta{background:var(--rs-cta);color:#fff;border-color:var(--rs-cta)}
.rs-btn.rs-btn--cta:hover{background:var(--rs-cta-600);color:#fff;box-shadow:0 12px 26px rgba(47,107,255,.34)}
.rs-btn.rs-btn--wa{background:var(--rs-wa);color:#fff;border-color:var(--rs-wa)}
.rs-btn.rs-btn--wa:hover{background:#1FB958;color:#fff;box-shadow:0 12px 26px rgba(37,211,102,.3)}
/* El TEXTO va un tono más oscuro que el borde: el azul de marca sobre blanco da
   4,49:1 y WCAG AA pide 4,5 — fallaba por una centésima (auditado 2026-07-31).
   `--rs-teal-600` sube a 5,5:1 y la marca no cambia: el borde sigue siendo el
   azul de siempre y es el que define el color del botón a simple vista. */
.rs-btn.rs-btn--ghost{background:transparent;color:var(--rs-teal-600);border-color:var(--rs-teal)}
.rs-btn.rs-btn--ghost:hover{background:var(--rs-teal-50);color:var(--rs-teal-600)}
/* CTA secundario: outline claro y legible (peso menor que el primario sólido).
   Mismo criterio que --ghost: texto en el tono 600 para llegar a 5,5:1. El
   comentario anterior afirmaba "AA 4.7:1", pero la medición real dio 4,49. */
.rs-btn.rs-btn--cta-soft{background:var(--rs-surface);color:var(--rs-cta-600);border-color:var(--rs-cta)}
.rs-btn.rs-btn--cta-soft:hover{background:var(--rs-cta-50);color:var(--rs-cta-600);border-color:var(--rs-cta-600);box-shadow:0 8px 20px rgba(47,107,255,.16)}
.rs-btn.rs-btn--cta-soft .rs-ic{color:var(--rs-cta)}
.rs-btn.rs-btn--ghost-invert{background:transparent;color:#fff;border-color:rgba(255,255,255,.5)}
.rs-btn.rs-btn--ghost-invert:hover{background:rgba(255,255,255,.1);color:#fff;border-color:#fff}
.rs-btn-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:1.9rem}
.rs-center .rs-btn-row{justify-content:center}

/* ---------- Header ---------- */
.rs-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.85);
  backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid var(--rs-line);
  transition:transform .28s ease}
/* Se esconde al bajar y REAPARECE al subir (pedido del dueño, 2026-08-31: en móvil
   el header se comía casi un cuarto de la pantalla). Se oculta al bajar y no al
   revés porque quien sube está buscando el menú — esconderlo siempre obligaría a
   ir hasta arriba del todo para navegar.
   La clase la pone theme.js; sin JS el header se queda fijo como siempre. */
.rs-header--hidden{transform:translateY(-100%)}
/* Nunca se esconde con el menú abierto: el cajón cuelga de la altura del header
   (`inset:var(--rs-header-h) 0 0`) y quedaría una franja vacía arriba.
   El burger vive DENTRO del header, por eso :has() funciona. En navegadores sin
   :has() el respaldo es theme.js, que comprueba .rs-drawer.is-open al hacer scroll. */
.rs-header:has(.rs-burger[aria-expanded=true]){transform:none}
@media (prefers-reduced-motion:reduce){.rs-header{transition:none}}
/* Los enlaces internos (#tu-caso) no pueden quedar tapados por el header fijo. */
html{scroll-padding-top:calc(var(--rs-header-h) + 12px)}
/* …pero si el destino es una .rs-section, ese hueco SE SUMA al padding propio de
   la sección (--rs-pad, hasta 112px), y el visitante aterriza mirando una franja
   vacía de casi 200px. El scroll-margin negativo cancela el padding de la sección:
   el scroll acaba justo en el eyebrow, debajo del header. Solo para secciones que
   son destino de un botón — no se pone en .rs-section a lo bruto porque cambiaría
   el aterrizaje de cualquier ancla del sitio. */
.rs-anchor-tight{scroll-margin-top:calc(-1 * var(--rs-pad))}
.rs-header__bar{display:flex;align-items:center;gap:16px;min-height:var(--rs-header-h);
  max-width:var(--rs-maxw);margin:0 auto;padding-inline:24px}
.rs-brand{display:flex;align-items:center;gap:10px;flex:none}
.rs-brand img{height:38px;width:auto}
.rs-brand__word{font-family:var(--rs-font-display);font-weight:600;font-size:1.32rem;
  letter-spacing:-.02em;color:var(--rs-ink)}
.rs-nav{display:none}
.rs-nav ul{display:flex;gap:2px;list-style:none;margin:0;padding:0}
.rs-nav a{display:block;padding:9px 11px;border-radius:10px;color:var(--rs-ink);
  font-weight:500;font-size:.95rem;white-space:nowrap}
.rs-nav a:hover{background:var(--rs-teal-50);color:var(--rs-teal)}
/* Dropdown de "Servicios" (§6) — desktop hover/focus-within, CSS puro, degrada sin JS */
.rs-nav__has-sub{position:relative}
.rs-nav__has-sub>a{display:inline-flex;align-items:center;gap:5px}
.rs-nav__chev{width:12px;height:12px;flex:none;transition:transform .2s}
/* Especificidad (0,2,1) para ganarle a `.rs-nav ul{display:flex}` (0,1,1) → panel en columna */
.rs-nav ul.rs-nav__panel{position:absolute;top:100%;left:0;min-width:300px;list-style:none;margin:8px 0 0;padding:10px;
  background:#fff;border:1px solid var(--rs-line);border-radius:16px;box-shadow:var(--rs-shadow-lg);
  display:grid;gap:2px;opacity:0;visibility:hidden;transform:translateY(8px);
  transition:opacity .18s ease,transform .18s ease,visibility .18s ease}
.rs-nav__has-sub:hover>a .rs-nav__chev,
.rs-nav__has-sub:focus-within>a .rs-nav__chev{transform:rotate(180deg)}
.rs-nav .rs-nav__has-sub:hover .rs-nav__panel,
.rs-nav .rs-nav__has-sub:focus-within .rs-nav__panel{opacity:1;visibility:visible;transform:none}
.rs-nav .rs-nav__has-sub.is-force-closed .rs-nav__panel{opacity:0;visibility:hidden;transform:translateY(8px)}
.rs-nav__panel a{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:10px;
  font-size:.95rem;font-weight:500;color:var(--rs-ink);white-space:nowrap}
.rs-nav__panel a:hover{background:var(--rs-teal-50);color:var(--rs-teal-700)}
.rs-nav__panel a .rs-ic{width:18px;height:18px;flex:none;color:var(--rs-teal-700)}
.rs-nav__divider{border-top:1px solid var(--rs-line);margin:6px 4px}
@media (prefers-reduced-motion:reduce){.rs-nav__panel{transition:none}}
/* Navegación desktop: el único CTA de la barra es el teléfono. WhatsApp, Agenda
   y demás acciones viven en el hero, el drawer móvil y el footer. */
/* El margin-left:auto vive en .rs-lang (la bisagra de la barra), no acá: así el
   selector de idioma es un único nodo válido en los dos breakpoints. */
.rs-header__cta{display:none;margin-left:0;align-items:center;gap:10px}
.rs-header__cta .rs-phone{display:inline-flex;align-items:center;gap:8px;font-weight:600;
  color:var(--rs-ink);font-size:1rem;white-space:nowrap;padding:9px 14px;border-radius:12px;
  border:1px solid var(--rs-line);transition:background .2s,border-color .2s,color .2s}
.rs-header__cta .rs-phone:hover{background:var(--rs-teal-50);border-color:var(--rs-teal);color:var(--rs-teal-700)}
.rs-header__cta .rs-phone .rs-ic{color:var(--rs-teal)}
.rs-header__mobile{margin-left:0;display:flex;align-items:center;gap:10px}
/* Acceso rápido a llamada en el header móvil (solo icono) */
.rs-phone-ic{display:inline-flex;align-items:center;justify-content:center;
  width:var(--rs-ctl-h);height:var(--rs-ctl-h);border:1px solid var(--rs-line);border-radius:12px;
  background:var(--rs-surface);color:var(--rs-teal);transition:background .2s,border-color .2s}
.rs-phone-ic:hover{background:var(--rs-teal-50);border-color:var(--rs-teal);color:var(--rs-teal-700)}
.rs-phone-ic .rs-ic{width:20px;height:20px}
.rs-burger{display:inline-flex;flex-direction:column;justify-content:center;gap:5px;
  width:var(--rs-ctl-h);height:var(--rs-ctl-h);border:1px solid var(--rs-line);border-radius:12px;background:var(--rs-surface);cursor:pointer}
.rs-burger span{display:block;width:20px;height:2px;background:var(--rs-ink);margin-inline:auto;transition:.25s}
.rs-burger[aria-expanded=true] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.rs-burger[aria-expanded=true] span:nth-child(2){opacity:0}
.rs-burger[aria-expanded=true] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------- Selector de idioma (docs/build/components/language-switcher.md) ----------
   Control segmentado de 2 opciones siempre visibles. Sin JS, sin dropdown, sin banderas.
   Misma altura/radio/borde/superficie que .rs-phone y .rs-burger: lee como una zona de
   utilidades homogénea, no como un widget de plugin encima del header. */
.rs-lang{margin-left:auto;flex:none;display:inline-flex;align-items:center;gap:2px;
  height:var(--rs-ctl-h);padding:3px;border:1px solid var(--rs-line);border-radius:12px;
  background:var(--rs-surface)}
.rs-lang__opt{position:relative;display:inline-flex;align-items:center;justify-content:center;
  min-width:40px;height:calc(var(--rs-ctl-h) - 8px);padding:0 12px;border-radius:9px;
  font-family:var(--rs-font-body);font-size:.875rem;font-weight:600;letter-spacing:.04em;
  color:var(--rs-body);background:transparent;
  transition:background .18s ease,color .18s ease}
/* Área táctil ≥44×46 sin agrandar la caja visual (house rule del design system). */
.rs-lang__opt::after{content:"";position:absolute;inset:-4px -2px}
a.rs-lang__opt:hover{background:var(--rs-line-soft);color:var(--rs-ink)}
a.rs-lang__opt:active{background:var(--rs-teal-50);color:var(--rs-teal-700)}
.rs-lang__opt:focus-visible{z-index:1}
/* Estado actual: se distingue por FORMA (píldora tintada) + peso + color, no solo color. */
.rs-lang__opt.is-current{background:var(--rs-teal-50);color:var(--rs-teal-700);font-weight:700;cursor:default}
@media (max-width:379px){.rs-lang__opt{min-width:36px;padding:0 9px}}
@media (prefers-reduced-motion:reduce){.rs-lang__opt{transition:none}}
/* Variante del footer: texto sobre el panel navy, sin caja (una píldora blanca sería un parche). */
.rs-lang--footer{margin-left:0;height:auto;padding:0;border:0;background:none;gap:4px;font-size:.86rem}
.rs-lang--footer .rs-lang__opt{min-width:0;height:auto;padding:4px 10px;border-radius:var(--rs-pill);
  font-size:inherit;letter-spacing:0;color:var(--rs-on-dark-muted)}
.rs-lang--footer a.rs-lang__opt:hover{background:none;color:var(--rs-on-dark)}
.rs-lang--footer .rs-lang__opt.is-current{background:var(--rs-on-dark-soft);color:var(--rs-on-dark);font-weight:700}

/* Aviso de idioma (fallback del rollout incremental). Renderizado en servidor y en
   el flujo desde el primer paint ⇒ no genera CLS. */
.rs-langnote{background:var(--rs-teal-50);border-bottom:1px solid var(--rs-line);
  color:var(--rs-teal-700);font-size:.9rem;line-height:var(--rs-lh-sm)}
.rs-langnote__inner{display:flex;align-items:center;gap:10px;padding-block:10px}
.rs-langnote p{margin:0;flex:1}
.rs-langnote .rs-ic{flex:none;color:var(--rs-teal-700)}
.rs-langnote a{color:var(--rs-teal-700);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.rs-langnote a .rs-ic{display:inline;vertical-align:-2px}
.rs-langnote__x{flex:none;align-self:flex-start;width:44px;height:44px;margin:-10px -10px -10px 0;
  display:grid;place-items:center;border:0;background:none;cursor:pointer;color:var(--rs-teal-700);
  font-size:1.2rem;line-height:1;border-radius:10px}
.rs-langnote__x:hover{background:var(--rs-line-soft)}
.js .rs-langnote{animation:rs-note-in .25s cubic-bezier(.22,.7,.24,1)}
@keyframes rs-note-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.js .rs-langnote{animation:none}}

/* Drawer mobile */
.rs-drawer{position:fixed;inset:var(--rs-header-h) 0 0;background:var(--rs-bg);z-index:99;
  padding:24px;overflow-y:auto;flex-direction:column;gap:6px;display:none}
.rs-drawer.is-open{display:flex;animation:rs-drawer-in .25s ease}
@keyframes rs-drawer-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.rs-drawer.is-open{animation:none}}
.rs-drawer a.rs-drawer__link{padding:14px 12px;border-bottom:1px solid var(--rs-line-soft);
  color:var(--rs-ink);font-weight:600;font-size:1.1rem;display:flex;justify-content:space-between;align-items:center}
.rs-drawer .rs-btn-row{margin-top:20px;flex-direction:column}
.rs-drawer .rs-btn{width:100%}
/* Acordeón "Servicios" en el drawer (§6) */
.rs-drawer__acc{width:100%;display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:14px 12px;border:0;border-bottom:1px solid var(--rs-line-soft);background:none;cursor:pointer;
  font-family:inherit;font-weight:600;font-size:1.1rem;color:var(--rs-ink);min-height:48px}
.rs-drawer__acc .rs-nav__chev{width:16px;height:16px;color:var(--rs-teal);transition:transform .2s}
.rs-drawer__acc[aria-expanded=true] .rs-nav__chev{transform:rotate(180deg)}
.rs-drawer__sub{list-style:none;margin:0;padding:0}
.rs-drawer__sub a{display:block;padding:12px 12px 12px 28px;font-size:1rem;color:var(--rs-ink);
  border-bottom:1px solid var(--rs-line-soft)}
.js .rs-drawer__sub{display:none}
.js .rs-drawer__sub.is-open{display:block}
@media (prefers-reduced-motion:reduce){.rs-drawer__acc .rs-nav__chev{transition:none}}

/* ---------- Hero ---------- */
/* Mínimo 24px (no 40) para que en móvil el eyebrow no quede flotando lejos del header
   sticky: a 390px el aire era de 54px y empujaba el H1 fuera del primer golpe de vista. */
.rs-hero{padding-block:clamp(24px,6vw,76px) var(--rs-pad);position:relative;overflow:hidden}
.rs-hero::before{content:"";position:absolute;inset:0;z-index:0;
  background:radial-gradient(120% 80% at 12% 0%,#EEF3FF 0%,transparent 55%),
             radial-gradient(90% 70% at 100% 15%,#F3F6FC 0%,transparent 60%)}
.rs-hero__grid{position:relative;z-index:1;display:grid;gap:clamp(32px,5vw,56px);align-items:center}
.rs-hero__grid>*{min-width:0}
.rs-hero__copy h1{overflow-wrap:break-word;margin-bottom:.5em}
.rs-hero__copy .rs-lead{max-width:54ch}
/* Enlace secundario bajo el CTA principal del hero ("o agenda una consulta gratis →"):
   se lee como link sutil, no como botón. */
.rs-hero__alt{margin-top:14px;font-size:.95rem}
.rs-hero__alt a{display:inline-flex;align-items:center;gap:6px;color:var(--rs-teal);font-weight:600;text-underline-offset:3px}
.rs-hero__alt a:hover{color:var(--rs-teal-600);text-decoration:underline}
.rs-hero__alt .rs-ic{width:16px;height:16px}
.rs-hero__media{position:relative}
.rs-hero__media img{width:100%;border-radius:var(--rs-r-lg);box-shadow:var(--rs-shadow-lg);
  aspect-ratio:4/3.4;object-fit:cover;object-position:center 20%}
/* Foto de equipo apaisada (fuente 1400×925 ≈ 3/2): se muestra completa, sin recortar a las personas.
   El ratio del contenedor calza con el de la fuente → cover no recorta. Los otros builders ponen .is-team. */
.rs-hero__media.is-team img,.rs-phero__media.is-team img{aspect-ratio:3/2;object-fit:cover;object-position:center}
.rs-hero__badge{position:absolute;left:-8px;bottom:-16px;background:var(--rs-surface);
  border:1px solid var(--rs-line);border-radius:var(--rs-r);box-shadow:var(--rs-shadow);
  padding:13px 18px;display:flex;align-items:center;gap:11px;max-width:260px}
.rs-hero__badge .rs-ic{color:var(--rs-teal);flex:none}
.rs-hero__badge b{font-family:var(--rs-font-display);display:block;font-size:1.05rem;line-height:1.15}
.rs-hero__badge span{display:block;font-size:.8rem;color:var(--rs-body);line-height:1.25}

/* ---------- Trust strip ---------- */
.rs-trust{background:var(--rs-teal-50);border-block:1px solid var(--rs-line-soft)}
/* La franja de la portada tiene que entrar en UNA sola línea a 1440px: partida en
   4+1 deja un ítem huérfano abajo y lee como un error de maquetación.
   Medido (2026-08-20): los 5 ítems suman 1038px y las 4 separaciones de 24px, 96px
   → 1134px, contra los 1112px útiles de .rs-wrap (--rs-maxw 1160 − 48 de padding).
   Faltaban 22px. Se resuelven ensanchando SOLO esta banda a 1240px (1192 útiles,
   58px de aire), no apretando el gap ni encogiendo la tipografía: es una banda a
   todo el ancho con fondo propio, así que un contenido algo más ancho que el resto
   de la página no se nota — y los ítems van centrados.
   Las franjas más cortas (otras páginas) no cambian: van centradas y por debajo del
   tope. Si algún día se agrega una credencial, esto vuelve a partir: hay que medir
   otra vez, no subir el tope a ciegas. */
.rs-trust__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:16px 24px;padding-block:22px;max-width:1240px}
.rs-trust__item{display:flex;align-items:center;gap:10px;font-size:.98rem;font-weight:600;color:var(--rs-teal-700);min-width:0}
.rs-trust__item .rs-ic{color:var(--rs-teal);width:22px;height:22px;flex:none}
/* Altura óptica unificada de todos los logos e ítems (~44px de caja) */
.rs-trust__item img{height:44px;width:auto;opacity:.95}
.rs-trust .rs-stars{color:var(--rs-amber);display:inline-flex}
.rs-stars .rs-ic{width:17px;height:17px}

/* ---------- Grid de servicios (§4 — premium con acento por vertical) ---------- */
.rs-services{display:grid;gap:24px;grid-template-columns:1fr;align-items:stretch}
.rs-card{background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r-lg);
  padding:28px;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
  display:flex;flex-direction:column;gap:10px;height:100%;min-width:0}
.rs-card__icon{width:52px;height:52px;border-radius:14px;background:var(--rs-teal-50);
  display:grid;place-items:center;color:var(--rs-teal);margin-bottom:6px;font-size:1.5rem}
.rs-card__icon .rs-ic{width:26px;height:26px}
.rs-card h3{margin:0}
.rs-card p{color:var(--rs-body);margin:0;font-size:.9375rem;line-height:var(--rs-lh-sm)}
/* Link de card: teal-700 sobre blanco para colchón AA (LOW-3, antes #2F6BFF). */
.rs-card__link{margin-top:auto;padding-top:10px;display:inline-flex;align-items:center;gap:6px;
  font-weight:600;color:var(--rs-teal-700)}
.rs-card__link .rs-ic{width:18px;height:18px;transition:transform .2s}
.rs-card:hover .rs-card__link .rs-ic{transform:translateX(3px)}

/* Cards DE SERVICIO: acento por vertical vía --acc / --acc-50 / --acc-700 */
.rs-services .rs-card{position:relative;overflow:hidden;gap:0;
  --acc:var(--rs-teal);--acc-50:var(--rs-teal-50);--acc-700:var(--rs-teal-700)}
/* Modificadores scopeados a (0,2,0) para ganarle al default de `.rs-services .rs-card` */
.rs-services .rs-card--tax{--acc:var(--rs-acc-tax);--acc-50:var(--rs-acc-tax-50);--acc-700:var(--rs-acc-tax-700)}
.rs-services .rs-card--book{--acc:var(--rs-acc-book);--acc-50:var(--rs-acc-book-50);--acc-700:var(--rs-acc-book-700)}
.rs-services .rs-card--credit{--acc:var(--rs-acc-credit);--acc-50:var(--rs-acc-credit-50);--acc-700:var(--rs-acc-credit-700)}
.rs-services .rs-card--llc{--acc:var(--rs-acc-llc);--acc-50:var(--rs-acc-llc-50);--acc-700:var(--rs-acc-llc-700)}
.rs-services .rs-card--ins{--acc:var(--rs-acc-ins);--acc-50:var(--rs-acc-ins-50);--acc-700:var(--rs-acc-ins-700)}
/* Barra superior de acento: oculta (scaleX 0) → aparece en hover */
.rs-services .rs-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
.rs-services .rs-card:hover::before{transform:scaleX(1)}
.rs-services .rs-card__icon{background:var(--acc-50);color:var(--acc);margin-bottom:12px}
.rs-services .rs-card h3{margin-bottom:6px}
.rs-services .rs-card__link{color:var(--acc-700)}
.rs-services .rs-card:hover{transform:translateY(-6px);box-shadow:var(--rs-shadow-lg);
  border-color:color-mix(in srgb,var(--acc) 35%,transparent)}
@media (prefers-reduced-motion:reduce){.rs-services .rs-card:hover{transform:none}}

/* Card destacada ITIN (6ª card): gradiente de marca, texto blanco */
.rs-services .rs-card--itin{background:linear-gradient(135deg,#1F57E6,#123FB0);color:#fff;border:0}
.rs-services .rs-card--itin::before{display:none}
.rs-services .rs-card--itin .rs-card__icon{background:rgba(255,255,255,.15);color:#fff}
.rs-services .rs-card--itin h3{color:#fff}
.rs-services .rs-card--itin p{color:#EAF0FF}
.rs-services .rs-card--itin .rs-card__link{color:#fff}
.rs-services .rs-card--itin:hover{transform:translateY(-6px);box-shadow:0 30px 60px rgba(31,87,230,.30);border:0}
@media (prefers-reduced-motion:reduce){.rs-services .rs-card--itin:hover{transform:none}}

/* ---------- Banner ITIN ---------- */
/* Gradiente oscurecido (stops #1F57E6→#123FB0) para que el texto claro pase AA:
   #EAF0FF sobre el stop más claro = 5.1:1; eyebrow #DCE6FF = 4.7:1. */
.rs-itin{background:linear-gradient(135deg,#1F57E6,#123FB0);color:#EAF0FF;border-radius:var(--rs-r-lg);
  padding:clamp(32px,5vw,56px);display:grid;gap:24px;align-items:center;box-shadow:0 30px 60px rgba(31,87,230,.28)}
.rs-itin .rs-eyebrow{color:#DCE6FF}
.rs-itin h2{color:#fff;margin-bottom:.3em}
.rs-itin p{color:#EAF0FF;margin:0}
/* En móvil el label del botón debe poder partirse: con nowrap su ancho mínimo
   estira la pista del grid y el texto de la tarjeta se sale por la derecha. */
.rs-itin .rs-btn{white-space:normal}

/* ---------- Por qué (3 columnas) ---------- */
.rs-why{display:grid;gap:24px;grid-template-columns:1fr}
.rs-why__item{display:flex;flex-direction:column;gap:8px}
.rs-why__ic{width:54px;height:54px;border-radius:50%;background:var(--rs-cta-50);color:var(--rs-cta);
  display:grid;place-items:center}
.rs-why__ic .rs-ic{width:26px;height:26px}
.rs-why__item h3{margin:0 0 6px}
.rs-why__item p{color:var(--rs-body);margin:0;font-size:.9375rem;line-height:var(--rs-lh-sm)}

/* ---------- Testimonios ---------- */
.rs-testis{display:grid;gap:20px;grid-template-columns:1fr}
.rs-testi{background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r-lg);
  padding:26px;display:flex;flex-direction:column;gap:14px}
.rs-testi .rs-stars{color:var(--rs-amber);display:inline-flex}
.rs-testi blockquote{margin:0;font-family:var(--rs-font-body);font-size:1.08rem;line-height:1.55;
  font-weight:500;color:var(--rs-ink)}
/* Traducción etiquetada de la reseña (la cita original queda en español, con lang="es").
   Ya no se usa en las dos portadas — sigue viva en page-en-tax-preparation.php. */
.rs-testi__tr{margin:0;font-size:.95rem;line-height:var(--rs-lh-sm);color:var(--rs-body)}
.rs-testi__trlabel{display:block;font-size:.7rem;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--rs-muted);margin-bottom:4px}

/* Cuerpo de la cita + bloque de identidad. La destacada (--feat) abre la sección. */
.rs-testi__q{display:flex;flex-direction:column;gap:14px}
.rs-testi__side{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:auto}
.rs-testi__side .rs-testi__who{margin-top:0}
.rs-testi__badge{align-self:flex-start;padding:6px 13px;border-radius:var(--rs-r-pill,999px);
  background:var(--rs-teal-50);color:var(--rs-teal-700);font-size:.78rem;font-weight:700;
  letter-spacing:.02em;line-height:1.3}
.rs-testis__note{margin-top:28px;font-size:.9rem;color:var(--rs-body)}
.rs-testi__who{display:flex;align-items:center;gap:12px;margin-top:auto}
.rs-testi__who img{width:46px;height:46px;border-radius:50%;object-fit:cover}
.rs-testi__who .rs-testi__avatar{width:46px;height:46px;flex:none;border-radius:50%;
  background:var(--rs-teal-50);color:var(--rs-teal);display:grid;place-items:center;
  font-family:var(--rs-font-display);font-size:1rem;font-weight:600}
.rs-testi__who b{display:block;font-family:var(--rs-font-body);font-size:.98rem}
.rs-testi__who span{font-size:.82rem;color:var(--rs-teal);font-weight:600}

/* ---------- Cómo trabajamos (4 pasos) ---------- */
.rs-steps{display:grid;gap:26px;grid-template-columns:1fr;align-items:start;counter-reset:step}
.rs-step{display:flex;gap:16px;align-items:flex-start}
.rs-step__n{flex:none;width:46px;height:46px;border-radius:50%;background:var(--rs-cta);color:#fff;
  display:grid;place-items:center;font-family:var(--rs-font-display);font-weight:600;font-size:1.25rem}
.rs-step h3{margin:0 0 6px}
.rs-step p{margin:0;color:var(--rs-body);font-size:.9375rem;line-height:var(--rs-lh-sm)}

/* ---------- FAQ ---------- */
.rs-faq{max-width:820px;margin-inline:auto}
.rs-faq details{border-bottom:1px solid var(--rs-line);padding:6px 0}
.rs-faq summary{list-style:none;cursor:pointer;padding:18px 44px 18px 4px;position:relative;
  font-weight:600;font-size:1.08rem;color:var(--rs-ink)}
.rs-faq summary::-webkit-details-marker{display:none}
.rs-faq summary::after{content:"";position:absolute;right:8px;top:50%;width:12px;height:12px;
  border-right:2px solid var(--rs-teal);border-bottom:2px solid var(--rs-teal);
  transform:translateY(-70%) rotate(45deg);transition:transform .25s}
.rs-faq details[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
.rs-faq__a{padding:0 44px 20px 4px;color:var(--rs-body)}
.rs-faq__a a:not(.rs-btn){font-weight:600;color:var(--rs-teal-700)} /* AA: ver la nota de .rs-prose a */

/* ---------- Blog cards ---------- */
.rs-posts{display:grid;gap:22px;grid-template-columns:1fr}
.rs-post{background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r-lg);
  overflow:hidden;display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s}
.rs-post:hover{transform:translateY(-4px);box-shadow:var(--rs-shadow-lg)}
.rs-post__thumb{aspect-ratio:16/10;background:var(--rs-teal-50);object-fit:cover;width:100%}
.rs-post__body{padding:20px 22px 24px;display:flex;flex-direction:column;gap:8px;flex:1}
.rs-post__meta{font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--rs-teal-700)}
.rs-post h2,.rs-post h3{margin:0;font-size:1.2rem}
.rs-post__body .rs-card__link{margin-top:auto}

/* ---------- Local / mapa ---------- */
.rs-local{display:grid;gap:32px;align-items:center}
.rs-nap{background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r-lg);
  padding:26px 28px;box-shadow:var(--rs-shadow)}
.rs-nap b.rs-nap__name{font-family:var(--rs-font-display);font-size:1.3rem;display:block;margin-bottom:12px}
.rs-nap ul{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:12px}
.rs-nap li{display:flex;align-items:flex-start;gap:11px;color:var(--rs-body)}
.rs-nap li .rs-ic{color:var(--rs-teal);margin-top:2px}
/* Regla A (§3): scopear el link del contenedor para que NUNCA pise el color de un `.rs-btn` */
.rs-nap a:not(.rs-btn){color:var(--rs-body)}
.rs-nap a:not(.rs-btn):hover{color:var(--rs-teal)}
.rs-map{margin:0;border-radius:var(--rs-r-lg);overflow:hidden;box-shadow:var(--rs-shadow);border:1px solid var(--rs-line)}
.rs-map iframe{display:block;width:100%;height:420px;border:0}

/* ---------- Footer ---------- */
.rs-footer{background:var(--rs-ink-panel);color:#9FB0C3;padding-block:clamp(48px,7vw,80px) 32px}
.rs-footer__grid{display:grid;gap:36px;grid-template-columns:1fr}
.rs-footer__brand .rs-brand__word{color:#fff}
.rs-footer__brand img{height:40px;filter:brightness(0) invert(1);opacity:.95}
.rs-footer__brand p{margin-top:14px;max-width:34ch;color:#8695A8}
.rs-footer h3{font-family:var(--rs-font-body);font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--rs-on-dark-muted);margin:0 0 14px;font-weight:700}
.rs-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.rs-footer a:not(.rs-btn){color:#C3CEDA}
.rs-footer a:not(.rs-btn):hover{color:#fff}
.rs-footer__nap{color:#8695A8;font-size:.92rem;line-height:1.7}
.rs-footer__napname{color:var(--rs-on-dark);font-family:var(--rs-font-display);font-size:1.05rem}
.rs-footer__social{display:flex;gap:12px;margin-top:16px}
.rs-footer__social a{width:40px;height:40px;border-radius:10px;background:var(--rs-on-dark-soft);
  display:grid;place-items:center;color:#C3CEDA}
.rs-footer__social a:hover{background:var(--rs-teal);color:#fff}
.rs-footer__bar{border-top:1px solid rgba(255,255,255,.1);margin-top:40px;padding-top:24px;
  display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:space-between;align-items:center;font-size:.86rem;color:#7C899C}
.rs-footer__bar a{color:var(--rs-on-dark-muted)}
/* Selector de idioma del footer: tercer slot de la barra inferior. Especificidad
   suficiente para ganarle a `.rs-footer a:not(.rs-btn)`. */
.rs-footer .rs-lang--footer .rs-lang__opt{color:var(--rs-on-dark-muted)}
.rs-footer .rs-lang--footer a.rs-lang__opt:hover{color:var(--rs-on-dark);background:none}
.rs-footer .rs-lang--footer .rs-lang__opt.is-current{color:var(--rs-on-dark);background:var(--rs-on-dark-soft)}

/* Botón flotante WhatsApp (mobile) */
.rs-wafab{position:fixed;right:16px;bottom:16px;z-index:90;width:56px;height:56px;border-radius:50%;
  background:var(--rs-wa);color:#fff;display:grid;place-items:center;box-shadow:0 8px 24px rgba(37,211,102,.45)}
.rs-wafab .rs-ic{width:30px;height:30px}

/* ---------- Por qué: variante con foto ---------- */
.rs-why-media{display:grid;gap:clamp(28px,4vw,48px);align-items:center}
.rs-why-media__img{position:relative}
.rs-why-media__img img{width:100%;border-radius:var(--rs-r-lg);box-shadow:var(--rs-shadow-lg);
  aspect-ratio:4/4.4;object-fit:cover;object-position:center 22%}
.rs-why-media .rs-why{grid-template-columns:1fr;gap:22px}
.rs-why-media .rs-why__item{flex-direction:row;gap:14px;align-items:flex-start}
.rs-why-media .rs-why__ic{flex:none}

/* ---------- Banda CTA (conversión) ---------- */
.rs-ctaband{position:relative;overflow:hidden;background:linear-gradient(135deg,#0F1B2D,#16264A)}
.rs-ctaband__inner{display:grid;gap:clamp(28px,4vw,44px);align-items:center;position:relative;z-index:1}
.rs-ctaband__img img{width:100%;border-radius:var(--rs-r-lg);aspect-ratio:4/3.2;object-fit:cover;
  object-position:center 25%;box-shadow:var(--rs-shadow-lg)}
.rs-ctaband h2{color:#fff}
.rs-ctaband p{color:#A9B8CF}
.rs-ctaband .rs-eyebrow{color:#7FA0FF}

/* ---------- Trust strip: logo Google Reviews ---------- */
.rs-trust__gr{display:inline-flex;align-items:center;gap:9px}
.rs-trust__gr img{height:46px;width:auto}
.rs-trust__gr b{font-weight:700;color:var(--rs-ink)}

/* ---------- Tira de stats (§5 — números protagonistas, sin cajas) ---------- */
.rs-stats{display:grid;grid-template-columns:repeat(2,1fr)}
.rs-stat{padding:28px 24px;min-width:0}
/* Mobile: hairlines horizontales entre filas (2×2) */
.rs-stat:nth-child(n+3){border-top:1px solid var(--rs-line)}
.rs-stat__n{font-family:var(--rs-font-display);font-weight:800;line-height:1;
  font-size:clamp(2.4rem,4.5vw,3.2rem);letter-spacing:-.02em;color:var(--rs-ink)}
.rs-stat__n .rs-star{color:var(--rs-amber)}
.rs-stat__rule{width:32px;height:3px;border-radius:2px;background:var(--rs-teal);margin-top:12px}
.rs-stat__label{font-size:.9375rem;line-height:var(--rs-lh-sm);color:var(--rs-body);max-width:22ch;margin-top:8px}

/* ---------- Banda de highlights (componente compartido: páginas spoke) ---------- */
.rs-highlights{display:grid;gap:16px;grid-template-columns:1fr}
.rs-highlight{display:flex;gap:14px;align-items:flex-start;background:var(--rs-surface);
  border:1px solid var(--rs-line);border-radius:var(--rs-r);padding:20px 22px}
.rs-highlight__ic{flex:none;width:46px;height:46px;border-radius:12px;background:var(--rs-teal-50);
  color:var(--rs-teal);display:grid;place-items:center}
.rs-highlight__ic .rs-ic{width:24px;height:24px}
.rs-highlight b{display:block;font-family:var(--rs-font-display);font-weight:700;font-size:1.05rem;line-height:1.2;color:var(--rs-ink)}
.rs-highlight span{font-size:.9375rem;line-height:var(--rs-lh-sm);color:var(--rs-body)}

/* ---------- Conoce a tu asesor (nosotros preview) ---------- */
.rs-advisor{display:grid;gap:clamp(28px,4vw,52px);align-items:center}
.rs-advisor__img{position:relative}
.rs-advisor__img img{width:100%;border-radius:var(--rs-r-lg);box-shadow:var(--rs-shadow-lg);
  aspect-ratio:4/4.6;object-fit:cover;object-position:center 18%}
.rs-advisor__badge{position:absolute;right:-10px;bottom:22px;background:var(--rs-surface);
  border:1px solid var(--rs-line);border-radius:var(--rs-r);box-shadow:var(--rs-shadow);padding:12px 16px;
  display:flex;align-items:center;gap:10px}
.rs-advisor__badge img{height:30px;width:auto}
.rs-advisor__badge b{font-family:var(--rs-font-display);font-size:.95rem;display:block;line-height:1.1}
.rs-advisor__badge span{font-size:.76rem;color:var(--rs-body)}
.rs-advisor__list{list-style:none;margin:1.2rem 0 0;padding:0;display:grid;gap:12px}
.rs-advisor__list li{display:flex;gap:10px;align-items:flex-start;color:var(--rs-body)}
.rs-advisor__list .rs-ic{color:var(--rs-teal);margin-top:2px;flex:none}

/* ---------- Equipo (cards de personas) ---------- */
.rs-team{display:grid;gap:24px;grid-template-columns:1fr}
.rs-team-card{background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r-lg);
  overflow:hidden;display:flex;flex-direction:column;min-width:0;transition:transform .2s,box-shadow .2s}
.rs-team-card:hover{transform:translateY(-4px);box-shadow:var(--rs-shadow-lg)}
@media (prefers-reduced-motion:reduce){.rs-team-card:hover{transform:none}}
.rs-team-card__img{background:var(--rs-teal-50);aspect-ratio:7/6}
.rs-team-card__img img{width:100%;height:100%;object-fit:cover;object-position:center 18%}
.rs-team-card__body{padding:24px 26px 28px;display:flex;flex-direction:column;gap:9px;min-width:0}
.rs-team-card h3{margin:0;font-size:1.32rem}
.rs-team-card__role{margin:0;color:var(--rs-teal-700);font-weight:700;font-size:.82rem;
  letter-spacing:.08em;text-transform:uppercase}
.rs-team-card__body p{margin:0;color:var(--rs-body);font-size:.9375rem;line-height:var(--rs-lh-sm)}

/* ---------- Chips de credenciales ---------- */
.rs-creds{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.rs-cred-chip{display:inline-flex;align-items:center;gap:8px;background:var(--rs-teal-50);
  color:var(--rs-teal-700);border:1px solid var(--rs-line);border-radius:var(--rs-pill);
  padding:9px 15px;font-size:.85rem;font-weight:600;line-height:1.25}
.rs-cred-chip .rs-ic{width:18px;height:18px;color:var(--rs-teal);flex:none}
/* Chip verificable (enlace a Credly): afford. de externo + hover */
a.rs-cred-chip{transition:background .2s ease,color .2s ease}
a.rs-cred-chip:hover{background:#E0E9FF;color:var(--rs-teal-700)}
.rs-cred-chip__ext{width:14px;height:14px;opacity:.75;flex:none}

/* ---------- Muro de credenciales (badge oficial + chips) ---------- */
.rs-creds-wall{display:flex;flex-wrap:wrap;align-items:center;gap:24px;margin-top:26px}
.rs-creds-wall--center{justify-content:center;text-align:left}
.rs-qbo-badge{flex:none;display:inline-flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.rs-qbo-badge img{width:112px;height:112px}
.rs-qbo-badge__verify{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;font-weight:700;
  color:var(--rs-teal-700);letter-spacing:.01em}
.rs-qbo-badge__verify .rs-ic{width:14px;height:14px}
a.rs-qbo-badge:hover .rs-qbo-badge__verify{color:var(--rs-teal-600);text-decoration:underline}
.rs-creds-wall .rs-creds{margin:0;flex-direction:column;align-items:flex-start;gap:12px}

/* ---------- Person byline (avatar + nombre + credencial) ---------- */
.rs-person{display:flex;align-items:center;gap:16px;min-width:0;
  background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r);
  padding:16px 20px;box-shadow:var(--rs-shadow)}
.rs-section--soft .rs-person{background:var(--rs-surface)}
.rs-person__avatar{flex:none;width:64px;height:64px;border-radius:50%;overflow:hidden;
  background:var(--rs-teal-50)}
.rs-person__avatar img{width:100%;height:100%;object-fit:cover}
.rs-person__body{min-width:0;display:flex;flex-direction:column;gap:3px}
.rs-person__body b{font-family:var(--rs-font-display);font-size:1.06rem;color:var(--rs-ink);line-height:1.2}
.rs-person__role{color:var(--rs-body);font-size:.92rem;line-height:1.35}

/* =============================================================================
   Componentes de PÁGINA (pillars, spokes, hub, blog, legal)
   ========================================================================== */

/* Breadcrumbs */
.rs-crumbs{border-bottom:1px solid var(--rs-line-soft);background:var(--rs-bg)}
.rs-crumbs .rs-wrap{padding-block:14px;font-size:.86rem;color:var(--rs-body);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.rs-crumbs a:not(.rs-btn){color:var(--rs-body)}.rs-crumbs a:not(.rs-btn):hover{color:var(--rs-teal)}
.rs-crumbs__sep{color:var(--rs-line)}
.rs-crumbs [aria-current=page]{color:var(--rs-ink);font-weight:600}

/* Page hero */
/* Mismo criterio que .rs-hero: 24px mínimo para no separar el eyebrow del header en móvil. */
/* Aire del hero de página interior, ajustado el 2026-08-31 a pedido del dueño.
   ARRIBA: bajó de 72px a 36px. Al apagar la barra de ruta (RS_SHOW_BREADCRUMB_BAR)
   el hero quedó pegado al header y sobraba hueco muerto; el titular sube y se ve
   sin hacer scroll.
   ABAJO: bajó de 80px a 24px. Esta franja SE SUMA al padding-top de la .rs-section
   siguiente (--rs-pad, hasta 112px): eran hasta 192px de vacío entre el hero y la
   primera sección. Con 24px el respiro total queda en ~136px, que ya es generoso.
   Los mínimos de móvil (16/12px) se conservan para que el eyebrow no se pegue al header. */
.rs-phero{position:relative;overflow:hidden;padding-block:clamp(16px,3vw,36px) clamp(12px,2vw,24px)}
.rs-phero::before{content:"";position:absolute;inset:0;z-index:0;
  background:radial-gradient(110% 80% at 10% 0%,#EEF3FF 0%,transparent 55%),radial-gradient(90% 70% at 100% 10%,#F3F6FC 0%,transparent 60%)}
.rs-phero__grid{position:relative;z-index:1;display:grid;gap:clamp(28px,4vw,48px);align-items:center}
.rs-phero__grid>*{min-width:0}
.rs-phero h1{margin:.1em 0 .35em}
.rs-phero .rs-lead{max-width:56ch}
.rs-phero__media img{width:100%;border-radius:var(--rs-r-lg);box-shadow:var(--rs-shadow-lg);aspect-ratio:4/3.4;object-fit:cover}
/* Media de retrato/cuadrada en el hero (heidy-pro, leo-pro): encuadre vertical sin cortar la cara */
.rs-phero__media.is-portrait img{aspect-ratio:4/5;object-fit:cover;object-position:top center}
.rs-phero__media.is-portrait{max-width:400px;margin-inline:auto}
/* La tarjeta iba pegada a la foto: son hermanas dentro de la misma columna del
   grid, y el `gap` del grid separa COLUMNAS, no lo que va dentro de una. En
   movil, donde todo se apila, se leia como si estuviera montada encima. */
.rs-phero__media + .rs-phero__card{margin-top:clamp(16px,2.2vw,22px)}
.rs-phero__card{background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r-lg);
  box-shadow:var(--rs-shadow);padding:26px 28px}
.rs-phero__card h2,.rs-phero__card h3{margin:0 0 12px;font-size:1.1rem;letter-spacing:-.02em;line-height:1.2}
.rs-phero__card .rs-checklist li{font-size:.96rem}

/* Prose (contenido largo educativo) */
.rs-prose{max-width:760px;font-size:1.06rem;color:var(--rs-body)}
.rs-prose>*+*{margin-top:1.1rem}
.rs-prose h2{color:var(--rs-ink);font-size:clamp(1.6rem,2.6vw,2.1rem);margin-top:2.2rem}
.rs-prose h3{color:var(--rs-ink);font-size:1.28rem;margin-top:1.7rem}
.rs-prose p,.rs-prose li{line-height:1.7}
.rs-prose strong{color:var(--rs-ink)}
.rs-prose ul,.rs-prose ol{padding-left:1.3rem}.rs-prose li{margin:.4rem 0}
/* --rs-teal mide 4.50:1 sobre blanco (Lighthouse lo redondea a 4.49 y lo falla) y
   4.05:1 sobre --rs-bg-soft: por debajo del AA de WCAG para texto normal. En un
   enlace dentro de texto corrido eso es un fallo real de accesibilidad, así que el
   tono base de estos enlaces es --rs-teal-700 (8.9:1 y 8.0:1). Ya existía el
   override para .rs-section--soft (abajo); esto lo sube a la regla base. Medido con
   axe/Lighthouse en /en/bookkeeping/ y reproducido en el ES /contabilidad-bookkeeping/
   (deuda preexistente, no del inglés). 2026-08-13. */
.rs-prose a:not(.rs-btn){color:var(--rs-teal-700);font-weight:600;text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
.rs-prose blockquote{border-left:3px solid var(--rs-teal);padding:.4rem 0 .4rem 1.1rem;color:var(--rs-ink);font-weight:500}
.rs-prose table{width:100%;border-collapse:collapse;font-size:.96rem;display:block;overflow-x:auto}
.rs-prose th,.rs-prose td{border:1px solid var(--rs-line);padding:10px 14px;text-align:left;vertical-align:top}
.rs-prose thead th{background:var(--rs-bg-soft);font-family:var(--rs-font-display);font-weight:700;color:var(--rs-ink)}

/* Checklist */
.rs-checklist{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.rs-checklist li{display:flex;gap:11px;align-items:flex-start;color:var(--rs-body)}
.rs-checklist li::before{content:"";flex:none;width:22px;height:22px;border-radius:50%;margin-top:1px;
  background:var(--rs-teal-50) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%232F6BFF' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m20 6-11 11-5-5'/%3E%3C/svg%3E") center/14px no-repeat}

/* Feature grid (cards con icono) — tarjetas de igual alto, CTA pegado al fondo */
.rs-features{display:grid;gap:20px;grid-template-columns:1fr;align-items:stretch}
.rs-feature{background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r-lg);padding:26px;display:flex;flex-direction:column;gap:9px;height:100%}
.rs-feature__ic{width:48px;height:48px;border-radius:13px;background:var(--rs-teal-50);color:var(--rs-teal);display:grid;place-items:center;margin-bottom:4px}
.rs-feature h2,.rs-feature h3{margin:0 0 6px;font-size:1.15rem}.rs-feature p{margin:0;color:var(--rs-body);font-size:.9375rem;line-height:var(--rs-lh-sm)}
/* El CTA de cada tarjeta se empuja al fondo → los botones alinean sin importar el largo del texto */
.rs-feature .rs-btn-row{margin-top:auto;padding-top:1.6rem}

/* Pricing / paquetes */
.rs-pricing{display:grid;gap:22px;grid-template-columns:1fr}
.rs-plan{background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r-lg);padding:30px;display:flex;flex-direction:column;gap:14px}
.rs-plan--featured{border-color:var(--rs-teal);box-shadow:0 20px 44px rgba(47,107,255,.16);position:relative}
.rs-plan--featured::after{content:"Más elegido";position:absolute;top:-12px;left:30px;background:var(--rs-teal);color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:5px 12px;border-radius:999px}
/* La etiqueta del plan destacado se inyecta por CSS, así que es la única cadena de
   texto del sitio que no pasa por rs_t(): sin esta regla, una página bajo /en/
   mostraría "Más elegido" en medio del inglés. El <html lang> ya lo emite el tema
   por idioma (en-US bajo /en/, es-MX en la raíz), así que basta con sobreescribir
   el `content`. Añadido 2026-08-13 con la Ola 1 del inglés. */
html[lang^="en"] .rs-plan--featured::after{content:"Most chosen"}
.rs-plan h3{margin:0;font-size:1.3rem}
.rs-plan__price{font-family:var(--rs-font-display);font-weight:800;font-size:2.1rem;color:var(--rs-ink);line-height:1}
.rs-plan__price small{font-family:var(--rs-font-body);font-weight:500;font-size:.9rem;color:var(--rs-body)}
.rs-plan .rs-btn{margin-top:auto}

/* Related / próximos pasos */
.rs-related{display:grid;gap:18px;grid-template-columns:1fr}
.rs-related__card{display:flex;flex-direction:column;gap:6px;background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r);padding:22px 24px;transition:transform .2s,box-shadow .2s}
.rs-related__card:hover{transform:translateY(-3px);box-shadow:var(--rs-shadow-lg)}
.rs-related__card b{font-family:var(--rs-font-display);font-size:1.05rem;color:var(--rs-ink)}
.rs-related__card span{font-size:.92rem;color:var(--rs-body)}
.rs-related__card .rs-card__link{margin-top:4px}

/* Split genérico (texto + imagen/card) — componente compartido home/ITIN/nosotros (§7b, §7c) */
.rs-split{display:grid;gap:clamp(28px,4vw,48px);align-items:center}
.rs-split>*{min-width:0}
.rs-split__media{position:relative}
.rs-split__media img{width:100%;border-radius:var(--rs-r-lg);box-shadow:var(--rs-shadow-lg);aspect-ratio:4/3.2;object-fit:cover}
.rs-split--tall .rs-split__media img{aspect-ratio:4/4}
/* Chip superpuesto (ej. "9XX-XX-XXXX") abajo-izquierda de la imagen (§7b) */
.rs-doc-chip{position:absolute;left:16px;bottom:16px;background:var(--rs-surface);border:1px solid var(--rs-line);
  border-radius:var(--rs-pill);box-shadow:var(--rs-shadow);padding:9px 16px;
  font-family:var(--rs-font-display);font-weight:600;font-size:.95rem;color:var(--rs-ink);letter-spacing:.02em}

/* Callout — card de acento reutilizable (§7d) barra izq + tile + lead + texto + CTA */
.rs-callout{position:relative;overflow:hidden;background:var(--rs-teal-50);border-radius:var(--rs-r-lg);
  padding:clamp(28px,4vw,40px)}
.rs-callout::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--rs-teal)}
.rs-callout__ic{width:52px;height:52px;border-radius:14px;background:var(--rs-surface);color:var(--rs-teal);
  display:grid;place-items:center;margin-bottom:14px}
.rs-callout__ic .rs-ic{width:26px;height:26px}
.rs-callout__lead{font-family:var(--rs-font-display);font-weight:700;font-size:1.2rem;line-height:1.3;
  color:var(--rs-ink);margin:0 0 8px}
.rs-callout p{color:var(--rs-teal-700);margin:0 0 4px;line-height:var(--rs-lh-base)}
/* ── Notary Public (§406.017) ──────────────────────────────────────────────────
   Sección de /seguros/: el servicio a la izquierda, el aviso obligatorio a la
   derecha como tarjeta propia. Antes el aviso colgaba suelto debajo de una franja
   de confianza y leía como una errata legal; acá es parte del bloque que anuncia
   el servicio, que es justo lo que la ley pide ("con el anuncio").
   La ley exige letra "de tamaño conspicuo": las dos leyendas van al tamaño del
   cuerpo, en negrita y en color de texto normal. NO reducirlas a nota al pie —
   la jerarquía la da la tarjeta (borde de acento + fondo propio), no el tamaño. */
.rs-notary{display:grid;gap:clamp(28px,4vw,44px);align-items:start}
.rs-notary>*{min-width:0}
.rs-notary__limit{margin-top:18px;padding:14px 16px;border-radius:var(--rs-r-sm);
  background:var(--rs-bg-soft);color:var(--rs-body);font-size:.95rem;line-height:var(--rs-lh-sm)}
.rs-notary__limit b{color:var(--rs-ink)}
.rs-notary-notice{background:var(--rs-surface);border:1px solid var(--rs-line);
  border-top:4px solid var(--rs-acc-ins);border-radius:var(--rs-r);box-shadow:var(--rs-shadow);
  padding:clamp(20px,3vw,28px)}
.rs-notary-notice__k{margin:0 0 14px;font-size:.78rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.06em;color:var(--rs-acc-ins-700)}
.rs-notary-notice__stmt{margin:0 0 12px;font-weight:700;font-size:1rem;line-height:1.45;
  color:var(--rs-ink)}
.rs-notary-fees{width:100%;border-collapse:collapse;margin-top:18px}
.rs-notary-fees caption{text-align:left;padding-bottom:10px;font-size:.85rem;color:var(--rs-body)}
.rs-notary-fees th{text-align:left;font-weight:600;font-size:.92rem;color:var(--rs-ink);
  padding:9px 12px 9px 0;border-top:1px solid var(--rs-line)}
.rs-notary-fees th span{display:block;font-weight:400;font-size:.8rem;color:var(--rs-muted)}
.rs-notary-fees td{text-align:right;white-space:nowrap;font-weight:700;font-size:.95rem;
  color:var(--rs-ink);padding:9px 0;border-top:1px solid var(--rs-line);vertical-align:top}
.rs-notary-notice__src{margin:14px 0 0;font-size:.8rem;color:var(--rs-muted)}
/* Casilla de consentimiento del formulario de leads (TCPA / Texas SB 140). Va en la
   hoja compartida y no en el <style> de cada plantilla porque el formulario existe en
   dos idiomas y el bloque inline está duplicado: una sola definición evita que se
   desincronicen. El área clicable es toda la etiqueta, no solo el cuadrito. */
.rs-consent{display:flex;gap:10px;align-items:flex-start;cursor:pointer;
  font-size:.9rem;line-height:var(--rs-lh-base);color:var(--rs-body)}
.rs-consent input{flex:none;width:18px;height:18px;margin-top:2px;accent-color:var(--rs-teal-700);cursor:pointer}
.rs-consent a{color:var(--rs-teal-700);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.rs-callout .rs-btn-row{margin-top:20px}

/* Article (blog) */
.rs-article__meta{display:flex;flex-wrap:wrap;gap:8px 16px;color:var(--rs-body);font-size:.9rem;margin-bottom:8px}
.rs-article__cat{color:var(--rs-teal);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:.78rem}
.rs-article__cover{width:100%;border-radius:var(--rs-r-lg);box-shadow:var(--rs-shadow);aspect-ratio:16/8;object-fit:cover;margin:8px 0 4px}
.rs-article__dates{margin-top:10px;color:var(--rs-muted);font-size:.88rem}
.rs-article__dates time{color:var(--rs-body)}
.rs-article__hero{margin:clamp(20px,3vw,32px) 0 0}
.rs-article__hero img{width:100%;border-radius:var(--rs-r-lg);box-shadow:var(--rs-shadow);aspect-ratio:16/9;object-fit:cover}

/* Post con imagen destacada en la card del índice */
.rs-post__thumb{display:block;border:0}
a.rs-post__thumb img,.rs-post__thumb img{width:100%;height:100%;aspect-ratio:16/10;object-fit:cover;display:block}
.rs-post h2 a{color:inherit}
.rs-post h2 a:hover{color:var(--rs-teal)}

/* Disclaimer de compliance al pie del cuerpo */
.rs-disclaimer{max-width:760px;margin:clamp(20px,3vw,28px) 0 0;padding:16px 20px;
  background:var(--rs-bg-soft);border:1px solid var(--rs-line);border-left:3px solid var(--rs-amber);
  border-radius:var(--rs-r-sm)}
.rs-disclaimer p{margin:0;color:var(--rs-body);font-size:.9rem;line-height:1.6}

/* Bloque de autoría (E-E-A-T) */
.rs-author{max-width:760px;display:flex;gap:16px;align-items:flex-start;
  margin:clamp(24px,4vw,36px) 0 0;padding:22px 24px;background:var(--rs-surface);
  border:1px solid var(--rs-line);border-radius:var(--rs-r)}
.rs-author__ic{flex:none;width:48px;height:48px;display:grid;place-items:center;border-radius:50%;
  background:var(--rs-teal-50);color:var(--rs-teal-700)}
.rs-author__body{display:flex;flex-direction:column;gap:3px}
.rs-author__eyebrow{font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--rs-muted)}
.rs-author__body b{font-family:var(--rs-font-display);font-size:1.1rem;color:var(--rs-ink)}
.rs-author__role{font-size:.92rem;color:var(--rs-body)}
.rs-author__body .rs-card__link{margin-top:6px}

/* Paginación del blog / archivos */
.rs-pagination{margin-top:clamp(28px,4vw,40px)}
.rs-pagination .page-numbers{list-style:none;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;padding:0;margin:0}
.rs-pagination .page-numbers li{margin:0}
.rs-pagination a.page-numbers,.rs-pagination span.page-numbers{display:grid;place-items:center;min-width:44px;height:44px;padding:0 12px;
  border:1px solid var(--rs-line);border-radius:12px;color:var(--rs-ink);font-weight:600;background:var(--rs-surface)}
.rs-pagination a.page-numbers:hover{background:var(--rs-teal-50);border-color:var(--rs-teal);color:var(--rs-teal-700)}
.rs-pagination span.current{background:var(--rs-teal);border-color:var(--rs-teal);color:#fff}

/* ---------- Contraste AA sobre fondos soft (#F7F9FC) ----------
   El teal puro #2F6BFF sobre bg-soft = 4.27:1 (falla texto normal AA).
   Sobre superficies soft usamos teal-700 #123FB0 (8:1) para eyebrows y links de texto.
   El teal puro se reserva para fondo blanco (superficies de card) y elementos de UI. */
.rs-section--soft .rs-eyebrow{color:var(--rs-teal-700)}
.rs-section--soft .rs-prose a:not(.rs-btn),
.rs-section--soft .rs-faq__a a:not(.rs-btn){color:var(--rs-teal-700)}

/* ---------- Reveal on scroll (entrada suave) ---------- */
.js .rs-up{opacity:0;transform:translateY(24px);
  transition:opacity .7s cubic-bezier(.22,.7,.24,1),transform .7s cubic-bezier(.22,.7,.24,1)}
.js .rs-up.is-in{opacity:1;transform:none}
.js .rs-hero__copy.rs-up{transform:translateY(14px)}
/* LO PRIMERO QUE SE VE NACE VISIBLE — nunca se le hace fundido de entrada.
   El elemento que Google mide como LCP siempre está en la primera sección: la
   foto del equipo en la home, el párrafo de entrada en las interiores. Con
   opacity:0 el navegador ya tiene ese contenido y NO lo pinta hasta que el JS le
   pone .is-in, y Google cuenta esa espera entera como tiempo de carga.
   Medido el 2026-07-31 (móvil): 3.307 ms de los 5,4 s de LCP en la home —el 60%—
   y 1.636 ms en /preparacion-de-taxes/, sin que nada pesara de más (descargar la
   foto tomaba 378 ms). La animación estaba pensada para las secciones de abajo,
   que el visitante alcanza al hacer scroll; aplicarla también arriba salía caro.
   Se apunta a la primera <section> de #main en vez de enumerar clases de hero,
   que son dos hoy (.rs-hero y .rs-phero) y podrían ser más mañana.
   Se conserva el desplazamiento: `transform` sí se pinta y no retrasa el LCP.
   Lo único que se quita es el fundido. */
.js #main > section:first-of-type .rs-up{opacity:1}
@media (prefers-reduced-motion:reduce){
  .js .rs-up{opacity:1;transform:none;transition:none}
}

/* =============================================================================
   Breakpoints
   ========================================================================== */
@media (min-width:640px){
  .rs-services{grid-template-columns:repeat(2,1fr)}
  .rs-team{grid-template-columns:repeat(2,1fr)}
  .rs-highlights{grid-template-columns:repeat(2,1fr)}
  .rs-features{grid-template-columns:repeat(2,1fr)}
  .rs-related{grid-template-columns:repeat(2,1fr)}
  .rs-pricing{grid-template-columns:repeat(2,1fr)}
  .rs-why{grid-template-columns:repeat(3,1fr)}
  .rs-posts{grid-template-columns:repeat(2,1fr)}
  .rs-testis{grid-template-columns:repeat(2,1fr)}
  .rs-testi--feat{grid-column:1/-1}
  .rs-itin{grid-template-columns:1fr auto}
  .rs-itin .rs-btn{white-space:nowrap}
  .rs-footer__grid{grid-template-columns:1.4fr 1fr 1fr}
}
@media (min-width:768px){
  .rs-steps{grid-template-columns:repeat(2,1fr);gap:32px 40px}
  /* Stat strip: 4 columnas con hairlines verticales */
  .rs-stats{grid-template-columns:repeat(4,1fr)}
  .rs-stat:nth-child(n+3){border-top:0}
  .rs-stat+.rs-stat{border-left:1px solid var(--rs-line)}
}
@media (min-width:1000px){
  .rs-nav{display:block}
  .rs-header__cta{display:flex}
  .rs-header__mobile{display:none}
  .rs-hero__grid{grid-template-columns:1.05fr .95fr}
  .rs-services{grid-template-columns:repeat(3,1fr)}
  .rs-posts{grid-template-columns:repeat(3,1fr)}
  .rs-testis{grid-template-columns:repeat(3,1fr)}
  .rs-testi--feat{display:grid;grid-template-columns:minmax(0,1fr) 250px;
    column-gap:44px;align-items:start;padding:36px}
  .rs-testi--feat .rs-testi__q{gap:18px}
  .rs-testi--feat .rs-testi__side{margin-top:0;gap:18px;
    border-left:1px solid var(--rs-line);padding-left:28px;align-self:stretch;
    justify-content:center}
  .rs-testi--feat blockquote{font-family:var(--rs-font-display);font-size:1.18rem;
    line-height:1.6;font-weight:400}
  /* auto-fit: 3 pasos → 3 cols (balanceados), 4 → 4, sin huecos a la derecha */
  .rs-steps{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
  .rs-local{grid-template-columns:.9fr 1.1fr}
  .rs-why-media{grid-template-columns:.82fr 1.18fr}
  .rs-ctaband__inner{grid-template-columns:1.1fr .9fr}
  .rs-highlights{grid-template-columns:repeat(4,1fr)}
  .rs-advisor{grid-template-columns:.85fr 1.15fr}
  .rs-phero__grid{grid-template-columns:1.05fr .95fr}
  .rs-notary{grid-template-columns:1.05fr .95fr}
  .rs-features{grid-template-columns:repeat(3,1fr)}
  .rs-related{grid-template-columns:repeat(3,1fr)}
  .rs-pricing{grid-template-columns:repeat(3,1fr)}
  .rs-split{grid-template-columns:1fr 1fr}
  .rs-split--wide-left{grid-template-columns:1.15fr .85fr}
  /* Proporciones de split para ITIN §7b/§7c (media/text en DOM order) */
  .rs-split--media-narrow{grid-template-columns:.82fr 1.18fr}
  .rs-split--text-wide{grid-template-columns:1.1fr .9fr}
  .rs-footer__grid{grid-template-columns:1.6fr 1fr 1fr 1fr}
  .rs-wafab{display:none}
}

/* ── Cover de artículo (Unsplash) ─────────────────────────────────────────── */
.rs-cover{margin:0}
.rs-cover img{width:100%;height:auto;display:block;border-radius:var(--rs-r);object-fit:cover}
.rs-cover__credit{margin-top:8px;font-size:.82rem;color:var(--rs-muted);line-height:var(--rs-lh-xs)}
.rs-cover__credit a{color:var(--rs-body);text-decoration:underline;text-underline-offset:2px}
.rs-cover__credit a:hover{color:var(--rs-teal-700)}
.rs-post__thumb .rs-post__img{width:100%;height:100%;object-fit:cover;display:block}

/* ── Calculadora de reembolso / saldo (inc/tax-estimator.php) ────────────────
   Cero hex a propósito: los estados "te devuelven" / "te toca pagar" reusan
   --rs-emerald y --rs-amber, que ya son semánticos en el sistema. */
/* Ancho propio, entre la prosa (720px) y la seccion completa (1160px): a 720
   las dos columnas quedaban apretadas en escritorio, y a 1160 la linea de
   texto de las ayudas se vuelve demasiado larga para leerse comoda. */
.rs-est{background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r-lg);
  padding:clamp(24px,3.4vw,38px);max-width:980px;margin-inline:auto}
.rs-est__head{margin-bottom:clamp(20px,2.4vw,28px)}
.rs-est__head h2,.rs-est__head h3{margin:0 0 8px}
.rs-est__head p{margin:0;color:var(--rs-body)}
.rs-est__grid{display:grid;gap:clamp(20px,2.6vw,32px);grid-template-columns:1fr;align-items:start}
.rs-est__form{display:grid;gap:16px}
.rs-est__row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rs-est__f{display:grid;gap:6px}
.rs-est__f>span{font-size:.9rem;font-weight:600;color:var(--rs-ink)}
.rs-est__f>span em{font-style:normal;font-weight:400;color:var(--rs-body)}
/* Las explicaciones de la calculadora y del filtro pasaron de --rs-muted a
   --rs-body el 2026-08-31, a pedido del dueno: "esas explicaciones son
   importantes". No es solo estetica — --rs-muted sobre blanco da ~3:1 y NO
   pasa el minimo de accesibilidad para texto normal; --rs-body da ~5.4:1 y si.
   Lighthouse no lo había cazado porque estos campos nacen ocultos (los grupos
   solo aparecen tras elegir como te pagaron) y no los llega a evaluar. */
.rs-est__f small{font-size:.85rem;color:var(--rs-body);line-height:var(--rs-lh-xs)}
.rs-est input[type=text],.rs-est select{width:100%;font:inherit;font-size:1rem;color:var(--rs-ink);
  background:var(--rs-bg);border:1px solid var(--rs-line);border-radius:var(--rs-r-sm);
  padding:12px 14px;min-height:var(--rs-ctl-h)}
.rs-est input[type=text]:focus-visible,.rs-est select:focus-visible{outline:2px solid var(--rs-teal);outline-offset:1px}
.rs-est__money{position:relative}
.rs-est__money i{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-style:normal;
  color:var(--rs-muted);font-weight:600;pointer-events:none}
/* [type=text] no es decorativo: sin el atributo, `.rs-est input[type=text]` de
   arriba gana en especificidad y el $ se come el primer digito. */
.rs-est__money input[type=text]{padding-left:28px}
/* Contenedor FLEX: sus hijos directos deben ser exactamente el icono y UN
   <span> con todo el texto. Si se mete <strong> suelto, el gap lo separa como
   columna y la frase se rompe (mismo caso que .rs-checklist li). */
.rs-est__priv{display:flex;gap:9px;align-items:flex-start;margin:2px 0 0;font-size:.84rem;
  color:var(--rs-body);line-height:var(--rs-lh-xs)}
.rs-est__priv .rs-ic{flex:none;color:var(--rs-emerald)}
.rs-est__out{background:var(--rs-bg-soft);border-radius:var(--rs-r);padding:clamp(22px,2.8vw,30px);
  min-height:210px;display:grid;align-content:center}
.rs-est__empty p{margin:0;color:var(--rs-muted);text-align:center}
.rs-est__label{display:block;font-size:.84rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--rs-body);margin-bottom:6px}
.rs-est__amount{font-family:var(--rs-font-display);font-weight:800;font-size:clamp(2.4rem,6vw,3.2rem);
  line-height:1;color:var(--rs-ink)}
.rs-est[data-est-state=owe] .rs-est__amount{color:var(--rs-amber)}
.rs-est[data-est-state=refund] .rs-est__amount{color:var(--rs-emerald)}
.rs-est__note{margin:12px 0 0;color:var(--rs-body);font-size:.92rem;line-height:var(--rs-lh-sm)}
.rs-est__break{list-style:none;margin:18px 0 0;padding:16px 0 0;border-top:1px solid var(--rs-line);
  display:grid;gap:9px;font-size:.9rem}
.rs-est__break li{display:flex;justify-content:space-between;gap:14px;color:var(--rs-body)}
.rs-est__break li b{color:var(--rs-ink);white-space:nowrap}
.rs-est__break li.rs-est__why{display:block;color:var(--rs-body);font-size:.85rem;
  line-height:var(--rs-lh-xs);border-top:1px solid var(--rs-line);padding-top:12px;margin-top:3px}
.rs-est__disc{margin:clamp(18px,2.2vw,26px) 0 0;font-size:.87rem;color:var(--rs-body);
  line-height:var(--rs-lh-sm)}
@media(min-width:820px){
  .rs-est__grid{grid-template-columns:1fr 1fr}
}

/* ── Filtro de calificación del ITIN (page-itin-a-distancia.php) ─────────────
   Cero hex: --rs-emerald para la salida "calificas", --rs-teal para las salidas
   informativas. Los .rs-flow__must / __tip son FLEX con gap: su contenido va
   siempre en icono + UN <span>, nunca <strong> suelto (misma trampa que
   .rs-checklist y .rs-est__priv — ya nos mordió dos veces). */
/* scroll-margin: al saltar aquí desde el hero, o al reencuadrar tras responder,
   el filtro tiene que quedar DEBAJO del header y no tapado por él. */
.rs-flow{background:var(--rs-surface);border:1px solid var(--rs-line);border-radius:var(--rs-r-lg);
  padding:clamp(16px,3.4vw,38px);scroll-margin-top:calc(var(--rs-header-h) + 14px)}
.rs-flow__prog{margin:0 0 14px;font-size:.8rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--rs-muted)}
/* "Volver": discreto pero con área de toque de sobra en móvil. */
.rs-flow__back{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:.9rem;
  font-weight:600;color:var(--rs-body);background:none;border:0;border-radius:var(--rs-r-sm);
  padding:8px 10px;margin:0 0 6px -10px;cursor:pointer}
.rs-flow__back:hover{color:var(--rs-teal);background:var(--rs-bg-soft)}
.rs-flow__back:focus-visible{outline:2px solid var(--rs-teal);outline-offset:2px}
.rs-flow__panel h3{margin:0 0 10px;font-size:var(--rs-h3)}
.rs-flow__panel h3:focus{outline:none}
.rs-flow__panel p{color:var(--rs-body);line-height:var(--rs-lh-base);margin:0 0 12px}
.rs-flow__hint{font-size:.92rem;color:var(--rs-body)!important}
.rs-flow__opts{display:grid;gap:9px;margin-top:16px}
.rs-flow__opt{display:block;width:100%;text-align:left;font:inherit;font-size:1.02rem;font-weight:600;
  color:var(--rs-ink);background:var(--rs-bg-soft);border:1px solid var(--rs-line);
  border-radius:var(--rs-r-sm);padding:14px 16px;cursor:pointer;transition:border-color .15s,background .15s}
.rs-flow__opt:hover{border-color:var(--rs-teal);background:var(--rs-teal-50)}
.rs-flow__opt:focus-visible{outline:2px solid var(--rs-teal);outline-offset:2px}
/* La barra de color de la izquierda se quitó el 2026-08-31: entre el borde y su
   sangría se comía ~26px de ancho en móvil, y cada píxel horizontal que se pierde
   son renglones de más hacia abajo. La salida buena se sigue distinguiendo, pero
   por el color del título — que no cuesta ancho. */
.rs-flow__panel--ok h3{color:var(--rs-acc-book-700)}
.rs-flow__must,.rs-flow__tip{display:flex;gap:11px;align-items:flex-start;background:var(--rs-bg-soft);
  border-radius:var(--rs-r-sm);padding:14px 16px;font-size:.92rem;line-height:var(--rs-lh-sm)}
.rs-flow__must .rs-ic{flex:none;color:var(--rs-amber)}
.rs-flow__tip .rs-ic{flex:none;color:var(--rs-teal)}
.rs-flow__price{margin:14px 0 0!important;font-size:.9rem;color:var(--rs-muted)}
.rs-flow .rs-btn-row{margin-top:18px}
.rs-est__chips{display:grid;gap:10px;margin-top:4px}
.rs-est__chip{display:block;width:100%;text-align:left;font:inherit;background:var(--rs-bg);
  border:1px solid var(--rs-line);border-radius:var(--rs-r-sm);padding:13px 15px;cursor:pointer;
  transition:border-color .15s,background .15s}
.rs-est__chip b{display:block;font-size:.98rem;color:var(--rs-ink)}
.rs-est__chip i{display:block;font-style:normal;font-size:.85rem;color:var(--rs-body);margin-top:2px}
.rs-est__chip:hover{border-color:var(--rs-teal)}
.rs-est__chip:focus-visible{outline:2px solid var(--rs-teal);outline-offset:2px}
.rs-est__chip[aria-pressed=true]{border-color:var(--rs-teal);background:var(--rs-teal-50)}
.rs-est__chip[aria-pressed=true] b{color:var(--rs-teal-700)}
@media(min-width:520px){.rs-est__chips{grid-template-columns:1fr 1fr}}
/* ── Intake del ITIN a distancia (inc/itin-intake.php) ───────────────────────
   Reusa los controles de la calculadora (.rs-est__f, __row) y el checkbox de
   consentimiento del formulario de contacto (.rs-consent). Cero hex. */
.rs-intake__form{display:grid;gap:16px;background:var(--rs-surface);border:1px solid var(--rs-line);
  border-radius:var(--rs-r-lg);padding:clamp(20px,3.4vw,38px)}
.rs-intake__form input[type=text],.rs-intake__form input[type=tel],.rs-intake__form input[type=email],
.rs-intake__form select{width:100%;font:inherit;font-size:1rem;color:var(--rs-ink);background:var(--rs-bg);
  border:1px solid var(--rs-line);border-radius:var(--rs-r-sm);padding:12px 14px;min-height:var(--rs-ctl-h)}
.rs-intake__form input:focus-visible,.rs-intake__form select:focus-visible{outline:2px solid var(--rs-teal);outline-offset:1px}
.rs-intake__terms{background:var(--rs-bg-soft);border-radius:var(--rs-r);padding:clamp(18px,2.6vw,26px);margin-top:6px}
.rs-intake__terms h2{margin:0 0 12px;font-size:1.15rem}
.rs-intake__terms ol{margin:0;padding-left:1.25rem;display:grid;gap:10px;color:var(--rs-body);
  font-size:.92rem;line-height:var(--rs-lh-sm)}
.rs-intake__legal{margin:14px 0 0;font-size:.85rem}
.rs-intake__ok{background:var(--rs-surface);border:1px solid var(--rs-emerald);border-radius:var(--rs-r-lg);
  padding:clamp(22px,3.4vw,38px)}
.rs-intake__ok h2{margin:0 0 10px;color:var(--rs-acc-book-700)}
.rs-intake__ok p{margin:0;color:var(--rs-body)}
.rs-intake__err{background:var(--rs-bg-soft);border-left:4px solid var(--rs-amber);border-radius:var(--rs-r-sm);
  padding:14px 16px;margin-bottom:16px;color:var(--rs-ink);font-size:.95rem}
