{
  "cookies": {
    "footerButton": "Cookie preferences",
    "banner": {
      "text": "We use cookies and local storage to run the site, remember your preferences and measure our audience anonymously. With your consent, we also evaluate our ads. You can accept all, reject all or choose.",
      "customize": "Customize",
      "acceptAll": "Accept all",
      "rejectAll": "Reject all"
    },
    "modal": {
      "title": "Cookie preferences",
      "intro": "We respect your privacy. Necessary, preference and anonymous audience-measurement cookies are always active. Only advertising requires your consent.",
      "alwaysActive": "Always active",
      "viewCookies": "View cookies",
      "save": "Save my choices",
      "acceptAll": "Accept all",
      "rejectAll": "Reject all",
      "moreInfo": "More information in our",
      "privacyLink": "privacy policy",
      "close": "Close"
    },
    "categories": {
      "necessary": {
        "title": "Strictly necessary",
        "description": "Essential for the site to work (login, security, payment). These cannot be disabled.",
        "items": [
          {
            "name": "token",
            "provider": "ReptiNode",
            "duration": "Session / 7 days",
            "purpose": "Keeps your session logged in (authentication token)."
          },
          {
            "name": "user",
            "provider": "ReptiNode",
            "duration": "Session / 7 days",
            "purpose": "Caches your profile to avoid reloading it on every page."
          },
          {
            "name": "rn_cookie_consent",
            "provider": "ReptiNode",
            "duration": "6 months",
            "purpose": "Stores your cookie preferences."
          },
          {
            "name": "__stripe_mid / __stripe_sid",
            "provider": "Stripe",
            "duration": "1 year / 30 min",
            "purpose": "Secures payments and prevents fraud."
          },
          {
            "name": "Service Worker (PWA)",
            "provider": "ReptiNode",
            "duration": "Persistent",
            "purpose": "Enables app installation and offline mode."
          }
        ]
      },
      "functional": {
        "title": "Functional / Preferences",
        "description": "Remember your usage preferences (language, display, mini-game progress). First-party ReptiNode data, with no advertising cookie or tracking.",
        "items": [
          {
            "name": "i18nextLng",
            "provider": "ReptiNode",
            "duration": "Persistent",
            "purpose": "Remembers your preferred language."
          },
          {
            "name": "dashboard_context",
            "provider": "ReptiNode",
            "duration": "Persistent",
            "purpose": "Remembers your chosen dashboard view (personal or shared)."
          },
          {
            "name": "android-prompt-dismissed / ios-prompt-dismissed",
            "provider": "ReptiNode",
            "duration": "Persistent",
            "purpose": "Avoids re-showing the app install prompt once you've dismissed it."
          },
          {
            "name": "snake_archive_until_…",
            "provider": "ReptiNode",
            "duration": "Variable",
            "purpose": "Temporarily snoozes a reminder for a given animal."
          },
          {
            "name": "reptinode_achievements, reptinode_biopoints, reptinode_collection, reptinode_consumables, reptinode_hatched_count, reptinode_prestige, reptinode_upgrades",
            "provider": "ReptiNode",
            "duration": "Persistent",
            "purpose": "Saves your bonus mini-game progress (achievements, points, collection)."
          }
        ]
      },
      "analytics": {
        "title": "Audience measurement",
        "description": "Traffic statistics via a self-hosted, cookieless tool. Anonymous, aggregated data, never shared, that cannot identify you.",
        "items": [
          {
            "name": "analytics.reptinode.fr",
            "provider": "ReptiNode (self-hosted)",
            "duration": "No cookie",
            "purpose": "Anonymous, aggregated traffic statistics (page views, source). No cookie, no personal data, no third-party sharing."
          }
        ]
      },
      "marketing": {
        "title": "Marketing & advertising",
        "description": "Let us measure the effectiveness of our Facebook & Instagram ads and show you relevant content. Disabled until you give your consent.",
        "items": [
          {
            "name": "_fbp",
            "provider": "Meta (Facebook)",
            "duration": "3 months",
            "purpose": "Measures ad effectiveness and retargeting."
          },
          {
            "name": "_fbc",
            "provider": "Meta (Facebook)",
            "duration": "3 months",
            "purpose": "Attributes visits coming from a click on a Meta ad."
          },
          {
            "name": "Conversions API (CAPI)",
            "provider": "Meta (Facebook)",
            "duration": "—",
            "purpose": "Sends conversions (signup, subscription) to Meta server-side."
          }
        ]
      }
    }
  },
  "addSnake": {
    "birthDateRequired": "Valid birth date required",
    "add": "Add reptile",
    "addPhoto": "Add photo",
    "added": "Added!",
    "adding": "Adding...",
    "birthDate": "Birth date",
    "birthDateInvalid": "Invalid date format.",
    "birthDateFuture": "Birth date cannot be in the future.",
    "cancel": "Cancel",
    "changePhoto": "Change photo",
    "edit_subtitle": "Edit information for {{name}}.",
    "familyRequired": "Choose a family or add the reptile to your personal space.",
    "female": "Female",
    "feedingIntervalInvalid": "Feeding frequency must be an integer greater than 0.",
    "imageSizeError": "The image must not exceed {{max}} MB.",
    "imageTypeError": "The selected file must be an image.",
    "imageUrl": "Image URL",
    "imageUrlPlaceholder": "",
    "length": "Length (cm)",
    "lengthInvalid": "Length must be greater than 0.",
    "locality": "Locality",
    "localityPlaceholder": "e.g. Biak",
    "locus": "Locus / Loci (comma-separated)",
    "locusPlaceholder": "e.g. Mojave, Pied...",
    "male": "Male",
    "morph": "Morph",
    "morphPlaceholder": "e.g. Pastel",
    "name": "Name",
    "namePlaceholder": "e.g. Luna",
    "nameRequired": "Name is required.",
    "noPhoto": "No photo",
    "notes": "Notes",
    "notesPlaceholder": "Additional notes about this reptile...",
    "photo": "Reptile photo",
    "photoHelp": "JPG, PNG or WebP. {{max}} MB max.",
    "photo_hint": "Click to change",
    "removePhoto": "Remove photo",
    "sex": "Sex",
    "species": "Species",
    "speciesPlaceholder": "e.g. Python regius",
    "speciesRequired": "Species is required.",
    "subtitle": "Fill in the essential information now. You can complete the profile later.",
    "title": "Add a new reptile",
    "traits": "Traits / Phenotypes",
    "traitsPlaceholder": "e.g. Red, Hypo...",
    "unknown": "Unknown",
    "unknownSpeciesHelp": "This species is not in the catalog, but you can still add it.",
    "weight": "Weight (grams)",
    "weightInvalid": "Weight must be greater than 0.",
    "destination": {
      "title": "Where should this reptile be added?",
      "personal": "My personal space",
      "personal_help": "Visible only in your personal list.",
      "family": "A family",
      "family_help": "The reptile will be created and then transferred to the selected family.",
      "family_label": "Target family",
      "choose_family": "Choose a family...",
      "family_selected": "Will be visible in {{name}}.",
      "summary_personal": "Added to your personal space.",
      "summary_family": "Added to family {{name}}."
    }
  },
  "inventory": {
    "nav": "Prey",
    "title": "Prey inventory",
    "subtitle": "Track your prey stock; feedings can draw it down automatically.",
    "add_item": "Add prey",
    "empty_title": "No prey tracked yet",
    "empty_desc": "Add a prey line (type + size) to start tracking your stock and get low-stock alerts.",
    "error": "Unable to load the inventory.",
    "low_stock_banner": "{{count}} line(s) at or below their low-stock threshold.",
    "low_badge": "Low",
    "unit_weight": "Unit",
    "threshold": "Threshold",
    "unit_cost": "Cost",
    "stock": "Stock",
    "history": "History",
    "confirm_delete": "Delete this prey line?",
    "toast": { "created": "Prey line added", "updated": "Prey line updated", "deleted": "Prey line deleted", "stock_updated": "Stock updated", "error": "Something went wrong" },
    "modal": { "title_create": "Add prey line", "title_edit": "Edit prey line", "prey_type": "Prey type", "prey_size": "Size", "any_size": "Any / n/a", "initial_qty": "Initial quantity", "unit_weight": "Unit weight (g)", "threshold": "Low-stock threshold", "unit_cost": "Unit cost", "notes": "Notes" },
    "stock_modal": { "title": "Update stock", "add": "Add", "remove": "Remove", "amount": "Amount", "note": "Note", "current": "Current stock: {{count}}" },
    "movements_title": "Stock movements",
    "no_movements": "No movements yet.",
    "reasons": { "purchase": "Purchase", "consumption": "Feeding", "adjustment": "Adjustment" },
    "filter": { "all_types": "All types", "all_sizes": "All sizes", "low_only": "Low stock only", "clear": "Clear", "count": "{{count}} shown", "none": "No prey lines match your filters." }
  },
  "health_growth_analytics": {
    "title": "Health & growth analytics",
    "nav": "Analytics",
    "back": "Dashboard",
    "subtitle": "Health, growth and feeding across your whole collection.",
    "refresh": "Refresh",
    "retry": "Retry",
    "error": "Unable to load analytics.",
    "empty_title": "No data yet",
    "empty_desc": "Add reptiles and log feedings and weigh-ins to unlock your health & growth analytics.",
    "go_dashboard": "Go to dashboard",
    "kpi": {
      "reptiles": "Reptiles",
      "avg_health": "Avg. health",
      "alerts": "Active alerts",
      "critical": "{{count}} critical",
      "feeding": "Feeding rate",
      "tracked": "Weight tracked",
      "todo": "To do"
    },
    "feeding_trend": "Feeding acceptance",
    "accepted": "Accepted",
    "health_distribution": "Health distribution",
    "no_data": "Not enough data.",
    "attention": "Needs attention",
    "all_good": "Everything looks healthy 🎉",
    "growth_leaders": "Top growth (90 days)",
    "no_growth": "Not enough weigh-ins yet.",
    "all_reptiles": "All reptiles",
    "no_weight": "No weight",
    "generated_at": "Updated {{time}}",
    "alert_types": {
      "feeding_late": "Overdue feeding",
      "refusal_streak": "Repeated refusals",
      "recent_regurgitation": "Recent regurgitation",
      "weight_loss": "Weight loss",
      "shed_interval_long": "Overdue shed",
      "missing_recent_weight": "Weigh-in due"
    },
    "period": { "30": "30d", "90": "90d", "365": "1y", "all": "All" },
    "filters": { "all_species": "All species", "all_sexes": "All sexes", "all_enclosures": "All enclosures", "clear": "Clear" },
    "export": { "report_title": "Collection health report" },
    "pts": "pts",
    "todo": {
      "title": "To do today",
      "empty": "Nothing to do — everything is up to date 🎉",
      "feeding_overdue": "Feeding overdue by {{count}}d",
      "weigh_in_due": "Weigh-in due ({{count}}d)",
      "weigh_in_never": "No weigh-in recorded",
      "no_recent_log": "No log for {{count}}d",
      "no_log_never": "No event recorded"
    },
    "growth_chart": { "title": "Growth comparison", "no_data": "Select reptiles with at least two weigh-ins to compare their growth." },
    "sex": { "Male": "Male", "Female": "Female", "Unknown": "Unknown" },
    "columns": { "name": "Name", "species": "Species", "health": "Health", "weight": "Weight (g)", "delta": "Δ %", "alerts": "Alerts", "last_activity": "Last activity" },
    "health_levels": {
      "good": "Stable",
      "warning": "Watch",
      "danger": "Attention",
      "unknown": "Unknown"
    }
  },
  "notifications_bell": {
    "title": "Notifications",
    "empty": "No notifications",
    "mark_all_read": "Mark all read",
    "see_analytics": "View analytics",
    "loading": "Loading…",
    "open_aria": "Notifications",
    "unread_aria": "{{count}} unread",
    "delete": "Delete"
  },
  "reptile_stats_panel": {
    "common": {
      "empty_value": "—"
    },
    "units": {
      "g": "g",
      "mm": "mm",
      "percent": "%",
      "day_short": "d"
    },
    "loading": "Loading statistics...",
    "errors": {
      "load": "Unable to load statistics."
    },
    "header": {
      "title": "Reptile statistics",
      "subtitle": "Health, weight, meals, sheds and alerts based on the recorded history."
    },
    "health": {
      "score_label": "{{score}}/100 · {{label}}",
      "levels": {
        "good": "Stable tracking",
        "warning": "Needs monitoring",
        "danger": "Attention required",
        "unknown": "Insufficient data"
      },
      "reasons": {
        "feeding_tracked": "Meals tracked",
        "no_feeding": "No meals recorded",
        "weight_available": "Weight recorded",
        "missing_weight": "Weight missing",
        "refusal_streak": "{{count}} consecutive refusals",
        "no_refusal_streak": "No concerning refusal streak",
        "recent_regurgitation": "Recent regurgitation",
        "no_recent_regurgitation": "No recent regurgitation"
      }
    },
    "cards": {
      "current_weight": "Current weight",
      "last_meal": "Last meal",
      "next_meal": "Next meal",
      "last_shed": "Last shed",
      "next_feeding_late": "{{days}}d late",
      "average_short": "avg. {{days}}d"
    },
    "alerts": {
      "types": {
        "no_events": "No event has been recorded for this reptile.",
        "feeding_late": "The last consumed meal was {{days}} days ago. The expected rhythm is {{lateByDays}} days late.",
        "refusal_streak": "{{count}} consecutive refusals have been recorded.",
        "recent_regurgitation": "A regurgitation was recorded in the last 30 days.",
        "missing_recent_weight": "No recent weighing for {{days}} days.",
        "missing_weight": "No weight data available.",
        "weight_loss": "Weight decreased by {{percent}}% over the last 90 days.",
        "shed_interval_long": "The last shed was {{days}} days ago, above the observed average interval."
      }
    },
    "charts": {
      "not_enough_weight_data": "Not enough data to display a chart.",
      "weight_curve_aria": "Weight curve"
    },
    "sections": {
      "weight": {
        "title": "Weight trend",
        "min_max": "Min {{min}} · Max {{max}}"
      },
      "feeding": {
        "title": "Meals",
        "subtitle": "Regularity and acceptance."
      },
      "prey": {
        "title": "Prey",
        "common_type": "Common type",
        "common_size": "Common size",
        "average_weight": "Average weight",
        "prey_weight_ratio": "Prey/weight ratio"
      },
      "growth": {
        "title": "Growth",
        "current_length": "Current length",
        "variation": "Variation",
        "last_measure": "Last measurement",
        "points": "Points"
      },
      "health": {
        "title": "Health",
        "vet_visits": "Vet visits",
        "last_visit": "Last visit",
        "sheds": "Sheds",
        "events": "Events"
      },
      "activity": {
        "title": "Recent activity",
        "empty": "No recent activity."
      }
    },
    "feeding_breakdown": {
      "accepted": "Accepted",
      "partial": "Partial",
      "assisted": "Assisted",
      "refused": "Refusals",
      "regurgitated": "Regurgitated"
    },
    "feeding_status": {
      "accepted": "accepted",
      "refused": "refused",
      "partial": "partial",
      "regurgitated": "regurgitated",
      "assisted": "assisted"
    },
    "event_types": {
      "feeding": "Feeding",
      "shed": "Shed",
      "mue": "Shed",
      "vet_visit": "Vet visit",
      "vet": "Vet visit",
      "veterinary": "Vet visit",
      "handling": "Handling",
      "weight": "Weighing",
      "length": "Measurement",
      "pairing": "Pairing",
      "ovulation": "Ovulation",
      "clutch": "Clutch",
      "hatch": "Hatch",
      "birth": "Birth",
      "other": "Other"
    }
  },
  "landingpage": {
    "nav": {
      "features": "Features",
      "pricing": "Pricing",
      "faq": "FAQ",
      "updates": "Changelog",
      "login": "Login",
      "lang_code": "EN"
    },
    "hero": {
      "badge": "The #1 solution for breeders",
      "title_part1": "Manage your reptile breeding",
      "title_highlight": "with precision.",
      "subtitle": "Ditch paper notebooks and messy Excel files. ReptiNode centralizes tracking, health, genetics, and breeding in one modern interface.",
      "cta": "Start for free"
    },
    "hero_illustration": {
      "snake_name": "Banana Pied #05",
      "snake_species": "Python Regius",
      "status_active": "Active",
      "last_meal_label": "Last Feeding",
      "last_meal_time": "2d",
      "last_meal_food": "Rat 40g",
      "weight_label": "Weight",
      "weight_value": "485g",
      "history_title": "Recent History",
      "event_weight": "Weighed",
      "time_2h_ago": "2 hours ago",
      "event_ovulation": "Ovulation detected",
      "time_yesterday": "Yesterday",
      "qr_scan": "Quick Scan",
      "meal_validated": "Meal validated",
      "sync": "Instant sync"
    },
    "features": {
      "main_title": "Everything you need, in one place.",
      "main_subtitle": "Get an instant overview of your livestock. Centralise your data and make the right decisions with intelligent monitoring tools.",
      "card_medical": {
        "tag": "Essential",
        "title": "Complete Medical Record",
        "description": "Keep a permanent record of your reptiles' health. Note their meals, refusals, moulting, weight and veterinary treatments.",
        "feature_1": "Automatic reminders",
        "feature_2": "Weight charts"
      },
      "card_mobile": {
        "title": "Mobile & QR Mode",
        "description": "Generate QR Codes for your racks. Scan and log an action in just 2 seconds directly from your smartphone."
      },
      "card_genetic": {
        "title": "Genetic Calculator",
        "description": "Plan your projects. Our engine handles recessive genes, co-dominants, and complex combos."
      },
      "card_docs": {
        "title": "Documents & Breeding",
        "description": "Generate transfer certificates and care sheets in PDF. Track your incubations and hatch rates.",
        "example_1_title": "Clutch #12",
        "example_1_status": "Incubating",
        "example_2_title": "Transfer Cert.",
        "example_2_status": "PDF Ready"
      }
    },
    "pricing": {
      "main_title": "Transparent Pricing",
      "main_subtitle": "Start for free, scale as you grow.",
      "switch_monthly": "Monthly",
      "switch_yearly": "Yearly",
      "switch_discount": "-12%",
      "free_plan": {
        "title": "Discovery",
        "frequency": "/ lifetime",
        "description": "The essentials to start your passion and organize your first collection without constraints.",
        "feature_1": "Up to 30 Reptiles",
        "feature_2": "Complete Monitoring: Meals, Moults, Care, Weight & Size",
        "feature_3": "Dashboard: Reminders, Alerts & Charts",
        "feature_4": "Photo Gallery by reptile and by event",
        "cta": "Start now"
      },
      "pro_plan": {
        "recommended": "Recommended",
        "title": "Professional",
        "frequency": "/ month",
        "billed_yearly": "Billed {{price}}€ per year",
        "description": "Unlock the full power of the tool. For serious breeders who want to optimize their production.",
        "feature_1": "Unlimited Reptiles",
        "feature_2": "Advanced Genetic Calculator",
        "feature_3": "PDF Exports (Transfer, Care, etc.)",
        "feature_4": "QR Code Generation",
        "feature_5": "Breeding, Lineage, and Egg tracking",
        "cta": "Upgrade to Pro",
        "guarantee": "14-day money-back guarantee"
      }
    },
    "faq": {
      "title": "Frequently Asked Questions",
      "subtitle": "Everything you need to know to manage your breeding facility with peace of mind.",
      "q1": "How to manage a reptile breeding facility efficiently?",
      "r1": "Managing a reptile collection requires rigorous tracking of vital parameters: weight curves, feeding schedules, and breeding cycles. Using specialized software like ReptiNode allows you to centralize this data, replace paper logbooks, and ensure sanitary and legal compliance for your snakes and lizards.",
      "q2": "Why use reptile tracking software instead of a notebook?",
      "r2": "Unlike paper or Excel, reptile management software secures your data and automates tasks. It allows you to generate transferable husbandry records for sales, schedule reminders for feedings or vet visits, and access your animals' history via QR Code from anywhere.",
      "q3": "Do I need special hardware for the QR Codes?",
      "r3": "No, no investment is required. The application generates labels that you can print on a standard printer. Then, your smartphone camera is all you need to scan and interact with your animals.",
      "q4": "Is my data secure?",
      "r4": "Absolutely. Your data is encrypted and backed up daily on secure servers. You won't risk losing your history like you would with a lost paper notebook or a corrupted Excel file.",
      "q5": "Which reptiles can be managed (Ball Pythons, Geckos, Colubrids)?",
      "r5": "ReptiNode is designed for all types of reptiles. It is ideal for tracking snakes (Ball Pythons, Corn Snakes, Boas), lizards (Leopard Geckos, Bearded Dragons), and other exotic species. The records adapt to the specifics of each species (shedding, clutches, brumation).",
      "support_text": "Have more questions?",
      "support_link": "Chat with our support team"
    },
    "final_cta": {
      "badge": "Built by a breeder, for breeders 🐍",
      "title_part1": "Your reptiles deserve better",
      "title_highlight": "than an Excel file.",
      "description": "Secure your data, track animal growth, and manage your breeding projects. The all-in-one platform for modern herpetoculture.",
      "button": "Upgrade my reptiles' lives",
      "reassurance_1": "Free up to 30 reptiles",
      "reassurance_2": "Secure Cloud Data",
      "reassurance_3": "Web & Mobile App"
    },
    "footer": {
      "brand_description": "Leave nothing to chance. From weigh-in to hatching, the reference tool for demanding breeders.",
      "col_product_title": "Product",
      "col_legal_title": "Legal",
      "link_privacy": "Privacy Policy",
      "link_terms": "Terms of Service",
      "link_legal": "Legal Notice",
      "copyright_reserved": "All rights reserved.",
      "made_with_love_part1": "Made with",
      "made_with_love_part2": "in France."
    }
  },
  "suivi_nourrissage_reptiles": {
    "seo": {
      "title": "Reptile feeding tracking",
      "description": "ReptiNode helps you track your reptiles' feeding with a clear history, accepted or refused meals, weight records, and more reliable monitoring.",
      "structured_data_app_description": "Track your reptiles' feeding with a clear history, centralized events, weight records, refusals, and better control over feeding patterns."
    },
    "hero": {
      "badge": "Structured feeding tracking",
      "title_line_1": "Feeding tracking",
      "title_line_2": "for reptiles",
      "description": "Keep a clear history of meals, refusals, feeding patterns, and each reptile's progress in a tool that is more readable and more reliable than a simple note or spreadsheet.",
      "primary_cta": "Start tracking",
      "secondary_cta": "View features",
      "stats": {
        "history": {
          "value": "1",
          "label": "Feeding history for each reptile"
        },
        "forgotten_meals": {
          "value": "0",
          "label": "Missed or hard-to-review meals"
        },
        "clarity": {
          "value": "+ clearer",
          "label": "To track feeding patterns and refusals"
        }
      },
      "reassurance_1": "Chronological history per animal",
      "reassurance_2": "Refusals visible at a glance",
      "reassurance_3": "Automatically linked to weight"
    },
    "illustration": {
      "card_title": "Nyx · Female 2022",
      "card_subtitle": "Python regius · feeding tracking",
      "status": "Feeding confirmed",
      "last_meal_label": "Last meal",
      "last_meal_value": "3 days ago",
      "last_meal_meta": "rat pup",
      "next_check_label": "Next check",
      "next_check_value": "Tomorrow",
      "next_check_meta": "to monitor",
      "history_title": "Feeding history",
      "history_meal_accepted_title": "Meal accepted",
      "history_meal_accepted_time": "Friday · 19:14",
      "history_weight_recorded_title": "Weight recorded",
      "history_weight_recorded_time": "Thursday · 09:22",
      "history_scheduled_check_title": "Scheduled check",
      "history_scheduled_check_time": "Tomorrow · reminder active",
      "quick_access": "Quick access to the profile",
      "clear_rhythm_title": "Clear feeding routine",
      "clear_rhythm_text": "Fewer missed entries, more consistency",
      "rhythm_ok": "Rhythm OK",
      "metric_meals_label": "Meals 90d",
      "metric_refusals_label": "Refusals",
      "metric_pace_label": "Cycle",
      "calendar_title": "Calendar · 8 wks",
      "legend_eaten": "eaten",
      "legend_refused": "refused",
      "last_entry_label": "Last entry",
      "last_entry_title": "Frozen rat · accepted",
      "last_entry_meta": "Friday 7:14 PM · 32 g",
      "pattern_detected_title": "Pattern detected",
      "pattern_detected_meta": "2 refusals same week",
      "next_meal_title": "Next meal",
      "next_meal_meta": "in 3 days"
    },
    "benefits_section": {
      "title": "Why track your reptiles' feeding more carefully?",
      "description": "When several feedings follow one another, refusals need to be logged, or different routines need to be compared, structured tracking quickly becomes essential.",
      "cards": {
        "data": {
          "badge": "Feeding routine",
          "title": "Every meal becomes useful data, not just a lost note",
          "description": "ReptiNode lets you visualize accepted meals, refusals, frequency, and events linked to each reptile so you can keep a clear view of feeding tracking over time.",
          "items": [
            "Chronological meal history",
            "Clearer view of the feeding routine"
          ]
        },
        "simple": {
          "title": "Easy to log every day",
          "description": "The goal is not to add complexity, but to let you quickly record a meal, a refusal, or an observation and find the information instantly."
        },
        "refusals": {
          "title": "Refusals become visible",
          "description": "When refusals are scattered across several notes, they are easy to miss. With structured tracking, it becomes easier to spot periods that need attention.",
          "example_line": "12/03: refusal",
          "example_highlight": "➜ readable history + context preserved"
        },
        "context": {
          "title": "Feeding becomes more meaningful when it is connected to everything else",
          "description": "A meal on its own says very little. Linked to weight, timeline, and other events in the profile, it becomes much more useful for understanding the animal's progress.",
          "items": {
            "meals_observations_title": "Meals and observations",
            "meals_observations_badge": "Centralized",
            "weight_timeline_title": "Weight and timeline",
            "weight_timeline_badge": "Readable"
          }
        }
      }
    },
    "value_section": {
      "title": "What feeding tracking should really give you",
      "description": "Good feeding tracking is not just about writing down a date. It should help you review, compare, and better understand each reptile's habits.",
      "daily_card": {
        "title": "For everyday use",
        "description": "Keep your tracking clean and fast without multiplying notes or files.",
        "features": [
          "Meals logged for each reptile",
          "Refusals clearly visible",
          "Easy-to-review chronological history",
          "Feeding routine easier to follow",
          "Quick access from a single profile"
        ],
        "button": "Explore features"
      },
      "long_term_card": {
        "badge": "For more reliable tracking",
        "title": "For the long term",
        "description": "The more weeks go by, the more valuable well-structured data becomes.",
        "features": [
          "Easier comparison over time",
          "Less reliance on memory",
          "Faster spotting of irregularities",
          "A more coherent reading of feeding behavior",
          "A cleaner foundation for overall management"
        ],
        "button": "Start for free",
        "footer_note": "Clearer feeding tracking"
      }
    },
    "comparison_section": {
      "title": "Move from rough tracking to truly readable tracking",
      "description": "The difference is not only in writing information down, but in your ability to find it again, compare it, and give it context.",
      "before": {
        "title": "Before",
        "description": "Dates written in different places, possible omissions, refusals that are hard to find again, and very little overall visibility into the feeding routine."
      },
      "with_reptinode": {
        "title": "With ReptiNode",
        "description": "A clean history for each reptile, a consistent chronological view, and feeding data connected to the rest of the profile."
      },
      "result": {
        "title": "Result",
        "description": "Calmer management, feeding patterns that are easier to understand, and tracking that remains useful even several months later."
      }
    },
    "faq_section": {
      "title": "Frequently asked questions",
      "description": "The essentials for understanding the value of real reptile feeding tracking.",
      "items": [
        {
          "q": "Why track reptile feeding precisely?",
          "r": "Because regular feeding tracking helps you know what was given, when, how often, and how each reptile reacts over time. It helps you understand habits better and avoid missed entries."
        },
        {
          "q": "Is it useful even with a small collection?",
          "r": "Yes. Even with only a few reptiles, clear feeding tracking avoids guesswork. And when the collection grows, the structure is already in place."
        },
        {
          "q": "Can meal refusals be recorded?",
          "r": "Yes. It is even essential, because repeated refusals, changes in routine, or unusual periods are easier to detect when everything is recorded in one place."
        },
        {
          "q": "Is weight useful alongside feeding data?",
          "r": "Yes. Weight and feeding form a very useful pair for getting a more coherent view of a reptile's progress over time."
        },
        {
          "q": "How is this better than a note on your phone?",
          "r": "An isolated note quickly becomes hard to reread, compare, or connect to the rest of the profile. ReptiNode structures data by animal, keeps the history, and makes information much easier to read."
        }
      ],
      "bottom_text": "Want to see the rest of the tool around feeding tracking?",
      "bottom_link": "View the features page"
    },
    "cta_section": {
      "badge": "Make feeding tracking clearer",
      "title_line_1": "Track every meal",
      "title_line_2": "in a tool built to last",
      "description": "ReptiNode helps you keep a clean, readable feeding history connected to each reptile for more consistent daily management.",
      "button": "Create my space for free",
      "features": [
        "History for each reptile",
        "Meals and refusals tracked more clearly",
        "More readable tracking over time"
      ]
    },
    "cross_links_label": "Explore further:",
    "anatomy": {
      "tag": "Anatomy of a feeding entry",
      "title": "Everything that matters, on a single record",
      "subtitle": "Not just \"ate / refused\". Each meal becomes usable data, linked to the reptile and the rest of its timeline.",
      "card_title": "Feeding · #1284",
      "card_subtitle": "Linked to Nyx · Python regius",
      "card_status": "Validated",
      "field_date": {
        "label": "Date & time",
        "value": "Fri Mar 14 · 7:14 PM"
      },
      "field_prey": {
        "label": "Prey type",
        "value": "Frozen rat"
      },
      "field_size": {
        "label": "Size / weight"
      },
      "field_status": {
        "label": "Status",
        "value": "Accepted"
      },
      "field_context": {
        "label": "Context",
        "value": "Post-shed · appetite OK"
      },
      "footer_note": "Logged · synced · linked to today's weight",
      "explain_title": "Structured data, not a thrown-away note.",
      "explain_p1": "A note says \"ate Thursday\". A record says who, when, what, how much, with which status and in which context. That's the difference between knowing and being able to read back.",
      "explain_p2": "Three months later, you find the meal, its context, and what happened around it. That's what makes tracking genuinely useful over time."
    },
    "patterns": {
      "tag": "Detectable patterns",
      "title": "3 signals you'll finally see",
      "subtitle": "These signals already exist in your collection. The difference is seeing them before they become a problem.",
      "refusal_streak": {
        "tag": "Refusal streak",
        "title": "Several consecutive refusals",
        "desc": "When refusals are scattered across notes, they go unnoticed. Shown as a streak on the calendar, they become obvious."
      },
      "rhythm_change": {
        "tag": "Rhythm change",
        "title": "Cycle stretching or shortening",
        "desc": "A reptile going from 7 to 14 days between meals is a signal. Visible instantly when tracking is structured."
      },
      "weight_link": {
        "tag": "Weight correlation",
        "title": "Link between meals and weight curve",
        "desc": "A meal only makes sense next to weight. ReptiNode keeps both on the same record to read coherence."
      }
    },
    "calendar": {
      "tag": "12-month view",
      "title": "A year of feeding, at a glance",
      "subtitle": "A reptile's rhythm reads over months, not weeks. The annual view reveals what no isolated note can show.",
      "year_label": "2025 · Nyx",
      "legend_none": "none",
      "legend_meal": "meal",
      "legend_refusal": "refusal",
      "caption": "The two red squares are 4 months apart. By hand, you'd never have connected them."
    },
    "breadcrumb": {
      "home": "Home"
    }
  },
  "reproduction_reptiles": {
    "seo": {
      "title": "Reptile breeding",
      "description": "ReptiNode helps you track your reptiles' breeding with pairings, key dates, clutches, eggs, and a clearer timeline.",
      "structured_data_description": "Track your reptiles' breeding with a structured tool to organize pairings, cycles, clutches, eggs, and the full breeding timeline."
    },
    "illustration": {
      "card_title": "Project 2026 · Pairing A12",
      "card_subtitle": "Mojave het Clown × Pastel",
      "status": "Breeding tracked",
      "last_pairing_label": "Last pairing",
      "last_pairing_value": "4 days ago",
      "last_pairing_meta": "observed",
      "current_stage_label": "Current stage",
      "current_stage_value": "Pre-lay",
      "current_stage_meta": "to monitor",
      "timeline_title": "Breeding timeline",
      "pairing_logged_title": "Pairing logged",
      "pairing_logged_time": "Friday · 21:08",
      "key_date_planned_title": "Key date scheduled",
      "key_date_planned_time": "Check in 3 days",
      "clutch_tracking_ready_title": "Clutch tracking ready",
      "clutch_tracking_ready_time": "Checklist ready",
      "instant_pairing_sheet": "Instant pairing sheet",
      "structured_cycle_title": "Structured cycle",
      "structured_cycle_text": "Fewer forgotten steps, more visibility",
      "tracking": "Active tracking",
      "step_pairing": "Pairing",
      "step_pairing_meta": "Jan 24 · validated",
      "step_ovulation": "Ovulation",
      "step_ovulation_meta": "Feb 15 · observed",
      "step_prelay": "Pre-lay",
      "step_prelay_meta": "in progress",
      "step_lay": "Laying",
      "step_lay_meta": "estimated Mar 18",
      "step_incubation": "Incubation",
      "step_incubation_meta": "~ 55 d",
      "metric_progress_label": "Progress",
      "metric_progress_unit": "stages",
      "metric_next_label": "Next checkpoint",
      "metric_next_unit": "check",
      "metric_next_meta": "Mar 17 · pre-lay",
      "now_label": "Now",
      "eggs_expected_title": "Expected clutch",
      "eggs_expected_unit": "eggs",
      "checkpoint_title": "Check scheduled",
      "checkpoint_meta": "in 3 days"
    },
    "faq": {
      "title": "Frequently asked questions",
      "description": "The essentials for understanding the value of real reptile breeding tracking.",
      "items": [
        {
          "q": "Why use a tool to track reptile breeding?",
          "r": "Because breeding involves multiple stages, key dates, and observations that quickly become difficult to connect without structure. A dedicated tool helps keep a clear timeline."
        },
        {
          "q": "Can important cycle milestones be planned?",
          "r": "Yes. The whole point is to avoid managing breeding from memory alone. ReptiNode helps set clear reference points around pairings, checks, clutches, and eggs."
        },
        {
          "q": "Does the breeding page replace genetics?",
          "r": "No. This page is focused on organizing the breeding process: pairings, timeline, clutches, and operational tracking. Genetics can then enrich the analysis."
        },
        {
          "q": "Is it useful for a small breeding setup?",
          "r": "Yes. Even with only a few projects, clean tracking prevents missed steps and makes review easier. And if the breeding setup grows, the structure is already in place."
        },
        {
          "q": "How is this better than a spreadsheet?",
          "r": "A spreadsheet often forces you to manually reconnect information. ReptiNode keeps data linked to the right pairing, the right animals, and the right timeline, which makes tracking much easier to read."
        }
      ],
      "bottom_text": "Want to connect breeding with the genetics section?",
      "bottom_link": "View the genetics page"
    },
    "hero": {
      "badge": "Organized breeding from start to finish",
      "title_line_1": "Reptile",
      "title_line_2": "breeding",
      "description": "Organize your pairings, keep a clear timeline of cycles, prepare important stages, and centralize clutch and egg tracking in a tool specialized for reptiles.",
      "primary_cta": "Structure my breeding",
      "secondary_cta": "View features",
      "stats": {
        "timeline": "Clear timeline for each breeding project",
        "lost_dates": "Key dates lost across different notes",
        "clarity_value": "+ simpler",
        "clarity_label": "To track pairings, clutches, and eggs"
      },
      "reassurance_1": "Timeline per project",
      "reassurance_2": "Individually tracked eggs",
      "reassurance_3": "Multiple parallel projects"
    },
    "benefits": {
      "title": "Why better structure reptile breeding?",
      "description": "As soon as there are multiple pairings, multiple stages, or several females being tracked in parallel, memory alone is no longer enough. You need a clear, readable base.",
      "cycle": {
        "badge": "Breeding cycle",
        "title": "Each stage stays connected to the right breeding project",
        "description": "ReptiNode helps keep a clear thread between pairings, dates to monitor, observations, clutches, and egg tracking, without scattering information across separate notes.",
        "items": [
          "Simpler time-based milestones",
          "Clearer clutch and egg tracking"
        ]
      },
      "projects": {
        "title": "A solid foundation for your projects",
        "description": "The goal is not just to note a pairing, but to be able to review the full course of a breeding project with much more clarity."
      },
      "dispersion": {
        "title": "Less scattered information",
        "description": "When data is spread across spreadsheets, calendars, and notes, breeding tracking becomes fragile. A single structure improves reliability.",
        "example_line": "Pairing A12",
        "example_highlight": "➜ timeline, milestones, and tracking brought together"
      },
      "readability": {
        "title": "Breeding becomes easier to review, even several weeks later",
        "description": "A good breeding tool is not just for entering information. It should let you quickly recover the context, the stages already completed, and the ones coming next.",
        "items": {
          "key_dates_title": "Key dates and checks",
          "key_dates_badge": "Clear",
          "clutches_eggs_title": "Clutches and eggs",
          "clutches_eggs_badge": "Centralized"
        }
      }
    },
    "value_section": {
      "title": "What good breeding tracking should really give you",
      "description": "The goal is not to add fields everywhere, but to make each breeding project easier to manage, review, and compare.",
      "daily": {
        "title": "For day-to-day management",
        "description": "Keep essential information where it is useful, without multiplying tools.",
        "features": [
          "Pairings logged cleanly",
          "Clear timeline for each project",
          "Key dates easier to follow",
          "Clutches and eggs better centralized",
          "Quick reading of breeding context"
        ],
        "button": "Explore features"
      },
      "long_term": {
        "badge": "For a more structured breeding setup",
        "title": "For the long term",
        "description": "The more projects you have, the more valuable a solid breeding organization becomes.",
        "features": [
          "Less reliance on memory",
          "Cleaner view of parallel cycles",
          "Less confusion between projects",
          "A clearer base for review",
          "More credible long-term organization"
        ],
        "button": "Start for free",
        "footer_note": "More readable breeding"
      }
    },
    "comparison": {
      "title": "Move from breeding “in your head” to breeding that is truly tracked",
      "description": "The real difference is not the number of notes taken, but your ability to review a breeding project properly from start to finish.",
      "before": {
        "title": "Before",
        "description": "Pairings noted separately, reminders scattered around, and stages that are difficult to connect several weeks later."
      },
      "with_reptinode": {
        "title": "With ReptiNode",
        "description": "A single structure to track the project, important dates, clutches, eggs, and the complete timeline."
      },
      "result": {
        "title": "Result",
        "description": "Breeding that is better managed, easier to review, and much more reliable when several projects move forward in parallel."
      }
    },
    "cta": {
      "badge": "Manage your breeding projects better",
      "title_line_1": "Organize your breeding",
      "title_line_2": "in a tool designed for reptiles",
      "description": "ReptiNode helps you structure pairings, key stages, clutches, and eggs so you can keep a clear view of each breeding project.",
      "button": "Create my space for free",
      "features": [
        "Better organized pairings",
        "Clear cycle timeline",
        "More reliable long-term tracking"
      ]
    },
    "cross_links_label": "Explore further:",
    "cycle": {
      "tag": "The full cycle",
      "title": "Each stage, in its place on the timeline",
      "subtitle": "Five clear stages, linked to the same breeding project. No more \"when was that again?\" three months later.",
      "step_1": {
        "title": "Pairing",
        "desc": "Date, observed matings, conditions. The project record starts here, linked to both animals."
      },
      "step_2": {
        "title": "Ovulation",
        "desc": "Central reference of the cycle. Noted at the observed date, it anchors the entire timeline that follows."
      },
      "step_3": {
        "title": "Pre-lay & shed",
        "desc": "Behavior, food refusals, shed. ReptiNode automatically links events from this period to the female."
      },
      "step_4": {
        "title": "Laying",
        "desc": "Date, number of eggs, quality. Each egg receives its own ID for individual tracking."
      },
      "step_5": {
        "title": "Incubation & hatching",
        "desc": "Countdown, hatch rate, hatchlings logged and linked back to the initial pairing."
      }
    },
    "parallel": {
      "tag": "Multi-project",
      "title": "Several pairings in parallel, no confusion",
      "p1": "Three projects in progress, at different stages, on different females. That's exactly where the spreadsheet breaks.",
      "p2": "ReptiNode keeps each project isolated but readable at a glance. You instantly see what's progressing, what's stalled, and what needs your attention this week.",
      "dashboard_title": "2026 projects",
      "active_label": "active"
    },
    "projects": {
      "stage_prelay": "Pre-lay",
      "stage_pairing": "Pairing",
      "stage_incub": "Incubation",
      "stage_ovul": "Ovulation"
    },
    "clutch": {
      "tag": "Egg tracking",
      "title": "Each egg, its own record",
      "subtitle": "A clutch isn't a number — it's six individual stories. Track each one with its incubation day, status, observations.",
      "clutch_title": "Clutch #A12-2026",
      "clutch_meta": "Laid Mar 18 · 6 eggs · 56% remaining",
      "legend_incub": "incubating",
      "legend_hatched": "hatched",
      "legend_failed": "stopped",
      "caption": "At hatching, each egg becomes a hatchling automatically linked to the initial pairing."
    },
    "breadcrumb": {
      "home": "Home"
    }
  },
  "genetique_reptiles": {
    "seo": {
      "title": "Reptile genetics",
      "description": "ReptiNode helps you track your reptiles' genetics with a clearer view of genes, pedigree, lineages, and pairing projections.",
      "structured_data_description": "Track your reptiles' genetics with a tool that connects genes, pedigree, lineages, pairings, and projections in one clear base."
    },
    "illustration": {
      "card_title": "Genetics project · BEL",
      "card_subtitle": "Mojave × Lesser",
      "status": "Projection ready",
      "pairing_label": "Pairing",
      "pairing_value": "2 genes",
      "pairing_meta": "compatible",
      "goal_label": "Goal",
      "goal_value": "BEL",
      "goal_meta": "projected",
      "genetic_view_title": "Genetic view",
      "pedigree_linked_title": "Pedigree linked",
      "pedigree_linked_time": "Lineage available",
      "projection_calculated_title": "Projection calculated",
      "projection_calculated_time": "Expected combinations",
      "genes_linked_title": "Genes linked to parents",
      "genes_linked_time": "Clearer reading",
      "quick_access": "Quick pedigree access",
      "simplified_reading_title": "Simplified genetic reading",
      "simplified_reading_text": "Fewer scattered assumptions",
      "live_label": "Live",
      "parent_male": "Mojave het Pied",
      "parent_female": "Pastel het Pied",
      "punnett_title": "Expected distribution",
      "outcomes_label": "outcomes",
      "punnett": {
        "normal_label": "Normal",
        "het_label": "Het Pied",
        "pied_label": "Pied"
      },
      "visual_morphs": "25% visual",
      "het_morphs": "50% het",
      "pedigree_title": "Linked pedigree",
      "pedigree_meta": "3 generations traced",
      "morphs_registered_title": "Morph registry",
      "morphs_registered_meta": "14 combinations"
    },
    "faq": {
      "title": "Frequently asked questions",
      "description": "The essentials for understanding the value of real reptile genetics tracking.",
      "items": [
        {
          "q": "Why use a tool for reptile genetics?",
          "r": "Because as soon as you need to connect genes, parents, offspring, and breeding goals, the information quickly becomes difficult to review without a clear structure. A dedicated tool makes reading much easier."
        },
        {
          "q": "Can pedigree and lineages be tracked?",
          "r": "Yes. That is one of the main advantages: connecting individuals together, preserving continuity in lineage reading, and avoiding information lost across multiple files."
        },
        {
          "q": "Is it useful for preparing pairings?",
          "r": "Yes. Genetics helps prepare pairings more intelligently by giving a clearer view of present genes, target goals, and expected projections."
        },
        {
          "q": "Does genetics replace breeding tracking?",
          "r": "No. Genetics helps you better understand and project combinations. Breeding tracking remains focused on the operational timeline of pairings, cycles, clutches, and eggs."
        },
        {
          "q": "How is this better than a note or a spreadsheet?",
          "r": "A note or spreadsheet requires a lot of mental reconstruction. ReptiNode helps connect information directly to the right profile, the right pairing, and the right genetic context."
        }
      ],
      "bottom_text": "Want to connect this section with operational breeding tracking?",
      "bottom_link": "View the breeding page"
    },
    "hero": {
      "badge": "Clear, connected genetics",
      "title_line_1": "Genetics",
      "title_line_2": "for reptiles",
      "description": "Connect genes, pedigree, lineages, and pairing projections in a tool designed to make genetic reading simpler, clearer, and more useful over the long term.",
      "primary_cta": "Structure my genetics",
      "secondary_cta": "View features",
      "stats": {
        "base": "Clear base for genes and lineages",
        "hypotheses": "Assumptions lost across different notes",
        "clarity_value": "+ clearer",
        "clarity_label": "To read pedigree and projections"
      },
      "reassurance_1": "One-click Punnett",
      "reassurance_2": "3-generation pedigree",
      "reassurance_3": "Recessives and heterozygotes"
    },
    "benefits": {
      "title": "Why better structure reptile genetics?",
      "description": "As soon as you need to connect several genes, verify lineages, or prepare serious pairings, loose organization quickly becomes limiting.",
      "lineage": {
        "badge": "Lineages and pedigree",
        "title": "Every genetic detail stays connected to the right context",
        "description": "ReptiNode helps connect genes, parents, offspring, and pairing goals to avoid constant mental reconstruction and keep a far more reliable base.",
        "items": [
          "Clearer reading of lineages",
          "Projections easier to review"
        ]
      },
      "projects": {
        "title": "A cleaner reading of projects",
        "description": "The goal is not just to have gene labels, but to better understand the relationships between individuals and the goals you are aiming for."
      },
      "uncertainty": {
        "title": "Less uncertainty",
        "description": "When genetic information is scattered, assumptions become fragile. A well-structured base makes verification much easier.",
        "example_line": "Mojave het Clown × Pastel het Clown",
        "example_highlight": "➜ projection reviewed without friction"
      },
      "usable": {
        "title": "Genetics becomes usable, not just stored",
        "description": "A good genetics tool is not just for stacking information. It should help verify a pedigree, prepare a pairing, and easily review the key elements of a lineage.",
        "items": {
          "pedigree_title": "Pedigree and lineage",
          "pedigree_badge": "Linked",
          "projection_title": "Pairing projection",
          "projection_badge": "Readable"
        }
      }
    },
    "value_section": {
      "title": "What good genetics tracking should really give you",
      "description": "The real benefit is not having more information, but connecting it properly so you can make better decisions and review your projects more effectively.",
      "daily": {
        "title": "For daily reading",
        "description": "Keep a clear view of genes and relationships between individuals without constantly rebuilding the context.",
        "features": [
          "Clearer reading of genes",
          "Pedigree easier to consult",
          "Better structured lineages",
          "Pairing projections easier to review",
          "Genetic information linked to the right profiles"
        ],
        "button": "Explore features"
      },
      "long_term": {
        "badge": "For better prepared projects",
        "title": "For the long term",
        "description": "The more lineages and projects grow, the more valuable a clean genetic base becomes.",
        "features": [
          "Fewer vague assumptions",
          "Easier lineage verification",
          "More coherent pairing preparation",
          "A more credible base for future projects",
          "Faster review of key information"
        ],
        "button": "Start for free",
        "footer_note": "Better structured genetics"
      }
    },
    "comparison": {
      "title": "Move from genetics “in notes” to genetics that is truly usable",
      "description": "The real value of good genetics tracking lies in connecting the right information at the right time, without having to reconstruct everything every time.",
      "before": {
        "title": "Before",
        "description": "Genes noted separately, pedigrees rebuilt by hand, and projections difficult to review when multiple projects pile up."
      },
      "with_reptinode": {
        "title": "With ReptiNode",
        "description": "A clear base to connect genes, lineages, pedigree, and projections, with far less friction when reviewing or making decisions."
      },
      "result": {
        "title": "Result",
        "description": "More readable genetics, better prepared pairings, and a stronger foundation for evolving your projects over time."
      }
    },
    "cta": {
      "badge": "Clarify your genetics projects",
      "title_line_1": "Structure your genetics",
      "title_line_2": "in a tool designed for reptiles",
      "description": "ReptiNode helps you connect genes, pedigree, lineages, and projections to make your decisions clearer and your projects easier to read.",
      "button": "Create my space for free",
      "features": [
        "Genes better connected",
        "Pedigree easier to read",
        "Projections better prepared"
      ]
    },
    "cross_links_label": "Explore further:",
    "lenses": {
      "tag": "Three reading angles",
      "title": "Three ways to read genetics",
      "subtitle": "Depending on what you're looking for — projecting, understanding, or inventorying — the same data shifts angle.",
      "punnett": {
        "tag": "Projection",
        "title": "Punnett square",
        "desc": "Pick two animals, ReptiNode calculates the expected distribution. No more mental math on the corner of a table."
      },
      "pedigree": {
        "tag": "Lineage",
        "title": "Visual pedigree",
        "desc": "Three generations at a glance. You know where each morph comes from and how it was passed on."
      },
      "library": {
        "tag": "Inventory",
        "title": "Morph registry",
        "desc": "All combinations present in your collection, sorted, counted, ready to filter."
      }
    },
    "pedigree": {
      "tag": "Visual pedigree",
      "title": "Three generations, one look",
      "p1": "Where does this morph come from? Which grandparent carried the recessive? The family tree answers without you having to scroll through three years of notes.",
      "p2": "Each node is clickable and opens the animal's full profile. You climb back up the lineage without ever leaving the tree.",
      "subject": "Nyx · Banana het Pied",
      "subject_meta": "Born Aug 4, 2024 · generation III",
      "legend_morph": "morph carrier",
      "legend_het": "het recessive",
      "legend_normal": "normal"
    },
    "registry": {
      "tag": "Registry",
      "title": "All your combinations, in one place",
      "subtitle": "One glance to know how many animals carry which combination, and which ones.",
      "col_combo": "Combination",
      "col_type": "Type",
      "col_animals": "Animals",
      "type_codominant": "Codominant",
      "type_recessive": "Recessive",
      "type_mixed": "Mixed",
      "animals_unit": "animals",
      "footer_total": "5 combinations · 12 animals concerned",
      "footer_action": "Filter →"
    },
    "breadcrumb": {
      "home": "Home"
    }
  },
  "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_name": "My collection",
      "collection_meta": "24 reptiles · 3 species",
      "synced": "Sync",
      "search_placeholder": "Search: name, code, species…",
      "metric_to_feed_label": "To feed",
      "metric_to_feed_unit": "this week",
      "metric_late_label": "Overdue weigh-ins",
      "metric_late_unit": "to handle",
      "list_title": "Recent activity",
      "list": {
        "r1_event": "Weigh-in · 1284 g",
        "r2_event": "Meal logged",
        "r3_event": "Pre-lay"
      },
      "filters_title": "Filters",
      "export_title": "Export ready",
      "export_meta": "PDF · CSV"
    },
    "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": "One centralized space",
      "reassurance_2": "Zero spreadsheets to maintain",
      "reassurance_3": "EU hosting"
    },
    "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"
      ]
    },
    "cross_links_label": "Explore further:",
    "workflow": {
      "tag": "How it works",
      "title": "Three steps, zero complexity",
      "subtitle": "Designed to disappear behind your animals. You log, ReptiNode structures and keeps it.",
      "step_1": {
        "title": "Centralize your records",
        "desc": "One profile per reptile: identity, species, genetics, photo, internal code. No more notes scattered between phone, paper, and spreadsheets."
      },
      "step_2": {
        "title": "Log on the fly",
        "desc": "Weigh-in, meal, shed, observation: each event is added in seconds, from computer or phone, and stays attached to the right animal."
      },
      "step_3": {
        "title": "Read back without friction",
        "desc": "Filter by species, year, status. Find an animal's full history in a single click, even three years later."
      }
    },
    "compare_table": {
      "tag": "Comparison",
      "title": "Spreadsheet vs dedicated software",
      "subtitle": "A spreadsheet can hold 5 animals. Beyond that, real software structure makes the difference.",
      "col_criteria": "Criterion",
      "col_spreadsheet": "Spreadsheet",
      "row_1": {
        "criteria": "One profile per reptile"
      },
      "row_2": {
        "criteria": "Automatic chronological history"
      },
      "row_3": {
        "criteria": "Dedicated search & filters"
      },
      "row_4": {
        "criteria": "Quick mobile entry"
      },
      "row_5": {
        "criteria": "Linked pedigree and lineages"
      },
      "row_6": {
        "criteria": "Managed backup & security"
      }
    },
    "use_cases": {
      "tag": "Use cases",
      "title": "Whatever the size of your collection",
      "subtitle": "The same tool fits the solo enthusiast and the professional structure.",
      "hobbyist": {
        "title": "Solo enthusiast",
        "desc": "2 to 10 reptiles. You want to stop forgetting weigh-ins and keep a clean history, without overkill.",
        "tag": "Free is enough"
      },
      "keeper": {
        "title": "Structured keeper",
        "desc": "20 to 100 reptiles, multiple projects. You need filters, linked pedigree, and a quick read of the whole collection.",
        "tag": "Pro recommended"
      },
      "pro": {
        "title": "Pro structure",
        "desc": "Pet shop, store, park. You want a clear, exportable, durable base to track living inventory and sanitary history.",
        "tag": "Pro + export"
      }
    },
    "breadcrumb": {
      "home": "Home"
    }
  },
  "terms": {
    "nav": {
      "back": "Back"
    },
    "header": {
      "badge": "Ground Rules",
      "title": "Terms of Service",
      "subtitle": "ToS and Sales Conditions - Effective November 22, 2025"
    },
    "tldr": {
      "title": "In Short (Key Takeaways)",
      "point_1": "Personal and professional use accepted.",
      "point_2": "Pro subscription is non-binding, cancel anytime.",
      "point_3": "You remain the owner of your data.",
      "point_4": "We are not responsible for your animals' health (consult a vet)."
    },
    "sections": {
      "object": {
        "title": "1. Purpose",
        "content": "These General Terms of Use and Sale (hereinafter \"ToS\") govern the use of the ReptiNode site and application. By creating an account, you accept these conditions without reservation."
      },
      "access": {
        "title": "2. Service Access",
        "p1": "The service is accessible for free (Discovery Plan) with limited features. Advanced features (Pro Plan) require a paid subscription.",
        "p2": "You are responsible for the confidentiality of your credentials. Any action performed from your account is deemed to be performed by you."
      },
      "payment": {
        "title": "3. Subscriptions & Payments",
        "sub_1_title": "3.1 Pricing",
        "sub_1_content": "Prices are indicated in Euros (€) including all taxes. ReptiNode reserves the right to modify its prices at any time but commits to applying the rates in effect at the time of subscription.",
        "sub_2_title": "3.2 Payment",
        "sub_2_content": "Payments are secured and processed by our partner Stripe. No banking data passes unencrypted through our servers.",
        "sub_3_title": "3.3 Cancellation",
        "sub_3_content": "The subscription is non-binding. You can cancel it at any time from your \"Settings\" area. Cancellation will take effect at the end of the current billing period. No prorated refunds are issued."
      },
      "liability": {
        "title": "4. Limited Liability",
        "intro_bold": "ReptiNode is a management tool, not a veterinarian.",
        "intro_text": "We provide tools to track weight, meals, and breeding. However:",
        "list_1": "We do not guarantee the success of your breeding projects.",
        "list_2": "We are not responsible for the health of your animals. Software alerts do not replace professional advice.",
        "list_3": "We cannot be held responsible for data loss due to a major failure, although we do everything possible (daily backups) to prevent this from happening."
      },
      "user_content": {
        "title": "5. User Content",
        "content": "You agree not to publish on the platform (including via notes or photos) any content that is illegal, hateful, pornographic, or incites animal cruelty. ReptiNode reserves the right to suspend any account violating this rule, without notice or refund."
      },
      "law": {
        "title": "6. Governing Law",
        "content": "These conditions are subject to French law. In the event of a dispute, and failing an amicable agreement, the courts of Paris shall have exclusive jurisdiction."
      }
    },
    "footer": {
      "privacy": "Privacy Policy",
      "legal": "Legal Notice",
      "rights": "All rights reserved."
    }
  },
  "privacy": {
    "nav": {
      "back": "Back"
    },
    "header": {
      "badge": "Your data belongs to you",
      "title": "Privacy Policy",
      "last_update": "Last updated: {{date}}"
    },
    "tldr": {
      "title": "In short (TL;DR)",
      "point_1": "We <strong>never</strong> sell your personal data to third parties.",
      "point_2": "Your breeding data (reptiles, weights, breeding) is private by default.",
      "point_3": "You can export or delete your data at any time.",
      "point_4": "Data is securely stored on servers in Europe."
    },
    "sections": {
      "intro": {
        "title": "1. Introduction",
        "p1": "Welcome to <strong>ReptiNode</strong>. Protecting your privacy is at the heart of our mission. As breeders ourselves, we know that data regarding your genetic lines, breeding projects, and collection is sensitive.",
        "p2": "This policy details what data we collect, how we use it, and how we protect it. By using our service, you accept the practices described here."
      },
      "collected": {
        "title": "2. Collected Data",
        "intro": "We only collect information necessary for the proper functioning of the application:",
        "point_1": "<strong>Account Information:</strong> Email address, password (encrypted), username.",
        "point_2": "<strong>Breeding Data:</strong> Reptile names, species, morphs, weights, feeding dates, sheds, pairings, clutches, notes, and photos you upload.",
        "point_3": "<strong>Technical Data:</strong> Connection logs, device type, IP address (for security purposes only).",
        "point_4": "<strong>Payments:</strong> If you subscribe to a Pro plan, our payment processor (Stripe) handles your banking information. We never store your full card numbers."
      },
      "usage": {
        "title": "3. Data Usage",
        "intro": "Your data is used exclusively to:",
        "point_1": "Provide access to your dashboard and manage your breeding.",
        "point_2": "Generate your documents (transfer certificates, tracking sheets).",
        "point_3": "Send you important notifications (care reminders, security updates).",
        "point_4": "Improve the application via anonymized statistics (e.g., \"How many Ball Pythons are managed on the platform?\")."
      },
      "sharing": {
        "title": "4. Sharing and Third Parties",
        "bold_statement": "We do not sell, rent, or share your personal data with any advertising advertisers.",
        "intro": "We only share data with our essential technical providers:",
        "point_1": "<strong>Hosting & Database:</strong> PostgreSQL (Secure storage).",
        "point_2": "<strong>Payments:</strong> Stripe (Subscription management).",
        "point_3": "<strong>Emails:</strong> Hostinger (Sending transactional notifications)."
      },
      "security": {
        "title": "5. Security",
        "intro": "We implement industry best practices to protect your data:",
        "point_1": "All communications are encrypted via <strong>SSL/TLS (HTTPS)</strong>.",
        "point_2": "Passwords are hashed with robust algorithms (Argon2/Bcrypt) before storage.",
        "point_3": "Automatic backups are performed daily to prevent any data loss.",
        "point_4": "Access to production data is restricted to key engineers on the team."
      },
      "rights": {
        "title": "6. Your Rights (GDPR)",
        "intro": "In accordance with the General Data Protection Regulation, you have the following rights:",
        "point_1": "<strong>Right of access and portability:</strong> You can download a full copy of your data (PDF/JSON) from your account.",
        "point_2": "<strong>Right to rectification:</strong> You can modify your information at any time.",
        "point_3": "<strong>Right to be forgotten:</strong> You can permanently delete your account and all associated data via the settings."
      },
      "cookies": {
        "title": "7. Cookies",
        "content": "We use only \"essential\" cookies necessary to maintain your session (keep you logged in) and for security (protection against CSRF attacks). We do not use invasive third-party advertising or tracking cookies."
      }
    },
    "contact": {
      "title": "Contact Us",
      "text": "For any questions regarding this policy or to exercise your rights, contact our Data Protection Officer (DPO):"
    },
    "footer": {
      "terms": "Terms of Service",
      "legal": "Legal Notice",
      "rights": "All rights reserved."
    }
  },
  "legal": {
    "nav": {
      "back": "Back"
    },
    "header": {
      "title": "Legal Notice",
      "subtitle": "Mandatory legal information"
    },
    "sections": {
      "editor": {
        "title": "1. Site Publisher",
        "intro": "The <strong>ReptiNode</strong> site is published by the company:",
        "company_name": "<strong>Company Name:</strong> ReptiNode (Company currently being formed)",
        "capital": "<strong>Share Capital:</strong> €10,000",
        "rcs": "<strong>RCS:</strong> Paris B 123 456 789",
        "siret": "<strong>SIRET:</strong> 123 456 789 00012",
        "tva": "<strong>VAT Number:</strong> FR 12 123456789",
        "address": "<strong>Headquarters:</strong> 10 impasse des Dames Colle, 10000 Troyes, France",
        "director": "<strong>Publication Director:</strong> MERCOURT Noé (CEO)"
      },
      "hosting": {
        "title": "2. Hosting",
        "intro": "The site and its data are hosted by providers complying with European security standards:",
        "app_provider": "Application & Frontend:",
        "db_provider": "Database & Storage:"
      },
      "intellectual": {
        "title": "3. Intellectual Property",
        "p1": "This entire site is subject to French and international legislation on copyright and intellectual property. All reproduction rights are reserved, including for downloadable documents and iconographic and photographic representations.",
        "p2": "Reproduction of all or part of this site on any electronic medium whatsoever is strictly prohibited without express authorization from the publication director."
      },
      "contact": {
        "title": "4. Contact",
        "intro": "For any request concerning the site, you can contact us:",
        "email_label": "By email:",
        "mail_label": "By mail:",
        "mail_value": "At the headquarters address indicated above."
      }
    },
    "footer": {
      "privacy": "Privacy Policy",
      "terms": "Terms & Conditions",
      "rights": "All rights reserved."
    }
  },
  "public_profile": {
    "errors": {
      "not_found": "Animal not found or sold.",
      "loading": "Loading error",
      "access_title": "Profile inaccessible"
    },
    "status_available": "Available",
    "share_alert": "URL copied!",
    "labels": {
      "morph": "Morph",
      "sex": "Sex",
      "age": "Age",
      "weight": "Weight",
      "length": "Length"
    },
    "units": {
      "year": "year",
      "year_plural": "years"
    },
    "defaults": {
      "classic": "Classic",
      "na": "N/A"
    },
    "certification_text": "This animal comes from my certified breeding. Scan to view full history upon transfer.",
    "email_subject": "Interested in {{name}}",
    "contact_button": "Contact Breeder",
    "contact_unavailable": "Contact unavailable",
    "footer_generated": "Card generated via ReptiNode App",
    "password": {
      "title": "Protected profile",
      "desc": "This profile is password-protected.",
      "placeholder": "Password",
      "wrong": "Incorrect password.",
      "submit": "Access"
    },
    "forSale": {
      "forSale": "For sale",
      "reserved": "Reserved",
      "sold": "Sold",
      "contact": "Contact",
      "morphmarket": "MorphMarket"
    },
    "cert": {
      "verified": "Verified certificate of authenticity",
      "show": "View",
      "hide": "Hide",
      "breeder": "Breeder",
      "currentOwner": "Current owner",
      "genetics": "Genetics",
      "chain": "Ownership chain",
      "verifiedAt": "Verified on {{date}} · ReptiNode"
    }
  },
  "admin": {
    "header": {
      "title": "Administration",
      "subtitle": "Extended control panel",
      "role": "Super Admin"
    },
    "tabs": {
      "dashboard": "Dashboard",
      "support": "Support"
    },
    "i18n": {
      "add": {
        "enLabel": "English (EN) — required",
        "enPlaceholder": "English value",
        "error": {
          "required": "Key, EN and FR are required."
        },
        "extra": {
          "langLabel": "Extra language",
          "toggle": "Add an extra language",
          "valueLabel": "Value"
        },
        "frLabel": "French (FR) — required",
        "frPlaceholder": "French value",
        "keyLabel": "Key",
        "keyPlaceholder": "e.g., contribute.form.name",
        "reset": "Reset",
        "submit": "Submit",
        "title": "Add a translation (EN + FR required)"
      },
      "browse": {
        "byAuthor": "by {{author}}",
        "byAuthorWithDate": "by {{author}} — {{date}}",
        "deleteTitle": "Permanently delete this key (all languages)",
        "empty": "No results.",
        "lang": {
          "all": "All",
          "en": "EN",
          "es": "ES",
          "fr": "FR"
        },
        "langLabel": "Language",
        "searchLabel": "Search (key or value)",
        "searchPlaceholder": "e.g., contribute.title, 'Account created'…",
        "table": {
          "actions": "Actions",
          "en": "EN",
          "es": "ES",
          "fr": "FR",
          "key": "Key"
        },
        "title": "Existing translations",
        "translatorLabel": "Translator"
      },
      "delete": {
        "confirm": "Delete permanently",
        "confirmInstruction": "To confirm, retype the key: {{key}}",
        "confirmTooltip": "Please retype the key to confirm",
        "inputPlaceholder": "Retype the key exactly",
        "title": "Delete key",
        "warning": "This action will permanently delete the key {{key}} in all languages."
      },
      "edit": {
        "history": {
          "empty": "No history for this language.",
          "label": "History ({{count}})"
        },
        "title": "Edit & History"
      },
      "error": {
        "load": "i18n loading error: {{message}}"
      },
      "loading": {
        "translations": "Loading translations…"
      },
      "missing": {
        "addButton": "Add (EN+FR)",
        "empty": "No missing translation.",
        "langLabel": "Language",
        "searchKeyLabel": "Search by key",
        "searchKeyPlaceholder": "e.g., contribute.form.",
        "table": {
          "key": "Key"
        },
        "title": "Missing keys ({{lang}})"
      },
      "overview": {
        "card": {
          "progress": "{{done}}/{{total}} keys",
          "viewLangTranslationsTitle": "View {{lang}} translations"
        },
        "title": "Translation coverage"
      },
      "pending": {
        "approve": "Approve",
        "empty": "No translation pending.",
        "reject": "Reject",
        "table": {
          "actions": "Actions",
          "id": "ID",
          "key": "Key",
          "lang": "Language",
          "submittedAt": "Submitted on",
          "submittedBy": "Submitted by",
          "value": "Value"
        },
        "title": "Translations pending approval"
      },
      "tabs": {
        "add": "Add",
        "browse": "Browse & Edit",
        "missing": "Missing ({{count}})",
        "overview": "Overview",
        "pending": "Pending ({{count}})"
      }
    },
    "common": {
      "save": "Save",
      "cancel": "Cancel",
      "delete": "Delete",
      "add": "Add",
      "edit": "Edit",
      "search": "Search",
      "close": "Close",
      "confirm": "Confirm",
      "loading": "Loading…",
      "actions": "Actions",
      "refresh": "Refresh",
      "export": "Export",
      "filters": "Filters",
      "all": "All",
      "none": "None",
      "back": "Back",
      "yes": "Yes",
      "no": "No",
      "noResults": "No results",
      "required": "Required",
      "previous": "Previous",
      "next": "Next",
      "saved": "Saved",
      "error": "An error occurred",
      "total": "Total",
      "status": "Status",
      "name": "Name",
      "description": "Description",
      "date": "Date",
      "email": "Email",
      "create": "Create",
      "view": "View"
    },
    "nav": {
      "groups": {
        "pilotage": "Steering",
        "management": "Management",
        "contentSupport": "Content & support",
        "technical": "Technical"
      },
      "items": {
        "dashboard": "Overview",
        "analytics": "Sessions & stats",
        "revenue": "Revenue",
        "surveys": "Surveys / NPS",
        "users": "Users",
        "roles": "Roles",
        "billing": "Billing",
        "families": "Families",
        "support": "Support",
        "content": "Content",
        "moderation": "Moderation",
        "genetics": "Genetics",
        "comms": "Communication",
        "i18n": "Translations",
        "system": "System",
        "infra": "Infrastructure",
        "compliance": "Security & compliance"
      }
    },
    "help": {
      "dashboard": "Business KPIs: MRR/ARR, sign-ups, engagement (DAU/MAU), alerts and per-page conversion.",
      "analytics": "Login sessions and detailed usage statistics.",
      "revenue": "MRR breakdown (new/expansion/churn), forecast, promo performance, Stripe reconciliation and plan migration.",
      "surveys": "Create NPS/CSAT surveys, track the score and read verbatims.",
      "users": "Search, edit, moderation, GDPR, and CRM profile (notes, tags, health score, role assignment).",
      "roles": "Define roles and their permissions. Assignment to users is done from their CRM profile.",
      "billing": "Subscriptions, failed payments, refunds, promo codes and Stripe webhooks.",
      "families": "Collaborative collections, their members, analytics and moderation.",
      "support": "Tickets with discussion thread, reply templates, priority/category and SLA tracking.",
      "content": "FAQ, in-app announcements, changelog and reply templates.",
      "moderation": "Queue of reported content and detection of at-risk accounts.",
      "genetics": "Species catalog and genetic registry editing (loci/morphs), with completeness score.",
      "comms": "Push campaigns, segmented emails, templates, PWA adoption and deliverability.",
      "i18n": "Coverage by language, missing/unused keys and CSV export.",
      "system": "Health, errors, CRON, jobs, feature usage, uploads and audit.",
      "infra": "Latencies (p50/p95/p99), webhooks + replay, on-demand CRON, storage, read-only SQL, backups and cache.",
      "compliance": "GDPR, consents, retention, password policy, maintenance mode, admin sessions, suspicious logins and status page."
    },
    "state": { "errorTitle": "Couldn't load this", "retry": "Retry", "empty": "Nothing here yet." },
    "pager": { "total": "{{count}} total", "prev": "Previous", "next": "Next" },
    "confirm": { "reason": "Reason (required)", "typeToConfirm": "Type {{value}} to confirm" },
    "shell": {
      "admin": "Admin",
      "checkingAccess": "Checking access...",
      "restrictedTitle": "Restricted Access",
      "restrictedDesc": "This area is reserved for administrators. If you believe this is an error, please contact support.",
      "backToSite": "Back to site",
      "superAdmin": "Super Admin",
      "exit": "Exit admin",
      "online": "Online:",
      "presenceTooltip": "{{email}} · tab {{tab}} · {{seconds}}s ago",
      "help": "Help",
      "helpTooltip": "Contextual help"
    },
    "dashboard": {
      "timeAgoNow": "just now",
      "timeAgoMin": "{{value}} min ago",
      "timeAgoHour": "{{value}} h ago",
      "timeAgoDay": "{{value}} d ago",
      "typeSignup": "Signup",
      "typeFeedback": "Feedback",
      "typeSupport": "Support",
      "typeSurvey": "Survey",
      "typeRgpd": "GDPR",
      "typeReport": "Report",
      "vsPrevPeriod": "vs prev. period",
      "loading": "Loading dashboard…",
      "title": "Overview",
      "subtitle": "Business health, revenue and engagement.",
      "todoSupportAwaiting": "Support tickets awaiting",
      "todoFeedbackNew": "New feedback",
      "todoRgpdPending": "GDPR requests to process",
      "todoReportedPending": "Reported content",
      "todoTitle": "To do",
      "todoEmpty": "Nothing pending. 🎉",
      "recentTitle": "Latest activity",
      "recentEmpty": "No recent activity.",
      "realtime": "Real time",
      "onlineNow": "online (5 min)",
      "active15m": "active (15 min)",
      "lastSignup": "Latest signup: {{name}}",
      "arpuSub": "ARPU {{value}}",
      "payingUsersSub": "{{value}} paying subscribers",
      "usersLabel": "Users",
      "convertedSub": "{{value}}% converted to PRO",
      "signups30dLabel": "Signups 30d",
      "dauLabel": "DAU (active 24h)",
      "mauLabel": "MAU (active 30d)",
      "stickinessLabel": "Stickiness DAU/MAU",
      "stickinessSub": "Daily engagement",
      "growthTitle": "Growth (30 days)",
      "signupsSeries": "Signups",
      "activeSeries": "Active",
      "planDistributionTitle": "Plan distribution"
    },
    "analytics": {
      "periodToday": "Today",
      "periodAll": "All",
      "periodDays": "{{count}} days",
      "tooltipTotalConnections": "Total logins:",
      "tooltipUniqueUsers": "Unique users:",
      "defaultUsername": "User",
      "resetRange": "Reset date range",
      "statUniqueUsers": "Unique users",
      "statTotalConnections": "Total logins",
      "statAvgSessions": "Avg. sessions / user",
      "statNewRegistrations": "New sign-ups",
      "loadingData": "Loading data...",
      "noDataForPeriod": "No data for this period",
      "chartVisitors": "Visitors",
      "chartConnections": "Logins",
      "legendUniqueVisitors": "Unique visitors",
      "legendTotalConnections": "Total logins",
      "envTitle": "Environment",
      "envBrowsers": "Browsers",
      "envDevices": "Devices",
      "locTitle": "Location",
      "locCountries": "Countries",
      "locRegions": "Regions",
      "locCities": "Cities",
      "loadingActiveUsers": "Loading active users...",
      "noActiveUsers": "No active users",
      "noActiveUsersHint": "Try adjusting your filters or the period.",
      "colUser": "User",
      "colConnections": "Logins",
      "colLastLocation": "Last location",
      "colLastDevice": "Last device",
      "colLastActivity": "Last activity",
      "unknown": "Unknown",
      "activeUsersSingular": "{{count}} active user",
      "activeUsersPlural": "{{count}} active users",
      "pageIndicator": "page {{page}} / {{total}}"
    },
    "revenue": {
      "migrationDone": "{{count}} account(s) migrated.",
      "tabMrr": "MRR waterfall",
      "tabForecast": "Forecast",
      "tabPromos": "Promo codes",
      "tabReconciliation": "Reconciliation",
      "tabMigration": "Plan migration",
      "title": "Revenue",
      "subtitle": "MRR movements, forecast, promos and billing operations.",
      "exportFailed": "Operation failed",
      "exportAccounting": "Accounting export (VAT)",
      "currentMrr": "Current MRR",
      "currentArr": "Current ARR",
      "noHistory": "The MRR movement history is built from upcoming subscription changes (via Stripe webhooks). The bars will fill in as plans evolve.",
      "breakdownTitle": "Movement breakdown (6 months)",
      "new": "New",
      "expansion": "Expansion",
      "contraction": "Contraction",
      "churn": "Churn",
      "forecastTitle": "MRR forecast (6 months)",
      "avgGrowth": "Avg. growth: {{value}}/mo",
      "current": "Current",
      "projectedMrr": "Projected MRR",
      "code": "Code",
      "reduction": "Discount",
      "usages": "Uses",
      "estimatedRevenue": "Estimated revenue",
      "active": "Active",
      "noPromos": "No promo codes.",
      "stripeNotConfigured": "Stripe not configured — reconciliation unavailable.",
      "noDiscrepancy": "No discrepancy detected between the database and Stripe. {{count}} subscribers checked. 🎉",
      "discrepancies": "{{count}} discrepancy(ies) detected",
      "migrationTitle": "Bulk plan migration",
      "migrationDesc": "Moves all users from one plan to another (price grandfathering). Always run a dry-run first.",
      "dryRunResult": "Dry-run: {{count}} account(s) would be migrated.",
      "migratedResult": "{{count}} account(s) migrated ✓",
      "dryRunBtn": "Dry-run",
      "migrateConfirm": "Migrate all {{from}} to {{to}}?",
      "apply": "Apply"
    },
    "surveys": {
      "actionShown": "Enabled",
      "actionHidden": "Disabled",
      "actionCreated": "Created",
      "actionUpdated": "Updated",
      "title": "Surveys & NPS",
      "subtitle": "Measure satisfaction and read feedback.",
      "newSurvey": "New survey",
      "empty": "No surveys yet. Create your first NPS survey.",
      "inactive": "inactive",
      "viewResponses": "View responses",
      "activationHistory": "Activation history",
      "deactivate": "Deactivate",
      "activate": "Activate",
      "confirmDelete": "Delete?",
      "npsScore": "NPS score",
      "avgScore": "Average score",
      "responses": "Responses",
      "editSurvey": "Edit survey",
      "language": "Language:",
      "defaultLang": "(default)",
      "emptyFallback": "(empty = FR fallback)",
      "internalTitle": "Internal title",
      "titleLang": "Title ({{lang}})",
      "questionPlaceholder": "Question asked to the user",
      "questionLang": "Question ({{lang}})",
      "typeNps": "NPS (0-10)",
      "typeCsat": "CSAT (1-5)",
      "typeText": "Free text",
      "audienceFree": "Free users",
      "startDate": "Start (optional)",
      "endDate": "End (optional)",
      "dateHint": "If set, the survey is only shown to users between these two dates.",
      "noResponses": "No responses yet.",
      "scoreLabel": "Score: {{score}}",
      "textResponse": "Text",
      "noEvents": "No events recorded yet.",
      "byActor": "by {{name}}"
    },
    "users": {
      "title": "Users",
      "subtitle_one": "{{count}} account — search, edit and moderate.",
      "subtitle_other": "{{count}} accounts — search, edit and moderate.",
      "searchPlaceholder": "Search by email or username…",
      "exportCsv": "Export CSV",
      "exportFilename": "users.csv",
      "allPlans": "All plans",
      "allRoles": "All roles",
      "allStatus": "Any status",
      "statusActive": "Active",
      "statusSuspended": "Suspended",
      "allCountries": "All countries",
      "minReptiles": "Min. reptiles",
      "reset": "Reset",
      "selectedCount_one": "{{count}} selected",
      "selectedCount_other": "{{count}} selected",
      "clear": "Clear",
      "suspend": "Suspend",
      "reactivate": "Reactivate",
      "changePlan": "Change plan",
      "selectAll": "Select all (current page)",
      "colUser": "User",
      "plan": "Plan",
      "roles": "Roles",
      "colReptiles": "Reptiles",
      "colRegistered": "Joined",
      "empty": "No users found.",
      "suspended": "Suspended",
      "active": "Active",
      "impersonate": "Sign in as user",
      "crmTitle": "CRM & roles",
      "resetPassword": "Reset password",
      "unsuspend": "Lift suspension",
      "forceLogout": "Force logout",
      "exportGdpr": "GDPR export",
      "pageOf": "Page {{page}} / {{totalPages}}",
      "editTitle": "Edit {{name}}",
      "emailVerified": "Email verified",
      "saving": "Saving…",
      "resetMsg": "Set a new password for {{name}}. The user will be signed out.",
      "resetConfirm": "Reset",
      "newPasswordPlaceholder": "New password (min 8)",
      "suspendTitle": "Suspend account",
      "suspendMsg": "Suspend {{name}}. The account will be blocked and the user signed out.",
      "days": "days",
      "reasonOptional": "Reason (optional)",
      "logoutMsg": "Revoke all sessions for {{name}}?",
      "logoutConfirm": "Log out",
      "deleteTitle": "Delete account",
      "deleteMsg": "This action is irreversible and will delete all of {{name}}'s data (GDPR).",
      "deleteConfirm": "Delete permanently",
      "deleteReasonPlaceholder": "Reason for deletion (required)",
      "impersonateMsg": "Open a session as {{name}}? You will be signed out of your admin account and redirected to their dashboard. This action is logged.",
      "impersonateConfirm": "Sign in",
      "bulkSuspendTitle": "Suspend selected accounts",
      "bulkSuspendMsg": "{{count}} account(s) will be suspended and signed out.",
      "processing": "Processing…",
      "bulkUnsuspendTitle": "Reactivate accounts",
      "bulkUnsuspendMsg": "Lift the suspension on {{count}} account(s)?",
      "bulkSetPlanMsg": "Apply a new plan to {{count}} account(s).",
      "apply": "Apply",
      "newPlan": "New plan",
      "bulkDeleteTitle": "Delete selected accounts",
      "bulkDeleteMsg": "This action is irreversible and will permanently delete {{count}} account(s) and all their data (GDPR). Your own account will be skipped.",
      "deleting": "Deleting…",
      "bulkDeleteConfirm": "Delete {{count}} account(s)",
      "healthScore": "Health score",
      "healthFactors": "{{days}}d since activity · {{snakes}} reptiles · {{plan}}",
      "profileModeration": "Public profile moderation",
      "hidden": "Hidden",
      "visible": "Visible",
      "verified": "Verified",
      "notVerified": "Not verified",
      "tags": "Tags",
      "noTags": "No tags",
      "addTagPlaceholder": "Add a tag",
      "internalNotes": "Internal notes",
      "addNotePlaceholder": "Add a note…",
      "adminAuthor": "Admin",
      "noNotes": "No notes.",
      "bulkPartialFail": "{{succeeded}} action(s) succeeded, {{failed}} failed out of {{requested}}.",
      "reasonRequired": "A reason is required for this action.",
      "passwordTooShort": "Password too short (min 8)",
      "impersonateFailed": "Unable to sign in to the account.",
      "impersonateError": "Error while signing in to the account.",
      "subtitle": "{{count}} user(s) in total",
      "selectedCount": "{{count}} selected"
    },
    "roles": {
      "confirmDelete": "Delete the \"{{name}}\" role?",
      "unsavedConfirm": "Unsaved changes will be lost. Continue?",
      "title": "Roles & permissions",
      "subtitle": "Granular access control (RBAC).",
      "newRole": "New role",
      "permsCount": "{{n}} perms",
      "selectPrompt": "Select a role to manage its permissions.",
      "selectedCount_one": "{{count}} permission selected",
      "selectedCount_other": "{{count}} permissions selected",
      "usersWithRole": "Users with this role ({{n}})",
      "noUsers": "No user has this role.",
      "namePlaceholder": "Role name (e.g. moderator)",
      "descPlaceholder": "Description (optional)",
      "editRole": "Edit role",
      "systemRoleNameLocked": "The name of a system role cannot be changed.",
      "selectedCount": "{{count}} permission(s) selected"
    },
    "billing": {
      "pagerSingular": "{{count}} subscriber · page {{page}}/{{totalPages}}",
      "pagerPlural": "{{count}} subscribers · page {{page}}/{{totalPages}}",
      "confirmFullRefund": "Confirm the FULL refund of this payment?",
      "refundInitiated": "Refund initiated.",
      "invalidAmount": "Invalid amount.",
      "partialRefundInitiated": "Partial refund initiated.",
      "subNotFound": "Stripe subscription not found.",
      "confirmCancelSub": "Permanently cancel this subscription? This action is immediate and irreversible.",
      "subCanceled": "Subscription canceled.",
      "subPaused": "Subscription paused.",
      "subResumed": "Subscription resumed.",
      "tabSubs": "Subscriptions",
      "tabFailed": "Failed payments",
      "tabPromos": "Promo codes",
      "tabWebhooks": "Webhooks",
      "stripeOff": "Stripe is not configured on the server (missing API key). Live Stripe data is unavailable; promo codes remain manageable locally.",
      "title": "Billing",
      "subtitle": "Subscriptions, payments and promo codes.",
      "promoBtn": "Promo code",
      "colClient": "Customer",
      "colPlan": "Plan",
      "colAmount": "Amount",
      "colRenewal": "Renewal",
      "emptySubs": "No paying subscribers.",
      "paused": "paused",
      "resumeSub": "Resume subscription",
      "pauseSub": "Pause",
      "cancelSub": "Cancel subscription",
      "colAttempts": "Attempts",
      "colAction": "Action",
      "emptyFailed": "No failed payments. 🎉",
      "refundBtn": "Refund",
      "partialBtn": "Partial",
      "invoice": "Invoice",
      "colCode": "Code",
      "colDiscount": "Discount",
      "colUsed": "Used",
      "colExpires": "Expires",
      "colActive": "Active",
      "emptyPromos": "No promo codes.",
      "never": "Never",
      "deactivate": "Deactivate",
      "activate": "Activate",
      "confirmDeletePromo": "Delete this code?",
      "emptyWebhooks": "No events.",
      "newPromoTitle": "New promo code",
      "codePlaceholder": "CODE (e.g. WELCOME10)",
      "percentPlaceholder": "% off",
      "maxUsesPlaceholder": "Max uses",
      "partialRefundTitle": "Partial refund",
      "customer": "Customer",
      "amountPaid": "amount paid {{amount}}",
      "refundAmountLabel": "Amount to refund (€)"
    },
    "families": {
      "deleteConfirm": "Delete this family? The reptiles will be detached.",
      "title": "Families & collaboration",
      "subtitle": "Shared collections, members and analytics.",
      "statFamilies": "Families",
      "statCollaborators": "Collaborators",
      "collaboratorPct": "{{pct}}% of users",
      "avgSize": "Average size",
      "membersPerFamily": "members / family",
      "largest": "Largest",
      "searchPlaceholder": "Search for a family by name…",
      "colMembers": "Members",
      "colReptiles": "Reptiles",
      "colCreated": "Created",
      "empty": "No families.",
      "pagination_one": "Page {{page}} / {{totalPages}} · {{count}} family",
      "pagination_other": "Page {{page}} / {{totalPages}} · {{count}} families",
      "detailCounts": "{{reptiles}} reptiles · {{members}} members",
      "deleteFamily": "Delete this family",
      "pagination": "Page {{page}}/{{totalPages}} · {{count}} family(ies)"
    },
    "support": {
      "statusNew": "New",
      "statusInProgress": "In progress",
      "statusResolved": "Resolved",
      "catBug": "Bug",
      "catFeature": "Idea",
      "catUi": "Design",
      "catGeneral": "Review",
      "tabTickets": "Support Tickets",
      "tabFeedback": "Reviews & Feedback",
      "title": "Support Center",
      "subtitleTickets": "Manage assistance requests.",
      "subtitleFeedback": "Analyze community feedback.",
      "statTotalTickets": "Total Tickets",
      "statPending": "Pending",
      "statAwaitingReply": "Awaiting reply",
      "statResolved": "Resolved",
      "slaFirstResponse": "First response (avg.)",
      "slaTarget": "/ SLA {{hours}}h",
      "slaResolution": "Resolution (avg.)",
      "slaBreaches": "SLA breaches",
      "statAvgRating": "Average Rating",
      "statTotalFeedback": "Total Reviews",
      "statBugsReported": "Bugs Reported",
      "statIdeasReceived": "Ideas Received",
      "searchTicketsPlaceholder": "Search (subject, email, name)… then Enter",
      "filterBugs": "Bugs",
      "filterIdeas": "Ideas",
      "filterDesign": "Design",
      "filterGeneral": "General",
      "thUser": "User",
      "thSubject": "Subject",
      "thType": "Type",
      "thRatingMessage": "Rating & Message",
      "newReply": "New reply",
      "noComment": "No comment left",
      "emptyTickets": "No tickets found.",
      "emptyFeedback": "No reviews found.",
      "paginationInfo": "{{count}} tickets · page {{page}}/{{totalPages}}",
      "userMessageLabel": "User message",
      "conversation": "Conversation",
      "reply": "Reply",
      "templates": "Templates",
      "noTemplates": "No templates. Create some in the Content tab.",
      "replyPlaceholder": "Your reply to the user…",
      "send": "Send",
      "priority": "Priority",
      "priorityLow": "Low",
      "priorityNormal": "Normal",
      "priorityHigh": "High",
      "priorityUrgent": "Urgent",
      "category": "Category",
      "sendError": "Error while sending"
    },
    "content": {
      "actionShown": "Shown",
      "actionHidden": "Hidden",
      "actionCreated": "Created",
      "actionUpdated": "Updated",
      "actionDeleted": "Deleted",
      "langLabel": "Language:",
      "langDefault": "(default)",
      "langTranslation": "(translation — empty = falls back to FR)",
      "confirmDelete": "Permanently delete this item? (To hide it temporarily, use the eye icon instead.)",
      "tabFaq": "FAQ",
      "tabAnnouncements": "Announcements",
      "tabChangelog": "Changelog",
      "tabTemplates": "Reply templates",
      "visibleHint": "Visible — click to hide",
      "hiddenHint": "Hidden — click to show",
      "visible": "Visible",
      "hidden": "Hidden",
      "title": "Content",
      "subtitle": "FAQ, announcements, changelog and reply templates. The eye icon shows/hides without deleting.",
      "seedSuccess": "Site content loaded: {{faq}} FAQ, {{announcements}} announcements, {{changelog}} changelog, {{templates}} templates",
      "seedSuccessExtra": ", {{emails}} emails, {{surveys}} surveys",
      "seedBtn": "Load site content",
      "empty": "No items. Click \"Add\" or \"Load site content\" to get started.",
      "visibilityHistory": "Visibility history",
      "new": "New",
      "question": "Question",
      "answer": "Answer",
      "category": "Category",
      "publishedSite": "Published (visible on the site)",
      "fieldTitle": "Title",
      "fieldTitleLang": "Title ({{lang}})",
      "fieldMessage": "Message",
      "fieldMessageLang": "Message ({{lang}})",
      "typeInfo": "Info",
      "typeWarning": "Warning",
      "typeSuccess": "Success",
      "typeMaintenance": "Maintenance",
      "startsAt": "Visible from (optional)",
      "endsAt": "Until (optional)",
      "activeApp": "Active (visible in the app)",
      "targetingLabel": "Targeting (optional) — leave empty to broadcast to",
      "targetingAll": "everyone",
      "targetPlaceholder": "Target specific users…",
      "versionPlaceholder": "Version (v2.1.0)",
      "changelogNotesPlaceholder": "Notes — one line per change:\n+ New feature\n~ Improvement\n! Bug fix",
      "changelogHintPrefix": "Tip: prefix each line with",
      "changelogHintNew": "(new),",
      "changelogHintImprove": "(improvement) or",
      "changelogHintFix": "(fix) — they will appear as colored badges on the public page.",
      "publishedChangelog": "Published (visible on /changelog)",
      "majorUpdate": "Major update (green badge)",
      "templateTitle": "Template title",
      "templateBody": "Template content",
      "saving": "Saving…",
      "noEvents": "No events recorded yet.",
      "by": "by {{name}}"
    },
    "moderation": {
      "title": "Moderation",
      "subtitle": "Reported content and struggling accounts.",
      "tabReports": "Reported content",
      "tabStruggling": "Struggling accounts",
      "filterAll": "All statuses",
      "filterReviewed": "Reviewed",
      "filterDismissed": "Dismissed",
      "filterActioned": "Actioned",
      "statusPending": "Pending",
      "statusReviewed": "Reviewed",
      "statusActioned": "Actioned",
      "statusDismissed": "Dismissed",
      "typeProfile": "Profile",
      "typePhoto": "Photo",
      "typeFamily": "Family",
      "emptyReports": "No reported content.",
      "emptyStruggling": "No struggling accounts detected.",
      "targetRef": "target #{{id}}",
      "targetLabel": "Target: ",
      "targetUnresolved": "unresolvable",
      "owner": "owner #{{id}}",
      "reportedBy": "Reported by: ",
      "reporterAnonymous": "anonymous / unknown",
      "changeStatusTitle": "Change status",
      "sanctionBtn": "Sanction",
      "sanctionsFor": "Sanctions — owner #{{id}}",
      "reasonPlaceholder": "Reason (visible in the audit log)…",
      "hideProfileBtn": "Hide profile",
      "showProfileBtn": "Restore",
      "suspendDurationTitle": "Duration in days",
      "daysShort": "d",
      "suspendBtn": "Suspend",
      "ticketsCount": "{{count}} tickets",
      "statusUpdated": "Status updated",
      "sanctionReasonPrefix": "Following the report: {{reason}}",
      "confirmHideProfile": "Hide this user's public profile?",
      "profileHidden": "Profile hidden",
      "profileShown": "Profile restored",
      "invalidDays": "Invalid number of days",
      "confirmSuspend": "Suspend this user for {{days}} day(s)?",
      "defaultSuspendReason": "Suspension following moderation",
      "userSuspended": "User suspended for {{days}} d"
    },
    "genetics": {
      "newSpeciesPrompt": "Identifier for the new species (e.g. python-regius):",
      "invalidJson": "Invalid JSON — check the syntax.",
      "confirmDelete": "Delete the species \"{{id}}\"?",
      "confirmMerge": "Merge \"{{source}}\" into \"{{target}}\"? The source will be deleted.",
      "title": "Genetic registry",
      "subtitle": "{{count}} species — catalog, loci/morph editing and merging.",
      "newSpeciesBtn": "+ Species",
      "searchPlaceholder": "Search for a species…",
      "colSpecies": "Species",
      "colFamily": "Family",
      "colLoci": "Loci",
      "colCompleteness": "Completeness",
      "empty": "No species.",
      "merge": "Merge",
      "newSpeciesTitle": "New species",
      "jsonWarning": "Direct editing of the registry JSON. Keep the structure intact (species, groups, loci, namedCombos).",
      "mergeTitle": "Merge a species",
      "mergeSource": "Source:",
      "mergeSourceInfo": "Its loci, aliases and combos will be copied into the target, then the source will be deleted.",
      "mergeTargetPlaceholder": "Target identifier (e.g. python-regius)"
    },
    "comms": {
      "audiencePro": "PRO subscribers",
      "audienceFree": "Free users",
      "audienceProInactive30d": "PRO inactive 30d",
      "audienceInactive30d": "Inactive 30d",
      "audienceActive7d": "Active 7d",
      "audienceSpecific": "Specific users",
      "confirmSendCampaign": "Send this campaign now?",
      "confirmSendEmail": "Send this email to {{count}} recipient(s)?",
      "emailSent": "Sent to {{count}} recipient(s).",
      "confirmDelete": "Delete?",
      "tabPush": "Push campaigns",
      "tabEmail": "Segmented email",
      "tabTemplates": "Email templates",
      "tabStats": "Adoption & deliverability",
      "title": "Communication",
      "subtitle": "Push, segmented emails, templates and adoption.",
      "pushCampaignBtn": "Push campaign",
      "emptyCampaigns": "No campaigns. Create one.",
      "received": "{{count}} received",
      "send": "Send",
      "targetSegment": "Target segment",
      "recipients": "{{count}} recipient(s)",
      "emailSubjectPlaceholder": "Email subject",
      "emailContentPlaceholder": "Content (HTML allowed)",
      "sendToSegment": "Send to segment",
      "templateDefault": "(default values — edit to customize)",
      "pushAdoption": "Push adoption",
      "emailsEnabled": "Emails enabled",
      "feedingReminders": "Feeding reminders",
      "emailFailure": "Email failures",
      "sent": "{{count}} sent",
      "newPushCampaign": "New push campaign",
      "pushTitlePlaceholder": "Title",
      "pushMessagePlaceholder": "Message",
      "pushUrlPlaceholder": "Click-through URL (e.g. /dashboard)",
      "potentialRecipients": "{{count}} potential recipient(s)",
      "createDraft": "Create (draft)",
      "templateLabel": "Template:",
      "templateVarsHint": "Variables like {{example}} are replaced when sending.",
      "subjectPlaceholder": "Subject",
      "htmlContentPlaceholder": "HTML content"
    },
    "system": {
      "pagerInfo_one": "{{count}} entry · page {{page}}/{{totalPages}}",
      "pagerInfo_other": "{{count}} entries · page {{page}}/{{totalPages}}",
      "cleanupConfirm": "Permanently delete {{n}} orphan file(s)? This action is irreversible.",
      "operationFailed": "Operation failed",
      "tabHealth": "Health",
      "tabErrors": "Errors",
      "tabCron": "CRON",
      "tabJobs": "Jobs",
      "tabEmails": "Sent emails",
      "tabUsage": "Feature usage",
      "tabUploads": "Uploads",
      "tabI18n": "i18n",
      "tabAudit": "Audit",
      "title": "System",
      "subtitle": "Observability, jobs, translations and audit log.",
      "dbLabel": "Database",
      "dbOffline": "OFFLINE",
      "uploadsValue": "{{size}} · {{n}} files",
      "memoryLabel": "Memory (RSS)",
      "memoryValue": "{{mb}} MB",
      "uptimeLabel": "Uptime",
      "checkedInLabel": "Checked in",
      "topErrorEndpoints": "Top error endpoints (7d)",
      "noErrors": "No errors recorded. 🎉",
      "never": "never",
      "lastRun": "Last run:",
      "errorLabel": "Error:",
      "lastPassNotifs": "{{n}} notif. on last run",
      "sent30d": "{{sent}} over 30 d ({{runs}} runs)",
      "filterSent": "Sent",
      "filterFailed": "Failed",
      "noJobRuns": "No runs recorded.",
      "jobsSent_one": "{{count}} sent",
      "jobsSent_other": "{{count}} sent",
      "topFeatures": "Most used features (30d)",
      "topFeaturesHint": "Click a feature to view its daily history.",
      "noUsage": "No usage data yet. Tracking starts as soon as a user uses a feature.",
      "loadingHistory": "Loading history…",
      "usageOver30d": "{{n}} use(s) over 30 days",
      "orphanFiles": "Orphan files",
      "filesCount": "{{n}} file(s)",
      "deleteOrphans": "Delete orphans",
      "noOrphans": "No orphan files detected.",
      "exportCsv": "Export CSV",
      "coverageDetail": "{{done}} / {{total}} · {{missing}} missing",
      "unusedKeysTitle": "Potentially unused keys (FR) — {{n}}",
      "unusedKeysHint": "Keys present in JSON but not detected in the source code ({{scanned}} files scanned). Review before deleting (some may be built dynamically).",
      "searchEmails": "Search by recipient or type… then Enter",
      "noEmails": "No emails recorded. Capture starts with the next send.",
      "searchAudit": "Search (action, email, target)… then Enter",
      "noAuditActions": "No actions recorded.",
      "systemActor": "system",
      "pagerInfo": "{{count}} entry(ies) · page {{page}}/{{totalPages}}",
      "jobsSent": "{{count}} sent"
    },
    "infra": {
      "cronHourlyReminders": "Hourly reminders",
      "cronFeedbackRequests": "Feedback requests",
      "cronProDiscovery": "PRO discovery emails",
      "cronInactiveUsers": "Inactive user follow-up",
      "cronBreedingReminders": "Breeding reminders",
      "jobStarted": "Job \"{{job}}\" started.",
      "backupCreated": "Backup created.",
      "backupFailed": "Failed: {{detail}}",
      "cacheCleared": "Cache cleared.",
      "tabLatency": "Latency",
      "tabCron": "CRON (run now)",
      "tabStorage": "Storage",
      "tabSql": "SQL (read-only)",
      "tabBackups": "Backups",
      "title": "Infrastructure",
      "subtitle": "Performance, webhooks, jobs, storage and database.",
      "latencyEmpty": "No measurements yet. Latencies are collected as requests come in (in-memory buffer).",
      "colRequests": "Requests",
      "webhooksEmpty": "No webhook deliveries recorded.",
      "replay": "Replay",
      "run": "Run",
      "storageEmpty": "No storage data.",
      "colUser": "User",
      "colSpace": "Space",
      "sqlReadOnly": "Read-only: only SELECT queries are allowed (limited to 200 rows). No modifications possible.",
      "execute": "Execute",
      "rowsCount": "{{count}} row(s)",
      "runBackup": "Run a backup",
      "backupsEmpty": "No backups recorded.",
      "fileSize": "{{size}} MB · ",
      "cacheTitle": "Application cache",
      "cacheEntries": "{{count}} cached entry(ies) (dashboard aggregations, short TTL).",
      "clearCache": "Clear cache"
    },
    "compliance": {
      "tabRgpd": "GDPR",
      "tabConsents": "Consents",
      "tabRetention": "Retention",
      "tabPassword": "Password",
      "tabMaintenance": "Maintenance",
      "tabSessions": "Admin sessions",
      "tabSuspicious": "Suspicious logins",
      "tabPermissions": "Permission history",
      "tabIncidents": "Status / incidents",
      "title": "Security & compliance",
      "subtitle": "GDPR, consents, retention, access and service status.",
      "newRequest": "New request",
      "emptyRgpd": "No GDPR requests.",
      "dueDate": "Due:",
      "statusPending": "Pending",
      "statusInProgress": "In progress",
      "statusCompleted": "Completed",
      "statusRejected": "Rejected",
      "rgpdRequest": "GDPR request",
      "emailConcerned": "Email concerned",
      "typeExport": "Data export",
      "typeDelete": "Deletion (right to be forgotten)",
      "noteOptional": "Note (optional)",
      "emptyConsents": "No consents recorded.",
      "granted": "Granted",
      "refused": "Refused",
      "policySaved": "Policy saved.",
      "purgeConfirm": "Run the purge now? Data older than the policy will be deleted.",
      "purgeDone": "Purge completed: {{result}}",
      "fieldLoginLogs": "Login logs",
      "fieldErrorLogs": "Error logs",
      "fieldAudit": "Audit log",
      "fieldJobRuns": "Job history",
      "retentionTitle": "Data retention",
      "retentionHint": "Retention period in days (0 = unlimited).",
      "purgeNow": "Purge now",
      "passwordTitle": "Password policy",
      "minLength": "Minimum length",
      "requireUppercase": "Uppercase required",
      "requireNumber": "Number required",
      "requireSymbol": "Symbol required",
      "expiration": "Expiration (days, 0 = never)",
      "maintenanceUpdated": "Maintenance mode updated.",
      "maintenanceTitle": "Maintenance mode",
      "maintenanceActive": "Maintenance ON — the site shows the banner",
      "maintenanceDisabled": "Maintenance disabled",
      "maintenanceMessagePlaceholder": "Message shown to users",
      "emptySessions": "No admin sessions.",
      "noConnections": "No logins recorded.",
      "noSuspicious": "No suspicious logins detected in 7 days. 🎉",
      "bruteForce": "Brute force",
      "multiCountry": "Multi-country",
      "emptyPermissions": "No permission changes recorded.",
      "byActor": "by {{actor}}",
      "system": "system",
      "declareIncident": "Report an incident",
      "noIncidents": "No incidents. All systems operational. 🟢",
      "resolve": "Resolve",
      "deleteConfirm": "Delete?",
      "incidentTitlePlaceholder": "Title",
      "severityMinor": "Minor",
      "severityMajor": "Major",
      "severityMaintenance": "Maintenance",
      "declare": "Report"
    }
  },
  "auth": {
    "login_success": "You are logged in.",
    "register_success": "Account created! Please log in.",
    "login_title": "Sign In",
    "login_subtitle": "Welcome back!",
    "register_title": "Create Account",
    "register_subtitle": "Start your breeding journey.",
    "email_label": "Email Address",
    "email_placeholder": "your@email.com",
    "password_label": "Password",
    "forgot_password_link": "Forgot password?",
    "confirm_password_label": "Confirm Password",
    "sign_in_button": "Sign In",
    "sign_up_button": "Sign Up",
    "not_member_text": "Not a member yet?",
    "already_member_text": "Already have an account?",
    "create_account_button": "Create Account",
    "back_to_signin_button": "Back to Sign In",
    "hero": {
      "title_part1": "Breeding",
      "title_highlight": "reinvented.",
      "subtitle": "Join the elite of herpetoculture. Weight tracking, advanced genetics, and collection management in an interface built for performance.",
      "feature_1": "Secure Cloud Backup",
      "feature_2": "Detailed pedigrees & birth certificates",
      "feature_3": "Pairing, clutch & incubation management",
      "feature_4": "Weight, shedding & feeding tracking",
      "feature_5": "Secure cloud backup, accessible anywhere",
      "footer": "© {{year}} ReptiNode Inc. Powering modern breeders."
    },
    "accountCreated": "Account created. You can sign in now.",
    "backToSignIn": "Back to Sign In",
    "confirmPassword": "Confirm Password",
    "confirmPasswordPlaceholder": "Confirm password",
    "createAccount": "Create Account",
    "createAccountBtn": "Create Account",
    "createYourAccount": "Create your account",
    "defineNewPassword": "Set a new password",
    "defineNewPasswordSubtitle": "Choose a strong password for your account.",
    "email": "Email Address",
    "emailPlaceholder": "Email address",
    "forgotPassword": "Forgot your password?",
    "hasAccount": "Already have an account?",
    "hide": "Hide",
    "hidePassword": "Hide password",
    "invalidOrExpiredToken": "Invalid or expired token.",
    "loggedIn": "Signed in successfully.",
    "newPassword": "New Password",
    "noAccount": "Don't have an account?",
    "password": "Password",
    "passwordPlaceholder": "Password",
    "passwordUpdated": "Password updated. You can sign in now.",
    "passwordsDontMatch": "Passwords do not match.",
    "passwordsNotMatch": "Passwords do not match.",
    "processing": "Processing...",
    "resetPassword": "Reset Password",
    "resetSent": "Password reset email sent.",
    "resetSubtitle": "Enter your email to receive a password reset link.",
    "sendReset": "Send Reset Email",
    "show": "Show",
    "showPassword": "Show password",
    "signIn": "Sign In",
    "signInBtn": "Sign In",
    "signInSubtitle": "Sign in to your account",
    "signUp": "Sign Up",
    "signUpSubtitle": "Start managing your reptile collection today",
    "signUpSuccess": "Account created successfully.",
    "subscribe": "Start Now",
    "trialExpired": "Your 14-day free trial has expired. Please subscribe to continue using ReptiNode.",
    "updatePassword": "Update Password",
    "welcomeBack": "Welcome Back !",
    "forgot_password": {
      "form_title": "Forgot Password?",
      "form_subtitle": "Enter your email to receive a reset link.",
      "back_button": "Back",
      "email_label": "Email Address",
      "email_placeholder": "you@email.com",
      "submit_button": "Send Reset Link",
      "success_title": "Email sent!",
      "success_message": "Check your inbox (and spam folder) to find the reset link.",
      "retry_button": "Resend email",
      "sidebar": {
        "title": "Trouble logging in?",
        "description": "Don't worry. The process is simple and secure. Follow the steps below to regain access to your collection."
      },
      "steps": {
        "1": {
          "title": "Enter your email",
          "desc": "We will identify your account."
        },
        "2": {
          "title": "Check your inbox",
          "desc": "A unique link will be sent to you."
        },
        "3": {
          "title": "Create a new password",
          "desc": "Secure your access again."
        }
      }
    },
    "errors": {
      "invalid_token": "Invalid or expired link (missing token).",
      "passwords_not_match": "Passwords do not match."
    },
    "reset_password": {
      "form_title": "Set new password",
      "form_subtitle": "Please enter your new password below to access your account.",
      "label_new_password": "New Password",
      "label_confirm_password": "Confirm Password",
      "submit_button": "Update Password",
      "success_title": "Password Updated",
      "success_message": "Your password has been successfully updated.",
      "redirecting": "Redirecting...",
      "sidebar": {
        "badge": "Maximum Security",
        "title": "Secure your account.",
        "description": "Choose a strong password to protect your breeding genetics and tracking data.",
        "tips_title": "Security Tips",
        "tip_1": "Use at least 8 characters",
        "tip_2": "Mix letters, numbers, and symbols",
        "tip_3": "Avoid using your reptiles' names"
      }
    }
  },
  "add_snake": {
    "title": "Add a Reptile",
    "edit_title": "Edit Profile",
    "photo_label": "Reptile Photo",
    "add_photo_btn": "Add Photo",
    "name_label": "Name",
    "species_label": "Species",
    "morph_label": "Morph",
    "locality_label": "Locality",
    "locus_label": "Locus (Genetics)",
    "sex_label": "Sex",
    "sex_unknown": "Unknown",
    "sex_male": "Male",
    "sex_female": "Female",
    "birth_date_label": "Birth Date (or acquisition)",
    "notes_label": "Notes",
    "name_placeholder": "Ex: Banana Pied #05",
    "weight_label": "Initial Weight (g)"
  },
  "birthCert": {
    "transfer": {
      "docTitle": "CERTIFICATE OF TRANSFER",
      "seller": "1. TRANSFEROR (Seller / Donor)",
      "buyer": "2. TRANSFEREE (Buyer / Recipient)",
      "animalDesc": "3. ANIMAL DESCRIPTION",
      "scientificName": "Scientific Name",
      "commonName": "Common Name",
      "birthDate": "Date of Birth",
      "sex": "Sex",
      "id": "Marking (Microchip/ID)",
      "origin": "Origin",
      "legalStatus": "Legal Status",
      "price": "Price / Terms",
      "nc": "Born in captivity",
      "annex": "Annex {{annex}} (EU Regulation)",
      "free": "Free of charge / Donation",
      "notProvided": "Address not provided",
      "legal1": "The Transferor certifies that the animal described above comes from a regular and lawful breeding source.",
      "legal2": "The Transferor certifies having informed the Transferee of the housing, maintenance, and care conditions required for the species.",
      "legal3": "The Transferee agrees to keep this animal in conditions that meet its biological needs and comply with current regulations.",
      "doneAt": "Done at {{city}}, on {{date}}",
      "signSeller": "Signature of the TRANSFEROR",
      "signBuyer": "Signature of the TRANSFEREE",
      "readApproved": "Preceded by the phrase \"Read and approved\"",
      "declarations": "4. DECLARATIONS",
      "mandatoryTitle": "Mandatory notice",
      "authorityLabel": "Authority / reference",
      "breederRegNo": "Transferor licence / capacity / business no.",
      "quantity": "Number of specimens",
      "mark": "Marking / Identification",
      "source": "Source code (CITES)",
      "registrationId": "Registration no. (national register)",
      "citesCertId": "Intra-EU certificate no. (CIC)",
      "notListed": "Not CITES-listed",
      "field": "Field",
      "value": "Value"
    },
    "actions": {
      "generate": {
        "birth": {
          "title": "Birth"
        },
        "clutch": {
          "title": "Clutch report"
        },
        "hatch": {
          "title": "Hatch"
        },
        "id": {
          "title": "Identification"
        },
        "incubation": {
          "title": "Incubation"
        },
        "pedigree": {
          "title": "Pedigree"
        },
        "quarantine": {
          "title": "Quarantine"
        },
        "sexing": {
          "title": "Sexing"
        },
        "transfer": {
          "title": "Transfer / Sale"
        }
      }
    },
    "alerts": {
      "selectSnakeFirst": "Select a reptile first."
    },
    "banner": {
      "birth": "Birth Certificate",
      "clutch": "Clutch report",
      "hatch": "Hatch Certificate",
      "id": "Identification Certificate",
      "incubation": "Incubation report",
      "pedigree": "Pedigree (3 generations)",
      "quarantine": "Quarantine attestation",
      "sexing": "Sexing Certificate",
      "transfer": "Transfer / Invoice certificate"
    },
    "doc": {
      "creator": "ReptiNode",
      "subject": "Generated certificate"
    },
    "fields": {
      "birthDate": "Date of birth",
      "buyer": "Buyer",
      "clutch": "Clutch",
      "currentLength": "Current length",
      "currentWeight": "Current weight",
      "eggTotals": "Eggs (total/fertile)",
      "eggsTotalFertile": "Eggs (total/fertile)",
      "end": "End",
      "exportedOn": "Exported on",
      "female": "Female",
      "generationsShown": "Generations shown",
      "hatchDate": "Hatch date",
      "incubationTH": "Incubation (T°/RH)",
      "internalId": "Internal ID",
      "laidDate": "Laid date",
      "location": "Location",
      "male": "Male",
      "maternalGrandfather": "Maternal grandfather",
      "maternalGrandmother": "Maternal grandmother",
      "method": "Method",
      "morph": "Morph",
      "name": "Name",
      "operator": "Operator",
      "pair": "Pair",
      "paternalGrandfather": "Paternal grandfather",
      "paternalGrandmother": "Paternal grandmother",
      "price": "Price",
      "seller": "Seller",
      "sex": "Sex",
      "sexDetermined": "Determined sex",
      "species": "Species",
      "start": "Start",
      "targetHumidity": "Target humidity",
      "targetTemp": "Target T°"
    },
    "footer": {
      "generatedByApp": "Certificate generated by your app",
      "pageXofY": "Page {{page}} of {{total}}"
    },
    "hatch": {
      "clutchLine": "Clutch of {{date}} — {{eggs}} eggs"
    },
    "methods": {
      "autre": "Other",
      "echography": "Ultrasound",
      "other": "Other",
      "popping": "Popping",
      "probing": "Probing"
    },
    "pdf": {
      "footer": {
        "generatedBy": "Certificate generated by your app",
        "pageXofY": "Page {{page}} on {{total}}"
      },
      "numberShort": "No.",
      "watermark": "ReptiNode"
    },
    "preview": {
      "download": "Download",
      "page": "Page",
      "title": "PDF preview"
    },
    "section": {
      "animal": "Animal",
      "eggDetails": "Egg details",
      "generalInfo": "General information",
      "grandparentsG2": "Grandparents (G2)",
      "greatGrandparentsG3": "Great-grandparents (G3)",
      "info": "General information",
      "juvenile": "Juvenile",
      "parameters": "Parameters",
      "parents": "Parents",
      "parentsG1": "Parents (G1)",
      "parties": "Parties",
      "quarantinePeriod": "Quarantine period",
      "result": "Result",
      "subject": "Subject",
      "tracking": "Tracking (status & weight)"
    },
    "sections": {
      "eggs": "Egg details",
      "general": "General information",
      "grandparentsG2": "Grandparents (G2)",
      "greatGrandparentsG3": "Great-grandparents (G3)",
      "juvenile": "Juvenile",
      "params": "Parameters",
      "parents": "Parents",
      "parentsG1": "Parents (G1)",
      "subject": "Subject",
      "tracking": "Tracking (status & weight)"
    },
    "table": {
      "lastUpdate": "Last update",
      "lastUpdateShort": "Upd.",
      "num": "#",
      "status": "Status",
      "weight": "Weight"
    },
    "text": {
      "addMicrochipNote": "Add the microchip number here if applicable.",
      "adviceLogs": "Tip: to show T°/RH charts, record logs and export them here.",
      "attestedBy": "Attested by: ______________________",
      "breeder": "Breeder: ______________________",
      "breederSignature": "Breeder's signature: ______________________",
      "buyer": "Buyer: ______________________",
      "captiveBornCertified": "I certify that the animal described above was captive bred (CB).",
      "conditionsNote": "Warranty, return, and transport terms: specify here.",
      "dateLine": "Date: ____ / ____ / ______",
      "fillExtendedDataNote": "Fill in via extended data if available (not provided by default).",
      "hatchAttestationLine": "I, the undersigned, attest the captive hatching of the animal described above.",
      "owner": "Owner: ______________________",
      "seller": "Seller: ______________________",
      "signature": "Signature"
    },
    "titles": {
      "birth": "Birth Certificate",
      "clutchReport": "Clutch report",
      "hatch": "Hatch Certificate",
      "id": "Identification Certificate",
      "incubationReport": "Incubation report",
      "pedigree": "Pedigree (3 generations)",
      "quarantine": "Quarantine attestation",
      "sexing": "Sexing Certificate",
      "transfer": "Transfer / Invoice certificate"
    },
    "ui": {
      "clutchOptionLabel": "Clutch of {{date}} — {{eggs}} eggs",
      "freeForm": {
        "buyerLabel": "Buyer",
        "buyerPlaceholder": "Buyer name",
        "locationLabel": "Location (quarantine)",
        "locationPlaceholder": "E.g. Dedicated room, rack 2",
        "methodLabel": "Method",
        "operatorLabel": "Operator (sexing)",
        "operatorPlaceholder": "E.g. Dr Smith",
        "priceLabel": "Price",
        "pricePlaceholder": "€",
        "qEndLabel": "End (quarantine)",
        "qStartLabel": "Start (quarantine)",
        "sellerLabel": "Seller",
        "sellerPlaceholder": "Breeder / Company",
        "country": "Reference country (legal framework)",
        "commonName": "Common name",
        "price": "Sale price",
        "cites": "EU Annex status",
        "location": "Place of signature",
        "markId": "Marking / Microchip (transponder)",
        "source": "Source code (CITES)",
        "quantity": "Number of specimens",
        "registrationId": "Registration no. (national register)",
        "breederRegNo": "Capacity / business / breeding no.",
        "citesCertId": "Intra-EU certificate no. (CIC)",
        "sellerSection": "Transferor (Seller)",
        "buyerSection": "Recipient (Buyer)"
      },
      "hints": {
        "enrichPdf": "Tip: add fields (microchip, photos) in your model to enrich the PDFs."
      },
      "labels": {
        "clutchOptional": "Clutch (optional)",
        "snake": "Reptile"
      },
      "loading": "Loading reptiles…",
      "select": {
        "clutchPlaceholder": "Select a clutch…",
        "snakePlaceholder": "Select a reptile…",
        "clutchNeedsSnake": "Select a snake first",
        "noClutchForSnake": "No clutch for this snake"
      },
      "subtitle": "Generate certificates, then download them from the preview.",
      "title": "Certificates & PDF export",
      "placeholders": {
        "name": "Full name or company name",
        "address": "Full address (street, ZIP, city)",
        "markId": "e.g. 250269...",
        "registrationId": "e.g. I-FAP no.",
        "breederRegNo": "optional",
        "citesCertId": "required for Annex A",
        "commonName": "e.g. Ball Python",
        "price": "e.g. €150",
        "location": "e.g. Paris",
        "operator": "Name of vet or expert"
      },
      "annexOpt": {
        "A": "Annex A",
        "B": "Annex B",
        "C": "Annex C",
        "D": "Annex D",
        "None": "Not listed (N/A)"
      },
      "complementary": {
        "title": "Additional information",
        "operator": "Operator (sexing)",
        "quarantineStart": "Quarantine start",
        "quarantineEnd": "Quarantine end"
      },
      "legalData": "Legal & administrative data",
      "clutchRecap": "Clutch details:",
      "eggs": "eggs"
    },
    "legal": {
      "disclaimer": "This document is an informational template and does not constitute legal advice. The transferor remains responsible for compliance with the regulations in force at the time of transfer.",
      "captiveBred": "This document certifies that the specimen was bred and born in captivity.",
      "country": {
        "FR": "France",
        "BE": "Belgium",
        "ES": "Spain",
        "DE": "Germany",
        "NL": "Netherlands",
        "CH": "Switzerland",
        "US": "United States",
        "OTHER": "Other / EU"
      },
      "sourceCode": {
        "C": "C — Bred and born in captivity",
        "F": "F — Born in captivity (F1+)",
        "W": "W — Taken from the wild",
        "R": "R — From ranching",
        "D": "D — Appendix I, registered commercial breeding"
      },
      "fr": {
        "title": "TRANSFER / SALE CERTIFICATE",
        "framework": "France — Environmental Code (art. L413-6); Regulation (EC) No 338/97",
        "authority": "DDPP / OFB — national I-FAP register for protected species",
        "marking": "Marking and I-FAP registration (protected species)",
        "decl1": "The transferor certifies that the animal comes from a lawful, regular breeding operation and was acquired in accordance with the regulations in force.",
        "decl2": "For a protected species, the animal was identified (marked) and entered in the national I-FAP register prior to transfer.",
        "decl3": "The transferor provided the recipient with an information document, in French, on the needs and husbandry conditions of the species.",
        "decl4": "The recipient undertakes to keep the animal in conditions consistent with its biological needs and the applicable regulations.",
        "mention": "In order to preserve wildlife, the animal you have just acquired must not be released into the wild.",
        "annexA": "Annex A species: commercial transfer requires an intra-EU certificate (yellow paper) issued by the competent authority."
      },
      "de": {
        "title": "TRANSFER CERTIFICATE / PROOF OF ORIGIN",
        "framework": "Germany — Regulation (EC) No 338/97; BNatSchG / BArtSchV",
        "authority": "BfN — notification to the lower nature conservation authority (untere Naturschutzbehörde)",
        "marking": "Marking obligation (Annex 6 BArtSchV)",
        "decl2": "The transferor issues a proof of origin (Herkunftsnachweis) stating the species, number, sex, marking, origin and the contact details of both parties.",
        "decl3": "The change of keeper is subject to notification (Meldepflicht) by both the transferor and the recipient to the competent authority."
      },
      "ch": {
        "title": "TRANSFER CERTIFICATE",
        "framework": "Switzerland — CITES Act (SR 453) and implementing ordinances",
        "authority": "Federal Food Safety and Veterinary Office (FSVO/BLV)",
        "marking": "Proof of origin; keeping permit where applicable",
        "decl1": "The transferor certifies that the animal comes from lawful breeding and can prove its origin (proof of origin / Herkunftsnachweis).",
        "decl2": "For protected species a keeping permit may be required; the proof of origin must be retained.",
        "decl3": "The recipient undertakes to keep the animal in accordance with Swiss animal- and species-protection law."
      },
      "us": {
        "title": "BILL OF SALE & CAPTIVE-BRED CERTIFICATE",
        "framework": "USA — Lacey Act (16 U.S.C. 3371-3378), ESA, CITES; state law varies",
        "authority": "U.S. Fish & Wildlife Service — and the applicable state wildlife agency",
        "marking": "Microchip / unique identifier where applicable",
        "decl1": "The seller certifies the animal was bred and born in captivity and was lawfully acquired (Lacey Act legal-origin compliance).",
        "decl2": "For species listed under CITES Appendix I/II or the ESA, applicable federal permits are required for interstate or international transfer.",
        "decl3": "The buyer is responsible for compliance with the wildlife laws of their state of residence, which may restrict or prohibit possession.",
        "captiveBred": "This document certifies the animal was bred and born in captivity.",
        "disclaimer": "This document is an informational template and is not legal advice. The seller remains responsible for compliance with applicable federal and state law."
      },
      "eu": {
        "title": "TRANSFER CERTIFICATE",
        "framework": "European Union — Regulation (EC) No 338/97 and Regulation (EC) No 865/2006",
        "marking": "Compliant marking and notification to the competent national authority",
        "decl1": "The transferor certifies that the specimen was bred and born in captivity within the meaning of Article 54 of Regulation (EC) No 865/2006 and lawfully acquired.",
        "decl2": "For an Annex B specimen, this document together with traceable ancestry constitutes proof of lawful acquisition (Art. 8(5)).",
        "decl3": "For an Annex A specimen, commercial use requires an exemption certificate (yellow paper) issued by the national CITES management authority.",
        "decl4": "The recipient undertakes to comply with the keeping conditions and the applicable national and EU regulations.",
        "annexA": "Annex A specimen: commercial use requires an exemption certificate (yellow paper) issued by the national CITES management authority."
      },
      "be": {
        "authority": "CITES Management Authority — FPS Public Health (CITES Belgium)"
      },
      "es": {
        "authority": "CITES Management Authority — competent Ministry (CITES Spain)"
      },
      "nl": {
        "authority": "CITES management authority — RVO; NVWA enforcement (Netherlands)"
      }
    },
    "errors": {
      "loadFailed": "Could not load data. Please try again."
    }
  },
  "avatarCropper": {
    "title": "Crop Avatar",
    "header": "Avatar Editor",
    "newDesignBadge": "New Design",
    "zoom": "Zoom",
    "zoomOut": "Zoom out",
    "zoomIn": "Zoom in",
    "zoomLevel": "Zoom level",
    "reset": "Reset",
    "fit": "Fit",
    "center": "Center",
    "tipTitle": "Tip",
    "tip1": "Drag to move image",
    "tip2": "Wheel/Pinch to zoom",
    "tip3": "Shortcuts: <1>+</1>/<3>-</3>, arrows, <5>0</5>, <7>Enter</7>, <9>Esc</9>",
    "apply": "Apply"
  },
  "qrcode": {
    "studio": "Print Studio",
    "previewFormat": "Format: {{format}}",
    "downloadLabel": "Print Label",
    "scanMe": "SCAN ME",
    "normalMorph": "Normal",
    "printedOn": "Printed on: {{date}}",
    "forSale": "FOR SALE",
    "idLabel": "ID: {{id}}",
    "scanForPrice": "SCAN FOR PRICE",
    "private": {
      "title": "Private",
      "desc": "Dashboard"
    },
    "public": {
      "title": "Public",
      "desc": "Sales Showcase"
    },
    "format": {
      "title": "Format",
      "standard": "Standard",
      "deli": "Deli Cup",
      "strip": "Rack Strip",
      "card": "Terrarium Card"
    },
    "design": {
      "title": "Design & Brand",
      "logoTitle": "Center Logo",
      "logoNone": "None",
      "logoSnake": "Reptile",
      "logoUpload": "Upload..."
    },
    "options": {
      "addPrintDate": "Add print date",
      "addPrintDateHint": "Useful for tracking the age of displayed information."
    },
    "colors": {
      "black": "Black (Standard)",
      "green": "Green (Healthy/Available)",
      "blue": "Blue (Breeder)",
      "purple": "Purple (Holdback)",
      "pink": "Pink (Female)",
      "orange": "Orange (Shed)",
      "red": "Red (Sold/Sick)",
      "gold": "Gold (Special)"
    },
    "customColor": "Custom color"
  },
  "blob": "blob",
  "brand": {
    "name": "ReptiNode"
  },
  "breeding": {
    "feature": {
      "certificatesDesc": "Generate professional certificates and reports",
      "eggsDesc": "Monitor incubation with temperatures and dates",
      "geneticsDesc": "Predict baby morphs before pairing",
      "pairingsDesc": "Track pairings and outcomes",
      "pedigreeDesc": "Visualize lineages and manage breeding"
    },
    "header": {
      "subtitle": "Visualize lineages and manage your breeding program"
    },
    "proOnly": {
      "cta": {
        "upgradePro": "Upgrade to Pro plan"
      },
      "descriptions": {
        "certificates": "Generate elegant, print-ready certificates that are easy to share.",
        "eggs": "Record lays, incubations, hatchings, and receive key reminders.",
        "genetics": "Simulate morph probabilities and compare outcomes at a glance.",
        "pairings": "Plan pairings, track cycles, and maintain breeding history.",
        "pedigree": "Map out lineages, avoid risky crossings, and build your bloodlines."
      },
      "features": {
        "certificates": "PDF certificates",
        "eggs": "Egg tracking",
        "genetics": "Genetics calculator",
        "pairings": "Pairing management",
        "pedigree": "Pedigree"
      },
      "subtitle": "Unlock advanced tools for your operation.",
      "title": "Pro features"
    },
    "title": "Breeding Center",
    "tabs": {
      "pedigree": "Pedigree",
      "genetics": "Genetics",
      "pairings": "Pairings",
      "eggs": "Eggs",
      "certificates": "Documents",
      "season": "Season",
      "incubation": "Incubation",
      "lineage": "Lineage",
      "projects": "Projects",
      "economy": "Economy"
    },
    "pro_only": {
      "title": "Pro Features",
      "subtitle": "The Breeding Center is reserved for Pro members.",
      "features": {
        "pedigree": {
          "title": "Pedigree Trees",
          "desc": "Visualize lineages over multiple generations."
        },
        "genetics": {
          "title": "Advanced Calculator",
          "desc": "Morph and combo predictions."
        },
        "pairings": {
          "title": "Pairing Tracking",
          "desc": "Complete history and reminders."
        },
        "eggs": {
          "title": "Egg Management",
          "desc": "Incubation, hatching, and tracking."
        },
        "certificates": {
          "title": "Official Documents",
          "desc": "Automatic certificate generation."
        }
      },
      "cta_upgrade": "Upgrade to Pro"
    },
    "ui": {
      "loading": "Loading…",
      "save": "Save",
      "cancel": "Cancel",
      "add": "Add",
      "delete": "Delete",
      "close": "Close",
      "later": "Later"
    },
    "season": {
      "title": "Breeding season",
      "all_seasons": "All seasons",
      "pairings": "Pairings",
      "clutches": "Clutches",
      "eggs": "Eggs",
      "hatchlings": "Hatchlings",
      "fertility_rate": "Fertility rate",
      "hatch_rate": "Hatch rate",
      "success_rate": "Overall success",
      "benchmark_title": "Benchmark by species (whole platform)",
      "benchmark_sub": "Aggregated, anonymized average hatch rates — useful to compare your results.",
      "hatch_rate_legend": "Hatch rate"
    },
    "projects": {
      "title": "Breeding projects",
      "new": "New project",
      "empty": "No projects yet. Create your first project (e.g. \"Pied 2026\").",
      "animals": "animals",
      "pairings": "pairings",
      "new_title": "New breeding project",
      "ph_name": "Project name",
      "ph_goal": "Target morph (e.g. Pied)",
      "ph_season": "Season (e.g. 2026)",
      "ph_desc": "Description (optional)",
      "create": "Create",
      "objective": "Goal",
      "no_animals": "No linked animals.",
      "no_pairings": "No linked pairings.",
      "delete_confirm": "Delete this project?",
      "status": {
        "active": "Active",
        "paused": "Paused",
        "completed": "Completed",
        "archived": "Archived"
      }
    },
    "economy": {
      "view_summary": "Summary",
      "view_expenses": "Expenses",
      "view_inventory": "Collection",
      "expense": "Expense",
      "expenses": "Expenses",
      "revenue": "Revenue",
      "margin": "Margin",
      "sales": "sales",
      "by_category": "Expenses by category",
      "no_expenses": "No expenses recorded.",
      "new_expense": "New expense",
      "ph_label": "Label (e.g. Frozen mice)",
      "amount": "Amount €",
      "cat": {
        "food": "Feeders",
        "equipment": "Equipment",
        "vet": "Vet",
        "acquisition": "Acquisition",
        "other": "Other"
      },
      "avail": {
        "keeping": "Keeping",
        "for_sale": "For sale",
        "reserved": "Reserved",
        "sold": "Sold",
        "holdback": "Holdback"
      },
      "inv": {
        "gravid": "Gravid females",
        "cooling": "Cooling",
        "for_sale": "For sale / reserved",
        "breeders": "Available breeders"
      },
      "delete_confirm": "Delete?"
    },
    "genealogy": {
      "coi_title": "Mating compatibility (inbreeding)",
      "coi_sub": "Check the inbreeding coefficient (COI) before pairing two animals.",
      "male": "Male",
      "female": "Female",
      "verify": "Check",
      "coi_high": "High inbreeding — not recommended.",
      "coi_none": "No notable inbreeding detected between these two animals.",
      "common_ancestors": "common ancestor(s).",
      "tree_title": "Family tree",
      "choose_snake": "Choose a reptile…",
      "select_prompt": "Select a reptile to display its lineage.",
      "ancestors": "Ancestors",
      "descendants": "Descendants",
      "unknown": "unknown"
    },
    "incubation": {
      "title": "Incubation tracking",
      "choose_clutch": "Choose a clutch…",
      "empty": "No clutches recorded. Create a clutch from the Eggs tab.",
      "select_prompt": "Select a clutch to track its incubation.",
      "clutch": "Clutch",
      "eggs_count": "eggs",
      "predicted_hatch": "Predicted hatch",
      "days": "d",
      "base": "base",
      "avg_temp": "Avg temp",
      "target": "target",
      "species": "Species",
      "temp": "Temperature °C",
      "humidity": "Humidity %",
      "reading": "Reading",
      "curve_title": "Temperature / humidity curve",
      "temp_legend": "Temp °C",
      "humidity_legend": "Humidity %",
      "eggs_title": "Eggs",
      "eggs_sub": "candling & hatching",
      "no_eggs": "No eggs recorded for this clutch.",
      "inspect": "Inspect",
      "hatch": "Hatch",
      "insp_title": "Inspection",
      "type_candling": "Candling",
      "type_weighing": "Weighing",
      "type_pip": "Pipping (hatching)",
      "type_note": "Note",
      "fertile_yes": "Fertile (veins visible)",
      "fertile_no": "Infertile / clear",
      "weight_ph": "Weight (g)",
      "notes_ph": "Notes",
      "history": "History",
      "fertile": "fertile",
      "infertile": "infertile",
      "hatch_title": "Hatching",
      "hatch_sub": "Creates the hatchling and links it automatically to its parents and clutch.",
      "hatch_name_ph": "Hatchling name",
      "sex_unknown": "Unknown sex",
      "sex_male": "Male",
      "sex_female": "Female",
      "morph_ph": "Morph (optional)",
      "create_hatchling": "Create hatchling",
      "hatchling_created": "Hatchling created and linked to the lineage ✓"
    },
    "adv_genetics": {
      "title": "Advanced genetics",
      "sub": "Multi-gene cross (with lethal-combo warnings) and reverse projection from your collection.",
      "mode_cross": "Cross",
      "mode_reverse": "Reverse projection",
      "male": "Male",
      "female": "Female",
      "calculate": "Calculate",
      "rarity": {
        "common": "common",
        "uncommon": "uncommon",
        "rare": "rare",
        "very_rare": "very rare"
      },
      "target_morph": "Target morph",
      "target_ph": "e.g. Pied",
      "species": "Species",
      "all_species": "All",
      "search_pairs": "Find pairs",
      "no_pairs": "No pair in your collection can produce this morph.",
      "wildtype": "Wild type"
    }
  },
  "charts": {
    "interval": "Interval"
  },
  "common": {
    "selected": "selected",
    "share": "Share",
    "download": "Download",
    "confirm_delete_photos": "Delete {{count}} photo(s)?",
    "error_occurred": "An error occurred",
    "family_badge": "Family",
    "date_placeHolder": "MM/DD/YYYY",
    "upgrade_now": "Upgrade Now",
    "back": "Back",
    "back_dashboard": "Back to Dashboard",
    "you": "You",
    "backToHome": "Back to home",
    "cancel": "Cancel",
    "chooseOption": "Choose an option",
    "close": "Close",
    "code": "Code:",
    "confirm": "Confirm",
    "create": "Create",
    "delete": "Delete",
    "demo": "Demonstration",
    "edit": "Edit",
    "error": "Error",
    "exportPdf": "Export PDF",
    "finish": "Finish",
    "formatCard": "dd MMM, yyyy",
    "generatedOn": "Generated on",
    "loading": "Loading...",
    "loggedAs": "Logged in as",
    "next": "Next",
    "notAvailable": "N/A",
    "page": "Page",
    "understood": "Understood",
    "report": "Report",
    "uploading": "Uploading...",
    "retry": "Retry",
    "save": "Save",
    "saved": "Saved!",
    "saving": "Saving...",
    "select": "Select…",
    "skip": "Skip",
    "ok": "OK",
    "success": "Success",
    "selectSnake": "Please select a reptile.",
    "unexpectedError": "Unexpected error",
    "unknown": "Unknown",
    "update": "Update",
    "unexpected_error": "An unexpected error occurred."
  },
  "changelog": {
    "nav": {
      "back": "Back"
    },
    "header": {
      "badge": "Version History",
      "title": "What's New?",
      "subtitle": "We improve the platform as regularly as possible. Discover the latest features, fixes, and performance improvements."
    },
    "types": {
      "feature": "Feature",
      "improvement": "Improvement",
      "fix": "Fix"
    },
    "major_update": "Major Update",
    "footer_slogan": "Continuous evolution.",
    "releases": [
      {
        "version": "v1.9.0",
        "date": "July 6, 2026",
        "isoDate": "2026-07-06",
        "highlight": true,
        "title": "Faster, safer, more reliable",
        "description": "A deep update entirely focused on quality: ReptiNode is now faster, safer, more accessible and more reliable. Nothing to do on your side — it's already live, and new features are coming very soon.",
        "changes": [
          {
            "type": "improvement",
            "text": "A faster app: quicker loading and smoother navigation, even with large collections (breeding tabs and PDF/QR tools loaded on demand, optimized lists)."
          },
          {
            "type": "improvement",
            "text": "Security and privacy strengthened in depth: pedigree access restricted to the owner, systematic route protection and hardened authentication."
          },
          {
            "type": "improvement",
            "text": "Accessibility improved throughout the app: keyboard navigation, closing dialogs with the Esc key, screen-reader support and form labels."
          },
          {
            "type": "improvement",
            "text": "Greater reliability: clean account and clutch deletions (no more orphaned data), atomic writes and more robust Stripe payments."
          },
          {
            "type": "improvement",
            "text": "Over 100 automated tests and safer deployments (a release is blocked if a test fails) for day-to-day stability."
          },
          {
            "type": "fix",
            "text": "Fixed the production restart and Admin Panel access, along with many stability fixes."
          }
        ]
      },
      {
        "version": "v1.8.0",
        "date": "June 15, 2026",
        "isoDate": "2026-06-15",
        "highlight": true,
        "title": "Public Showcase, QR Codes & Sales",
        "description": "A major update all about sharing: publish your reptiles on polished public profiles, equip your collection with smart QR codes, and open the door to sales with MorphMarket. More control, more security, more possibilities.",
        "changes": [
          {
            "type": "feature",
            "text": "Next-generation public profiles: share each reptile through a secure single-token link, with three visibility levels (private, unlisted, public), link expiration, password protection, and control over which details are shown."
          },
          {
            "type": "feature",
            "text": "Multi-photo gallery: public profiles now feature a true gallery (up to 20 photos) alongside morph, sex, and genetics, with a rich preview when shared on social media."
          },
          {
            "type": "feature",
            "text": "For sale & MorphMarket: set a for-sale, reserved, or sold status with price and contact button, and export your entire listing to MorphMarket in one click (Pro accounts)."
          },
          {
            "type": "feature",
            "text": "QR per enclosure & rack: generate a QR for a whole terrarium or rack that leads to its list of occupants, and manage your enclosures right inside the app."
          },
          {
            "type": "feature",
            "text": "Quick-action QR codes: a “feed” or “weigh” QR opens the pre-filled form directly — a single scan logs the event."
          },
          {
            "type": "feature",
            "text": "QR transfer & certificate of authenticity: hand over a reptile and its entire history to the buyer with a single scan, and enjoy a verifiable certificate tracing lineage and the chain of ownership."
          },
          {
            "type": "feature",
            "text": "Bulk printing & built-in scanner: print a whole collection of QR codes on a PDF sheet (Avery-style layouts), scan your labels from the app, and customize your QR codes (extra resistance for humid terrariums, breeder logo)."
          },
          {
            "type": "feature",
            "text": "Reply to support by email: reply directly to our emails and your message is automatically added to your ticket."
          },
          {
            "type": "improvement",
            "text": "Per-reptile scan stats, plus new visibility and sale indicators right on every card."
          },
          {
            "type": "improvement",
            "text": "Public profiles shown in the visitor's language, maintenance mode with an information banner, and schedulable surveys (start and end dates)."
          },
          {
            "type": "fix",
            "text": "The public QR now works flawlessly (no more incorrect “private profile” message), along with numerous stability fixes."
          }
        ]
      },
      {
        "version": "v1.7.1",
        "date": "May 31, 2026",
        "isoDate": "2026-05-31",
        "title": "Going International & Polish",
        "description": "ReptiNode crosses borders: legal documents are now available in many countries, the homepage gets a fresh new look, and several targeted fixes make the app even more reliable.",
        "changes": [
          {
            "type": "feature",
            "text": "International legal documents: official document generation is now available for Belgium, Spain, Germany, the Netherlands, Switzerland, the United States, and all European Union countries."
          },
          {
            "type": "feature",
            "text": "New presentation pages: discover ReptiNode's flagship features through dedicated pages, designed to help you fully grasp everything the app can offer."
          },
          {
            "type": "improvement",
            "text": "Visual redesign of the homepage for a more modern, clearer, and better-structured first impression."
          },
          {
            "type": "fix",
            "text": "Breeding Center (Pro): fixed a bug that caused some reptiles to be hidden after the introduction of Family Mode."
          },
          {
            "type": "fix",
            "text": "Fixed several translations to improve linguistic consistency across the app."
          }
        ]
      },
      {
        "version": "v1.7.0",
        "date": "May 8, 2026",
        "isoDate": "2026-05-08",
        "title": "Transfers, Feeding & Analytics",
        "description": "An update focused on making reptile management more flexible and reliable: transfer your animals, add them more easily, track feedings more precisely, and enjoy a fully redesigned analytics tab.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Reptile transfers: You can now transfer a reptile to a family or give it to another user."
          },
          {
            "type": "improvement",
            "text": "Improved reptile creation: The form is clearer, more complete, and now suggests species from the ReptiNode catalog."
          },
          {
            "type": "improvement",
            "text": "Improved feeding entry: Meal logging is more precise, faster, and better suited to everyday cases."
          },
          {
            "type": "feature",
            "text": "Complete redesign of the Analytics tab: Reptile profiles now include a richer statistics view to better track health, meals, weight, sheds, and alerts."
          },
          {
            "type": "fix",
            "text": "Fixed several minor bugs related to families, events, and the display of certain data."
          },
          {
            "type": "improvement",
            "text": "Performance and stability improvements for smoother navigation across the app."
          }
        ]
      },
      {
        "version": "v1.6.0",
        "date": "December 20, 2025",
        "isoDate": "2025-12-20",
        "title": "Community, Family & Photos",
        "description": "An update focused on sharing! Manage your breeding projects with others, chat on the forum, and capture your reptiles in photos — all with a greatly expanded free plan.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Community launch: A new Forum tab to chat, ask questions, and share your passion with other members."
          },
          {
            "type": "feature",
            "text": "Family Mode: Manage reptiles together! Create a 'Family' in settings to invite your partner or associates to your collection."
          },
          {
            "type": "feature",
            "text": "Photo Gallery: The 'Photos' tab is now available on reptile profiles. Start building their album."
          },
          {
            "type": "improvement",
            "text": "Free Plan Upgrade: The limit has increased dramatically! You can now manage up to 30 reptiles for free, instead of 5."
          },
          {
            "type": "improvement",
            "text": "Simplification: The 'Contribution' tab has been removed. Species addition requests now go through the contact form."
          },
          {
            "type": "fix",
            "text": "Add form: Birth date is no longer required, making it easier to register animals with uncertain origins."
          },
          {
            "type": "fix",
            "text": "Mobile visual fixes for better navigation on small screens."
          }
        ]
      },
      {
        "version": "v1.5.0",
        "date": "December 8, 2025",
        "isoDate": "2025-12-08",
        "title": "Species Expansion & Design",
        "description": "A major update that opens ReptiNode to the entire terrarium-keeping world.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Official support for 190 new species (Hognose, Green Tree Python, Reticulated Python...) and expansion of the database to all reptiles (lizards, tortoises, etc.), not just snakes."
          },
          {
            "type": "improvement",
            "text": "Improved design of several elements for better clarity and accessibility."
          },
          {
            "type": "fix",
            "text": "Stability fixes for the genetics module and performance improvements."
          }
        ]
      },
      {
        "version": "v1.4.0",
        "date": "December 1, 2025",
        "isoDate": "2025-12-01",
        "title": "Connect the Real and Digital Worlds: QR Codes & Public Showcase",
        "description": "Transform your setups with smart labels. From quick feeding scans to public sales profiles for expos, connect your racks to your app.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "QR Code Generator: Create custom PDF labels (name, morph, etc.) ready to print for your terrariums and racks."
          },
          {
            "type": "feature",
            "text": "Public Showcase Mode: Enable 'Sale' mode to generate a public link. Perfect for expos: visitors can scan and view essential information without accessing your private data."
          },
          {
            "type": "feature",
            "text": "Quick Scan Actions: Configure the QR code to directly open the event creation modal (meal, shed, weight) during your maintenance rounds."
          },
          {
            "type": "feature",
            "text": "Visual Customization: Use color coding (green, red, blue...) on your QR codes to visually identify statuses such as For Sale, In Care, or Breeding directly on the enclosure."
          },
          {
            "type": "feature",
            "text": "Direct Contact: The public profile now includes a pre-filled email contact button to make conversations with potential buyers easier."
          },
          {
            "type": "improvement",
            "text": "Thermal Printer Compatible: The PDF format has been optimized for standard 50x50mm labels and business card formats."
          }
        ]
      },
      {
        "version": "v1.3.0",
        "date": "November 15, 2025",
        "isoDate": "2025-11-15",
        "title": "Revolutionize Your Breeding: The Reproduction Center",
        "description": "A complete suite dedicated to passionate breeders. We digitized every step of your season: from pairing planning to birth certificate printing.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Pairing Workflow: Manage the full cycle with custom statuses (Planned, In Progress, Confirmed, Failed)."
          },
          {
            "type": "feature",
            "text": "Precision Incubation: Clutch-based tracking with environmental readings (temperature and humidity) and estimated hatch date."
          },
          {
            "type": "feature",
            "text": "Individual Egg Management: Track each egg individually, including weight, slugs, infertile eggs, stillborns, or hatched eggs."
          },
          {
            "type": "feature",
            "text": "Family Tree & Genetics: Visualize ancestors and calculate morph probabilities before pairing."
          },
          {
            "type": "feature",
            "text": "Administrative Documents: Automatically generate professional birth and transfer certificates."
          },
          {
            "type": "improvement",
            "text": "Data security: Exclusive module for 'Pro' accounts with priority cloud backup."
          }
        ]
      },
      {
        "version": "v1.2.0",
        "date": "November 1, 2025",
        "isoDate": "2025-11-01",
        "title": "Contribute and Earn Rewards",
        "description": "The database is becoming community-powered! You can now suggest missing mutations, validate data, and earn credits for your subscription.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Contribution System: Suggest missing morphs, localities, or species for the catalog."
          },
          {
            "type": "feature",
            "text": "Wallet & Rewards: Earn credits (⟡) for every submission accepted by moderation."
          },
          {
            "type": "feature",
            "text": "Community Leaderboard: Discover top contributors and compare your rank."
          },
          {
            "type": "improvement",
            "text": "Integrated catalog search to avoid duplicates when submitting contributions."
          }
        ]
      },
      {
        "version": "v1.1.0",
        "date": "October 15, 2025",
        "isoDate": "2025-10-15",
        "title": "Dashboard: Drag-and-Drop & Customization",
        "description": "A major update to your dashboard. Rearrange your cards, access frequent actions faster, and enjoy a smoother interface.",
        "changes": [
          {
            "type": "feature",
            "text": "Drag & Drop: Rearrange your reptiles with simple drag-and-drop. Your order is saved."
          },
          {
            "type": "feature",
            "text": "Statistics Widgets: New cards to track this week's sheds and meals at a glance."
          },
          {
            "type": "improvement",
            "text": "User avatar synchronization and improved cache management."
          },
          {
            "type": "fix",
            "text": "Fixed an avatar loading issue on slow connections."
          }
        ]
      },
      {
        "version": "v1.0.0",
        "date": "October 1, 2025",
        "isoDate": "2025-10-01",
        "title": "Official Launch!",
        "description": "After months of development, version 1.0 is here! Everything you need to manage animal profiles, visualize growth, and keep your data safe.",
        "highlight": true,
        "changes": [
          {
            "type": "feature",
            "text": "Complete Profiles: Real-time tracking of weight, length, and age."
          },
          {
            "type": "feature",
            "text": "Smart Charts: Visualize growth curves and feeding frequency."
          },
          {
            "type": "feature",
            "text": "Pro PDF Export: Generate transfer and veterinary follow-up sheets in one click."
          },
          {
            "type": "feature",
            "text": "Read-Only Mode & Archiving: Protect the data of reptiles that have been sold or passed away."
          }
        ]
      }
    ]
  },
  "contact": {
    "nav": {
      "back": "Back"
    },
    "header": {
      "title": "Get in Touch",
      "subtitle": "A question about your reptiles? Our team is here for you."
    },
    "info": {
      "title": "Contact Info",
      "email_label": "Email",
      "office_label": "Office"
    },
    "form": {
      "title": "Send us a message",
      "name_label": "Full Name",
      "name_placeholder": "John Doe",
      "email_label": "Email",
      "message_label": "Message",
      "message_placeholder": "How can I...",
      "submit_button": "Send Message",
      "sending": "Sending...",
      "success_title": "Message Sent!",
      "success_message": "We have received your request and will get back to you within 24 hours.",
      "send_another": "Send another message"
    }
  },
  "family": {
    "manage_members": "Manage members",
    "manage_members_title": "Family members",
    "kick_member": "Remove member",
    "transfer_ownership": "Transfer ownership",
    "confirm_kick": "Are you sure you want to remove this member from the family?",
    "confirm_transfer": "Warning: By transferring ownership, you will become a regular member and lose your admin rights. Continue?",
    "transfer_success": "Ownership transferred successfully.",
    "members_count": "member(s)",
    "leave_btn": "Leave family",
    "leave_success": "You have left the family.",
    "leave_error": "Error while leaving.",
    "leave_confirm_title": "Leave family?",
    "leave_confirm_desc": "Are you sure you want to leave \"{{name}}\"? You will no longer have access to the data.",
    "confirm_leave": "Leave",
    "delete_btn": "Delete Family",
    "delete_confirm_title": "Delete Family?",
    "delete_warning_1": "This action is irreversible.",
    "delete_warning_2": "All members will be removed. Make sure you have saved important data.",
    "type_to_confirm": "Type \"{{name}}\" to confirm:",
    "single_family_policy_title": "One family at a time",
    "single_family_policy_desc": "You are already part of a family. To join or create another one, you must first leave or delete the current family.",
    "delete_error": "Error while deleting the family.",
    "my_families": "My Families",
    "no_family": "You are not part of any family yet.",
    "create_prompt": "Start your breeding group now!",
    "join_title": "Join a family",
    "join_placeholder": "Enter invitation code...",
    "join_btn": "Join",
    "join_help": "Ask the breeding owner for the invitation code.",
    "code_label": "Code:",
    "join_success": "Family joined successfully!",
    "join_error": "Invalid code or error.",
    "create_error": "Error during creation.",
    "cannot_join_title": "Action not allowed",
    "cannot_join_owner": "As a breeding owner (family), you cannot join other families at the moment.",
    "role": {
      "OWNER": "Owner",
      "ADMIN": "Admin",
      "MEMBER": "Member"
    },
    "create_modal": {
      "title": "Create a family",
      "name_label": "Name of your breeding / family",
      "name_placeholder": "e.g., Reptiles Passion...",
      "description": "This will create a shared space where you can invite other members.",
      "submit": "Create space"
    }
  },
  "dashboard": {
    "community": "Community",
    "switch_space": "Switch space",
    "mySpace": "My Space",
    "create_family": "Create a family",
    "familySnakes": "Family reptiles",
    "noEventsSubtitle": "Add an event to track history.",
    "lockedSnake": "Locked Reptile",
    "upgradeToAccess": "Upgrade to Pro to access",
    "addEvent": "Add Event",
    "addFirstSnake": "Start by adding your first reptile to the collection.",
    "addFirstSnakeBtn": "Add Your First Reptile",
    "addSnake": "Add Reptile",
    "dropHere": "Drop here to place last",
    "errorLoadingEvents": "Error loading events",
    "errorLoadingSnakes": "Error loading reptiles",
    "filter": "Filter",
    "filters": {
      "all": "All",
      "female": "Females",
      "male": "Males",
      "needsFeeding": "Needs feeding",
      "recentChanges": "Recent changes",
      "unknown": "Unknown sex"
    },
    "loadingEvents": "Loading events...",
    "loadingSnakes": "Loading reptiles...",
    "mySnakes": "My Reptiles",
    "noEvents": "No recent events",
    "noSnakes": "No reptiles found",
    "noSnakesSubtitle": "No reptiles match your search.",
    "recentEvents": "Recent Events",
    "search": "Search reptiles...",
    "settings": "Settings",
    "signOut": "Sign Out",
    "stats": {
      "allTime": "All time",
      "lastWeek": "Lasts 7 days",
      "recentFeedings": "Recent Feedings",
      "recentSheds": "Recent Sheds",
      "thisMonth": "this month",
      "thisWeek": "This week",
      "totalEvents": "Total Events",
      "totalSnakes": "Total Reptiles"
    },
    "subtitle": "Manage your reptile collection",
    "title": "Dashboard",
    "viewAllEvents": "View All Events"
  },
  "date": {
    "cardStyle": "medium"
  },
  "eggTracking": {
    "a11y": {
      "deleteClutch": "Delete clutch",
      "editClutch": "Edit clutch"
    },
    "actions": {
      "newClutch": "New clutch"
    },
    "clutchLabel": "Clutch",
    "createFirst": "Record your first clutch",
    "daysRemaining": "{{count}} days remaining",
    "delete": {
      "subtitle": "This will also delete all associated eggs.",
      "title": "Delete this clutch?"
    },
    "eggModal": {
      "status": "Status",
      "title": "Edit egg",
      "weight": "Weight (g)",
      "weightPlaceholder": "e.g. 62.5"
    },
    "empty": "No clutches recorded",
    "form": {
      "eggCount": "Number of eggs",
      "error": {
        "fertileExceedsTotal": "Fertile egg count cannot exceed total eggs."
      },
      "estHatchDate": "Estimated hatch date",
      "expectedHatchDate": "Estimated hatch date",
      "fertileCount": "Fertile",
      "humidityPct": "Humidity (%)",
      "laidDate": "Laid date",
      "noPairings": "No pairings found. Create a pairing first in the Pairings section.",
      "noPairingsHint": "No pairings found. Create one first in the Pairings section.",
      "notes": "Notes",
      "notesPlaceholder": "Observations (avg. weight, candling, losses, etc.)",
      "pairing": "Pair (pairing)",
      "selectPairing": "Select a pairing…",
      "tempC": "Temperature (°C)"
    },
    "hatchingSoon": "Hatching soon!",
    "humidity": "Humidity",
    "individualEggs": "Individual eggs",
    "laidOn": "Laid on {{date}}",
    "legend": {
      "damaged": "Damaged",
      "hatched": "Hatched",
      "incubating": "Incubating",
      "infertile": "Infertile",
      "title": "Legend"
    },
    "modal": {
      "createTitle": "New clutch",
      "editTitle": "Edit clutch"
    },
    "stat": {
      "totalEggs": "Total eggs"
    },
    "stats": {
      "damagedPlural": "Damaged",
      "eggs": "Eggs",
      "hatched": "Hatched",
      "incubating": "Incubating",
      "infertilePlural": "Infertile"
    },
    "status": {
      "damaged": "Damaged",
      "hatched": "Hatched",
      "incubating": "Incubating",
      "infertile": "Infertile"
    },
    "subtitle": "Monitor your clutches' incubation",
    "temperature": "Temperature",
    "title": "Egg Tracking"
  },
  "androidInstallPrompt": {
    "title": "Install ReptiNode",
    "subtitle": "Add the app to your home screen for easier access.",
    "button": "Install now"
  },
  "iosInstallPrompt": {
    "title": "Install ReptiNode",
    "subtitle": "The app for your reptiles, on your iPhone.",
    "step1Prefix": "1. Tap the ",
    "step1Highlight": "Share",
    "step1Suffix": " button at the bottom of your Safari screen.",
    "step2Prefix": "2. Scroll down and select ",
    "step2Highlight": "Add to Home Screen",
    "step3Prefix": "3. Finally, tap ",
    "step3Highlight": "Add",
    "step3Suffix": " in the top right to finish."
  },
  "families": {
    "family": "Family"
  },
  "events": {
    "load_error": "Failed to load events.",
    "load_error_help": "Check the selected context and try again.",
    "refused_meal": "The animal refused to eat",
    "refused_badge": "REFUSAL",
    "disable_button_title": "Start by adding a reptile",
    "page_title": "All events",
    "search_placeholder": "Search by name, note or type...",
    "history_title": "Event history",
    "delete_confirm": "Are you sure you want to delete this event?",
    "snake_unknown": "Unknown",
    "addError": "Error while adding the event.",
    "filters": {
      "all": "All",
      "feeding": "Feeding",
      "shed": "Shed",
      "vet_visit": "Veterinary",
      "handling": "Handling",
      "other": "Other"
    },
    "empty": {
      "title": "No events found",
      "no_match": "No event matches your search.",
      "no_history": "No event recorded yet."
    },
    "actions": {
      "ariaLabel": "Event actions",
      "menuLabel": "Event action menu"
    },
    "add": "Add Event",
    "addEvent": "Add Event",
    "addPhotos": "Add Photos (max 5)",
    "addTitle": "Add an event",
    "all": "All",
    "allEvents": "All Events",
    "cancel": "Cancel",
    "confirmDelete": "Delete this event? This action cannot be undone.",
    "date": "Date",
    "delete": "Delete this event? This action cannot be undone.",
    "editTitle": "Edit event",
    "eventHistory": "Event History",
    "eventType": "Event Type",
    "feeding": "Feeding",
    "fields": {
      "snake": "Reptile",
      "date": "Date",
      "notes": "Notes",
      "type": "Type",
      "weight": "Weight (g)",
      "length": "Length (mm)"
    },
    "handling": "Handling",
    "noEventsFound": "No events found",
    "noEventsMatch": "No event matches your search.",
    "noEventsYet": "No event recorded yet.",
    "notes": "Notes",
    "notesPlaceholder": "Additional details about this event...",
    "other": "Other",
    "photos": "Photos",
    "placeholders": {
      "notes": "Free notes…",
      "weight": "e.g. 120",
      "length": "e.g. 850"
    },
    "processing": "Processing...",
    "searchPlaceholder": "Search events...",
    "selectSnake": "Select a reptile",
    "shed": "Shed",
    "add_error": "Error while adding",
    "gallery_upload_note": "Gallery upload",
    "types": {
      "gallery": "Gallery",
      "weight": "Weighing",
      "length": "Measurement",
      "note": "Note",
      "cleaning": "Cleaning",
      "feeding": "Feeding",
      "handling": "Handling",
      "shed": "Shed",
      "vet_visit": "Vet visit",
      "other": "Other"
    },
    "uploadError": {
      "failed": "Upload failed",
      "incomplete": "Some photos could not be uploaded. Please try again.",
      "size": "{{fileName}} is too large. Maximum size: {{maxSizeMB}} MB."
    },
    "modal": {
      "add": {
        "subtitleDefault": "Add a simple event to the history.",
        "subtitleFeeding": "Simplified feeding entry, designed for everyday use."
      },
      "edit": {
        "saveFailed": "Save failed."
      },
      "measurements": {
        "title": "Reptile measurements",
        "description": "These values automatically feed the health, weight and growth statistics.",
        "length": "Length (mm)",
        "lengthPlaceholder": "e.g. 850"
      },
      "feeding": {
        "selectPreyTypeFirst": "Select a prey type first",
        "title": "Feeding",
        "description": "Meal status and key prey information.",
        "applyLastFeeding": "Use last feeding",
        "loadingLastFeeding": "Loading last feeding...",
        "lastFeedingRecorded": "Last feeding recorded",
        "noStructuredPrey": "No structured prey",
        "theoreticalInterval": "Theoretical frequency: {{days}} days",
        "noPreviousFeeding": "No previous feeding found for this reptile.",
        "daysAgo_one": "{{count}} day ago",
        "daysAgo_other": "{{count}} days ago",
        "status": "Meal status",
        "refusalReason": "Refusal reason",
        "refusalReasonPlaceholder": "E.g. shed, stress, not interested",
        "preyType": "Prey type",
        "unspecified": "Unspecified",
        "preySize": "Size / build",
        "preyCount": "Quantity",
        "preyWeight": "Prey weight (g)",
        "feedingMethod": "Method (optional)",
        "feedingMethodPlaceholder": "Tongs, left in enclosure...",
        "deduct_from_stock": "Deduct this feeding from my prey stock",
        "animalWeight": "Animal weight (g)",
        "animalWeightPlaceholder": "E.g. 540",
        "statusOptions": {
          "accepted": "Meal accepted",
          "refused": "Refusal",
          "partial": "Partial",
          "regurgitated": "Regurgitated",
          "assisted": "Assisted"
        },
        "preyTypes": {
          "mouse": "Mouse",
          "rat": "Rat",
          "asf": "ASF",
          "chick": "Chick",
          "insect": "Insect",
          "fish": "Fish",
          "other": "Other"
        },
        "preySizes": {
          "weaned": "Weaned",
          "pup": "Pup",
          "day_old": "Day-old",
          "micro": "Micro",
          "juvenile": "Juvenile",
          "fry": "Fry",
          "small": "Small",
          "medium": "Medium",
          "large": "Large",
          "pinky": "Pinky",
          "fuzzy": "Fuzzy",
          "hopper": "Hopper",
          "subadult": "Subadult",
          "adult": "Adult",
          "other": "Other"
        }
      }
    },
    "uploadSelected": "Upload selected items",
    "vetVisit": "Veterinary Visit",
    "weight": "Weight (grams)",
    "weightOptional": "Optional - weight at the time of the event",
    "weightWithUnit": "Weight: {{weight}}g",
    "length": "Length",
    "lengthWithUnit": "Length: {{length}}mm"
  },
  "feedback": {
    "header": {
      "title": "Your feedback matters",
      "subtitle": "Help us build the best platform for your reptiles."
    },
    "rating_label": "Rate your experience",
    "category_label": "Topic",
    "message_label": "Your message",
    "message_placeholder": "Tell us what you like or what we could improve...",
    "submit_button": "Send feedback",
    "categories": {
      "general": "General feedback",
      "feature": "Idea / Feature",
      "bug": "Issue / Bug",
      "ui": "Design / UX"
    },
    "rating_labels": {
      "1": "Not satisfied 😞",
      "2": "Could be better 😕",
      "3": "Good 🙂",
      "4": "Very good! 😊",
      "5": "Excellent! 🎉"
    },
    "success": {
      "title": "Thank you so much!",
      "message": "Your feedback is valuable and helps us improve ReptiNode every day.",
      "button": "Back to dashboard"
    },
    "errors": {
      "rating_required": "Please select a rating."
    },
    "footer_thanks": "Thank you for your contribution."
  },
  "features": {
    "analytics": {
      "description": "Visual insights into growth patterns, feeding success, and health trends.",
      "title": "Analytics & Charts"
    },
    "detailedProfiles": {
      "description": "Complete reptile profiles with photos, species info, genetics, and health records.",
      "title": "Detailed Profiles"
    },
    "eventTracking": {
      "description": "Monitor feeding schedules, shedding cycles, and veterinary appointments.",
      "title": "Event Tracking"
    },
    "exportReports": {
      "description": "Generate PDF and Excel reports for veterinarians or breeding records.",
      "title": "Export Reports"
    },
    "multiUser": {
      "description": "Share access with partners, veterinarians, or breeding collaborators.",
      "title": "Multi-User Access"
    },
    "photoManagement": {
      "description": "Organize and track photos with date stamps and automatic galleries.",
      "title": "Photo Management"
    },
    "subtitle": "Comprehensive tools designed specifically for reptile enthusiasts and professional breeders.",
    "title": "Everything You Need to Manage Your Collection"
  },
  "footer": {
    "about": "About",
    "company": "Company",
    "description": "Professional reptile management for enthusiasts and breeders.",
    "privacy": "Privacy",
    "product": "Product",
    "rights": "All rights reserved.",
    "support": "Support",
    "terms": "Terms"
  },
  "genetics": {
    "calculate": "Calculate probabilities",
    "emptyAfterSelect": "Click “Calculate” to see predictions",
    "femaleParent": "Female Parent",
    "loadingRegistry": "Loading genetic registry…",
    "maleParent": "Male Parent",
    "morphLabel": "Morph",
    "normal": "Normal",
    "results": {
      "commons": "Common factors (100%):",
      "genes": "Genes",
      "het": "Het/Carrier",
      "methodNote": "Data computed per locus (dominant, recessive, incomplete), with aggregation, allelic complexes checks, inter-allelic names/named combos, and custom “supers” defined in the JSON registry.",
      "probability": "probability",
      "title": "Predicted genetic results",
      "visual": "Visual"
    },
    "selectFemale": "Select a female…",
    "selectMale": "Select a male…",
    "subtitle": "Mendelian crosses per locus, allelic complexes checks, inter-allelic phenotypes, supers & named combos, multi-species via JSON registries.",
    "title": "Genetics Calculator",
    "violations": {
      "hint": "Fix the parent genetics: a parent cannot carry multiple alleles from the same complex.",
      "title": "Allelic conflict(s) within the same complex"
    },
    "warn": {
      "unsupportedSpecies": "Genetic calculator is not yet available for {{species}}.",
      "allelicConflictMessage": "Both parents must be the same species for a reliable calculation.",
      "registryFallback": "Unable to load external JSON. Using a minimal local registry (fallback)."
    }
  },
  "hero": {
    "description": "Track, manage, and monitor your reptile collection with comprehensive health records, feeding schedules, and detailed analytics.",
    "learnMore": "Learn More",
    "subtitle": "Made Simple",
    "title": "Professional Reptile Management",
    "tryFree": "Start Now"
  },
  "html2canvas": "html2canvas",
  "jspdf": "jsPDF",
  "landing": {
    "roles": {
      "exoticVeterinarian": "Exotics veterinarian",
      "professionalBreeder": "Professional breeder",
      "reptileEnthusiast": "Reptile enthusiast"
    }
  },
  "language": {
    "changed": "Language updated",
    "current": "Current: {{lang}}",
    "names": {
      "en": "English",
      "es": "Spanish",
      "fr": "French"
    },
    "selector": {
      "label": "Language"
    }
  },
  "nav": {
    "backToHome": "Back to Home",
    "contact": "Contact",
    "features": "Features",
    "pricing": "Pricing",
    "signIn": "Sign In"
  },
  "pairing": {
    "actions": {
      "createFirst": "Create your first pairing",
      "new": "New pairing",
      "update": "Update"
    },
    "alert": {
      "sameSnake": "Male and female cannot be the same reptile."
    },
    "delete": {
      "confirm": "This action is permanent. Do you really want to delete this pairing?",
      "title": "Delete this pairing?"
    },
    "empty": "No pairings recorded",
    "fields": {
      "date": "Pairing date",
      "female": "Female",
      "male": "Male",
      "notes": "Notes",
      "status": "Status"
    },
    "modal": {
      "editTitle": "Edit pairing",
      "newTitle": "New pairing"
    },
    "placeholders": {
      "notes": "Observations, behaviors, etc.",
      "selectFemale": "Select a female…",
      "selectMale": "Select a male…"
    },
    "status": {
      "active": "Active",
      "failed": "Failed",
      "planned": "Planned",
      "separated": "Separated",
      "successful": "Successful"
    },
    "subtitle": "Track your pairings and their progress",
    "title": "Pairing Management"
  },
  "pedigree": {
    "actions": {
      "addParents": "Add parents",
      "cancel": "Cancel",
      "save": "Save"
    },
    "depthLabel": "Depth",
    "empty": "No pedigree data available",
    "export": {
      "exporting": "Exporting...",
      "tooltip": "Export pedigree to PDF"
    },
    "generation": "Generation",
    "legend": {
      "female": "Female",
      "male": "Male",
      "title": "Legend",
      "unknown": "Unknown"
    },
    "parents": {
      "cycleDetected": "Cannot save: this choice would create a cycle (child becomes an ancestor of parent).",
      "cycleWarning": "Invalid choice: this would create an ancestral cycle.",
      "fatherLabel": "Father (male)",
      "motherLabel": "Mother (female)",
      "noneFemale": "— None / Unknown —",
      "noneMale": "— None / Unknown —",
      "title": "Link parents"
    },
    "pdf": {
      "field": {
        "exportedOn": "Exported on:",
        "generationsShown": "Generations shown:",
        "individual": "Individual:",
        "morph": "Morph:",
        "sex": "Sex:",
        "species": "Species:"
      },
      "infoSection": "INFORMATION",
      "title": "PEDIGREE"
    },
    "rel": {
      "father": "Father",
      "greatGrandparent": "Great-grandparent ({{side}})",
      "individual": "Individual",
      "maternalGrandfather": "Maternal grandfather",
      "maternalGrandmother": "Maternal grandmother",
      "mother": "Mother",
      "nthGreatGrandparent": "{{n}}× great-grandparent ({{side}})",
      "paternalGrandfather": "Paternal grandfather",
      "paternalGrandmother": "Paternal grandmother",
      "side": {
        "maternal": "maternal",
        "paternal": "paternal"
      }
    },
    "selectLabel": "Select:",
    "subtitle": "Visualize your reptiles' lineages",
    "table": {
      "birthYear": "Birth year",
      "generation": "Generation",
      "morph": "Morph",
      "name": "Name",
      "relation": "Relation",
      "sex": "Sex"
    },
    "title": "Pedigree",
    "view": {
      "compact": "Compact",
      "grid": "Grid",
      "horizontal": "Horizontal",
      "table": "Table",
      "vertical": "Vertical"
    },
    "viewTitle": {
      "compact": "Compact",
      "grid": "Grid",
      "horizontal": "Horizontal",
      "table": "Table",
      "vertical": "Vertical"
    }
  },
  "plans": {
    "basic": "Basic",
    "pro": "Pro"
  },
  "pricing": {
    "monthly": "Monthly",
    "professional": {
      "cta": "Subscribe Now",
      "duration": " / month",
      "features": {
        "birthCertificates": "Certificates (birth, ID, transfer…) as PDF",
        "eggTracking": "Egg & incubation tracking (temperature, humidity, due dates)",
        "genetics": "Genetics calculator & morph predictions",
        "pairing": "Pairing management & notes",
        "pedigree": "Pedigree tree & PDF export",
        "snakes": "Unlimited reptiles & clutches"
      },
      "popular": "Most Popular",
      "price": "€9.99",
      "title": "Professional",
      "yearlyDuration": " / year",
      "yearlyPrice": "€99",
      "yearlySavings": "2 months free vs monthly"
    },
    "save2Months": "Save 2 months",
    "starter": {
      "cta": "Start Now",
      "duration": "",
      "features": {
        "photos": "Photo storage",
        "snakes": "Up to 30 reptiles",
        "tracking": "Basic event tracking"
      },
      "price": "Free",
      "title": "Starter"
    },
    "subtitle": "Choose the plan that fits your collection size",
    "title": "Simple, Transparent Pricing",
    "yearly": "Yearly"
  },
  "script": "script",
  "settings": {
    "title": "Settings",
    "tabs": {
      "profile": "Profile",
      "family": "Family & Breeding",
      "notifications": "Notifications",
      "language": "Language",
      "subscription": "Subscription",
      "security": "Security"
    },
    "errors": {
      "push_permission_denied": "Push notification permission denied",
      "save_error": "Error while saving",
      "delete_error": "Error while deleting account",
      "portal_error": "Unable to access the billing portal."
    },
    "billing": {
      "checking_title": "Verifying...",
      "checking_desc": "We are confirming your secure payment.",
      "success_title": "Subscription activated!",
      "success_desc": "Your account has been upgraded. Thank you for your trust.",
      "cancel_title": "Payment cancelled",
      "cancel_desc": "No charge was made.",
      "failed_title": "Payment failed",
      "failed_desc": "An error occurred. Please try again."
    },
    "profile": {
      "avatar_alt": "Avatar",
      "image_title": "Profile Photo",
      "image_desc": "This photo will be displayed on your public profile and in the app.",
      "change_photo": "Change Photo",
      "name_label": "Display Name",
      "name_placeholder": "Your Name",
      "email_label": "Email Address",
      "email_placeholder": "your@email.com"
    },
    "notifications": {
      "time_label": "Reminder Time",
      "time_desc": "At what time do you want to receive your daily notifications?",
      "feeding_reminders": "Feeding Reminders",
      "receive_alerts": "Receive alerts for {{type}}",
      "types": {
        "feedingReminders": "Feeding Reminders",
        "shedReminders": "Shed Tracking",
        "vetReminders": "Vet Appointments",
        "healthAlerts": "Health alerts",
        "emailNotifications": "Summary Emails"
      }
    },
    "language": {
      "language_selector": "Language:",
      "select_label": "Interface Language"
    },
    "subscription": {
      "current_plan_label": "Your Current Plan",
      "plan_free": "Free",
      "plan_pro": "Pro",
      "plan_pro_monthly": "Pro (Monthly)",
      "plan_pro_yearly": "Pro (Yearly)",
      "pro_badge": "Pro Member",
      "free_badge": "Free Member",
      "upsell_text": "Upgrade to Pro to unlock all unlimited features.",
      "upgrade_button": "Go Pro",
      "manage_button": "Manage Subscription",
      "manage_desc": "Update your payment method, cancel, or change your plan."
    },
    "security": {
      "password_title": "Change Password",
      "password_desc": "Update your password regularly to secure your account.",
      "password_button": "Change",
      "delete_title": "Delete Account",
      "delete_warning": "This action is irreversible. All your data (reptiles, tracking, photos) will be permanently deleted.",
      "delete_confirm": "Are you sure you want to permanently delete your account?",
      "delete_button": "Delete My Account",
      "deleting": "Deleting..."
    },
    "changePassword": "Change Password",
    "currentPassword": "Current Password",
    "newPassword": "New Password",
    "confirmNewPassword": "Confirm New Password",
    "updatePasswordButton": "Update Password",
    "passwordMismatch": "Passwords do not match.",
    "passwordTooShort": "Password must be at least 8 characters long.",
    "passwordUpdateSuccess": "Password updated successfully.",
    "passwordUpdateError": "Failed to update password. Please check your current password."
  },
  "sex": {
    "female": "Female",
    "male": "Male",
    "unknown": "Unknown"
  },
  "snake": {
    "transfer": {
      "button": "Transfer",
      "title": "Transfer {{name}}",
      "subtitle": "Move this reptile to a family or give it to another user.",
      "to_family": "Transfer to a family",
      "to_family_help": "The reptile will disappear from your personal space and become visible in the family space.",
      "choose_family": "Choose a family...",
      "confirm_family": "Transfer to family",
      "already_in_family": "This reptile is already attached to this family.",
      "no_families": "You do not have any family available for this transfer.",
      "confirm_personal": "Move back to my personal space",
      "personal_success": "The reptile has been moved back to your personal space.",
      "family_success": "The reptile has been transferred to the family.",
      "to_user": "Give to a user",
      "to_user_help": "The new user will become the reptile owner. You will lose access to its profile.",
      "user_placeholder": "User email or username...",
      "confirm_user_button": "Give reptile",
      "confirm_user": "This reptile will be given to another user. You will lose access to it. Continue?",
      "user_warning": "Warning: this action removes the reptile from your account.",
      "user_success": "The reptile has been transferred successfully.",
      "in_progress": "Transfer in progress...",
      "error": "Transfer failed."
    },
    "upload_first": "Upload a photo",
    "photo_gallery": "Photo Gallery",
    "add_photo": "Add",
    "no_photos": "No photos",
    "no_photos_desc": "Add events with photos to fill the gallery.",
    "profile_pic": "Profile Picture",
    "locked_title": "Profile Locked",
    "locked_desc": "This reptile exceeds the limit of your free plan. The most recently added reptiles are locked. Upgrade to Pro to access them.",
    "addTitle": "Add Reptile",
    "edit": "Edit",
    "editTitle": "Edit Profile",
    "edit_title": "Edit Profile",
    "deleteTitle": "Delete {{name}}",
    "not_found": "Reptile not found.",
    "no_photo": "No photo available",
    "noPhoto": "No photo available",
    "qr_code": "QR Code",
    "export_pdf": "Export PDF",
    "exportPDF": "Export to PDF",
    "maintenance_title": "Maintenance & Reminders",
    "feeding_interval_label": "Feeding Frequency",
    "feedingIntervalTitle": "Feeding Interval",
    "feeding_interval_placeholder": "Ex: 7",
    "feeding_interval_help": "Days between meals. Leave empty to disable.",
    "feeding_interval_title": "Feeding Frequency",
    "avg_feeding_interval_label": "Average Interval:",
    "avgFeedingIntervalLabel": "Average Interval:",
    "avgShedCycleLabel": "Average Cycle:",
    "feedingSchedule": "Feeding Schedule",
    "status": {
      "late_feeding": "Late Feeding",
      "next_feeding": "Next Feeding",
      "feed_now": "Feed Now",
      "feed_me": "To feed",
      "next_shed_prediction": "Shed Prediction",
      "shed_late": "Probable delay (~{{diff}}d)",
      "shed_in": "In about {{diff}} days",
      "next_vet": "Vet Appointment",
      "in_days": "In {{count}} days",
      "days_late": "{{count}} days late"
    },
    "overview": "Overview",
    "events": "Events",
    "analytics": "Analytics",
    "recent_activity": "Recent Activity",
    "recentActivity": "Recent Activity",
    "event_history": "Full History",
    "eventHistory": "Event History",
    "health_indicators": "Health Indicators",
    "healthIndicators": "Health Indicators",
    "weight_trend": "Weight Trend",
    "weightTrend": "Weight Trend",
    "length_evolution": "Growth (Length)",
    "lengthEvolution": "Length Evolution",
    "weight_and_feeding": "Weight & Feeding",
    "weightAndFeeding": "Weight & Feeding",
    "growthRate": "Growth Rate",
    "growthTitle": "Growth",
    "growthTrend": "Growth Trend: Healthy",
    "last_feeding_label": "Last feeding:",
    "lastFeeding": "Last feeding:",
    "lastFeedingLabel": "Last feeding:",
    "last_shed_label": "Last shed:",
    "lastShedLabel": "Last shed:",
    "nextShedEstimate": "Next shed estimated in {{days}} days",
    "daysAfterPrevious": "{{days}} days after previous",
    "name": "Name",
    "species": "Species",
    "morph": "Morph",
    "age": "Age",
    "years": "years",
    "yearsOld": "{{count}} years",
    "yearsOld_one": "{{count}} year",
    "yearsOld_other": "{{count}} years",
    "weight": "Weight",
    "currentWeight": "Current Weight:",
    "initialWeight": "Initial Weight:",
    "weightGain": "Weight Gain: +30g this month",
    "totalGain": "Total Gain:",
    "length": "Length",
    "sex": {
      "male": "Male",
      "female": "Female",
      "unknown": "Unknown"
    },
    "sexe": "Sex",
    "birth_date": "Birth Date",
    "birthDate": "Birth Date",
    "notes": "Notes",
    "days": "days",
    "read_only_badge": "Read Only",
    "readOnlyBadge": "Read Only",
    "read_only_tip": "This reptile is archived or cannot be modified.",
    "read_only_cannot_modify": "Cannot modify a read-only reptile.",
    "archived": "This reptile is archived.",
    "readonly_until": "Read-only until {{date}}",
    "readonlyUntil": "Read-only until {{date}}.",
    "restore": "Restore",
    "archive_30d_title": "Archive (30 days)",
    "archive30dTitle": "Archive 30 days (recommended)",
    "archive_readonly_info": "Switches to read-only. Can be restored.",
    "archiveReadOnlyInfo": "Reptile remains visible in read-only mode. You can restore it anytime.",
    "permanent_delete_title": "Permanent Delete",
    "permanentDeleteTitle": "Permanent Delete",
    "permanent_delete_warning": "Irreversible. All data will be lost.",
    "permanentDeleteWarning": "Irreversible action: all data and associated events will be deleted.",
    "delete_confirm": "Are you sure you want to permanently delete this reptile?",
    "deleteConfirm": "Permanently delete this reptile and ALL history?",
    "delete_error": "Error during deletion",
    "deleteError": "Error deleting reptile.",
    "feedings": "Feedings",
    "totalFeedingsLabel": "Total Feedings:",
    "sheds": "Sheds",
    "totalShedsLabel": "Total Sheds:",
    "sheddingHistoryTitle": "Shedding History",
    "vet_visits": "Vet Visits",
    "vetVisits": "Vet Visits",
    "totalVetVisitsLabel": "Vet Visits:",
    "meals": "Meals",
    "totalEventsLabel": "Total Events:",
    "health": {
      "feeding": "Feeding",
      "sheds": "Shedding",
      "growth": "Growth",
      "overall": "Overall",
      "help_feeding": "Based on feeding regularity compared to your goal.",
      "help_sheds": "Based on shed cycle regularity.",
      "help_growth": "Weight evolution since birth/acquisition.",
      "help_overall": "Weighted average of vital indicators.",
      "help": {
        "feeding": "Based on average feeding interval: 7 days equals 100%. Longer intervals reduce the score.",
        "growth": "Percentage change between first and last weight.",
        "overall": "Simple average of the three scores.",
        "sheds": "100% if average shed interval is under 60 days. Beyond that, score decreases progressively."
      }
    },
    "pdf": {
      "kpis": "Key Indicators",
      "details": "Technical Details"
    },
    "metric": "Metric",
    "value": "Value",
    "field": "Field",
    "fields": {
      "birthDate": "Birth Date",
      "imageUrl": "Image URL",
      "length": "Length (cm)",
      "morph": "Morph",
      "name": "Name",
      "sex": "Sex",
      "species": "Species",
      "weight": "Weight (g)"
    },
    "placeholders": {
      "imageUrl": "https://...",
      "length": "ex: 120",
      "morph": "ex: Pastel",
      "name": "ex: Luna",
      "species": "ex: Python regius",
      "weight": "ex: 1200"
    },
    "profile": "Profile",
    "progression": "Progress:",
    "editPhoto": "Edit",
    "statsTitle": "Statistics",
    "tour": {
      "health_title": "Health Indicators",
      "healthTitle": "Health Indicators",
      "health_text": "Quick summary of feeding regularity, shedding cycles, and weight trends.",
      "healthText": "Quick summary of feeding regularity, shedding cycles, and weight trends. Hover over the ? to learn how each score is calculated.",
      "weight_title": "Weight Trend",
      "weightTitle": "Weight Trend",
      "weight_text": "Your weight chart. Visually track growth over time.",
      "weightText": "Your weight chart. The growth score compares the first and last recorded weight.",
      "events_title": "Event History",
      "eventsTitle": "Event History",
      "events_text": "View all events here (Feedings, Sheds, Care...).",
      "eventsText": "View all events here. Click on an event to edit or delete it.",
      "add_title": "Add Event",
      "addTitle": "Add Event",
      "add_text": "Use this button to quickly record an action.",
      "addText": "Use 'Add Event' to log feedings, sheds, vet visits, etc."
    },
    "photos": "Photos"
  },
  "testimonials": {
    "testimonial1": "ReptiNode has revolutionized how I track my collection. The feeding schedules and health monitoring are invaluable.",
    "testimonial2": "The analytics features help me optimize feeding schedules and track growth patterns like never before.",
    "testimonial3": "As a veterinarian, the detailed health records and export features make my job so much easier.",
    "title": "Trusted by Reptile Enthusiasts"
  },
  "units": {
    "cm": "cm",
    "days": "days",
    "g": "g",
    "grams": "g"
  },
  "upgrade": {
    "choosePlan": "Choose this plan",
    "description": "Upgrade to continue adding data and access all Pro features.",
    "guarantee": "30-day money-back guarantee. Cancel anytime.",
    "limitReached": "You've reached the free plan limit",
    "processing": "Processing…",
    "unlockFull": "Unlock the full potential"
  },
  "featuresPage": {
    "seo": {
      "title": "Reptile Breeding Management Features | ReptiNode",
      "description": "Discover complete tools for herpetologists: weight tracking, QR Code generation, medical records, feeding schedules, and genetic management."
    },
    "hero": {
      "badge": "Complete Overview",
      "title_part1": "The complete management platform for",
      "title_highlight": "the modern breeder",
      "subtitle": "No more lost notebooks or messy Excel files. ReptiNode centralizes all your reptiles' vital data in a smooth and secure interface."
    },
    "weight": {
      "title": "Growth tracking and biometrics",
      "description": "The weight curve is the primary health indicator for a reptile. Our module allows you to instantly visualize the evolution of your animals.",
      "list": {
        "1": "Automatic interactive charts",
        "2": "Detection of abnormal weight loss",
        "3": "Unlimited weighing history",
        "4": "Comparison with species averages"
      },
      "graph_title": "Weight - Ball Python #04",
      "graph_subtitle": "+12% vs last month"
    },
    "qrcode": {
      "title": "Smart QR Code Labels",
      "description": "Stop guessing when a specific reptile last ate. Stick a QR Code on every terrarium or rack tub for instant access.",
      "list": {
        "1": "PDF generation ready to print",
        "2": "Quick camera scan from mobile",
        "3": "Update the record without touching the animal",
        "4": "'Rack' mode for chain scanning"
      },
      "scan_me": "Scan me!"
    },
    "feeding": {
      "title": "Meal management and reminders",
      "description": "Manage the feeding cycle of hundreds of reptiles without errors. ReptiNode calculates the next meals according to your defined frequency.",
      "list": {
        "1": "Smart feeding calendar",
        "2": "Prey stock management (frozen/live)",
        "3": "Tracking of refusals and fasts",
        "4": "Reminder notifications on the day"
      },
      "card_scheduled_title": "Feeding scheduled today",
      "card_scheduled_desc": "5 snakes to feed (Rat M)",
      "card_refusal_title": "Meal refusal - Gecko #01",
      "card_refusal_desc": "Noted 2 days ago"
    },
    "health_genetics": {
      "title": "Veterinary Health & Genetics",
      "subtitle": "For professional breeders, traceability is mandatory. We simplify your registers and breeding plans.",
      "medical_title": "Medical Monitoring",
      "medical_desc": "Record sheds, treatments, vet visits, and daily observations. Export the history in one click for the veterinarian.",
      "genetic_title": "Genetic Calculator",
      "genetic_desc": "Plan your pairings. Link parents to offspring to automatically generate family trees and track mutations."
    },
    "cta": {
      "title": "Ready to modernize your breeding?",
      "subtitle": "Join the breeders who have ditched paper for ReptiNode. Completely free.",
      "button": "Start now!"
    }
  },
  "surveyWidget": {
    "default_title": "Your feedback",
    "thanks": "Thanks for your feedback! 🙏",
    "later": "Later",
    "send": "Send",
    "hint_nps": "Score: {{score}}/10 — a comment (optional)?",
    "hint_csat": "Score: {{score}}/5 — a comment (optional)?",
    "ph_text": "Your answer…",
    "ph_optional": "Tell us more (optional)…"
  },
  "maintenance": {
    "title": "Maintenance in progress",
    "defaultMessage": "The service is temporarily unavailable, we'll be back very soon."
  },
  "qrx": {
    "shareSettings": "Public link settings",
    "visibility": "Visibility",
    "visUnlisted": "Unlisted (accessible via link only)",
    "visPublic": "Public (indexable)",
    "expiration": "Link expiration (optional)",
    "password": "Password (optional)",
    "passwordSetPlaceholder": "•••••• (set)",
    "passwordNone": "None",
    "define": "Set",
    "remove": "Remove",
    "publicFieldsLabel": "Information shown publicly",
    "fieldWeight": "Weight",
    "fieldLength": "Length",
    "fieldLocality": "Locality",
    "fieldNotes": "Notes",
    "fieldPrice": "Price",
    "fieldsHint": "Click to hide/show. Struck through = hidden on the public profile.",
    "scansTotal": "Total scans: {{count}}",
    "syncUpdating": "Updating…",
    "syncRetry": "Retry",
    "publicLiveOn": "This profile is public: the QR is scannable.",
    "makePrivate": "Make private",
    "activatePublic": "Enable the public profile to make the QR accessible.",
    "saleTitle": "Sale (optional)",
    "saleNotForSale": "Not for sale",
    "saleForSale": "For sale",
    "saleReserved": "Reserved",
    "saleSold": "Sold",
    "salePrice": "Price",
    "saleContact": "Seller contact (email or link)",
    "saleMorphmarket": "MorphMarket listing link (optional)",
    "exportMM": "Export my entire \"for sale\" list to MorphMarket (CSV)",
    "exportMMHint": "Upload the file to MorphMarket (Bulk Import). PRO accounts only.",
    "exportMMEmpty": "No reptile marked \"for sale\" or \"reserved\" to export.",
    "exportMMError": "Export unavailable (PRO accounts only).",
    "actionTitle": "Action on scan",
    "actionView": "View profile",
    "actionAddEvent": "Add an event",
    "actionFeed": "Feed directly",
    "actionWeigh": "Weigh directly",
    "actionHint": "\"Feed\" / \"Weigh\" open the pre-filled form directly after sign-in.",
    "qualityTitle": "QR quality / resistance",
    "qualBasic": "Basic",
    "qualStandard": "Standard",
    "qualSolid": "Solid",
    "qualMax": "Max (terrarium)",
    "qualityHint": "Error-correction level: \"Max\" stays readable even when partly damaged/wet. For a terrarium, print on water-resistant vinyl/laminated material.",
    "transferTitle": "Transfer / sale",
    "transferDesc": "Generate a QR to give the buyer: by scanning it, they receive this reptile and its history on their account.",
    "transferGenerate": "Generate a transfer QR",
    "transferCopy": "Copy link",
    "transferCancel": "Cancel",
    "transferWarn": "Valid for 30 days. The transfer is final once accepted.",
    "photosTitle": "Photo gallery",
    "photosAdd": "Add",
    "photosEmpty": "No photos. Add some to enrich the public profile.",
    "photosUploadError": "Upload failed",
    "photosPublicHint": "These photos appear in the public profile gallery (shared QR).",
    "bulkTitle": "QR code sheet to print",
    "bulkLayout": "Layout",
    "bulkLayout2x4": "2 × 4 (large labels)",
    "bulkLayout3x6": "3 × 6 (standard)",
    "bulkLayout4x8": "4 × 8 (Avery / small)",
    "bulkLinkType": "Link type",
    "bulkLinkPublic": "Public (shareable profile)",
    "bulkLinkInternal": "Internal (app, requires sign-in)",
    "bulkReptiles": "Reptiles",
    "bulkSelectAll": "Select all",
    "bulkDeselectAll": "Deselect all",
    "bulkInternalNote": "internal link (not public)",
    "bulkCancel": "Cancel",
    "bulkGenerate": "Generate PDF",
    "bulkError": "Error generating the PDF",
    "scannerTitle": "Scan a ReptiNode QR",
    "scannerUnsupported": "Your browser doesn't support the built-in scanner. Use your phone's camera: it will automatically open the QR link.",
    "scannerDenied": "Camera access denied.",
    "scannerError": "Unable to open the camera.",
    "scannerAim": "Aim at the QR code of a ReptiNode label.",
    "scannerDetected": "QR detected: {{value}}",
    "btnScan": "Scan a QR",
    "btnEnclosures": "Enclosures & racks",
    "btnBulk": "QR code sheet to print"
  },
  "enclosures": {
    "unavailable": "Enclosure unavailable",
    "occupants": "{{count}} occupant(s)",
    "noPublic": "No public reptile in this enclosure.",
    "title": "Enclosures & racks",
    "backDashboard": "Dashboard",
    "name": "Name",
    "namePlaceholder": "Terrarium A1",
    "type": "Type",
    "typeTerrarium": "Terrarium",
    "typeRack": "Rack",
    "typeBin": "Bin",
    "typeRoom": "Room",
    "create": "Create",
    "empty": "No enclosures. Create one to generate a per-enclosure/rack QR.",
    "reptileCount": "{{count}} reptile(s)",
    "qrActive": "QR active",
    "back": "Back",
    "deleteConfirm": "Delete this enclosure? Reptiles will be detached (not deleted).",
    "qrTitle": "Enclosure QR",
    "visPrivate": "Private (no public page)",
    "visUnlisted": "Unlisted (accessible via link)",
    "visPublic": "Public",
    "qrHint": "Make the enclosure unlisted or public to generate a QR.",
    "view": "View",
    "occupantsTitle": "Occupants",
    "removeOccupant": "Remove",
    "noOccupants": "No reptile in this enclosure.",
    "addReptile": "Add a reptile",
    "choose": "Choose…",
    "copyLink": "Copy link",
    "single": "Enclosure"
  },
  "claim": {
    "success": "Transfer successful!",
    "successDesc": "{{name}} is now part of your collection.",
    "viewSheet": "View profile",
    "unavailable": "Transfer unavailable",
    "title": "Ownership transfer",
    "currentOwner": "Current owner: {{owner}}",
    "explain": "By accepting, this reptile and its history will be transferred to your account.",
    "accept": "Accept the transfer",
    "loginToAccept": "Sign in to accept",
    "error": "Transfer failed",
    "notFound": "Transfer not found"
  },
  "snakeBadges": {
    "public": "Public",
    "unlisted": "Link",
    "forSale": "For sale",
    "reserved": "Reserved",
    "sold": "Sold",
    "publicTitle": "Public profile",
    "unlistedTitle": "Accessible via link"
  }
}
