/* ════════════════════════════════════════════════════════════════════
   RegistroLegal Core — Design tokens + componentes
   Una sola fuente de verdad visual para web, buscador y POA.
   Sin frameworks. Server-side first. ~always < 30 KB sin minificar.
   ════════════════════════════════════════════════════════════════════ */

:root {
  /* Paleta corporativa (idéntica a la del PDF del POA) */
  --rl-crema:      #F3F1EF;
  --rl-verde:      #487265;  /* verde pino — identidad */
  --rl-verde-ink:  #3A5C52;  /* verde oscuro — texto sobre claro, AA */
  --rl-terracota:  #A85F3E;  /* acción / acento */
  --rl-terracota-ink: #8F4E31;
  --rl-carbon:     #292C33;  /* texto principal */
  --rl-gris:       #5F6368;  /* texto secundario (AA sobre crema) */
  --rl-borde:      #E2DDD7;
  --rl-blanco:     #FFFFFF;
  --rl-exito:      #2E7D53;
  --rl-alerta:     #B3801A;
  --rl-peligro:    #A8402E;

  /* Tipografía */
  --rl-font-display: "Fraunces", Georgia, "Times New Roman", serif;
  --rl-font-text: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  /* Escala */
  --rl-radius: 14px;
  --rl-radius-sm: 8px;
  --rl-shadow: 0 1px 3px rgba(41, 44, 51, .08);
  --rl-max: 72rem;
  --rl-max-text: 46rem;
}

/* ── Base dentro del ámbito del Core (prefijo .rl-) ─────────────────── */
.rl-scope {
  font-family: var(--rl-font-text);
  color: var(--rl-carbon);
  line-height: 1.6;
  font-size: 1rem;
  -webkit-font-smoothing: antialiased;
}
.rl-scope *, .rl-scope *::before, .rl-scope *::after { box-sizing: border-box; }
.rl-scope img { max-width: 100%; height: auto; }
.rl-scope a { color: var(--rl-terracota-ink); }
.rl-scope a:hover { text-decoration-thickness: 2px; }

/* ── Layout ─────────────────────────────────────────────────────────── */
.rl-container { max-width: var(--rl-max); margin: 0 auto; padding: 0 1rem; }
.rl-narrow { max-width: var(--rl-max-text); margin-left: auto; margin-right: auto; }
.rl-section { padding: 2.5rem 0; }
.rl-grid { display: grid; gap: 1.25rem; }
@media (min-width: 768px) {
  .rl-grid-2 { grid-template-columns: repeat(2, 1fr); }
  .rl-grid-3 { grid-template-columns: repeat(3, 1fr); }
  .rl-section { padding: 3.5rem 0; }
}

/* ── Tipografía ─────────────────────────────────────────────────────── */
.rl-scope h1, .rl-scope h2, .rl-scope h3, .rl-h1, .rl-h2, .rl-h3 {
  font-family: var(--rl-font-display);
  color: var(--rl-carbon);
  line-height: 1.2;
  margin: 0 0 .6em;
}
.rl-h1 { font-size: clamp(1.9rem, 4.5vw, 2.9rem); font-weight: 700; }
.rl-h2 { font-size: clamp(1.45rem, 3vw, 2rem); font-weight: 600; }
.rl-h3 { font-size: 1.15rem; font-weight: 600; }
.rl-kicker {
  display: block;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--rl-verde-ink);
  margin-bottom: .6rem;
}
.rl-lead { font-size: 1.06rem; color: var(--rl-gris); }
.rl-muted { color: var(--rl-gris); font-size: .9rem; }

/* ── Hero ───────────────────────────────────────────────────────────── */
.rl-hero { background: var(--rl-crema); border-bottom: 1px solid var(--rl-borde); }
.rl-hero .rl-container { padding-top: 3rem; padding-bottom: 3rem; }

