{
  "nav": {
    "menu": "Menu",
    "recipes": "Recipes",
    "explore": "Explore",
    "search": "Search",
    "feed": "Feed",
    "collections": "Collections",
    "mealPlan": "Meal Plan",
    "nutrition": "Nutrition",
    "pantry": "Pantry",
    "shopping": "Shopping",
    "settings": "Settings",
    "admin": "Admin",
    "signOut": "Sign out",
    "apiKeys": "API keys",
    "webhooks": "Webhooks",
    "language": "Language",
    "notifications": "Notifications",
    "viewProfile": "View profile",
    "lightMode": "Light mode",
    "darkMode": "Dark mode",
    "systemMode": "System"
  },
  "notifications": {
    "title": "Notifications",
    "empty": "No notifications yet.",
    "markAllRead": "Mark all as read",
    "viewAll": "View all",
    "loading": "Loading…",
    "loadMore": "Load more",
    "loadFailed": "Failed to load notifications. Check your connection and try again.",
    "retry": "Retry",
    "unread": "Unread",
    "follow": "{name} followed you",
    "comment": "{name} commented on your recipe",
    "reply": "{name} replied to your comment",
    "reaction": "{name} reacted to your comment",
    "rating": "{name} rated your recipe",
    "mention": "{name} mentioned you in a comment",
    "detail": {
      "comment": "{name} commented on your recipe \"{title}\"",
      "rating": "{name} rated your recipe \"{title}\" {stars} stars",
      "leftoverExpiring": "Your \"{dish}\" from \"{title}\" is about to expire — eat it soon!",
      "shoppingListChecked": "{name} checked off \"{item}\" in \"{list}\"",
      "shoppingListItemsAdded": "{name} added {countLabel} to \"{list}\""
    },
    "pushTitle": {
      "follow": "New follower",
      "comment": "New comment",
      "reply": "New reply",
      "reaction": "New reaction",
      "rating": "New rating",
      "mention": "You were mentioned",
      "leftoverExpiring": "Leftovers expiring soon",
      "shoppingListUpdate": "Shopping list update"
    }
  },
  "recipe": {
    "byAuthor": "by {name}",
    "source": "Source",
    "importedFrom": "Imported from {host}",
    "share": "Share",
    "shareLinkCopied": "Link copied to clipboard",
    "shareCopyFailed": "Failed to copy link",
    "shareNotPublicNotice": "This link will only work once the recipe is set to Public — link copied anyway.",
    "print": "Print",
    "qrCodeAlt": "QR code linking to this recipe",
    "qrCodeCaption": "Scan to view online",
    "ingredients": "Ingredients",
    "instructions": "Instructions",
    "photos": "Photos",
    "batchCookBadge": "Batch cooking",
    "batchCookPrep": "Prep",
    "batchCookDishesTitle": "Dishes & storage",
    "batchCookFridgeDays": "Fridge: {days}d",
    "batchCookFreezerFriendly": "Freezer-friendly",
    "batchCookDayOf": "On the day",
    "batchCookMarkCooked": "Mark as cooked today",
    "batchCookMarkSuccess": "Marked as cooked",
    "batchCookMarkFailed": "Failed to mark as cooked",
    "batchCookExpiresOn": "Cooked — good until {date}",
    "servings": "{count} servings",
    "prep": "{mins}m prep",
    "cook": "{mins}m cook",
    "total": "{mins}m total",
    "edit": "Edit",
    "variations": "Variations",
    "save": "Save",
    "cancel": "Cancel",
    "delete": "Delete",
    "noIngredientsSteps": "No ingredients or steps yet.",
    "generateContent": "Generate with AI",
    "editManually": "Edit manually",
    "deleted": "Recipe deleted",
    "deleteFailed": "Delete failed",
    "imported": "Recipe imported! Review before publishing.",
    "adapted": "Adapted recipe saved as draft",
    "adaptFailed": "Failed to adapt recipe",
    "adaptConstraintRequired": "Select at least one ingredient to exclude or add a constraint",
    "adaptTooltip": "Adapt",
    "adaptTitle": "Adapt this recipe",
    "adaptDescription": "Tap ingredients to exclude them. AI will find the best substitutes while preserving the dish.",
    "excludeIngredients": "Exclude ingredients",
    "excludedCount": "{count} excluded",
    "additionalConstraints": "Additional constraints",
    "optional": "optional",
    "adapting": "Adapting recipe — this may take 20–30 seconds…",
    "adaptingButton": "Adapting…",
    "adaptButton": "Adapt recipe",
    "clearExclusions": "Clear",
    "variationsDirectionsPlaceholder": "e.g. make it vegan, use only pantry staples, reduce sugar…",
    "historyRestoreFailed": "Failed to restore version",
    "pairingMealFailed": "Failed to suggest pairings",
    "pairingDrinkFailed": "Failed to suggest drinks",
    "pairingGenerateFailed": "Failed to generate \"{name}\"",
    "pairingSaveFailed": "Failed to save \"{name}\"",
    "pairingSuccess": "Recipe generated — review before publishing",
    "pairingBulkSuccess": "{count} recipes generated — find them in your library",
    "pairingDialogTitle": "Complete the meal",
    "pairingDialogDescription": "AI-suggested dishes that pair well with this recipe. Generate any of them as a new recipe.",
    "forkTooltip": "Fork this recipe",
    "forked": "Recipe forked to your library",
    "forkFailed": "Failed to fork recipe",
    "forkLimitReached": "Recipe limit reached for your tier",
    "duplicateTooltip": "Duplicate this recipe",
    "duplicated": "Recipe duplicated",
    "forkedFrom": "Forked from {title}",
    "pairingFindingLabel": "Finding perfect pairings…",
    "pairingSuggestButton": "Suggest pairings",
    "pairingRegenerate": "Regenerate",
    "pairingGenerateButton": "Generate",
    "pairingGeneratingButton": "Generating {current}/{total}…",
    "pairingGeneratingLabel": "Generating recipe {current} of {total}…",
    "pairingRoleStarter": "Starter",
    "pairingRoleSide": "Side",
    "pairingRoleSalad": "Salad",
    "pairingRoleBread": "Bread",
    "pairingRoleDrink": "Drink",
    "pairingRoleDessert": "Dessert",
    "pairingRoleSauce": "Sauce",
    "drinksDialogTitle": "Drink pairings",
    "drinksDialogDescription": "AI-suggested drinks that complement this recipe.",
    "drinksSuggestButton": "Suggest drinks",
    "drinksExamplesLabel": "e.g.",
    "drinksTypeWine": "Wine",
    "drinksTypeBeer": "Beer",
    "drinksTypeCocktail": "Cocktail",
    "drinksTypeSpirit": "Spirit",
    "drinksTypeNonAlcoholic": "Non-alcoholic",
    "drinksTypeHot": "Hot",
    "cookAction": "Cook",
    "adaptConstraintPlaceholder": "e.g. Make it vegan, lower the calories, use pantry staples only, gluten-free…",
    "photoImportFailed": "Failed to import recipe from photo.",
    "photoNoRecipeFound": "No recipe could be recognized in that photo. Try a clearer picture of the ingredients or instructions.",
    "importFromPhoto": "Import from Photo",
    "urlImportTitle": "Import recipe from URL",
    "urlImportDescription": "Paste a recipe URL and AI will extract the ingredients and instructions.",
    "urlImportLabel": "Recipe URL",
    "urlImportButton": "Import",
    "urlImportingButton": "Importing…",
    "urlImportFetchFailed": "Failed to import recipe",
    "urlImportSaveFailed": "Failed to save imported recipe",
    "urlImportSuccess": "Recipe imported! Review before publishing.",
    "diffTitleLabel": "Title",
    "diffDescriptionLabel": "Description",
    "diffIngredientsLabel": "Ingredients",
    "diffStepsLabel": "Steps",
    "viewGrid": "Grid view",
    "viewList": "List view",
    "viewCompact": "Compact view",
    "updatedLabel": "Updated {date}",
    "addToCollection": "Add to collection",
    "addToCollectionTitle": "Add {count, plural, one {1 recipe} other {{count} recipes}} to a collection",
    "newCollectionOption": "New collection…",
    "newCollectionNamePlaceholder": "Collection name",
    "addToCollectionSuccess": "{count, plural, one {1 recipe} other {{count} recipes}} added to \"{name}\"",
    "addToCollectionFailed": "Failed to add to collection",
    "createCollectionFailed": "Failed to create collection",
    "noCollectionsYet": "You don't have any collections yet.",
    "versionHistoryTitle": "Version History",
    "versionsLoading": "Loading versions...",
    "versionsEmpty": "No versions yet. Versions are saved automatically when you edit this recipe.",
    "versionCompare": "Compare",
    "versionCompareWith": "Compare v{version} with current",
    "versionRestore": "Restore",
    "versionRestored": "Recipe restored to version {version}",
    "versionDetailLoading": "Loading...",
    "versionDetailSummary": "{ingredients, plural, one {1 ingredient} other {{ingredients} ingredients}}, {steps, plural, one {1 step} other {{steps} steps}}",
    "recognizingPhoto": "Recognizing what's in the photo…",
    "writingRecipe": "Writing the recipe…",
    "pairMealTooltip": "Pair meal",
    "historyTooltip": "History",
    "translateTooltip": "Translate",
    "drinksTooltip": "Drinks",
    "variationsTooltip": "Variations",
    "viewPublicly": "View publicly",
    "shoppingListCreateFailed": "Failed to create list",
    "shoppingListAddFailed": "Failed to add ingredients",
    "bulkDeleted": "{count, plural, one {1 recipe deleted} other {{count} recipes deleted}}",
    "bulkVisibility": "{count, plural, one {1 recipe set to {visibility}} other {{count} recipes set to {visibility}}}",
    "bulkDeleteFailed": "Delete failed",
    "bulkUpdateFailed": "Update failed",
    "bulkDeleteConfirmTitle": "{count, plural, one {Delete 1 recipe?} other {Delete {count} recipes?}}",
    "bulkDeleteConfirmDescription": "This action cannot be undone.",
    "bulkTagsButton": "Tags",
    "bulkTagsTitle": "{count, plural, one {Edit tags on 1 recipe} other {Edit tags on {count} recipes}}",
    "bulkTagsAddLabel": "Add tags",
    "bulkTagsAddPlaceholder": "Type a tag and press Enter",
    "bulkTagsAddButton": "Add",
    "bulkTagsRemoveLabel": "Remove existing tags",
    "bulkTagsUpdated": "{count, plural, one {Tags updated on 1 recipe} other {Tags updated on {count} recipes}}",
    "bulkExportButton": "Export",
    "bulkExportFailed": "Export failed",
    "moveToCollectionTitle": "Move {count, plural, one {1 recipe} other {{count} recipes}} to a collection",
    "moveToCollectionSuccess": "{count, plural, one {1 recipe} other {{count} recipes}} moved to \"{name}\"",
    "deselectAll": "Deselect all",
    "selectAll": "Select all",
    "clickToSelect": "Click cards to select",
    "selectedCount": "{count} selected",
    "select": "Select",
    "visibilityMenuLabel": "Visibility",
    "makePublic": "Make public",
    "makeUnlisted": "Make unlisted",
    "makePrivate": "Make private",
    "visibility": {
      "private": "Private",
      "unlisted": "Unlisted",
      "public": "Public"
    },
    "difficulty": {
      "easy": "Easy",
      "medium": "Medium",
      "hard": "Hard"
    },
    "recipeType": {
      "dish": "Dish",
      "drink": "Drink"
    },
    "dietary": {
      "vegan": "Vegan",
      "vegetarian": "Vegetarian",
      "glutenFree": "Gluten-free",
      "dairyFree": "Dairy-free",
      "nutFree": "Nut-free",
      "halal": "Halal",
      "kosher": "Kosher"
    }
  },
  "ai": {
    "generate": {
      "title": "Generate recipe with AI",
      "description": "Describe what you want to cook and AI will create a complete recipe.",
      "descriptionFull": "Describe a dish in words or snap a photo — AI builds the full recipe.",
      "tabDescribe": "Describe",
      "tabPhoto": "From photo",
      "surpriseMe": "Surprise me",
      "prompt": "What do you want to cook?",
      "placeholder": "e.g. A creamy mushroom risotto with parmesan, serves 4, easy difficulty",
      "language": "Recipe language",
      "difficulty": "Difficulty",
      "anyDifficulty": "Any",
      "button": "Generate",
      "generating": "Generating…",
      "success": "Recipe generated! Review and edit before publishing.",
      "error": "Failed to generate recipe",
      "saveError": "Failed to save generated recipe",
      "uploadClick": "Click to upload",
      "uploadDrag": "or drag a food photo",
      "uploadFormats": "JPEG, PNG or WebP · AI will reverse-engineer the recipe",
      "analyzing": "Analyzing…",
      "analyzePhoto": "Analyzing dish photo…",
      "recognizeDish": "Recognize dish",
      "photoSuccess": "Recipe recognized! Review and edit before publishing.",
      "photoError": "Failed to analyze photo",
      "contentGenerated": "Ingredients and steps generated!",
      "contentGenerateFailed": "Generation failed",
      "contentSaveFailed": "Failed to save generated content",
      "generatingContent": "Generating recipe content…",
      "photoAnalysisNote": "AI will analyze this dish and infer ingredients, quantities, and cooking steps."
    },
    "variations": {
      "title": "AI Recipe Variations",
      "description": "Generate creative variations of this recipe — dietary adaptations, flavor twists, technique changes.",
      "generate": "Generate 3 variations",
      "generating": "Generating variations…",
      "regenerate": "Regenerate",
      "apply": "Apply",
      "applying": "Applying…",
      "ingredientChanges": "Ingredient changes",
      "stepChanges": "Step changes",
      "success": "Variation created — review and edit before publishing.",
      "error": "Failed to generate variations",
      "saveError": "Failed to save variation",
      "wait": "This may take 20–30 seconds",
      "directions": "Directions",
      "optional": "optional",
      "stepLabel": "Step {n}"
    },
    "translate": {
      "title": "Translate Recipe",
      "description": "Translate this recipe's title, description, ingredients, and steps into another language.",
      "targetLanguage": "Target language",
      "button": "Translate",
      "translating": "Translating…",
      "success": "Translation saved as new draft recipe.",
      "error": "Failed to translate recipe",
      "saveError": "Failed to save translated recipe",
      "wait": "This may take 20–30 seconds"
    }
  },
  "settings": {
    "title": "Settings",
    "subtitle": "Manage your account, preferences, and integrations.",
    "profile": "Profile",
    "language": "Language",
    "units": "Units",
    "metric": "Metric",
    "imperial": "Imperial",
    "security": "Security",
    "aiModels": "AI & Models",
    "notifications": "Notifications",
    "nutrition": "Nutrition",
    "apiKeys": "API Keys",
    "webhooks": "Webhooks",
    "byok": {
      "title": "Your API Keys (BYOK)",
      "description": "Use your own API keys instead of the app's shared quota. Keys are encrypted at rest."
    },
    "modelPrefs": {
      "title": "Model Preferences",
      "description": "Choose which model to use for each task. Defaults to your first configured provider."
    },
    "apiKeysPage": {
      "title": "API Keys",
      "description": "Manage API keys for programmatic access to the Epicure API.",
      "docsLink": "View API documentation"
    },
    "pushNotifications": {
      "title": "Push Notifications",
      "description": "Get notified when someone comments on your recipes or likes your content."
    },
    "nutritionGoals": {
      "title": "Daily Nutrition Goals",
      "description": "Set your daily targets. These are shown as progress bars on your meal plan.",
      "viewDiaryCta": "View nutrition diary",
      "caloriesLabel": "Calories (kcal/day)",
      "proteinLabel": "Protein (g/day)",
      "carbsLabel": "Carbs (g/day)",
      "fatLabel": "Fat (g/day)",
      "caloriesPlaceholder": "e.g. 2000",
      "proteinPlaceholder": "e.g. 50",
      "carbsPlaceholder": "e.g. 250",
      "fatPlaceholder": "e.g. 70",
      "saveButton": "Save goals",
      "saving": "Saving...",
      "saveSuccess": "Nutrition goals saved",
      "saveError": "Failed to save nutrition goals"
    },
    "webhooksPage": {
      "title": "Webhooks",
      "description": "Receive HTTP callbacks when events happen in your Epicure account."
    }
  },
  "print": {
    "footer": "Printed from Epicure",
    "day": "Day",
    "srv": " · {count} srv",
    "days": {
      "mon": "Monday",
      "tue": "Tuesday",
      "wed": "Wednesday",
      "thu": "Thursday",
      "fri": "Friday",
      "sat": "Saturday",
      "sun": "Sunday"
    }
  },
  "publicShoppingList": {
    "sharedList": "Shared shopping list",
    "wantYourOwn": "Want your own shopping lists?",
    "anonymousEditor": "Someone with the link",
    "editableBadge": "Anyone with this link can edit"
  },
  "publicRecipe": {
    "publicRecipeBy": "Public recipe by",
    "viewInLibrary": "View in your library",
    "signUpFree": "Sign up free",
    "logIn": "Log in",
    "wantToSave": "Want to save this recipe?",
    "wantToSaveDescription": "Create a free account to save recipes, scale servings, and build your own library.",
    "getStartedFree": "Get started free"
  },
  "substitute": {
    "fetchError": "Couldn't fetch substitutes.",
    "titleFor": "Substitute for {ingredient}",
    "substitutesFor": "Substitutes for",
    "finding": "Finding substitutes…",
    "noneFound": "No substitutions found."
  },
  "recipeChat": {
    "sorry": "Sorry, I couldn't answer that.",
    "error": "Something went wrong. Please try again.",
    "suggestion1": "Can I substitute any ingredients?",
    "suggestion2": "How do I know when it's done?",
    "suggestion3": "Can I make this ahead of time?",
    "suggestion4": "What can I serve with this?",
    "ariaLabel": "Ask AI about this recipe",
    "title": "Ask about this recipe",
    "intro": "Ask anything about this recipe — ingredients, techniques, substitutions, timing…",
    "inputPlaceholder": "Ask a question…",
    "send": "Send message"
  },
  "chatHistory": {
    "searchAriaLabel": "Search chat history",
    "searchPlaceholder": "Search past questions…",
    "searching": "Searching…",
    "noResults": "No matching messages",
    "close": "Close",
    "clearAriaLabel": "Clear chat history",
    "clearConfirmTitle": "Clear this conversation?",
    "clearConfirmDescription": "This deletes the saved history for this chat. This can't be undone.",
    "clearCancel": "Cancel",
    "clearConfirm": "Clear history",
    "cleared": "Chat history cleared",
    "clearFailed": "Failed to clear chat history"
  },
  "cookingChat": {
    "sorry": "Sorry, I couldn't answer that.",
    "error": "Something went wrong. Please try again.",
    "suggestion1": "How do I know when oil is hot enough?",
    "suggestion2": "What's a good substitute for buttermilk?",
    "suggestion3": "How long can I keep leftovers in the fridge?",
    "suggestion4": "What's the difference between simmering and boiling?",
    "ariaLabel": "Ask a cooking question",
    "title": "Cooking assistant",
    "subtitle": "Ask any cooking question — not tied to a specific recipe",
    "intro": "Ask anything about cooking — techniques, substitutions, timing, equipment…",
    "inputPlaceholder": "Ask a question…",
    "send": "Send message"
  },
  "servingScaler": {
    "servings": "Servings",
    "reset": "Reset",
    "aiScale": "AI Scale",
    "scaling": "Scaling…",
    "aiScaledNote": "AI-scaled quantities shown below",
    "dismissAiScaling": "Dismiss AI scaling"
  },
  "people": {
    "searching": "Searching…"
  },
  "messages": {
    "loading": "Loading…",
    "noMessagesYet": "No messages yet. Say hi!",
    "sendFailed": "Failed to send",
    "placeholder": "Type a message…",
    "noConversationsYet": "No conversations yet. Visit a profile to say hi.",
    "unknownUser": "Unknown",
    "noMessagesPreview": "No messages yet",
    "selectConversation": "Select a conversation",
    "messageButton": "Message",
    "startConversationFailed": "Failed to start conversation",
    "title": "Messages",
    "loadOlder": "Load older messages",
    "loadingOlder": "Loading…",
    "send": "Send message"
  },
  "nutritionPanel": {
    "estimateButton": "Estimate nutrition",
    "reEstimateButton": "Re-estimate",
    "estimating": "Estimating…",
    "estimatingNutrition": "Estimating nutrition…",
    "title": "Nutrition per serving",
    "estimateFailed": "Failed to estimate nutrition",
    "error": "Something went wrong",
    "protein": "Protein",
    "carbs": "Carbs",
    "fat": "Fat",
    "fiber": "Fiber",
    "sodium": "Sodium",
    "manualBadge": "Manually entered",
    "estimateInsteadButton": "Estimate with AI instead"
  },
  "nutritionDiary": {
    "title": "Nutrition Diary",
    "subtitle": "Your daily nutrition intake, computed from what you've cooked.",
    "dateLabel": "Date",
    "today": "Today",
    "loading": "Loading…",
    "loadError": "Couldn't load your nutrition diary. Please try again.",
    "goalNotSet": "You haven't set daily nutrition goals yet.",
    "setGoalsCta": "Set goals",
    "calories": "Calories",
    "protein": "Protein",
    "carbs": "Carbs",
    "fat": "Fat",
    "fiber": "Fiber",
    "sodium": "Sodium",
    "entriesTitle": "Recipes cooked",
    "noEntries": "Nothing logged for this day. Mark a recipe as \"cooked\" to see it here.",
    "servingsLabel": "{count, plural, one {1 serving} other {{count} servings}}",
    "nutritionUnknownBadge": "Nutrition unknown",
    "unknownNote": "{count, plural, one {1 entry has no nutrition data and isn't included in the totals above.} other {{count} entries have no nutrition data and aren't included in the totals above.}}"
  },
  "explore": {
    "title": "Explore",
    "tabDiscover": "Discover",
    "searchPlaceholder": "Search recipes and people…",
    "peopleHeading": "People",
    "recipesHeading": "Recipes",
    "maxMinutes": "Max minutes",
    "aiSearchPlaceholder": "e.g. quick weeknight dinners, Italian comfort food…",
    "anyDifficulty": "Any difficulty",
    "anyType": "Any type",
    "resultsFoundSingular": "{count} recipe found",
    "resultsFoundPlural": "{count} recipes found",
    "noResultsTitle": "No results for “{query}”",
    "noResultsHint": "Try different keywords or remove filters",
    "loadMore": "Load more",
    "recipeIdeas": "Recipe ideas",
    "recipeIdeasHint": "Tell the AI what you're in the mood for, or let it surprise you.",
    "generating": "Generating…",
    "getIdeas": "Get ideas",
    "surpriseMe": "Surprise me",
    "generateFullRecipe": "Generate full recipe",
    "trendingThisWeek": "Trending this week",
    "noTrending": "No trending recipes yet. Be the first to share one!",
    "recentlyAdded": "Recently added",
    "noRecent": "No public recipes yet."
  },
  "common": {
    "expand": "Expand to fullscreen",
    "collapse": "Exit fullscreen",
    "loading": "Loading…",
    "error": "Something went wrong",
    "save": "Save",
    "saved": "Saved",
    "saveFailed": "Failed to save",
    "exportMarkdown": "Export as Markdown",
    "copyMarkdown": "Copy as Markdown",
    "downloadMarkdown": "Download as Markdown",
    "copiedToClipboard": "Copied to clipboard",
    "copyFailed": "Failed to copy to clipboard",
    "print": "Print",
    "share": "Share",
    "deleteFailed": "Delete failed",
    "updateFailed": "Update failed",
    "deleted": "Deleted",
    "cancel": "Cancel",
    "delete": "Delete",
    "confirm": "Confirm",
    "back": "Back",
    "difficulty": "Difficulty",
    "anyDifficulty": "Any",
    "editManually": "Edit manually",
    "surpriseMe": "Surprise me",
    "generatingContent": "Generating recipe content…",
    "decrease": "Decrease",
    "increase": "Increase"
  },
  "auth": {
    "signIn": "Sign in",
    "signInTitle": "Sign in to your recipe library",
    "signInLoading": "Signing in…",
    "signInFailed": "Sign in failed",
    "signUp": "Sign up",
    "signUpTitle": "Create account",
    "signUpSubtitle": "Start building your recipe library",
    "signUpLoading": "Creating account…",
    "signUpFailed": "Sign up failed",
    "signUpSuccess": "Account created — check your email to verify",
    "continueWithGoogle": "Continue with Google",
    "continueWithGithub": "Continue with GitHub",
    "continueWithDiscord": "Continue with Discord",
    "continueWithAuthentik": "Continue with Authentik",
    "email": "Email",
    "emailPlaceholder": "you@example.com",
    "password": "Password",
    "name": "Name",
    "namePlaceholder": "Your name",
    "forgotPassword": "Forgot password?",
    "forgotPasswordTitle": "Forgot password",
    "forgotPasswordSent": "Check your inbox",
    "forgotPasswordDescription": "Enter your email and we'll send you a reset link.",
    "forgotPasswordSentDescription": "If an account exists for that email, you'll receive a reset link shortly.",
    "forgotPasswordFailed": "Failed to send reset email",
    "sendResetLink": "Send reset link",
    "sendingLink": "Sending…",
    "resetPasswordTitle": "Reset password",
    "resetPasswordDescription": "Enter a new password for your account.",
    "newPassword": "New password",
    "confirmPassword": "Confirm password",
    "updatePassword": "Update password",
    "updatingPassword": "Updating…",
    "invalidToken": "Invalid or missing reset token.",
    "resetPasswordMismatch": "Passwords don't match",
    "resetPasswordFailed": "Reset failed — link may have expired",
    "resetPasswordSuccess": "Password updated",
    "noAccount": "No account? Sign up",
    "alreadyHaveAccount": "Already have an account? Sign in",
    "backToSignIn": "Back to sign in",
    "emailNotVerified": "Email not verified",
    "checkInboxVerification": "Check your inbox for a verification email.",
    "resendVerification": "Resend verification email",
    "resendingSending": "Sending…",
    "resendFailed": "Failed to resend",
    "resendSuccess": "Verification email sent — check your inbox",
    "or": "or",
    "twoFactorTitle": "Two-factor authentication",
    "twoFactorAppDescription": "Enter the 6-digit code from your authenticator app.",
    "twoFactorBackupDescription": "Enter one of your backup codes.",
    "twoFactorCodeLabel": "Code",
    "twoFactorBackupCodeLabel": "Backup code",
    "twoFactorVerify": "Verify",
    "twoFactorVerifying": "Verifying…",
    "twoFactorInvalidCode": "Invalid code",
    "twoFactorUseBackupCode": "Use a backup code instead",
    "twoFactorUseApp": "Use your authenticator app instead"
  },
  "batchCooking": {
    "title": "Batch cooking",
    "subtitle": "Cook once, eat well all week",
    "empty": "No batch-cooking sessions yet",
    "newSession": "New batch-cooking session",
    "dishCount": "{count, plural, one {# dish} other {# dishes}}",
    "wizardTitle": "Plan a batch-cooking session",
    "wizardDescription": "Choose how many meals to cover — we'll design a shared shopping list and one prep session for all of them.",
    "describe": "Describe what you're after",
    "describePlaceholder": "e.g. Mediterranean flavors, use up the squash in my pantry, kid-friendly…",
    "dinners": "Dinners",
    "lunches": "Lunches",
    "servingsPerMeal": "Servings per meal",
    "dietaryPrefs": "Dietary preferences",
    "dietaryPrefsPlaceholder": "e.g. vegetarian, no shellfish",
    "anyDifficulty": "Any",
    "generate": "Generate",
    "generating": "Generating…",
    "generateSuccess": "Batch-cooking session created",
    "generateFailed": "Failed to generate"
  },
  "recipes": {
    "title": "Recipes",
    "subtitle": "Your personal recipe library",
    "new": "New recipe",
    "newTitle": "New recipe",
    "newSubtitle": "Build your recipe from scratch",
    "editTitle": "Edit recipe",
    "importUrl": "Import URL",
    "generate": "Generate",
    "batchCooking": "Batch cooking",
    "search": "Search recipes…",
    "noRecipes": "No recipes yet",
    "noMatch": "No recipes match",
    "clearSearch": "Clear search",
    "createFirst": "Create your first recipe",
    "resultSingular": "{count} recipe",
    "resultPlural": "{count} recipes",
    "for": "for",
    "filterByTag": "Filter by tag…",
    "sortRecentlyUpdated": "Recently updated",
    "sortOldestUpdated": "Oldest updated",
    "sortNewestFirst": "Newest first",
    "sortOldestFirst": "Oldest first",
    "sortTitleAZ": "Title A–Z",
    "sortTitleZA": "Title Z–A",
    "sort": "Sort",
    "sortBy": "Sort by",
    "filter": "Filter",
    "all": "All",
    "anyDifficulty": "Any difficulty",
    "visibilityLabel": "Visibility",
    "difficultyLabel": "Difficulty",
    "tagLabel": "Tag",
    "batchCookLabel": "Batch cooking",
    "batchCookOnly": "Batch cooking only",
    "batchCookExclude": "Hide batch cooking",
    "recipeTypeLabel": "Type",
    "clearFilters": "Clear filters",
    "tabMine": "My Recipes",
    "tabFavorites": "Favorites",
    "favoritesCount": "{count} favorited recipe",
    "favoritesCountPlural": "{count} favorited recipes",
    "favoritesEmpty": "No favorited recipes yet — tap the heart on any recipe to save it here.",
    "favoritesEmptyTitle": "No favorites yet",
    "exploreRecipes": "Explore recipes",
    "emptyStateDescription": "Create your own, import from a URL, or let AI generate one to get started."
  },
  "recipeNotes": {
    "title": "Your private notes",
    "visibilityHint": "Only visible to you — never shared with the recipe's author or anyone else.",
    "placeholder": "e.g. I used less salt than the recipe calls for, great with rice instead of pasta…",
    "save": "Save",
    "saving": "Saving…",
    "saved": "Note saved",
    "saveFailed": "Failed to save note"
  },
  "recipeForm": {
    "titleLabel": "Title *",
    "titleRequired": "Title is required",
    "titlePlaceholder": "My amazing recipe",
    "descriptionLabel": "Description",
    "descriptionPlaceholder": "What makes this recipe special…",
    "recipeType": "Type",
    "recipeTypeDish": "Dish",
    "recipeTypeDrink": "Drink / cocktail",
    "servings": "Servings",
    "servingsDrink": "Makes (servings)",
    "prepMins": "Prep (min)",
    "cookMins": "Cook (min)",
    "difficulty": "Difficulty",
    "visibilityMenuLabel": "Visibility",
    "tags": "Tags",
    "tagsHelp": "Press Enter to add · Backspace to remove last · max 20 tags",
    "tagsPlaceholder": "Add tags… (press Enter)",
    "removeTagAriaLabel": "Remove tag {tag}",
    "dietaryTags": "Dietary tags",
    "nutritionToggle": "Add nutrition info manually",
    "nutritionToggleHelp": "Per serving. Turns off the AI-estimate action on the recipe page — clear these fields (turn this off) to let AI estimate it instead.",
    "calories": "Calories (kcal)",
    "photos": "Photos",
    "ingredients": "Ingredients",
    "amount": "Amount",
    "unit": "Unit",
    "ingredient": "Ingredient",
    "note": "Note",
    "addIngredient": "Add ingredient",
    "setCover": "Set as cover",
    "removePhoto": "Remove",
    "expand": "Expand",
    "steps": "Steps",
    "stepPlaceholder": "Step {n}…",
    "timerSeconds": "Timer (s)",
    "addStep": "Add step",
    "saving": "Saving…",
    "saveChanges": "Save changes",
    "createRecipe": "Create recipe",
    "updateSuccess": "Recipe updated",
    "createSuccess": "Recipe created",
    "saveError": "Failed to save recipe",
    "ingredientsRequired": "Add at least one ingredient",
    "stepsRequired": "Add at least one step",
    "discardChangesTitle": "Discard changes?",
    "discardChangesDescription": "You have unsaved changes. If you leave now, they will be lost.",
    "keepEditing": "Keep editing",
    "discardChanges": "Discard changes",
    "batchCookToggle": "This is a batch-cook recipe",
    "batchCookToggleHelp": "Split this recipe into several dishes cooked together, each with its own storage and reheat guidance.",
    "dishes": "Dishes",
    "addDish": "Add dish",
    "dishName": "Dish name",
    "dishDescription": "Description",
    "fridgeDays": "Fridge (days)",
    "freezerFriendly": "Freezer-friendly",
    "freezerNote": "Freezer note",
    "dayOfInstructions": "Day-of instructions",
    "dishesRequired": "Add at least one dish",
    "dayOfInstructionsRequired": "Every dish needs day-of instructions",
    "appliesTo": "Applies to",
    "sharedPrep": "Shared prep"
  },
  "canCook": {
    "title": "What can I cook?",
    "subtitle": "Recipes you can make with your pantry",
    "emptyPantry": "Your pantry is empty",
    "addPantryItems": "Add pantry items",
    "readyToCook": "Ready to cook",
    "almostThere": "Almost there (70–99%)",
    "partialMatches": "Partial matches",
    "noMatches": "No strong matches found",
    "missing": "Missing",
    "ingredientProgress": "{matched}/{total} ingredients",
    "useItUp": "Use it up"
  },
  "mealPlan": {
    "title": "Meal Plan",
    "nutritionBar": {
      "dailyAverageVsGoals": "Daily average vs. your goals",
      "calories": "Calories",
      "protein": "Protein",
      "carbs": "Carbs",
      "fat": "Fat",
      "missingDataSingular": "{count} planned meal missing nutrition data — estimate it from the recipe page for a more accurate picture.",
      "missingDataPlural": "{count} planned meals missing nutrition data — estimate it from the recipe page for a more accurate picture."
    },
    "shoppingLists": "Shopping lists",
    "print": "Print",
    "shareTitle": "Share this week's plan",
    "shareDescription": "Invite household members to view or edit this week's meal plan.",
    "sharedWithYou": "Shared with you",
    "sharedPlanOf": "{name}'s plan",
    "weekOf": "Week of {date}",
    "sharedMealPlanTitle": "{name}'s Meal Plan",
    "batchCookBadge": "Batch cooking",
    "batchCooking": "Batch cooking",
    "pickDishTitle": "Which dish from \"{recipe}\"?",
    "pickDishDescription": "This is a batch-cooking session — pick the specific dish for this slot.",
    "back": "Back",
    "addTo": "Add to {day} – {meal}",
    "searchRecipes": "Search recipes…",
    "servings": "Servings",
    "servingsAbbrev": "{count} srv",
    "difficulty": "Difficulty",
    "noRecipes": "No recipes found",
    "addFailed": "Failed to add",
    "addedToPantry": "{count, plural, one {1 item added to pantry} other {{count} items added to pantry}}",
    "moveToPantryFailed": "Failed to move items to pantry",
    "aisleOther": "Other",
    "listEmptyState": "This list is empty.",
    "checkedCount": "{checked}/{total} checked",
    "searchItemsPlaceholder": "Search items…",
    "sortByCategory": "By category",
    "sortByAlpha": "Alphabetical",
    "sortByUnchecked": "Unchecked first",
    "noSearchResults": "No items match your search.",
    "autoCategorize": "Auto-categorize",
    "autoCategorizeSuccess": "{count, plural, one {1 item categorized} other {{count} items categorized}}",
    "autoCategorizeNoneFound": "Couldn't guess a category for the remaining items",
    "removeItemConfirmTitle": "Remove item?",
    "removeItemConfirmDescription": "Remove \"{name}\" from this list?",
    "moveToPantry": "Move {count} to pantry",
    "listCreated": "List created",
    "days": {
      "mon": "Mon",
      "tue": "Tue",
      "wed": "Wed",
      "thu": "Thu",
      "fri": "Fri",
      "sat": "Sat",
      "sun": "Sun"
    },
    "meals": {
      "breakfast": "Breakfast",
      "lunch": "Lunch",
      "dinner": "Dinner",
      "snack": "Snack"
    },
    "generateWithAi": "Generate with AI",
    "aiModalDescription": "AI will generate a full week of meals and create draft recipes for you.",
    "dietaryPrefs": "Dietary preferences",
    "dietaryPrefsPlaceholder": "e.g. vegetarian, gluten-free, low-carb…",
    "aiPantryNote": "Your pantry items will be considered when available.",
    "generating": "Generating…",
    "generate": "Generate",
    "cancel": "Cancel",
    "aiGenerated": "Meal plan generated!",
    "includePantryItems": "Include pantry items",
    "pantryMode": "Pantry mode — maximize use of what you have",
    "pantryModeDescription": "Prefer meals that use multiple pantry ingredients and minimize extra shopping.",
    "targetNutritionGoals": "Target my nutrition goals",
    "targetNutritionGoalsDescription": "Nudge the AI to aim for your daily calorie and macro targets across the day's meals.",
    "removeFailed": "Failed to remove",
    "generationFailed": "Generation failed",
    "anyDifficulty": "Any",
    "aiPhaseAnalyzing": "Analyzing your preferences…",
    "aiPhasePlanning": "Planning breakfast, lunch & dinner…",
    "aiPhaseSelecting": "Selecting recipes for each day…",
    "aiPhaseBalancing": "Balancing nutrition across the week…",
    "aiPhaseFinalizing": "Finalizing your meal plan…",
    "newList": "New list",
    "newListTitle": "New shopping list",
    "listNameLabel": "Name",
    "listNamePlaceholder": "Weekly groceries",
    "generateFromWeek": "Generate from meal plan week (optional)",
    "generateFromWeekHint": "Picks Monday of the selected week",
    "generateFromThisWeek": "Add to shopping list",
    "generateFromThisWeekHint": "Merges every recipe's ingredients from this week, summing matching ones and flagging what's already in your pantry.",
    "shoppingListWeekName": "Groceries for {week}",
    "listCreateFailed": "Failed to create",
    "listCreating": "Creating…",
    "listCreate": "Create",
    "pickRecipe": "Pick recipe",
    "addEntry": "+ Add",
    "removeEntry": "Remove meal",
    "markCooked": "Mark as cooked",
    "markCookedSuccess": "Marked as cooked",
    "markCookedFailed": "Failed to mark as cooked",
    "exportCalendar": "Export to calendar",
    "previousWeek": "Previous week",
    "nextWeek": "Next week",
    "clearDay": "Clear day",
    "clearWeek": "Clear week",
    "clearDayConfirmTitle": "Clear {day}?",
    "clearWeekConfirmTitle": "Clear the whole week?",
    "clearConfirmDescription": "This removes every planned meal shown — it doesn't delete the recipes themselves.",
    "clearedSuccess": "{count, plural, one {1 meal cleared} other {{count} meals cleared}}"
  },
  "pantry": {
    "title": "Pantry",
    "subtitle": "Track what you have on hand",
    "canCook": "What can I cook?",
    "expiringSoonSuggestionsTitle": "Use it up soon",
    "seeAll": "See all",
    "expiringLeftoversTitle": "Leftovers expiring soon",
    "expiringToday": "Eat today",
    "expiringInDays": "{days}d left",
    "itemNamePlaceholder": "Item name",
    "qtyPlaceholder": "Qty",
    "unitPlaceholder": "Unit",
    "add": "Add",
    "addFailed": "Failed to add",
    "removeFailed": "Failed to remove",
    "removeConfirmTitle": "Remove item?",
    "removeConfirmDescription": "Remove \"{name}\" from your pantry?",
    "empty": "No pantry items yet.",
    "emptyDescription": "Add items by hand, or scan a barcode / photo to fill it in fast.",
    "expired": "Expired",
    "expiresInDays": "Expires in {days}d",
    "expiresOn": "Expires {date}",
    "printItemCountSingular": "{count} item",
    "printItemCountPlural": "{count} items",
    "noItems": "No items in pantry.",
    "colItem": "Item",
    "colQuantity": "Quantity",
    "colExpires": "Expires",
    "expiredDaysAgo": "Expired {days}d ago",
    "scan": "Scan",
    "scanTitle": "Add by scan",
    "scanDescription": "Scan a barcode or take a photo to quickly add pantry items.",
    "scanBarcodeOption": "Scan barcode",
    "scanPhotoOption": "Take/upload photo",
    "scanBarcodeTitle": "Scan barcode",
    "scanBarcodeDescription": "Point your camera at a product barcode.",
    "scanConfirmTitle": "Confirm item",
    "scanConfirmDescription": "Review and edit before adding to your pantry.",
    "scanAnalyzingTitle": "Analyzing photo",
    "scanAnalyzingDescription": "Identifying items in your photo…",
    "scanBack": "Back",
    "scanAddToPantry": "Add to pantry",
    "scanAdded": "Added to pantry",
    "scanLookupFailed": "Barcode lookup failed",
    "scanNotFound": "Product not found. Try a photo scan instead.",
    "scanPhotoFailed": "Photo scan failed",
    "scanNoItemsFound": "No items recognized in this photo",
    "cameraError": "Couldn't access the camera"
  },
  "feed": {
    "title": "Feed",
    "followEmpty": "Follow chefs to see their recipes here.",
    "followEmptyDescription": "Your following feed fills up as soon as you follow a few people.",
    "followEmptyDescriptionExplore": "Search for people above and follow a few chefs to see their recipes here.",
    "findPeople": "Find people to follow",
    "noNew": "No new recipes from people you follow.",
    "following": "Following",
    "trending": "Trending",
    "trendingEmpty": "No trending recipes this week.",
    "forYou": "For You",
    "forYouEmpty": "Favorite or rate some recipes to get personalized picks here.",
    "loading": "Loading…",
    "loadMore": "Load more",
    "loadFailed": "Failed to load recipes. Check your connection and try again.",
    "retry": "Retry"
  },
  "shoppingLists": {
    "title": "Shopping Lists",
    "subtitle": "Plan your grocery runs",
    "qrCodeAlt": "QR code linking to this shopping list",
    "qrCodeCaption": "Scan to view online",
    "empty": "No shopping lists yet",
    "emptyDescription": "Generate one from a meal plan, or start one from scratch.",
    "listEmpty": "Empty",
    "generated": "Generated",
    "shareTitle": "Share shopping list",
    "shareDescription": "Invite household members to view or edit this list.",
    "sharedWithYou": "Shared with you",
    "sendToGroceryDelivery": "Send to grocery delivery",
    "copyAsText": "Copy list as text",
    "sendToInstacart": "Send to Instacart",
    "copiedToClipboard": "List copied to clipboard",
    "exportBuildFailed": "Could not build export",
    "instacartNotConfigured": "Instacart isn't configured yet",
    "alreadyInPantry": "Already in pantry",
    "items": "{checked}/{total} items",
    "itemsChecked": "{checked}/{total} items checked",
    "fromMealPlan": " · From meal plan",
    "itemCount": "{count} item",
    "itemCountPlural": "{count} items",
    "addToList": "Add to list",
    "dialogTitle": "Add to shopping list",
    "dialogDescription": "Add the ingredients of <strong>{title}</strong> to a shopping list.",
    "scaledSuffix": "scaled)",
    "loadingLists": "Loading your lists…",
    "modeExisting": "Add to existing list",
    "modeNew": "Create new list",
    "listNamePlaceholder": "List name",
    "ingredientsWillBeAdded": "{count, plural, one {1 ingredient will be added.} other {{count} ingredients will be added.}}",
    "adding": "Adding…",
    "addIngredients": "Add ingredients",
    "addedCount": "{count} ingredients added to list",
    "actionsMenuLabel": "List actions",
    "rename": "Rename",
    "renameListTitle": "Rename list",
    "renameListLabel": "List name",
    "renaming": "Saving…",
    "listRenamed": "List renamed",
    "listRenameFailed": "Failed to rename list",
    "deleteListConfirmTitle": "Delete list?",
    "deleteListConfirmDescription": "This action cannot be undone. The list and all its items will be permanently deleted.",
    "listDeleted": "List deleted",
    "listDeleteFailed": "Failed to delete list",
    "changeCategory": "Change category",
    "deleteItem": "Delete item",
    "aisleOther": "Other",
    "newCategoryPlaceholder": "New category…",
    "addCategory": "Add",
    "categories": {
      "produce": "Produce",
      "dairyEggs": "Dairy & Eggs",
      "meatSeafood": "Meat & Seafood",
      "bakery": "Bakery",
      "frozen": "Frozen",
      "pantry": "Pantry",
      "spicesCondiments": "Spices & Condiments",
      "beverages": "Beverages"
    }
  },
  "collections": {
    "title": "Collections",
    "subtitle": "Curate your favorite recipes into collections",
    "empty": "No collections yet",
    "emptyDescription": "Group your recipes by theme, occasion, or however makes sense to you.",
    "emptyCollection": "No recipes in this collection yet.",
    "public": "Public",
    "recipeCount": "{count} recipe",
    "recipeCountPlural": "{count} recipes",
    "discoverTitle": "Discover",
    "discoverSubtitle": "Trending and recently shared public collections",
    "myCollectionsLink": "My collections",
    "trendingThisWeek": "Trending this week",
    "recentlyAdded": "Recently added",
    "noTrending": "No trending collections yet",
    "noRecent": "No public collections yet",
    "exportPdf": "Export as PDF",
    "shareTitle": "Share collection",
    "shareDescription": "Invite people to view or edit this collection.",
    "new": "New collection",
    "newTitle": "New collection",
    "nameLabel": "Name",
    "namePlaceholder": "Weekend dinners",
    "descriptionLabel": "Description",
    "descriptionPlaceholder": "Optional…",
    "makePublic": "Make public",
    "creating": "Creating…",
    "create": "Create",
    "createFailed": "Failed to create",
    "forking": "Forking…",
    "forkCollection": "Fork collection",
    "forkFailed": "Fork failed",
    "selectRecipes": "Select",
    "moveToCollection": "Move to…",
    "removeFromCollection": "Remove",
    "removedFromCollection": "{count, plural, one {1 recipe removed from this collection} other {{count} recipes removed from this collection}}",
    "removeFromCollectionFailed": "Failed to remove from collection",
    "removeFromCollectionConfirmTitle": "{count, plural, one {Remove 1 recipe from this collection?} other {Remove {count} recipes from this collection?}}",
    "removeFromCollectionConfirmDescription": "The recipe itself won't be deleted, just removed from this collection."
  },
  "shareDialog": {
    "invite": "Invite",
    "emailPlaceholder": "Email address",
    "owner": "Owner",
    "viewer": "Viewer",
    "editor": "Editor",
    "loadingMembers": "Loading members…",
    "noMembers": "No members yet.",
    "invitationSent": "Invitation sent",
    "alreadyMember": "Already a member",
    "userNotFound": "User not found",
    "inviteFailed": "Could not invite user",
    "loadMembersFailed": "Could not load members",
    "memberRemoved": "Member removed",
    "removeMemberFailed": "Could not remove member",
    "enterEmail": "Enter an email address",
    "publicLinkTitle": "Public link",
    "publicLinkDescription": "Anyone with the link can view this list.",
    "publicLinkToggleFailed": "Could not update the public link",
    "publicEditableTitle": "Allow editing",
    "publicEditableDescription": "Anyone with the link can check off, add, and reorder items — no account needed.",
    "copyLink": "Copy link",
    "linkCopied": "Link copied",
    "copyLinkFailed": "Could not copy link"
  },
  "social": {
    "followed": "Following",
    "unfollowed": "Unfollowed",
    "commentFailed": "Failed to post comment",
    "deleted": "Deleted",
    "ratingSaved": "Rating saved",
    "collectionCreated": "Collection created",
    "collectionForked": "Collection forked to your library",
    "inviteSent": "Invitation sent",
    "memberRemoved": "Member removed",
    "replyPlaceholder": "Reply…",
    "commentPlaceholder": "Share your thoughts…",
    "commentsTitle": "Comments",
    "noCommentsYet": "No comments yet. Be the first!",
    "deleteCommentTitle": "Delete comment?",
    "deleteCommentDescription": "This action cannot be undone.",
    "blockConfirmTitle": "Block @{username}?",
    "blockConfirmDescription": "They won't be able to follow you or comment on your recipes.",
    "blockConfirmAction": "Block",
    "loadMoreComments": "Load more comments",
    "loadingMoreComments": "Loading…",
    "postButton": "Post",
    "postingButton": "Posting…",
    "replyButton": "Reply",
    "reportButton": "Report",
    "ratingFailed": "Failed to rate",
    "cookedItPrompt": "Cooked it? Rate it and share a photo",
    "reviewTextPlaceholder": "How did it turn out?",
    "reviewPhotoAdd": "Add photo",
    "reviewPhotoUploading": "Uploading…",
    "reviewPhotoFailed": "Failed to upload photo",
    "reviewSubmit": "Post review",
    "reviewSubmitting": "Posting…",
    "reviewsTitle": "{count, plural, one {# review} other {# reviews}}",
    "justNow": "just now",
    "minutesAgo": "{mins}m ago",
    "hoursAgo": "{hours}h ago",
    "daysAgo": "{days}d ago",
    "signInToReact": "Sign in to react to comments",
    "reactionFailed": "Failed to update reaction",
    "addReaction": "Add {type} reaction",
    "removeReaction": "Remove {type} reaction",
    "favoriteAdd": "Save recipe",
    "favoriteRemove": "Unsave recipe"
  },
  "cookingMode": {
    "cooking": "Cooking",
    "stepOf": "Step {current} of {total}",
    "batchPrepLabel": "Prep",
    "ingredients": "Ingredients",
    "startTimer": "Start timer",
    "timerDone": "Done",
    "pause": "Pause",
    "reset": "Reset",
    "previous": "Previous",
    "next": "Next",
    "finish": "Done!",
    "voiceNotSupported": "Voice not supported in this browser",
    "voiceError": "Voice error — try again",
    "enableVoice": "Enable voice control",
    "stopVoice": "Stop voice",
    "toggleIngredients": "Toggle ingredients",
    "pageTitle": "Cooking: {title}",
    "pageTitleFallback": "Cooking Mode",
    "shortcutsTitle": "Shortcuts & commands",
    "keyboardSection": "Keyboard",
    "voiceSection": "Voice commands",
    "enableMicFirst": "Enable voice via the mic button first.",
    "stepRepeatPrefix": "Step {n}: ",
    "shortcuts": {
      "nextStep": "Next step",
      "prevStep": "Previous step",
      "startTimer": "Start timer",
      "toggleHelp": "Toggle this panel",
      "exitMode": "Exit cook mode"
    },
    "voiceLabels": {
      "nextCmd": "next / continue",
      "prevCmd": "previous / back",
      "timerCmd": "timer / start",
      "stopCmd": "stop / pause",
      "resetCmd": "reset",
      "repeatCmd": "repeat / again",
      "nextLabel": "Next step",
      "prevLabel": "Previous step",
      "timerLabel": "Start timer",
      "stopLabel": "Pause timer",
      "resetLabel": "Reset timer",
      "repeatLabel": "Re-read step"
    }
  },
  "settingsForm": {
    "notificationCategories": {
      "title": "Notification categories",
      "description": "Choose which push notifications you want to receive.",
      "follow": "New followers",
      "comment": "Comments on your recipes",
      "reply": "Replies to your comments",
      "reaction": "Reactions to your comments",
      "rating": "Ratings on your recipes",
      "mention": "Mentions in comments",
      "leftoverExpiring": "Leftovers expiring soon",
      "shoppingList": "Shared shopping list updates"
    },
    "profile": "Profile",
    "changePhoto": "Change photo",
    "useGravatar": "Use Gravatar",
    "useGravatarDescription": "Show a Gravatar photo when you haven't uploaded one — sends an MD5 hash of your email to gravatar.com. Off by default.",
    "removePhoto": "Remove photo",
    "avatarUploadSuccess": "Profile photo updated",
    "avatarUploadFailed": "Failed to update profile photo",
    "avatarRemoved": "Profile photo removed",
    "displayName": "Display name",
    "username": "Username",
    "usernameDescription": "Your profile URL and how people find you when following or mentioning you.",
    "usernameInvalid": "3-20 characters: lowercase letters, numbers, and underscores only.",
    "usernameTaken": "That username is already taken.",
    "email": "Email",
    "emailReadOnly": "Email cannot be changed here.",
    "saving": "Saving…",
    "title": "Settings",
    "subtitle": "Manage your account and preferences",
    "language": "Language",
    "languageDescription": "Choose your preferred language for the app and AI-generated content.",
    "changeEmail": "Change email",
    "newEmail": "New email address",
    "changeEmailDescription": "A verification link will be sent to your new address before it takes effect.",
    "sendVerification": "Send verification",
    "sendingVerification": "Sending…",
    "emailChangeSent": "Verification email sent. Check your inbox.",
    "emailChangeFailed": "Failed to send verification email.",
    "changePassword": "Change password",
    "currentPassword": "Current password",
    "newPassword": "New password",
    "confirmPassword": "Confirm new password",
    "passwordMismatch": "Passwords don't match.",
    "changingPassword": "Changing…",
    "changePasswordButton": "Change password",
    "passwordChanged": "Password changed successfully.",
    "passwordChangeFailed": "Failed to change password.",
    "downloadData": "Download my data",
    "downloadDataDescription": "Get a JSON export of all the personal data Epicure holds about you — your profile, recipes, activity, and settings.",
    "downloadDataButton": "Download my data",
    "twoFactorTitle": "Two-factor authentication",
    "twoFactorDescription": "Require a code from an authenticator app in addition to your password when signing in.",
    "twoFactorEnableButton": "Enable",
    "twoFactorDisableButton": "Disable",
    "twoFactorEnabled": "Two-factor authentication enabled",
    "twoFactorDisabled": "Two-factor authentication disabled",
    "twoFactorEnableFailed": "Failed to start setup",
    "twoFactorDisableFailed": "Failed to disable",
    "twoFactorConfirmPasswordTitle": "Confirm your password",
    "twoFactorConfirmPasswordDescription": "Enter your password to set up two-factor authentication.",
    "twoFactorContinue": "Continue",
    "twoFactorCancel": "Cancel",
    "twoFactorSetupTitle": "Set up two-factor authentication",
    "twoFactorSetupDescription": "Scan this code with your authenticator app (like Google Authenticator or 1Password), then enter the 6-digit code it shows.",
    "twoFactorQrAlt": "QR code for two-factor authentication setup",
    "twoFactorBackupCodesLabel": "Backup codes",
    "twoFactorBackupCodesHint": "Save these somewhere safe — each one can be used once to sign in if you lose access to your authenticator app.",
    "twoFactorCopyCodes": "Copy codes",
    "twoFactorCodesCopied": "Copied",
    "twoFactorCopyFailed": "Failed to copy",
    "twoFactorCodeLabel": "6-digit code",
    "twoFactorVerifyAndEnable": "Verify & enable",
    "twoFactorInvalidCode": "Invalid code",
    "twoFactorDisableTitle": "Disable two-factor authentication",
    "twoFactorDisableDescription": "Your account will only need your password to sign in.",
    "webhookCreateFailed": "Failed to create webhook",
    "webhookDeleteFailed": "Failed to delete webhook",
    "webhookUpdateFailed": "Failed to update webhook",
    "redeliverySuccess": "Redelivery queued",
    "redeliveryFailed": "Failed to redeliver",
    "apiKeyCreateFailed": "Failed to create API key",
    "apiKeyRevokeFailed": "Failed to revoke API key",
    "apiKeyNamePlaceholder": "e.g. My app",
    "apiKeyNameLabel": "Key name",
    "apiKeyCreating": "Creating…",
    "apiKeyCreate": "Create",
    "apiKeyRevealNotice": "Save this key — it will not be shown again.",
    "copy": "Copy",
    "copied": "Copied!",
    "dismiss": "Dismiss",
    "noApiKeys": "No API keys yet.",
    "createdOn": "Created {date}",
    "lastUsedOn": "Last used {date}",
    "neverUsed": "Never used",
    "revoke": "Revoke",
    "apiKeyScopeFull": "Full access",
    "apiKeyScopeRead": "Read-only",
    "apiKeyScopeHelp": "Read-only keys can only make GET requests — they can't create, edit, or delete anything.",
    "webhookUrlPlaceholder": "https://example.com/webhook",
    "webhookAdding": "Adding…",
    "webhookAddButton": "Add webhook",
    "webhookDocsLink": "View webhook docs & Zapier integration →",
    "endpointUrlLabel": "Endpoint URL",
    "eventsLabel": "Events",
    "eventsHint": "Select which events trigger this webhook. Leave all unchecked to receive all events.",
    "secretRevealNotice": "Save this signing secret — it will not be shown again.",
    "secretUsageHint": "Use it to verify the X-Epicure-Signature header on incoming requests.",
    "noWebhooks": "No webhooks yet.",
    "addedOn": "Added {date}",
    "active": "Active",
    "inactive": "Inactive",
    "allEvents": "All events",
    "deliveries": "Deliveries",
    "disable": "Disable",
    "enable": "Enable",
    "noDeliveriesYet": "No deliveries yet.",
    "modelDefaultPlaceholder": "Default",
    "modelNamePlaceholder": "e.g. llama3.2",
    "copyFailed": "Failed to copy to clipboard",
    "byokSaved": "{provider} key saved",
    "byokSaveFailed": "Failed to save key",
    "byokRemoved": "{provider} key removed",
    "byokRemoveFailed": "Failed to remove key",
    "byokConfigured": "Configured",
    "byokOllamaHint": "Set via OLLAMA_BASE_URL env var",
    "byokSaving": "Saving…",
    "byokSave": "Save",
    "byokFooter": "Your keys are encrypted at rest. When set, they override the app's default keys for your account.",
    "modelSaved": "Model preferences saved",
    "modelSaveFailed": "Failed to save",
    "useCaseText": "Text generation",
    "useCaseTextDesc": "Recipe generation, variations, translations, adapt",
    "useCaseVision": "Vision / photo import",
    "useCaseVisionDesc": "Dish recognition, recipe import from photo",
    "useCaseMealPlan": "Meal planning",
    "useCaseMealPlanDesc": "Weekly meal plan generation",
    "providerLabel": "Provider",
    "modelLabel": "Model",
    "defaultAuto": "Default (auto)",
    "modelDefault": "Default",
    "modelSaving": "Saving…",
    "saveModelPrefs": "Save model preferences",
    "userUpdated": "User updated successfully",
    "userUpdateFailed": "Failed to save",
    "adminSettingsSaved": "Settings saved",
    "adminSettingsFailed": "Failed to save settings",
    "nutritionGoalsSaved": "Nutrition goals saved",
    "bio": "Bio",
    "publicBio": "Public bio",
    "publicBioDescription": "Shown on your public profile.",
    "publicBioPlaceholder": "Tell other cooks about yourself…",
    "privateBio": "AI context (private)",
    "privateBioDescription": "Never shown publicly. Injected into AI prompts to personalise suggestions — add your dietary preferences, kitchen equipment, cooking skill level, allergies, etc.",
    "privateBioPlaceholder": "e.g. I'm vegetarian, have a stand mixer and an air fryer, intermediate cook, allergic to tree nuts, prefer Mediterranean flavours…",
    "privateAccount": "Private account",
    "privateAccountDescription": "When on, your profile and recipes won't appear in search or discovery (Explore, Trending, For You). People who already follow you keep seeing your recipes."
  },
  "profilePage": {
    "tabRecipes": "Recipes",
    "tabHistory": "Cooking History",
    "tabPhotos": "Photos",
    "statTotalCooked": "Total times cooked",
    "statStreak": "Current streak",
    "statLastCooked": "Last cooked",
    "streakDays": "{count, plural, one {# day} other {# days}}",
    "noneYet": "None yet",
    "recentActivity": "Recent activity",
    "noHistoryYet": "No cooking history yet.",
    "noPhotosYet": "No photos yet.",
    "previous": "Previous",
    "next": "Next",
    "pageOf": "Page {page} of {total}"
  }
}
