/*
 * Formularios de eje-social — rating-input multicriterio accesible (DESIGN §7.3).
 * CERO hex hardcodeados: color vía tokens del child (paleta «Hora violeta») con el
 * bridge de Vulcano y fallback al preset del theme.json. Reproduce estructura/clases
 * del mockup aprobado (alta-resena.html). Candidato a `vulcano/rating-input` (Fase 7).
 *
 * Técnica sin JS: radios REALES 1–5 (patrón radio nativo con teclado de flechas). La
 * estrella se dibuja en un <span> hermano; el radio es transparente pero CONSERVA su
 * caja (target ≥24px, aquí ~44px) para recibir el foco — el outline 3px accent se
 * pinta sobre el propio radio (control enfocado), nunca se oculta. El relleno de las
 * estrellas usa :has()/:checked (progresivo: sin :has cae al relleno por estrella).
 */
.eje-rating-input {
  --eje-canvas: var(--vulcano-color-canvas, var(--wp--preset--color--canvas));
  --eje-surface: var(--vulcano-color-surface, var(--wp--preset--color--surface));
  --eje-text: var(--vulcano-color-text, var(--wp--preset--color--text));
  --eje-text-soft: var(--vulcano-color-text-soft, var(--wp--preset--color--text-soft));
  --eje-brand-strong: var(--vulcano-color-brand-strong, var(--wp--preset--color--brand-strong));
  --eje-accent: var(--vulcano-color-accent, var(--wp--preset--color--accent));
  --eje-border: var(--vulcano-color-border, var(--wp--preset--color--border));

  --eje-sp-2xs: var(--vulcano-space-2xs, 0.25rem);
  --eje-sp-xs: var(--vulcano-space-xs, 0.5rem);
  --eje-sp-s: var(--vulcano-space-s, 0.75rem);
  --eje-sp-m: var(--vulcano-space-m, 1rem);
  --eje-sp-l: var(--vulcano-space-l, 1.5rem);

  --eje-r-sm: var(--vulcano-radius-sm, 0.25rem);

  --eje-fs-xs: var(--vulcano-font-size-xs, 0.85rem);

  --eje-focus: var(--vulcano-focus-color, var(--wp--preset--color--accent, var(--eje-accent)));

  color: var(--eje-text);
}

/* Alternativa textual accesible (fallback por si el theme no la define). */
.eje-rating-input .sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.eje-rating-input__note {
  color: var(--eje-text-soft);
  font-size: var(--eje-fs-xs);
  margin: 0 0 var(--eje-sp-m);
}

.eje-rating-input .req {
  color: var(--eje-brand-strong);
  font-weight: 700;
}

/* Un eje = un radiogroup (fieldset sin borde; el legend es el nombre del eje). */
.eje-rating-input .axis {
  border: 0;
  padding: 0;
  margin: 0 0 var(--eje-sp-m);
  min-width: 0;
}

.eje-rating-input .axis__legend {
  font-weight: 700;
  padding: 0;
  margin-bottom: var(--eje-sp-2xs);
  color: var(--eje-text);
}

/* Icono DECORATIVO del eje (RC5.6/RC5.7): acompaña al texto de la leyenda, nunca lo
   sustituye. Usa currentColor, así iguala el contraste del texto (≥ 3:1 gráfico). */
.eje-axis-icon {
  width: 1em;
  height: 1em;
  flex: 0 0 auto;
  vertical-align: -0.125em;
  margin-inline-end: 0.35em;
}

.eje-rating-input .axis__opt,
.eje-rating-input .axis__req-label {
  font-weight: 400;
  color: var(--eje-text-soft);
}

.eje-rating-input .glossa {
  color: var(--eje-text-soft);
  font-size: var(--eje-fs-xs);
  margin: 0 0 var(--eje-sp-xs);
}

/* Campo de estrellas. */
.eje-rating-input .starfield {
  display: inline-flex;
  gap: 0.15rem;
}

/* Cada estrella: label que envuelve el radio (transparente) y el glifo. Target 44px. */
.eje-rating-input .star {
  position: relative;
  display: inline-grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  cursor: pointer;
}

/* El radio REAL cubre toda la estrella y es transparente, pero conserva caja: es el
 * control que recibe el foco. NO se usa opacity:0 (borraría también el outline). */
.eje-rating-input .star input[type="radio"] {
  -webkit-appearance: none;
  appearance: none;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  border-radius: var(--eje-r-sm);
}