/* ── Tarjetas ───────────────────────────────────────────────────────── */
.rl-card {
  background: var(--rl-blanco);
  border: 1px solid var(--rl-borde);
  border-radius: var(--rl-radius);
  padding: 1.5rem;
  box-shadow: var(--rl-shadow);
}
.rl-card-step { border-top: 3px solid var(--rl-verde); }
.rl-step-num {
  display: inline-block;
  font-size: .72rem;
  font-weight: 700;
  color: var(--rl-terracota-ink);
  letter-spacing: .05em;
  text-transform: uppercase;
  margin-bottom: .5rem;
}

/* ── Botones ────────────────────────────────────────────────────────── */
.rl-btn {
  display: inline-block;
  font-family: var(--rl-font-text);
  font-weight: 700;
  font-size: .95rem;
  padding: .85rem 1.6rem;
  border-radius: var(--rl-radius-sm);
  border: 2px solid transparent;
  text-decoration: none;
  cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.rl-btn-primary { background: var(--rl-terracota); color: #fff !important; }
.rl-btn-primary:hover { background: var(--rl-terracota-ink); }
.rl-btn-secondary { background: transparent; color: var(--rl-verde-ink) !important; border-color: var(--rl-verde); }
.rl-btn-secondary:hover { background: var(--rl-verde); color: #fff !important; }
.rl-btn-block { display: block; width: 100%; text-align: center; }

/* ── Precio ─────────────────────────────────────────────────────────── */
.rl-price-box {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .4rem .8rem;
  background: var(--rl-blanco);
  border: 1px solid var(--rl-borde);
  border-left: 4px solid var(--rl-terracota);
  border-radius: var(--rl-radius-sm);
  padding: 1rem 1.25rem;
  margin: 1.25rem 0;
}
.rl-price { font-family: var(--rl-font-display); font-size: 1.7rem; font-weight: 700; color: var(--rl-carbon); }
.rl-price-note { font-size: .85rem; color: var(--rl-gris); }

/* ── Listas de beneficios / requisitos ──────────────────────────────── */
.rl-check-list { list-style: none; margin: 0; padding: 0; }
.rl-check-list li {
  position: relative;
  padding-left: 1.7rem;
  margin-bottom: .6rem;
}
.rl-check-list li::before {
  content: "";
  position: absolute;
  left: 0; top: .32em;
  width: .95em; height: .95em;
  border-radius: 50%;
  background: var(--rl-verde);
  -webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="black" d="M8 0a8 8 0 100 16A8 8 0 008 0zm3.7 6.2l-4.2 4.6a.8.8 0 01-1.2 0L4.3 8.6a.8.8 0 111.2-1.1l1.4 1.5 3.6-4a.8.8 0 111.2 1.2z"/></svg>') center/contain no-repeat;
          mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="black" d="M8 0a8 8 0 100 16A8 8 0 008 0zm3.7 6.2l-4.2 4.6a.8.8 0 01-1.2 0L4.3 8.6a.8.8 0 111.2-1.1l1.4 1.5 3.6-4a.8.8 0 111.2 1.2z"/></svg>') center/contain no-repeat;
}

/* ── FAQ (details/summary: accesible, sin JS) ───────────────────────── */
.rl-faq { border: 1px solid var(--rl-borde); border-radius: var(--rl-radius-sm); background: var(--rl-blanco); margin-bottom: .75rem; }
.rl-faq summary {
  cursor: pointer;
  font-weight: 600;
  padding: .95rem 1.1rem;
  list-style: none;
  position: relative;
  padding-right: 2.4rem;
}
.rl-faq summary::-webkit-details-marker { display: none; }
.rl-faq summary::after {
  content: "+";
  position: absolute;
  right: 1.1rem; top: 50%;
  transform: translateY(-50%);
  font-size: 1.25rem;
  color: var(--rl-terracota);
  font-weight: 700;
}
.rl-faq[open] summary::after { content: "–"; }
.rl-faq-body { padding: 0 1.1rem 1rem; color: var(--rl-gris); }

/* ── Breadcrumbs ────────────────────────────────────────────────────── */
.rl-breadcrumbs { font-size: .8rem; color: var(--rl-gris); padding: .9rem 0; }
.rl-breadcrumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: .35rem; margin: 0; padding: 0; }
.rl-breadcrumbs li + li::before { content: "›"; margin-right: .35rem; color: var(--rl-borde); }
.rl-breadcrumbs a { color: var(--rl-gris); text-decoration: none; }
.rl-breadcrumbs a:hover { color: var(--rl-verde-ink); text-decoration: underline; }

/* ── Señales de confianza ───────────────────────────────────────────── */
.rl-trust {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem 1.6rem;
  font-size: .8rem;
  font-weight: 600;
  color: var(--rl-verde-ink);
  text-transform: uppercase;
  letter-spacing: .04em;
}

/* ── Bloque CTA final ───────────────────────────────────────────────── */
.rl-cta-band {
  background: var(--rl-verde);
  color: #fff;
  border-radius: var(--rl-radius);
  padding: 2rem 1.5rem;
  text-align: center;
}
.rl-cta-band .rl-h2 { color: #fff; }
.rl-cta-band p { color: rgba(255, 255, 255, .85); }

/* ── Contenido relacionado ──────────────────────────────────────────── */
.rl-related a { display: block; padding: .8rem 1rem; border: 1px solid var(--rl-borde); border-radius: var(--rl-radius-sm); background: var(--rl-blanco); text-decoration: none; color: var(--rl-carbon); font-weight: 600; font-size: .92rem; }
.rl-related a:hover { border-color: var(--rl-verde); }

/* ── Semáforo del buscador ──────────────────────────────────────────── */
.rl-verdict { display: inline-flex; align-items: center; gap: .5rem; font-weight: 700; border-radius: 999px; padding: .4rem 1rem; font-size: .9rem; }
.rl-verdict::before { content: ""; width: .7em; height: .7em; border-radius: 50%; background: currentColor; }
.rl-verdict-libre { background: #E7F2EC; color: var(--rl-exito); }
.rl-verdict-precaucion { background: #F7EEDD; color: var(--rl-alerta); }
.rl-verdict-conflicto { background: #F6E5E1; color: var(--rl-peligro); }

/* ── Catálogo de servicios ──────────────────────────────────────────── */
.rl-catalogo-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: .75rem;
  margin-bottom: .5rem;
}
.rl-catalogo-precio {
  font-family: var(--rl-font-display);
  font-weight: 700;
  color: var(--rl-terracota-ink);
  white-space: nowrap;
}
.rl-badge {
  display: inline-block;
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rl-verde-ink);
  background: #E7F2EC;
  border-radius: 999px;
  padding: .2rem .7rem;
  margin-bottom: .6rem;
}
.rl-catalogo .rl-grid { margin-bottom: 1rem; }

/* ── Prosa editorial (contenido libre del editor: guías, cuerpos) ───── */
.rl-prose { font-size: 1.02rem; line-height: 1.75; }
.rl-prose h2 { font-family: var(--rl-font-display); font-size: 1.55rem; font-weight: 600; margin: 1.8em 0 .6em; }
.rl-prose h3 { font-family: var(--rl-font-display); font-size: 1.2rem; font-weight: 600; margin: 1.5em 0 .5em; }
.rl-prose p { margin: 0 0 1.1em; }
.rl-prose ul, .rl-prose ol { margin: 0 0 1.1em; padding-left: 1.4em; }
.rl-prose li { margin-bottom: .45em; }
.rl-prose a { color: var(--rl-terracota-ink); font-weight: 600; }
.rl-prose blockquote {
  margin: 1.4em 0;
  padding: .8em 1.2em;
  border-left: 4px solid var(--rl-verde);
  background: var(--rl-blanco);
  border-radius: 0 var(--rl-radius-sm) var(--rl-radius-sm) 0;
  color: var(--rl-gris);
}
.rl-prose img { border-radius: var(--rl-radius-sm); margin: 1em 0; }
.rl-prose table { width: 100%; border-collapse: collapse; margin: 1.2em 0; font-size: .95rem; }
.rl-prose th, .rl-prose td { border: 1px solid var(--rl-borde); padding: .55em .8em; text-align: left; }
.rl-prose th { background: var(--rl-blanco); font-weight: 700; }
.rl-prose strong { color: var(--rl-carbon); }
.rl-prose hr { border: 0; border-top: 1px solid var(--rl-borde); margin: 2em 0; }

/* ── Formulario de leads ────────────────────────────────────────────── */
.rl-form { max-width: 34rem; }
.rl-form-field label {
  display: block;
  font-size: .8rem;
  font-weight: 600;
  color: var(--rl-carbon);
  margin-bottom: .3rem;
}
.rl-form-field input,
.rl-form-field textarea {
  width: 100%;
  padding: .7rem .85rem;
  border: 1px solid var(--rl-borde);
  border-radius: var(--rl-radius-sm);
  font-family: var(--rl-font-text);
  font-size: .95rem;
  color: var(--rl-carbon);
  background: var(--rl-blanco);
}
.rl-form-field input:focus,
.rl-form-field textarea:focus {
  outline: 2px solid var(--rl-verde);
  outline-offset: 1px;
  border-color: var(--rl-verde);
}
.rl-req { color: var(--rl-terracota); }
.rl-form-consent {
  display: flex;
  align-items: flex-start;
  gap: .6rem;
  font-size: .78rem;
  color: var(--rl-gris);
  line-height: 1.5;
}
.rl-form-consent input {
  margin-top: .25rem;
  width: 1.05rem; height: 1.05rem;
  accent-color: var(--rl-verde);
  flex-shrink: 0;
}
.rl-form-status, .rl-form-flash {
  font-size: .9rem;
  font-weight: 600;
  margin: .6rem 0 0;
}
.rl-form-ok { color: var(--rl-exito); }
.rl-form-error { color: var(--rl-peligro); }
.rl-hp {
  position: absolute !important;
  left: -9999px !important;
  width: 1px; height: 1px;
  overflow: hidden;
  opacity: 0;
}

/* ── Utilidades mínimas ─────────────────────────────────────────────── */
.rl-mt-0 { margin-top: 0; } .rl-mb-0 { margin-bottom: 0; }
.rl-center { text-align: center; }
.rl-visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}

/* ── Imagen del servicio (v1.59.0) ──────────────────────────────────────
   La imagen de cada servicio es su icono sobre una baldosa plana, siempre
   en la misma proporción: se alinean solas en la grilla y pesan 3 KB. Si
   el editor sube una imagen destacada, esa manda.
   El color agrupa en vez de decorar: verde lo que se contrata, gris los
   hitos del expediente, terracota las contingencias.                     */
.rl-servicio-imagen {
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
/* Sangra a los bordes de la tarjeta sin tocar el marcado existente. */
.rl-card-con-imagen > .rl-servicio-imagen {
  margin: -1.5rem -1.5rem 1.25rem;
  border-radius: var(--rl-radius) var(--rl-radius) 0 0;
}
.rl-tono-verde     { background: #EAF0EE; color: var(--rl-verde-ink); }
.rl-tono-gris      { background: #EFEDEA; color: var(--rl-gris); }
.rl-tono-terracota { background: #F4EEE2; color: var(--rl-terracota-ink); }

.rl-servicio-imagen--foto { aspect-ratio: 16 / 9; height: auto; background: var(--rl-crema); }
.rl-servicio-imagen--foto .rl-servicio-foto {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
@media (prefers-reduced-motion: no-preference) {
  .rl-card-con-imagen { transition: box-shadow .15s ease; }
}

/* ── Página de precios y banner del Estudio (v1.60.0) ───────────────────
   El checkout existía sin un solo enlace público en el sitio. Estas dos
   piezas son el camino a la caja.                                       */
/* EL TOPE DE ANCHO ES DEL SHORTCODE, NO DEL TEMA.
   Un shortcode no puede confiar en que el contenedor que lo recibe tenga
   ancho máximo: en una sección a todo lo ancho de Elementor no lo tiene, y
   la página se estira hasta el borde de la pantalla. Cada shortcode del
   plugin se pone su propio techo (el de viabilidad 560, el de afiliados
   900); estos dos usan el mismo valor que .rl-container, así que dentro de
   un contenedor ya acotado no cambian nada. */
.rl-precios,
.rl-banner-estudio {
  max-width: var(--rl-max);
  margin-left: auto;
  margin-right: auto;
}
.rl-precios { padding-left: 1rem; padding-right: 1rem; }

.rl-precios-hero { display: grid; gap: 2rem; align-items: start; padding: 1rem 0 0; }
.rl-precios-incluye { align-self: stretch; }
.rl-precios-aviso {
  background: #FBF0DA; border: 1px solid #E8DCC6;
  border-radius: var(--rl-radius-sm); padding: .75rem 1rem;
}
/* v1.73.0 — el plazo de entrega, junto al precio: es el dato que más frena un pago. */
.rl-precios-entrega { color: var(--rl-verde-ink); font-weight: 600; margin: .35rem 0 1rem; }
.rl-card-destacada { border-top: 3px solid var(--rl-terracota); }
.rl-card-contingencia { background: transparent; border-style: dashed; box-shadow: none; }
.rl-price-referencial { color: var(--rl-gris); }
.rl-kicker-gris { color: var(--rl-gris); margin-bottom: .5rem; }
.rl-aviso-plazo {
  background: #FBF6EF; border: 1px solid #E8DCC6;
  border-radius: var(--rl-radius-sm); padding: .85rem 1rem; font-size: .9rem;
}
.rl-precios-vigilancia { display: flex; gap: 1.5rem; align-items: center; flex-wrap: wrap; }
.rl-vigilancia-texto { flex: 1 1 22rem; }
.rl-tile-compacta {
  display: flex; align-items: center; justify-content: center; flex: none;
  width: 56px; height: 56px; border-radius: 10px; margin-bottom: 1rem;
}
.rl-tile-grande {
  display: flex; align-items: center; justify-content: center; flex: none;
  width: 92px; height: 92px; border-radius: 12px;
}
.rl-precios-pie { border-top: 1px solid var(--rl-borde); padding-top: 1.25rem; }

.rl-banner-estudio {
  display: flex; gap: 1.25rem; align-items: center; flex-wrap: wrap;
  background: var(--rl-blanco); border: 1px solid var(--rl-borde);
  border-left: 4px solid var(--rl-terracota);
  border-radius: var(--rl-radius); padding: 1.4rem 1.6rem;
  margin: 2.5rem auto 1rem; box-shadow: var(--rl-shadow);
}
.rl-banner-icono {
  display: flex; align-items: center; justify-content: center; flex: none;
  width: 68px; height: 68px; background: #EAF0EE; color: var(--rl-verde-ink);
  border-radius: 10px;
}
.rl-banner-texto { flex: 1 1 18rem; }
.rl-banner-titulo { font-family: var(--rl-font-display); font-weight: 600; font-size: 1.15rem; margin: 0 0 .3rem; }
.rl-banner-bajada { color: var(--rl-gris); font-size: .9rem; margin: 0; }
.rl-banner-accion { flex: none; display: flex; flex-direction: column; gap: .4rem; align-items: stretch; }
.rl-banner-nota { color: var(--rl-gris); font-size: .78rem; text-align: center; }
.rl-banner-compacto { padding: 1.1rem 1.25rem; }
.rl-banner-compacto .rl-banner-icono { width: 52px; height: 52px; }
.rl-banner-compacto .rl-banner-titulo { font-size: 1.02rem; }

@media (min-width: 768px) {
  .rl-precios-hero { grid-template-columns: 1.3fr .7fr; gap: 3rem; }
}
@media (max-width: 640px) {
  .rl-banner-accion { width: 100%; }
  .rl-banner-accion .rl-btn { display: block; text-align: center; }
}

/* v1.76.0 — un lugar de precio que dice una frase («Se cotiza con el informe») en vez de un monto. */
.rl-price-texto { font-size: 1.05rem; font-weight: 700; color: var(--rl-verde-ink); }
.rl-catalogo-sin-monto { font-size: .9em; font-weight: 700; color: var(--rl-verde-ink); }
