{
  "Admin": {
    "usersTitle": "Users",
    "usersSubtitle": "Every user across all organizations.",
    "searchPlaceholder": "Search by email…",
    "search": "Search",
    "columnUser": "User",
    "columnRole": "Role",
    "columnStatus": "Status",
    "columnActions": "Actions",
    "roleAdmin": "Admin",
    "roleStaff": "Staff",
    "roleUser": "User",
    "statusBanned": "Banned",
    "statusActive": "Active",
    "makeAdmin": "Make admin",
    "makeUser": "Remove admin",
    "ban": "Ban",
    "unban": "Unban",
    "banReasonPrompt": "Reason for the ban (optional):",
    "noUsers": "No users found.",
    "total": "{count} users",
    "prev": "Previous",
    "next": "Next",
    "impersonate": "Impersonate",
    "manage": "Manage",
    "filterRole": "Filter by role",
    "filterRoleAll": "All roles",
    "filterStatus": "Filter by status",
    "filterStatusAll": "All statuses"
  },
  "SuperAdmin": {
    "shellTitle": "God Mode",
    "godModeBadge": "God Mode",
    "exitToApp": "← Exit to app",
    "navOverview": "Overview",
    "navUsers": "Users",
    "navOrgs": "Organizations",
    "navBilling": "Billing",
    "navAudit": "Audit log",
    "twoFaRequiredTitle": "Two-factor authentication required",
    "twoFaRequiredBody": "God Mode is gated behind 2FA. Enable two-factor authentication on your account to access the admin console.",
    "twoFaSetupCta": "Set up 2FA",
    "overviewTitle": "Overview",
    "overviewSubtitle": "Live platform metrics across all organizations.",
    "overviewNoAccess": "Your permissions don't include any overview data.",
    "kpiTotalUsers": "Total users",
    "kpiBannedUsers": "Banned users",
    "kpiTotalOrgs": "Organizations",
    "kpiActiveSubs": "Active subscriptions",
    "kpiTrialOrgs": "Orgs in trial",
    "recentActionsTitle": "Recent admin actions",
    "recentActionsSubtitle": "The last 10 privileged actions.",
    "auditEmpty": "No admin actions recorded yet.",
    "auditTitle": "Audit log",
    "auditSubtitle": "Every privileged action, newest first.",
    "auditColTime": "Time",
    "auditColActor": "Actor",
    "auditColAction": "Action",
    "auditColTarget": "Target",
    "auditColIp": "IP",
    "auditTotal": "{count} entries",
    "prev": "Previous",
    "next": "Next",
    "comingSoon": "This section is under construction.",
    "detailBack": "← Back to users",
    "detailUsername": "Username",
    "detailCreatedAt": "Created",
    "detailId": "User ID",
    "roleAdmin": "Admin",
    "roleUser": "User",
    "statusBanned": "Banned",
    "statusActive": "Active",
    "badge2faOn": "2FA on",
    "badgeVerified": "Verified",
    "badgeUnverified": "Unverified",
    "banReasonLabel": "Reason",
    "banExpiresLabel": "Expires",
    "banPermanent": "Permanent",
    "membershipsTitle": "Organizations",
    "membershipsEmpty": "This user belongs to no organization.",
    "actionsTitle": "Actions",
    "liftBan": "Lift ban",
    "suspendBan": "Suspend / ban",
    "suspendDialogTitle": "Suspend or ban this user",
    "suspendDialogBody": "The user is signed out everywhere and blocked from signing in. Choose a duration or ban permanently.",
    "reasonLabel": "Reason",
    "reasonPlaceholder": "Optional reason",
    "durationLabel": "Duration",
    "duration1h": "1 hour",
    "duration24h": "24 hours",
    "duration7d": "7 days",
    "duration30d": "30 days",
    "durationPermanent": "Permanent",
    "confirmSuspend": "Suspend",
    "cancel": "Cancel",
    "confirm": "Confirm",
    "save": "Save",
    "editEmail": "Edit email",
    "editEmailTitle": "Change email address",
    "editEmailBody": "Update the user's email. Optionally mark it as verified.",
    "emailLabel": "Email address",
    "markVerified": "Mark as verified",
    "forceVerify": "Force-verify email",
    "reset2fa": "Reset 2FA",
    "reset2faTitle": "Reset two-factor authentication?",
    "reset2faBody": "This removes the user's TOTP secret and backup codes. They will need to set up 2FA again.",
    "revokeAllSessions": "Revoke all sessions",
    "revokeAllTitle": "Revoke all sessions?",
    "revokeAllBody": "The user is immediately signed out of every device.",
    "impersonate": "Impersonate",
    "sessionsTitle": "Active sessions",
    "sessionDevice": "Device",
    "sessionIp": "IP",
    "sessionCreated": "Created",
    "sessionExpires": "Expires",
    "columnActions": "Actions",
    "sessionsEmpty": "No active sessions.",
    "sessionImpersonated": "Impersonated",
    "revoke": "Revoke",
    "actionError": "Action failed.",
    "toastBanned": "User suspended.",
    "toastBanLifted": "Ban lifted.",
    "toastEmailUpdated": "Email updated.",
    "toastForceVerified": "Email verified.",
    "toast2faReset": "2FA reset.",
    "toastSessionsRevoked": "All sessions revoked.",
    "toastSessionRevoked": "Session revoked.",
    "orgsTitle": "Organizations",
    "orgsSubtitle": "Every tenant on the platform.",
    "orgsSearchPlaceholder": "Search by name…",
    "orgsSearch": "Search",
    "orgsSortCreated": "Newest first",
    "orgsSortMembers": "Most members",
    "orgsSortName": "Name (A–Z)",
    "orgsColName": "Name",
    "orgsColSlug": "Slug",
    "orgsColMembers": "Members",
    "orgsColBilling": "Billing",
    "orgsColTrialEnd": "Trial ends",
    "orgsColCreated": "Created",
    "orgsEmpty": "No organizations found.",
    "orgsTotal": "{count} organizations",
    "orgStatusActive": "Active",
    "orgStatusTrialing": "Trial",
    "orgStatusExpired": "Expired",
    "orgDetailBack": "Back to organizations",
    "orgDetailSlug": "Slug",
    "orgDetailCreated": "Created",
    "orgDetailStripe": "Stripe customer",
    "orgMembersTitle": "Members",
    "orgAddMember": "Add member",
    "orgAddMemberTitle": "Add a member",
    "orgAddMemberBody": "Add an existing user to this organization by email. They join as admin or member (use “Make owner” to transfer ownership).",
    "orgAddMemberEmailPlaceholder": "user@example.com",
    "orgToastMemberAdded": "Member added.",
    "orgMemberName": "Name",
    "orgMemberEmail": "Email",
    "orgMemberRole": "Role",
    "orgMemberJoined": "Joined",
    "orgMemberActions": "Actions",
    "orgMakeOwner": "Make owner",
    "orgTransferTitle": "Transfer ownership?",
    "orgTransferBody": "Make {email} the sole owner of this organization? The current owner will be demoted to admin.",
    "orgRemoveMember": "Remove",
    "orgRemoveTitle": "Remove member?",
    "orgRemoveBody": "Remove {email} from this organization? This cannot be undone.",
    "orgToastRoleSet": "Role updated.",
    "orgToastTransferred": "Ownership transferred.",
    "orgToastRemoved": "Member removed.",
    "orgToastOverrideSaved": "Limit override saved.",
    "orgToastOverrideCleared": "Limit override cleared.",
    "orgLimitsTitle": "Limits & quota",
    "orgLimitsEdit": "Override",
    "orgLimitsEditTitle": "Override quota limits",
    "orgLimitsEditBody": "Leave a field empty to inherit the plan default. Use -1 for unlimited.",
    "orgLimitsClear": "Clear override",
    "orgLimit_keywords": "Keywords",
    "orgLimit_projects": "Projects",
    "orgLimit_seats": "Seats",
    "orgLimit_integrations": "Integrations",
    "orgLimit_backlinkRows": "Backlink rows",
    "orgLimit_mcpMonthly": "MCP monthly",
    "orgLimitExpires": "Expires on",
    "orgLimitNote": "Note",
    "orgLimitNotePlaceholder": "Why this override exists…",
    "orgLimitExpiresAt": "Override expires {date}",
    "orgLimitResource": "Resource",
    "orgLimitPlan": "Plan default",
    "orgLimitEffective": "Effective",
    "orgLimitOverridden": "Override",
    "orgSubTitle": "Subscription",
    "orgSubPlan": "Plan",
    "orgSubStatus": "Status",
    "orgSubSeats": "Seats",
    "orgSubPeriodEnd": "Period end",
    "orgSubStripeSub": "Stripe subscription",
    "orgSubNone": "No subscription on file.",
    "billingTitle": "Financial supervision",
    "billingSubtitle": "Per-tenant billing, Stripe mapping and revenue at a glance.",
    "billingStripeOff": "Stripe not configured",
    "billingKpi_active": "Active",
    "billingKpi_trialing": "Trialing",
    "billingKpi_past_due": "Past due",
    "billingKpi_canceled": "Canceled",
    "billingKpiMrr": "MRR",
    "billingKpiMrrEstimate": "Estimate",
    "billingSearchPlaceholder": "Search organizations…",
    "billingFilter_all": "All statuses",
    "billingFilter_active": "Active",
    "billingFilter_trialing": "Trialing",
    "billingFilter_past_due": "Past due",
    "billingFilter_canceled": "Canceled",
    "billingFilter_none": "No subscription",
    "billingColCustomer": "Stripe customer",
    "billingColSeats": "Seats",
    "billingColPeriodEnd": "Period end",
    "billingPanelTitle": "Stripe supervision",
    "billingPanelBody": "Force a missed webhook to sync, extend the trial, apply a coupon or grant complimentary access — without leaving the dashboard.",
    "billingResync": "Resync from Stripe",
    "billingResyncTitle": "Resync subscription from Stripe?",
    "billingResyncBody": "Re-pulls the live subscription from Stripe and overwrites the local status and period. Use when a webhook was missed.",
    "billingResyncOk": "Subscription resynced.",
    "billingExtendTrial": "Extend trial",
    "billingExtendTitle": "Extend trial",
    "billingExtendBody": "Add days onto the trial end (extends from the current end, or from today if the trial already lapsed).",
    "billingExtendDays": "Days to add",
    "billingExtendOk": "Trial extended.",
    "billingApplyCoupon": "Apply coupon",
    "billingCouponTitle": "Apply a Stripe coupon",
    "billingCouponBody": "Attaches an EXISTING Stripe coupon to the active subscription, or to the customer when there is no active subscription.",
    "billingCouponId": "Coupon ID",
    "billingCouponOk": "Coupon applied.",
    "billingGrantComp": "Grant complimentary",
    "billingCompTitle": "Grant complimentary access",
    "billingCompBody": "App-level comp, independent of Stripe: grants access until the chosen date and, with a plan, applies that plan's limits as an override.",
    "billingCompPlan": "Plan limits",
    "billingCompPlanNone": "Access only (no plan limits)",
    "billingCompUntil": "Access until",
    "billingCompNote": "Note",
    "billingCompNotePlaceholder": "Reason for the comp (stored in the audit log)",
    "billingCompOk": "Complimentary access granted.",
    "navExport": "Export & Metrics",
    "navStaff": "Staff",
    "auditFilterActor": "Actor email",
    "auditFilterAction": "Action",
    "auditFilterTarget": "Target type",
    "auditFilterAll": "All",
    "auditFilterSince": "From",
    "auditFilterUntil": "To",
    "auditFilterApply": "Apply",
    "auditFilterReset": "Reset",
    "exportTitle": "Export & Metrics",
    "exportSubtitle": "Download platform data and review headline estimates.",
    "exportDownloadsTitle": "Structured exports",
    "exportDownloadsSubtitle": "Download each dataset as CSV or JSON for external dashboards.",
    "exportDataset_users": "Users",
    "exportDataset_organizations": "Organizations",
    "exportDataset_subscriptions": "Subscriptions",
    "exportDataset_audit": "Audit log",
    "metricsTitle": "Headline metrics",
    "metricsEstimateNote": "Estimates — derived from local data, not billed revenue",
    "metricTotalUsers": "Total users",
    "metricTotalOrgs": "Total organizations",
    "metricActiveSubs": "Active subscriptions",
    "metricChurnProxy": "Churn (estimate)",
    "metricCollabOrgs": "Orgs with collaborators",
    "metricEngagedOrgs": "Orgs on trial or active",
    "metricBillableOrgs": "Orgs with Stripe customer",
    "staffTwoFaTitle": "Secure your account",
    "staffTwoFaBody": "Two-factor authentication is required before you can access the management dashboard.",
    "staffTitle": "SYS Staff",
    "staffCreate": "Create staff",
    "staffPromote": "Promote a user",
    "staffRemove": "Remove",
    "staffPermissions": "Permissions",
    "staffNoTwoFa": "2FA missing",
    "staffEmpty": "No staff yet",
    "signOut": "Sign out"
  },
  "Impersonation": {
    "banner": "You are impersonating {user}",
    "stop": "Exit"
  },
  "Common": {
    "save": "Save",
    "cancel": "Cancel",
    "loading": "Loading…",
    "continue": "Continue",
    "or": "or"
  },
  "Auth": {
    "signupTitle": "Create an account",
    "signupSubtitle": "Start your SEO Insight workspace",
    "loginTitle": "SEO Insight",
    "loginSubtitle": "Sign in to your workspace",
    "nameLabel": "Name",
    "emailLabel": "Email",
    "emailPlaceholder": "m@example.com",
    "passwordLabel": "Password",
    "forgotPassword": "Forgot password?",
    "createAccountButton": "Create account",
    "signInButton": "Sign in",
    "sendMagicLinkButton": "Get a magic link",
    "magicLinkSent": "Magic link sent — check your inbox.",
    "continueWithGoogle": "Continue with Google",
    "continueWithGitHub": "Continue with GitHub",
    "alreadyHaveAccount": "Already have an account?",
    "signInLink": "Sign in",
    "noAccount": "No account?",
    "createAccountLink": "Create an account",
    "emailOrUsernameLabel": "Email or username",
    "usernameLabel": "Username",
    "usernameRequired": "(required)",
    "usernameMissing": "Choose a username to continue.",
    "usernamePlaceholder": "your_handle",
    "usernameHint": "Letters, numbers, _ and . — 3 to 30 characters.",
    "usernameInvalid": "3 to 30 characters: letters, numbers, _ and . only.",
    "usernameTaken": "This username is already taken.",
    "usernameChecking": "Checking availability…",
    "usernameAvailable": "Username available.",
    "verifyEmailTitle": "Check your email",
    "verifyEmailBody": "We sent a confirmation link to <strong>{email}</strong>. Click it to activate your account, then sign in.",
    "backToLogin": "Back to sign in",
    "signupFailed": "Sign-up failed.",
    "loginFailed": "Sign-in failed.",
    "magicLinkFailed": "Failed to send the link.",
    "bannedUser": "Your account has been suspended. Contact support if you think this is a mistake.",
    "invitedTitle": "You've been invited",
    "invitedJoinAs": "Join <orgName></orgName> as <role></role>.",
    "invitedSignInPrompt": "Sign in or create an account with <email></email> to accept.",
    "invitedSignInPromptNoEmail": "Sign in or create an account to accept.",
    "youWereInvitedTitle": "You've been invited",
    "youWereInvitedBody": "You've been invited to join <orgName></orgName> as <role></role>.",
    "acceptButton": "Accept",
    "rejectButton": "Decline",
    "acceptFailed": "Could not accept the invitation.",
    "rejectFailed": "Could not decline the invitation.",
    "seatBlockedTitle": "No seat available",
    "seatBlockedBody": "The {org} workspace has no seats left on its current plan. The owner has been notified — you'll get an email as soon as a seat opens up.",
    "seatBlockedMeanwhile": "Meanwhile, your own workspace is ready for you.",
    "invitationUnavailableTitle": "Invitation unavailable",
    "invitationUnavailableBody": "This invitation is invalid, has expired or was cancelled. Ask the person who invited you to send a new one.",
    "goToApp": "Go to the app",
    "wrongAccountTitle": "Wrong account",
    "wrongAccountBody": "This invitation was sent to <invitedEmail></invitedEmail>, but you're signed in as <currentEmail></currentEmail>. Sign out and sign back in with <invitedEmail></invitedEmail> to accept.",
    "signInWithAnotherAccount": "Sign in with another account",
    "roleOwner": "owner",
    "roleAdmin": "administrator",
    "roleStaff": "member",
    "emailNormalizedNotice": "Aliases (+tag, dots) are normalized: this account will use {email}.",
    "accountExists": "An account already exists with this address. Log in instead.",
    "nameInvalid": "Enter your name (100 characters max).",
    "emailInvalid": "Enter a valid email address.",
    "passwordTooWeak": "Password too weak: at least 14 characters with upper & lower case, a digit and a symbol.",
    "strengthWeak": "Weak",
    "strengthFair": "Fair",
    "strengthGood": "Good",
    "strengthStrong": "Strong",
    "pwNeedLength": "At least 14 characters",
    "pwNeedLower": "One lowercase letter",
    "pwNeedUpper": "One uppercase letter",
    "pwNeedDigit": "One digit",
    "pwNeedSymbol": "One symbol"
  },
  "Nav": {
    "checklist": "The checklist",
    "keywords": "Keywords",
    "pages": "Pages",
    "inventory": "Inventory",
    "backlink": "Backlink",
    "content": "Content",
    "gsc": "Search Console",
    "gscManage": "Connection & health",
    "support": "Support",
    "settings": "Settings",
    "overview": "Overview",
    "reservoir": "Reservoir",
    "recherche": "Search",
    "planning": "Planning",
    "profile": "Profile",
    "online": "Online",
    "stats": "Stats",
    "myTickets": "My tickets",
    "staffInbox": "Staff inbox",
    "account": "Account",
    "team": "Team",
    "integrations": "Integrations",
    "upgradeToPro": "Upgrade to Pro",
    "billing": "Billing",
    "notifications": "Notifications",
    "signOut": "Sign out",
    "godMode": "God Mode"
  },
  "Pages": {
    "breadcrumb": "Pages",
    "inventory": "Inventory",
    "noSites": "Select a site to see its page inventory.",
    "crawlButton": "Crawl the site",
    "crawling": "Crawling…",
    "crawlStarted": "Crawl started",
    "searchPlaceholder": "Search a page…",
    "filterIssue": "Filter by issue",
    "filterIssueAll": "All issues",
    "colPath": "URL",
    "colStatus": "Status",
    "colTitle": "Title",
    "colDescription": "Description",
    "colH1": "H1",
    "colIssues": "Issues",
    "colKeywords": "Keywords",
    "chars": "{count} chars",
    "toastDone": "{pages} pages crawled · {errors} errored · {mapped} keywords mapped · {unmapped} unmapped",
    "toastFailed": "Crawl failed",
    "errorMissingUrl": "Set the site URL before starting a crawl.",
    "errorAlreadyRunning": "A crawl is already running for this site.",
    "phase": {
      "discover": "Discovering sitemap…",
      "crawl": "Crawling pages…",
      "map": "Mapping keywords…",
      "done": "Done"
    },
    "issues": {
      "title-missing": "Title missing",
      "title-long": "Title too long",
      "title-short": "Title too short",
      "description-missing": "Description missing",
      "description-long": "Description too long",
      "description-short": "Description too short",
      "h1-missing": "H1 missing",
      "h1-multiple": "Multiple H1",
      "noindex": "Noindex",
      "canonical-mismatch": "Canonical mismatch",
      "error": "Error"
    },
    "emptyTitle": "No pages yet",
    "emptyDescription": "Start a crawl to build the inventory. Prerequisite: the site URL must be set in settings.",
    "sheetLoading": "Loading…",
    "sheetNotFound": "Page not found.",
    "sheetStatus": "HTTP status",
    "sheetCanonical": "Canonical",
    "sheetRobots": "Robots",
    "sheetLang": "Language",
    "sheetWordCount": "Word count",
    "sheetKeywords": "Keywords targeting this page",
    "sheetNoKeywords": "No keyword is linked to this page.",
    "sheetViewReservoir": "View in reservoir"
  },
  "Activation": {
    "title": "Getting started",
    "progress": "{done} of {total}",
    "optional": "Optional",
    "done": "Done",
    "dismiss": "Hide checklist",
    "resume": "Resume the guided setup",
    "restoreTitle": "Getting-started checklist",
    "restoreDescription": "Show the activation checklist in the sidebar again.",
    "restore": "Show again",
    "noSiteTitle": "No site assigned to you yet",
    "noSiteDescription": "You don't have access to any site yet, and only owners and admins can create one. Ask one of them to create a site or to share an existing one — the checklist will pick up from there.",
    "steps": {
      "create-site": {
        "title": "Add your site",
        "description": "Create your first project: domain, language and target country.",
        "cta": "Add a site"
      },
      "connect-gsc": {
        "title": "Connect Search Console",
        "description": "Link your Google Search Console property for real data.",
        "cta": "Connect GSC"
      },
      "add-keywords": {
        "title": "Add your keywords",
        "description": "Import a CSV or add your first keywords to the reservoir.",
        "cta": "Add keywords"
      },
      "enrich-keywords": {
        "title": "Enrich your keywords",
        "description": "Bring back volumes, CPC and competition on your keywords.",
        "cta": "Enrich"
      },
      "target-country": {
        "title": "Target a country",
        "description": "Pick a country on a keyword and generate your first plan.",
        "cta": "Build a plan"
      },
      "invite-teammate": {
        "title": "Invite a teammate",
        "description": "Work together on your SEO projects.",
        "cta": "Invite"
      }
    }
  },
  "Onboarding": {
    "welcomeTitle": "Welcome to SEO Insight",
    "welcomeSubtitle": "Let's set up your workspace in a minute.",
    "stepCounter": "Step {current} of {total}",
    "siteTitle": "Add your site",
    "siteHelp": "Your keywords, pages and backlinks all attach to a site. Pick the target country carefully: it drives keyword suggestions and Search Console breakdowns.",
    "siteSubmit": "Create site",
    "siteError": "Could not create the site. Try again or sign in again.",
    "gscTitle": "Your real search data",
    "gscHelp": "Search Console brings back the queries your site already shows up for on Google — with nothing to type in.",
    "gscConnectHelp": "Connect your Google account to see the Search Console properties you have verified.",
    "gscConnect": "Connect Google Search Console",
    "gscReconnectHelp": "Your Google account is connected, but without Search Console access. Reconnect it and tick the Search Console box on Google's screen.",
    "gscReconnect": "Reconnect Google Search Console",
    "gscSelectLabel": "Pick the Search Console property that matches this site.",
    "gscSelectPlaceholder": "Select a property",
    "gscConfirm": "Use this property",
    "gscIncomplete": "This list may be incomplete: one of your Google accounts did not answer.",
    "gscUnavailable": "We can't list your Search Console properties right now — Google did not answer. That doesn't mean you have none: try again in a moment.",
    "gscRetry": "Try again",
    "gscEmpty": "No verified property on your Google account. That's expected if your site just went live: add it to Search Console first, you can come back here later.",
    "gscLinkAnother": "Link another Google account",
    "gscLinkError": "Google sign-in failed — try again.",
    "gscActionError": "The request failed — try again.",
    "gscSkip": "My site is too new to have data yet",
    "gscSkipHelp": "No problem: this step is optional and will wait for you in your activation checklist.",
    "keywordsTitle": "Fill your keyword pool",
    "keywordsHelp": "Everything else builds on this pool: research, planning and content briefs all draw from it.",
    "keywordsImportHelp": "Already have a list? Import your export — Mangools, Semrush, SE Ranking or Ahrefs. The format is detected automatically.",
    "keywordsImport": "Import a keyword list",
    "keywordsImportUnavailable": "File import is unavailable on this instance. You can still add keywords by hand below.",
    "keywordsManualHelp": "No list yet? Type a keyword you want to rank on.",
    "keywordsManualPlaceholder": "e.g. waterproof hiking boots",
    "keywordsManualAdd": "Add",
    "keywordsAdded": "{count, plural, one {# keyword added} other {# keywords added}}.",
    "keywordsQuotaLink": "Change plan",
    "keywordsEmptyTerm": "Type a keyword first.",
    "keywordsAddError": "Could not add the keyword — try again.",
    "keywordsContinue": "Continue",
    "keywordsSkip": "I don't have any keywords yet",
    "keywordsSkipHelp": "You can come back to this: it will wait for you in your activation checklist.",
    "mangoolsHelp": "Already did your research in Mangools? Import your saved lists as they are — volumes, difficulty and CPC included.",
    "mangoolsOpen": "Import from Mangools",
    "mangoolsConnectHelp": "Paste your Mangools API token to see your saved lists here. It stays encrypted, and it also powers enrichment.",
    "mangoolsLoading": "Loading your Mangools lists…",
    "mangoolsEmpty": "Your Mangools account holds no saved list. Create one in KWFinder and come back here — or import a file below.",
    "mangoolsRetry": "Try again",
    "mangoolsListMeta": "{count, plural, one {# keyword} other {# keywords}} · updated {date}",
    "mangoolsThemeLabel": "Theme for “{list}”",
    "mangoolsThemePlaceholder": "Theme name",
    "mangoolsThemeHelp": "Every checked list files its keywords under a theme. The list name is suggested: keep it, type the name of an existing theme to attach them to it, or clear the field to import without a theme.",
    "mangoolsImport": "{count, plural, one {Import the checked list} other {Import the # checked lists}}",
    "mangoolsImporting": "Importing…",
    "mangoolsCountryHint": "Mangools only reveals the country of a list once it is imported. A list outside your target countries is imported all the same — under ITS own country, in the site language ({lang}), since the Mangools format carries no language.",
    "mangoolsNoTargetCountries": "Your site declares no target country: every list will be imported under ITS own country, in the site language ({lang}). Add a target country from Projects → your site so the match happens on its own.",
    "mangoolsAlready": "{count, plural, one {That list was already in your reservoir} other {Those # lists were already in your reservoir}}: no new keyword was created, but volumes and trends have just been refreshed.",
    "mangoolsNothing": "No keyword was imported — the per-list detail is above.",
    "mangoolsErrorNoConnector": "Your Mangools account is no longer connected: paste your token again to carry on.",
    "mangoolsErrorQuota": "Your Mangools account hit its request limit. Try again later, or import a file in the meantime.",
    "mangoolsErrorUpstream": "Mangools did not answer. Try again in a moment.",
    "mangoolsErrorTooManyLists": "Too many lists checked at once: keep it under 25 per import.",
    "mangoolsErrorSiteNotFound": "This site cannot be found. Reload the page, then try again.",
    "mangoolsVerdictOffTarget": "“{list}”: your site targets {targets}, this list is in {country}. Its keywords were imported under {country}, in the site language ({lang}) — the Mangools format carries no language.",
    "mangoolsVerdictNoTargets": "“{list}”: your site declares no target country. Its keywords were imported under {country}, the country of the list, in the site language ({lang}).",
    "mangoolsVerdictMixed": "“{list}”: nothing was imported. This list mixes several countries ({countries}) and a keyword only carries one. Clean it up in Mangools to keep a single country, or check another list instead.",
    "mangoolsVerdictUnknown": "“{list}”: nothing was imported. No readable country on its keywords — we do not guess. Check the list location in Mangools.",
    "enrichTitle": "Add search volumes (optional)",
    "enrichHelp": "Connect Mangools to get volume, difficulty and CPC on your keywords. You can skip this and do it later from Settings.",
    "enrichPlaceholder": "Mangools API token",
    "enrichWhereToken": "Where do I find this token?",
    "enrichConnect": "Connect",
    "enrichSkip": "Skip this step",
    "enrichSkipHelp": "This step is optional: without it your keywords simply stay without volumes. SE Ranking works too — it connects from Settings → Integrations.",
    "enrichConnectedTitle": "Mangools is connected",
    "enrichConnectedHelp": "Volumes will land on your keywords as soon as you run an enrichment from the keyword pool.",
    "enrichContinue": "Continue",
    "enrichEmptyToken": "Paste your token first.",
    "enrichInvalid": "That token was rejected. Check you copied it in full.",
    "enrichForbidden": "Only an owner or admin can connect a tool.",
    "enrichFailed": "Connection failed. Try again in a moment.",
    "targetTitle": "Plan your first keyword",
    "targetHelp": "Planning a keyword for a country puts it on your content plan and unlocks the brief workflow.",
    "targetProposal": "We'll plan “{term}” for {country} — your highest-volume keyword.",
    "targetNoKeyword": "Your keyword pool is still empty, so there is nothing to plan yet. Pick “I'll plan later” below, then fill it from Keywords → Reservoir.",
    "targetNoCountry": "This site has no target country, so there is nothing to plan against. Pick “I'll plan later” below, then add one from Projects → your site.",
    "targetConfirm": "Plan it",
    "targetFailed": "Could not plan that keyword. Try again in a moment.",
    "targetDefer": "I'll plan later",
    "targetDeferHelp": "Nothing is lost: this step will wait for you in your activation checklist.",
    "signOut": "Sign out",
    "deferLater": "I'll do this later",
    "noOrgTitle": "No organization",
    "noOrgDescription": "Your account does not belong to any organization, so there is no workspace to set up and the guided setup has nothing to offer you. You were most likely removed from it. Ask for a new invitation, or sign out to use another account."
  },
  "Billing": {
    "title": "Billing",
    "currentPlan": "Current plan",
    "statusActive": "Active",
    "statusTrialing": "Trial",
    "statusExpired": "Expired",
    "statusCanceled": "Canceled",
    "trialDaysLeft": "{days, plural, one {# day left in your trial} other {# days left in your trial}}",
    "trialEndedOn": "Trial ended on {date}",
    "renewsOn": "Renews on {date}",
    "endsOn": "Ends on {date}",
    "monthly": "Monthly",
    "annual": "Annual",
    "annualSavings": "Save 20%",
    "perMonth": "/month",
    "billedAnnually": "Billed annually ({price}/year)",
    "upgrade": "Upgrade",
    "choosePlan": "Choose this plan",
    "currentLabel": "Your plan",
    "manageBilling": "Manage billing",
    "openPortal": "Open customer portal",
    "cancelPlan": "Cancel subscription",
    "restorePlan": "Restore subscription",
    "lockedTitle": "Your trial has ended",
    "lockedSubtitle": "Pick a plan to keep working — your data is safe and waiting for you.",
    "lockedMemberHint": "Ask an owner or admin of your workspace to choose a plan.",
    "contactUs": "Contact us",
    "enterpriseDesc": "Custom quotas, SLA, dedicated support.",
    "planSoloDesc": "For freelances and side projects.",
    "planStarterDesc": "For established freelancers.",
    "planProDesc": "The core plan for professionals.",
    "planAgencyDesc": "White label and 10 seats for agencies.",
    "featKeywords": "{count} tracked keywords",
    "featProjects": "{count, plural, one {# project} other {# projects}}",
    "featSeats": "{count, plural, one {# seat} other {# seats included}}",
    "featIntegrations": "{count} SEO integrations",
    "featIntegrationsUnlimited": "Unlimited SEO integrations",
    "featBacklinks": "{count} backlink rows",
    "featMcp": "{count} MCP requests/month",
    "checkoutError": "Could not start checkout. Try again.",
    "noOrgForCheckout": "Your workspace is still being created. Wait a moment, then try again.",
    "portalError": "Could not open the billing portal. Try again.",
    "mcpUsageTitle": "MCP requests",
    "mcpUsage": "{used} / {limit} requests this month",
    "mcpUnlimited": "Unlimited requests",
    "creditBalance": "{count, plural, one {# credit} other {# credits}}",
    "buyPack": "Buy a credit pack",
    "packDesc": "$25 — 25,000 requests",
    "packPurchased": "Credit pack added — happy building!",
    "serankingTitle": "SE-Ranking",
    "serankingBalance": "{count, plural, one {# sync} other {# syncs}}",
    "serankingDesc": "$9.99 — 100 syncs",
    "serankingBuyPack": "Buy 100 syncs",
    "serankingPackPurchased": "Sync pack added — happy syncing!"
  },
  "Keywords": {
    "dialogTitle": "Confirm SE-Ranking sync",
    "dialogDescription": "This consumes SE-Ranking syncs to enrich the selected keywords.",
    "estimateSyncs": "{count, plural, one {# sync} other {# syncs}}",
    "estimateKeywords": "{count, plural, one {# keyword} other {# keywords}}",
    "estimateCountries": "{count, plural, one {# country} other {# countries}}",
    "skippedCountries": "uncovered: {countries}",
    "balanceUnlimited": "Unlimited",
    "balanceByok": "Via your SE-Ranking key",
    "balanceMetered": "Balance: {count, plural, one {# sync} other {# syncs}}",
    "buyPackCta": "Buy a pack (100 · $9.99)",
    "buyPackError": "Could not start checkout. Try again.",
    "confirm": "Confirm",
    "quotaExceeded": "Keyword quota reached ({current}/{limit}) — upgrade your plan or free up keywords.",
    "recapEnriched": "{count} enriched",
    "recapNoData": "{count} without SE-Ranking data",
    "recapSkipped": "uncovered country: {countries}",
    "recapTitle": "SE-Ranking sync: {summary}",
    "syncError": "SE-Ranking sync failed — try again later.",
    "targetPageSourceGsc": "Search Console",
    "targetPageSourceContent": "Content",
    "targetPageSourceText": "Text",
    "targetPageSourceManual": "Manual",
    "targetPageScore": "Match score: {score}",
    "targetPageAssign": "Assign a page",
    "targetPageEditAria": "Edit target page",
    "targetPageAssignAria": "Assign a target page",
    "targetPageSearchPlaceholder": "Search a page…",
    "targetPageSearching": "Searching…",
    "targetPageEmpty": "No page found",
    "targetPageRemove": "Remove page",
    "targetPageSetSuccess": "Target page updated",
    "targetPageRemoveSuccess": "Target page removed",
    "targetPageError": "Failed to update the target page",
    "facetNoPage": "No page",
    "promote": {
      "title": "To Content",
      "description": "{count, plural, one {# keyword selected} other {# keywords selected}}",
      "modeOnePage": "One page (group)",
      "modeOnePageHint": "A single page: 1 primary + {count, plural, one {# secondary} other {# secondaries}}.",
      "modePerKeyword": "{count, plural, one {# page (one per keyword)} other {# pages (one per keyword)}}",
      "modePerKeywordHint": "For each keyword: optimize an existing page or create new content.",
      "primaryAria": "Primary keyword",
      "optimize": "Optimize",
      "create": "Create",
      "attach": "Attach a page",
      "change": "Change page",
      "pickerAria": "Choose a target page",
      "recap": "{optimized} optimized · {created} created · {merged} merged",
      "groupCreated": "Content created",
      "error": "Failed to promote to Content",
      "cancel": "Cancel",
      "submit": "Confirm",
      "submitBusy": "Working…"
    },
    "related": {
      "trigger": "Related keywords",
      "title": "Related keywords",
      "description": "Suggestions related to “{seed}”",
      "searchPlaceholder": "Filter results…",
      "selectAll": "Select all",
      "colTerm": "Keyword",
      "colVolume": "Volume",
      "colKd": "KD",
      "colCpc": "CPC",
      "empty": "No related keywords found.",
      "selected": "{count, plural, one {# selected} other {# selected}}",
      "addReservoir": "Add to Reservoir",
      "addRecherche": "Send to Research",
      "addSuccess": "{count, plural, one {# keyword added} other {# keywords added}}",
      "addSuccessPartial": "{added, plural, one {# keyword added} other {# keywords added}}, {updated, plural, one {# already present updated} other {# already present updated}}",
      "addError": "Failed to add keywords.",
      "errorQuota": "Mangools quota reached for this month. Try again later or check your Mangools plan.",
      "errorUpstream": "Mangools is temporarily unavailable. Please try again shortly.",
      "errorLocation": "No target country resolved for this site — cannot query Mangools.",
      "noConnectorText": "Connect your Mangools account to discover related keywords.",
      "noConnectorCta": "Connect Mangools"
    },
    "semantic": {
      "noSerpConnectText": "Connect Mangools to fetch the SERP automatically.",
      "noSerpConnectCta": "Connect Mangools"
    }
  },
  "Quota": {
    "keywords": "Keyword limit reached ({limit}). Upgrade to track more.",
    "projects": "Project limit reached ({limit}). Upgrade to add more sites.",
    "seats": "All seats are taken ({limit}). Upgrade to invite more people.",
    "backlinkRows": "Backlink row limit reached ({limit}).",
    "mcpMonthly": "Monthly MCP request quota exceeded.",
    "importTooLarge": "This import exceeds your remaining quota ({remaining} left).",
    "upgradeCta": "View plans"
  },
  "Pricing": {
    "heroTitle": "Simple pricing that scales with you",
    "heroSubtitle": "Start with a 14-day Pro trial — no card required. Pick a plan when you're ready.",
    "trialBanner": "14-day Pro trial — no card required",
    "compare": "Compare plans",
    "colKeywords": "Tracked keywords",
    "colProjects": "Projects",
    "colSeats": "Seats included",
    "colIntegrations": "SEO integrations",
    "colBacklinks": "Backlink rows",
    "colMcp": "MCP requests/month",
    "unlimited": "Unlimited",
    "perMonthEq": "per month, billed annually",
    "packsNote": "Need more MCP requests? Credit packs: $25 per 25,000 requests.",
    "ctaStart": "Start free trial",
    "ctaGoToBilling": "Manage your plan",
    "enterprise": "Enterprise",
    "onQuote": "Custom quote"
  },
  "Tour": {
    "replay": "Replay this tour",
    "replayDeferred": "This tour needs something to show — come back once the page lists rows, either by clearing a filter or by adding data.",
    "ui": {
      "progress": "{current} of {total}",
      "next": "Next",
      "previous": "Previous",
      "done": "Done"
    },
    "reservoir": {
      "whatIsIt": {
        "title": "Your keyword reservoir",
        "body": "Everything you import lands here. This is a research workspace, not rank tracking: nothing is committed yet."
      },
      "import": {
        "title": "Bringing keywords in",
        "body": "Drop a CSV export — Mangools, Semrush, SE Ranking or Ahrefs — and the format is recognised on its own. You can also pull queries from Search Console, or type a single keyword by hand."
      },
      "sync": {
        "title": "Enrich and refresh",
        "body": "Pull volume, difficulty and CPC from SE Ranking or Mangools, and bring your Search Console positions up to date. The amber dot flags a source that has not been synced for more than seven days."
      },
      "sources": {
        "title": "Where each figure comes from",
        "body": "Every dot is a source that provided metrics for this keyword. Hover it for the exact value and its date, click it to show that source in the columns."
      }
    },
    "recherche": {
      "whatIsIt": {
        "title": "The sorting stage",
        "body": "Here you only see the keywords you sent to research. This is where you decide what deserves the work."
      },
      "gscColumns": {
        "title": "Your real positions",
        "body": "This column comes from your Search Console: the average position you already hold. The bolt marks quick wins, between 11th and 20th place — the fastest gains."
      },
      "targeting": {
        "title": "Targeting a country",
        "body": "Switch to the Matrix view to cross your keywords with your target countries. Set a cell to “planned” and the keyword joins your content plan for that country."
      }
    },
    "planning": {
      "whatIsIt": {
        "title": "Your content plan",
        "body": "Each row is one keyword planned for one country. This is your production queue."
      },
      "readiness": {
        "title": "What is missing before writing",
        "body": "This On-page column, flanked by SERP on its left and Brief on its right, shows how far each row has been prepared. As long as one of those three is not green, writing would start blind."
      },
      "dispatch": {
        "title": "Moving on to writing",
        "body": "Click a row to open its detail: the SERP analysis, the on-page crawl and the brief to hand over to the writer."
      }
    }
  },
  "Construction": {
    "badge": "Under construction",
    "title": "Under construction",
    "subtitle": "This feature is coming soon. It's still being built."
  },
  "TwoFactor": {
    "challengeTitle": "Two-step verification",
    "challengeSubtitle": "Enter the 6-digit code from your authenticator app.",
    "backupSubtitle": "Enter one of your backup codes.",
    "codeLabel": "Authentication code",
    "backupCodeLabel": "Backup code",
    "codePlaceholder": "123456",
    "backupPlaceholder": "xxxxxxxxxx",
    "trustDevice": "Trust this device for 30 days",
    "verifyButton": "Verify",
    "useBackupCode": "Use a backup code instead",
    "useAuthenticator": "Use your authenticator app instead",
    "invalidCode": "Invalid code. Try again.",
    "invalidBackupCode": "Invalid backup code. Try again.",
    "cardTitle": "Two-factor authentication",
    "cardDescription": "Add a second step at sign-in using an authenticator app (TOTP).",
    "statusEnabled": "Enabled",
    "enabledHint": "Your account is protected by an authenticator app.",
    "statusDisabled": "Two-factor authentication is not enabled.",
    "enableButton": "Enable two-factor",
    "disableButton": "Disable",
    "enrollTitle": "Enable two-factor authentication",
    "enrollPasswordPrompt": "Confirm your password to continue.",
    "passwordLabel": "Password",
    "enableFailed": "Could not start enrollment.",
    "scanTitle": "Scan the QR code",
    "scanPrompt": "Scan this with your authenticator app, then enter the generated code to confirm.",
    "manualEntry": "Can't scan? Enter this secret manually:",
    "copySecret": "Copy secret",
    "backupCodesTitle": "Backup codes",
    "backupCodesWarning": "Save these now. Each can be used once if you lose your device. They won't be shown again.",
    "copyBackupCodes": "Copy codes",
    "confirmCodeLabel": "Enter the 6-digit code to confirm",
    "confirmButton": "Confirm & enable",
    "enabledToast": "Two-factor authentication enabled.",
    "cancel": "Cancel",
    "continue": "Continue",
    "disableTitle": "Disable two-factor authentication",
    "disablePrompt": "Confirm your password to turn off two-factor authentication.",
    "disableFailed": "Could not disable two-factor authentication.",
    "disabledToast": "Two-factor authentication disabled.",
    "backToLogin": "Back to sign in",
    "needHelp": "Need help?"
  },
  "AddSite": {
    "title": "New site / project",
    "description": "The domain you work on (keywords and backlinks are scoped to it).",
    "submitLabel": "Create site"
  },
  "NoSiteAccess": {
    "title": "No site shared with you yet",
    "body": "An owner or admin of your organization needs to give you access to a site from Settings → Team. Once that's done, reload this page."
  },
  "UsernamePrompt": {
    "title": "Choose a username",
    "description": "Welcome! Choose a username to continue — it's your public handle and you can use it to sign in instead of your email.",
    "label": "Username",
    "placeholder": "your_handle",
    "hint": "Letters, numbers, _ and . — 3 to 30 characters.",
    "invalid": "3 to 30 characters: letters, numbers, _ and . only.",
    "taken": "This username is already taken.",
    "checking": "Checking…",
    "available": "Username available.",
    "submit": "Continue",
    "submitting": "Saving…",
    "error": "Could not save your username. Please try again."
  },
  "Settings": {
    "integrations": {
      "seranking": {
        "title": "SE-Ranking — Use your own API key",
        "pitch": "Connect your SE-Ranking key so syncs stop drawing from our quota — a dedicated rate limit for your account.",
        "price": "$9.99/month",
        "subscribe": "Subscribe",
        "checkoutError": "Could not start checkout. Please try again.",
        "active": "Active",
        "activeDescription": "The SE-Ranking add-on is active. Enter your API key to use it.",
        "keyLabel": "SE-Ranking API key",
        "keyPlaceholderNew": "sk-…",
        "keyPlaceholderSet": "••••••••••••",
        "save": "Save",
        "disconnect": "Disconnect",
        "saved": "SE-Ranking key saved.",
        "disconnected": "SE-Ranking key disconnected.",
        "unitsLeft": "Credits remaining on your account: {count}",
        "keyConfiguredByAdmin": "A SE-Ranking key is configured for this organization.",
        "noKeyYet": "No SE-Ranking key configured yet."
      },
      "mangools": {
        "title": "Mangools — Connect your API token",
        "pitch": "Connect your Mangools token to enable keyword research and SERP analysis. Free — you use your own Mangools account.",
        "connected": "Connected",
        "invalid": "Invalid token",
        "activeDescription": "Your Mangools token is active. You can replace it or disconnect.",
        "invalidDescription": "Your Mangools token was rejected. Enter a new token to restore the connection.",
        "tokenLabel": "Mangools API token",
        "tokenPlaceholderNew": "Your Mangools token",
        "tokenPlaceholderSet": "••••••••••••",
        "getToken": "Get a token →",
        "connect": "Connect",
        "replace": "Replace token",
        "disconnect": "Disconnect",
        "saved": "Mangools token saved.",
        "disconnected": "Mangools token disconnected.",
        "invalidToken": "Mangools token rejected. Check it and try again.",
        "forbidden": "Reserved for the owner or an administrator.",
        "configuredByAdmin": "A Mangools token is configured for this organization.",
        "noTokenYet": "No Mangools token configured yet."
      }
    }
  }
}