/* Foco visible: outline 3px accent SOBRE el propio radio (control enfocado). */
.eje-rating-input .star input[type="radio"]:focus-visible {
  outline: 3px solid var(--eje-focus);
  outline-offset: 2px;
}

/* Glifo de estrella: forma vacía (☆) por defecto — distinción por FORMA, no solo
 * color (WCAG 1.4.1). Debajo del radio transparente. */
.eje-rating-input .star .st {
  font-size: 2rem;
  line-height: 1;
  color: var(--eje-text-soft);
  pointer-events: none;
}

.eje-rating-input .star .st::before {
  content: "\2606"; /* ☆ contorno */
}

/* Estrella marcada (fallback por estrella, sin :has): rellena y accent. */
.eje-rating-input .star input[type="radio"]:checked ~ .st {
  color: var(--eje-accent);
}

.eje-rating-input .star input[type="radio"]:checked ~ .st::before {
  content: "\2605"; /* ★ rellena */
}

/* Relleno de la estrella elegida Y las anteriores (:has, progresivo). */
.eje-rating-input .starfield:has(input[value="1"]:checked) .star:nth-of-type(-n+1) .st,
.eje-rating-input .starfield:has(input[value="2"]:checked) .star:nth-of-type(-n+2) .st,
.eje-rating-input .starfield:has(input[value="3"]:checked) .star:nth-of-type(-n+3) .st,
.eje-rating-input .starfield:has(input[value="4"]:checked) .star:nth-of-type(-n+4) .st,
.eje-rating-input .starfield:has(input[value="5"]:checked) .star:nth-of-type(-n+5) .st {
  color: var(--eje-accent);
}

.eje-rating-input .starfield:has(input[value="1"]:checked) .star:nth-of-type(-n+1) .st::before,
.eje-rating-input .starfield:has(input[value="2"]:checked) .star:nth-of-type(-n+2) .st::before,
.eje-rating-input .starfield:has(input[value="3"]:checked) .star:nth-of-type(-n+3) .st::before,
.eje-rating-input .starfield:has(input[value="4"]:checked) .star:nth-of-type(-n+4) .st::before,
.eje-rating-input .starfield:has(input[value="5"]:checked) .star:nth-of-type(-n+5) .st::before {
  content: "\2605"; /* ★ rellena */
}

/* Vista previa al pasar el puntero: rellena la estrella señalada y anteriores
 * (enhancement; no reduce el relleno del valor ya elegido). */
.eje-rating-input .starfield:has(.star:nth-of-type(1):hover) .star:nth-of-type(-n+1) .st,
.eje-rating-input .starfield:has(.star:nth-of-type(2):hover) .star:nth-of-type(-n+2) .st,
.eje-rating-input .starfield:has(.star:nth-of-type(3):hover) .star:nth-of-type(-n+3) .st,
.eje-rating-input .starfield:has(.star:nth-of-type(4):hover) .star:nth-of-type(-n+4) .st,
.eje-rating-input .starfield:has(.star:nth-of-type(5):hover) .star:nth-of-type(-n+5) .st {
  color: var(--eje-accent);
}

.eje-rating-input .starfield:has(.star:nth-of-type(1):hover) .star:nth-of-type(-n+1) .st::before,
.eje-rating-input .starfield:has(.star:nth-of-type(2):hover) .star:nth-of-type(-n+2) .st::before,
.eje-rating-input .starfield:has(.star:nth-of-type(3):hover) .star:nth-of-type(-n+3) .st::before,
.eje-rating-input .starfield:has(.star:nth-of-type(4):hover) .star:nth-of-type(-n+4) .st::before,
.eje-rating-input .starfield:has(.star:nth-of-type(5):hover) .star:nth-of-type(-n+5) .st::before {
  content: "\2605";
}

.eje-rating-input .chosen {
  display: inline-block;
  margin-left: var(--eje-sp-s);
  font-size: var(--eje-fs-xs);
  color: var(--eje-text-soft);
}

/* Error de campo (general sin valor al enviar). */
.eje-rating-input .field-error {
  color: var(--eje-brand-strong);
  font-weight: 600;
  font-size: var(--eje-fs-xs);
  margin-top: var(--eje-sp-2xs);
  display: flex;
  gap: 0.3rem;
  align-items: center;
}

/* Respeta reduce-motion: no hay animaciones, pero desactiva transiciones si las hubiera. */
@media (prefers-reduced-motion: reduce) {
  .eje-rating-input * {
    transition: none !important;
  }
}

