{
	"title": "Settings",
	"language": {
		"title": "Language",
		"description": "Choose the language for the Videotto interface",
		"saveError": "Could not save your language choice. Please try again."
	},
	"page": {
		"title": "Settings",
		"meta": {
			"title": "Settings - Videotto"
		}
	},
	"organizationBanner": {
		"title": "Organization Member",
		"partOf": "You are part of <strong>{organizationName}</strong>",
		"defaultOrgName": "an organization",
		"creditsAvailable": "{credits} credits available",
		"adminSuffix": "• Admin",
		"viewDashboardButton": "View Dashboard"
	},
	"subscription": {
		"toast": {
			"resumeFailed": "Failed to resume subscription.",
			"portalFailed": "Failed to open billing portal. Please try again."
		}
	},
	"basicInfo": {
		"title": "Basic Information",
		"avatarAlt": "User avatar",
		"avatarFallbackLetter": "U",
		"nameLabel": "Name:",
		"emailLabel": "Email:",
		"logoutButton": "Logout"
	},
	"password": {
		"changeTitle": "Change Password",
		"addTitle": "Add a Password",
		"changeDescription": "Update your account password",
		"addDescription": "Add a password to sign in without Google"
	},
	"subscriptionSection": {
		"title": "Subscription",
		"planLabel": "{tierName} Plan",
		"defaultTierName": "Pro",
		"noActivePlan": "No active plan",
		"paymentFailed": "Your last payment failed. Update your card in the Billing Portal to keep your plan, or cancel it from Manage Plan.",
		"overageSuffix": "(+{overage} overage)",
		"downgradingTo": "Downgrading to {tierName} at period end",
		"managePlanButton": "Manage Plan",
		"upgradeButton": "Upgrade",
		"nextBillingDate": "Next billing date:",
		"planEndsOn": "Plan ends:",
		"scheduledToCancel": "Your subscription is scheduled to cancel on <strong>{date}</strong>.",
		"periodEndFallback": "the end of your billing period",
		"resumingButton": "Resuming…",
		"resumeButton": "Resume subscription",
		"loadingButton": "Loading...",
		"billingPortalButton": "Billing Portal"
	},
	"connectedAccounts": {
		"title": "Connected Accounts",
		"description": "Manage third-party services linked to your Videotto account",
		"socialTitle": "Social accounts",
		"socialDescription": "The accounts you schedule and publish posts to."
	},
	"apiKeys": {
		"title": "API Keys",
		"description": "API keys allow you to integrate Videotto with your applications. To request API access, please contact our support team.",
		"contactSupportButton": "Contact Support"
	},
	"emailPreferences": {
		"title": "Manage Preferences",
		"description": "Choose which emails you'd like to receive",
		"unavailable": "Email preferences are not available for your account.",
		"loadError": "Failed to load preferences. Please try again later.",
		"saveError": "Could not save your email preference. Please try again.",
		"config": {
			"expiryReminders": {
				"label": "Clip expiry reminders",
				"description": "Get a reminder before your clips are deleted."
			},
			"processingUpdates": {
				"label": "Processing Notifications",
				"description": "Receive updates when your video is ready"
			},
			"accountAlerts": {
				"label": "Social account alerts",
				"description": "Get an email when a connected account like YouTube or Instagram needs you to sign in again, so your scheduled posts still go out."
			}
		}
	},
	"aiModel": {
		"title": "AI Model",
		"description": "Staging experiment — choose the model behind Otto's AI chat and Motion Graphics. Applies to new conversations and jobs, not ones already running. Motion Graphics (planner, designers, judges), sub-agents, and footage analysis all follow your choice; while GLM/GPT chat is being enabled, the chat director itself stays on the default model for those choices.",
		"activeLabel": "Active",
		"toast": {
			"set": "AI model set to {modelLabel}. Applies to new conversations and jobs.",
			"saveFailed": "Could not save model choice: {reason}"
		}
	},
	"mgSceneMode": {
		"title": "Motion Graphics Style",
		"description": "Choose how motion graphics occupy the frame. Applies to new Motion Graphics runs, not ones already running. Fullscreen is the default; scenes already on your timeline keep the style they were authored with.",
		"activeLabel": "Active",
		"options": {
			"takeoverLabel": "Fullscreen",
			"takeoverDetail": "The graphic covers the whole frame for its moment — current default",
			"insetLabel": "Overlay",
			"insetDetail": "You stay on screen; the graphic sits in the free space around you"
		},
		"toast": {
			"set": "Motion graphics style set to {modeLabel}. Applies to new runs.",
			"saveFailed": "Could not save motion graphics style: {reason}"
		}
	},
	"supportChannels": {
		"title": "Join our channels for support:",
		"whatsappAlt": "WhatsApp"
	},
	"organization": {
		"loading": "Loading...",
		"notFound": "Organization not found",
		"pilotExpired": {
			"title": "Congratulations on completing your pilot!",
			"description": "Here's a summary of what your team accomplished during the pilot period.",
			"contactManager": "Contact your Videotto account manager to continue with a paid plan."
		},
		"pilotUsage": {
			"title": "Pilot Usage",
			"loading": "Loading usage stats...",
			"videosClipped": "Videos Clipped",
			"clipsGenerated": "Clips Generated",
			"noData": "No usage data available."
		},
		"enterprise": {
			"creditsTitle": "Credits",
			"minutesUsed": "minutes used"
		},
		"storage": {
			"title": "Storage",
			"used": "used",
			"unlimited": "Unlimited",
			"percentUsed": "{percent}% used"
		},
		"creditBalance": {
			"title": "Credit Balance",
			"addCreditsButton": "Add Credits",
			"creditsLabel": "Credits"
		},
		"members": {
			"title": "Members ({count})",
			"inviteButton": "Invite Member",
			"table": {
				"email": "Email",
				"name": "Name",
				"role": "Role",
				"actions": "Actions"
			},
			"removeButton": "Remove",
			"removeConfirm": "Are you sure you want to remove {name} from the organization?",
			"pendingInviteBadge": "Pending invite",
			"expiresLabel": "Expires",
			"toast": {
				"removeFailedWithReason": "Failed to remove member: {reason}",
				"removeFailed": "Failed to remove member. Please try again."
			}
		},
		"inviteModal": {
			"title": "Invite Member",
			"emailLabel": "Email",
			"emailPlaceholder": "member@example.com",
			"roleLabel": "Role",
			"roleMember": "Member",
			"roleAdmin": "Admin",
			"expiryNote": "An email invitation will be sent. The link expires in 7 days.",
			"sendButton": "Send Invite",
			"cancelButton": "Cancel",
			"errors": {
				"emailRequired": "Email is required",
				"alreadyMember": "This email is already a member of the organization.",
				"alreadyInvited": "An invite has already been sent to this email."
			},
			"toast": {
				"sent": "Invite sent to {email}",
				"failedWithReason": "Failed to invite {email}: {reason}",
				"failed": "Failed to invite {email}. Please try again."
			}
		},
		"addCredits": {
			"title": "Add Credit Balance",
			"closeAriaLabel": "Close",
			"rateNote": "$1 = 10 credits",
			"amountLabel": "Amount (USD)",
			"creditsLabel": "Credits",
			"minMaxNote": "Min: S$1 (10 credits) • Max: S$1,000 (10,000 credits)",
			"processingButton": "Processing...",
			"continueButton": "Continue",
			"errors": {
				"minAmount": "Minimum amount is S$1",
				"maxAmount": "Maximum amount is S$1000"
			},
			"toast": {
				"checkoutFailed": "Failed to initiate checkout. Please try again."
			}
		},
		"meta": {
			"title": "Organization Dashboard - Videotto"
		}
	},
	"brands": {
		"meta": {
			"title": "Brand Presets - Videotto"
		},
		"hydrateFallback": "Loading Brand Workspace...",
		"defaultBadge": "Default",
		"loginRequired": "Please log in to manage your brand settings.",
		"header": {
			"title": "Brand Presets",
			"subtitle": "Save your colors, fonts, and caption styles. Apply to any video with one click.",
			"importButton": "Import",
			"newButton": "New Brand Preset"
		},
		"empty": {
			"title": "No brand presets yet",
			"createButton": "Create your first brand preset"
		},
		"preview": {
			"label": "Preview",
			"hint": "Hover a brand kit to see it applied here."
		},
		"cardMenu": {
			"setAsDefault": "Set as Default",
			"rename": "Rename",
			"export": "Export",
			"delete": "Delete",
			"toast": {
				"exporting": "Exporting brand preset...",
				"exported": "Brand preset exported!",
				"exportFailed": "Export failed"
			}
		},
		"import": {
			"invalidFile": "Please select a .vbrand file exported from Videotto.",
			"toast": {
				"importing": "Importing brand preset...",
				"imported": "Brand preset imported!",
				"importFailed": "Import failed"
			}
		},
		"setDefault": {
			"toast": {
				"settingDefault": "Setting as default...",
				"setDefault": "Brand preset set as default!",
				"setDefaultFailed": "Failed to set default"
			}
		},
		"delete": {
			"dialog": {
				"title": "Delete brand preset?",
				"description": "“{name}” will be permanently deleted. This can’t be undone.",
				"descriptionFallback": "This brand preset will be permanently deleted. This can’t be undone.",
				"cancel": "Cancel",
				"confirm": "Delete preset",
				"deleting": "Deleting..."
			},
			"toast": {
				"deleting": "Deleting brand preset...",
				"deleted": "Brand preset deleted!",
				"deleteFailed": "Failed to delete"
			}
		},
		"rename": {
			"toast": {
				"renaming": "Renaming brand preset...",
				"renamed": "Brand preset renamed!",
				"renameFailed": "Failed to rename"
			}
		},
		"row": {
			"setDefaultTitle": "Set \"{name}\" as default",
			"defaultAriaLabel": "{name} (default)",
			"setDefaultAriaLabel": "Set {name} as default",
			"editTitle": "Edit brand kit",
			"editAriaLabel": "Edit {name}",
			"menuAriaLabel": "More actions for {name}"
		}
	},
	"brandKit": {
		"hydrateFallback": "Loading Brand Preset...",
		"preparingNew": "Preparing new brand preset…",
		"notFound": "Brand preset not found.",
		"loginRequired": "Please log in to manage your brand presets.",
		"namePlaceholder": "Brand Preset Name",
		"defaultBadge": "Default",
		"backButton": "Back",
		"setAsDefaultButton": "Set as Default",
		"exportButton": "Export",
		"deleteButton": "Delete",
		"untitledBrand": "Untitled Brand",
		"uploadingLabel": "Uploading…",
		"outroSection": {
			"replaceButton": "Replace",
			"removeButton": "Remove",
			"formatHint": "MP4, WebM, MOV. Max 100MB, 3-10s recommended.",
			"uploadingEllipsis": "Uploading...",
			"clickToUpload": "Click to upload outro",
			"dimensionsLabel": "{width} × {height} • {duration}s",
			"removeDialog": {
				"title": "Remove outro video?",
				"description": "The outro video will no longer be added to clips made with this brand preset.",
				"confirm": "Remove",
				"cancel": "Cancel"
			}
		},
		"hideCaptionsLabel": "Hide captions",
		"hideCaptionsDescription": "Captions are still generated, but start hidden in the editor and are left out of the rendered video. You can re-enable them per clip.",
		"pricingModal": {
			"title": "Upgrade to Pro to save Brand Presets",
			"message": "Brand presets are a Pro feature. Upgrade to save your brand colors, fonts, logos, and caption styles for consistent, professional content."
		},
		"errors": {
			"readVideoMetadata": "Failed to read video metadata",
			"readAudioMetadata": "Failed to read audio metadata",
			"getUploadUrl": "Failed to get upload URL",
			"loadVideoMetadata": "Failed to load video metadata",
			"registerOutro": "Failed to register outro"
		},
		"toast": {
			"mediaUploaded": "Media uploaded",
			"mediaUploadFailed": "Failed to upload media",
			"mediaRemoved": "Media removed",
			"mediaRemoveFailed": "Failed to remove media",
			"saveFailed": "Failed to save brand preset",
			"deleted": "Brand preset deleted",
			"deleteFailed": "Failed to delete brand preset",
			"setAsDefault": "Set as default brand preset",
			"setAsDefaultFailed": "Failed to set as default",
			"logoUploaded": "Logo uploaded",
			"logoUploadFailed": "Failed to upload logo",
			"logoRemoved": "Logo removed",
			"logoRemoveFailed": "Failed to remove logo",
			"activeLogoUpdated": "Active logo updated",
			"logoUpdateFailed": "Failed to update logo",
			"outroUploaded": "Outro uploaded successfully",
			"outroUploadFailed": "Failed to upload outro",
			"outroRemoved": "Outro removed",
			"outroRemoveFailed": "Failed to remove outro",
			"exporting": "Exporting brand preset...",
			"exported": "Brand preset exported!",
			"exportFailed": "Export failed"
		},
		"miniPreview": {
			"headerSample": "Header",
			"activeLogoAlt": "Active brand logo"
		},
		"layersPanel": {
			"captions": "Captions",
			"header": "Header",
			"logo": "Logo",
			"shape": "Shape",
			"text": "Text",
			"element": "Element",
			"layer": "Layer",
			"title": "Layers",
			"noLayersYet": "No layers yet",
			"moveUpAria": "Move {label} up",
			"moveDownAria": "Move {label} down",
			"movedAnnouncement": "{label} moved to position {position} of {total}"
		},
		"mediaPanel": {
			"remove": "Remove",
			"fileTooLarge": "File exceeds 100MB limit",
			"uploadsLabel": "Uploads",
			"saveFirstHint": "Save the brand preset first to upload media assets.",
			"uploading": "Uploading...",
			"uploadFileButton": "Upload File",
			"noMediaYet": "No media yet",
			"noMediaHint": "Upload images, videos, or audio files",
			"dragToAddAria": "Drag to add \"{filename}\" to canvas",
			"removeAria": "Remove {filename}",
			"removeConfirmTitle": "Remove this asset?",
			"cancel": "Cancel"
		},
		"paletteForm": {
			"primary": "Primary",
			"secondary": "Secondary",
			"accent": "Accent",
			"customColors": "Custom Colors",
			"addButton": "+ Add",
			"noCustomColorsYet": "No custom colors yet. Click + Add to start.",
			"removeColorAria": "Remove color",
			"background": "Background",
			"limitReached": "Custom color limit reached ({max})",
			"swatchAria": "Edit custom color {index} ({color})",
			"pickerAria": "Custom color {index} picker",
			"hexLabel": "Hex value",
			"hexError": "Enter a hex color, e.g. #4f46e5"
		},
		"headerStylePreview": {
			"titleSample": "Title"
		},
		"importModal": {
			"wrongFileType": "Please select a .vbrand file exported from Videotto.",
			"importFailed": "Import failed",
			"title": "Import Brand Preset",
			"dragDropHint": "Drag & drop a .vbrand file here",
			"or": "or",
			"chooseFileButton": "Choose File",
			"successMessage": "Brand preset imported successfully!",
			"closeButton": "Close",
			"openBrandPresetButton": "Open Brand Preset",
			"tryAgainButton": "Try Again"
		},
		"logoDropzone": {
			"uploadingLogo": "Uploading logo...",
			"uploadLogo": "Upload Logo",
			"fileHint": "PNG, JPG, SVG up to 25MB",
			"noLogosYet": "No logos uploaded yet.",
			"activeBadge": "Active",
			"brandLogoAlt": "Brand logo",
			"setActiveButton": "Set Active",
			"removeButton": "Remove",
			"dropHere": "Drop to upload",
			"logoLabel": "Logo {index}",
			"logoLabelWithFormat": "Logo {index} · {format}",
			"removeConfirm": "Remove {label}?",
			"cancelButton": "Cancel"
		},
		"phoneMockup": {
			"originalAudio": "Original audio",
			"logoAlt": "logo"
		},
		"nameLabel": "Brand preset name",
		"replayPreview": "Replay",
		"sections": {
			"style": "Style",
			"font": "Font",
			"format": "Format",
			"colour": "Colour",
			"position": "Position"
		},
		"sidebar": {
			"captions": "Captions",
			"header": "Header",
			"text": "Text",
			"elements": "Elements",
			"uploads": "Media",
			"brand": "Brand",
			"logo": "Logo",
			"outro": "Outro",
			"layers": "Layers"
		},
		"textSection": {
			"hint": "Add a text layer, then drag it on the canvas. Select any text layer to edit its style here."
		},
		"layersSection": {
			"addText": "Add text layer"
		},
		"autosave": {
			"saving": "Saving…",
			"saved": "Saved",
			"failedRetry": "Save failed — retry",
			"notSaving": "Not saving — upgrade"
		},
		"onboarding": {
			"appliedTitle": "Applied to every clip",
			"appliedBody": "Anything you set here styles every clip made with this kit. You don't apply it each time.",
			"defaultKitBody": "This is your default kit — new clips use it unless you pick another or turn brand styling off.",
			"checklistTitle": "What this kit controls",
			"checklistHint": "Pick one to jump to its settings. Anything you skip keeps Videotto's default look.",
			"setCount": "{set} of {total} set",
			"allSet": "All set",
			"hideChecklist": "Hide",
			"showChecklist": "Show checklist ({set} of {total} set)",
			"stateSet": "Set",
			"stateUnset": "Not set",
			"items": {
				"colors": {
					"title": "Brand colours",
					"effect": "Caption text, highlights and backgrounds."
				},
				"logo": {
					"title": "Logo",
					"effect": "Sits on top of every clip."
				},
				"captions": {
					"title": "Caption style",
					"effect": "How spoken words look and move."
				},
				"fonts": {
					"title": "Fonts",
					"effect": "The typeface for captions and headers."
				},
				"outro": {
					"title": "Outro",
					"effect": "A closing video on the end of every clip."
				}
			}
		}
	},
	"fonts": {
		"meta": {
			"title": "Font Library - Videotto"
		},
		"hydrateFallback": "Loading Font Library...",
		"title": "Font Library",
		"subtitle": "Upload and manage your custom fonts",
		"loginRequired": "Please log in to manage your fonts.",
		"upload": {
			"title": "Upload New Font",
			"supportedFormats": "Supported formats: WOFF2, WOFF, TTF, OTF (max 50MB)",
			"success": "Font uploaded successfully!"
		},
		"empty": {
			"title": "No fonts yet",
			"description": "Upload your first custom font to get started."
		}
	},
	"autoreply": {
		"pageTitle": "Auto-Reply",
		"pageSubtitle": "Auto-reply to Instagram comments with a DM",
		"loadingTriggers": "Loading triggers...",
		"toast": {
			"loadTriggersFailed": "Failed to load triggers",
			"connected": "Successfully connected {platform}!",
			"disconnected": "Disconnected {platform}",
			"disconnectFailed": "Failed to disconnect {platform}",
			"triggerDeleted": "Trigger deleted",
			"deleteFailed": "Failed to delete trigger",
			"updateFailed": "Failed to update trigger",
			"connectInstagramFirst": "Connect an Instagram account first"
		},
		"oauthErrors": {
			"notConfigured": "OAuth is not configured for this platform",
			"unauthorized": "Please log in to connect your account",
			"invalidState": "Session expired. Please try again.",
			"oauthFailed": "Failed to connect. Please try again.",
			"tokenExchangeFailed": "Failed to authenticate. Please try again.",
			"failedToGetAccount": "Failed to fetch Instagram account details.",
			"failedToConnect": "Failed to connect account"
		},
		"emptyState": {
			"title": "No triggers yet",
			"titleWithTriggers": "Create another trigger",
			"description": "Create a trigger to auto-reply to comments on your Instagram posts with a DM.",
			"descriptionWithTriggers": "Set up auto-replies on another post.",
			"createButton": "Create trigger",
			"createButtonWithTriggers": "+ New trigger",
			"clickHint": "Click anywhere in this box"
		},
		"howItWorks": {
			"title": "How it works",
			"step1": "1. Post a reel or photo on Instagram with a call-to-action (e.g. \"Comment EDITOR to get the link\").",
			"step2": "2. Create a trigger here by choosing one of your Instagram posts and setting a keyword.",
			"step3": "3. When someone comments with your keyword, they automatically get a public reply and a DM with your link.",
			"contactNote": "Running into trouble? <anchor>Contact us</anchor> and we'll take a look."
		},
		"createForm": {
			"defaultCreatorName": "creator",
			"title": "New Trigger",
			"cancelButton": "Cancel",
			"step1Label": "Step 1: Comment trigger",
			"whenSomeoneComments": "When someone comments on",
			"loadingOlderPosts": "Loading older posts...",
			"specificPostOption": "A specific post or reel",
			"selectedCount": "{count} selected",
			"mediaLoadError": "Could not load posts. Your Instagram token may have expired - try reconnecting from the panel on the right.",
			"noMediaFound": "No Instagram posts found for this account.",
			"collapseButton": "Collapse",
			"showAllButton": "Show All",
			"anyPostOption": "Any post or reel, including future uploads",
			"keywordLabel": "Keyword",
			"keywordPlaceholder": "AI",
			"keywordHint": "Case-insensitive. Matches if the comment contains this word anywhere.",
			"publicReplyTemplatesLabel": "Public Reply Templates",
			"templatesHintBefore": "One is picked at random. Use ",
			"templatesHintUsernamePlaceholder": "{username}",
			"templatesHintAfter": " to mention the commenter.",
			"step2Label": "Step 2: DM flow",
			"step2Description": "The user receives a DM with a button. When they tap it, the link is sent.",
			"openingDmTitle": "Opening DM with Customisable Button",
			"messageLabel": "Message",
			"ctaMessagePlaceholder": "Hey there! Reply to this message and I'll send you the link!",
			"openingMessagesHint": "Three variants. One is picked at random for each DM, which keeps the opening message from looking automated.",
			"linksNotAllowed": "Links are not allowed in this message.",
			"blueButtonTextLabel": "Blue Button Text",
			"blueButtonTextHint": "Quick reply button below the message. Max 20 characters.",
			"step3Label": "Step 3: After they tap the button",
			"linkMessageLabel": "Link Message",
			"linkMessageHint": "A unique short link is appended automatically and cannot be edited. Each fan gets their own, so you can see which DMs convert — it redirects to your referral link.",
			"linkButtonTextLabel": "Link Button Text",
			"linkButtonTextHint": "Label on the button that opens your link. Max 20 characters.",
			"selectPostFirstTitle": "Select at least one Instagram post first",
			"fillKeywordTitle": "Fill in the keyword",
			"submitButton": {
				"creating": "Creating...",
				"createAllPosts": "Create Trigger (All Posts)",
				"createMultiple": "Create {count} Triggers",
				"createSingle": "Create Trigger"
			},
			"errors": {
				"loadPostsFailed": "Failed to load Instagram posts",
				"loadOlderPostsFailed": "Failed to load older posts",
				"choosePost": "Choose at least one Instagram post",
				"linksNotAllowedCta": "Links are not allowed in the CTA message",
				"linksNotAllowedLink": "Links are not allowed in the link message",
				"createFailed": "Failed to create trigger",
				"customLinkInvalid": "Enter a valid link starting with http:// or https://.",
				"openingMessageEmpty": "Fill in all three opening messages"
			},
			"toast": {
				"createdWithSkipped": "{count, plural, one {# trigger} other {# triggers}} created, {skipped} skipped",
				"created": "{count, plural, one {# trigger} other {# triggers}} created"
			},
			"linkModeCoupon": "Coupon code link",
			"linkModeCouponHint": "Tracked and discounted. Signups attribute to you.",
			"linkModeCouponNone": "No coupon code yet — ask us to set one up. Custom links still work.",
			"couponPickerLabel": "Code for this post",
			"linkModeCustom": "Custom link",
			"linkModeCustomHint": "Send any URL. Not tracked.",
			"customLinkLabel": "Your link",
			"customLinkPlaceholder": "https://example.com/my-page",
			"customLinkWarning": "Custom links are sent as typed and are not tracked — no clicks, no signups attributed. A link that already contains your referral code still attributes.",
			"linkMessageHintCustom": "Your custom link is appended automatically. Edit it above.",
			"linkModeNotion": "Assigned link",
			"linkModeNotionHint": "Send a link we set up for you. Not tracked.",
			"linkModeNotionNone": "No link assigned yet — ask us to set one up. Coupon and custom links still work.",
			"notionPickerLabel": "Link for this post",
			"linkMessageHintNotion": "Your assigned link is appended automatically. Pick it above."
		},
		"preview": {
			"commentsTab": "Comments",
			"now": "Now",
			"reply": "Reply",
			"addCommentPlaceholder": "Add a comment...",
			"scrollHint": "Scroll to switch between comment / DM preview"
		},
		"triggerCard": {
			"allPosts": "All posts",
			"reconnectButton": "Reconnect",
			"pauseButton": "Pause",
			"enableButton": "Enable",
			"deleteButton": "Delete",
			"createdLabel": "Created",
			"repliesLabel": "Replies:",
			"dedupeNote": "Users commenting multiple times will only receive one public reply and DM.",
			"insights": {
				"reach": "Reach",
				"likes": "Likes",
				"comments": "Comments",
				"shares": "Shares",
				"saved": "Saved"
			}
		},
		"triggerStatus": {
			"paused": "Paused",
			"pausedDetail": "This trigger is disabled and will not send replies.",
			"active": "Active",
			"activeDetail": "This trigger is enabled and ready to reply.",
			"needsAttention": "Needs attention",
			"needsAttentionDetail": "This trigger cannot currently reply or send DMs."
		},
		"meta": {
			"title": "Auto-Reply - Videotto"
		}
	},
	"analytics": {
		"meta": {
			"title": "Channel Analytics - Videotto"
		},
		"title": "Channel analytics",
		"refreshing": "Refreshing",
		"subtitle": "How your Reels and Shorts are performing. Updated automatically once per hour.",
		"toast": {
			"connected": "Connected {platform}"
		},
		"firstSync": {
			"emptyTitle": "Nothing to show yet",
			"emptyDescription": "Connect Instagram or YouTube above and we'll pull in your latest Reels and Shorts.",
			"fetchingTitle": "Fetching your latest posts",
			"fetchingDescription": "This usually takes about 30 seconds. You can leave this page, we'll keep working in the background."
		},
		"trendChart": {
			"title": "Growth trend",
			"dailyMetricSubtitle": "Daily {metric} · last {days} days",
			"platformTablistAria": "Trend platform",
			"chartAria": "Daily {metric} on {platform}, last {days} days",
			"settlingFootnote": "The last 2–3 days settle as {platform} finalizes its numbers.",
			"empty": {
				"title": "Your growth trend is building.",
				"description": "Daily numbers appear here once your connected channels have a few days of analytics."
			},
			"metricReach": "reach",
			"metricViews": "views"
		},
		"channelStrip": {
			"relativeTime": {
				"justNow": "just now",
				"minutesAgo": "{minutes}m ago",
				"hoursAgo": "{hours}h ago",
				"daysAgo": "{days}d ago"
			},
			"errors": {
				"reconnectRequired": "Reconnect - token expired",
				"scopeMigrationRequired": "Reconnect to enable Shorts analytics",
				"insufficientFollowers": "Needs at least 100 followers (you have {count})",
				"personalAccountUnsupported": "Switch to a Business or Creator account",
				"noYoutubeChannel": "No YouTube channel on this Google account",
				"quotaExceeded": "Daily refresh limit reached",
				"rateLimited": "{name} is rate-limited - retrying",
				"refreshFailed": "Refresh failed"
			},
			"toasts": {
				"disconnected": "Disconnected {name}",
				"disconnectFailed": "Failed to disconnect {name}"
			},
			"updating": "Updating",
			"updatedAgo": "Updated {time}",
			"accountLinked": "Account linked",
			"notConnected": "Not connected",
			"disconnectDialog": {
				"title": "Disconnect {name}?",
				"withAccountName": "will be disconnected. Analytics for this channel will stop updating, and scheduled posts using this account will fail until you reconnect.",
				"withoutAccountName": "This account will be disconnected. Analytics will stop updating until you reconnect."
			},
			"cancelButton": "Cancel",
			"disconnectingButton": "Disconnecting…",
			"disconnectButton": "Disconnect",
			"connectButton": "Connect",
			"reconnectButton": "Reconnect",
			"disconnectAria": "Disconnect {name}"
		},
		"dateRangePicker": {
			"label": "Date range",
			"last7Days": "Last 7 days",
			"last28Days": "Last 28 days"
		},
		"platformFilter": {
			"label": "Filter by platform",
			"allPlatforms": "All platforms",
			"instagram": "Instagram",
			"youtube": "YouTube"
		},
		"postsTable": {
			"relative": {
				"todayAt": "Today at {time}",
				"yesterdayAt": "Yesterday at {time}",
				"daysAgo": "{days}d ago",
				"weeksAgo": "{weeks}w ago",
				"monthsAgo": "{months}mo ago",
				"yearsAgo": "{years}y ago"
			},
			"title": "Recent posts",
			"sortedByMostRecent": "Sorted by most recent",
			"sortedByLongestWatchTime": "Sorted by longest watch time",
			"sortedByTop": "Sorted by top {sortKey}",
			"postCount": "{count, plural, one {# post} other {# posts}}",
			"columns": {
				"post": "Post",
				"views": "Views",
				"likes": "Likes",
				"avgWatch": "Avg watch"
			},
			"openPostAria": "Open {caption} on {platform}",
			"postFallback": "post",
			"thumbnailAlt": "Post thumbnail",
			"noCaption": "(no caption)",
			"publishedViaVideotto": "Published via Videotto",
			"publishedViaVideottoBadge": "Videotto",
			"emptyState": {
				"noAccountsTitle": "No accounts connected yet",
				"noAccountsDescription": "Connect Instagram or YouTube to start seeing how your Reels and Shorts perform.",
				"connectAccountsButton": "Connect accounts",
				"waitingTitle": "Your Reels and Shorts will appear here",
				"waitingDescription": "We'll fetch them automatically, usually within 30 seconds. You can leave this page and come back."
			}
		},
		"summaryCards": {
			"views": "Views",
			"likes": "Likes",
			"comments": "Comments",
			"posts": "Posts",
			"sectionAria": "Performance summary across your recent posts",
			"loadingAria": "Loading",
			"acrossRecentPosts": "Across recent posts"
		}
	},
	"affiliate": {
		"title": "Affiliate",
		"previewBadge": "Preview data",
		"loadFailed": "We could not load your numbers just now. Nothing is lost, so try again in a moment.",
		"questions": "Questions about the creator program?",
		"getInTouch": "Get in touch",
		"windowAria": "Time window",
		"windowScope": "Clicks and signups follow this range. Paid users and volume are all time.",
		"allTime": "All time",
		"windows": {
			"7d": "7d",
			"30d": "30d",
			"90d": "90d",
			"all": "All"
		},
		"live": {
			"updated": "Updated {time} ago",
			"justNow": "Updated just now",
			"refresh": "Refresh",
			"refreshAria": "Refresh your numbers now"
		},
		"hero": {
			"signups": "Signups",
			"paidUsers": "Paid users",
			"volume": "Volume",
			"vsPrevious": "vs previous",
			"stillPaying": "{count, plural, one {# person you brought is on a plan right now, trials included} other {# people you brought are on a plan right now, trials included}}.",
			"volumeExplainer": "Volume is the first payment from each person you brought, at the price they actually paid.",
			"legendArrivals": "Signups",
			"legendSales": "Sales",
			"chartAria": "Daily signups, with a bar on every day that produced a sale"
		},
		"curve": {
			"tipSignups": "{count, plural, one {# signup} other {# signups}}",
			"tipSales": "{count, plural, one {# sale} other {# sales}}",
			"today": "Today"
		},
		"funnel": {
			"title": "Conversion",
			"clicks": "Clicks",
			"signups": "Signups",
			"sales": "Sales",
			"dropToSignup": "of clicks became signups",
			"dropToSale": "of signups bought a plan"
		},
		"codes": {
			"title": "Codes",
			"scope": "Volume and sales are all time. Clicks and signups follow the range above.",
			"colClicks": "clicks",
			"colSignups": "signups",
			"colSales": "sales",
			"colPerClick": "per click",
			"perClickScope": "Volume is all time and clicks follow the range, so value per click only lines up on the All view.",
			"percentOff": "{percent}% off",
			"discountCode": "Discount",
			"trackingOnly": "Tracking only, with no discount attached",
			"noLabel": "Unlabelled placement",
			"ended": "ended",
			"empty": "No codes assigned yet. Your codes appear here once the team sets them up.",
			"linkLabel": "Link",
			"copyLink": "Copy link",
			"copiedShort": "Copied!",
			"copyAria": "Copy {label}",
			"copied": "{label} copied",
			"copyFailed": "Could not copy",
			"tabsAria": "Placement type",
			"notion": {
				"title": "Assigned links",
				"empty": "No links assigned yet. They appear here once the team sets them up.",
				"linkLabel": "Assigned link"
			}
		},
		"activity": {
			"title": "Activity",
			"someone": "Someone",
			"saleLine": "started",
			"saleLineWith": "with",
			"signupLine": "signed up with",
			"aPlan": "a plan",
			"amountTitle": "Their first payment, after any discount"
		},
		"empty": {
			"title": "Nothing has come through your codes yet",
			"body": "Nothing has been attributed to you so far, so the zeros below are real rather than an error. Share a code and this page fills in as people arrive.",
			"rule1": "A click stays credited to you for {days} days."
		}
	},
	"fontCard": {
		"confirmDelete": "Are you sure you want to delete \"{name}\"?",
		"deleteFailed": "Failed to delete font. Please try again.",
		"deleting": "Deleting...",
		"deleteButton": "Delete Font",
		"weightsStyles": "Weights: {weights} | Styles: {styles}",
		"format": "Format: {format}",
		"size": "Size: {size}",
		"uploaded": "Uploaded: {date}"
	},
	"apiKeysManager": {
		"fetchError": "Failed to load API keys",
		"nameRequired": "Please enter a name for your API key",
		"createFailed": "Failed to create key",
		"createSuccess": "API key created",
		"revokeConfirm": "Are you sure you want to revoke this API key? This cannot be undone.",
		"revokeFailed": "Failed to revoke key",
		"revokeSuccess": "API key revoked",
		"copiedToClipboard": "Copied to clipboard",
		"loading": "Loading API keys...",
		"newKeyWarning": "API key created! Copy it now - it won't be shown again.",
		"copy": "Copy",
		"done": "Done",
		"createdOn": "Created {date}",
		"lastUsedSuffix": " • Last used {date}",
		"revoking": "Revoking...",
		"revoke": "Revoke",
		"emptyState": "No API keys yet. Create one to get started.",
		"namePlaceholder": "Key name (e.g., My Integration)",
		"creating": "Creating...",
		"create": "Create",
		"cancel": "Cancel",
		"createButton": "Create API Key",
		"maxKeysReached": "Maximum 5 API keys allowed. Revoke an existing key to create a new one.",
		"docsLink": "See the <anchor>API documentation</anchor> to learn how to use your API keys."
	},
	"fontUpload": {
		"uploadFont": "Upload Font",
		"mustBeLoggedIn": "You must be logged in to upload fonts",
		"invalidFileType": "Invalid font file type. Please upload .woff2, .woff, .ttf, or .otf files.",
		"fileTooLarge": "Font file is too large. Maximum size is 50MB.",
		"failedToGetUploadUrl": "Failed to get upload URL",
		"failedToUploadToStorage": "Failed to upload font to storage",
		"failedToSaveMetadata": "Failed to save font metadata",
		"failedToUploadFont": "Failed to upload font",
		"uploading": "Uploading..."
	},
	"autoReplyWaitlistGate": {
		"joinError": "Could not join the waitlist. Please try again.",
		"questionsPrefix": "Questions about Auto-Reply?",
		"contactUs": "Contact us",
		"headlineLine1": "Auto-Reply is almost",
		"headlineLine2": "ready for you",
		"subtitle": "Turn every comment into a DM, automatically. We're opening it up to creators in waves. Join the list to claim your spot.",
		"features": {
			"autoDm": "Auto-DM anyone who comments your keyword",
			"publicReplyPrefix": "Public reply",
			"publicReplySuffix": "private DM in one go",
			"runsAlways": "Set it once - runs 24/7 on every post"
		},
		"joiningButton": "Joining…",
		"joinWaitlistButton": "Join the waitlist",
		"noSpam": "No spam, just one email when you're in",
		"joinedTitle": "You're on the list",
		"joinedDescription": "We'll email you the moment Auto-Reply opens up, you'll be among the first creators in.",
		"earlyAccessSecured": "Early access secured"
	},
	"googleDriveConnection": {
		"title": "Google Drive",
		"errors": {
			"generic": "Failed to disconnect",
			"disconnectFailed": "Failed to disconnect Google Drive"
		},
		"disconnectedToast": "Google Drive disconnected",
		"checkingConnection": "Checking connection…",
		"connected": "Connected",
		"notConnected": "Not connected",
		"disconnectingButton": "Disconnecting…",
		"disconnectButton": "Disconnect",
		"connectButton": "Connect"
	},
	"connectedAiApps": {
		"title": "Connected AI apps",
		"description": "Let the AI app you already use — Claude, Claude Code or ChatGPT — edit your Otto videos with your own subscription, over the Model Context Protocol.",
		"loading": "Loading…",
		"serverUrlLabel": "Server URL",
		"copyButton": "Copy",
		"copied": "Server URL copied",
		"howToConnect": "How to connect",
		"claudeTitle": "Claude (claude.ai, Claude Desktop)",
		"claudeSteps": "Settings → Connectors → Add custom connector → paste the server URL → Add. Sign in when the browser opens.",
		"claudeCodeTitle": "Claude Code",
		"claudeCodeSteps": "Run the command below, then type /mcp in a session to sign in.",
		"chatgptTitle": "ChatGPT",
		"chatgptSteps": "Settings → Apps & Connectors → Developer mode → Create → paste the server URL, choose OAuth, then sign in.",
		"connectedTitle": "Connected apps",
		"noApps": "No apps connected yet. Connect one from the app itself and it will appear here.",
		"activeNow": "Active now",
		"lastUsed": "Last used {when}",
		"neverUsed": "Not used yet",
		"lastEdit": "last edit: {tool}",
		"disconnectButton": "Disconnect",
		"disconnectingButton": "Disconnecting…",
		"disconnectedToast": "{app} disconnected",
		"errors": {
			"load": "Could not load your connected apps.",
			"disconnectFailed": "Could not disconnect that app.",
			"copyFailed": "Could not copy the URL."
		}
	},
	"dangerZone": {
		"title": "Delete account",
		"description": "Permanently delete your Videotto account and everything in it. Your subscription is cancelled straight away; the data is erased after 30 days.",
		"descriptionPrepaid": "Permanently delete your Videotto account and everything in it. Your plan is prepaid and never renews, so there is no subscription to cancel; the data is erased after 30 days.",
		"openButton": "Delete my account",
		"whatHappensTitle": "What happens",
		"whatHappens": {
			"billing": "Your subscription is cancelled immediately and you are not billed again.",
			"billingPrepaid": "Your plan is prepaid and never renews on its own, so there is nothing to cancel and you will not be charged again.",
			"tokens": "Your connected Instagram, TikTok, YouTube and LinkedIn accounts are disconnected, and your API keys stop working right away.",
			"grace": "For 30 days your account is locked but recoverable — sign in and press Cancel deletion to get it back. Your subscription does not come back with it; you would need to subscribe again.",
			"gracePrepaid": "For 30 days your account is locked but recoverable — sign in and press Cancel deletion to get it back. Any prepaid time still left on your plan comes back with it.",
			"media": "After 30 days every video, clip, project, brand kit, font and upload is permanently erased. This cannot be undone."
		},
		"whatWeKeepTitle": "What we keep",
		"whatWeKeep": {
			"invoices": "Invoices and payment records, which we are required to retain for tax and accounting.",
			"receipt": "A record that the deletion happened, holding your user ID and a one-way hash of your email — no personal data."
		},
		"confirmEmailLabel": "Type {email} to confirm",
		"passwordLabel": "Your password",
		"reasonLabel": "Anything you want to tell us? (optional)",
		"confirmButton": "Delete my account",
		"submitting": "Working…",
		"backButton": "Keep my account",
		"genericError": "Something went wrong. Please try again or contact support.",
		"pendingTitle": "Your account is scheduled for deletion",
		"pendingBody": "Everything in your account will be permanently erased on {date}. Until then you can still get it back, but your subscription has already been cancelled and will not be restored.",
		"pendingBodyPrepaid": "Everything in your account will be permanently erased on {date}. Until then you can still get it back, along with any prepaid time left on your plan.",
		"cancelButton": "Cancel deletion"
	}
}
