{
  "cookies": {
    "footerButton": "Preferencias de cookies",
    "banner": {
      "text": "Usamos cookies y almacenamiento local para que el sitio funcione, recordar tus preferencias y medir nuestra audiencia de forma anónima. Con tu consentimiento, también evaluamos nuestra publicidad. Puedes aceptar todo, rechazar todo o elegir.",
      "customize": "Personalizar",
      "acceptAll": "Aceptar todo",
      "rejectAll": "Rechazar todo"
    },
    "modal": {
      "title": "Preferencias de cookies",
      "intro": "Respetamos tu privacidad. Las cookies necesarias, de preferencia y de medición de audiencia anónima siempre están activas. Solo la publicidad requiere tu consentimiento.",
      "alwaysActive": "Siempre activas",
      "viewCookies": "Ver cookies",
      "save": "Guardar mis preferencias",
      "acceptAll": "Aceptar todo",
      "rejectAll": "Rechazar todo",
      "moreInfo": "Más información en nuestra",
      "privacyLink": "política de privacidad",
      "close": "Cerrar"
    },
    "categories": {
      "necessary": {
        "title": "Estrictamente necesarias",
        "description": "Imprescindibles para el funcionamiento del sitio (inicio de sesión, seguridad, pago). No se pueden desactivar.",
        "items": [
          {
            "name": "token",
            "provider": "ReptiNode",
            "duration": "Sesión / 7 días",
            "purpose": "Mantiene tu sesión iniciada (token de autenticación)."
          },
          {
            "name": "user",
            "provider": "ReptiNode",
            "duration": "Sesión / 7 días",
            "purpose": "Almacena tu perfil para no recargarlo en cada página."
          },
          {
            "name": "rn_cookie_consent",
            "provider": "ReptiNode",
            "duration": "6 meses",
            "purpose": "Guarda tus preferencias de cookies."
          },
          {
            "name": "__stripe_mid / __stripe_sid",
            "provider": "Stripe",
            "duration": "1 año / 30 min",
            "purpose": "Protege los pagos y previene el fraude."
          },
          {
            "name": "Service Worker (PWA)",
            "provider": "ReptiNode",
            "duration": "Persistente",
            "purpose": "Permite la instalación de la app y el modo sin conexión."
          }
        ]
      },
      "functional": {
        "title": "Funcionales / Preferencias",
        "description": "Recuerdan tus preferencias de uso (idioma, visualización, progreso del minijuego). Datos propios de ReptiNode, sin cookies publicitarias ni seguimiento.",
        "items": [
          {
            "name": "i18nextLng",
            "provider": "ReptiNode",
            "duration": "Persistente",
            "purpose": "Recuerda tu idioma preferido."
          },
          {
            "name": "dashboard_context",
            "provider": "ReptiNode",
            "duration": "Persistente",
            "purpose": "Recuerda la vista elegida del panel (personal o compartida)."
          },
          {
            "name": "android-prompt-dismissed / ios-prompt-dismissed",
            "provider": "ReptiNode",
            "duration": "Persistente",
            "purpose": "Evita volver a mostrar la invitación de instalación de la app si la cerraste."
          },
          {
            "name": "snake_archive_until_…",
            "provider": "ReptiNode",
            "duration": "Variable",
            "purpose": "Pospone temporalmente un recordatorio para un animal concreto."
          },
          {
            "name": "reptinode_achievements, reptinode_biopoints, reptinode_collection, reptinode_consumables, reptinode_hatched_count, reptinode_prestige, reptinode_upgrades",
            "provider": "ReptiNode",
            "duration": "Persistente",
            "purpose": "Guarda el progreso del minijuego extra (logros, puntos, colección)."
          }
        ]
      },
      "analytics": {
        "title": "Medición de audiencia",
        "description": "Estadísticas de tráfico mediante una herramienta autoalojada y sin cookies. Datos anónimos y agregados, nunca compartidos, que no permiten identificarte.",
        "items": [
          {
            "name": "analytics.reptinode.fr",
            "provider": "ReptiNode (autoalojado)",
            "duration": "Sin cookies",
            "purpose": "Estadísticas de tráfico anónimas y agregadas (páginas vistas, origen). Sin cookies, sin datos personales, sin compartir con terceros."
          }
        ]
      },
      "marketing": {
        "title": "Marketing y publicidad",
        "description": "Permiten medir la eficacia de nuestros anuncios en Facebook e Instagram y mostrarte contenido relevante. Desactivadas hasta que des tu consentimiento.",
        "items": [
          {
            "name": "_fbp",
            "provider": "Meta (Facebook)",
            "duration": "3 meses",
            "purpose": "Mide la eficacia de los anuncios y el retargeting."
          },
          {
            "name": "_fbc",
            "provider": "Meta (Facebook)",
            "duration": "3 meses",
            "purpose": "Atribuye las visitas procedentes de un clic en un anuncio de Meta."
          },
          {
            "name": "API de Conversiones (CAPI)",
            "provider": "Meta (Facebook)",
            "duration": "—",
            "purpose": "Envía las conversiones (registro, suscripción) a Meta desde el servidor."
          }
        ]
      }
    }
  },
  "addSnake": {
    "birthDateRequired": "Se requiere una fecha de nacimiento válida",
    "add": "Añadir reptil",
    "addPhoto": "Añadir foto",
    "added": "¡Añadido!",
    "adding": "Añadiendo...",
    "birthDate": "Fecha de nacimiento",
    "birthDateInvalid": "Formato de fecha no válido.",
    "birthDateFuture": "La fecha de nacimiento no puede estar en el futuro.",
    "cancel": "Cancelar",
    "changePhoto": "Cambiar foto",
    "edit_subtitle": "Editar la información de {{name}}.",
    "familyRequired": "Elige una familia o añade el reptil a tu espacio personal.",
    "female": "Hembra",
    "feedingIntervalInvalid": "La frecuencia de alimentación debe ser un número entero superior a 0.",
    "imageSizeError": "La imagen no debe superar {{max}} MB.",
    "imageTypeError": "El archivo seleccionado debe ser una imagen.",
    "imageUrl": "URL de la imagen",
    "imageUrlPlaceholder": "",
    "length": "Longitud (cm)",
    "lengthInvalid": "La longitud debe ser superior a 0.",
    "locality": "Localidad",
    "localityPlaceholder": "ej.: Biak",
    "locus": "Locus (separados por comas)",
    "locusPlaceholder": "ej.: Mojave, Pied...",
    "male": "Macho",
    "morph": "Morfología",
    "morphPlaceholder": "ej.: Pastel",
    "name": "Nombre",
    "namePlaceholder": "ej.: Luna",
    "nameRequired": "El nombre es obligatorio.",
    "noPhoto": "Sin foto",
    "notes": "Notas",
    "notesPlaceholder": "Notas adicionales sobre este reptil...",
    "photo": "Foto del reptil",
    "photoHelp": "JPG, PNG o WebP. {{max}} MB máx.",
    "photo_hint": "Haz clic para cambiar",
    "removePhoto": "Eliminar foto",
    "sex": "Sexo",
    "species": "Especie",
    "speciesPlaceholder": "ej.: Python regius",
    "speciesRequired": "La especie es obligatoria.",
    "subtitle": "Completa la información esencial ahora. Podrás completar la ficha más tarde.",
    "title": "Añadir un nuevo reptil",
    "traits": "Rasgos / Fenotipos",
    "traitsPlaceholder": "ej.: Red, Hypo...",
    "unknown": "Desconocido",
    "unknownSpeciesHelp": "Esta especie no está en el catálogo, pero puedes añadirla igualmente.",
    "weight": "Peso (gramos)",
    "weightInvalid": "El peso debe ser superior a 0.",
    "destination": {
      "title": "¿Dónde añadir este reptil?",
      "personal": "Mi espacio personal",
      "personal_help": "Visible solo en tu lista personal.",
      "family": "Una familia",
      "family_help": "El reptil se creará y luego se transferirá a la familia seleccionada.",
      "family_label": "Familia de destino",
      "choose_family": "Elegir una familia...",
      "family_selected": "Será visible en {{name}}.",
      "summary_personal": "Añadido a tu espacio personal.",
      "summary_family": "Añadido a la familia {{name}}."
    }
  },
  "inventory": {
    "nav": "Presas",
    "title": "Inventario de presas",
    "subtitle": "Controla tu stock de presas; las comidas pueden descontarlo automáticamente.",
    "add_item": "Añadir presa",
    "empty_title": "Aún no hay presas registradas",
    "empty_desc": "Añade una línea de presa (tipo + tamaño) para controlar tu stock y recibir alertas de stock bajo.",
    "error": "No se pudo cargar el inventario.",
    "low_stock_banner": "{{count}} línea(s) en o por debajo del umbral de stock bajo.",
    "low_badge": "Bajo",
    "unit_weight": "Unidad",
    "threshold": "Umbral",
    "unit_cost": "Coste",
    "stock": "Stock",
    "history": "Historial",
    "confirm_delete": "¿Eliminar esta línea de presa?",
    "toast": { "created": "Presa añadida", "updated": "Presa actualizada", "deleted": "Presa eliminada", "stock_updated": "Stock actualizado", "error": "Algo salió mal" },
    "modal": { "title_create": "Añadir línea de presa", "title_edit": "Editar línea de presa", "prey_type": "Tipo de presa", "prey_size": "Tamaño", "any_size": "Cualquiera / n/d", "initial_qty": "Cantidad inicial", "unit_weight": "Peso unitario (g)", "threshold": "Umbral de stock bajo", "unit_cost": "Coste unitario", "notes": "Notas" },
    "stock_modal": { "title": "Actualizar stock", "add": "Añadir", "remove": "Quitar", "amount": "Cantidad", "note": "Nota", "current": "Stock actual: {{count}}" },
    "movements_title": "Movimientos de stock",
    "no_movements": "Aún no hay movimientos.",
    "reasons": { "purchase": "Compra", "consumption": "Alimentación", "adjustment": "Ajuste" },
    "filter": { "all_types": "Todos los tipos", "all_sizes": "Todos los tamaños", "low_only": "Solo stock bajo", "clear": "Limpiar", "count": "{{count}} mostrada(s)", "none": "Ninguna presa coincide con los filtros." }
  },
  "health_growth_analytics": {
    "title": "Análisis de salud y crecimiento",
    "nav": "Análisis",
    "back": "Panel",
    "subtitle": "Salud, crecimiento y alimentación de toda tu colección.",
    "refresh": "Actualizar",
    "retry": "Reintentar",
    "error": "No se pudieron cargar los análisis.",
    "empty_title": "Aún no hay datos",
    "empty_desc": "Añade reptiles y registra comidas y pesajes para desbloquear tus análisis de salud y crecimiento.",
    "go_dashboard": "Ir al panel",
    "kpi": {
      "reptiles": "Reptiles",
      "avg_health": "Salud media",
      "alerts": "Alertas activas",
      "critical": "{{count}} crítica(s)",
      "feeding": "Tasa de aceptación",
      "tracked": "Pesos registrados",
      "todo": "Por hacer"
    },
    "feeding_trend": "Aceptación de comidas",
    "accepted": "Aceptadas",
    "health_distribution": "Distribución de salud",
    "no_data": "Datos insuficientes.",
    "attention": "Requiere atención",
    "all_good": "Todo parece saludable 🎉",
    "growth_leaders": "Mayor crecimiento (90 días)",
    "no_growth": "Aún no hay suficientes pesajes.",
    "all_reptiles": "Todos los reptiles",
    "no_weight": "Sin peso",
    "generated_at": "Actualizado {{time}}",
    "alert_types": {
      "feeding_late": "Comida atrasada",
      "refusal_streak": "Rechazos repetidos",
      "recent_regurgitation": "Regurgitación reciente",
      "weight_loss": "Pérdida de peso",
      "shed_interval_long": "Muda atrasada",
      "missing_recent_weight": "Pesaje pendiente"
    },
    "period": { "30": "30 d", "90": "90 d", "365": "1 año", "all": "Todo" },
    "filters": { "all_species": "Todas las especies", "all_sexes": "Todos los sexos", "all_enclosures": "Todos los terrarios", "clear": "Limpiar" },
    "export": { "report_title": "Informe de salud de la colección" },
    "pts": "pts",
    "todo": {
      "title": "Por hacer hoy",
      "empty": "Nada que hacer, todo está al día 🎉",
      "feeding_overdue": "Comida atrasada {{count}} d",
      "weigh_in_due": "Pesaje pendiente ({{count}} d)",
      "weigh_in_never": "Sin pesaje registrado",
      "no_recent_log": "Sin registro desde hace {{count}} d",
      "no_log_never": "Ningún evento registrado"
    },
    "growth_chart": { "title": "Comparación de crecimiento", "no_data": "Selecciona reptiles con al menos dos pesajes para comparar su crecimiento." },
    "sex": { "Male": "Macho", "Female": "Hembra", "Unknown": "Desconocido" },
    "columns": { "name": "Nombre", "species": "Especie", "health": "Salud", "weight": "Peso (g)", "delta": "Δ %", "alerts": "Alertas", "last_activity": "Última actividad" },
    "health_levels": {
      "good": "Estable",
      "warning": "Vigilar",
      "danger": "Atención",
      "unknown": "Desconocido"
    }
  },
  "notifications_bell": {
    "title": "Notificaciones",
    "empty": "Sin notificaciones",
    "mark_all_read": "Marcar todo como leído",
    "see_analytics": "Ver análisis",
    "loading": "Cargando…",
    "open_aria": "Notificaciones",
    "unread_aria": "{{count}} sin leer",
    "delete": "Eliminar"
  },
  "reptile_stats_panel": {
    "common": {
      "empty_value": "—"
    },
    "units": {
      "g": "g",
      "mm": "mm",
      "percent": "%",
      "day_short": "d"
    },
    "loading": "Cargando estadísticas...",
    "errors": {
      "load": "No se pudieron cargar las estadísticas."
    },
    "header": {
      "title": "Estadísticas del reptil",
      "subtitle": "Salud, peso, comidas, mudas y alertas basadas en el historial registrado."
    },
    "health": {
      "score_label": "{{score}}/100 · {{label}}",
      "levels": {
        "good": "Seguimiento estable",
        "warning": "A vigilar",
        "danger": "Atención requerida",
        "unknown": "Datos insuficientes"
      },
      "reasons": {
        "feeding_tracked": "Comidas registradas",
        "no_feeding": "Ninguna comida registrada",
        "weight_available": "Peso registrado",
        "missing_weight": "Peso pendiente",
        "refusal_streak": "{{count}} rechazos consecutivos",
        "no_refusal_streak": "Sin racha preocupante de rechazos",
        "recent_regurgitation": "Regurgitación reciente",
        "no_recent_regurgitation": "Sin regurgitación reciente"
      }
    },
    "cards": {
      "current_weight": "Peso actual",
      "last_meal": "Última comida",
      "next_meal": "Próxima comida",
      "last_shed": "Última muda",
      "next_feeding_late": "Retraso {{days}}d",
      "average_short": "med. {{days}}d"
    },
    "alerts": {
      "types": {
        "no_events": "No hay ningún evento registrado para este reptil.",
        "feeding_late": "La última comida consumida fue hace {{days}} días. El ritmo previsto lleva {{lateByDays}} días de retraso.",
        "refusal_streak": "Se han registrado {{count}} rechazos consecutivos.",
        "recent_regurgitation": "Se registró una regurgitación en los últimos 30 días.",
        "missing_recent_weight": "No hay pesaje reciente desde hace {{days}} días.",
        "missing_weight": "No hay datos de peso disponibles.",
        "weight_loss": "El peso bajó un {{percent}} % en los últimos 90 días.",
        "shed_interval_long": "La última muda fue hace {{days}} días, por encima del intervalo medio observado."
      }
    },
    "charts": {
      "not_enough_weight_data": "No hay suficientes datos para mostrar una curva.",
      "weight_curve_aria": "Curva de peso"
    },
    "sections": {
      "weight": {
        "title": "Evolución del peso",
        "min_max": "Mín. {{min}} · Máx. {{max}}"
      },
      "feeding": {
        "title": "Comidas",
        "subtitle": "Regularidad y aceptación."
      },
      "prey": {
        "title": "Presas",
        "common_type": "Tipo frecuente",
        "common_size": "Tamaño frecuente",
        "average_weight": "Peso medio",
        "prey_weight_ratio": "Ratio presa/peso"
      },
      "growth": {
        "title": "Crecimiento",
        "current_length": "Longitud actual",
        "variation": "Variación",
        "last_measure": "Última medida",
        "points": "Puntos"
      },
      "health": {
        "title": "Salud",
        "vet_visits": "Visitas veterinarias",
        "last_visit": "Última visita",
        "sheds": "Mudas",
        "events": "Eventos"
      },
      "activity": {
        "title": "Actividad reciente",
        "empty": "Sin actividad reciente."
      }
    },
    "feeding_breakdown": {
      "accepted": "Aceptadas",
      "partial": "Parciales",
      "assisted": "Asistidas",
      "refused": "Rechazos",
      "regurgitated": "Regurgitadas"
    },
    "feeding_status": {
      "accepted": "aceptada",
      "refused": "rechazada",
      "partial": "parcial",
      "regurgitated": "regurgitada",
      "assisted": "asistida"
    },
    "event_types": {
      "feeding": "Comida",
      "shed": "Muda",
      "mue": "Muda",
      "vet_visit": "Visita veterinaria",
      "vet": "Visita veterinaria",
      "veterinary": "Visita veterinaria",
      "handling": "Manipulación",
      "weight": "Pesaje",
      "length": "Medida",
      "pairing": "Apareamiento",
      "ovulation": "Ovulación",
      "clutch": "Puesta",
      "hatch": "Eclosión",
      "birth": "Nacimiento",
      "other": "Otro"
    }
  },
  "landingpage": {
    "nav": {
      "features": "Funcionalidades",
      "pricing": "Precios",
      "faq": "FAQ",
      "updates": "Actualizaciones",
      "login": "Iniciar sesión",
      "lang_code": "ES"
    },
    "hero": {
      "badge": "La solución n.º 1 para criadores",
      "title_part1": "Gestione su cría de reptiles",
      "title_highlight": "con precisión.",
      "subtitle": "Abandone los cuadernos de papel y los archivos Excel ilegibles. ReptiNode centraliza el seguimiento, la salud, la genética y la reproducción en una interfaz moderna.",
      "cta": "Empezar gratis"
    },
    "hero_illustration": {
      "snake_name": "Banana Pied #05",
      "snake_species": "Python Regius",
      "status_active": "Activo",
      "last_meal_label": "Última comida",
      "last_meal_time": "2d",
      "last_meal_food": "Rata 40g",
      "weight_label": "Peso",
      "weight_value": "485g",
      "history_title": "Historial reciente",
      "event_weight": "Pesaje realizado",
      "time_2h_ago": "Hace 2 horas",
      "event_ovulation": "Ovulación detectada",
      "time_yesterday": "Ayer",
      "qr_scan": "Escaneo Rápido",
      "meal_validated": "Comida validada",
      "sync": "Sincronización inmediata"
    },
    "features": {
      "main_title": "Todo lo que necesita, en un solo lugar.",
      "main_subtitle": "Obtenga una visión general instantánea de su explotación ganadera. Centralice sus datos y tome las decisiones adecuadas gracias a herramientas de seguimiento inteligentes.",
      "card_medical": {
        "tag": "Esencial",
        "title": "Historial Médico Completo",
        "description": "Mantenga un registro indeleble de la salud de sus reptiles. Anote las comidas, los rechazos, las mudas, los pesajes y los tratamientos veterinarios.",
        "feature_1": "Recordatorios automáticos",
        "feature_2": "Curvas de peso"
      },
      "card_mobile": {
        "title": "Modo Móvil y QR",
        "description": "Genere códigos QR para sus racks. Escanee y registre una acción en 2 segundos cronometrados desde su teléfono inteligente."
      },
      "card_genetic": {
        "title": "Calculadora Genética",
        "description": "Anticipe sus proyectos. Nuestro motor gestiona genes recesivos, codominantes y combinaciones complejas."
      },
      "card_docs": {
        "title": "Documentos y Reproducción",
        "description": "Genere sus certificados de cesión y fichas de cuidados en PDF. Siga sus incubaciones y tasas de eclosión.",
        "example_1_title": "Puesta #12",
        "example_1_status": "En incubación",
        "example_2_title": "Certificado Cesión",
        "example_2_status": "PDF Listo"
      }
    },
    "pricing": {
      "main_title": "Precios Transparentes",
      "main_subtitle": "Empiece gratis, evolucione según sus necesidades.",
      "switch_monthly": "Mensual",
      "switch_yearly": "Anual",
      "switch_discount": "-12%",
      "free_plan": {
        "title": "Descubrimiento",
        "frequency": "/ de por vida",
        "description": "Lo esencial para iniciar su pasión y organizar su primer criadero sin restricciones.",
        "feature_1": "Hasta 30 reptiles",
        "feature_2": "Seguimiento completo: comidas, mudas, cuidados, peso y tamaño.",
        "feature_3": "Panel de control: recordatorios, alertas y gráficos",
        "feature_4": "Galería de fotos por reptil y por evento",
        "cta": "Empezar ahora"
      },
      "pro_plan": {
        "recommended": "Recomendado",
        "title": "Profesional",
        "frequency": "/ mes",
        "billed_yearly": "Facturado {{price}}€ al año",
        "description": "Desbloquee toda la potencia de la herramienta. Para criadores serios que quieren optimizar su producción.",
        "feature_1": "Reptiles Ilimitados",
        "feature_2": "Calculadora Genética Avanzada",
        "feature_3": "Exportación PDF (Cesión, Cuidados...)",
        "feature_4": "Generación Códigos QR",
        "feature_5": "Seguimiento Reproducción, Genealogía y Huevos",
        "cta": "Pasar al plan Pro",
        "guarantee": "Satisfecho o reembolsado 14 días"
      }
    },
    "faq": {
      "title": "Preguntas Frecuentes",
      "subtitle": "Todo lo que necesita saber para gestionar su criadero con total tranquilidad.",
      "q1": "¿Cómo gestionar eficazmente un criadero de reptiles?",
      "r1": "La gestión de un criadero de reptiles requiere un seguimiento riguroso de los parámetros vitales: curvas de peso, frecuencia de alimentación y ciclos de reproducción. El uso de un software especializado como ReptiNode permite centralizar estos datos, reemplazar las libretas de papel y asegurar el seguimiento sanitario y legal de sus serpientes y lagartos.",
      "q2": "¿Por qué usar un software de seguimiento en lugar de una libreta?",
      "r2": "A diferencia del papel o Excel, un software de gestión para reptiles protege sus datos y automatiza tareas. Permite generar fichas de seguimiento transferibles al vender, programar recordatorios para comidas o visitas veterinarias, y acceder al historial de sus animales mediante código QR desde cualquier lugar.",
      "q3": "¿Se necesita equipo especial para los códigos QR?",
      "r3": "No, no requiere inversión. La aplicación genera etiquetas que puede imprimir en una impresora estándar. Luego, la cámara de su teléfono móvil es suficiente para escanear e interactuar con sus animales.",
      "q4": "¿Están seguros mis datos?",
      "r4": "Absolutamente. Sus datos están encriptados y se realizan copias de seguridad diarias en servidores seguros. No corre el riesgo de perder su historial como ocurriría con una libreta extraviada o un archivo Excel dañado.",
      "q5": "¿Qué reptiles se pueden gestionar (Pitón Real, Geckos, Colúbridos)?",
      "r5": "ReptiNode está diseñado para todo tipo de reptiles. Es ideal para el seguimiento de serpientes (Pitón Real/Bola, Serpiente del Maíz, Boas), lagartos (Geckos Leopardo, Dragones Barbudos) y otras especies exóticas. Las fichas se adaptan a las especificidades de cada especie (mudas, puestas, hibernación).",
      "support_text": "¿Tiene más preguntas?",
      "support_link": "Hable con nuestro equipo de soporte"
    },
    "final_cta": {
      "badge": "Diseñado por un criador, para criadores 🐍",
      "title_part1": "Sus reptiles merecen algo mejor",
      "title_highlight": "que un archivo Excel.",
      "description": "Asegure sus datos, siga el crecimiento de sus animales y gestione sus proyectos de reproducción. La plataforma todo en uno para la herpetocultura moderna.",
      "button": "Mejorar la vida de mis reptiles",
      "reassurance_1": "Gratis hasta 30 reptiles",
      "reassurance_2": "Datos seguros en la Nube",
      "reassurance_3": "App Web y Móvil"
    },
    "footer": {
      "brand_description": "No deje nada al azar. Desde el pesaje hasta la eclosión, la herramienta de referencia para los criadores exigentes.",
      "col_product_title": "Producto",
      "col_legal_title": "Legal",
      "link_privacy": "Privacidad",
      "link_terms": "Términos y Condiciones",
      "link_legal": "Avisos Legales",
      "copyright_reserved": "Todos los derechos reservados.",
      "made_with_love_part1": "Hecho con",
      "made_with_love_part2": "en Francia."
    }
  },
  "suivi_nourrissage_reptiles": {
    "seo": {
      "title": "Seguimiento de alimentación para reptiles",
      "description": "ReptiNode te ayuda a seguir la alimentación de tus reptiles con un historial claro, comidas aceptadas o rechazadas, peso y un seguimiento más fiable.",
      "structured_data_app_description": "Sigue la alimentación de tus reptiles con un historial claro, eventos centralizados, peso, rechazos y un mejor control del ritmo alimentario."
    },
    "hero": {
      "badge": "Seguimiento alimentario estructurado",
      "title_line_1": "Seguimiento de alimentación",
      "title_line_2": "para reptiles",
      "description": "Mantén un historial claro de las comidas, los rechazos, el ritmo alimentario y la evolución de cada reptil en una herramienta más legible y más fiable que una simple nota o una hoja de cálculo.",
      "primary_cta": "Empezar el seguimiento",
      "secondary_cta": "Ver funcionalidades",
      "stats": {
        "history": {
          "value": "1",
          "label": "Historial alimentario por reptil"
        },
        "forgotten_meals": {
          "value": "0",
          "label": "Comidas olvidadas o mal revisadas"
        },
        "clarity": {
          "value": "+ claro",
          "label": "Para seguir ritmos y rechazos"
        }
      },
      "reassurance_1": "Historial cronológico por animal",
      "reassurance_2": "Rechazos visibles de un vistazo",
      "reassurance_3": "Vinculado al peso automáticamente"
    },
    "illustration": {
      "card_title": "Nyx · Hembra 2022",
      "card_subtitle": "Python regius · seguimiento alimentario",
      "status": "Alimentación validada",
      "last_meal_label": "Última comida",
      "last_meal_value": "Hace 3 días",
      "last_meal_meta": "cría de rata",
      "next_check_label": "Próximo control",
      "next_check_value": "Mañana",
      "next_check_meta": "a vigilar",
      "history_title": "Historial alimentario",
      "history_meal_accepted_title": "Comida aceptada",
      "history_meal_accepted_time": "Viernes · 19:14",
      "history_weight_recorded_title": "Peso registrado",
      "history_weight_recorded_time": "Jueves · 09:22",
      "history_scheduled_check_title": "Control programado",
      "history_scheduled_check_time": "Mañana · recordatorio activo",
      "quick_access": "Acceso rápido a la ficha",
      "clear_rhythm_title": "Ritmo alimentario claro",
      "clear_rhythm_text": "Menos olvidos, más regularidad",
      "calendar_title": "Calendario · 8 sem.",
      "last_entry_label": "Última entrada",
      "last_entry_meta": "Viernes 19:14 · 32 g",
      "last_entry_title": "Rata congelada · aceptada",
      "legend_eaten": "comido",
      "legend_refused": "rechazo",
      "metric_meals_label": "Comidas 90 d",
      "metric_pace_label": "Ciclo",
      "metric_refusals_label": "Rechazos",
      "next_meal_meta": "en 3 días",
      "next_meal_title": "Próxima comida",
      "pattern_detected_meta": "2 rechazos misma semana",
      "pattern_detected_title": "Patrón detectado",
      "rhythm_ok": "Ritmo OK"
    },
    "benefits_section": {
      "title": "¿Por qué seguir mejor la alimentación de tus reptiles?",
      "description": "Cuando varias comidas se encadenan, hay que anotar rechazos o comparar ritmos diferentes, un seguimiento estructurado se vuelve rápidamente imprescindible.",
      "cards": {
        "data": {
          "badge": "Ritmo alimentario",
          "title": "Cada comida se convierte en un dato útil, no solo en una nota perdida",
          "description": "ReptiNode permite visualizar las comidas aceptadas, los rechazos, la frecuencia y los eventos ligados a cada reptil para mantener una lectura clara del seguimiento alimentario a lo largo del tiempo.",
          "items": [
            "Historial cronológico de las comidas",
            "Visión más clara del ritmo alimentario"
          ]
        },
        "simple": {
          "title": "Fácil de registrar en el día a día",
          "description": "El objetivo no es añadir complejidad, sino poder registrar rápidamente una comida, un rechazo o una observación y encontrar la información de inmediato."
        },
        "refusals": {
          "title": "Los rechazos se vuelven visibles",
          "description": "Cuando los rechazos están repartidos en varias notas, pasan fácilmente desapercibidos. Con un seguimiento estructurado, se detectan mejor los periodos que hay que vigilar.",
          "example_line": "12/03: rechazo",
          "example_highlight": "➜ historial legible + contexto conservado"
        },
        "context": {
          "title": "La alimentación cobra más sentido cuando está conectada con el resto",
          "description": "Una comida por sí sola dice poco. Vinculada al peso, a la cronología y a los demás eventos de la ficha, se vuelve mucho más útil para comprender la evolución del animal.",
          "items": {
            "meals_observations_title": "Comidas y observaciones",
            "meals_observations_badge": "Centralizado",
            "weight_timeline_title": "Peso y cronología",
            "weight_timeline_badge": "Legible"
          }
        }
      }
    },
    "value_section": {
      "title": "Lo que el seguimiento alimentario realmente debe aportarte",
      "description": "Un buen seguimiento de la alimentación no sirve solo para anotar una fecha. Debe ayudarte a releer, comparar y comprender mejor los hábitos de cada reptil.",
      "daily_card": {
        "title": "Para el día a día",
        "description": "Mantén un seguimiento limpio y rápido sin multiplicar notas ni archivos.",
        "features": [
          "Comidas registradas por reptil",
          "Rechazos claramente visibles",
          "Historial cronológico fácil de releer",
          "Ritmo alimentario más fácil de seguir",
          "Consulta rápida desde una sola ficha"
        ],
        "button": "Explorar funcionalidades"
      },
      "long_term_card": {
        "badge": "Para un seguimiento más fiable",
        "title": "A largo plazo",
        "description": "Cuantas más semanas pasan, más valor adquieren los datos bien estructurados.",
        "features": [
          "Comparación más sencilla con el tiempo",
          "Menor dependencia de la memoria",
          "Detección más rápida de irregularidades",
          "Lectura más coherente del comportamiento alimentario",
          "Base más limpia para la gestión global"
        ],
        "button": "Empezar gratis",
        "footer_note": "Seguimiento alimentario más claro"
      }
    },
    "comparison_section": {
      "title": "Pasa de un seguimiento aproximado a uno realmente legible",
      "description": "La diferencia no está solo en escribir una información, sino en tu capacidad para volver a encontrarla, compararla y darle contexto.",
      "before": {
        "title": "Antes",
        "description": "Fechas anotadas por separado, posibles olvidos, rechazos difíciles de recuperar y poca visibilidad global sobre el ritmo alimentario."
      },
      "with_reptinode": {
        "title": "Con ReptiNode",
        "description": "Un historial limpio por reptil, una lectura cronológica coherente y datos alimentarios conectados con el resto de la ficha."
      },
      "result": {
        "title": "Resultado",
        "description": "Una gestión más serena, ritmos mejor comprendidos y un seguimiento alimentario que sigue siendo útil incluso varios meses después."
      }
    },
    "faq_section": {
      "title": "Preguntas frecuentes",
      "description": "Lo esencial para comprender mejor el valor de un verdadero seguimiento de alimentación para reptiles.",
      "items": [
        {
          "q": "¿Por qué seguir con precisión la alimentación de los reptiles?",
          "r": "Porque un seguimiento alimentario regular permite saber qué se dio, cuándo, con qué ritmo y cómo reacciona cada reptil con el tiempo. Esto ayuda a comprender mejor los hábitos y a evitar olvidos."
        },
        {
          "q": "¿Es útil incluso con una colección pequeña?",
          "r": "Sí. Incluso con pocos reptiles, un seguimiento claro de la alimentación evita aproximaciones. Y cuando la colección crece, la estructura ya está en su sitio."
        },
        {
          "q": "¿Se pueden anotar los rechazos de comida?",
          "r": "Sí. De hecho, es un punto esencial, porque los rechazos repetidos, los cambios de ritmo o los periodos inusuales son más fáciles de detectar cuando todo está registrado en un mismo lugar."
        },
        {
          "q": "¿El peso tiene interés junto con la alimentación?",
          "r": "Sí. El peso y la alimentación forman una pareja muy útil para tener una visión más coherente de la evolución de un reptil con el tiempo."
        },
        {
          "q": "¿En qué es mejor que una nota en el teléfono?",
          "r": "Una nota aislada se vuelve rápidamente difícil de releer, comparar o relacionar con el resto de la ficha. ReptiNode estructura los datos por animal, conserva el historial y hace que la información sea mucho más legible."
        }
      ],
      "bottom_text": "¿Quieres ver el resto de la herramienta alrededor del seguimiento alimentario?",
      "bottom_link": "Consultar la página de funcionalidades"
    },
    "cta_section": {
      "badge": "Haz más claro el seguimiento alimentario",
      "title_line_1": "Sigue cada comida",
      "title_line_2": "en una herramienta hecha para durar",
      "description": "ReptiNode te ayuda a mantener un historial alimentario limpio, legible y vinculado a cada reptil para una gestión diaria más coherente.",
      "button": "Crear mi espacio gratis",
      "features": [
        "Historial por reptil",
        "Comidas y rechazos mejor seguidos",
        "Seguimiento más legible con el tiempo"
      ]
    },
    "anatomy": {
      "card_status": "Validado",
      "card_subtitle": "Vinculado a Nyx · Python regius",
      "card_title": "Alimentación · #1284",
      "explain_p1": "Una nota dice «comió el jueves». Una ficha dice quién, cuándo, qué, en qué cantidad, con qué estado y en qué contexto. Es la diferencia entre saber y poder releer.",
      "explain_p2": "Tres meses después, encuentras la comida, su contexto y lo que ocurrió alrededor. Eso es lo que hace que el seguimiento sea realmente útil a largo plazo.",
      "explain_title": "Un dato estructurado, no una nota desechable.",
      "field_context": {
        "label": "Contexto",
        "value": "Post-muda · apetito OK"
      },
      "field_date": {
        "label": "Fecha y hora",
        "value": "Vie 14 mar · 19:14"
      },
      "field_prey": {
        "label": "Tipo de presa",
        "value": "Rata congelada"
      },
      "field_size": {
        "label": "Tamaño / peso"
      },
      "field_status": {
        "label": "Estado",
        "value": "Aceptado"
      },
      "footer_note": "Registrado · sincronizado · vinculado al peso del día",
      "subtitle": "No solo «comió / rechazó». Cada comida se convierte en un dato útil, vinculado al reptil y al resto de su cronología.",
      "tag": "Anatomía de un registro",
      "title": "Todo lo que importa, en una sola ficha"
    },
    "breadcrumb": {
      "home": "Inicio"
    },
    "calendar": {
      "caption": "Los dos cuadrados rojos están a 4 meses de distancia. A mano, nunca los habrías conectado.",
      "legend_meal": "comida",
      "legend_none": "nada",
      "legend_refusal": "rechazo",
      "subtitle": "El ritmo de un reptil se lee en meses, no en semanas. La vista anual revela lo que ninguna nota aislada puede mostrar.",
      "tag": "Visión 12 meses",
      "title": "Un año de alimentación, de un vistazo",
      "year_label": "2025 · Nyx"
    },
    "cross_links_label": "Profundizar:",
    "patterns": {
      "refusal_streak": {
        "desc": "Cuando los rechazos están dispersos en notas, pasan desapercibidos. Mostrados en serie en el calendario, se vuelven evidentes.",
        "tag": "Rechazos en serie",
        "title": "Varios rechazos consecutivos"
      },
      "rhythm_change": {
        "desc": "Un reptil que pasaba de 7 a 14 días entre comidas, es una señal. Visible al instante cuando el seguimiento está estructurado.",
        "tag": "Cambio de ritmo",
        "title": "Ciclo que se alarga o se acorta"
      },
      "subtitle": "Estas señales ya existen en tu colección. La diferencia es verlas antes de que se conviertan en un problema.",
      "tag": "Patrones detectables",
      "title": "3 señales que por fin verás",
      "weight_link": {
        "desc": "Una comida solo tiene sentido junto al peso. ReptiNode mantiene ambos en la misma ficha para releer la coherencia.",
        "tag": "Correlación con el peso",
        "title": "Vínculo entre comidas y curva de peso"
      }
    }
  },
  "reproduction_reptiles": {
    "seo": {
      "title": "Reproducción de reptiles",
      "description": "ReptiNode te ayuda a seguir la reproducción de tus reptiles con pairings, fechas clave, puestas, huevos y una cronología más clara.",
      "structured_data_description": "Sigue la reproducción de tus reptiles con una herramienta estructurada para organizar pairings, ciclos, puestas, huevos y la cronología breeding."
    },
    "illustration": {
      "card_title": "Proyecto 2026 · Pairing A12",
      "card_subtitle": "Mojave het Clown × Pastel",
      "status": "Reproducción seguida",
      "last_pairing_label": "Último pairing",
      "last_pairing_value": "Hace 4 días",
      "last_pairing_meta": "observado",
      "current_stage_label": "Etapa actual",
      "current_stage_value": "Prepuesta",
      "current_stage_meta": "a vigilar",
      "timeline_title": "Cronología breeding",
      "pairing_logged_title": "Pairing registrado",
      "pairing_logged_time": "Viernes · 21:08",
      "key_date_planned_title": "Fecha clave programada",
      "key_date_planned_time": "Control en 3 días",
      "clutch_tracking_ready_title": "Seguimiento de puesta preparado",
      "clutch_tracking_ready_time": "Checklist lista",
      "instant_pairing_sheet": "Ficha de pairing instantánea",
      "structured_cycle_title": "Ciclo estructurado",
      "structured_cycle_text": "Menos olvidos, más visibilidad",
      "checkpoint_meta": "en 3 días",
      "checkpoint_title": "Control programado",
      "eggs_expected_title": "Puesta prevista",
      "eggs_expected_unit": "huevos",
      "metric_next_label": "Próximo hito",
      "metric_next_meta": "17 mar · pre-puesta",
      "metric_next_unit": "control",
      "metric_progress_label": "Avance",
      "metric_progress_unit": "etapas",
      "now_label": "Ahora",
      "step_incubation": "Incubación",
      "step_incubation_meta": "~ 55 d",
      "step_lay": "Puesta",
      "step_lay_meta": "estimada 18 mar",
      "step_ovulation": "Ovulación",
      "step_ovulation_meta": "15 feb · observada",
      "step_pairing": "Pairing",
      "step_pairing_meta": "24 ene · validado",
      "step_prelay": "Pre-puesta",
      "step_prelay_meta": "en curso",
      "tracking": "Seguimiento activo"
    },
    "faq": {
      "title": "Preguntas frecuentes",
      "description": "Lo esencial para comprender el valor de un verdadero seguimiento de reproducción de reptiles.",
      "items": [
        {
          "q": "¿Por qué usar una herramienta para seguir la reproducción de los reptiles?",
          "r": "Porque la reproducción implica varias etapas, fechas clave y observaciones que rápidamente se vuelven difíciles de relacionar entre sí sin estructura. Una herramienta dedicada permite mantener una cronología clara."
        },
        {
          "q": "¿Se pueden planificar los momentos importantes del ciclo?",
          "r": "Sí. Justamente la idea es no gestionar la reproducción solo de memoria. ReptiNode ayuda a fijar referencias claras alrededor de los pairings, controles, puestas y huevos."
        },
        {
          "q": "¿La página de reproducción sustituye a la genética?",
          "r": "No. Esta página se centra en la organización del proceso breeding: pairings, cronología, puestas y seguimiento operativo. La genética puede enriquecer después el análisis."
        },
        {
          "q": "¿Es útil para una pequeña cría?",
          "r": "Sí. Incluso con pocos proyectos, un seguimiento limpio evita olvidos y facilita la revisión. Y si la cría crece, la estructura ya está en su sitio."
        },
        {
          "q": "¿En qué es mejor que una hoja de cálculo?",
          "r": "Una hoja de cálculo suele obligar a volver a unir manualmente la información. ReptiNode mantiene los datos vinculados al pairing correcto, a los animales correctos y a la cronología correcta, lo que hace el seguimiento mucho más legible."
        }
      ],
      "bottom_text": "¿Quieres vincular la reproducción con la parte genética?",
      "bottom_link": "Ver la página de genética"
    },
    "hero": {
      "badge": "Breeding organizado de principio a fin",
      "title_line_1": "Reproducción de",
      "title_line_2": "reptiles",
      "description": "Organiza tus pairings, mantén una cronología clara de los ciclos, prepara las etapas importantes y centraliza el seguimiento de las puestas y los huevos en una herramienta especializada para reptiles.",
      "primary_cta": "Estructurar mi reproducción",
      "secondary_cta": "Ver funcionalidades",
      "stats": {
        "timeline": "Cronología clara por proyecto breeding",
        "lost_dates": "Fechas clave perdidas en varias notas",
        "clarity_value": "+ simple",
        "clarity_label": "Para seguir pairings, puestas y huevos"
      },
      "reassurance_1": "Cronología por proyecto",
      "reassurance_2": "Huevos seguidos individualmente",
      "reassurance_3": "Varios proyectos en paralelo"
    },
    "benefits": {
      "title": "¿Por qué estructurar mejor la reproducción de los reptiles?",
      "description": "En cuanto hay varios pairings, varias etapas o varias hembras seguidas en paralelo, la memoria sola ya no basta. Hace falta una base clara y fácil de releer.",
      "cycle": {
        "badge": "Ciclo breeding",
        "title": "Cada etapa sigue vinculada al proyecto de reproducción correcto",
        "description": "ReptiNode ayuda a mantener un hilo claro entre los pairings, las fechas a vigilar, las observaciones, las puestas y el seguimiento de los huevos, sin dispersar la información en notas separadas.",
        "items": [
          "Referencias temporales más simples",
          "Seguimiento más legible de puestas y huevos"
        ]
      },
      "projects": {
        "title": "Una base seria para tus proyectos",
        "description": "El objetivo no es solo anotar un pairing, sino poder releer todo el desarrollo de un proyecto breeding con mucha más claridad."
      },
      "dispersion": {
        "title": "Menos dispersión",
        "description": "Cuando los datos están repartidos entre hoja de cálculo, calendario y notas, el seguimiento breeding se vuelve frágil. Una estructura única aporta más fiabilidad.",
        "example_line": "Pairing A12",
        "example_highlight": "➜ cronología, referencias y seguimiento reunidos"
      },
      "readability": {
        "title": "El breeding se vuelve más legible, incluso varias semanas después",
        "description": "Una buena herramienta de reproducción no sirve solo para introducir información. Debe permitir recuperar rápidamente el contexto, las etapas ya pasadas y las que vienen.",
        "items": {
          "key_dates_title": "Fechas clave y controles",
          "key_dates_badge": "Claro",
          "clutches_eggs_title": "Puestas y huevos",
          "clutches_eggs_badge": "Centralizado"
        }
      }
    },
    "value_section": {
      "title": "Lo que un buen seguimiento de reproducción realmente debe aportarte",
      "description": "El objetivo no es añadir campos por todas partes, sino hacer que cada proyecto breeding sea más fácil de pilotar, releer y comparar.",
      "daily": {
        "title": "Para la gestión diaria",
        "description": "Mantén la información esencial allí donde es útil, sin multiplicar herramientas.",
        "features": [
          "Pairings registrados de forma limpia",
          "Cronología clara por proyecto",
          "Fechas clave más fáciles de seguir",
          "Puestas y huevos mejor centralizados",
          "Lectura rápida del contexto breeding"
        ],
        "button": "Explorar funcionalidades"
      },
      "long_term": {
        "badge": "Para una cría más estructurada",
        "title": "A largo plazo",
        "description": "Cuantos más proyectos tengas, más valor aporta una organización breeding sólida.",
        "features": [
          "Menor dependencia de la memoria",
          "Visión más limpia de los ciclos en paralelo",
          "Menos confusión entre proyectos",
          "Base más clara para la revisión",
          "Organización más creíble a largo plazo"
        ],
        "button": "Empezar gratis",
        "footer_note": "Breeding más legible"
      }
    },
    "comparison": {
      "title": "Pasa de una reproducción “en la cabeza” a una reproducción realmente seguida",
      "description": "La verdadera diferencia no está en la cantidad de notas tomadas, sino en tu capacidad para releer un proyecto breeding correctamente de principio a fin.",
      "before": {
        "title": "Antes",
        "description": "Pairings anotados por separado, recordatorios dispersos y etapas difíciles de relacionar varias semanas después."
      },
      "with_reptinode": {
        "title": "Con ReptiNode",
        "description": "Una estructura única para seguir el proyecto, las fechas importantes, las puestas, los huevos y la cronología completa."
      },
      "result": {
        "title": "Resultado",
        "description": "Una reproducción mejor pilotada, más fácil de releer y mucho más fiable cuando varios proyectos avanzan en paralelo."
      }
    },
    "cta": {
      "badge": "Gestiona mejor tus proyectos breeding",
      "title_line_1": "Organiza tu reproducción",
      "title_line_2": "en una herramienta pensada para reptiles",
      "description": "ReptiNode te ayuda a estructurar pairings, etapas clave, puestas y huevos para mantener una visión clara de cada proyecto de reproducción.",
      "button": "Crear mi espacio gratis",
      "features": [
        "Pairings mejor organizados",
        "Cronología clara del ciclo",
        "Seguimiento más fiable a largo plazo"
      ]
    },
    "breadcrumb": {
      "home": "Inicio"
    },
    "clutch": {
      "caption": "En la eclosión, cada huevo se convierte en un descendiente vinculado automáticamente al pairing inicial.",
      "clutch_meta": "Puesta el 18 mar · 6 huevos · 56 % restante",
      "clutch_title": "Puesta #A12-2026",
      "legend_failed": "detenido",
      "legend_hatched": "eclosionado",
      "legend_incub": "incubación",
      "subtitle": "Una puesta no es un número — son seis historias individuales. Sigue cada una con su día de incubación, su estado, sus observaciones.",
      "tag": "Seguimiento de huevos",
      "title": "Cada huevo, su propia ficha"
    },
    "cross_links_label": "Profundizar:",
    "cycle": {
      "step_1": {
        "desc": "Fecha, apareamientos observados, condiciones. La ficha del proyecto comienza aquí, vinculada a ambos animales.",
        "title": "Pairing"
      },
      "step_2": {
        "desc": "Referencia central del ciclo. Anotada en la fecha observada, ancla toda la cronología que sigue.",
        "title": "Ovulación"
      },
      "step_3": {
        "desc": "Comportamiento, rechazos alimentarios, muda. ReptiNode vincula automáticamente los eventos de este periodo a la hembra.",
        "title": "Pre-puesta y muda"
      },
      "step_4": {
        "desc": "Fecha, número de huevos, calidad. Cada huevo recibe un identificador para su seguimiento individual.",
        "title": "Puesta"
      },
      "step_5": {
        "desc": "Cuenta atrás, tasa de eclosión, descendientes registrados y vinculados al pairing inicial.",
        "title": "Incubación y eclosión"
      },
      "subtitle": "Cinco etapas claras, vinculadas al mismo proyecto de cría. Se acabó el «¿cuándo fue eso?» tres meses después.",
      "tag": "El ciclo completo",
      "title": "Cada etapa, en su lugar dentro de la cronología"
    },
    "parallel": {
      "active_label": "activos",
      "dashboard_title": "Proyectos 2026",
      "p1": "Tres proyectos en curso, en etapas diferentes, sobre hembras diferentes. Es exactamente donde la hoja de cálculo se rompe.",
      "p2": "ReptiNode mantiene cada proyecto aislado, pero legible de un vistazo. Ves al instante lo que avanza, lo que se estanca y lo que requiere tu atención esta semana.",
      "tag": "Multi-proyectos",
      "title": "Varios pairings en paralelo, sin confusión"
    },
    "projects": {
      "stage_incub": "Incubación",
      "stage_ovul": "Ovulación",
      "stage_pairing": "Pairing",
      "stage_prelay": "Pre-puesta"
    }
  },
  "genetique_reptiles": {
    "seo": {
      "title": "Genética de reptiles",
      "description": "ReptiNode te ayuda a seguir la genética de tus reptiles con una visión más clara de los genes, el pedigree, las líneas y las proyecciones de pairing.",
      "structured_data_description": "Sigue la genética de tus reptiles con una herramienta para relacionar genes, pedigree, líneas, pairings y proyecciones en una base clara."
    },
    "illustration": {
      "card_title": "Proyecto genético · BEL",
      "card_subtitle": "Mojave × Lesser",
      "status": "Proyección lista",
      "pairing_label": "Pairing",
      "pairing_value": "2 genes",
      "pairing_meta": "compatibles",
      "goal_label": "Objetivo",
      "goal_value": "BEL",
      "goal_meta": "proyectado",
      "genetic_view_title": "Vista genética",
      "pedigree_linked_title": "Pedigree vinculado",
      "pedigree_linked_time": "Línea consultable",
      "projection_calculated_title": "Proyección calculada",
      "projection_calculated_time": "Combinaciones esperadas",
      "genes_linked_title": "Genes vinculados a los padres",
      "genes_linked_time": "Lectura más clara",
      "quick_access": "Acceso rápido al pedigree",
      "simplified_reading_title": "Lectura genética simplificada",
      "simplified_reading_text": "Menos hipótesis dispersas",
      "het_morphs": "50 % het",
      "live_label": "Live",
      "morphs_registered_meta": "14 combinaciones",
      "morphs_registered_title": "Registro de morphs",
      "outcomes_label": "resultados",
      "parent_female": "Pastel het Pied",
      "parent_male": "Mojave het Pied",
      "pedigree_meta": "3 generaciones trazadas",
      "pedigree_title": "Pedigrí vinculado",
      "punnett": {
        "het_label": "Het Pied",
        "normal_label": "Normal",
        "pied_label": "Pied"
      },
      "punnett_title": "Distribución esperada",
      "visual_morphs": "25 % visuales"
    },
    "faq": {
      "title": "Preguntas frecuentes",
      "description": "Lo esencial para comprender el interés de un verdadero seguimiento genético de reptiles.",
      "items": [
        {
          "q": "¿Por qué usar una herramienta para la genética de los reptiles?",
          "r": "Porque en cuanto hay que relacionar genes, padres, descendientes y objetivos de reproducción, la información se vuelve rápidamente difícil de releer sin una estructura clara. Una herramienta dedicada hace la lectura mucho más sencilla."
        },
        {
          "q": "¿Se puede seguir el pedigree y las líneas?",
          "r": "Sí. Ese es precisamente uno de los mayores intereses: relacionar los individuos entre sí, mantener una continuidad en la lectura de las líneas y evitar información perdida entre varios archivos."
        },
        {
          "q": "¿Es útil para preparar pairings?",
          "r": "Sí. La genética permite preparar los pairings de forma más inteligente al visualizar mejor los genes presentes, los objetivos buscados y las proyecciones esperadas."
        },
        {
          "q": "¿La genética sustituye al seguimiento de reproducción?",
          "r": "No. La genética sirve para comprender mejor y proyectar las combinaciones. El seguimiento de reproducción sigue centrado en la cronología operativa de pairings, ciclos, puestas y huevos."
        },
        {
          "q": "¿En qué es mejor que una nota o una tabla?",
          "r": "Una nota o una tabla exigen mucha reconstrucción mental. ReptiNode ayuda a vincular directamente la información con la ficha correcta, el pairing correcto y el contexto genético adecuado."
        }
      ],
      "bottom_text": "¿Quieres vincular esta parte con el seguimiento breeding operativo?",
      "bottom_link": "Ver la página de reproducción"
    },
    "hero": {
      "badge": "Genética clara y conectada",
      "title_line_1": "Genética",
      "title_line_2": "de reptiles",
      "description": "Relaciona genes, pedigree, líneas y proyecciones de pairings en una herramienta diseñada para hacer la lectura genética más simple, más clara y más útil a largo plazo.",
      "primary_cta": "Estructurar mi genética",
      "secondary_cta": "Ver funcionalidades",
      "stats": {
        "base": "Base clara para genes y líneas",
        "hypotheses": "Hipótesis perdidas en varias notas",
        "clarity_value": "+ claro",
        "clarity_label": "Para leer pedigree y proyecciones"
      },
      "reassurance_1": "Punnett en un clic",
      "reassurance_2": "Pedigrí de 3 generaciones",
      "reassurance_3": "Recesivos y heterocigotos"
    },
    "benefits": {
      "title": "¿Por qué estructurar mejor la genética de los reptiles?",
      "description": "En cuanto hay que relacionar varios genes, verificar líneas o preparar pairings serios, una organización aproximada se vuelve rápidamente limitante.",
      "lineage": {
        "badge": "Líneas y pedigree",
        "title": "Cada información genética sigue vinculada al contexto correcto",
        "description": "ReptiNode ayuda a relacionar genes, padres, descendientes y objetivos de pairing para evitar reconstrucciones mentales constantes y mantener una base mucho más fiable.",
        "items": [
          "Lectura más clara de las líneas",
          "Proyecciones más fáciles de releer"
        ]
      },
      "projects": {
        "title": "Una lectura más limpia de los proyectos",
        "description": "El objetivo no es solo tener etiquetas de genes, sino comprender mejor las relaciones entre individuos y los objetivos buscados."
      },
      "uncertainty": {
        "title": "Menos incertidumbre",
        "description": "Cuando la información genética está dispersa, las hipótesis se vuelven frágiles. Una base bien estructurada hace que las verificaciones sean mucho más simples.",
        "example_line": "Mojave het Clown × Pastel het Clown",
        "example_highlight": "➜ proyección releída sin fricción"
      },
      "usable": {
        "title": "La genética se vuelve utilizable, no solo almacenada",
        "description": "Una buena herramienta genética no sirve solo para acumular información. Debe ayudar a verificar un pedigree, preparar un pairing y releer fácilmente los elementos clave de una línea.",
        "items": {
          "pedigree_title": "Pedigree y línea",
          "pedigree_badge": "Vinculado",
          "projection_title": "Proyección de pairing",
          "projection_badge": "Legible"
        }
      }
    },
    "value_section": {
      "title": "Lo que un buen seguimiento genético realmente debe aportarte",
      "description": "El verdadero beneficio no es tener más información, sino relacionarla correctamente para decidir mejor y releer mejor tus proyectos.",
      "daily": {
        "title": "Para la lectura diaria",
        "description": "Mantén una visión clara de los genes y de las relaciones entre individuos sin pasar el tiempo reconstruyendo el contexto.",
        "features": [
          "Lectura más clara de los genes",
          "Pedigree más fácil de consultar",
          "Líneas mejor estructuradas",
          "Proyecciones de pairings más fáciles de releer",
          "Información genética vinculada a las fichas correctas"
        ],
        "button": "Explorar funcionalidades"
      },
      "long_term": {
        "badge": "Para proyectos mejor preparados",
        "title": "A largo plazo",
        "description": "Cuanto más crecen las líneas y los proyectos, más valiosa se vuelve una base genética limpia.",
        "features": [
          "Menos hipótesis difusas",
          "Verificación más simple de las líneas",
          "Preparación más coherente de los pairings",
          "Base más sólida para proyectos futuros",
          "Relectura más rápida de la información clave"
        ],
        "button": "Empezar gratis",
        "footer_note": "Genética mejor estructurada"
      }
    },
    "comparison": {
      "title": "Pasa de una genética “en notas” a una genética realmente utilizable",
      "description": "El verdadero valor de un buen seguimiento genético está en la capacidad de relacionar la información correcta en el momento correcto, sin tener que reconstruirlo todo cada vez.",
      "before": {
        "title": "Antes",
        "description": "Genes anotados por separado, pedigrees reconstruidos a mano y proyecciones difíciles de releer cuando se acumulan varios proyectos."
      },
      "with_reptinode": {
        "title": "Con ReptiNode",
        "description": "Una base clara para relacionar genes, líneas, pedigree y proyecciones, con mucha menos fricción al releer o decidir."
      },
      "result": {
        "title": "Resultado",
        "description": "Una genética más legible, pairings mejor preparados y una base más sólida para hacer evolucionar tus proyectos con el tiempo."
      }
    },
    "cta": {
      "badge": "Aclara tus proyectos genéticos",
      "title_line_1": "Estructura tu genética",
      "title_line_2": "en una herramienta pensada para reptiles",
      "description": "ReptiNode te ayuda a relacionar genes, pedigree, líneas y proyecciones para que tus decisiones sean más claras y tus proyectos más legibles.",
      "button": "Crear mi espacio gratis",
      "features": [
        "Genes mejor vinculados",
        "Pedigree más legible",
        "Proyecciones mejor preparadas"
      ]
    },
    "breadcrumb": {
      "home": "Inicio"
    },
    "cross_links_label": "Profundizar:",
    "lenses": {
      "library": {
        "desc": "Todas las combinaciones presentes en tu colección, clasificadas, contadas, listas para filtrar.",
        "tag": "Inventario",
        "title": "Registro de morphs"
      },
      "pedigree": {
        "desc": "Tres generaciones de un vistazo. Sabes de dónde viene cada morph y cómo se ha transmitido.",
        "tag": "Línea",
        "title": "Pedigrí visual"
      },
      "punnett": {
        "desc": "Elige dos animales y ReptiNode calcula la distribución esperada. Se acabó el cálculo mental en una esquina de mesa.",
        "tag": "Proyección",
        "title": "Cuadro de Punnett"
      },
      "subtitle": "Según lo que busques —proyectar, comprender o inventariar—, la misma base de datos cambia de ángulo.",
      "tag": "Tres ángulos de lectura",
      "title": "Tres formas de leer la genética"
    },
    "pedigree": {
      "legend_het": "het recesivo",
      "legend_morph": "portador de morph",
      "legend_normal": "normal",
      "p1": "¿De dónde viene este morph? ¿Qué abuelo portaba el recesivo? El árbol genealógico responde sin que tengas que desplazarte por tres años de notas.",
      "p2": "Cada nodo es clicable y abre la ficha completa del animal. Subes por la línea sin salir nunca del árbol.",
      "subject": "Nyx · Banana het Pied",
      "subject_meta": "Nacido el 04 ago 2024 · generación III",
      "tag": "Pedigrí visual",
      "title": "Tres generaciones, una sola mirada"
    },
    "registry": {
      "animals_unit": "animales",
      "col_animals": "Animales",
      "col_combo": "Combinación",
      "col_type": "Tipo",
      "footer_action": "Filtrar →",
      "footer_total": "5 combinaciones · 12 animales afectados",
      "subtitle": "Un vistazo para saber cuántos animales portan tal combinación, y cuáles.",
      "tag": "Registro",
      "title": "Todas tus combinaciones, en un solo lugar",
      "type_codominant": "Codominante",
      "type_mixed": "Mixto",
      "type_recessive": "Recesivo"
    }
  },
  "logiciel_gestion_reptiles": {
    "seo": {
      "title": "Reptile management software",
      "description": "ReptiNode is reptile management software to track feedings, weight, sheds, breeding, genetics, and history in a clear specialized tool.",
      "structured_data_description": "Reptile management software to track feedings, sheds, weight, breeding, genetics, and history in a specialized tool."
    },
    "illustration": {
      "card_title": "Main collection",
      "card_subtitle": "Ball pythons · 24 active profiles",
      "status": "Tracking up to date",
      "last_feeding_label": "Last feeding",
      "last_feeding_value": "2 days ago",
      "last_feeding_meta": "rat pup validated",
      "weight_label": "Weight",
      "weight_value": "1,284 g",
      "weight_meta": "↗",
      "history_title": "Recent history",
      "weight_logged_title": "Weight recorded",
      "weight_logged_time": "Today · 09:42",
      "breeding_cycle_title": "Breeding cycle scheduled",
      "breeding_cycle_time": "Yesterday · 18:17",
      "quick_access": "Quick identification",
      "synced_data_title": "Synchronized data",
      "synced_data_text": "Centralized history",
      "collection_meta": "24 reptiles · 3 especies",
      "collection_name": "Mi colección",
      "export_meta": "PDF · CSV",
      "export_title": "Exportación lista",
      "filters_title": "Filtros",
      "list": {
        "r1_event": "Pesaje · 1284 g",
        "r2_event": "Comida registrada",
        "r3_event": "Pre-puesta"
      },
      "list_title": "Actividad reciente",
      "metric_late_label": "Pesajes atrasados",
      "metric_late_unit": "por gestionar",
      "metric_to_feed_label": "Por alimentar",
      "metric_to_feed_unit": "esta semana",
      "search_placeholder": "Buscar: nombre, código, especie…",
      "synced": "Sync"
    },
    "faq": {
      "title": "Frequently asked questions",
      "description": "Everything you need to know before choosing reptile management software.",
      "items": [
        {
          "q": "Who is this reptile management software for?",
          "r": "ReptiNode is built for enthusiasts, breeders, and organizations that want to centralize animal records, history, feedings, sheds, breeding, and documents in one tool."
        },
        {
          "q": "Is it more practical than a spreadsheet?",
          "r": "Yes. A spreadsheet forces you to structure everything manually, limits chronological tracking, and quickly becomes fragile with multiple animals. ReptiNode gathers data by reptile, displays history clearly, and reduces missed information."
        },
        {
          "q": "Can I quickly find a profile in a breeding facility?",
          "r": "Yes. ReptiNode is designed to access each profile quickly, record events, track key information, and find a reptile without wasting time."
        },
        {
          "q": "Can I manage both daily care and breeding?",
          "r": "Yes. The software covers everyday reptile tracking as well as more advanced needs like pairings, clutches, pedigree, genetics, and documentation."
        },
        {
          "q": "Is the software suitable for a growing collection?",
          "r": "Yes. The more reptiles you have, the more useful it becomes to have structured software rather than relying on personal memory or scattered files."
        }
      ],
      "bottom_text": "Want to see how all this fits together in the product?",
      "bottom_link": "View the features page"
    },
    "hero": {
      "badge": "Specialized software for reptiles",
      "title_line_1": "Reptile management",
      "title_line_2": "software",
      "description": "Centralize your reptile profiles, event history, feedings, sheds, weights, breeding, and genetics in a tool designed for your breeding operation or collection.",
      "primary_cta": "Create my space",
      "secondary_cta": "View features",
      "stats": {
        "all_data": "One place for all your data",
        "no_spreadsheets": "Scattered spreadsheets to maintain",
        "specialized_value": "100%",
        "specialized_label": "Built for the reptile world"
      },
      "reassurance_1": "Un único espacio centralizado",
      "reassurance_2": "Cero hojas de cálculo que mantener",
      "reassurance_3": "Alojamiento europeo"
    },
    "benefits": {
      "title": "Why use reptile management software?",
      "description": "As your collection grows, manual tracking quickly becomes fragile. Specialized software helps keep a clear, structured, and reliable view of each reptile.",
      "daily": {
        "badge": "Daily tracking",
        "title": "Each reptile has a clear, usable profile",
        "description": "No more scattered notes, forgotten information, or lost details. ReptiNode centralizes important data for each animal in a readable, structured profile that is easy to update.",
        "items": [
          "Chronological event history",
          "Weight and progress tracking"
        ]
      },
      "mobile": {
        "title": "Designed to be smooth every day",
        "description": "Add an event, open a profile, check information, or find a reptile in seconds, even from mobile."
      },
      "genetics": {
        "title": "A solid foundation for genetics",
        "description": "Track pairings, visualize links between individuals, and keep more serious traceability than with a simple spreadsheet.",
        "example_line": "Pastel x Mojave",
        "example_highlight": "➜ pairing recorded + history preserved"
      },
      "admin": {
        "title": "All the useful admin in one place",
        "description": "Keep documents, key information, and important references directly linked to your reptiles to save time and avoid losing information.",
        "items": {
          "breeding_title": "Breeding tracking",
          "breeding_badge": "Structured",
          "centralized_title": "Centralized information",
          "centralized_badge": "Accessible"
        }
      }
    },
    "value_section": {
      "title": "What ReptiNode helps you manage better",
      "description": "Good reptile management software should cover essential daily tasks while remaining useful when your activity becomes more advanced.",
      "daily": {
        "title": "Daily management",
        "description": "ReptiNode helps you keep tracking clean, consistent, and readable over time.",
        "features": [
          "Centralized reptile profiles",
          "Event history",
          "Feeding and shed tracking",
          "Weight and progress tracking",
          "Simple access from mobile"
        ],
        "button": "Explore features"
      },
      "advanced": {
        "badge": "For serious collections",
        "title": "Advanced management",
        "description": "As soon as you track several animals or breeding, structure makes the difference.",
        "features": [
          "Pairing organization",
          "Clearer breeding view",
          "Working base for genetics",
          "More reliable information over time",
          "Less dependence on scattered files"
        ],
        "button": "Start for free",
        "footer_note": "Quick setup"
      }
    },
    "comparison": {
      "title": "A more reliable tool than improvised organization",
      "description": "The more your collection grows, the more important it becomes to have a clear, stable base designed to retrieve the right information at the right time.",
      "before": {
        "title": "Before",
        "description": "Notes in multiple places, spreadsheets, separate reminders, and dependence on memory to connect information."
      },
      "with_reptinode": {
        "title": "With ReptiNode",
        "description": "A single structure to open the right profile, record an event quickly, and maintain a clean history over time."
      },
      "result": {
        "title": "Result",
        "description": "Calmer management, better maintained data, and a much stronger foundation for tracking your reptiles day to day and long term."
      }
    },
    "cta": {
      "badge": "Move to cleaner management",
      "title_line_1": "Manage your reptiles",
      "title_line_2": "in a tool designed for them",
      "description": "ReptiNode helps you centralize your data, track each animal better, and build a stronger foundation for your collection or breeding operation.",
      "button": "Create my space for free",
      "features": [
        "Quick onboarding",
        "Tool built for reptiles",
        "Clear long-term foundation"
      ]
    },
    "breadcrumb": {
      "home": "Inicio"
    },
    "compare_table": {
      "col_criteria": "Criterio",
      "col_spreadsheet": "Hoja de cálculo",
      "row_1": {
        "criteria": "Una ficha por reptil"
      },
      "row_2": {
        "criteria": "Historial cronológico automático"
      },
      "row_3": {
        "criteria": "Búsqueda y filtros dedicados"
      },
      "row_4": {
        "criteria": "Registro rápido desde el móvil"
      },
      "row_5": {
        "criteria": "Pedigrí y líneas vinculados"
      },
      "row_6": {
        "criteria": "Copia de seguridad y seguridad gestionadas"
      },
      "subtitle": "Una hoja de cálculo puede soportar 5 animales. Más allá, la estructura de un software real marca la diferencia.",
      "tag": "Comparación",
      "title": "Hoja de cálculo vs software especializado"
    },
    "cross_links_label": "Profundizar:",
    "use_cases": {
      "hobbyist": {
        "desc": "De 2 a 10 reptiles. Quieres dejar de olvidar los pesajes y mantener un historial limpio, sin complicaciones.",
        "tag": "Gratis basta",
        "title": "Aficionado solitario"
      },
      "keeper": {
        "desc": "De 20 a 100 reptiles, varios proyectos. Necesitas filtros, pedigrí vinculado y una lectura rápida de toda la colección.",
        "tag": "Pro recomendado",
        "title": "Criador estructurado"
      },
      "pro": {
        "desc": "Tienda de animales, comercio, parque. Quieres una base clara, exportable y duradera para el inventario vivo y el historial sanitario.",
        "tag": "Pro + exportación",
        "title": "Estructura profesional"
      },
      "subtitle": "La misma herramienta se adapta del aficionado solitario a la estructura profesional.",
      "tag": "Casos de uso",
      "title": "Sea cual sea el tamaño de tu colección"
    },
    "workflow": {
      "step_1": {
        "desc": "Una ficha por reptil: identidad, especie, genética, foto, código interno. Se acabaron las notas dispersas entre teléfono, papel y hojas de cálculo.",
        "title": "Centraliza tus fichas"
      },
      "step_2": {
        "desc": "Pesaje, comida, muda, observación: cada evento se añade en segundos, desde el ordenador o el móvil, y permanece vinculado al animal correcto.",
        "title": "Registra al vuelo"
      },
      "step_3": {
        "desc": "Filtra por especie, año, estado. Encuentra el historial completo de un animal con un clic, incluso tres años después.",
        "title": "Relee sin fricción"
      },
      "subtitle": "Diseñado para desaparecer detrás de tus animales. Tú registras, ReptiNode estructura y conserva.",
      "tag": "Cómo funciona",
      "title": "Tres pasos, cero complejidad"
    }
  },
  "terms": {
    "nav": {
      "back": "Volver"
    },
    "header": {
      "badge": "Reglas del juego",
      "title": "Términos y Condiciones",
      "subtitle": "TyC y Condiciones de Venta - Vigentes desde el 22 de noviembre de 2025"
    },
    "tldr": {
      "title": "En Resumen (Lo esencial)",
      "point_1": "Uso personal y profesional aceptado.",
      "point_2": "La suscripción Pro no tiene permanencia, cancelable en cualquier momento.",
      "point_3": "Usted sigue siendo el propietario de sus datos.",
      "point_4": "No somos responsables de la salud de sus animales (consulte a un veterinario)."
    },
    "sections": {
      "object": {
        "title": "1. Objeto",
        "content": "Las presentes Condiciones Generales de Uso y Venta (en adelante \"CGU/CGV\") rigen el uso del sitio y la aplicación ReptiNode. Al crear una cuenta, usted acepta estas condiciones sin reservas."
      },
      "access": {
        "title": "2. Acceso al Servicio",
        "p1": "El servicio es accesible de forma gratuita (Plan Descubrimiento) con funcionalidades limitadas. Las funcionalidades avanzadas (Plan Pro) requieren una suscripción de pago.",
        "p2": "Usted es responsable de la confidencialidad de sus credenciales. Cualquier acción realizada desde su cuenta se considera realizada por usted."
      },
      "payment": {
        "title": "3. Suscripciones y Pagos",
        "sub_1_title": "3.1 Tarifas",
        "sub_1_content": "Los precios se indican en Euros (€) con todos los impuestos incluidos. ReptiNode se reserva el derecho de modificar sus tarifas en cualquier momento, pero se compromete a aplicar las tarifas vigentes en el momento de la suscripción.",
        "sub_2_title": "3.2 Pago",
        "sub_2_content": "Los pagos están asegurados y procesados por nuestro socio Stripe. Ningún dato bancario transita sin cifrar por nuestros servidores.",
        "sub_3_title": "3.3 Cancelación",
        "sub_3_content": "La suscripción es sin compromiso. Puede cancelarla en cualquier momento desde su espacio \"Configuración\". La cancelación será efectiva al final del período de facturación actual. No se realizan reembolsos prorrateados."
      },
      "liability": {
        "title": "4. Responsabilidad Limitada",
        "intro_bold": "ReptiNode es una herramienta de gestión, no un veterinario.",
        "intro_text": "Proporcionamos herramientas para seguir el peso, las comidas y la reproducción. Sin embargo:",
        "list_1": "No garantizamos el éxito de sus proyectos de reproducción.",
        "list_2": "No somos responsables de la salud de sus animales. Las alertas de software no reemplazan el consejo de un profesional.",
        "list_3": "No nos hacemos responsables en caso de pérdida de datos debido a un fallo mayor, aunque hacemos todo lo posible (copias de seguridad diarias) para evitarlo."
      },
      "user_content": {
        "title": "5. Contenido del Usuario",
        "content": "Usted se compromete a no publicar en la plataforma (incluyendo notas o fotos) ningún contenido ilegal, odioso, pornográfico o que incite al maltrato animal. ReptiNode se reserva el derecho de suspender cualquier cuenta que no respete esta regla, sin previo aviso ni reembolso."
      },
      "law": {
        "title": "6. Ley Aplicable",
        "content": "Estas condiciones están sujetas a la ley francesa. En caso de litigio, y a falta de acuerdo amistoso, los tribunales de París serán los únicos competentes."
      }
    },
    "footer": {
      "privacy": "Privacidad",
      "legal": "Avisos Legales",
      "rights": "Todos los derechos reservados."
    }
  },
  "privacy": {
    "nav": {
      "back": "Volver"
    },
    "header": {
      "badge": "Sus datos le pertenecen",
      "title": "Política de Privacidad",
      "last_update": "Última actualización: {{date}}"
    },
    "tldr": {
      "title": "En resumen (TL;DR)",
      "point_1": "<strong>Nunca</strong> vendemos sus datos personales a terceros.",
      "point_2": "Sus datos de cría (reptiles, peso, reproducción) son privados por defecto.",
      "point_3": "Puede exportar o eliminar sus datos en cualquier momento.",
      "point_4": "Los datos se almacenan de forma segura en servidores en Europa."
    },
    "sections": {
      "intro": {
        "title": "1. Introducción",
        "p1": "Bienvenido a <strong>ReptiNode</strong>. La protección de su privacidad es el centro de nuestra misión. Como criadores nosotros mismos, sabemos que los datos sobre sus líneas genéticas, sus proyectos de reproducción y su colección son sensibles.",
        "p2": "Esta política detalla qué datos recopilamos, cómo los usamos y cómo los protegemos. Al utilizar nuestro servicio, acepta las prácticas descritas aquí."
      },
      "collected": {
        "title": "2. Datos recopilados",
        "intro": "Solo recopilamos la información necesaria para el buen funcionamiento de la aplicación:",
        "point_1": "<strong>Información de la cuenta:</strong> Dirección de correo electrónico, contraseña (cifrada), nombre de usuario.",
        "point_2": "<strong>Datos de cría:</strong> Nombres de los reptiles, especies, fases, pesos, fechas de alimentación, mudas, apareamientos, puestas, notas y fotos que suba.",
        "point_3": "<strong>Datos técnicos:</strong> Registros de conexión, tipo de dispositivo, dirección IP (solo con fines de seguridad).",
        "point_4": "<strong>Pagos:</strong> Si se suscribe a un plan Pro, nuestro procesador de pagos (Stripe) gestiona su información bancaria. Nunca almacenamos sus números de tarjeta completos."
      },
      "usage": {
        "title": "3. Uso de los datos",
        "intro": "Sus datos se utilizan exclusivamente para:",
        "point_1": "Proporcionarle acceso a su panel de control y gestionar su cría.",
        "point_2": "Generar sus documentos (certificados de cesión, fichas de seguimiento).",
        "point_3": "Enviarle notificaciones importantes (recordatorios de cuidados, actualizaciones de seguridad).",
        "point_4": "Mejorar la aplicación mediante estadísticas anónimas (ej: \"¿Cuántos Python Regius se gestionan en la plataforma?\")."
      },
      "sharing": {
        "title": "4. Intercambio y Terceros",
        "bold_statement": "No vendemos, alquilamos ni compartimos sus datos personales con ningún anunciante publicitario.",
        "intro": "Solo compartimos datos con nuestros proveedores técnicos esenciales:",
        "point_1": "<strong>Alojamiento y Base de datos:</strong> PostgreSQL (Almacenamiento seguro).",
        "point_2": "<strong>Pagos:</strong> Stripe (Gestión de suscripciones).",
        "point_3": "<strong>Correos electrónicos:</strong> Hostinger (Envío de notificaciones transaccionales)."
      },
      "security": {
        "title": "5. Seguridad",
        "intro": "Implementamos las mejores prácticas de la industria para proteger sus datos:",
        "point_1": "Todas las comunicaciones están cifradas a través de <strong>SSL/TLS (HTTPS)</strong>.",
        "point_2": "Las contraseñas se resumen con algoritmos robustos (Argon2/Bcrypt) antes del almacenamiento.",
        "point_3": "Se realizan copias de seguridad automáticas diariamente para evitar cualquier pérdida de datos.",
        "point_4": "El acceso a los datos de producción está restringido solo a los ingenieros clave del equipo."
      },
      "rights": {
        "title": "6. Sus Derechos (RGPD)",
        "intro": "De conformidad con el Reglamento General de Protección de Datos, usted tiene los siguientes derechos:",
        "point_1": "<strong>Derecho de acceso y portabilidad:</strong> Puede descargar una copia completa de sus datos (PDF/JSON) desde su cuenta.",
        "point_2": "<strong>Derecho de rectificación:</strong> Puede modificar su información en cualquier momento.",
        "point_3": "<strong>Derecho al olvido:</strong> Puede eliminar su cuenta y todos los datos asociados permanentemente a través de la configuración."
      },
      "cookies": {
        "title": "7. Cookies",
        "content": "Utilizamos solo cookies \"esenciales\" necesarias para mantener su sesión (mantenerlo conectado) y para la seguridad (protección contra ataques CSRF). No utilizamos cookies publicitarias o de rastreo de terceros invasivas."
      }
    },
    "contact": {
      "title": "Contáctenos",
      "text": "Para cualquier pregunta sobre esta política o para ejercer sus derechos, contacte a nuestro Delegado de Protección de Datos (DPO):"
    },
    "footer": {
      "terms": "Términos de Uso",
      "legal": "Avisos Legales",
      "rights": "Todos los derechos reservados."
    }
  },
  "legal": {
    "nav": {
      "back": "Volver"
    },
    "header": {
      "title": "Avisos Legales",
      "subtitle": "Información legal obligatoria"
    },
    "sections": {
      "editor": {
        "title": "1. Editor del Sitio",
        "intro": "El sitio <strong>ReptiNode</strong> es editado por la empresa:",
        "company_name": "<strong>Razón social:</strong> ReptiNode (Sociedad en proceso de constitución)",
        "capital": "<strong>Capital social:</strong> 10.000 €",
        "rcs": "<strong>RCS:</strong> París B 123 456 789",
        "siret": "<strong>SIRET:</strong> 123 456 789 00012",
        "tva": "<strong>Número de IVA:</strong> FR 12 123456789",
        "address": "<strong>Sede social:</strong> 10 impasse des Dames Colle, 10000 Troyes, Francia",
        "director": "<strong>Director de la publicación:</strong> MERCOURT Noé (Presidente)"
      },
      "hosting": {
        "title": "2. Alojamiento",
        "intro": "El sitio y sus datos están alojados por proveedores que cumplen con las normas de seguridad europeas:",
        "app_provider": "Aplicación y Frontend:",
        "db_provider": "Base de Datos y Almacenamiento:"
      },
      "intellectual": {
        "title": "3. Propiedad Intelectual",
        "p1": "Todo este sitio está sujeto a la legislación francesa e internacional sobre derechos de autor y propiedad intelectual. Todos los derechos de reproducción están reservados, incluidos los documentos descargables y las representaciones iconográficas y fotográficas.",
        "p2": "La reproducción total o parcial de este sitio en cualquier medio electrónico está formalmente prohibida salvo autorización expresa del director de la publicación."
      },
      "contact": {
        "title": "4. Contacto",
        "intro": "Para cualquier solicitud relacionada con el sitio, puede contactarnos:",
        "email_label": "Por correo electrónico:",
        "mail_label": "Por correo postal:",
        "mail_value": "A la dirección de la sede social indicada anteriormente."
      }
    },
    "footer": {
      "privacy": "Privacidad",
      "terms": "TyC",
      "rights": "Todos los derechos reservados."
    }
  },
  "public_profile": {
    "errors": {
      "not_found": "Animal no encontrado o vendido.",
      "loading": "Error de carga",
      "access_title": "Perfil inaccesible"
    },
    "status_available": "Disponible",
    "share_alert": "¡URL copiada!",
    "labels": {
      "morph": "Fase",
      "sex": "Sexo",
      "age": "Edad",
      "weight": "Peso",
      "length": "Tamaño"
    },
    "units": {
      "year": "año",
      "year_plural": "años"
    },
    "defaults": {
      "classic": "Clásica",
      "na": "N/A"
    },
    "certification_text": "Este animal proviene de mi criadero certificado. Escanee para ver el historial completo al transferir.",
    "email_subject": "Interesado en {{name}}",
    "contact_button": "Contactar al criador",
    "contact_unavailable": "Contacto no disponible",
    "footer_generated": "Ficha generada vía ReptiNode App",
    "password": {
      "title": "Ficha protegida",
      "desc": "Esta ficha está protegida por contraseña.",
      "placeholder": "Contraseña",
      "wrong": "Contraseña incorrecta.",
      "submit": "Acceder"
    },
    "forSale": {
      "forSale": "En venta",
      "reserved": "Reservado",
      "sold": "Vendido",
      "contact": "Contactar",
      "morphmarket": "MorphMarket"
    },
    "cert": {
      "verified": "Certificado de autenticidad verificado",
      "show": "Ver",
      "hide": "Ocultar",
      "breeder": "Criador",
      "currentOwner": "Propietario actual",
      "genetics": "Genética",
      "chain": "Cadena de propiedad",
      "verifiedAt": "Verificado el {{date}} · ReptiNode"
    }
  },
  "admin": {
    "header": {
      "title": "Administración",
      "subtitle": "Panel de control extendido",
      "role": "Súper Admin"
    },
    "tabs": {
      "dashboard": "Tablero",
      "support": "Soporte"
    },
    "i18n": {
      "add": {
        "enLabel": "Inglés (EN) — requerido",
        "enPlaceholder": "Valor en inglés",
        "error": {
          "required": "La clave, EN y FR son obligatorios."
        },
        "extra": {
          "langLabel": "Idioma adic.",
          "toggle": "Añadir un idioma adicional",
          "valueLabel": "Valor"
        },
        "frLabel": "Francés (FR) — requerido",
        "frPlaceholder": "Valor en francés",
        "keyLabel": "Clave",
        "keyPlaceholder": "ej.: contribute.form.name",
        "reset": "Restablecer",
        "submit": "Enviar",
        "title": "Añadir una traducción (EN + FR requeridos)"
      },
      "browse": {
        "byAuthor": "por {{author}}",
        "byAuthorWithDate": "por {{author}} — {{date}}",
        "deleteTitle": "Eliminar definitivamente esta clave (todos los idiomas)",
        "empty": "Sin resultados.",
        "lang": {
          "all": "Todos",
          "en": "EN",
          "es": "ES",
          "fr": "FR"
        },
        "langLabel": "Idioma",
        "searchLabel": "Búsqueda (clave o valor)",
        "searchPlaceholder": "ej.: contribute.title, 'Account created'…",
        "table": {
          "actions": "Acciones",
          "en": "EN",
          "es": "ES",
          "fr": "FR",
          "key": "Clave"
        },
        "title": "Traducciones existentes",
        "translatorLabel": "Traductor"
      },
      "delete": {
        "confirm": "Eliminar definitivamente",
        "confirmInstruction": "Para confirmar, vuelve a escribir la clave: {{key}}",
        "confirmTooltip": "Vuelve a escribir la clave para confirmar",
        "inputPlaceholder": "Vuelve a escribir la clave exactamente",
        "title": "Eliminar la clave",
        "warning": "Esta acción eliminará definitivamente la clave {{key}} en todos los idiomas."
      },
      "edit": {
        "history": {
          "empty": "No hay historial para este idioma.",
          "label": "Historial ({{count}})"
        },
        "title": "Editar e historial"
      },
      "error": {
        "load": "Error al cargar i18n: {{message}}"
      },
      "loading": {
        "translations": "Cargando traducciones…"
      },
      "missing": {
        "addButton": "Añadir (EN+FR)",
        "empty": "No hay traducciones faltantes.",
        "langLabel": "Idioma",
        "searchKeyLabel": "Búsqueda por clave",
        "searchKeyPlaceholder": "ej.: contribute.form.",
        "table": {
          "key": "Clave"
        },
        "title": "Claves faltantes ({{lang}})"
      },
      "overview": {
        "card": {
          "progress": "{{done}}/{{total}} claves",
          "viewLangTranslationsTitle": "Ver las traducciones {{lang}}"
        },
        "title": "Cobertura de traducciones"
      },
      "pending": {
        "approve": "Aprobar",
        "empty": "No hay traducciones pendientes.",
        "reject": "Rechazar",
        "table": {
          "actions": "Acciones",
          "id": "ID",
          "key": "Clave",
          "lang": "Idioma",
          "submittedAt": "Enviada el",
          "submittedBy": "Enviada por",
          "value": "Valor"
        },
        "title": "Traducciones pendientes de validación"
      },
      "tabs": {
        "add": "Añadir",
        "browse": "Explorar y editar",
        "missing": "Faltantes ({{count}})",
        "overview": "Resumen",
        "pending": "Pendientes ({{count}})"
      }
    },
    "common": {
      "save": "Guardar",
      "cancel": "Cancelar",
      "delete": "Eliminar",
      "add": "Añadir",
      "edit": "Editar",
      "search": "Buscar",
      "close": "Cerrar",
      "confirm": "Confirmar",
      "loading": "Cargando…",
      "actions": "Acciones",
      "refresh": "Actualizar",
      "export": "Exportar",
      "filters": "Filtros",
      "all": "Todos",
      "none": "Ninguno",
      "back": "Volver",
      "yes": "Sí",
      "no": "No",
      "noResults": "Sin resultados",
      "required": "Obligatorio",
      "previous": "Anterior",
      "next": "Siguiente",
      "saved": "Guardado",
      "error": "Se produjo un error",
      "total": "Total",
      "status": "Estado",
      "name": "Nombre",
      "description": "Descripción",
      "date": "Fecha",
      "email": "Correo",
      "create": "Crear",
      "view": "Ver"
    },
    "nav": {
      "groups": {
        "pilotage": "Dirección",
        "management": "Gestión",
        "contentSupport": "Contenido y soporte",
        "technical": "Técnico"
      },
      "items": {
        "dashboard": "Vista general",
        "analytics": "Sesiones y estadísticas",
        "revenue": "Ingresos",
        "surveys": "Encuestas / NPS",
        "users": "Usuarios",
        "roles": "Roles",
        "billing": "Facturación",
        "families": "Familias",
        "support": "Soporte",
        "content": "Contenido",
        "moderation": "Moderación",
        "genetics": "Genética",
        "comms": "Comunicación",
        "i18n": "Traducciones",
        "system": "Sistema",
        "infra": "Infraestructura",
        "compliance": "Seguridad y cumplimiento"
      }
    },
    "help": {
      "dashboard": "KPIs de negocio: MRR/ARR, registros, engagement (DAU/MAU), alertas y conversión por página.",
      "analytics": "Sesiones de inicio de sesión y estadísticas de uso detalladas.",
      "revenue": "Desglose del MRR (nuevo/expansión/churn), previsión, rendimiento de promociones, conciliación de Stripe y migración de plan.",
      "surveys": "Crea encuestas NPS/CSAT, sigue la puntuación y lee los comentarios.",
      "users": "Búsqueda, edición, moderación, RGPD y ficha CRM (notas, etiquetas, puntuación de salud, asignación de roles).",
      "roles": "Define los roles y sus permisos. La asignación a los usuarios se realiza desde su ficha CRM.",
      "billing": "Suscripciones, pagos fallidos, reembolsos, códigos promocionales y webhooks de Stripe.",
      "families": "Colecciones colaborativas, sus miembros, analíticas y moderación.",
      "support": "Tickets con hilo de conversación, plantillas de respuesta, prioridad/categoría y seguimiento de SLA.",
      "content": "FAQ, anuncios in-app, changelog y plantillas de respuesta.",
      "moderation": "Cola de contenidos reportados y detección de cuentas en riesgo.",
      "genetics": "Catálogo de especies y edición del registro genético (loci/morfos), con puntuación de completitud.",
      "comms": "Campañas push, emails segmentados, plantillas, adopción de PWA y entregabilidad.",
      "i18n": "Cobertura por idioma, claves faltantes/sin usar y exportación CSV.",
      "system": "Estado, errores, CRON, jobs, uso de funciones, subidas y auditoría.",
      "infra": "Latencias (p50/p95/p99), webhooks + reintento, CRON bajo demanda, almacenamiento, SQL de solo lectura, copias de seguridad y caché.",
      "compliance": "RGPD, consentimientos, retención, política de contraseñas, modo mantenimiento, sesiones de administrador, inicios de sesión sospechosos y página de estado."
    },
    "state": { "errorTitle": "No se pudo cargar", "retry": "Reintentar", "empty": "Nada por ahora." },
    "pager": { "total": "{{count}} en total", "prev": "Anterior", "next": "Siguiente" },
    "confirm": { "reason": "Motivo (obligatorio)", "typeToConfirm": "Escribe {{value}} para confirmar" },
    "shell": {
      "admin": "Admin",
      "checkingAccess": "Verificando accesos...",
      "restrictedTitle": "Acceso Restringido",
      "restrictedDesc": "Este espacio está reservado a los administradores. Si cree que se trata de un error, póngase en contacto con el soporte.",
      "backToSite": "Volver al sitio",
      "superAdmin": "Super Admin",
      "exit": "Salir del admin",
      "online": "En línea:",
      "presenceTooltip": "{{email}} · pestaña {{tab}} · hace {{seconds}}s",
      "help": "Ayuda",
      "helpTooltip": "Ayuda contextual"
    },
    "dashboard": {
      "timeAgoNow": "ahora mismo",
      "timeAgoMin": "hace {{value}} min",
      "timeAgoHour": "hace {{value}} h",
      "timeAgoDay": "hace {{value}} d",
      "typeSignup": "Registro",
      "typeFeedback": "Comentario",
      "typeSupport": "Soporte",
      "typeSurvey": "Encuesta",
      "typeRgpd": "RGPD",
      "typeReport": "Denuncia",
      "vsPrevPeriod": "vs período ant.",
      "loading": "Cargando el panel…",
      "title": "Vista general",
      "subtitle": "Salud del negocio, ingresos y engagement.",
      "todoSupportAwaiting": "Tickets de soporte pendientes",
      "todoFeedbackNew": "Nuevos comentarios",
      "todoRgpdPending": "Solicitudes RGPD por tratar",
      "todoReportedPending": "Contenidos denunciados",
      "todoTitle": "Por hacer",
      "todoEmpty": "Nada pendiente. 🎉",
      "recentTitle": "Últimas novedades",
      "recentEmpty": "Sin actividad reciente.",
      "realtime": "Tiempo real",
      "onlineNow": "en línea (5 min)",
      "active15m": "activos (15 min)",
      "lastSignup": "Último registro: {{name}}",
      "arpuSub": "ARPU {{value}}",
      "payingUsersSub": "{{value}} suscriptores de pago",
      "usersLabel": "Usuarios",
      "convertedSub": "{{value}}% convertidos a PRO",
      "signups30dLabel": "Registros 30d",
      "dauLabel": "DAU (activos 24 h)",
      "mauLabel": "MAU (activos 30d)",
      "stickinessLabel": "Stickiness DAU/MAU",
      "stickinessSub": "Engagement diario",
      "growthTitle": "Crecimiento (30 días)",
      "signupsSeries": "Registros",
      "activeSeries": "Activos",
      "planDistributionTitle": "Distribución de planes"
    },
    "analytics": {
      "periodToday": "Hoy",
      "periodAll": "Todo",
      "periodDays": "{{count}} días",
      "tooltipTotalConnections": "Total de conexiones:",
      "tooltipUniqueUsers": "Usuarios únicos:",
      "defaultUsername": "Usuario",
      "resetRange": "Restablecer intervalo",
      "statUniqueUsers": "Usuarios únicos",
      "statTotalConnections": "Total de conexiones",
      "statAvgSessions": "Prom. sesiones / usuario",
      "statNewRegistrations": "Nuevos registros",
      "loadingData": "Cargando datos...",
      "noDataForPeriod": "No hay datos para este período",
      "chartVisitors": "Visitantes",
      "chartConnections": "Conexiones",
      "legendUniqueVisitors": "Visitantes únicos",
      "legendTotalConnections": "Conexiones totales",
      "envTitle": "Entorno",
      "envBrowsers": "Navegadores",
      "envDevices": "Dispositivos",
      "locTitle": "Ubicación",
      "locCountries": "Países",
      "locRegions": "Regiones",
      "locCities": "Ciudades",
      "loadingActiveUsers": "Cargando usuarios activos...",
      "noActiveUsers": "No hay usuarios activos",
      "noActiveUsersHint": "Prueba a modificar tus filtros o el período.",
      "colUser": "Usuario",
      "colConnections": "Conexiones",
      "colLastLocation": "Última ubicación",
      "colLastDevice": "Último dispositivo",
      "colLastActivity": "Última actividad",
      "unknown": "Desconocido",
      "activeUsersSingular": "{{count}} usuario activo",
      "activeUsersPlural": "{{count}} usuarios activos",
      "pageIndicator": "página {{page}} / {{total}}"
    },
    "revenue": {
      "migrationDone": "{{count}} cuenta(s) migrada(s).",
      "tabMrr": "Cascada de MRR",
      "tabForecast": "Previsión",
      "tabPromos": "Códigos promocionales",
      "tabReconciliation": "Conciliación",
      "tabMigration": "Migración de plan",
      "title": "Ingresos",
      "subtitle": "Movimientos de MRR, previsión, promociones y operaciones de facturación.",
      "exportFailed": "La operación ha fallado",
      "exportAccounting": "Exportación contable (IVA)",
      "currentMrr": "MRR actual",
      "currentArr": "ARR actual",
      "noHistory": "El historial de movimientos de MRR se construye a partir de los próximos cambios de suscripción (mediante los webhooks de Stripe). Las barras se irán rellenando a medida que evolucionen los planes.",
      "breakdownTitle": "Desglose de movimientos (6 meses)",
      "new": "Nuevo",
      "expansion": "Expansión",
      "contraction": "Contracción",
      "churn": "Churn",
      "forecastTitle": "Previsión de MRR (6 meses)",
      "avgGrowth": "Crecimiento medio: {{value}}/mes",
      "current": "Actual",
      "projectedMrr": "MRR proyectado",
      "code": "Código",
      "reduction": "Descuento",
      "usages": "Usos",
      "estimatedRevenue": "Ingresos estimados",
      "active": "Activo",
      "noPromos": "No hay códigos promocionales.",
      "stripeNotConfigured": "Stripe no configurado — conciliación no disponible.",
      "noDiscrepancy": "No se detectaron discrepancias entre la base de datos y Stripe. {{count}} suscriptores verificados. 🎉",
      "discrepancies": "{{count}} discrepancia(s) detectada(s)",
      "migrationTitle": "Migración masiva de planes",
      "migrationDesc": "Mueve a todos los usuarios de un plan a otro (mantenimiento de precios heredados). Realiza siempre una prueba (dry-run) primero.",
      "dryRunResult": "Prueba: se migrarían {{count}} cuenta(s).",
      "migratedResult": "{{count}} cuenta(s) migrada(s) ✓",
      "dryRunBtn": "Prueba (dry-run)",
      "migrateConfirm": "¿Migrar todos los {{from}} a {{to}}?",
      "apply": "Aplicar"
    },
    "surveys": {
      "actionShown": "Activada",
      "actionHidden": "Desactivada",
      "actionCreated": "Creada",
      "actionUpdated": "Modificada",
      "title": "Encuestas y NPS",
      "subtitle": "Mida la satisfacción y lea los comentarios.",
      "newSurvey": "Nueva encuesta",
      "empty": "Aún no hay encuestas. Cree su primera encuesta NPS.",
      "inactive": "inactiva",
      "viewResponses": "Ver respuestas",
      "activationHistory": "Historial de activación",
      "deactivate": "Desactivar",
      "activate": "Activar",
      "confirmDelete": "¿Eliminar?",
      "npsScore": "Puntuación NPS",
      "avgScore": "Puntuación media",
      "responses": "Respuestas",
      "editSurvey": "Editar encuesta",
      "language": "Idioma:",
      "defaultLang": "(predeterminado)",
      "emptyFallback": "(vacío = respaldo FR)",
      "internalTitle": "Título interno",
      "titleLang": "Título ({{lang}})",
      "questionPlaceholder": "Pregunta formulada al usuario",
      "questionLang": "Pregunta ({{lang}})",
      "typeNps": "NPS (0-10)",
      "typeCsat": "CSAT (1-5)",
      "typeText": "Texto libre",
      "audienceFree": "Usuarios gratuitos",
      "startDate": "Inicio (opcional)",
      "endDate": "Fin (opcional)",
      "dateHint": "Si se indican, la encuesta solo se muestra a los usuarios entre estas dos fechas.",
      "noResponses": "Aún no hay respuestas.",
      "scoreLabel": "Puntuación: {{score}}",
      "textResponse": "Texto",
      "noEvents": "Aún no se ha registrado ningún evento.",
      "byActor": "por {{name}}"
    },
    "users": {
      "title": "Usuarios",
      "subtitle_one": "{{count}} cuenta — búsqueda, edición y moderación.",
      "subtitle_other": "{{count}} cuentas — búsqueda, edición y moderación.",
      "searchPlaceholder": "Buscar por email o nombre de usuario…",
      "exportCsv": "Exportar CSV",
      "exportFilename": "usuarios.csv",
      "allPlans": "Todos los planes",
      "allRoles": "Todos los roles",
      "allStatus": "Cualquier estado",
      "statusActive": "Activos",
      "statusSuspended": "Suspendidos",
      "allCountries": "Todos los países",
      "minReptiles": "Mín. reptiles",
      "reset": "Restablecer",
      "selectedCount_one": "{{count}} seleccionado",
      "selectedCount_other": "{{count}} seleccionados",
      "clear": "Borrar",
      "suspend": "Suspender",
      "reactivate": "Reactivar",
      "changePlan": "Cambiar plan",
      "selectAll": "Seleccionar todo (página actual)",
      "colUser": "Usuario",
      "plan": "Plan",
      "roles": "Roles",
      "colReptiles": "Reptiles",
      "colRegistered": "Registrado",
      "empty": "No se encontraron usuarios.",
      "suspended": "Suspendido",
      "active": "Activo",
      "impersonate": "Iniciar sesión como usuario",
      "crmTitle": "Ficha CRM y roles",
      "resetPassword": "Restablecer contraseña",
      "unsuspend": "Levantar suspensión",
      "forceLogout": "Forzar cierre de sesión",
      "exportGdpr": "Exportación RGPD",
      "pageOf": "Página {{page}} / {{totalPages}}",
      "editTitle": "Editar {{name}}",
      "emailVerified": "Email verificado",
      "saving": "Guardando…",
      "resetMsg": "Definir una nueva contraseña para {{name}}. El usuario será desconectado.",
      "resetConfirm": "Restablecer",
      "newPasswordPlaceholder": "Nueva contraseña (mín. 8)",
      "suspendTitle": "Suspender cuenta",
      "suspendMsg": "Suspender a {{name}}. La cuenta se bloqueará y el usuario será desconectado.",
      "days": "días",
      "reasonOptional": "Motivo (opcional)",
      "logoutMsg": "¿Revocar todas las sesiones de {{name}}?",
      "logoutConfirm": "Cerrar sesión",
      "deleteTitle": "Eliminar cuenta",
      "deleteMsg": "Esta acción es irreversible y eliminará todos los datos de {{name}} (RGPD).",
      "deleteConfirm": "Eliminar definitivamente",
      "deleteReasonPlaceholder": "Motivo de la eliminación (obligatorio)",
      "impersonateMsg": "¿Abrir una sesión como {{name}}? Se cerrará la sesión de tu cuenta de administrador y serás redirigido a su panel. Esta acción queda registrada.",
      "impersonateConfirm": "Iniciar sesión",
      "bulkSuspendTitle": "Suspender las cuentas seleccionadas",
      "bulkSuspendMsg": "{{count}} cuenta(s) serán suspendidas y desconectadas.",
      "processing": "Procesando…",
      "bulkUnsuspendTitle": "Reactivar cuentas",
      "bulkUnsuspendMsg": "¿Levantar la suspensión de {{count}} cuenta(s)?",
      "bulkSetPlanMsg": "Aplicar un nuevo plan a {{count}} cuenta(s).",
      "apply": "Aplicar",
      "newPlan": "Nuevo plan",
      "bulkDeleteTitle": "Eliminar las cuentas seleccionadas",
      "bulkDeleteMsg": "Esta acción es irreversible y eliminará definitivamente {{count}} cuenta(s) y todos sus datos (RGPD). Tu propia cuenta será ignorada.",
      "deleting": "Eliminando…",
      "bulkDeleteConfirm": "Eliminar {{count}} cuenta(s)",
      "healthScore": "Puntuación de salud",
      "healthFactors": "{{days}}d desde actividad · {{snakes}} reptiles · {{plan}}",
      "profileModeration": "Moderación del perfil público",
      "hidden": "Oculto",
      "visible": "Visible",
      "verified": "Verificado",
      "notVerified": "No verificado",
      "tags": "Etiquetas",
      "noTags": "Sin etiquetas",
      "addTagPlaceholder": "Añadir una etiqueta",
      "internalNotes": "Notas internas",
      "addNotePlaceholder": "Añadir una nota…",
      "adminAuthor": "Admin",
      "noNotes": "Sin notas.",
      "bulkPartialFail": "{{succeeded}} acción(es) con éxito, {{failed}} fallo(s) de {{requested}}.",
      "reasonRequired": "Se requiere un motivo para esta acción.",
      "passwordTooShort": "Contraseña demasiado corta (mín. 8)",
      "impersonateFailed": "No se pudo iniciar sesión en la cuenta.",
      "impersonateError": "Error al iniciar sesión en la cuenta.",
      "subtitle": "{{count}} usuario(s) en total",
      "selectedCount": "{{count}} seleccionado(s)"
    },
    "roles": {
      "confirmDelete": "¿Eliminar el rol \"{{name}}\"?",
      "unsavedConfirm": "Se perderán los cambios no guardados. ¿Continuar?",
      "title": "Roles y permisos",
      "subtitle": "Control de acceso granular (RBAC).",
      "newRole": "Nuevo rol",
      "permsCount": "{{n}} perms",
      "selectPrompt": "Selecciona un rol para gestionar sus permisos.",
      "selectedCount_one": "{{count}} permiso seleccionado",
      "selectedCount_other": "{{count}} permisos seleccionados",
      "usersWithRole": "Usuarios con este rol ({{n}})",
      "noUsers": "Ningún usuario tiene este rol.",
      "namePlaceholder": "Nombre del rol (p. ej. moderador)",
      "descPlaceholder": "Descripción (opcional)",
      "editRole": "Editar rol",
      "systemRoleNameLocked": "El nombre de un rol del sistema no se puede cambiar.",
      "selectedCount": "{{count}} permiso(s) seleccionado(s)"
    },
    "billing": {
      "pagerSingular": "{{count}} abonado · página {{page}}/{{totalPages}}",
      "pagerPlural": "{{count}} abonados · página {{page}}/{{totalPages}}",
      "confirmFullRefund": "¿Confirmar el reembolso TOTAL de este pago?",
      "refundInitiated": "Reembolso iniciado.",
      "invalidAmount": "Importe no válido.",
      "partialRefundInitiated": "Reembolso parcial iniciado.",
      "subNotFound": "Suscripción de Stripe no encontrada.",
      "confirmCancelSub": "¿Cancelar definitivamente esta suscripción? Esta acción es inmediata e irreversible.",
      "subCanceled": "Suscripción cancelada.",
      "subPaused": "Suscripción pausada.",
      "subResumed": "Suscripción reanudada.",
      "tabSubs": "Suscripciones",
      "tabFailed": "Pagos fallidos",
      "tabPromos": "Códigos promocionales",
      "tabWebhooks": "Webhooks",
      "stripeOff": "Stripe no está configurado en el servidor (falta la clave de API). Los datos en vivo de Stripe no están disponibles; los códigos promocionales se pueden gestionar localmente.",
      "title": "Facturación",
      "subtitle": "Suscripciones, pagos y códigos promocionales.",
      "promoBtn": "Código promocional",
      "colClient": "Cliente",
      "colPlan": "Plan",
      "colAmount": "Importe",
      "colRenewal": "Renovación",
      "emptySubs": "No hay suscriptores de pago.",
      "paused": "en pausa",
      "resumeSub": "Reanudar suscripción",
      "pauseSub": "Pausar",
      "cancelSub": "Cancelar suscripción",
      "colAttempts": "Intentos",
      "colAction": "Acción",
      "emptyFailed": "No hay pagos fallidos. 🎉",
      "refundBtn": "Reembolsar",
      "partialBtn": "Parcial",
      "invoice": "Factura",
      "colCode": "Código",
      "colDiscount": "Descuento",
      "colUsed": "Usado",
      "colExpires": "Expira",
      "colActive": "Activo",
      "emptyPromos": "No hay códigos promocionales.",
      "never": "Nunca",
      "deactivate": "Desactivar",
      "activate": "Activar",
      "confirmDeletePromo": "¿Eliminar este código?",
      "emptyWebhooks": "No hay eventos.",
      "newPromoTitle": "Nuevo código promocional",
      "codePlaceholder": "CÓDIGO (ej.: WELCOME10)",
      "percentPlaceholder": "% descuento",
      "maxUsesPlaceholder": "Usos máx.",
      "partialRefundTitle": "Reembolso parcial",
      "customer": "Cliente",
      "amountPaid": "importe pagado {{amount}}",
      "refundAmountLabel": "Importe a reembolsar (€)"
    },
    "families": {
      "deleteConfirm": "¿Eliminar esta familia? Los reptiles serán desvinculados.",
      "title": "Familias y colaboración",
      "subtitle": "Colecciones compartidas, miembros y analíticas.",
      "statFamilies": "Familias",
      "statCollaborators": "Colaboradores",
      "collaboratorPct": "{{pct}}% de los usuarios",
      "avgSize": "Tamaño medio",
      "membersPerFamily": "miembros / familia",
      "largest": "La más grande",
      "searchPlaceholder": "Buscar una familia por nombre…",
      "colMembers": "Miembros",
      "colReptiles": "Reptiles",
      "colCreated": "Creada",
      "empty": "No hay familias.",
      "pagination_one": "Página {{page}} / {{totalPages}} · {{count}} familia",
      "pagination_other": "Página {{page}} / {{totalPages}} · {{count}} familias",
      "detailCounts": "{{reptiles}} reptiles · {{members}} miembros",
      "deleteFamily": "Eliminar esta familia",
      "pagination": "Página {{page}}/{{totalPages}} · {{count}} familia(s)"
    },
    "support": {
      "statusNew": "Nuevo",
      "statusInProgress": "En curso",
      "statusResolved": "Resuelto",
      "catBug": "Error",
      "catFeature": "Idea",
      "catUi": "Diseño",
      "catGeneral": "Opinión",
      "tabTickets": "Tickets de soporte",
      "tabFeedback": "Opiniones y comentarios",
      "title": "Centro de soporte",
      "subtitleTickets": "Gestione las solicitudes de asistencia.",
      "subtitleFeedback": "Analice las opiniones de la comunidad.",
      "statTotalTickets": "Total de tickets",
      "statPending": "Pendientes",
      "statAwaitingReply": "Respuestas pendientes",
      "statResolved": "Resueltos",
      "slaFirstResponse": "Primera respuesta (prom.)",
      "slaTarget": "/ SLA {{hours}}h",
      "slaResolution": "Resolución (prom.)",
      "slaBreaches": "Incumplimientos de SLA",
      "statAvgRating": "Valoración media",
      "statTotalFeedback": "Total de opiniones",
      "statBugsReported": "Errores reportados",
      "statIdeasReceived": "Ideas recibidas",
      "searchTicketsPlaceholder": "Buscar (asunto, correo, nombre)… y pulse Intro",
      "filterBugs": "Errores",
      "filterIdeas": "Ideas",
      "filterDesign": "Diseño",
      "filterGeneral": "General",
      "thUser": "Usuario",
      "thSubject": "Asunto",
      "thType": "Tipo",
      "thRatingMessage": "Valoración y mensaje",
      "newReply": "Nueva respuesta",
      "noComment": "Sin comentario",
      "emptyTickets": "No se encontraron tickets.",
      "emptyFeedback": "No se encontraron opiniones.",
      "paginationInfo": "{{count}} tickets · página {{page}}/{{totalPages}}",
      "userMessageLabel": "Mensaje del usuario",
      "conversation": "Conversación",
      "reply": "Responder",
      "templates": "Plantillas",
      "noTemplates": "Sin plantillas. Cree algunas en la pestaña Contenido.",
      "replyPlaceholder": "Su respuesta al usuario…",
      "send": "Enviar",
      "priority": "Prioridad",
      "priorityLow": "Baja",
      "priorityNormal": "Normal",
      "priorityHigh": "Alta",
      "priorityUrgent": "Urgente",
      "category": "Categoría",
      "sendError": "Error al enviar"
    },
    "content": {
      "actionShown": "Mostrado",
      "actionHidden": "Oculto",
      "actionCreated": "Creado",
      "actionUpdated": "Modificado",
      "actionDeleted": "Eliminado",
      "langLabel": "Idioma:",
      "langDefault": "(predeterminado)",
      "langTranslation": "(traducción — vacío = se recurre a FR)",
      "confirmDelete": "¿Eliminar definitivamente este elemento? (Para ocultarlo temporalmente, utilice el icono del ojo.)",
      "tabFaq": "FAQ",
      "tabAnnouncements": "Anuncios",
      "tabChangelog": "Changelog",
      "tabTemplates": "Plantillas de respuesta",
      "visibleHint": "Visible — haga clic para ocultar",
      "hiddenHint": "Oculto — haga clic para mostrar",
      "visible": "Visible",
      "hidden": "Oculto",
      "title": "Contenido",
      "subtitle": "FAQ, anuncios, changelog y plantillas de respuesta. El icono del ojo muestra u oculta sin eliminar.",
      "seedSuccess": "Contenido del sitio cargado: {{faq}} FAQ, {{announcements}} anuncios, {{changelog}} changelog, {{templates}} plantillas",
      "seedSuccessExtra": ", {{emails}} correos, {{surveys}} encuestas",
      "seedBtn": "Cargar contenido del sitio",
      "empty": "No hay elementos. Haga clic en «Añadir» o en «Cargar contenido del sitio» para empezar.",
      "visibilityHistory": "Historial de visibilidad",
      "new": "Nuevo",
      "question": "Pregunta",
      "answer": "Respuesta",
      "category": "Categoría",
      "publishedSite": "Publicado (visible en el sitio)",
      "fieldTitle": "Título",
      "fieldTitleLang": "Título ({{lang}})",
      "fieldMessage": "Mensaje",
      "fieldMessageLang": "Mensaje ({{lang}})",
      "typeInfo": "Info",
      "typeWarning": "Advertencia",
      "typeSuccess": "Éxito",
      "typeMaintenance": "Mantenimiento",
      "startsAt": "Visible desde (opcional)",
      "endsAt": "Hasta (opcional)",
      "activeApp": "Activa (visible en la app)",
      "targetingLabel": "Segmentación (opcional) — deje vacío para difundir a",
      "targetingAll": "todos",
      "targetPlaceholder": "Segmentar usuarios específicos…",
      "versionPlaceholder": "Versión (v2.1.0)",
      "changelogNotesPlaceholder": "Notas — una línea por cambio:\n+ Nueva función\n~ Mejora\n! Corrección de error",
      "changelogHintPrefix": "Consejo: prefije cada línea con",
      "changelogHintNew": "(novedad),",
      "changelogHintImprove": "(mejora) o",
      "changelogHintFix": "(corrección) — aparecerán como insignias de colores en la página pública.",
      "publishedChangelog": "Publicado (visible en /changelog)",
      "majorUpdate": "Actualización importante (insignia verde)",
      "templateTitle": "Título de la plantilla",
      "templateBody": "Contenido de la plantilla",
      "saving": "Guardando…",
      "noEvents": "Aún no se ha registrado ningún evento.",
      "by": "por {{name}}"
    },
    "moderation": {
      "title": "Moderación",
      "subtitle": "Contenido reportado y cuentas con dificultades.",
      "tabReports": "Contenido reportado",
      "tabStruggling": "Cuentas con dificultades",
      "filterAll": "Todos los estados",
      "filterReviewed": "Revisados",
      "filterDismissed": "Rechazados",
      "filterActioned": "Resueltos",
      "statusPending": "Pendiente",
      "statusReviewed": "Revisado",
      "statusActioned": "Resuelto",
      "statusDismissed": "Rechazado",
      "typeProfile": "Perfil",
      "typePhoto": "Foto",
      "typeFamily": "Familia",
      "emptyReports": "Ningún contenido reportado.",
      "emptyStruggling": "No se detectaron cuentas con dificultades.",
      "targetRef": "objetivo #{{id}}",
      "targetLabel": "Objetivo: ",
      "targetUnresolved": "no resoluble",
      "owner": "propietario #{{id}}",
      "reportedBy": "Reportado por: ",
      "reporterAnonymous": "anónimo / desconocido",
      "changeStatusTitle": "Cambiar estado",
      "sanctionBtn": "Sancionar",
      "sanctionsFor": "Sanciones — propietario #{{id}}",
      "reasonPlaceholder": "Motivo (visible en la auditoría)…",
      "hideProfileBtn": "Ocultar perfil",
      "showProfileBtn": "Restablecer",
      "suspendDurationTitle": "Duración en días",
      "daysShort": "d",
      "suspendBtn": "Suspender",
      "ticketsCount": "{{count}} tickets",
      "statusUpdated": "Estado actualizado",
      "sanctionReasonPrefix": "A raíz del reporte: {{reason}}",
      "confirmHideProfile": "¿Ocultar el perfil público de este usuario?",
      "profileHidden": "Perfil ocultado",
      "profileShown": "Perfil restablecido",
      "invalidDays": "Número de días no válido",
      "confirmSuspend": "¿Suspender a este usuario durante {{days}} día(s)?",
      "defaultSuspendReason": "Suspensión por moderación",
      "userSuspended": "Usuario suspendido {{days}} d"
    },
    "genetics": {
      "newSpeciesPrompt": "Identificador de la nueva especie (ej.: python-regius):",
      "invalidJson": "JSON no válido — comprueba la sintaxis.",
      "confirmDelete": "¿Eliminar la especie \"{{id}}\"?",
      "confirmMerge": "¿Fusionar \"{{source}}\" en \"{{target}}\"? El origen se eliminará.",
      "title": "Registro genético",
      "subtitle": "{{count}} especie(s) — catálogo, edición de loci/morfos y fusión.",
      "newSpeciesBtn": "+ Especie",
      "searchPlaceholder": "Buscar una especie…",
      "colSpecies": "Especie",
      "colFamily": "Familia",
      "colLoci": "Loci",
      "colCompleteness": "Completitud",
      "empty": "Ninguna especie.",
      "merge": "Fusionar",
      "newSpeciesTitle": "Nueva especie",
      "jsonWarning": "Edición directa del JSON del registro. Respeta la estructura (species, groups, loci, namedCombos).",
      "mergeTitle": "Fusionar una especie",
      "mergeSource": "Origen:",
      "mergeSourceInfo": "Sus loci, alias y combos se copiarán en el destino y luego se eliminará el origen.",
      "mergeTargetPlaceholder": "Identificador de destino (ej.: python-regius)"
    },
    "comms": {
      "audiencePro": "Suscriptores PRO",
      "audienceFree": "Usuarios gratuitos",
      "audienceProInactive30d": "PRO inactivos 30d",
      "audienceInactive30d": "Inactivos 30d",
      "audienceActive7d": "Activos 7d",
      "audienceSpecific": "Usuarios específicos",
      "confirmSendCampaign": "¿Enviar esta campaña ahora?",
      "confirmSendEmail": "¿Enviar este correo a {{count}} destinatario(s)?",
      "emailSent": "Enviado a {{count}} destinatario(s).",
      "confirmDelete": "¿Eliminar?",
      "tabPush": "Campañas push",
      "tabEmail": "Correo segmentado",
      "tabTemplates": "Plantillas de correo",
      "tabStats": "Adopción y entregabilidad",
      "title": "Comunicación",
      "subtitle": "Push, correos segmentados, plantillas y adopción.",
      "pushCampaignBtn": "Campaña push",
      "emptyCampaigns": "Sin campañas. Cree una.",
      "received": "{{count}} recibidos",
      "send": "Enviar",
      "targetSegment": "Segmento objetivo",
      "recipients": "{{count}} destinatario(s)",
      "emailSubjectPlaceholder": "Asunto del correo",
      "emailContentPlaceholder": "Contenido (HTML permitido)",
      "sendToSegment": "Enviar al segmento",
      "templateDefault": "(valores predeterminados — edite para personalizar)",
      "pushAdoption": "Adopción push",
      "emailsEnabled": "Correos activados",
      "feedingReminders": "Recordatorios de comida",
      "emailFailure": "Fallos de correo",
      "sent": "{{count}} enviados",
      "newPushCampaign": "Nueva campaña push",
      "pushTitlePlaceholder": "Título",
      "pushMessagePlaceholder": "Mensaje",
      "pushUrlPlaceholder": "URL al hacer clic (ej. /dashboard)",
      "potentialRecipients": "{{count}} destinatario(s) potencial(es)",
      "createDraft": "Crear (borrador)",
      "templateLabel": "Plantilla:",
      "templateVarsHint": "Las variables como {{example}} se reemplazan al enviar.",
      "subjectPlaceholder": "Asunto",
      "htmlContentPlaceholder": "Contenido HTML"
    },
    "system": {
      "pagerInfo_one": "{{count}} entrada · página {{page}}/{{totalPages}}",
      "pagerInfo_other": "{{count}} entradas · página {{page}}/{{totalPages}}",
      "cleanupConfirm": "¿Eliminar definitivamente {{n}} archivo(s) huérfano(s)? Esta acción es irreversible.",
      "operationFailed": "La operación ha fallado",
      "tabHealth": "Estado",
      "tabErrors": "Errores",
      "tabCron": "CRON",
      "tabJobs": "Tareas",
      "tabEmails": "Correos enviados",
      "tabUsage": "Uso de funciones",
      "tabUploads": "Archivos subidos",
      "tabI18n": "i18n",
      "tabAudit": "Auditoría",
      "title": "Sistema",
      "subtitle": "Observabilidad, tareas, traducciones y registro de auditoría.",
      "dbLabel": "Base de datos",
      "dbOffline": "FUERA DE LÍNEA",
      "uploadsValue": "{{size}} · {{n}} archivos",
      "memoryLabel": "Memoria (RSS)",
      "memoryValue": "{{mb}} MB",
      "uptimeLabel": "Tiempo activo",
      "checkedInLabel": "Verificado en",
      "topErrorEndpoints": "Principales endpoints con errores (7 d)",
      "noErrors": "No se han registrado errores. 🎉",
      "never": "nunca",
      "lastRun": "Última ejec.:",
      "errorLabel": "Error:",
      "lastPassNotifs": "{{n}} notif. en la última ejecución",
      "sent30d": "{{sent}} en 30 d ({{runs}} ejec.)",
      "filterSent": "Enviados",
      "filterFailed": "Fallidos",
      "noJobRuns": "No se han registrado ejecuciones.",
      "jobsSent_one": "{{count}} enviado",
      "jobsSent_other": "{{count}} enviados",
      "topFeatures": "Funciones más usadas (30 d)",
      "topFeaturesHint": "Haz clic en una función para ver su historial diario.",
      "noUsage": "Aún no hay datos de uso. El seguimiento comienza en cuanto un usuario utiliza una función.",
      "loadingHistory": "Cargando el historial…",
      "usageOver30d": "{{n}} uso(s) en 30 días",
      "orphanFiles": "Archivos huérfanos",
      "filesCount": "{{n}} archivo(s)",
      "deleteOrphans": "Eliminar huérfanos",
      "noOrphans": "No se detectaron archivos huérfanos.",
      "exportCsv": "Exportar CSV",
      "coverageDetail": "{{done}} / {{total}} · {{missing}} faltante(s)",
      "unusedKeysTitle": "Claves potencialmente sin usar (FR) — {{n}}",
      "unusedKeysHint": "Claves presentes en JSON pero no detectadas en el código fuente ({{scanned}} archivos escaneados). Verifícalas antes de eliminarlas (algunas pueden construirse dinámicamente).",
      "searchEmails": "Buscar por destinatario o tipo… y pulsa Intro",
      "noEmails": "No hay correos registrados. La captura comienza con el próximo envío.",
      "searchAudit": "Buscar (acción, correo, destino)… y pulsa Intro",
      "noAuditActions": "No se han registrado acciones.",
      "systemActor": "sistema",
      "pagerInfo": "{{count}} entrada(s) · página {{page}}/{{totalPages}}",
      "jobsSent": "{{count}} enviado(s)"
    },
    "infra": {
      "cronHourlyReminders": "Recordatorios cada hora",
      "cronFeedbackRequests": "Solicitudes de comentarios",
      "cronProDiscovery": "Correos de descubrimiento PRO",
      "cronInactiveUsers": "Reactivación de inactivos",
      "cronBreedingReminders": "Recordatorios de cría",
      "jobStarted": "Tarea \"{{job}}\" iniciada.",
      "backupCreated": "Copia de seguridad creada.",
      "backupFailed": "Error: {{detail}}",
      "cacheCleared": "Caché vaciada.",
      "tabLatency": "Latencias",
      "tabCron": "CRON (ejecutar)",
      "tabStorage": "Almacenamiento",
      "tabSql": "SQL (lectura)",
      "tabBackups": "Copias de seguridad",
      "title": "Infraestructura",
      "subtitle": "Rendimiento, webhooks, tareas, almacenamiento y base de datos.",
      "latencyEmpty": "Aún no hay mediciones. Las latencias se recopilan a medida que llegan las solicitudes (búfer en memoria).",
      "colRequests": "Solicitudes",
      "webhooksEmpty": "No hay entregas de webhook registradas.",
      "replay": "Reintentar",
      "run": "Ejecutar",
      "storageEmpty": "No hay datos de almacenamiento.",
      "colUser": "Usuario",
      "colSpace": "Espacio",
      "sqlReadOnly": "Solo lectura: únicamente se permiten consultas SELECT (limitadas a 200 filas). No se pueden realizar modificaciones.",
      "execute": "Ejecutar",
      "rowsCount": "{{count}} fila(s)",
      "runBackup": "Ejecutar una copia de seguridad",
      "backupsEmpty": "No hay copias de seguridad registradas.",
      "fileSize": "{{size}} MB · ",
      "cacheTitle": "Caché de la aplicación",
      "cacheEntries": "{{count}} entrada(s) en caché (agregaciones del panel, TTL corto).",
      "clearCache": "Vaciar caché"
    },
    "compliance": {
      "tabRgpd": "RGPD",
      "tabConsents": "Consentimientos",
      "tabRetention": "Retención",
      "tabPassword": "Contraseña",
      "tabMaintenance": "Mantenimiento",
      "tabSessions": "Sesiones de administrador",
      "tabSuspicious": "Inicios de sesión sospechosos",
      "tabPermissions": "Historial de permisos",
      "tabIncidents": "Estado / incidencias",
      "title": "Seguridad y conformidad",
      "subtitle": "RGPD, consentimientos, retención, acceso y estado del servicio.",
      "newRequest": "Nueva solicitud",
      "emptyRgpd": "Ninguna solicitud RGPD.",
      "dueDate": "Vencimiento:",
      "statusPending": "Pendiente",
      "statusInProgress": "En curso",
      "statusCompleted": "Completado",
      "statusRejected": "Rechazado",
      "rgpdRequest": "Solicitud RGPD",
      "emailConcerned": "Correo afectado",
      "typeExport": "Exportación de datos",
      "typeDelete": "Eliminación (derecho al olvido)",
      "noteOptional": "Nota (opcional)",
      "emptyConsents": "Ningún consentimiento registrado.",
      "granted": "Concedidos",
      "refused": "Rechazados",
      "policySaved": "Política guardada.",
      "purgeConfirm": "¿Ejecutar la purga ahora? Se eliminarán los datos más antiguos que la política.",
      "purgeDone": "Purga completada: {{result}}",
      "fieldLoginLogs": "Registros de inicio de sesión",
      "fieldErrorLogs": "Registros de errores",
      "fieldAudit": "Registro de auditoría",
      "fieldJobRuns": "Historial de tareas",
      "retentionTitle": "Retención de datos",
      "retentionHint": "Período de conservación en días (0 = ilimitado).",
      "purgeNow": "Purgar ahora",
      "passwordTitle": "Política de contraseñas",
      "minLength": "Longitud mínima",
      "requireUppercase": "Mayúscula requerida",
      "requireNumber": "Número requerido",
      "requireSymbol": "Símbolo requerido",
      "expiration": "Expiración (días, 0 = nunca)",
      "maintenanceUpdated": "Modo de mantenimiento actualizado.",
      "maintenanceTitle": "Modo de mantenimiento",
      "maintenanceActive": "Mantenimiento ACTIVO — el sitio muestra el banner",
      "maintenanceDisabled": "Mantenimiento desactivado",
      "maintenanceMessagePlaceholder": "Mensaje mostrado a los usuarios",
      "emptySessions": "Ninguna sesión de administrador.",
      "noConnections": "Ninguna conexión registrada.",
      "noSuspicious": "No se detectaron inicios de sesión sospechosos en 7 días. 🎉",
      "bruteForce": "Fuerza bruta",
      "multiCountry": "Multipaís",
      "emptyPermissions": "Ningún cambio de permiso registrado.",
      "byActor": "por {{actor}}",
      "system": "sistema",
      "declareIncident": "Declarar una incidencia",
      "noIncidents": "Ninguna incidencia. Todos los sistemas operativos. 🟢",
      "resolve": "Resolver",
      "deleteConfirm": "¿Eliminar?",
      "incidentTitlePlaceholder": "Título",
      "severityMinor": "Menor",
      "severityMajor": "Mayor",
      "severityMaintenance": "Mantenimiento",
      "declare": "Declarar"
    }
  },
  "auth": {
    "login_success": "Has iniciado sesión.",
    "register_success": "¡Cuenta creada! Por favor inicia sesión.",
    "login_title": "Iniciar Sesión",
    "login_subtitle": "¡Bienvenido de nuevo!",
    "register_title": "Crear Cuenta",
    "register_subtitle": "Comienza tu viaje de cría.",
    "email_label": "Correo Electrónico",
    "email_placeholder": "tu@email.com",
    "password_label": "Contraseña",
    "forgot_password_link": "¿Olvidaste tu contraseña?",
    "confirm_password_label": "Confirmar Contraseña",
    "sign_in_button": "Iniciar Sesión",
    "sign_up_button": "Registrarse",
    "not_member_text": "¿Aún no eres miembro?",
    "already_member_text": "¿Ya tienes una cuenta?",
    "create_account_button": "Crear Cuenta",
    "back_to_signin_button": "Volver al Inicio",
    "hero": {
      "title_part1": "La cría",
      "title_highlight": "reinventada.",
      "subtitle": "Únete a la élite de la herpetocultura. Seguimiento de peso, genética avanzada y gestión de colecciones en una interfaz diseñada para el rendimiento.",
      "feature_1": "Calculadora genética de morfos avanzada",
      "feature_2": "Genealogías detalladas y certificados de nacimiento",
      "feature_3": "Gestión de apareamientos, puestas e incubación",
      "feature_4": "Seguimiento de peso, mudas y alimentación",
      "feature_5": "Copia de seguridad en la nube, accesible en todas partes",
      "footer": "© {{year}} ReptiNode Inc. Powering modern breeders."
    },
    "accountCreated": "Cuenta creada. Ya puedes iniciar sesión.",
    "backToSignIn": "Volver al Inicio de Sesión",
    "confirmPassword": "Confirmar Contraseña",
    "confirmPasswordPlaceholder": "Confirmar contraseña",
    "createAccount": "Crear Cuenta",
    "createAccountBtn": "Crear Cuenta",
    "createYourAccount": "Crea tu cuenta",
    "defineNewPassword": "Define una nueva contraseña",
    "defineNewPasswordSubtitle": "Elige una contraseña segura para tu cuenta.",
    "email": "Dirección de Email",
    "emailPlaceholder": "Correo electrónico",
    "forgotPassword": "¿Olvidaste tu contraseña?",
    "hasAccount": "¿Ya tienes una cuenta?",
    "hide": "Ocultar",
    "hidePassword": "Ocultar contraseña",
    "invalidOrExpiredToken": "Token inválido o caducado.",
    "loggedIn": "Has iniciado sesión.",
    "newPassword": "Nueva contraseña",
    "noAccount": "¿No tienes una cuenta?",
    "password": "Contraseña",
    "passwordPlaceholder": "Contraseña",
    "passwordUpdated": "Contraseña actualizada. Ya puedes iniciar sesión.",
    "passwordsDontMatch": "Las contraseñas no coinciden.",
    "passwordsNotMatch": "Las contraseñas no coinciden.",
    "processing": "Procesando...",
    "resetPassword": "Restablecer Contraseña",
    "resetSent": "Correo de restablecimiento enviado.",
    "resetSubtitle": "Introduce tu correo para recibir un enlace de restablecimiento.",
    "sendReset": "Enviar correo de restablecimiento",
    "show": "Mostrar",
    "showPassword": "Mostrar contraseña",
    "signIn": "Iniciar Sesión",
    "signInBtn": "Iniciar Sesión",
    "signInSubtitle": "Accede a tu cuenta",
    "signUp": "Registrarse",
    "signUpSubtitle": "Empieza a gestionar tu colección de reptiles hoy",
    "signUpSuccess": "Registro completado.",
    "subscribe": "Comenzar Ahora",
    "trialExpired": "Tu prueba gratuita de 14 días ha caducado. Suscríbete para seguir utilizando ReptiNode.",
    "updatePassword": "Actualizar contraseña",
    "welcomeBack": "¡Bienvenido de nuevo!",
    "forgot_password": {
      "form_title": "¿Contraseña olvidada?",
      "form_subtitle": "Ingrese su correo electrónico para recibir un enlace de restablecimiento.",
      "back_button": "Volver",
      "email_label": "Correo electrónico",
      "email_placeholder": "su@email.com",
      "submit_button": "Enviar enlace",
      "success_title": "¡Correo enviado!",
      "success_message": "Revise su bandeja de entrada (y spam) para encontrar el enlace de restablecimiento.",
      "retry_button": "Reenviar correo",
      "sidebar": {
        "title": "¿Problemas de acceso?",
        "description": "No se preocupe. El proceso es simple y seguro. Siga los pasos a continuación para recuperar el acceso a su criadero."
      },
      "steps": {
        "1": {
          "title": "Ingrese su correo",
          "desc": "Identificaremos su cuenta."
        },
        "2": {
          "title": "Revise su bandeja",
          "desc": "Se le enviará un enlace único."
        },
        "3": {
          "title": "Cree nueva contraseña",
          "desc": "Asegure su acceso nuevamente."
        }
      }
    },
    "errors": {
      "invalid_token": "Enlace inválido o caducado (falta token).",
      "passwords_not_match": "Las contraseñas no coinciden."
    },
    "reset_password": {
      "form_title": "Establecer nueva contraseña",
      "form_subtitle": "Por favor, introduzca su nueva contraseña a continuación para acceder a su cuenta.",
      "label_new_password": "Nueva contraseña",
      "label_confirm_password": "Confirmar contraseña",
      "submit_button": "Actualizar contraseña",
      "success_title": "Contraseña actualizada",
      "success_message": "Su contraseña ha sido actualizada con éxito.",
      "redirecting": "Redireccionando...",
      "sidebar": {
        "badge": "Seguridad Máxima",
        "title": "Asegure su cuenta.",
        "description": "Elija una contraseña fuerte para proteger los datos genéticos y el seguimiento de su criadero.",
        "tips_title": "Consejos de seguridad",
        "tip_1": "Use al menos 8 caracteres",
        "tip_2": "Mezcle letras, números y símbolos",
        "tip_3": "Evite usar el nombre de sus reptiles"
      }
    }
  },
  "add_snake": {
    "title": "Añadir un reptil",
    "edit_title": "Editar perfil",
    "photo_label": "Foto del reptil",
    "add_photo_btn": "Añadir foto",
    "name_label": "Nombre",
    "species_label": "Especie",
    "morph_label": "Fase / Morph",
    "locality_label": "Localidad",
    "locus_label": "Locus (Genética)",
    "sex_label": "Sexo",
    "sex_unknown": "Desconocido",
    "sex_male": "Macho",
    "sex_female": "Hembra",
    "birth_date_label": "Fecha de nacimiento (o adquisición)",
    "notes_label": "Notas",
    "name_placeholder": "Ej: Banana Pied #05",
    "weight_label": "Peso inicial (g)"
  },
  "birthCert": {
    "transfer": {
      "docTitle": "CERTIFICADO DE CESIÓN",
      "seller": "1. CEDENTE (Vendedor / Donante)",
      "buyer": "2. ADQUIRENTE (Comprador / Receptor)",
      "animalDesc": "3. DESCRIPCIÓN DEL ANIMAL",
      "scientificName": "Nombre Científico",
      "commonName": "Nombre Común",
      "birthDate": "Fecha de nacimiento",
      "sex": "Sexo",
      "id": "Marcaje (Microchip/ID)",
      "origin": "Origen",
      "legalStatus": "Estatuto jurídico",
      "price": "Precio / Condiciones",
      "nc": "Nacido en cautividad",
      "annex": "Anexo {{annex}} (Reglamento UE)",
      "free": "Cesión a título gratuito",
      "notProvided": "Dirección no facilitada",
      "legal1": "El Cedente certifica que el animal arriba descrito proviene de una cría regular y lícita.",
      "legal2": "El Cedente certifica haber informado al Adquirente sobre las condiciones de alojamiento, mantenimiento y cuidados necesarios para la especie.",
      "legal3": "El Adquirente se compromete a mantener a este animal en condiciones conformes a sus necesidades biológicas y a la normativa vigente.",
      "doneAt": "Hecho en {{city}}, el {{date}}",
      "signSeller": "Firma del CEDENTE",
      "signBuyer": "Firma del ADQUIRENTE",
      "readApproved": "Precedido de la mención \"Leído y conforme\"",
      "declarations": "4. DECLARACIONES",
      "mandatoryTitle": "Mención obligatoria",
      "authorityLabel": "Autoridad / referencia",
      "breederRegNo": "N.º de autorización / capacidad / actividad del cedente",
      "quantity": "Número de especímenes",
      "mark": "Marcado / Identificación",
      "source": "Código de origen (CITES)",
      "registrationId": "N.º de registro (registro nacional)",
      "citesCertId": "N.º de certificado intracomunitario (CIC)",
      "notListed": "No incluido en CITES",
      "field": "Campo",
      "value": "Valor"
    },
    "actions": {
      "generate": {
        "birth": {
          "title": "Nacimiento"
        },
        "clutch": {
          "title": "Informe de puesta"
        },
        "hatch": {
          "title": "Eclosión"
        },
        "id": {
          "title": "Identificación"
        },
        "incubation": {
          "title": "Incubación"
        },
        "pedigree": {
          "title": "Pedigrí"
        },
        "quarantine": {
          "title": "Cuarentena"
        },
        "sexing": {
          "title": "Sexado"
        },
        "transfer": {
          "title": "Cesión / Venta"
        }
      }
    },
    "alerts": {
      "selectSnakeFirst": "Selecciona primero un reptil."
    },
    "banner": {
      "birth": "Certificado de nacimiento",
      "clutch": "Informe de puesta",
      "hatch": "Certificado de eclosión",
      "id": "Certificado de identificación",
      "incubation": "Informe de incubación",
      "pedigree": "Pedigrí (3 generaciones)",
      "quarantine": "Certificado de cuarentena",
      "sexing": "Certificado de sexado",
      "transfer": "Certificado de cesión / factura"
    },
    "doc": {
      "creator": "ReptiNode",
      "subject": "Certificado generado"
    },
    "fields": {
      "birthDate": "Fecha de nacimiento",
      "buyer": "Comprador",
      "clutch": "Puesta",
      "currentLength": "Longitud actual",
      "currentWeight": "Peso actual",
      "eggTotals": "Huevos (total/fértiles)",
      "eggsTotalFertile": "Huevos (total/fértiles)",
      "end": "Fin",
      "exportedOn": "Exportado el",
      "female": "Hembra",
      "generationsShown": "Generaciones mostradas",
      "hatchDate": "Fecha de eclosión",
      "incubationTH": "Incubación (T°/HR)",
      "internalId": "Identificador interno",
      "laidDate": "Fecha de puesta",
      "location": "Lugar",
      "male": "Macho",
      "maternalGrandfather": "Abuelo materno",
      "maternalGrandmother": "Abuela materna",
      "method": "Método",
      "morph": "Morfología",
      "name": "Nombre",
      "operator": "Operador",
      "pair": "Pareja",
      "paternalGrandfather": "Abuelo paterno",
      "paternalGrandmother": "Abuela paterna",
      "price": "Precio",
      "seller": "Vendedor",
      "sex": "Sexo",
      "sexDetermined": "Sexo determinado",
      "species": "Especie",
      "start": "Inicio",
      "targetHumidity": "Humedad objetivo",
      "targetTemp": "T° objetivo"
    },
    "footer": {
      "generatedByApp": "Certificado generado por tu aplicación",
      "pageXofY": "Página {{page}} de {{total}}"
    },
    "hatch": {
      "clutchLine": "Puesta del {{date}} — {{eggs}} huevos"
    },
    "methods": {
      "autre": "Otro",
      "echography": "Ecografía",
      "other": "Otro",
      "popping": "Popping",
      "probing": "Sondeo"
    },
    "pdf": {
      "footer": {
        "generatedBy": "Certificado generado por tu aplicación",
        "pageXofY": "Página {{page}} de {{total}}"
      },
      "numberShort": "N.º",
      "watermark": "REPTILES"
    },
    "preview": {
      "download": "Descargar",
      "page": "Página",
      "title": "Vista previa PDF"
    },
    "section": {
      "animal": "Animal",
      "eggDetails": "Detalles de los huevos",
      "generalInfo": "Información general",
      "grandparentsG2": "Abuelos (G2)",
      "greatGrandparentsG3": "Bisabuelos (G3)",
      "info": "Información general",
      "juvenile": "Juvenil",
      "parameters": "Parámetros",
      "parents": "Progenitores",
      "parentsG1": "Progenitores (G1)",
      "parties": "Partes",
      "quarantinePeriod": "Período de cuarentena",
      "result": "Resultado",
      "subject": "Sujeto",
      "tracking": "Seguimiento (estado y peso)"
    },
    "sections": {
      "eggs": "Detalles de los huevos",
      "general": "Información general",
      "grandparentsG2": "Abuelos (G2)",
      "greatGrandparentsG3": "Bisabuelos (G3)",
      "juvenile": "Juvenil",
      "params": "Parámetros",
      "parents": "Progenitores",
      "parentsG1": "Progenitores (G1)",
      "subject": "Sujeto",
      "tracking": "Seguimiento (estado y peso)"
    },
    "table": {
      "lastUpdate": "Última actualización",
      "lastUpdateShort": "Act.",
      "num": "#",
      "status": "Estado",
      "weight": "Peso"
    },
    "text": {
      "addMicrochipNote": "Añade aquí el número de microchip si procede.",
      "adviceLogs": "Consejo: para mostrar curvas T°/HR, registra logs y expórtalos aquí.",
      "attestedBy": "Atestado por: ______________________",
      "breeder": "Criador: ______________________",
      "breederSignature": "Firma del criador: ______________________",
      "buyer": "Comprador: ______________________",
      "captiveBornCertified": "Certifico que el animal descrito arriba nació en cautiverio (CB).",
      "conditionsNote": "Condiciones de garantía, devolución y transporte: especificar aquí.",
      "dateLine": "Fecha: ____ / ____ / ______",
      "fillExtendedDataNote": "Completar con datos ampliados si están disponibles (no incluidos por defecto).",
      "hatchAttestationLine": "Yo, el abajo firmante, atestiguo la eclosión en cautividad del animal descrito arriba.",
      "owner": "Propietario: ______________________",
      "seller": "Vendedor: ______________________",
      "signature": "Firma"
    },
    "titles": {
      "birth": "Certificado de nacimiento",
      "clutchReport": "Informe de puesta",
      "hatch": "Certificado de eclosión",
      "id": "Certificado de identificación",
      "incubationReport": "Informe de incubación",
      "pedigree": "Pedigrí (3 generaciones)",
      "quarantine": "Certificado de cuarentena",
      "sexing": "Certificado de sexado",
      "transfer": "Certificado de cesión / factura"
    },
    "ui": {
      "clutchOptionLabel": "Puesta del {{date}} — {{eggs}} huevos",
      "freeForm": {
        "buyerLabel": "Comprador",
        "buyerPlaceholder": "Nombre del comprador",
        "locationLabel": "Lugar (cuarentena)",
        "locationPlaceholder": "Ej.: Sala dedicada, rack 2",
        "methodLabel": "Método",
        "operatorLabel": "Operador (sexado)",
        "operatorPlaceholder": "Ej.: Dr. García",
        "priceLabel": "Precio",
        "pricePlaceholder": "€",
        "qEndLabel": "Fin (cuarentena)",
        "qStartLabel": "Inicio (cuarentena)",
        "sellerLabel": "Vendedor",
        "sellerPlaceholder": "Criador / Empresa",
        "country": "País de referencia (marco jurídico)",
        "commonName": "Nombre común",
        "price": "Precio de venta",
        "cites": "Estado Anexo UE",
        "location": "Lugar de la firma",
        "markId": "Marcado / Microchip (transpondedor)",
        "source": "Código de origen (CITES)",
        "quantity": "Número de especímenes",
        "registrationId": "N.º de registro (registro nacional)",
        "breederRegNo": "N.º de capacidad / actividad / cría",
        "citesCertId": "N.º de certificado intracomunitario (CIC)",
        "sellerSection": "Cedente (Vendedor)",
        "buyerSection": "Adquirente (Comprador)"
      },
      "hints": {
        "enrichPdf": "Consejo: añade campos (microchip, fotos) en tu modelo para enriquecer los PDF."
      },
      "labels": {
        "clutchOptional": "Puesta (opcional)",
        "snake": "Reptil"
      },
      "loading": "Cargando reptiles…",
      "select": {
        "clutchPlaceholder": "Seleccione una puesta…",
        "snakePlaceholder": "Selecciona un reptil…",
        "clutchNeedsSnake": "Selecciona primero una serpiente",
        "noClutchForSnake": "No hay puesta para esta serpiente"
      },
      "subtitle": "Genera certificados y descárgalos desde la vista previa.",
      "title": "Certificados y exportación PDF",
      "placeholders": {
        "name": "Nombre completo o razón social",
        "address": "Dirección completa (calle, CP, ciudad)",
        "markId": "p. ej. 250269...",
        "registrationId": "p. ej. n.º I-FAP",
        "breederRegNo": "opcional",
        "citesCertId": "obligatorio para el Anexo A",
        "commonName": "p. ej. pitón real",
        "price": "p. ej. 150 €",
        "location": "p. ej. París",
        "operator": "Nombre del veterinario o experto"
      },
      "annexOpt": {
        "A": "Anexo A",
        "B": "Anexo B",
        "C": "Anexo C",
        "D": "Anexo D",
        "None": "No incluido (N/D)"
      },
      "complementary": {
        "title": "Información complementaria",
        "operator": "Operador (sexaje)",
        "quarantineStart": "Inicio de cuarentena",
        "quarantineEnd": "Fin de cuarentena"
      },
      "legalData": "Datos legales y administrativos",
      "clutchRecap": "Detalles de la puesta:",
      "eggs": "huevos"
    },
    "legal": {
      "disclaimer": "Este documento es una plantilla con fines informativos y no constituye asesoramiento jurídico. El cedente sigue siendo responsable del cumplimiento de la normativa vigente en el momento de la cesión.",
      "captiveBred": "El presente documento certifica que el espécimen nació y se crió en cautividad.",
      "country": {
        "FR": "Francia",
        "BE": "Bélgica",
        "ES": "España",
        "DE": "Alemania",
        "NL": "Países Bajos",
        "CH": "Suiza",
        "US": "Estados Unidos",
        "OTHER": "Otro / UE"
      },
      "sourceCode": {
        "C": "C — Nacido y criado en cautividad",
        "F": "F — Nacido en cautividad (F1+)",
        "W": "W — Extraído del medio natural",
        "R": "R — Procedente de ranching",
        "D": "D — Apéndice I, cría comercial registrada"
      },
      "fr": {
        "title": "CERTIFICADO / ATESTADO DE CESIÓN",
        "framework": "Francia — Código de Medio Ambiente (art. L413-6); Reglamento (CE) n.º 338/97",
        "authority": "DDPP / OFB — registro nacional I-FAP para especies protegidas",
        "marking": "Marcado e inscripción en I-FAP (especies protegidas)",
        "decl1": "El cedente certifica que el animal procede de una cría regular y lícita y fue adquirido conforme a la normativa vigente.",
        "decl2": "En el caso de una especie protegida, el animal fue identificado (marcado) e inscrito en el registro nacional I-FAP antes de la cesión.",
        "decl3": "El cedente entregó al adquirente un documento informativo, en francés, sobre las necesidades y las condiciones de mantenimiento de la especie.",
        "decl4": "El adquirente se compromete a mantener el animal en condiciones acordes con sus necesidades biológicas y la normativa aplicable.",
        "mention": "Para preservar la vida silvestre, el animal que acaba de adquirir no debe ser liberado en el medio natural.",
        "annexA": "Especie del Anexo A: la cesión con fines comerciales requiere un certificado intracomunitario (CIC) expedido por la autoridad competente."
      },
      "de": {
        "title": "CERTIFICADO DE CESIÓN / PRUEBA DE ORIGEN",
        "framework": "Alemania — Reglamento (CE) n.º 338/97; BNatSchG / BArtSchV",
        "authority": "BfN — notificación a la autoridad inferior de protección de la naturaleza (untere Naturschutzbehörde)",
        "marking": "Obligación de marcado (Anexo 6 BArtSchV)",
        "decl2": "El cedente expide una prueba de origen (Herkunftsnachweis) que indica la especie, el número, el sexo, el marcado, el origen y los datos de ambas partes.",
        "decl3": "El cambio de poseedor está sujeto a notificación (Meldepflicht) por parte del cedente y del adquirente ante la autoridad competente."
      },
      "ch": {
        "title": "ATESTADO DE CESIÓN",
        "framework": "Suiza — Ley CITES (RS 453) y ordenanzas de aplicación",
        "authority": "Oficina Federal de Seguridad Alimentaria y Asuntos Veterinarios (OSAV/BLV)",
        "marking": "Prueba de origen; autorización de tenencia cuando proceda",
        "decl1": "El cedente certifica que el animal procede de cría lícita y puede acreditar su origen (prueba de origen / Herkunftsnachweis).",
        "decl2": "Para especies protegidas puede exigirse una autorización de tenencia; la prueba de origen debe conservarse.",
        "decl3": "El adquirente se compromete a mantener el animal conforme a la legislación suiza de protección animal y de especies."
      },
      "us": {
        "title": "BILL OF SALE & CAPTIVE-BRED CERTIFICATE",
        "framework": "EE. UU. — Lacey Act (16 U.S.C. 3371-3378), ESA, CITES; la ley estatal varía",
        "authority": "U.S. Fish & Wildlife Service — y la agencia de fauna del estado correspondiente",
        "marking": "Microchip / identificador único cuando proceda",
        "decl1": "El vendedor certifica que el animal fue criado y nacido en cautividad y adquirido legalmente (cumplimiento de origen legal de la Lacey Act).",
        "decl2": "Para especies incluidas en los Apéndices I/II de CITES o en la ESA, se requieren los permisos federales aplicables para la transferencia interestatal o internacional.",
        "decl3": "El comprador es responsable del cumplimiento de las leyes de fauna de su estado de residencia, que pueden restringir o prohibir la posesión.",
        "captiveBred": "Este documento certifica que el animal fue criado y nacido en cautividad.",
        "disclaimer": "Este documento es una plantilla informativa y no constituye asesoramiento jurídico. El vendedor sigue siendo responsable del cumplimiento de la legislación federal y estatal aplicable."
      },
      "eu": {
        "title": "CERTIFICADO DE CESIÓN",
        "framework": "Unión Europea — Reglamento (CE) n.º 338/97 y Reglamento (CE) n.º 865/2006",
        "marking": "Marcado conforme y notificación a la autoridad nacional competente",
        "decl1": "El cedente certifica que el espécimen nació y se crió en cautividad en el sentido del artículo 54 del Reglamento (CE) n.º 865/2006 y fue adquirido legalmente.",
        "decl2": "Para un espécimen del Anexo B, el presente documento junto con la trazabilidad de la ascendencia constituye la prueba de adquisición lícita (art. 8.5).",
        "decl3": "Para un espécimen del Anexo A, el uso comercial requiere un certificado de exención («certificado amarillo») expedido por la autoridad administrativa CITES nacional.",
        "decl4": "El adquirente se compromete a respetar las condiciones de tenencia y la normativa nacional y europea aplicable.",
        "annexA": "Espécimen del Anexo A: el uso comercial requiere un certificado de exención («certificado amarillo») expedido por la autoridad administrativa CITES nacional."
      },
      "be": {
        "authority": "Autoridad Administrativa CITES — SPF Salud Pública (CITES Bélgica)"
      },
      "es": {
        "authority": "Autoridad Administrativa CITES — Ministerio competente (CITES España)"
      },
      "nl": {
        "authority": "Autoridad administrativa CITES — RVO; control NVWA (Países Bajos)"
      }
    },
    "errors": {
      "loadFailed": "No se pudieron cargar los datos. Inténtalo de nuevo."
    }
  },
  "avatarCropper": {
    "title": "Recortar avatar",
    "header": "Editor de avatar",
    "newDesignBadge": "Nuevo diseño",
    "zoom": "Zoom",
    "zoomOut": "Alejar",
    "zoomIn": "Acercar",
    "zoomLevel": "Nivel de zoom",
    "reset": "Restablecer",
    "fit": "Ajustar",
    "center": "Centrar",
    "tipTitle": "Consejo",
    "tip1": "Arrastra para mover la imagen",
    "tip2": "Rueda/Pellizcar para hacer zoom",
    "tip3": "Atajos: <1>+</1>/<3>-</3>, flechas, <5>0</5>, <7>Enter</7>, <9>Esc</9>",
    "apply": "Aplicar"
  },
  "qrcode": {
    "studio": "Estudio de impresión",
    "previewFormat": "Formato: {{format}}",
    "downloadLabel": "Imprimir etiqueta",
    "scanMe": "ESCANÉAME",
    "normalMorph": "Normal",
    "printedOn": "Impreso el: {{date}}",
    "forSale": "EN VENTA",
    "idLabel": "ID: {{id}}",
    "scanForPrice": "ESCANEAR PARA PRECIO",
    "private": {
      "title": "Privado",
      "desc": "Panel de control"
    },
    "public": {
      "title": "Público",
      "desc": "Escaparate de ventas"
    },
    "format": {
      "title": "Formato",
      "standard": "Estándar",
      "deli": "Tarrina Deli",
      "strip": "Tira de Rack",
      "card": "Ficha de terrario"
    },
    "design": {
      "title": "Diseño y Marca",
      "logoTitle": "Logo central",
      "logoNone": "Ninguno",
      "logoSnake": "Reptil",
      "logoUpload": "Subir..."
    },
    "options": {
      "addPrintDate": "Añadir fecha de impresión",
      "addPrintDateHint": "Útil para rastrear la antigüedad de la información mostrada."
    },
    "colors": {
      "black": "Negro (Estándar)",
      "green": "Verde (Sano/Disponible)",
      "blue": "Azul (Reproductor)",
      "purple": "Morado (Retenido/Holdback)",
      "pink": "Rosa (Hembra)",
      "orange": "Naranja (Muda)",
      "red": "Rojo (Vendido/Enfermo)",
      "gold": "Dorado (Especial)"
    },
    "customColor": "Color personalizado"
  },
  "blob": "blob",
  "brand": {
    "name": "ReptiNode"
  },
  "breeding": {
    "feature": {
      "certificatesDesc": "Genera certificados e informes profesionales",
      "eggsDesc": "Controla la incubación con temperaturas y fechas",
      "geneticsDesc": "Predice los morfos de las crías antes del cruce",
      "pairingsDesc": "Sigue los apareamientos y sus resultados",
      "pedigreeDesc": "Visualiza los linajes y gestiona la cría"
    },
    "header": {
      "subtitle": "Visualiza los linajes y gestiona tu programa de cría"
    },
    "proOnly": {
      "cta": {
        "upgradePro": "Actualizar a plan Pro"
      },
      "descriptions": {
        "certificates": "Genera certificados elegantes, listos para imprimir y fáciles de compartir.",
        "eggs": "Registra las puestas, incubaciones, eclosiones y recibe recordatorios clave.",
        "genetics": "Simula las probabilidades de morfos y compara los resultados de un vistazo.",
        "pairings": "Planifica los apareamientos, sigue los ciclos y mantiene el historial de cría.",
        "pedigree": "Mapea linajes, evita cruces riesgosos y construye tus líneas de sangre."
      },
      "features": {
        "certificates": "Certificados PDF",
        "eggs": "Seguimiento de huevos",
        "genetics": "Calculadora genética",
        "pairings": "Gestión de apareamientos",
        "pedigree": "Árbol genealógico"
      },
      "subtitle": "Desbloquea herramientas avanzadas para tu proyecto.",
      "title": "Funciones Pro"
    },
    "title": "Centro de Reproducción",
    "tabs": {
      "pedigree": "Árbol",
      "genetics": "Genética",
      "pairings": "Apareamientos",
      "eggs": "Huevos",
      "certificates": "Documentos",
      "season": "Temporada",
      "incubation": "Incubación",
      "lineage": "Linaje",
      "projects": "Proyectos",
      "economy": "Economía"
    },
    "pro_only": {
      "title": "Funciones Pro",
      "subtitle": "El Centro de Reproducción está reservado para miembros Pro.",
      "features": {
        "pedigree": {
          "title": "Árboles Genealógicos",
          "desc": "Visualiza linajes en varias generaciones."
        },
        "genetics": {
          "title": "Calculadora Avanzada",
          "desc": "Predicción de fases y combos."
        },
        "pairings": {
          "title": "Seguimiento de Apareamientos",
          "desc": "Historial completo y recordatorios."
        },
        "eggs": {
          "title": "Gestión de Huevos",
          "desc": "Incubación, eclosión y seguimiento."
        },
        "certificates": {
          "title": "Documentos Oficiales",
          "desc": "Generación automática de certificados."
        }
      },
      "cta_upgrade": "Mejorar a Pro"
    },
    "ui": {
      "loading": "Cargando…",
      "save": "Guardar",
      "cancel": "Cancelar",
      "add": "Añadir",
      "delete": "Eliminar",
      "close": "Cerrar",
      "later": "Más tarde"
    },
    "season": {
      "title": "Temporada de cría",
      "all_seasons": "Todas las temporadas",
      "pairings": "Apareamientos",
      "clutches": "Puestas",
      "eggs": "Huevos",
      "hatchlings": "Crías",
      "fertility_rate": "Tasa de fertilidad",
      "hatch_rate": "Tasa de eclosión",
      "success_rate": "Éxito global",
      "benchmark_title": "Comparativa por especie (toda la plataforma)",
      "benchmark_sub": "Tasas medias de eclosión agregadas y anónimas — útil para comparar tus resultados.",
      "hatch_rate_legend": "Tasa de eclosión"
    },
    "projects": {
      "title": "Proyectos de cría",
      "new": "Nuevo proyecto",
      "empty": "Aún no hay proyectos. Crea tu primer proyecto (p. ej. «Pied 2026»).",
      "animals": "animales",
      "pairings": "apareamientos",
      "new_title": "Nuevo proyecto de cría",
      "ph_name": "Nombre del proyecto",
      "ph_goal": "Morfo objetivo (p. ej. Pied)",
      "ph_season": "Temporada (p. ej. 2026)",
      "ph_desc": "Descripción (opcional)",
      "create": "Crear",
      "objective": "Objetivo",
      "no_animals": "Sin animales vinculados.",
      "no_pairings": "Sin apareamientos vinculados.",
      "delete_confirm": "¿Eliminar este proyecto?",
      "status": {
        "active": "Activo",
        "paused": "En pausa",
        "completed": "Completado",
        "archived": "Archivado"
      }
    },
    "economy": {
      "view_summary": "Balance",
      "view_expenses": "Gastos",
      "view_inventory": "Colección",
      "expense": "Gasto",
      "expenses": "Gastos",
      "revenue": "Ingresos",
      "margin": "Margen",
      "sales": "ventas",
      "by_category": "Gastos por categoría",
      "no_expenses": "No hay gastos registrados.",
      "new_expense": "Nuevo gasto",
      "ph_label": "Concepto (p. ej. Ratones congelados)",
      "amount": "Importe €",
      "cat": {
        "food": "Presas",
        "equipment": "Material",
        "vet": "Veterinario",
        "acquisition": "Adquisición",
        "other": "Otro"
      },
      "avail": {
        "keeping": "Conservado",
        "for_sale": "En venta",
        "reserved": "Reservado",
        "sold": "Vendido",
        "holdback": "Holdback"
      },
      "inv": {
        "gravid": "Hembras grávidas",
        "cooling": "En cooling",
        "for_sale": "En venta / reservados",
        "breeders": "Reproductores disponibles"
      },
      "delete_confirm": "¿Eliminar?"
    },
    "genealogy": {
      "coi_title": "Compatibilidad de apareamiento (consanguinidad)",
      "coi_sub": "Comprueba el coeficiente de consanguinidad (COI) antes de aparear dos animales.",
      "male": "Macho",
      "female": "Hembra",
      "verify": "Comprobar",
      "coi_high": "Consanguinidad alta — no recomendado.",
      "coi_none": "No se detecta consanguinidad notable entre estos dos animales.",
      "common_ancestors": "ancestro(s) común(es).",
      "tree_title": "Árbol genealógico",
      "choose_snake": "Elegir un reptil…",
      "select_prompt": "Selecciona un reptil para mostrar su linaje.",
      "ancestors": "Ascendientes",
      "descendants": "Descendientes",
      "unknown": "desconocido"
    },
    "incubation": {
      "title": "Seguimiento de incubación",
      "choose_clutch": "Elegir una puesta…",
      "empty": "No hay puestas registradas. Crea una puesta desde la pestaña Huevos.",
      "select_prompt": "Selecciona una puesta para seguir su incubación.",
      "clutch": "Puesta",
      "eggs_count": "huevos",
      "predicted_hatch": "Eclosión prevista",
      "days": "d",
      "base": "base",
      "avg_temp": "Temp. media",
      "target": "objetivo",
      "species": "Especie",
      "temp": "Temperatura °C",
      "humidity": "Humedad %",
      "reading": "Lectura",
      "curve_title": "Curva de temperatura / humedad",
      "temp_legend": "Temp °C",
      "humidity_legend": "Humedad %",
      "eggs_title": "Huevos",
      "eggs_sub": "ovoscopia y eclosión",
      "no_eggs": "No hay huevos registrados para esta puesta.",
      "inspect": "Inspeccionar",
      "hatch": "Eclosionar",
      "insp_title": "Inspección",
      "type_candling": "Ovoscopia (candling)",
      "type_weighing": "Pesaje",
      "type_pip": "Pipping (eclosionando)",
      "type_note": "Nota",
      "fertile_yes": "Fértil (venas visibles)",
      "fertile_no": "Infértil / claro",
      "weight_ph": "Peso (g)",
      "notes_ph": "Notas",
      "history": "Historial",
      "fertile": "fértil",
      "infertile": "infértil",
      "hatch_title": "Eclosión",
      "hatch_sub": "Crea la cría y la vincula automáticamente a sus padres y a la puesta.",
      "hatch_name_ph": "Nombre de la cría",
      "sex_unknown": "Sexo desconocido",
      "sex_male": "Macho",
      "sex_female": "Hembra",
      "morph_ph": "Morfo (opcional)",
      "create_hatchling": "Crear la cría",
      "hatchling_created": "Cría creada y vinculada al linaje ✓"
    },
    "adv_genetics": {
      "title": "Genética avanzada",
      "sub": "Cruce multigén (con alertas de combos letales) y proyección inversa desde tu colección.",
      "mode_cross": "Cruce",
      "mode_reverse": "Proyección inversa",
      "male": "Macho",
      "female": "Hembra",
      "calculate": "Calcular",
      "rarity": {
        "common": "común",
        "uncommon": "poco común",
        "rare": "raro",
        "very_rare": "muy raro"
      },
      "target_morph": "Morfo objetivo",
      "target_ph": "p. ej. Pied",
      "species": "Especie",
      "all_species": "Todas",
      "search_pairs": "Buscar parejas",
      "no_pairs": "Ninguna pareja de tu colección puede producir este morfo.",
      "wildtype": "Tipo salvaje"
    }
  },
  "charts": {
    "interval": "Intervalo"
  },
  "common": {
    "selected": "seleccionado(s)",
    "share": "Compartir",
    "download": "Descargar",
    "confirm_delete_photos": "¿Eliminar {{count}} foto(s)?",
    "error_occurred": "Se ha producido un error",
    "family_badge": "Familia",
    "date_placeHolder": "DD/MM/AAAA",
    "upgrade_now": "Hacerse Pro",
    "back": "Volver",
    "back_dashboard": "Volver al tablero",
    "you": "Tú",
    "backToHome": "Volver al inicio",
    "cancel": "Cancelar",
    "chooseOption": "Elige una opción",
    "close": "Cerrar",
    "code": "Código:",
    "confirm": "Confirmar",
    "create": "Crear",
    "delete": "Eliminar",
    "demo": "Demostración",
    "edit": "Editar",
    "error": "Error",
    "understood": "Entendido",
    "report": "Reportar",
    "uploading": "Subiendo...",
    "exportPdf": "Exportar PDF",
    "finish": "Finalizar",
    "formatCard": "dd MMM, yyyy",
    "generatedOn": "Generado el",
    "loading": "Cargando...",
    "loggedAs": "Conectado como",
    "next": "Siguiente",
    "notAvailable": "N/D",
    "page": "Página",
    "retry": "Reintentar",
    "save": "Guardar",
    "saved": "¡Guardado!",
    "saving": "Guardando...",
    "select": "Seleccionar",
    "skip": "Saltar",
    "ok": "OK",
    "success": "Éxito",
    "selectSnake": "Selecciona un reptil.",
    "unexpectedError": "Error inesperado",
    "unknown": "Desconocido",
    "update": "Actualizar",
    "unexpected_error": "Ocurrió un error inesperado."
  },
  "changelog": {
    "nav": {
      "back": "Volver"
    },
    "header": {
      "badge": "Historial de versiones",
      "title": "¿Qué hay de nuevo?",
      "subtitle": "Mejoramos la plataforma con la mayor regularidad posible. Descubra las últimas funcionalidades, correcciones y mejoras de rendimiento."
    },
    "types": {
      "feature": "Novedad",
      "improvement": "Mejora",
      "fix": "Corrección"
    },
    "major_update": "Actualización mayor",
    "footer_slogan": "La evolución continúa.",
    "releases": [
      {
        "version": "v1.9.0",
        "date": "6 de julio de 2026",
        "isoDate": "2026-07-06",
        "highlight": true,
        "title": "Más rápida, más segura, más fiable",
        "description": "Una actualización de fondo dedicada por completo a la calidad: ReptiNode es más rápida, más segura, más accesible y más fiable. No tienes que hacer nada: ya está en línea, y pronto llegarán nuevas funciones.",
        "changes": [
          {
            "type": "improvement",
            "text": "Aplicación más rápida: carga más veloz y navegación más fluida, incluso con colecciones grandes (pestañas de cría y herramientas PDF/QR cargadas bajo demanda, listas optimizadas)."
          },
          {
            "type": "improvement",
            "text": "Seguridad y privacidad reforzadas en profundidad: acceso a los árboles genealógicos restringido al propietario, protección sistemática de las rutas y autenticación reforzada."
          },
          {
            "type": "improvement",
            "text": "Accesibilidad mejorada en toda la aplicación: navegación con teclado, cierre de ventanas con la tecla Esc, compatibilidad con lectores de pantalla y etiquetas de formulario."
          },
          {
            "type": "improvement",
            "text": "Mayor fiabilidad: eliminaciones de cuenta y de puestas limpias (sin datos huérfanos), registros atómicos y pagos con Stripe más robustos."
          },
          {
            "type": "improvement",
            "text": "Más de 100 pruebas automatizadas y despliegues más seguros (una publicación se bloquea si falla una prueba) para una estabilidad diaria."
          },
          {
            "type": "fix",
            "text": "Corrección del reinicio en producción y del acceso al Panel de Administración, además de numerosas correcciones de estabilidad."
          }
        ]
      },
      {
        "version": "v1.8.0",
        "date": "15 de junio de 2026",
        "isoDate": "2026-06-15",
        "highlight": true,
        "title": "Escaparate Público, Códigos QR y Ventas",
        "description": "Una actualización mayor centrada en compartir: publica tus reptiles en fichas públicas cuidadas, equipa tu colección con códigos QR inteligentes y abre la puerta a la venta con MorphMarket. Más control, más seguridad, más posibilidades.",
        "changes": [
          {
            "type": "feature",
            "text": "Fichas públicas de nueva generación: comparte cada reptil mediante un enlace seguro con token único, con tres niveles de visibilidad (privado, no listado, público), caducidad del enlace, protección por contraseña y control de la información mostrada."
          },
          {
            "type": "feature",
            "text": "Galería de varias fotos: las fichas públicas muestran ahora una auténtica galería (hasta 20 fotos), junto al morfo, el sexo y la genética, con una vista previa enriquecida al compartir en redes sociales."
          },
          {
            "type": "feature",
            "text": "En venta y MorphMarket: indica un estado en venta, reservado o vendido con precio y botón de contacto, y exporta toda tu lista a MorphMarket con un clic (cuentas Pro)."
          },
          {
            "type": "feature",
            "text": "QR por recinto y rack: genera un QR para todo un terrario o rack que lleva a la lista de sus ocupantes, y gestiona tus recintos directamente en la aplicación."
          },
          {
            "type": "feature",
            "text": "QR de acciones rápidas: un QR de «alimentar» o «pesar» abre directamente el formulario rellenado — basta un escaneo para registrar el evento."
          },
          {
            "type": "feature",
            "text": "Transferencia por QR y certificado de autenticidad: cede un reptil y todo su historial al comprador con un solo escaneo, y disfruta de un certificado verificable que traza el linaje y la cadena de propiedad."
          },
          {
            "type": "feature",
            "text": "Impresión masiva y escáner integrado: imprime toda una colección de códigos QR en una plancha PDF (formatos tipo Avery), escanea tus etiquetas desde la aplicación y personaliza tus QR (mayor resistencia para terrarios húmedos, logotipo del criadero)."
          },
          {
            "type": "feature",
            "text": "Respuestas al soporte por email: responde directamente a nuestros correos y tu mensaje se añade automáticamente a tu ticket."
          },
          {
            "type": "improvement",
            "text": "Estadísticas de escaneo por reptil, además de nuevos indicadores de visibilidad y venta en cada tarjeta."
          },
          {
            "type": "improvement",
            "text": "Fichas públicas mostradas en el idioma del visitante, modo mantenimiento con banner informativo y encuestas programables (fechas de inicio y fin)."
          },
          {
            "type": "fix",
            "text": "El QR público ahora funciona perfectamente (se acabó el mensaje «perfil privado» mostrado por error), junto con numerosas correcciones de estabilidad."
          }
        ]
      },
      {
        "version": "v1.7.1",
        "date": "31 de mayo de 2026",
        "isoDate": "2026-05-31",
        "title": "Apertura Internacional y Pulido",
        "description": "ReptiNode cruza fronteras: los documentos legales se abren a numerosos países, la página de inicio estrena un nuevo diseño y varias correcciones específicas refuerzan la fiabilidad de la aplicación.",
        "changes": [
          {
            "type": "feature",
            "text": "Documentos legales internacionales: la generación de documentos oficiales ya está disponible para Bélgica, España, Alemania, Países Bajos, Suiza, Estados Unidos y todos los países de la Unión Europea."
          },
          {
            "type": "feature",
            "text": "Nuevas páginas de presentación: descubre las funcionalidades principales de ReptiNode a través de páginas dedicadas, diseñadas para entender mejor todo lo que la aplicación puede ofrecerte."
          },
          {
            "type": "improvement",
            "text": "Rediseño visual de la página de inicio para una primera impresión más moderna, clara y mejor estructurada."
          },
          {
            "type": "fix",
            "text": "Centro de Reproducción (Pro): corrección de un error que ocultaba algunos reptiles tras la introducción del Modo Familia."
          },
          {
            "type": "fix",
            "text": "Corrección de varias traducciones para mejorar la coherencia lingüística en toda la aplicación."
          }
        ]
      },
      {
        "version": "v1.7.0",
        "date": "8 de mayo de 2026",
        "isoDate": "2026-05-08",
        "title": "Transferencias, alimentación y análisis",
        "description": "Una actualización centrada en una gestión más flexible y fiable de tus reptiles: transfiere animales, añádelos con más facilidad, registra mejor las comidas y disfruta de una pestaña de análisis completamente rediseñada.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Transferencia de reptiles: Ahora puedes transferir un reptil a una familia o dárselo a otro usuario."
          },
          {
            "type": "improvement",
            "text": "Añadir reptiles es más fácil: El formulario es más claro, más completo y ahora propone especies desde el catálogo de ReptiNode."
          },
          {
            "type": "improvement",
            "text": "Registro de alimentación mejorado: Registrar comidas es más preciso, más rápido y está mejor adaptado a los diferentes casos del día a día."
          },
          {
            "type": "feature",
            "text": "Rediseño completo de la pestaña Análisis: Los perfiles de reptiles ahora cuentan con una vista estadística más completa para seguir mejor la salud, comidas, peso, mudas y alertas."
          },
          {
            "type": "fix",
            "text": "Corrección de varios errores menores relacionados con familias, eventos y la visualización de algunos datos."
          },
          {
            "type": "improvement",
            "text": "Mejoras de rendimiento y estabilidad para una navegación más fluida en la aplicación."
          }
        ]
      },
      {
        "version": "v1.6.0",
        "date": "20 de diciembre de 2025",
        "isoDate": "2025-12-20",
        "title": "Comunidad, familia y fotos",
        "description": "¡Una actualización centrada en compartir! Gestiona tu cría entre varias personas, conversa en el foro e inmortaliza tus reptiles en fotos. Todo con un plan gratuito mucho más amplio.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Lanzamiento de la Comunidad: Una nueva pestaña Foro para intercambiar, hacer preguntas y compartir tu pasión con otros miembros."
          },
          {
            "type": "feature",
            "text": "Modo Familia: ¡Gestiona tus reptiles entre varias personas! Crea una 'Familia' en los ajustes para invitar a tu pareja o socios a tu cría."
          },
          {
            "type": "feature",
            "text": "Galería de fotos: La pestaña 'Fotos' aparece en los perfiles de reptiles. Empieza a construir su álbum."
          },
          {
            "type": "improvement",
            "text": "Mejora del plan gratuito: ¡El límite aumenta muchísimo! Ahora puedes gestionar hasta 30 reptiles gratis, frente a 5 anteriormente."
          },
          {
            "type": "improvement",
            "text": "Simplificación: Se elimina la pestaña 'Contribución'. Las solicitudes para añadir especies ahora pasan por el formulario de contacto."
          },
          {
            "type": "fix",
            "text": "Formulario de creación: La fecha de nacimiento deja de ser obligatoria, facilitando el registro de animales con origen incierto."
          },
          {
            "type": "fix",
            "text": "Correcciones visuales en móvil para una mejor navegación en pantallas pequeñas."
          }
        ]
      },
      {
        "version": "v1.5.0",
        "date": "8 de diciembre de 2025",
        "isoDate": "2025-12-08",
        "title": "Expansión de especies y diseño",
        "description": "Una gran actualización que abre ReptiNode a todo el mundo terrariófilo.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Soporte oficial de 190 nuevas especies (Hognose, pitón verde, reticulada...) y apertura de la base de datos a todos los reptiles (lagartos, tortugas, etc.), no solo serpientes."
          },
          {
            "type": "improvement",
            "text": "Mejora del diseño de algunos elementos para una mejor comprensión y accesibilidad."
          },
          {
            "type": "fix",
            "text": "Correcciones de estabilidad en el módulo de genética y mejoras de rendimiento."
          }
        ]
      },
      {
        "version": "v1.4.0",
        "date": "1 de diciembre de 2025",
        "isoDate": "2025-12-01",
        "title": "Conecta lo real y lo digital: códigos QR y escaparate público",
        "description": "Transforma tus instalaciones con etiquetas inteligentes. Desde el escaneo rápido para la alimentación hasta la ficha pública de venta para ferias, conecta tus racks con tu aplicación.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Generador de códigos QR: Crea etiquetas PDF personalizadas (nombre, morfología, etc.) listas para imprimir para tus terrarios y racks."
          },
          {
            "type": "feature",
            "text": "Modo Escaparate Público: Activa el modo 'Venta' para generar un enlace accesible a todos. Ideal para ferias: los visitantes escanean y ven la información esencial sin acceder a tus datos privados."
          },
          {
            "type": "feature",
            "text": "Acciones rápidas al escanear: Configura el código QR para abrir directamente la ventana de creación de eventos (comida, muda, peso) durante tus rondas de mantenimiento."
          },
          {
            "type": "feature",
            "text": "Personalización visual: Usa códigos de color (verde, rojo, azul...) en tus QR para identificar visualmente estados como En venta, En cuidado o Reproducción directamente en la caja."
          },
          {
            "type": "feature",
            "text": "Contacto directo: La ficha pública incluye ahora un botón de contacto por email prellenado para facilitar los intercambios con posibles compradores."
          },
          {
            "type": "improvement",
            "text": "Compatible con impresoras térmicas: El formato PDF se ha optimizado para etiquetas estándar de 50x50mm y formatos de tarjeta de visita."
          }
        ]
      },
      {
        "version": "v1.3.0",
        "date": "15 de noviembre de 2025",
        "isoDate": "2025-11-15",
        "title": "Revoluciona tu cría: el centro de reproducción",
        "description": "Una suite completa dedicada a criadores apasionados. Hemos digitalizado cada etapa de tu temporada: desde la planificación de apareamientos hasta la impresión del certificado de nacimiento.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Flujo de apareamiento: Gestiona el ciclo completo con estados personalizados (Planificado, En curso, Confirmado, Fallido)."
          },
          {
            "type": "feature",
            "text": "Incubación de precisión: Seguimiento por puesta con registros ambientales (temperatura y humedad) y fecha estimada de eclosión."
          },
          {
            "type": "feature",
            "text": "Gestión individual de huevos: Trazabilidad individual (peso, slugs, no fértiles, nacidos muertos o eclosionados)."
          },
          {
            "type": "feature",
            "text": "Árbol genealógico y genética: Visualiza ancestros y calcula probabilidades de morfologías incluso antes del apareamiento."
          },
          {
            "type": "feature",
            "text": "Documentos administrativos: Generación automática de certificados de nacimiento/cesión conformes y profesionales."
          },
          {
            "type": "improvement",
            "text": "Seguridad de datos: Módulo exclusivo para cuentas 'Pro' con copia de seguridad prioritaria en la nube."
          }
        ]
      },
      {
        "version": "v1.2.0",
        "date": "1 de noviembre de 2025",
        "isoDate": "2025-11-01",
        "title": "Contribuye y gana recompensas",
        "description": "¡La base de datos se vuelve comunitaria! Ahora puedes proponer mutaciones faltantes, validar datos y ganar créditos para tu suscripción.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Sistema de contribución: Propón morfologías, localidades o especies faltantes en el catálogo."
          },
          {
            "type": "feature",
            "text": "Monedero y recompensas: Gana créditos (⟡) por cada validación aceptada por la moderación."
          },
          {
            "type": "feature",
            "text": "Clasificación comunitaria: Descubre a los principales contribuidores y compara tu puesto."
          },
          {
            "type": "improvement",
            "text": "Búsqueda integrada en el catálogo para evitar duplicados durante tus propuestas."
          }
        ]
      },
      {
        "version": "v1.1.0",
        "date": "15 de octubre de 2025",
        "isoDate": "2025-10-15",
        "title": "Panel: arrastrar, soltar y personalización",
        "description": "Una gran actualización de tu panel. Reorganiza tus tarjetas, accede más rápido a tus acciones frecuentes y disfruta de una interfaz más fluida.",
        "changes": [
          {
            "type": "feature",
            "text": "Arrastrar y soltar: Reorganiza tus reptiles con un simple drag and drop. Tu orden se guarda."
          },
          {
            "type": "feature",
            "text": "Widgets estadísticos: Nuevas tarjetas para seguir las mudas y comidas de la semana de un vistazo."
          },
          {
            "type": "improvement",
            "text": "Avatar de usuario sincronizado y gestión de caché mejorada."
          },
          {
            "type": "fix",
            "text": "Corrección de un problema de carga de avatares en conexiones lentas."
          }
        ]
      },
      {
        "version": "v1.0.0",
        "date": "1 de octubre de 2025",
        "isoDate": "2025-10-01",
        "title": "¡Lanzamiento oficial!",
        "description": "¡Después de meses de desarrollo, la versión 1.0 ya está aquí! Todo lo que necesitas para gestionar fichas de animales, visualizar su crecimiento y proteger tus datos.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Perfiles completos: Seguimiento de peso, tamaño y edad en tiempo real."
          },
          {
            "type": "feature",
            "text": "Gráficos inteligentes: Visualiza la curva de crecimiento y la frecuencia de alimentación."
          },
          {
            "type": "feature",
            "text": "Exportación PDF Pro: Genera fichas de cesión y seguimiento veterinario en un clic."
          },
          {
            "type": "feature",
            "text": "Modo 'Solo lectura' y archivado: Protege los datos de reptiles vendidos o fallecidos."
          }
        ]
      }
    ]
  },
  "contact": {
    "nav": {
      "back": "Volver"
    },
    "header": {
      "title": "Contáctenos",
      "subtitle": "¿Una pregunta sobre sus reptiles? Nuestro equipo está aquí para usted."
    },
    "info": {
      "title": "Información de contacto",
      "email_label": "Correo",
      "office_label": "Oficina"
    },
    "form": {
      "title": "Envíenos un mensaje",
      "name_label": "Nombre completo",
      "name_placeholder": "Juan Pérez",
      "email_label": "Correo electrónico",
      "message_label": "Mensaje",
      "message_placeholder": "Cómo puedo...",
      "submit_button": "Enviar mensaje",
      "sending": "Enviando...",
      "success_title": "¡Mensaje enviado!",
      "success_message": "Hemos recibido su solicitud y le responderemos en 24 horas.",
      "send_another": "Enviar otro mensaje"
    }
  },
  "family": {
    "manage_members": "Gestionar miembros",
    "manage_members_title": "Miembros de la familia",
    "kick_member": "Expulsar miembro",
    "transfer_ownership": "Transferir propiedad",
    "confirm_kick": "¿Estás seguro de que quieres expulsar a este miembro de la familia?",
    "confirm_transfer": "Atención: Al transferir la propiedad, te convertirás en un miembro normal y perderás tus derechos de administración. ¿Continuar?",
    "transfer_success": "Propiedad transferida con éxito.",
    "members_count": "miembro(s)",
    "leave_btn": "Abandonar la familia",
    "leave_success": "Has abandonado la familia.",
    "leave_error": "Error al abandonar.",
    "leave_confirm_title": "¿Abandonar la familia?",
    "leave_confirm_desc": "¿Estás seguro de que quieres abandonar \"{{name}}\"? Ya no tendrás acceso a los datos.",
    "confirm_leave": "Abandonar",
    "delete_btn": "Eliminar familia",
    "delete_confirm_title": "¿Eliminar familia?",
    "delete_warning_1": "Esta acción es irreversible.",
    "delete_warning_2": "Todos los miembros serán eliminados. Asegúrese de haber guardado los datos importantes.",
    "type_to_confirm": "Escriba \"{{name}}\" para confirmar:",
    "single_family_policy_title": "Una familia a la vez",
    "single_family_policy_desc": "Ya formas parte de una familia. Para unirte o crear otra, primero debes abandonar o eliminar la familia actual.",
    "delete_error": "Error al eliminar la familia.",
    "my_families": "Mis Familias",
    "no_family": "Aún no formas parte de ninguna familia.",
    "create_prompt": "¡Comienza tu criadero ahora!",
    "join_title": "Unirse a una familia",
    "join_placeholder": "Introduce el código de invitación...",
    "join_btn": "Unirse",
    "join_help": "Pide el código de invitación al propietario del criadero.",
    "code_label": "Código:",
    "join_success": "¡Te has unido a la familia con éxito!",
    "join_error": "Código inválido o error.",
    "create_error": "Error durante la creación.",
    "cannot_join_title": "Acción no permitida",
    "cannot_join_owner": "Como propietario de un criadero (familia), no puedes unirte a otras familias en este momento.",
    "role": {
      "OWNER": "Propietario",
      "ADMIN": "Admin",
      "MEMBER": "Miembro"
    },
    "create_modal": {
      "title": "Crear una familia",
      "name_label": "Nombre de tu criadero / familia",
      "name_placeholder": "ej: Reptiles Pasión...",
      "description": "Esto creará un espacio compartido donde podrás invitar a otros miembros.",
      "submit": "Crear espacio"
    }
  },
  "dashboard": {
    "community": "Comunidad",
    "switch_space": "Cambiar de espacio",
    "mySpace": "Mi Espacio",
    "create_family": "Crear una familia",
    "familySnakes": "reptiles de la familia",
    "noEventsSubtitle": "Añade un evento para seguir el historial.",
    "lockedSnake": "Reptil bloqueado",
    "upgradeToAccess": "Hazte Premium para acceder",
    "addEvent": "Agregar Evento",
    "addFirstSnake": "Comienza agregando tu primer reptil a la colección.",
    "addFirstSnakeBtn": "Agregar Tu Primer Reptil",
    "addSnake": "Agregar Reptil",
    "dropHere": "Suelta aquí para colocar al final",
    "errorLoadingEvents": "Error al cargar los eventos",
    "errorLoadingSnakes": "Error al cargar los reptiles",
    "filter": "Filtrar",
    "filters": {
      "all": "Todos",
      "female": "Hembras",
      "male": "Machos",
      "needsFeeding": "Necesita alimentación",
      "recentChanges": "Cambios recientes",
      "unknown": "Sexo desconocido"
    },
    "loadingEvents": "Cargando eventos...",
    "loadingSnakes": "Cargando reptiles...",
    "mySnakes": "Mis Reptiles",
    "noEvents": "No hay eventos recientes",
    "noSnakes": "No se encontraron reptiles",
    "noSnakesSubtitle": "Ningún reptil coincide con tu búsqueda.",
    "recentEvents": "Eventos Recientes",
    "search": "Buscar reptiles...",
    "settings": "Configuración",
    "signOut": "Cerrar Sesión",
    "stats": {
      "allTime": "Todo el tiempo",
      "lastWeek": "Las últimas 7 días",
      "recentFeedings": "Alimentaciones Recientes",
      "recentSheds": "Mudas Recientes",
      "thisMonth": "este mes",
      "thisWeek": "Esta semana",
      "totalEvents": "Total Eventos",
      "totalSnakes": "Total Reptiles"
    },
    "subtitle": "Gestiona tu colección de reptiles",
    "title": "Panel de Control",
    "viewAllEvents": "Ver Todos los Eventos"
  },
  "date": {
    "cardStyle": "medium"
  },
  "eggTracking": {
    "a11y": {
      "deleteClutch": "Eliminar puesta",
      "editClutch": "Editar puesta"
    },
    "actions": {
      "newClutch": "Nueva puesta"
    },
    "clutchLabel": "Puesta",
    "createFirst": "Registra tu primera puesta",
    "daysRemaining": "{{count}} días restantes",
    "delete": {
      "subtitle": "Esto también eliminará todos los huevos asociados.",
      "title": "¿Eliminar esta puesta?"
    },
    "eggModal": {
      "status": "Estado",
      "title": "Editar huevo",
      "weight": "Peso (g)",
      "weightPlaceholder": "ej.: 62,5"
    },
    "empty": "No hay puestas registradas",
    "form": {
      "eggCount": "Número de huevos",
      "error": {
        "fertileExceedsTotal": "El número de huevos fértiles no puede exceder el total de huevos."
      },
      "estHatchDate": "Fecha estimada de eclosión",
      "expectedHatchDate": "Fecha estimada de eclosión",
      "fertileCount": "Fértiles",
      "humidityPct": "Humedad (%)",
      "laidDate": "Fecha de puesta",
      "noPairings": "No se encontraron apareamientos. Crea uno primero en la sección Apareamientos.",
      "noPairingsHint": "No se encontraron apareamientos. Crea uno primero en la sección Apareamientos.",
      "notes": "Notas",
      "notesPlaceholder": "Observaciones (peso medio, candleo, pérdidas, etc.)",
      "pairing": "Pareja (apareamiento)",
      "selectPairing": "Selecciona un apareamiento…",
      "tempC": "Temperatura (°C)"
    },
    "hatchingSoon": "¡Eclosión inminente!",
    "humidity": "Humedad",
    "individualEggs": "Huevos individuales",
    "laidOn": "Puesta el {{date}}",
    "legend": {
      "damaged": "Dañado",
      "hatched": "Eclosionado",
      "incubating": "En incubación",
      "infertile": "Infértil",
      "title": "Leyenda"
    },
    "modal": {
      "createTitle": "Nueva puesta",
      "editTitle": "Editar puesta"
    },
    "stat": {
      "totalEggs": "Huevos totales"
    },
    "stats": {
      "damagedPlural": "Dañados",
      "eggs": "Huevos",
      "hatched": "Eclosionados",
      "incubating": "En incubación",
      "infertilePlural": "Infértiles"
    },
    "status": {
      "damaged": "Dañado",
      "hatched": "Eclosionado",
      "incubating": "En incubación",
      "infertile": "Infértil"
    },
    "subtitle": "Supervisa la incubación de tus puestas",
    "temperature": "Temperatura",
    "title": "Seguimiento de huevos"
  },
  "androidInstallPrompt": {
    "title": "Instalar ReptiNode",
    "subtitle": "Añade la aplicación a tu pantalla de inicio para un acceso más sencillo.",
    "button": "Instalar ahora"
  },
  "iosInstallPrompt": {
    "title": "Instalar ReptiNode",
    "subtitle": "La app para tus reptiles, en tu iPhone.",
    "step1Prefix": "1. Pulsa el botón ",
    "step1Highlight": "Compartir",
    "step1Suffix": " en la parte inferior de tu pantalla de Safari.",
    "step2Prefix": "2. Desliza hacia abajo y elige ",
    "step2Highlight": "Añadir a la pantalla de inicio",
    "step3Prefix": "3. Por último, pulsa ",
    "step3Highlight": "Añadir",
    "step3Suffix": " en la parte superior derecha para terminar."
  },
  "families": {
    "family": "Familia"
  },
  "events": {
    "load_error": "Error al cargar los eventos.",
    "load_error_help": "Comprueba el contexto seleccionado y vuelve a intentarlo.",
    "refused_meal": "El animal rechazó comer",
    "refused_badge": "RECHAZO",
    "disable_button_title": "Empieza añadiendo un reptil",
    "page_title": "Todos los eventos",
    "search_placeholder": "Buscar por nombre, nota o tipo...",
    "history_title": "Historial de eventos",
    "delete_confirm": "¿Seguro que quieres eliminar este evento?",
    "snake_unknown": "Desconocido",
    "addError": "Error al añadir el evento.",
    "filters": {
      "all": "Todos",
      "feeding": "Comida",
      "shed": "Muda",
      "vet_visit": "Veterinario",
      "handling": "Manipulación",
      "other": "Otro"
    },
    "empty": {
      "title": "No se encontraron eventos",
      "no_match": "Ningún evento coincide con tu búsqueda.",
      "no_history": "Todavía no hay eventos registrados."
    },
    "actions": {
      "ariaLabel": "Acciones del evento",
      "menuLabel": "Menú de acciones del evento"
    },
    "add": "Añadir evento",
    "addEvent": "Añadir evento",
    "addPhotos": "Añadir fotos (máx. 5)",
    "addTitle": "Añadir un evento",
    "all": "Todos",
    "allEvents": "Todos los eventos",
    "cancel": "Cancelar",
    "confirmDelete": "¿Eliminar este evento? Esta acción es definitiva.",
    "date": "Fecha",
    "delete": "¿Eliminar este evento? Esta acción es definitiva.",
    "editTitle": "Modificar evento",
    "eventHistory": "Historial de eventos",
    "eventType": "Tipo de evento",
    "feeding": "Comida",
    "fields": {
      "snake": "Reptil",
      "date": "Fecha",
      "notes": "Notas",
      "type": "Tipo",
      "weight": "Peso (g)",
      "length": "Longitud (mm)"
    },
    "handling": "Manipulación",
    "noEventsFound": "No se encontraron eventos",
    "noEventsMatch": "Ningún evento coincide con tu búsqueda.",
    "noEventsYet": "Todavía no hay eventos registrados.",
    "notes": "Notas",
    "notesPlaceholder": "Detalles adicionales sobre este evento...",
    "other": "Otro",
    "photos": "Fotos",
    "placeholders": {
      "notes": "Notas libres…",
      "weight": "ej.: 120",
      "length": "ej.: 850"
    },
    "processing": "Procesando...",
    "searchPlaceholder": "Buscar eventos...",
    "selectSnake": "Seleccionar un reptil",
    "shed": "Muda",
    "add_error": "Error al añadir",
    "gallery_upload_note": "Subida a galería",
    "types": {
      "gallery": "Galería",
      "weight": "Pesaje",
      "length": "Medición",
      "note": "Nota",
      "cleaning": "Limpieza",
      "feeding": "Alimentación",
      "handling": "Manipulación",
      "shed": "Muda",
      "vet_visit": "Visita veterinaria",
      "other": "Otro"
    },
    "uploadError": {
      "failed": "Error de subida",
      "incomplete": "Algunas fotos no pudieron subirse. Inténtalo de nuevo.",
      "size": "{{fileName}} es demasiado pesado. Tamaño máximo: {{maxSizeMB}} MB."
    },
    "modal": {
      "add": {
        "subtitleDefault": "Añade un evento simple al historial.",
        "subtitleFeeding": "Registro de alimentación simplificado, pensado para el uso diario."
      },
      "edit": {
        "saveFailed": "No se pudo guardar."
      },
      "measurements": {
        "title": "Medidas del reptil",
        "description": "Estos datos alimentan automáticamente las estadísticas de salud, peso y crecimiento.",
        "length": "Longitud (mm)",
        "lengthPlaceholder": "Ej.: 850"
      },
      "feeding": {
        "selectPreyTypeFirst": "Selecciona primero un tipo de presa",
        "title": "Alimentación",
        "description": "Estado de la comida e información esencial sobre la presa.",
        "applyLastFeeding": "Reutilizar la última comida",
        "loadingLastFeeding": "Cargando la última alimentación...",
        "lastFeedingRecorded": "Última alimentación registrada",
        "noStructuredPrey": "Sin presa estructurada",
        "theoreticalInterval": "Frecuencia teórica: {{days}} días",
        "noPreviousFeeding": "No se encontró ninguna alimentación previa para este reptil.",
        "daysAgo_one": "hace {{count}} día",
        "daysAgo_other": "hace {{count}} días",
        "status": "Estado de la comida",
        "refusalReason": "Motivo del rechazo",
        "refusalReasonPlaceholder": "Ej. muda, estrés, sin interés",
        "preyType": "Tipo de presa",
        "unspecified": "No especificado",
        "preySize": "Tamaño / complexión",
        "preyCount": "Cantidad",
        "preyWeight": "Peso de la presa (g)",
        "feedingMethod": "Método (opcional)",
        "feedingMethodPlaceholder": "Pinzas, dejada en el terrario...",
        "deduct_from_stock": "Descontar esta comida de mi stock de presas",
        "animalWeight": "Peso del animal (g)",
        "animalWeightPlaceholder": "Ej. 540",
        "statusOptions": {
          "accepted": "Comida aceptada",
          "refused": "Rechazo",
          "partial": "Parcial",
          "regurgitated": "Regurgitada",
          "assisted": "Asistida"
        },
        "preyTypes": {
          "mouse": "Ratón",
          "rat": "Rata",
          "asf": "ASF",
          "chick": "Pollito",
          "insect": "Insecto",
          "fish": "Pez",
          "other": "Otro"
        },
        "preySizes": {
          "weaned": "Destetado",
          "pup": "Cría",
          "day_old": "De 1 día",
          "micro": "Micro",
          "juvenile": "Juvenil",
          "fry": "Alevín",
          "small": "Pequeño",
          "medium": "Mediano",
          "large": "Grande",
          "pinky": "Pinky",
          "fuzzy": "Fuzzy",
          "hopper": "Hopper",
          "subadult": "Subadulto",
          "adult": "Adulto",
          "other": "Otro"
        }
      }
    },
    "uploadSelected": "Subir elementos seleccionados",
    "vetVisit": "Visita veterinaria",
    "weight": "Peso (gramos)",
    "weightOptional": "Opcional - peso en el momento del evento",
    "weightWithUnit": "Peso: {{weight}}g",
    "length": "Longitud",
    "lengthWithUnit": "Longitud: {{length}}mm"
  },
  "feedback": {
    "header": {
      "title": "Tu opinión cuenta",
      "subtitle": "Ayúdanos a construir la mejor plataforma para tus reptiles."
    },
    "rating_label": "Califica tu experiencia",
    "category_label": "Asunto",
    "message_label": "Tu mensaje",
    "message_placeholder": "Cuéntanos qué te gusta o qué podríamos mejorar...",
    "submit_button": "Enviar opinión",
    "categories": {
      "general": "Opinión general",
      "feature": "Idea / Funcionalidad",
      "bug": "Problema / Bug",
      "ui": "Diseño / Ergonomía"
    },
    "rating_labels": {
      "1": "Insatisfecho 😞",
      "2": "Podría mejorar 😕",
      "3": "Bien 🙂",
      "4": "¡Muy bien! 😊",
      "5": "¡Excelente! 🎉"
    },
    "success": {
      "title": "¡Muchas gracias!",
      "message": "Tu opinión es valiosa y nos ayuda a mejorar ReptiNode cada día.",
      "button": "Volver al panel"
    },
    "errors": {
      "rating_required": "Por favor selecciona una calificación."
    },
    "footer_thanks": "Gracias por tu contribución."
  },
  "features": {
    "analytics": {
      "description": "Perspectivas visuales sobre patrones de crecimiento, éxito alimentario y tendencias de salud.",
      "title": "Análisis y Gráficos"
    },
    "detailedProfiles": {
      "description": "Perfiles completos de reptiles con fotos, información de especies, genética y registros de salud.",
      "title": "Perfiles Detallados"
    },
    "eventTracking": {
      "description": "Monitorea horarios de alimentación, ciclos de muda y citas veterinarias.",
      "title": "Seguimiento de Eventos"
    },
    "exportReports": {
      "description": "Genera reportes PDF y Excel para veterinarios o registros de cría.",
      "title": "Reportes de Exportación"
    },
    "multiUser": {
      "description": "Comparte acceso con socios, veterinarios o colaboradores de cría.",
      "title": "Acceso Multi-Usuario"
    },
    "photoManagement": {
      "description": "Organiza y rastrea fotos con marcas de tiempo y galerías automáticas.",
      "title": "Gestión de Fotos"
    },
    "subtitle": "Herramientas completas diseñadas específicamente para entusiastas de reptiles y criadores profesionales.",
    "title": "Todo lo que necesitas para gestionar tu colección"
  },
  "footer": {
    "about": "Acerca de",
    "company": "Empresa",
    "description": "Gestión profesional de reptiles para entusiastas y criadores.",
    "privacy": "Privacidad",
    "product": "Producto",
    "rights": "Todos los derechos reservados.",
    "support": "Soporte",
    "terms": "Términos"
  },
  "genetics": {
    "calculate": "Calcular probabilidades",
    "emptyAfterSelect": "Haz clic en “Calcular” para ver las predicciones",
    "femaleParent": "Progenitora hembra",
    "loadingRegistry": "Cargando registro genético…",
    "maleParent": "Progenitor macho",
    "morphLabel": "Morfología",
    "normal": "Normal",
    "results": {
      "commons": "Factores comunes (100%):",
      "genes": "Genes",
      "het": "Portador",
      "methodNote": "Datos calculados por locus (dominante, recesivo, incompleto), con agregación, control de complejos alélicos, nombres interalélicos/combos nombrados y “supers” definidos en el registro JSON.",
      "probability": "probabilidad",
      "title": "Resultados genéticos previstos",
      "visual": "Visual"
    },
    "selectFemale": "Selecciona una hembra…",
    "selectMale": "Selecciona un macho…",
    "subtitle": "Cruces mendelianos por locus, control de complejos alélicos, fenotipos interalélicos, supers y combinaciones nombradas, multi-especie mediante registros JSON.",
    "title": "Calculadora genética",
    "violations": {
      "hint": "Corrige la genética del progenitor: un progenitor no puede portar varios alelos del mismo complejo.",
      "title": "Conflicto(s) alélico(s) dentro del mismo complejo"
    },
    "warn": {
      "unsupportedSpecies": "La calculadora genética aún no está disponible para {{species}}.",
      "allelicConflictMessage": "Ambos progenitores deben ser de la misma especie para un cálculo fiable.",
      "registryFallback": "No se pudo cargar el JSON externo. Usando un registro local mínimo (fallback)."
    }
  },
  "hero": {
    "description": "Rastrea, gestiona y monitorea tu colección de reptiles con registros de salud completos, horarios de alimentación y análisis detallados.",
    "learnMore": "Saber Más",
    "subtitle": "Simplificada",
    "title": "Gestión Profesional de Reptiles",
    "tryFree": "Comenzar ahora"
  },
  "html2canvas": "html2canvas",
  "jspdf": "jsPDF",
  "landing": {
    "roles": {
      "exoticVeterinarian": "Veterinario de exóticos",
      "professionalBreeder": "Criador profesional",
      "reptileEnthusiast": "Aficionado a los reptiles"
    }
  },
  "language": {
    "changed": "Idioma actualizado",
    "current": "Actual: {{lang}}",
    "names": {
      "en": "Inglés",
      "es": "Español",
      "fr": "Francés"
    },
    "selector": {
      "label": "Idioma"
    }
  },
  "nav": {
    "backToHome": "Volver al Inicio",
    "contact": "Contacto",
    "features": "Características",
    "pricing": "Precios",
    "signIn": "Iniciar Sesión"
  },
  "pairing": {
    "actions": {
      "createFirst": "Crea tu primer apareamiento",
      "new": "Nuevo apareamiento",
      "update": "Actualizar"
    },
    "alert": {
      "sameSnake": "El macho y la hembra no pueden ser el mismo reptil."
    },
    "delete": {
      "confirm": "Esta acción es definitiva. ¿Deseas eliminar este apareamiento?",
      "title": "¿Eliminar este apareamiento?"
    },
    "empty": "No hay apareamientos registrados",
    "fields": {
      "date": "Fecha de apareamiento",
      "female": "Hembra",
      "male": "Macho",
      "notes": "Notas",
      "status": "Estado"
    },
    "modal": {
      "editTitle": "Editar apareamiento",
      "newTitle": "Nuevo apareamiento"
    },
    "placeholders": {
      "notes": "Observaciones, comportamientos, etc.",
      "selectFemale": "Selecciona una hembra…",
      "selectMale": "Selecciona un macho…"
    },
    "status": {
      "active": "Activo",
      "failed": "Fallido",
      "planned": "Planificado",
      "separated": "Separados",
      "successful": "Exitoso"
    },
    "subtitle": "Sigue tus apareamientos y su progreso",
    "title": "Gestión de apareamientos"
  },
  "pedigree": {
    "actions": {
      "addParents": "Añadir progenitores",
      "cancel": "Cancelar",
      "save": "Guardar"
    },
    "depthLabel": "Profundidad",
    "empty": "No hay datos genealógicos disponibles",
    "export": {
      "exporting": "Exportando...",
      "tooltip": "Exportar el árbol genealógico a PDF"
    },
    "generation": "Generación",
    "legend": {
      "female": "Hembra",
      "male": "Macho",
      "title": "Leyenda",
      "unknown": "Desconocido"
    },
    "parents": {
      "cycleDetected": "No se puede guardar: esta elección crearía un ciclo (el hijo pasaría a ser ancestro del padre).",
      "cycleWarning": "Elección inválida: esto crearía un ciclo genealógico.",
      "fatherLabel": "Padre (macho)",
      "motherLabel": "Madre (hembra)",
      "noneFemale": "— Ninguna / Desconocida —",
      "noneMale": "— Ninguno / Desconocido —",
      "title": "Asociar progenitores"
    },
    "pdf": {
      "field": {
        "exportedOn": "Exportado el:",
        "generationsShown": "Generaciones mostradas:",
        "individual": "Individuo:",
        "morph": "Morfología:",
        "sex": "Sexo:",
        "species": "Especie:"
      },
      "infoSection": "INFORMACIÓN",
      "title": "ÁRBOL GENEALÓGICO"
    },
    "rel": {
      "father": "Padre",
      "greatGrandparent": "Bisabuelo/a ({{side}})",
      "individual": "Individuo",
      "maternalGrandfather": "Abuelo materno",
      "maternalGrandmother": "Abuela materna",
      "mother": "Madre",
      "nthGreatGrandparent": "{{n}}× bisabuelo/a ({{side}})",
      "paternalGrandfather": "Abuelo paterno",
      "paternalGrandmother": "Abuela paterna",
      "side": {
        "maternal": "materno",
        "paternal": "paterno"
      }
    },
    "selectLabel": "Seleccionar:",
    "subtitle": "Visualiza los linajes de tus reptiles",
    "table": {
      "birthYear": "Nacimiento",
      "generation": "Generación",
      "morph": "Morfología",
      "name": "Nombre",
      "relation": "Parentesco",
      "sex": "Sexo"
    },
    "title": "Árbol genealógico",
    "view": {
      "compact": "Compacto",
      "grid": "Cuadrícula",
      "horizontal": "Horizontal",
      "table": "Tabla",
      "vertical": "Vertical"
    },
    "viewTitle": {
      "compact": "Compacto",
      "grid": "Cuadrícula",
      "horizontal": "Horizontal",
      "table": "Tabla",
      "vertical": "Vertical"
    }
  },
  "plans": {
    "basic": "Básico",
    "pro": "Pro"
  },
  "pricing": {
    "monthly": "Mensual",
    "professional": {
      "cta": "Suscribirse Ahora",
      "duration": " / mensual",
      "features": {
        "birthCertificates": "Certificados (nacimiento, identidad, transferencia...) en formato PDF",
        "eggTracking": "Seguimiento de huevos e incubación (temperatura, humedad, fechas previstas)",
        "genetics": "Calculadora genética y predicciones morfológicas",
        "pairing": "Gestión de emparejamientos y notas",
        "pedigree": "Árbol genealógico y exportación a PDF",
        "snakes": "Reptiles y puestas ilimitados"
      },
      "popular": "Más Popular",
      "price": "9,99 €",
      "title": "Profesional",
      "yearlyDuration": " / anual",
      "yearlyPrice": "99 €",
      "yearlySavings": "2 meses gratis frente a mensual"
    },
    "save2Months": "Ahorra 2 meses",
    "starter": {
      "cta": "Comenzar ahora",
      "duration": "",
      "features": {
        "photos": "Almacenamiento de fotos",
        "snakes": "Hasta 30 reptiles",
        "tracking": "Seguimiento básico de eventos"
      },
      "price": "Gratis",
      "title": "Principiante"
    },
    "subtitle": "Elige el plan que se ajuste al tamaño de tu colección",
    "title": "Precios Simples y Transparentes",
    "yearly": "Anual"
  },
  "script": "script",
  "settings": {
    "title": "Configuración",
    "tabs": {
      "profile": "Perfil",
      "family": "Familia y Cría",
      "notifications": "Notificaciones",
      "language": "Idioma",
      "subscription": "Suscripción",
      "security": "Seguridad"
    },
    "errors": {
      "push_permission_denied": "Permiso de notificaciones denegado",
      "save_error": "Error al guardar",
      "delete_error": "Error al eliminar la cuenta",
      "portal_error": "No puedo acceder al portal de facturación."
    },
    "billing": {
      "checking_title": "Verificando...",
      "checking_desc": "Estamos confirmando su pago seguro.",
      "success_title": "¡Suscripción activada!",
      "success_desc": "Su cuenta ha sido actualizada. Gracias por su confianza.",
      "cancel_title": "Pago cancelado",
      "cancel_desc": "No se realizó ningún cargo.",
      "failed_title": "Pago fallido",
      "failed_desc": "Ocurrió un error. Por favor inténtelo de nuevo."
    },
    "profile": {
      "avatar_alt": "Avatar",
      "image_title": "Foto de perfil",
      "image_desc": "Esta foto se mostrará en su perfil público y en la aplicación.",
      "change_photo": "Cambiar foto",
      "name_label": "Nombre para mostrar",
      "name_placeholder": "Su nombre",
      "email_label": "Dirección de correo",
      "email_placeholder": "su@email.com"
    },
    "notifications": {
      "time_label": "Hora del recordatorio",
      "time_desc": "¿A qué hora desea recibir sus notificaciones diarias?",
      "feeding_reminders": "Recordatorios de alimentación",
      "receive_alerts": "Recibir alertas para {{type}}",
      "types": {
        "feedingReminders": "Recordatorios de alimentación",
        "shedReminders": "Seguimiento de mudas",
        "vetReminders": "Citas veterinarias",
        "healthAlerts": "Alertas de salud",
        "emailNotifications": "Correos resumen"
      }
    },
    "language": {
      "language_selector": "Idioma:",
      "select_label": "Idioma de la interfaz"
    },
    "subscription": {
      "current_plan_label": "Su plan actual",
      "plan_free": "Gratuito",
      "plan_pro": "Pro",
      "plan_pro_monthly": "Pro (Mensual)",
      "plan_pro_yearly": "Pro (Anual)",
      "pro_badge": "Miembro Pro",
      "free_badge": "Miembro Gratuito",
      "upsell_text": "Pase a la versión Pro para desbloquear todas las funciones ilimitadas.",
      "upgrade_button": "Hacerse Premium",
      "manage_button": "Administrar suscripción",
      "manage_desc": "Actualice su método de pago, cancele o cambie su plan."
    },
    "security": {
      "password_title": "Cambiar contraseña",
      "password_desc": "Actualice su contraseña regularmente para asegurar su cuenta.",
      "password_button": "Modificar",
      "delete_title": "Eliminar cuenta",
      "delete_warning": "Esta acción es irreversible. Todos sus datos (reptiles, seguimientos, fotos) se eliminarán permanentemente.",
      "delete_confirm": "¿Está seguro de que desea eliminar su cuenta permanentemente?",
      "delete_button": "Eliminar mi cuenta",
      "deleting": "Eliminando..."
    },
    "changePassword": "Cambiar contraseña",
    "currentPassword": "Contraseña actual",
    "newPassword": "Nueva contraseña",
    "confirmNewPassword": "Confirmar nueva contraseña",
    "updatePasswordButton": "Actualizar contraseña",
    "passwordMismatch": "Las contraseñas no coinciden.",
    "passwordTooShort": "La contraseña debe tener al menos 8 caracteres.",
    "passwordUpdateSuccess": "Contraseña actualizada con éxito.",
    "passwordUpdateError": "Error al actualizar. Verifica tu contraseña actual."
  },
  "sex": {
    "female": "Hembra",
    "male": "Macho",
    "unknown": "Desconocido"
  },
  "snake": {
    "transfer": {
      "button": "Transferir",
      "title": "Transferir {{name}}",
      "subtitle": "Mueve este reptil a una familia o entrégaselo a otro usuario.",
      "to_family": "Transferir a una familia",
      "to_family_help": "El reptil desaparecerá de tu espacio personal y será visible en el espacio familiar.",
      "choose_family": "Elegir una familia...",
      "confirm_family": "Transferir a la familia",
      "already_in_family": "Este reptil ya está vinculado a esta familia.",
      "no_families": "No tienes ninguna familia disponible para esta transferencia.",
      "confirm_personal": "Volver a mi espacio personal",
      "personal_success": "El reptil ha vuelto a tu espacio personal.",
      "family_success": "El reptil ha sido transferido a la familia.",
      "to_user": "Dar a un usuario",
      "to_user_help": "El nuevo usuario se convertirá en el propietario del reptil. Perderás el acceso a su ficha.",
      "user_placeholder": "Email o nombre de usuario...",
      "confirm_user_button": "Dar el reptil",
      "confirm_user": "Este reptil será entregado a otro usuario. Perderás el acceso. ¿Continuar?",
      "user_warning": "Atención: esta acción elimina el reptil de tu cuenta.",
      "user_success": "El reptil ha sido transferido correctamente.",
      "in_progress": "Transferencia en curso...",
      "error": "Error durante la transferencia."
    },
    "upload_first": "Importar una foto",
    "photos": "Fotos",
    "photo_gallery": "Galería de Fotos",
    "add_photo": "Añadir",
    "no_photos": "Sin fotos",
    "no_photos_desc": "Agrega eventos con fotos para llenar la galería.",
    "profile_pic": "Foto de perfil",
    "locked_title": "Perfil Bloqueado",
    "locked_desc": "Este reptil excede el límite de tu plan gratuito. Los últimos reptiles añadidos están bloqueados. Hazte Premium para acceder.",
    "addTitle": "Añadir reptil",
    "edit": "Editar",
    "editTitle": "Editar perfil",
    "edit_title": "Editar perfil",
    "deleteTitle": "Eliminar {{name}}",
    "not_found": "Reptil no encontrado.",
    "no_photo": "Sin foto disponible",
    "noPhoto": "Sin foto disponible",
    "qr_code": "Código QR",
    "export_pdf": "Exportar PDF",
    "exportPDF": "Exportar a PDF",
    "maintenance_title": "Mantenimiento y Recordatorios",
    "feeding_interval_label": "Frecuencia de alimentación",
    "feedingIntervalTitle": "Intervalo de alimentación",
    "feeding_interval_placeholder": "Ej: 7",
    "feeding_interval_help": "Días entre comidas. Dejar vacío para desactivar.",
    "feeding_interval_title": "Frecuencia de Alimentación",
    "avg_feeding_interval_label": "Intervalo medio:",
    "avgFeedingIntervalLabel": "Intervalo medio:",
    "avgShedCycleLabel": "Ciclo medio:",
    "feedingSchedule": "Horario de Alimentación",
    "status": {
      "late_feeding": "Alimentación atrasada",
      "next_feeding": "Próxima Comida",
      "feed_now": "Alimentar",
      "feed_me": "Alimentar",
      "next_shed_prediction": "Predicción de Muda",
      "shed_late": "Retraso probable (~{{diff}}d)",
      "shed_in": "En unos {{diff}} días",
      "next_vet": "Cita Veterinaria",
      "in_days": "En {{count}} días",
      "days_late": "{{count}} días de retraso"
    },
    "overview": "Resumen",
    "events": "Eventos",
    "analytics": "Análisis",
    "recent_activity": "Actividad Reciente",
    "recentActivity": "Actividad Reciente",
    "event_history": "Historial Completo",
    "eventHistory": "Historial de eventos",
    "health_indicators": "Indicadores de Salud",
    "healthIndicators": "Indicadores de Salud",
    "weight_trend": "Tendencia de Peso",
    "weightTrend": "Tendencia de Peso",
    "length_evolution": "Crecimiento (Longitud)",
    "lengthEvolution": "Evolución de longitud",
    "weight_and_feeding": "Peso y Alimentación",
    "weightAndFeeding": "Peso y Alimentación",
    "growthRate": "Tasa de Crecimiento",
    "growthTitle": "Crecimiento",
    "growthTrend": "Tendencia de crecimiento: Saludable",
    "last_feeding_label": "Última comida:",
    "lastFeeding": "Última comida:",
    "lastFeedingLabel": "Última alimentación:",
    "last_shed_label": "Última muda:",
    "lastShedLabel": "Última muda",
    "nextShedEstimate": "Próxima muda estimada en {{days}} días",
    "daysAfterPrevious": "{{days}} días después de la anterior",
    "name": "Nombre",
    "species": "Especie",
    "morph": "Fase",
    "age": "Edad",
    "years": "años",
    "yearsOld": "{{count}} años",
    "yearsOld_one": "{{count}} año",
    "yearsOld_other": "{{count}} años",
    "weight": "Peso",
    "currentWeight": "Peso actual:",
    "initialWeight": "Peso inicial:",
    "weightGain": "Ganancia de peso: +30g este mes",
    "totalGain": "Ganancia total:",
    "length": "Longitud",
    "sex": {
      "male": "Macho",
      "female": "Hembra",
      "unknown": "Desconocido"
    },
    "sexe": "Sexo",
    "birth_date": "Fecha de nacimiento",
    "birthDate": "Fecha de nacimiento",
    "notes": "Notas",
    "days": "días",
    "read_only_badge": "Solo Lectura",
    "readOnlyBadge": "Solo Lectura",
    "read_only_tip": "Este reptil está archivado o no se puede modificar.",
    "read_only_cannot_modify": "Imposible modificar un reptil en solo lectura.",
    "archived": "Este reptil está archivado.",
    "readonly_until": "Solo lectura hasta el {{date}}",
    "readonlyUntil": "Solo lectura hasta el {{date}}.",
    "restore": "Restaurar",
    "archive_30d_title": "Archivar (30 días)",
    "archive30dTitle": "Archivar 30 días (recomendado)",
    "archive_readonly_info": "Pasa a solo lectura. Se puede restaurar.",
    "archiveReadOnlyInfo": "El reptil permanece visible en modo solo lectura. Puedes restaurarlo en cualquier momento.",
    "permanent_delete_title": "Eliminación definitiva",
    "permanentDeleteTitle": "Eliminar definitivamente",
    "permanent_delete_warning": "Irreversible. Se perderán todos los datos.",
    "permanentDeleteWarning": "Acción irreversible: se eliminarán todos los datos y eventos asociados.",
    "delete_confirm": "¿Seguro que quieres eliminar definitivamente este reptil?",
    "deleteConfirm": "¿Eliminar definitivamente este reptil y TODO su historial?",
    "delete_error": "Error al eliminar",
    "deleteError": "Error al eliminar el reptil.",
    "feedings": "Comidas",
    "totalFeedingsLabel": "Total comidas:",
    "sheds": "Mudas",
    "totalShedsLabel": "Total mudas:",
    "sheddingHistoryTitle": "Historial de mudas",
    "vet_visits": "Veterinario",
    "vetVisits": "Visitas Veterinarias",
    "totalVetVisitsLabel": "Visitas al veterinario:",
    "meals": "Comidas",
    "totalEventsLabel": "Total eventos:",
    "health": {
      "feeding": "Alimentación",
      "sheds": "Muda",
      "growth": "Crecimiento",
      "overall": "Global",
      "help_feeding": "Basado en la regularidad de las comidas respecto a tu objetivo.",
      "help_sheds": "Basado en la regularidad de los ciclos de muda.",
      "help_growth": "Evolución del peso desde el nacimiento/adquisición.",
      "help_overall": "Media ponderada de los indicadores vitales.",
      "help": {
        "feeding": "Basado en el intervalo medio de comidas: 7 días equivale al 100%. Intervalos más largos reducen la puntuación.",
        "growth": "Cambio porcentual entre el primer y el último peso.",
        "overall": "Media simple de las tres puntuaciones.",
        "sheds": "100% si el intervalo medio de muda es inferior a 60 días. Más allá, la puntuación disminuye progresivamente."
      }
    },
    "pdf": {
      "kpis": "Indicadores Clave",
      "details": "Detalles Técnicos"
    },
    "metric": "Métrica",
    "value": "Valor",
    "field": "Campo",
    "fields": {
      "birthDate": "Fecha de nacimiento",
      "imageUrl": "URL de la imagen",
      "length": "Longitud (cm)",
      "morph": "Fase",
      "name": "Nombre",
      "sex": "Sexo",
      "species": "Especie",
      "weight": "Peso (g)"
    },
    "placeholders": {
      "imageUrl": "https://...",
      "length": "ej: 120",
      "morph": "ej: Pastel",
      "name": "ej: Luna",
      "species": "ej: Python regius",
      "weight": "ej: 1200"
    },
    "profile": "Perfil",
    "progression": "Progreso:",
    "editPhoto": "Editar",
    "statsTitle": "Estadísticas",
    "tour": {
      "health_title": "Indicadores de salud",
      "healthTitle": "Indicadores de salud",
      "health_text": "Resumen rápido de la regularidad de alimentación, mudas y tendencia de peso.",
      "healthText": "Resumen rápido de la regularidad de alimentación, mudas y tendencia de peso. Pasa el ratón sobre el ? para saber cómo se calcula.",
      "weight_title": "Tendencia de peso",
      "weightTitle": "Tendencia de peso",
      "weight_text": "Tu gráfico de peso. Sigue el crecimiento visualmente.",
      "weightText": "Tu gráfico de peso. La puntuación de crecimiento compara el primer y último peso.",
      "events_title": "Historial de eventos",
      "eventsTitle": "Historial de eventos",
      "events_text": "Consulta todos los eventos aquí (Comidas, Mudas, Cuidados...).",
      "eventsText": "Consulta todos los eventos aquí. Haz clic en un evento para editarlo o eliminarlo.",
      "add_title": "Añadir evento",
      "addTitle": "Añadir evento",
      "add_text": "Usa este botón para registrar rápidamente una acción.",
      "addText": "Usa 'Añadir evento' para registrar comidas, mudas, visitas al veterinario, etc."
    }
  },
  "testimonials": {
    "testimonial1": "ReptiNode ha revolucionado cómo rastrea mi colección. Los horarios de alimentación y el monitoreo de salud son invaluables.",
    "testimonial2": "Las características de análisis me ayudan a optimizar horarios de alimentación y rastrear patrones de crecimiento como nunca antes.",
    "testimonial3": "Como veterinario, los registros de salud detallados y las características de exportación facilitan mucho mi trabajo.",
    "title": "Confiado por Entusiastas de Reptiles"
  },
  "units": {
    "cm": " cm",
    "days": "días",
    "g": " g",
    "grams": " g"
  },
  "upgrade": {
    "choosePlan": "Elegir este plan",
    "description": "Mejora tu plan para seguir añadiendo datos y acceder a todas las funciones premium.",
    "guarantee": "Garantía de devolución de 30 días. Cancela cuando quieras.",
    "limitReached": "Has alcanzado el límite del plan gratuito",
    "processing": "Procesando…",
    "unlockFull": "Desbloquea todo el potencial"
  },
  "featuresPage": {
    "seo": {
      "title": "Funcionalidades de Gestión de Cría de Reptiles | ReptiNode",
      "description": "Descubra herramientas completas para herpetólogos: seguimiento de peso, generación de códigos QR, historial médico, planificación de alimentación y gestión genética."
    },
    "hero": {
      "badge": "Resumen completo",
      "title_part1": "La plataforma de gestión completa para",
      "title_highlight": "el criador moderno",
      "subtitle": "Adiós a los cuadernos perdidos y archivos Excel desordenados. ReptiNode centraliza todos los datos vitales de sus reptiles en una interfaz fluida y segura."
    },
    "weight": {
      "title": "Seguimiento del crecimiento y biometría",
      "description": "La curva de peso es el principal indicador de salud de un reptil. Nuestro módulo le permite visualizar instantáneamente la evolución de sus animales.",
      "list": {
        "1": "Gráficos interactivos automáticos",
        "2": "Detección de pérdida de peso anormal",
        "3": "Historial de pesaje ilimitado",
        "4": "Comparación con los promedios de la especie"
      },
      "graph_title": "Peso - Pitón Bola #04",
      "graph_subtitle": "+12% vs mes pasado"
    },
    "qrcode": {
      "title": "Etiquetas de códigos QR inteligentes",
      "description": "No busque más cuándo comió tal o cual reptil. Pegue un código QR en cada terrario o caja de cría (rack) para un acceso instantáneo.",
      "list": {
        "1": "Generación de PDF listo para imprimir",
        "2": "Escaneo rápido con cámara desde el móvil",
        "3": "Actualización de la ficha sin tocar al animal",
        "4": "Modo 'Rack' para escaneo en cadena"
      },
      "scan_me": "¡Escanéame!"
    },
    "feeding": {
      "title": "Gestión de comidas y recordatorios",
      "description": "Gestione el ciclo de alimentación de cientos de reptiles sin errores. ReptiNode calcula las próximas comidas según la frecuencia definida.",
      "list": {
        "1": "Calendario de alimentación inteligente",
        "2": "Gestión de stock de presas (congelado/vivo)",
        "3": "Seguimiento de rechazos y ayunos",
        "4": "Notificaciones de recordatorio el día indicado"
      },
      "card_scheduled_title": "Alimentación programada hoy",
      "card_scheduled_desc": "5 serpientes para alimentar (Rata M)",
      "card_refusal_title": "Rechazo de comida - Gecko #01",
      "card_refusal_desc": "Anotado hace 2 días"
    },
    "health_genetics": {
      "title": "Salud Veterinaria y Genética",
      "subtitle": "Para los criadores profesionales, la trazabilidad es obligatoria. Simplificamos sus registros y planes de reproducción.",
      "medical_title": "Seguimiento Médico",
      "medical_desc": "Anote mudas, tratamientos, visitas al veterinario y observaciones diarias. Exporte el historial en un clic para el veterinario.",
      "genetic_title": "Calculadora Genética",
      "genetic_desc": "Planifique sus apareamientos. Vincule padres con hijos para generar automáticamente árboles genealógicos y rastrear mutaciones."
    },
    "cta": {
      "title": "¿Listo para modernizar su criadero?",
      "subtitle": "Únase a los criadores que han abandonado el papel por ReptiNode. Totalmente gratis.",
      "button": "¡Empezar ahora!"
    }
  },
  "surveyWidget": {
    "default_title": "Tu opinión",
    "thanks": "¡Gracias por tu opinión! 🙏",
    "later": "Más tarde",
    "send": "Enviar",
    "hint_nps": "Puntuación: {{score}}/10 — ¿un comentario (opcional)?",
    "hint_csat": "Puntuación: {{score}}/5 — ¿un comentario (opcional)?",
    "ph_text": "Tu respuesta…",
    "ph_optional": "Cuéntanos más (opcional)…"
  },
  "maintenance": {
    "title": "Mantenimiento en curso",
    "defaultMessage": "El servicio no está disponible temporalmente, volveremos muy pronto."
  },
  "qrx": {
    "shareSettings": "Ajustes del enlace público",
    "visibility": "Visibilidad",
    "visUnlisted": "No listado (accesible solo mediante el enlace)",
    "visPublic": "Público (indexable)",
    "expiration": "Caducidad del enlace (opcional)",
    "password": "Contraseña (opcional)",
    "passwordSetPlaceholder": "•••••• (definida)",
    "passwordNone": "Ninguna",
    "define": "Definir",
    "remove": "Quitar",
    "publicFieldsLabel": "Información mostrada públicamente",
    "fieldWeight": "Peso",
    "fieldLength": "Tamaño",
    "fieldLocality": "Localidad",
    "fieldNotes": "Notas",
    "fieldPrice": "Precio",
    "fieldsHint": "Haz clic para ocultar/mostrar. Tachado = oculto en la ficha pública.",
    "scansTotal": "Escaneos totales: {{count}}",
    "syncUpdating": "Actualizando…",
    "syncRetry": "Reintentar",
    "publicLiveOn": "Esta ficha es pública: el QR es escaneable.",
    "makePrivate": "Hacer privada",
    "activatePublic": "Activa el perfil público para que el QR sea accesible.",
    "saleTitle": "Venta (opcional)",
    "saleNotForSale": "No en venta",
    "saleForSale": "En venta",
    "saleReserved": "Reservado",
    "saleSold": "Vendido",
    "salePrice": "Precio",
    "saleContact": "Contacto del vendedor (email o enlace)",
    "saleMorphmarket": "Enlace del anuncio de MorphMarket (opcional)",
    "exportMM": "Exportar toda mi lista «en venta» a MorphMarket (CSV)",
    "exportMMHint": "El archivo se sube a MorphMarket (Bulk Import). Solo cuentas PRO.",
    "exportMMEmpty": "Ningún reptil marcado como «en venta» o «reservado» para exportar.",
    "exportMMError": "Exportación no disponible (solo cuentas PRO).",
    "actionTitle": "Acción al escanear",
    "actionView": "Ver la ficha",
    "actionAddEvent": "Añadir un evento",
    "actionFeed": "Alimentar directamente",
    "actionWeigh": "Pesar directamente",
    "actionHint": "«Alimentar» / «Pesar» abren directamente el formulario rellenado tras iniciar sesión.",
    "qualityTitle": "Calidad / resistencia del QR",
    "qualBasic": "Básica",
    "qualStandard": "Estándar",
    "qualSolid": "Sólida",
    "qualMax": "Máx. (terrario)",
    "qualityHint": "Nivel de corrección de errores: «Máx.» sigue siendo legible aunque esté parcialmente dañado/húmedo. Para un terrario, imprime en vinilo/plastificado resistente al agua.",
    "transferTitle": "Transferencia / venta",
    "transferDesc": "Genera un QR para entregar al comprador: al escanearlo, recibe este reptil y su historial en su cuenta.",
    "transferGenerate": "Generar un QR de transferencia",
    "transferCopy": "Copiar enlace",
    "transferCancel": "Cancelar",
    "transferWarn": "Válido 30 días. La transferencia es definitiva una vez aceptada.",
    "photosTitle": "Galería de fotos",
    "photosAdd": "Añadir",
    "photosEmpty": "Sin fotos. Añade algunas para enriquecer la ficha pública.",
    "photosUploadError": "Error al subir",
    "photosPublicHint": "Estas fotos aparecen en la galería de la ficha pública (QR compartido).",
    "bulkTitle": "Plancha de códigos QR para imprimir",
    "bulkLayout": "Disposición",
    "bulkLayout2x4": "2 × 4 (etiquetas grandes)",
    "bulkLayout3x6": "3 × 6 (estándar)",
    "bulkLayout4x8": "4 × 8 (Avery / pequeñas)",
    "bulkLinkType": "Tipo de enlace",
    "bulkLinkPublic": "Público (ficha compartible)",
    "bulkLinkInternal": "Interno (app, requiere inicio de sesión)",
    "bulkReptiles": "Reptiles",
    "bulkSelectAll": "Seleccionar todo",
    "bulkDeselectAll": "Deseleccionar todo",
    "bulkInternalNote": "enlace interno (no público)",
    "bulkCancel": "Cancelar",
    "bulkGenerate": "Generar el PDF",
    "bulkError": "Error al generar el PDF",
    "scannerTitle": "Escanear un QR de ReptiNode",
    "scannerUnsupported": "Tu navegador no admite el escáner integrado. Usa la cámara de tu teléfono: abrirá automáticamente el enlace del QR.",
    "scannerDenied": "Acceso a la cámara denegado.",
    "scannerError": "No se puede abrir la cámara.",
    "scannerAim": "Apunta al código QR de una etiqueta ReptiNode.",
    "scannerDetected": "QR detectado: {{value}}",
    "btnScan": "Escanear un QR",
    "btnEnclosures": "Recintos y racks",
    "btnBulk": "Plancha de códigos QR para imprimir"
  },
  "enclosures": {
    "unavailable": "Recinto no disponible",
    "occupants": "{{count}} ocupante(s)",
    "noPublic": "Ningún reptil público en este recinto.",
    "title": "Recintos y racks",
    "backDashboard": "Panel",
    "name": "Nombre",
    "namePlaceholder": "Terrario A1",
    "type": "Tipo",
    "typeTerrarium": "Terrario",
    "typeRack": "Rack",
    "typeBin": "Caja",
    "typeRoom": "Sala",
    "create": "Crear",
    "empty": "Ningún recinto. Crea uno para generar un QR por recinto/rack.",
    "reptileCount": "{{count}} reptil(es)",
    "qrActive": "QR activo",
    "back": "Volver",
    "deleteConfirm": "¿Eliminar este recinto? Los reptiles se desvincularán (no se eliminan).",
    "qrTitle": "QR del recinto",
    "visPrivate": "Privado (sin página pública)",
    "visUnlisted": "No listado (accesible mediante el enlace)",
    "visPublic": "Público",
    "qrHint": "Haz el recinto no listado o público para generar un QR.",
    "view": "Ver",
    "occupantsTitle": "Ocupantes",
    "removeOccupant": "Quitar",
    "noOccupants": "Ningún reptil en este recinto.",
    "addReptile": "Añadir un reptil",
    "choose": "Elegir…",
    "copyLink": "Copiar enlace",
    "single": "Recinto"
  },
  "claim": {
    "success": "¡Transferencia exitosa!",
    "successDesc": "{{name}} ya forma parte de tu colección.",
    "viewSheet": "Ver la ficha",
    "unavailable": "Transferencia no disponible",
    "title": "Transferencia de propiedad",
    "currentOwner": "Propietario actual: {{owner}}",
    "explain": "Al aceptar, este reptil y su historial se transferirán a tu cuenta.",
    "accept": "Aceptar la transferencia",
    "loginToAccept": "Inicia sesión para aceptar",
    "error": "Transferencia fallida",
    "notFound": "Transferencia no encontrada"
  },
  "snakeBadges": {
    "public": "Público",
    "unlisted": "Enlace",
    "forSale": "En venta",
    "reserved": "Reservado",
    "sold": "Vendido",
    "publicTitle": "Perfil público",
    "unlistedTitle": "Accesible mediante el enlace"
  }
}