/* ==================================================================
 * Alta de reseña (eje/alta-resena, T5.3 · DESIGN §8·R18, mockup alta-resena.html).
 * CERO hex: color/espaciado vía tokens del child (paleta «Hora violeta») con el
 * bridge de Vulcano y fallback al preset del theme.json. Reproduce la estructura y
 * clases del mockup aprobado.
 * ================================================================== */
.eje-alta-resena-block {
  --eje-canvas: var(--vulcano-color-canvas, var(--wp--preset--color--canvas));
  --eje-surface: var(--vulcano-color-surface, var(--wp--preset--color--surface));
  --eje-text: var(--vulcano-color-text, var(--wp--preset--color--text));
  --eje-text-soft: var(--vulcano-color-text-soft, var(--wp--preset--color--text-soft));
  --eje-brand: var(--vulcano-color-brand, var(--wp--preset--color--brand));
  --eje-brand-strong: var(--vulcano-color-brand-strong, var(--wp--preset--color--brand-strong));
  --eje-accent: var(--vulcano-color-accent, var(--wp--preset--color--accent));
  --eje-accent-2: var(--vulcano-color-accent-2, var(--wp--preset--color--accent-2));
  --eje-inverse: var(--vulcano-color-inverse, var(--wp--preset--color--inverse));
  --eje-border: var(--vulcano-color-border, var(--wp--preset--color--border));

  --eje-sp-2xs: var(--vulcano-space-2xs, 0.25rem);
  --eje-sp-xs: var(--vulcano-space-xs, 0.5rem);
  --eje-sp-s: var(--vulcano-space-s, 0.75rem);
  --eje-sp-m: var(--vulcano-space-m, 1rem);
  --eje-sp-l: var(--vulcano-space-l, 1.5rem);
  --eje-sp-xl: var(--vulcano-space-xl, 2rem);

  --eje-r-sm: var(--vulcano-radius-sm, 0.25rem);
  --eje-r-md: var(--vulcano-radius-md, 0.375rem);
  --eje-r-lg: var(--vulcano-radius-lg, 0.75rem);
  --eje-r-pill: var(--vulcano-radius-pill, 999px);

  --eje-shadow-sm: 0 1px 2px color-mix(in srgb, var(--eje-text) 8%, transparent);
  --eje-focus: var(--vulcano-focus-color, var(--wp--preset--color--accent, var(--eje-accent)));

  color: var(--eje-text);
}

/* Doblamos la clase para ganar por especificidad al contenedor del shell. */
.eje-alta-resena-block.eje-alta-resena-block {
  max-width: 48rem;
  margin-inline: auto;
}

.eje-alta-resena-block .sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Foco visible accent (WCAG 2.4.11 AA) sobre todo control interactivo. */
.eje-alta-resena-block a:focus-visible,
.eje-alta-resena-block button:focus-visible,
.eje-alta-resena-block input:focus-visible,
.eje-alta-resena-block select:focus-visible,
.eje-alta-resena-block textarea:focus-visible,
.eje-alta-resena-block [tabindex]:focus-visible {
  outline: 3px solid var(--eje-focus);
  outline-offset: 2px;
  border-radius: var(--eje-r-sm);
}

.eje-alta-resena-block a { color: var(--eje-brand-strong); }

.eje-review__reqnote {
  color: var(--eje-text-soft);
  font-size: 0.85rem;
  margin: 0 0 var(--eje-sp-l);
}
.eje-alta-resena-block .req { color: var(--eje-brand-strong); font-weight: 700; }

/* Botones (reutiliza el lenguaje de la ficha). */
.eje-alta-resena-block .eje-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  min-height: 2.75rem;
  padding: 0.55rem 1.15rem;
  border-radius: var(--eje-r-md);
  font: inherit;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
}
.eje-alta-resena-block .eje-btn--primary {
  background: var(--eje-brand);
  color: var(--eje-inverse);
  border: 1px solid var(--eje-brand);
}
.eje-alta-resena-block .eje-btn--primary:hover {
  background: var(--eje-brand-strong);
  border-color: var(--eje-brand-strong);
}

/* Paso 0 fijado · card compacta del local. */
.eje-review-context {
  display: flex;
  align-items: center;
  gap: var(--eje-sp-m);
  background: var(--eje-surface);
  border: 1px solid var(--eje-border);
  border-radius: var(--eje-r-lg);
  padding: var(--eje-sp-m);
  margin-bottom: var(--eje-sp-l);
  box-shadow: var(--eje-shadow-sm);
}
.eje-review-context__thumb {
  width: 3.5rem;
  height: 3.5rem;
  border-radius: var(--eje-r-md);
  background: linear-gradient(135deg, var(--eje-accent-2), var(--eje-brand));
  flex: none;
}
.eje-review-context__info { flex: 1; min-width: 0; }
.eje-review-context__info strong { display: block; }
.eje-review-context__info span { color: var(--eje-text-soft); font-size: 0.85rem; }
.eje-review-context__change { font-size: 0.85rem; font-weight: 600; white-space: nowrap; }

/* Avisos (info) · autor sin grupos / login / paso 0 inválido. */
.eje-review-alert {
  border-radius: var(--eje-r-md);
  padding: var(--eje-sp-m);
  margin-bottom: var(--eje-sp-m);
  display: flex;
  gap: var(--eje-sp-s);
  align-items: flex-start;
  background: var(--eje-surface);
  border: 1px solid var(--eje-accent-2);
}
.eje-review-alert__ico { flex: none; font-size: 1.2rem; color: var(--eje-accent-2); }
.eje-review-alert p { margin: 0 0 var(--eje-sp-2xs); }
.eje-review-alert p:last-child { margin-bottom: 0; }
.eje-review-alert__actions { font-size: 0.85rem; }

/* Resumen de errores (enfocable, role=alert). */
.eje-review-errors {
  border: 2px solid var(--eje-brand-strong);
  border-radius: var(--eje-r-md);
  padding: var(--eje-sp-m);
  margin-bottom: var(--eje-sp-l);
  background: var(--eje-surface);
}
.eje-review-errors__title {
  font-size: 1.05rem;
  margin: 0 0 var(--eje-sp-xs);
  color: var(--eje-brand-strong);
}
.eje-review-errors__list { margin: 0; padding-left: 1.25rem; }
.eje-review-errors__list a { color: var(--eje-brand-strong); font-weight: 600; }

/* Secciones (cards) con h2. */
.eje-review-section {
  border: 1px solid var(--eje-border);
  border-radius: var(--eje-r-lg);
  padding: var(--eje-sp-l);
  margin: 0 0 var(--eje-sp-l);
  background: var(--eje-surface);
}
.eje-review-section__title {
  font-size: 1.15rem;
  font-weight: 700;
  margin: 0 0 var(--eje-sp-m);
}

/* Campos genéricos. */
.eje-field { margin: 0 0 var(--eje-sp-s); }
.eje-field__label { display: block; font-weight: 600; margin-bottom: var(--eje-sp-2xs); }
.eje-field__control {
  width: 100%;
  max-width: 100%;
  font: inherit;
  color: var(--eje-text);
  background: var(--eje-canvas);
  border: 1px solid var(--eje-border);
  border-radius: var(--eje-r-md);
  padding: 0.6rem 0.7rem;
}
.eje-review-texto { min-height: 8rem; resize: vertical; }
.eje-review-charcount { font-size: 0.85rem; color: var(--eje-text-soft); margin: var(--eje-sp-2xs) 0 0; }

/* Uploader (§7.7). */
.eje-review-uploader__help { color: var(--eje-text-soft); font-size: 0.85rem; margin: 0 0 var(--eje-sp-s); }
.eje-review-uploader__field input[type="file"] {
  min-height: 2.75rem;
  padding: 0.5rem;
}

/* Error de campo (compartido con rating-input). */
.eje-alta-resena-block .eje-field-error {
  color: var(--eje-brand-strong);
  font-weight: 600;
  font-size: 0.85rem;
  margin-top: var(--eje-sp-2xs);
  display: flex;
  gap: 0.3rem;
  align-items: center;
}

/* Selector de visibilidad (§7.4). */
.eje-vis { border: 0; padding: 0; margin: 0; min-width: 0; }
.eje-vis-option {
  border: 1px solid var(--eje-border);
  border-radius: var(--eje-r-md);
  padding: var(--eje-sp-m);
  margin-bottom: var(--eje-sp-s);
}
.eje-vis-option.is-selected { border-color: var(--eje-brand); box-shadow: 0 0 0 1px var(--eje-brand); }
.eje-vis-option__row { display: flex; align-items: flex-start; gap: var(--eje-sp-xs); }
.eje-vis-option input[type="radio"] {
  width: 1.3rem;
  height: 1.3rem;
  margin-top: 0.15rem;
  accent-color: var(--eje-brand);
  flex: none;
}
.eje-vis-option__label { font-weight: 600; }
.eje-vis-option__tag {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--eje-accent-2);
  border: 1px solid var(--eje-accent-2);
  border-radius: var(--eje-r-pill);
  padding: 0.05rem 0.5rem;
  margin-left: var(--eje-sp-2xs);
}
.eje-vis-option__desc { color: var(--eje-text-soft); font-size: 0.85rem; margin: 0.2rem 0 0 1.75rem; }

.eje-vis-nested {
  margin: var(--eje-sp-s) 0 0 1.75rem;
  border: 1px solid var(--eje-border);
  border-radius: var(--eje-r-md);
  padding: var(--eje-sp-m);
  min-width: 0;
}
.eje-vis-nested__legend {
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--eje-text-soft);
  padding: 0;
}
.eje-vis-nested__empty { color: var(--eje-text-soft); font-size: 0.85rem; margin: var(--eje-sp-2xs) 0 0; }
.eje-vis-checkline { display: flex; align-items: center; gap: var(--eje-sp-xs); margin-top: var(--eje-sp-2xs); }
.eje-vis-checkline input { width: 1.2rem; height: 1.2rem; accent-color: var(--eje-brand); flex: none; }

/* Acciones. */
.eje-review-actions {
  display: flex;
  gap: var(--eje-sp-m);
  align-items: center;
  margin-top: var(--eje-sp-l);
}
.eje-review-cancel { font-weight: 600; }

.eje-review-empty { color: var(--eje-text-soft); }

/* Aviso de éxito en la ficha (PRG). */
.eje-review-success {
  display: flex;
  gap: var(--eje-sp-s);
  align-items: flex-start;
  border-radius: var(--eje-r-md);
  padding: var(--eje-sp-m);
  margin-bottom: var(--eje-sp-l);
  background: var(--vulcano-color-surface, var(--wp--preset--color--surface));
  border: 1px solid var(--vulcano-color-brand, var(--wp--preset--color--brand));
  color: var(--vulcano-color-text, var(--wp--preset--color--text));
}
.eje-review-success__ico {
  flex: none;
  font-weight: 700;
  color: var(--vulcano-color-brand, var(--wp--preset--color--brand));
}
.eje-review-success p { margin: 0; }
.eje-review-success__note {
  font-size: 0.85rem;
  color: var(--vulcano-color-text-soft, var(--wp--preset--color--text-soft));
  margin-top: var(--eje-sp-2xs) !important;
}

/* Reflow: en pantallas estrechas la card del local y las acciones se apilan. */
@media (max-width: 40rem) {
  .eje-review-context { flex-wrap: wrap; }
  .eje-review-actions { flex-wrap: wrap; align-items: stretch; }
}

/* ==================================================================
 * Alta de local con deduplicación (eje/alta-local, T5.4 · DESIGN §8·R19).
 * Reutiliza el lenguaje visual del alta de reseña (secciones, campos, botones,
 * avisos). Define los mismos tokens en su propio wrapper y añade solo lo específico
 * del flujo de dedupe: cards de coincidencia y botón secundario. CERO hex.
 * ================================================================== */
.eje-alta-local-block {
  --eje-canvas: var(--vulcano-color-canvas, var(--wp--preset--color--canvas));
  --eje-surface: var(--vulcano-color-surface, var(--wp--preset--color--surface));
  --eje-text: var(--vulcano-color-text, var(--wp--preset--color--text));
  --eje-text-soft: var(--vulcano-color-text-soft, var(--wp--preset--color--text-soft));
  --eje-brand: var(--vulcano-color-brand, var(--wp--preset--color--brand));
  --eje-brand-strong: var(--vulcano-color-brand-strong, var(--wp--preset--color--brand-strong));
  --eje-accent: var(--vulcano-color-accent, var(--wp--preset--color--accent));
  --eje-accent-2: var(--vulcano-color-accent-2, var(--wp--preset--color--accent-2));
  --eje-inverse: var(--vulcano-color-inverse, var(--wp--preset--color--inverse));
  --eje-border: var(--vulcano-color-border, var(--wp--preset--color--border));

  --eje-sp-2xs: var(--vulcano-space-2xs, 0.25rem);
  --eje-sp-xs: var(--vulcano-space-xs, 0.5rem);
  --eje-sp-s: var(--vulcano-space-s, 0.75rem);
  --eje-sp-m: var(--vulcano-space-m, 1rem);
  --eje-sp-l: var(--vulcano-space-l, 1.5rem);
  --eje-sp-xl: var(--vulcano-space-xl, 2rem);

  --eje-r-sm: var(--vulcano-radius-sm, 0.25rem);
  --eje-r-md: var(--vulcano-radius-md, 0.375rem);
  --eje-r-lg: var(--vulcano-radius-lg, 0.75rem);
  --eje-r-pill: var(--vulcano-radius-pill, 999px);

  --eje-shadow-sm: 0 1px 2px color-mix(in srgb, var(--eje-text) 8%, transparent);
  --eje-focus: var(--vulcano-focus-color, var(--wp--preset--color--accent, var(--eje-accent)));

  color: var(--eje-text);
}

/* Doblamos la clase para ganar por especificidad al contenedor del shell. */
.eje-alta-local-block.eje-alta-local-block {
  max-width: 48rem;
  margin-inline: auto;
}

.eje-alta-local-block .sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Foco visible accent (WCAG 2.4.11 AA) sobre todo control interactivo. */
.eje-alta-local-block a:focus-visible,
.eje-alta-local-block button:focus-visible,
.eje-alta-local-block input:focus-visible,
.eje-alta-local-block select:focus-visible,
.eje-alta-local-block textarea:focus-visible,
.eje-alta-local-block [tabindex]:focus-visible {
  outline: 3px solid var(--eje-focus);
  outline-offset: 2px;
  border-radius: var(--eje-r-sm);
}

.eje-alta-local-block a { color: var(--eje-brand-strong); }
.eje-alta-local-block .req { color: var(--eje-brand-strong); font-weight: 700; }

/* Botones (comparten lenguaje con el alta de reseña). */
.eje-alta-local-block .eje-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  min-height: 2.75rem;
  padding: 0.55rem 1.15rem;
  border-radius: var(--eje-r-md);
  font: inherit;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
}
.eje-alta-local-block .eje-btn--primary {
  background: var(--eje-brand);
  color: var(--eje-inverse);
  border: 1px solid var(--eje-brand);
}
.eje-alta-local-block .eje-btn--primary:hover {
  background: var(--eje-brand-strong);
  border-color: var(--eje-brand-strong);
}
/* Secundario: salida «crear sitio nuevo», jerárquicamente por debajo de vincular. */
.eje-alta-local-block .eje-btn--secondary {
  background: transparent;
  color: var(--eje-brand-strong);
  border: 1px solid var(--eje-brand);
}
.eje-alta-local-block .eje-btn--secondary:hover {
  background: var(--eje-surface);
}

.eje-alta-local__intro { color: var(--eje-text-soft); margin: 0 0 var(--eje-sp-m); }

/* Recuento de coincidencias (aria-live). */
.eje-alta-local-count { font-weight: 600; margin: 0 0 var(--eje-sp-s); }

/* Lista de coincidencias. */
.eje-dup-matches { list-style: none; margin: 0 0 var(--eje-sp-m); padding: 0; }
.eje-dup-match {
  display: flex;
  align-items: center;
  gap: var(--eje-sp-m);
  background: var(--eje-surface);
  border: 1px solid var(--eje-border);
  border-radius: var(--eje-r-lg);
  padding: var(--eje-sp-m);
  margin-bottom: var(--eje-sp-s);
  box-shadow: var(--eje-shadow-sm);
}
.eje-dup-match__info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 0.15rem; }
.eje-dup-match__name { font-size: 1.05rem; }
.eje-dup-match__meta { color: var(--eje-text-soft); font-size: 0.85rem; }
.eje-dup-match__status {
  align-self: flex-start;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--eje-text-soft);
}
.eje-dup-match__action { margin: 0; flex: none; }

/* Salida secundaria «¿No es ninguno? Crear sitio nuevo». */
.eje-alta-local-createnew {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--eje-sp-s);
  margin: var(--eje-sp-m) 0 0;
}

.eje-alta-local-created { align-items: flex-start; }

/* Reflow: en pantallas estrechas la card de coincidencia apila info y acción. */
@media (max-width: 40rem) {
  .eje-dup-match { flex-wrap: wrap; align-items: stretch; }
  .eje-dup-match__action .eje-btn { width: 100%; }
}
