{
  "appName": "form·vee",
  "tagline": "Surveys that ask why, data that shows its sources.",
  "description": "Ask, verify, and analyze. The whole research flow in one place.",
  "themeToggle": "Toggle light / dark theme",
  "close": "Close",
  "language": "Language",
  "languageEnglish": "English",
  "languageKorean": "한국어",
  "landing": {
    "nav": {
      "interview": "AI Interview",
      "document": "Document forms",
      "research": "Research",
      "platform": "Builder"
    },
    "hero": {
      "title": "A thousand respondents, heard one at a time",
      "subtitle": "Write down what you want to learn and AI talks with every respondent, asking why until the answer is clear. Only answers backed by their own words become data, and analysis starts the moment collection ends.",
      "cta": "Start for free",
      "ctaSecondary": "Watch an interview",
      "imageAlt": "Quiet interview room with a notebook and warm desk light"
    },
    "promise": {
      "title": "Ask, verify, analyze. All in one place.",
      "description": "form·vee is a form builder with an interviewer built in. Paper documents become forms as you paste them, answers are saved with the words that back them, and results move straight into crosstabs, quotas, and qualitative coding."
    },
    "interview": {
      "eyebrow": "AI interview",
      "title": "Not a survey. An interview.",
      "description": "Decide what you want to learn and AI leads the conversation, asking for reasons, examples, and the moments behind each answer. The engine, not the model, decides where it goes and when it ends, so no interview wanders off topic.",
      "bullets": [
        "Vague answers get a follow-up, automatically",
        "The engine steers; AI only interprets",
        "No interview ends until your questions are answered"
      ],
      "demo": {
        "label": "Product research interview",
        "goalLabel": "Interview goal",
        "goal": "Find out why people skip the new reports view",
        "depthBadge": "Follow-up",
        "coverageLabel": "Goal coverage",
        "turns": {
          "t1": {
            "q": "I heard you barely use the new reports view. What gets in the way most?",
            "a": "I just can't tell what matters at a glance"
          },
          "t2": {
            "q": "Was there a moment where it especially broke down?",
            "a": "Even with filters I couldn't compare teams, so I went back to the spreadsheet"
          },
          "t3": {
            "q": "How did that feel at the time?",
            "a": "It felt like learning the new screen wasn't worth the time"
          }
        },
        "fields": {
          "f1": {
            "label": "Reason unused",
            "value": "Key metrics hard to scan"
          },
          "f2": {
            "label": "Blocking gap",
            "value": "No team compare / export"
          }
        }
      }
    },
    "evidence": {
      "eyebrow": "Evidence check",
      "title": "If they didn't say it, it isn't data",
      "description": "Every value AI extracts is checked against the respondent's own words. Backed values are saved with their source; unbacked ones are discarded and the question is asked again. Every number in your results traces back to a quote.",
      "bullets": [
        "Every value carries the quote that backs it",
        "Unbacked values are discarded and asked again",
        "Nothing in your data is a guess"
      ],
      "demo": {
        "label": "Evidence-based verification",
        "quoteLabel": "Respondent said",
        "quoteBefore": "Even with filters I couldn't compare teams, so ",
        "quoteHighlight": "I went back to the spreadsheet",
        "extractLabel": "AI extraction",
        "pass": {
          "field": "Blocking gap",
          "value": "No team compare / export"
        },
        "verifiedBadge": "Verified from quote",
        "fail": {
          "field": "Intent to return",
          "value": "None at all"
        },
        "noEvidenceBadge": "No evidence",
        "reask": "Just to confirm: if compare and export worked, would you try it again?"
      }
    },
    "document": {
      "eyebrow": "Document forms",
      "title": "Reads like a document, collects like a form",
      "description": "Consent forms, applications, intake sheets: when the layout matters, keep it. Paste the original text and AI rebuilds it as a fillable form, columns, page breaks, and all.",
      "bullets": [
        "Paste an existing document, get a working form",
        "Columns and page breaks stay where they were",
        "Korean privacy consent and address fields, built in"
      ],
      "demo": {
        "label": "Document form",
        "pasteChip": "Paste document → AI convert",
        "docTitle": "Research participation consent",
        "docIntro": "This study looks at remote-work wellbeing. Please review the fields below and confirm your consent.",
        "fieldName": "Full name",
        "fieldEmail": "Email",
        "fieldOrg": "Organization",
        "consent": "I agree to the collection of personal data and to participate in this study",
        "layoutChip": "2 fields per row",
        "pageChip": "Page 1 of 2",
        "inlineChip": "Inline field in body"
      }
    },
    "platform": {
      "eyebrow": "Form builder",
      "title": "All of it stands on a serious form builder",
      "description": "Draft a survey from a single sentence, then shape it with branching, answer piping, and calculated fields. Send it as conversational, classic, or document.",
      "bullets": [
        "One sentence drafts your survey",
        "Branching, piping, and calculations come standard",
        "One survey, three ways to send it"
      ],
      "pillars": {
        "builder": {
          "title": "A complete builder",
          "desc": "Field types, branching, calculations, piping."
        },
        "render": {
          "title": "Three views",
          "desc": "Conversational, classic, and document from one survey."
        },
        "logic": {
          "title": "Research flow",
          "desc": "Scales, screen-outs, and branching in one place."
        }
      }
    },
    "builder": {
      "demo": {
        "label": "AI generation + logic",
        "prompt": "Draft a remote-work wellbeing survey",
        "generating": "Generating…",
        "blocks": {
          "b1": "How many remote days do you work per week?",
          "b2": "How would you rate work stress?",
          "b3": "Which support helped the most?",
          "b4": "{{name}}, can you join a follow-up interview?"
        },
        "logicChip": "Show when \"Yes\"",
        "pipingChip": "Answer piping",
        "pipingResolved": "Sujin, can you join a follow-up interview?",
        "typesTitle": "Key field types",
        "types": {
          "t1": "Short text",
          "t2": "Long text",
          "t3": "Multiple choice",
          "t4": "Rating",
          "t5": "Date",
          "t6": "Calculated field"
        }
      }
    },
    "research": {
      "eyebrow": "Research analytics",
      "title": "Where collection ends, analysis begins",
      "description": "Weighted crosstabs, quotas and screen-outs, qualitative coding for open answers: it all happens inside the product. When it's time to publish, export to SPSS, a codebook, or a deidentified CSV.",
      "bullets": [
        "Read results in weighted crosstabs",
        "Manage your sample with quotas and quality signals",
        "Export to SPSS, codebook, or deidentified CSV"
      ],
      "demo": {
        "label": "Research toolkit",
        "crosstabTitle": "Crosstab",
        "crosstabRow": "Role",
        "crosstabCol": "NPS band",
        "quotaTitle": "Quota fill",
        "quota": {
          "q1": {
            "label": "20s",
            "value": "100%"
          },
          "q2": {
            "label": "30s",
            "value": "86%"
          },
          "q3": {
            "label": "40+",
            "value": "62%"
          }
        },
        "codingTitle": "Qualitative coding",
        "codingQuote": "I couldn't compare, so I went back to the sheet",
        "codes": {
          "c1": "No compare",
          "c2": "No export",
          "c3": "Learning cost"
        },
        "exportsTitle": "Research exports",
        "exports": {
          "e1": "SPSS (.sav)",
          "e2": "Codebook",
          "e3": "Deidentified CSV"
        }
      }
    },
    "cta": {
      "title": "Start your next study with an interview",
      "subtitle": "Free to start. Your data stays yours, always.",
      "button": "Start for free"
    },
    "footer": {
      "apiDocs": "API & MCP docs"
    }
  },
  "auth": {
    "login": "Log in",
    "signup": "Sign up",
    "email": "Email",
    "password": "Password",
    "passwordHint": "12+ characters",
    "showPassword": "Show password",
    "hidePassword": "Hide password",
    "name": "Name",
    "submitLogin": "Log in",
    "submitSignup": "Create account",
    "noAccount": "No account?",
    "haveAccount": "Already have an account?",
    "errorInvalidCredentials": "Invalid email or password.",
    "errorMissingName": "Enter your name.",
    "errorInvalidEmail": "Enter a valid email address.",
    "errorWeakPassword": "Use a password with 8 or more characters.",
    "errorEmailTaken": "That email is already in use. Try logging in instead.",
    "errorNetwork": "Could not reach the auth server. Check your connection and try again.",
    "errorSignupFailed": "Could not create account. Please try again.",
    "errorInviteInvalid": "The invite link is expired or has already been used.",
    "errorWorkspaceInviteEmailMismatch": "Use the email address that received this workspace invitation.",
    "errorRateLimited": "Too many attempts. Wait a minute and try again.",
    "errorServer": "Something went wrong on our side. Please try again in a moment.",
    "forgotPassword": "Forgot your password?",
    "forgotPasswordBody": "Enter your email and we'll send a reset link if the account exists.",
    "backToLogin": "Back to login",
    "resetSuccess": "Password changed. Log in with your new password.",
    "resetRequestTitle": "Reset password",
    "resetRequestIntro": "Enter your account email. If it exists, we'll send a reset link.",
    "resetRequestSubmit": "Send reset link",
    "resetRequestSentTitle": "Check your email",
    "resetRequestSentBody": "If that email exists, a reset link is on its way.",
    "resetRequestFailed": "Could not send a reset link. Please try again.",
    "resetPasswordTitle": "Choose a new password",
    "resetPasswordIntro": "Use 8 or more characters for your new password.",
    "resetPasswordSubmit": "Change password",
    "resetTokenInvalid": "This reset link is invalid or expired. Request a new link.",
    "resetRequestNewLink": "Request a new reset link",
    "resetFailed": "Could not change the password. Request a new reset link and try again.",
    "signupClosedTitle": "Sign-ups are closed",
    "signupClosedBody": "New account registration is currently disabled. Please contact an operator if you need access.",
    "signupInviteInvalid": "This invite link is expired or has already been used. Ask an operator for a new link."
  },
  "nav": {
    "dashboard": "Dashboard",
    "logout": "Log out",
    "logoutError": "Couldn't sign out. Please try again.",
    "admin": "Admin",
    "menu": "Menu",
    "primary": "Primary navigation",
    "skipToContent": "Skip to content",
    "switchWorkspace": "Switch workspace",
    "createWorkspace": "Create workspace",
    "createWorkspaceTitle": "Create a workspace",
    "createWorkspaceNameLabel": "Workspace name",
    "createWorkspaceNameHint": "Visible to members. You can rename it later.",
    "createWorkspaceSubmit": "Create",
    "createWorkspaceCancel": "Cancel",
    "createWorkspaceInvalidName": "Enter a name between 1 and 100 characters."
  },
  "settingsNav": {
    "account": "Account",
    "workspace": "Workspace"
  },
  "accountSettings": {
    "title": "Account settings",
    "intro": "Manage your profile and password for this form·vee account.",
    "profileTitle": "Profile",
    "languageTitle": "Language",
    "languageBody": "Choose the language for the app interface.",
    "nameLabel": "Display name",
    "saveProfile": "Save profile",
    "dangerTitle": "Danger zone",
    "dangerBody": "Deleting your account is permanent. Workspaces where you are the only member are deleted along with their forms and responses.",
    "deleteAccount": "Delete account",
    "deleteConfirmTitle": "Delete this account?",
    "deleteConfirmBody": "This cannot be undone. Workspaces where you are the only member — including their forms and all collected responses — will be permanently deleted. Enter your password to confirm.",
    "deleteCancel": "Cancel",
    "deleteConfirmCta": "Permanently delete",
    "deleting": "Deleting…",
    "passwordTitle": "Password",
    "currentPassword": "Current password",
    "newPassword": "New password",
    "confirmPassword": "Confirm new password",
    "savePassword": "Change password",
    "saving": "Saving…",
    "profileSaved": "Profile updated.",
    "passwordSaved": "Password changed.",
    "emailTitle": "Email",
    "emailBody": "Change the email you sign in with. A verification link is sent to the new address.",
    "newEmailLabel": "New email",
    "emailSubmit": "Change email",
    "emailChanged": "Check the new address for a verification link before the email changes. (If the address is already in use, nothing changes.)",
    "errors": {
      "owner_blocked": "You own shared workspaces with other members: {{names}}. Transfer ownership or remove the other members first.",
      "delete_failed": "Couldn't delete the account. Please try again.",
      "invalid_name": "Enter a display name between 1 and 100 characters.",
      "missing_password": "Fill in all password fields.",
      "password_mismatch": "The new passwords do not match.",
      "weak_password": "Use a password with 12 or more characters.",
      "invalid_current": "The current password is incorrect.",
      "password_failed": "Could not change the password. Try again.",
      "invalid_email": "Enter a valid email address.",
      "email_change_failed": "Couldn't change the email. Please try again.",
      "invalid_intent": "Unknown account action."
    }
  },
  "workspaceSettings": {
    "title": "Workspace settings",
    "intro": "Manage this workspace's name, members, and roles.",
    "workspaceTitle": "Workspace",
    "nameLabel": "Workspace name",
    "saveWorkspace": "Save workspace",
    "saving": "Saving…",
    "aiQuotaTitle": "AI usage",
    "aiQuotaIntro": "Track this workspace's daily AI request and token budget before quota errors block generation or interviews.",
    "aiQuotaRequests": "AI requests today",
    "aiQuotaTokens": "AI tokens today",
    "aiQuotaUsed": "{{used}} of {{limit}} used",
    "aiQuotaRemaining": "{{remaining}} remaining today",
    "aiQuotaDisabled": "Daily limit is disabled. {{used}} counted today.",
    "aiQuotaResets": "Resets {{date}}",
    "capabilitiesTitle": "Workspace capabilities",
    "capabilitiesIntro": "Enroll or decline authoring capabilities. Inherit follows the installation default. Active configuration remains visible even when a capability is declined.",
    "packDecisionHint": "A pack applies the same decision to its capabilities. You can override each capability afterward.",
    "packDecisionLabel": "Decision for {{pack}}",
    "capabilityDecisionLabel": "Decision for {{capability}}",
    "applyPack": "Apply pack",
    "updateCapability": "Update",
    "decisions": {
      "inherit": "Inherit",
      "enrolled": "Enrolled",
      "declined": "Declined"
    },
    "capabilityPacks": {
      "builder": "Advanced builder",
      "design-plus": "Design plus",
      "distribution-plus": "Distribution plus",
      "integrations": "Integrations",
      "insights": "Insights",
      "research-design": "Research design",
      "research-analysis": "Research analysis",
      "sampling": "Sampling",
      "data-quality": "Data quality",
      "compliance": "Compliance",
      "collaboration": "Collaboration"
    },
    "inviteTitle": "Invite members",
    "inviteIntro": "Invite teammates by email and choose their workspace role.",
    "inviteEmail": "Email",
    "inviteRole": "Role",
    "sendInvite": "Send invite",
    "inviting": "Sending…",
    "pendingInviteCount": "{{count}} pending invite",
    "pendingInviteCount_plural": "{{count}} pending invites",
    "inviteExpires": "Expires {{date}}",
    "inviteLinkLabel": "Invitation link for {{email}}",
    "copyInvite": "Copy",
    "inviteCopied": "Copied",
    "cancelInvite": "Cancel",
    "confirmCancelInvite": "Click again to cancel",
    "cancelingInvite": "Canceling…",
    "membersTitle": "Members",
    "memberCount": "{{count}} member",
    "memberCount_plural": "{{count}} members",
    "you": "You",
    "joined": "Joined {{date}}",
    "roleLabel": "Role for {{name}}",
    "updateRole": "Update",
    "remove": "Remove",
    "confirmRemove": "Click again to remove",
    "removing": "Removing…",
    "roles": {
      "owner": "Owner",
      "admin": "Admin",
      "member": "Member"
    },
    "success": {
      "workspace": "Workspace updated.",
      "role": "Member role updated.",
      "remove": "Member removed.",
      "invite": "Invitation sent.",
      "cancelInvite": "Invitation canceled.",
      "capability": "Capability decision updated.",
      "capabilityPack": "Capability pack updated."
    },
    "errors": {
      "invalid_name": "Enter a workspace name between 1 and 100 characters.",
      "invalid_role": "Choose a valid workspace role.",
      "invalid_email": "Enter a valid email address.",
      "already_member": "That user is already a member of this workspace.",
      "invite_failed": "Could not send the invitation. Try again.",
      "cancel_invite_failed": "Could not cancel that invitation. Try again.",
      "invalid_capability": "Choose a valid capability decision.",
      "member_not_found": "That member is no longer in this workspace.",
      "self_forbidden": "You cannot change or remove your own workspace access here.",
      "last_owner": "A workspace must keep at least one owner.",
      "owner_role_required": "Only owners can grant or change owner access.",
      "invalid_intent": "Unknown workspace action."
    }
  },
  "workspaceInvitation": {
    "title": "Workspace invitation",
    "intro": "{{inviter}} invited you to join {{workspace}}.",
    "invalid": "This workspace invitation is expired or has already been used.",
    "workspace": "Workspace",
    "email": "Invited email",
    "role": "Role",
    "expires": "Expires",
    "createAccount": "Create account",
    "login": "Log in",
    "accept": "Accept invitation",
    "accepting": "Accepting…",
    "wrongAccount": "You are logged in as {{email}}. Log out and use the invited email address.",
    "switchAccount": "Log out and switch account",
    "errors": {
      "invalid_invitation": "This workspace invitation is expired or has already been used.",
      "not_recipient": "This invitation belongs to another email address.",
      "accept_failed": "Could not accept the invitation. Try again."
    }
  },
  "apiKeys": {
    "navTitle": "API keys",
    "title": "API keys",
    "intro": "Create API keys to access form·vee programmatically. Each key is scoped and tied to this workspace. Authenticate requests with the Authorization: Bearer <key> header.",
    "docsLink": "Open the API & MCP docs",
    "createTitle": "Create a new key",
    "nameLabel": "Name",
    "namePlaceholder": "e.g. CI pipeline",
    "principalLabel": "Act as workspace member",
    "principalHint": "Form-level permissions are evaluated for this member. The issuer remains accountable for the key.",
    "principal": "Acts as",
    "scopesLabel": "Scopes",
    "scopesRead": "Read",
    "scopesWrite": "Write",
    "scopesSelectAll": "Select all",
    "scopesClearAll": "Clear all",
    "scopeDesc": {
      "forms:read": "Read forms and their definitions.",
      "forms:write": "Create and edit forms.",
      "forms:publish": "Publish form versions.",
      "responses:read": "Read submitted responses.",
      "responses:partial:read": "Read in-progress partial response snapshots.",
      "assets:write": "Upload authoring images for forms.",
      "files:read": "Download uploaded response files."
    },
    "expiryLabel": "Expiry",
    "expiryNever": "Never expires",
    "expiry30d": "30 days",
    "expiry90d": "90 days",
    "expiry1y": "1 year",
    "createButton": "Create key",
    "creating": "Creating…",
    "createError": "Could not create the key. Pick a name and at least one scope.",
    "createdTitle": "Key created",
    "createdWarning": "Copy this key now. For security, it won't be shown again.",
    "copy": "Copy",
    "copied": "Copied to clipboard.",
    "copyError": "Could not copy.",
    "done": "Done",
    "listTitle": "Your keys",
    "empty": "No API keys yet.",
    "revoked": "Revoked",
    "expired": "Expired",
    "lastUsed": "Last used",
    "expires": "Expires",
    "revokeButton": "Revoke",
    "revokeError": "Could not revoke the key.",
    "revokeTitle": "Revoke this API key?",
    "revokeBody": "“{{name}}” will be permanently revoked. Any scripts or integrations using this key will stop working immediately. This can't be undone.",
    "confirmRevoke": "Revoke key",
    "revoking": "Revoking…",
    "revokeSuccess": "Key revoked.",
    "cancel": "Cancel"
  },
  "dashboard": {
    "title": "Forms",
    "searchPlaceholder": "Search forms…",
    "search": "Search",
    "statusFilterLabel": "Filter forms by status",
    "filterAll": "All",
    "noSearchResults": "No forms match your search or filter.",
    "clearSearch": "Clear search",
    "empty": "No forms yet.",
    "create": "New form",
    "creating": "Creating…",
    "createDocument": "New document",
    "creatingDocument": "Creating…",
    "createInterview": "New interview",
    "creatingInterview": "Creating…",
    "purposePicker": {
      "title": "What are you creating?",
      "description": "Your choice seeds a suggested authoring view for this form only. It never changes workspace enrollment or your global preference.",
      "items": {
        "registration": {
          "title": "Registration",
          "description": "A focused signup or application form",
          "creating": "Creating…"
        },
        "survey": {
          "title": "Survey",
          "description": "Questions and structured feedback",
          "creating": "Creating…"
        },
        "research_study": {
          "title": "Research study",
          "description": "Advanced design and analysis controls",
          "creating": "Creating…"
        },
        "ai_interview": {
          "title": "AI interview",
          "description": "An adaptive, evidence-backed conversation",
          "creating": "Creating…"
        }
      }
    },
    "delete": "Delete",
    "deleting": "Deleting…",
    "deleted": "Form deleted.",
    "deleteError": "Could not delete the form.",
    "restoreError": "Could not restore the form.",
    "confirmDelete": "Confirm delete?",
    "confirmDeleteAria": "Confirm deleting {{title}}",
    "deleteTitle": "Delete this form?",
    "deleteBody": "“{{title}}” and all of its responses will be deleted. This can’t be undone.",
    "cancel": "Cancel",
    "untitled": "Untitled form",
    "copySuffix": "(copy)",
    "responses": "responses",
    "updated": "Updated",
    "aiTitle": "Create with AI",
    "aiPlaceholder": "Describe your survey in one sentence…",
    "aiGenerate": "Generate",
    "aiConvert": "Convert",
    "aiPending": "Generating…",
    "aiError": "Could not generate the form. Try again.",
    "aiRateLimited": "Too many AI requests. Please wait a moment.",
    "aiQuotaExceeded": "Daily AI quota is used up. Check AI usage in Workspace settings.",
    "aiQuotaExceededWithRetry": "Daily AI quota is used up. Try again {{when}}, or check AI usage in Workspace settings.",
    "aiUnconfigured": "AI is not configured on the server.",
    "aiGenerationFailed": "AI couldn't generate a form from that. Try rephrasing.",
    "aiMinHint": "Add a little more detail (at least 4 characters).",
    "aiInputModeLabel": "AI input method",
    "aiInputModePrompt": "Describe",
    "aiInputModeImport": "Paste a form",
    "aiKindLabel": "AI creation type",
    "aiKindForm": "Form",
    "aiKindDocument": "Document form",
    "aiKindInterview": "AI interview",
    "aiImportLabel": "Convert an existing form",
    "aiImportPlaceholder": "Paste the text from an application, consent form, survey, or other document…",
    "aiImportHint": "Paste at least 4 characters (up to 50,000). Headings, prose, blanks, and questions are preserved where possible.",
    "aiImportSecurityHint": "Pasted text is treated only as source material. Review the generated draft before publishing.",
    "aiClassicHint": "AI creates a form here.",
    "aiDocumentHint": "Creates a readable document flow with a title, sections, guidance, and embedded questions.",
    "aiInterviewHint": "Creates an AI interview draft from your brief. You can review fields and goals before publishing.",
    "aiInterviewTemplateLink": "For conversational research, start from an interview template.",
    "creationToolsTitle": "Create another form",
    "creationToolsIntro": "Use AI or a template when you are ready to start something new.",
    "templateTitle": "Start from a template",
    "templateIntro": "Pick a proven structure, then edit the draft before publishing.",
    "templateMeta_one": "{{count}} question · {{minutes}} min",
    "templateMeta_other": "{{count}} questions · {{minutes}} min",
    "templateInterviewMeta_one": "{{count}} structured field · {{minutes}} min",
    "templateInterviewMeta_other": "{{count}} structured fields · {{minutes}} min",
    "templateInterviewBadge": "AI interview",
    "templateDocumentBadge": "Document form",
    "templatePreview": "Preview",
    "templatePreviewFields": "{{count}} structured fields",
    "templatePreviewObjectives": "Interview objectives",
    "templatePreviewMore_one": "+{{count}} more",
    "templatePreviewMore_other": "+{{count}} more",
    "templateUse": "Use template",
    "templateCreating": "Creating…",
    "templates": {
      "customerFeedback": {
        "title": "Customer feedback",
        "description": "Collect satisfaction, NPS, comments, and optional follow-up contact.",
        "category": "Feedback",
        "blocks": {
          "welcome": "Help us improve your experience",
          "satisfaction": "How satisfied are you with your experience?",
          "satisfactionLow": "Not satisfied",
          "satisfactionHigh": "Very satisfied",
          "reason": "What is the main reason for your score?",
          "recommend": "How likely are you to recommend us?",
          "recommendHint": "0 means not likely, 10 means extremely likely.",
          "recommendLow": "Not likely",
          "recommendHigh": "Extremely likely",
          "email": "Email address",
          "emailHint": "Optional, only if you want us to follow up."
        }
      },
      "leadCapture": {
        "title": "Lead capture",
        "description": "Qualify inbound interest with contact details, team size, and goals.",
        "category": "Sales",
        "blocks": {
          "name": "What is your name?",
          "namePlaceholder": "Jane Smith",
          "email": "What is your work email?",
          "company": "Company",
          "companyPlaceholder": "Company name",
          "teamSize": "Team size",
          "goal": "What are you trying to improve?"
        }
      },
      "eventRsvp": {
        "title": "Event RSVP",
        "description": "Register attendees, session interests, and event-day notes.",
        "category": "Events",
        "blocks": {
          "name": "Full name",
          "email": "Email address",
          "attendance": "Will you attend?",
          "attendYes": "Yes",
          "attendMaybe": "Maybe",
          "attendNo": "No",
          "sessions": "Which sessions are you interested in?",
          "keynote": "Keynote",
          "workshop": "Workshop",
          "networking": "Networking",
          "notes": "Dietary needs or accessibility notes"
        }
      },
      "contactInquiry": {
        "title": "Contact inquiry",
        "description": "Route sales, support, partnership, and general inquiries with a short branch.",
        "category": "Inquiries",
        "blocks": {
          "type": "What can we help with?",
          "sales": "Sales or pricing",
          "support": "Product support",
          "partner": "Partnership",
          "other": "Something else",
          "name": "Your name",
          "email": "Email address",
          "company": "Company",
          "companyPlaceholder": "Company name",
          "message": "How can we help?"
        }
      },
      "teamPulse": {
        "title": "Team pulse",
        "description": "Check energy, clarity, support, and one open comment in a conversational flow.",
        "category": "Team",
        "blocks": {
          "welcome": "A quick pulse check for the team",
          "energy": "How is your energy this week?",
          "clarity": "How clear are your current priorities?",
          "support": "How supported do you feel by the team?",
          "comment": "What would make next week better?",
          "low": "Low",
          "high": "High"
        }
      },
      "simpleDocumentForm": {
        "title": "Simple document form",
        "description": "Start with a clean page, a short introduction, and three essential questions.",
        "category": "Document forms",
        "blocks": {
          "intro": "Share a few details and we will get back to you.",
          "name": "Your name",
          "email": "Email address",
          "request": "How can we help?"
        }
      },
      "koreanEventApplication": {
        "title": "Event and meetup application",
        "description": "A formal Korean-style participation application with contact details and privacy consent.",
        "category": "Korean documents",
        "blocks": {
          "intro": "Please share your contact details and participation status.",
          "name": "Name",
          "phone": "Mobile phone",
          "attendance": "Participation status",
          "attend": "I will participate",
          "maybe": "I will confirm later",
          "notes": "Notes for the organizer",
          "privacyLabel": "Consent to collect and use personal information",
          "privacyItemName": "Name",
          "privacyItemContact": "Mobile phone number",
          "privacyPurpose": "Participant registration, event notices, and attendance management",
          "privacyRetention": "Until 30 days after the event ends",
          "privacyRefusal": "You may refuse consent, but registration cannot be completed without the required information."
        }
      },
      "koreanSeminarRegistration": {
        "title": "Seminar and lecture registration",
        "description": "A document-style registration form for session selection, attendee details, and advance questions.",
        "category": "Korean documents",
        "blocks": {
          "intro": "Choose a session and leave any questions you would like the speaker to address.",
          "name": "Name",
          "email": "Email address",
          "organization": "Organization or affiliation",
          "session": "Preferred session",
          "morning": "Morning session",
          "afternoon": "Afternoon session",
          "allDay": "Full day",
          "question": "Questions you would like addressed",
          "privacyLabel": "Consent to collect and use personal information",
          "privacyItemName": "Name and affiliation",
          "privacyItemContact": "Email address",
          "privacyPurpose": "Registration confirmation, seminar notices, and attendance management",
          "privacyRetention": "Until 30 days after the seminar ends",
          "privacyRefusal": "You may refuse consent, but registration cannot be completed without the required information."
        }
      },
      "koreanJobApplication": {
        "title": "Job application",
        "description": "A concise document-style application covering contact details, role, experience, and portfolio.",
        "category": "Korean documents",
        "blocks": {
          "intro": "Tell us how to contact you and summarize the experience relevant to this role.",
          "name": "Applicant name",
          "email": "Email address",
          "phone": "Mobile phone",
          "position": "Position applied for",
          "experience": "Relevant experience and motivation",
          "portfolio": "Portfolio or profile URL",
          "privacyLabel": "Consent to collect and use personal information",
          "privacyItemIdentity": "Name and contact details",
          "privacyItemApplication": "Application answers and portfolio URL",
          "privacyPurpose": "Applicant review, interview coordination, and hiring communication",
          "privacyRetention": "Until 180 days after the hiring process ends",
          "privacyRefusal": "You may refuse consent, but your application cannot be reviewed without the required information."
        }
      },
      "koreanClubMembership": {
        "title": "Club membership application",
        "description": "A formal membership application for contact details, interests, and motivation.",
        "category": "Korean documents",
        "blocks": {
          "intro": "Share your contact details, interests, and reason for joining.",
          "name": "Name",
          "phone": "Mobile phone",
          "email": "Email address",
          "interest": "Activities you are interested in",
          "regularMeeting": "Regular meetings",
          "project": "Projects and study groups",
          "networking": "Networking and social events",
          "motivation": "Why would you like to join?",
          "privacyLabel": "Consent to collect and use personal information",
          "privacyItemName": "Name",
          "privacyItemContact": "Mobile phone number and email address",
          "privacyPurpose": "Membership review, activity notices, and member communication",
          "privacyRetention": "Until 30 days after membership ends",
          "privacyRefusal": "You may refuse consent, but membership review cannot proceed without the required information."
        }
      },
      "koreanDocumentSatisfaction": {
        "title": "Document-style satisfaction survey",
        "description": "A calm, paper-like survey for overall satisfaction, strengths, recommendation, and comments.",
        "category": "Korean documents",
        "blocks": {
          "intro": "Tell us what worked well and what we can improve.",
          "overall": "How satisfied are you overall?",
          "low": "Very dissatisfied",
          "high": "Very satisfied",
          "strongestArea": "Which area was most satisfactory?",
          "content": "Content or program",
          "process": "Registration and process",
          "support": "Staff support",
          "other": "Other",
          "recommend": "How likely are you to recommend this experience?",
          "recommendLow": "Not likely",
          "recommendHigh": "Extremely likely",
          "comment": "Please share any additional comments or suggestions."
        }
      },
      "koreanDeliveryRequest": {
        "title": "Delivery and shipping request",
        "description": "Collect a Korean address, contact details, and privacy consent on a document page.",
        "category": "Korean documents",
        "blocks": {
          "intro": "Enter the delivery address and a contact number so we can ship your order.",
          "name": "Recipient name",
          "phone": "Mobile phone",
          "address": "Delivery address",
          "notes": "Delivery notes",
          "privacyLabel": "Consent to collect and use personal information",
          "privacyItemName": "Name and mobile phone number",
          "privacyItemAddress": "Delivery address",
          "privacyPurpose": "Order fulfillment and delivery coordination",
          "privacyRetention": "Until 90 days after delivery is completed",
          "privacyRefusal": "You may refuse consent, but delivery cannot proceed without the required information."
        }
      },
      "documentInlinePledge": {
        "title": "Inline fill-in-the-blank pledge",
        "description": "A short document that mixes prose with inline name and date fields.",
        "category": "Document forms",
        "blocks": {
          "intro": "Complete the blanks in the statement below.",
          "pledge": "I, ",
          "pledgeMid": ", confirm that I have read this notice on ",
          "pledgeEnd": ".",
          "name": "Full name",
          "date": "Date",
          "confirm": "I agree to the terms above"
        }
      },
      "customerDiscovery": {
        "title": "Customer discovery interview",
        "description": "Understand the role, current workflow, pain severity, and unmet needs behind a problem.",
        "category": "Research",
        "goal": "Discover what problem the respondent is trying to solve, how they handle it today, and what would make a better solution compelling.",
        "greeting": "Thanks for taking the time. I will ask a few short questions about your current workflow and what feels painful.",
        "closing": "Thanks, that gives us useful context for the next product decisions.",
        "personaName": "Research partner",
        "personaTone": "Warm, curious, concise, and careful not to lead the respondent.",
        "fields": {
          "role": "Respondent role",
          "workflow": "Current workflow",
          "painSeverity": "Pain severity",
          "buyingStage": "Evaluation stage",
          "stageExploring": "Just exploring",
          "stageEvaluating": "Actively evaluating",
          "stageSwitching": "Trying to switch",
          "stageNotPlanned": "No change planned",
          "unmetNeed": "Most important unmet need"
        },
        "goals": {
          "unmetNeeds": "Unmet needs",
          "unmetNeedsDescription": "Identify repeated gaps, workarounds, and outcomes the respondent cannot easily achieve today.",
          "decisionCriteria": "Decision criteria",
          "decisionCriteriaDescription": "Capture what would make the respondent consider or reject a new solution."
        }
      },
      "churnExit": {
        "title": "Churn exit interview",
        "description": "Learn why someone left, what replaced you, and what could bring them back.",
        "category": "Research",
        "goal": "Understand the respondent's main reason for leaving, the alternative they chose, and the conditions that could make a return realistic.",
        "greeting": "Thanks for being candid. I will keep this short and focus on what changed and what we can learn.",
        "closing": "Thank you for the honest feedback. It will help the team prioritize the right fixes.",
        "personaName": "Exit interviewer",
        "personaTone": "Respectful, neutral, and non-defensive. Do not pressure the respondent to justify their decision.",
        "fields": {
          "primaryReason": "Primary reason for leaving",
          "price": "Price or budget",
          "missingFeature": "Missing feature",
          "tooComplex": "Too complex",
          "competitor": "Moved to a competitor",
          "noNeed": "No longer needed",
          "replacement": "Replacement or workaround",
          "returnCondition": "What could make them return",
          "previousSatisfaction": "Previous satisfaction"
        },
        "goals": {
          "retentionLevers": "Retention levers",
          "retentionLeversDescription": "Find concrete product, pricing, support, or onboarding changes that could reduce similar churn.",
          "competitiveContext": "Competitive context",
          "competitiveContextDescription": "Understand whether a competitor, internal workaround, or no-solution state replaced the product."
        }
      },
      "usabilityFeedback": {
        "title": "Usability feedback interview",
        "description": "Probe what a respondent tried to do, where they got stuck, and how expectations differed from reality.",
        "category": "Product",
        "goal": "Understand a recent product task, the point of friction, and the expectation gap that made the experience harder than it should be.",
        "greeting": "Thanks for walking through your experience. I will ask about the task you tried and where the flow got confusing.",
        "closing": "Thanks, this helps us improve the product experience.",
        "personaName": "Usability researcher",
        "personaTone": "Clear, patient, and specific. Ask about observed behavior before opinions.",
        "fields": {
          "taskGoal": "Task they wanted to complete",
          "blockedStep": "Where they got stuck",
          "expectedVsActual": "Expected vs. actual behavior",
          "difficulty": "Difficulty",
          "wouldTryAgain": "Would try again"
        },
        "goals": {
          "frictionPoints": "Friction points",
          "frictionPointsDescription": "Identify confusing steps, missing feedback, or interface details that slowed the respondent down.",
          "expectationGap": "Expectation gap",
          "expectationGapDescription": "Capture what the respondent expected the product to do at the moment of friction."
        }
      }
    },
    "duplicate": "Duplicate",
    "duplicated": "Form duplicated",
    "duplicateError": "Could not duplicate the form",
    "openForm": "Open",
    "viewResponses": "Responses",
    "viewConversations": "Conversations",
    "conversations": "conversations",
    "documentBadge": "Document",
    "classicBadge": "Classic",
    "conversationalBadge": "Conversational",
    "interviewBadge": "Interview",
    "loadMore": "Load more",
    "status": {
      "draft": "Draft",
      "published": "Public"
    },
    "emptyStartTitle": "Create your first form",
    "emptyStartBody": "Start from a proven template, then adjust the draft before publishing.",
    "kindFormHint": "Form: ask fixed questions and collect structured answers. Best for surveys, signups, RSVPs, and inquiries.",
    "kindDocumentHint": "Document form: combine headings, guidance, and questions in one readable flow. Best for applications, agreements, and detailed intake.",
    "kindInterviewHint": "AI interview: AI converses with each respondent to uncover the why. Best for discovery, churn, and deep feedback.",
    "kindRule": "Same questions at scale → Form · Deep reasons from a few → Interview",
    "emptyAiTitle": "Draft a form with AI",
    "emptyAiBody": "Describe the outcome you want. You can review and edit every question before publishing.",
    "emptyBlankTitle": "Start from a blank form",
    "emptyBlankBody": "Use the editor when you already know the questions you want to ask.",
    "emptyInterviewTitle": "Run an AI interview",
    "emptyInterviewBody": "Let respondents answer through conversation, then structure the results into fields.",
    "aiExampleCustomer": "Customer satisfaction survey with NPS, rating, and one open comment",
    "aiExampleEvent": "Event registration form with contact details, session choice, and dietary needs",
    "aiExampleHiring": "Candidate screening form for a frontend engineer role",
    "aiPendingStructure": "Building the question structure…",
    "aiPendingChoices": "Organizing choices and fields…",
    "aiPendingValidate": "Validating the draft…",
    "actionsMenu": "Actions for {{title}}",
    "actionsFor": "{{action}} for {{title}}"
  },
  "preview": {
    "title": "Preview",
    "intro": "Respondent view of the saved draft. Responses are not recorded.",
    "draftBadge": "Draft preview",
    "viewportDesktop": "Desktop",
    "viewportMobile": "Mobile"
  },
  "tabs": {
    "navigationLabel": "Form workspace",
    "build": "Build",
    "edit": "Edit",
    "design": "Design",
    "settings": "Settings",
    "responses": "Responses",
    "results": "Results",
    "research": "Research",
    "conversations": "AI interview",
    "funnel": "Funnel",
    "share": "Share",
    "authoringView": "Authoring view",
    "authoringViews": {
      "simple": "Simple",
      "advanced": "Advanced"
    }
  },
  "formShell": {
    "readOnly": "Read-only form structure",
    "noFields": "No fields yet.",
    "untitledField": "Untitled field",
    "required": "Required",
    "theme": "Theme",
    "customTheme": "Custom theme",
    "primaryColor": "Primary color",
    "backgroundImage": "Background image",
    "none": "None",
    "shareReadOnly": "You can view and copy the public link and QR code. Distribution settings require edit access."
  },
  "researchHub": {
    "title": "Research",
    "description": "Design the study, monitor sampling and quality, and review governance records without duplicating their canonical settings.",
    "designTitle": "Research design",
    "designDescription": "Scales, quizzes, and randomized presentation are part of the same draft as Build and use the same revision conflict protection.",
    "designUnavailable": "No enrolled research-design capability is currently editable.",
    "openBuildReadiness": "Build and publish readiness",
    "interviewDesignTitle": "Interview research design",
    "interviewDesignDescription": "Methodology, rubrics, member checks, and codebooks remain in Build so the interview definition has one authoring surface.",
    "openInterviewBuild": "Open interview Build",
    "samplingTitle": "Sampling",
    "samplingDescription": "Invitation progress is shown here. Contact, invitation, and reminder changes remain in Share Audience.",
    "openAudience": "Open Share Audience",
    "invited": "Invited",
    "claimed": "Claimed",
    "responseRate": "Response rate",
    "qualityTitle": "Data quality",
    "qualityDescription": "Review automated signals and reversible analysis exclusions. Respondent tracking remains an explicit setting.",
    "openFlagged": "View flagged responses",
    "openTracking": "Tracking settings",
    "responses": "Responses",
    "flagged": "Flagged",
    "excluded": "Excluded",
    "tracking": "Respondent tracking",
    "trackingStatus": {
      "off": "Off",
      "estimated": "Estimated",
      "anonymous": "Anonymous"
    },
    "qualityJobs": "Quality jobs: {{succeeded}} succeeded, {{pending}} pending, {{failed}} failed ({{total}} total).",
    "recordsTitle": "Governance records",
    "recordsDescription": "Compliance execution and immutable publication history are visible here. Disclosure configuration remains in Settings.",
    "exportRecord": "Export processing record",
    "openCompliance": "Compliance settings",
    "versions": "Published versions",
    "withdrawals": "Withdrawals",
    "retentionPurges": "Retention purges",
    "recordExports": "Record exports"
  },
  "settingsForm": {
    "title": "Form settings",
    "description": "Manage collection, notifications, integrations, language, access, compliance, and advanced behavior.",
    "workspaceIntegrations": "Workspace API and MCP",
    "workspaceIntegrationsHint": "API keys and MCP access are managed at the workspace boundary.",
    "openApiKeys": "Open API keys",
    "movedFromShare": "Notifications, integrations, language, access, and compliance moved to Settings.",
    "movedFromDesign": "Collection and advanced controls moved to Settings.",
    "openSettings": "Open settings",
    "respondentIdTitle": "Respondent continuity",
    "respondentIdDisclosure": "When confirmed, this form issues a probabilistic continuity identifier retained for up to 90 days. It is not authenticated identity and consumes personal-data storage.",
    "respondentIdWorkspaceDisabled": "A workspace manager must enroll Data quality before this form can confirm respondent continuity.",
    "respondentIdConfirm": "Confirm disclosure and enable",
    "respondentIdRemove": "Disable respondent continuity"
  },
  "funnel": {
    "window": "Last {{days}}d",
    "note": "Aggregate completion and drop-off for this interview — counts only, no individual responses.",
    "empty": "No interview sessions in this window yet.",
    "started": "Started",
    "completed": "Completed",
    "completionRate": "Completion rate",
    "abandoned": "Abandoned",
    "expired": "Expired",
    "blocked": "Blocked",
    "inProgress": "In progress",
    "statusBreakdown": "Outcome breakdown",
    "avgExchanges": "Avg turns",
    "avgCompleted": "Avg turns (completed)",
    "avgAbandoned": "Avg turns (dropped)",
    "turns": "turns",
    "completionReasons": "Why sessions completed",
    "dropoff": "Where drop-offs quit",
    "dropoffNote": "Turn count when abandoned or expired sessions stopped.",
    "turnBucket": "{{bucket}} turns",
    "noData": "No data.",
    "reason": {
      "objectives_satisfied": "Objectives met",
      "hard_exchange_limit": "Turn limit reached",
      "respondent_stop": "Respondent stopped",
      "safety_stop": "Safety stop",
      "no_collectable_items": "Nothing to collect"
    }
  },
  "interview": {
    "title": "AI interview",
    "enable": "Enable",
    "intro": "Keep the items below as your fields; the AI collects answers through conversation and structures them. When on, the public form runs as a chat.",
    "goal": "Interview goal *",
    "goalPlaceholder": "e.g. assess churn risk / qualify leads",
    "instruction": "Guidance (context & tone) *",
    "instructionPlaceholder": "Context for this interview, business info, how to steer the conversation",
    "depth": "Depth",
    "depthMinimal": "Minimal (fields only, no follow-ups)",
    "depthBalanced": "Balanced (2 follow-ups per field)",
    "depthThorough": "Thorough (4 follow-ups per field, deep interview)",
    "persona": "Persona (optional)",
    "personaPlaceholder": "e.g. a friendly recruiter",
    "allowEmergent": "Allow emergent extraction (structure goal-relevant info beyond defined fields)",
    "emergentScope": "Emergent extraction scope (optional)",
    "emergentScopePlaceholder": "e.g. price sensitivity, competitor evaluation, renewal intent",
    "knowledge": "Knowledge (optional) — basis for answering questions",
    "knowledgePlaceholder": "Product/service info, FAQ, etc. The AI answers only within this.",
    "opening": "Opening (optional)",
    "openingPlaceholder": "First greeting (AI generates if empty)",
    "closing": "Closing (optional)",
    "closingPlaceholder": "Completion message",
    "scopeBoundaries": "Off-limit topics (optional)",
    "scopeBoundariesPlaceholder": "e.g. medical/legal advice, personal data",
    "language": "Language (optional)",
    "languagePlaceholder": "e.g. Korean, Brazilian Portuguese",
    "languageHint": "Leave blank to auto-detect and mirror the respondent's language.",
    "promotionTitle": "Emergent insights → field promotion",
    "promoteAllAuto": "Add all auto candidates ({{count}})",
    "promoteAllConfirm": "Add {{count}} field(s) to the draft?",
    "promoteAllCancel": "Cancel",
    "autoBadge": "Auto-promote",
    "candidateMeta": "{{count}} · confidence {{pct}}%",
    "candidateExample": " · e.g. {{example}}",
    "addField": "Add as field",
    "promoted": "Added {{count}} field(s) to the draft (see the Edit tab).",
    "promotedNone": "Nothing added: {{count}} candidate(s) already exist or the 50-field limit was reached.",
    "promoteConflict": "Couldn't add the field: the draft changed in another tab. Please try again.",
    "promoteFailed": "Couldn't add the field. Please try again.",
    "sentimentPositive": "Positive",
    "sentimentNeutral": "Neutral",
    "sentimentNegative": "Negative",
    "noSummary": "No summary",
    "showTranscript": "Show transcript ({{count}})",
    "hideTranscript": "Hide transcript",
    "respondent": "Respondent",
    "ai": "AI",
    "disabled": "AI interview is disabled for this workspace.",
    "disabledHint": "A workspace admin can enable AI interviews in workspace settings.",
    "empty": "No completed AI interviews yet.",
    "emptyHint": "Share your form to start collecting AI interviews.",
    "emptyShareCta": "Share your form",
    "results": "Results",
    "analyticsTitle": "Response analysis",
    "backToEditor": "Back to form",
    "exportCsv": "Export CSV",
    "statResponses": "Completed",
    "statSummarized": "Summarized",
    "statSentiment": "Sentiment",
    "statAverage": "Average",
    "npsBreakdown": "Promoters {{promoters}} · Passives {{passives}} · Detractors {{detractors}}",
    "tabTranscript": "Transcript",
    "tabExtracted": "Extracted values",
    "tabQuotes": "Quote bank",
    "tabThemes": "Themes",
    "loadingTranscript": "Loading transcript…",
    "transcriptLoadError": "Could not load the transcript.",
    "emptyTranscript": "No transcript captured.",
    "emptyExtracted": "No extracted values yet.",
    "emptyQuotes": "No evidence quotes yet.",
    "emptyThemes": "No themes yet. If this conversation just finished, background analysis fills this in within a minute or two.",
    "themesPending": "Qualitative themes appear after background analysis completes.",
    "themesPendingReviewLink": "Review pending codes",
    "exportInsightsMarkdown": "Download insights (.md)",
    "liveInsights": "Live captured insights",
    "colField": "Field",
    "colValue": "Value",
    "colStatus": "Status",
    "colEvidence": "Evidence",
    "codeContext": "Context",
    "codeImpact": "Impact",
    "codeSeverity": "Severity",
    "aggregateTitle": "Aggregate analysis",
    "aggregateSegment": "Segment",
    "aggregateMetric": "Metric",
    "aggregateAvg": "avg",
    "tabFields": "Structured fields",
    "tabInsights": "Emergent insights",
    "tabQuality": "Interview quality",
    "fieldsSummary": "Confirmed {{resolved}} · Declined {{declined}} · Unresolved {{unresolved}}",
    "fieldNoValue": "No value",
    "statusExtracted": "Extracted",
    "statusInferred": "Inferred",
    "statusDeclined": "Declined",
    "statusSkipped": "Skipped",
    "statusInvalid": "Invalid",
    "statusContradictory": "Conflicting",
    "statusMissing": "Not collected",
    "statusUnknown": "Unknown",
    "statusNotApplicable": "Not applicable",
    "codeTypeTheme": "Theme",
    "codeTypePainPoint": "Pain point",
    "codeTypeEmotionalSignal": "Emotional signal",
    "codeTypeWorkaround": "Workaround",
    "codeTypeRevealedBehavior": "Revealed behavior",
    "codeTypeContradiction": "Contradiction",
    "qualityCompletionReason": "Completion reason",
    "reasonObjectivesSatisfied": "Objectives satisfied",
    "reasonHardExchangeLimit": "Exchange limit reached",
    "reasonRespondentStop": "Respondent stopped",
    "reasonSafetyStop": "Safety stop",
    "reasonNoCollectableItems": "Nothing left to collect",
    "reasonUnknown": "Unknown",
    "qualityQuestions": "Questions",
    "qualityFollowups": "Follow-ups",
    "qualityTurns": "Turns",
    "qualityRefusedFields": "Declined fields",
    "qualityUnresolvedFields": "Unresolved fields",
    "qualityConflicts": "{{count}} conflicts",
    "qualityWarnings": "{{count}} extraction warnings",
    "qualityNone": "None"
  },
  "results": {
    "viewLabel": "Result views",
    "views": {
      "summary": "Summary",
      "answers": "Answers",
      "flow": "Flow",
      "research": "Research analysis",
      "qualitative": "Qualitative",
      "partials": "Partial submissions"
    },
    "summaryEmpty": "There is no summary yet",
    "summaryEmptyDescription": "Summary metrics will appear after completed responses have analyzable values.",
    "unsupported": {
      "description": "This form type does not produce data for this result view.",
      "classic": {
        "summary": "Summary is unavailable",
        "answers": "Answers are unavailable",
        "flow": "Flow analysis is unavailable",
        "research": "Research analysis is unavailable",
        "qualitative": "Qualitative analysis is unavailable",
        "partials": "Partial submissions are unavailable"
      },
      "interview": {
        "summary": "Summary is unavailable",
        "answers": "Interview answers are unavailable",
        "flow": "Interview flow is unavailable",
        "research": "Research analysis is not available for interviews",
        "qualitative": "Qualitative review is unavailable",
        "partials": "Interviews do not use partial submissions"
      }
    }
  },
  "responses": {
    "title": "Responses",
    "statResponses": "Total responses",
    "statQuestions": "Questions",
    "emptyFiltered": "No responses in this date range.",
    "emptyShareCta": "Share your form",
    "submittedAt": "Submitted at",
    "export": "Export",
    "exportCsv": "Export CSV",
    "exportCsvCodes": "CSV with codes",
    "exportCsvLong": "Long-format CSV",
    "exportCsvDeidentified": "Deidentified CSV",
    "exportXlsx": "Excel workbook",
    "exportPdf": "Research report (PDF)",
    "exportCodebook": "Codebook (JSON)",
    "exportSpss": "SPSS syntax",
    "exporting": "Exporting…",
    "columnsToggle": "Columns",
    "searchLabel": "Search answers",
    "searchPlaceholder": "e.g. a name or keyword",
    "filterFrom": "From",
    "filterTo": "To",
    "filterToggle": "Filter",
    "applyFilter": "Apply",
    "clearFilter": "Clear",
    "loadingAggregate": "Loading…",
    "aggregateFailed": "Could not load this view.",
    "retry": "Retry",
    "prev": "Previous",
    "next": "Next",
    "pageOf": "Page {{current}} of {{total}}",
    "sortPageScoped": "Sorting applies to this page of {{count}} only.",
    "pagerDeepWarning": "Beyond this depth, Previous may skip pages. Use Export CSV for the full dataset.",
    "tabTable": "Table",
    "tabSummary": "Summary",
    "tabResearch": "Advanced research",
    "researchTitle": "Advanced research analysis",
    "researchDescription": "Use these tools to compare groups or apply weighting. Summary and Analytics are enough for most response reviews.",
    "crosstabTitle": "Crosstab",
    "crosstabDescription": "Compare how answers to one question differ across groups from another question.",
    "crosstabApplyHint": "Confirm the question and comparison group, then apply to build the result.",
    "crosstabBase": "Base n={{count}}",
    "crosstabNeedAxes": "Add at least two choice, rating, calculated, or hidden fields to build a crosstab.",
    "crosstabRows": "Rows",
    "crosstabBanner": "Banner columns",
    "crosstabApply": "Apply",
    "crosstabMultiRule": "Multiple-select responses count once in every selected category. Percentages can therefore total more than 100%.",
    "crosstabColumnPercent": "col {{value}}",
    "crosstabRowPercent": "row {{value}}",
    "crosstabSmallSample": "Small sample: banner base is below 30.",
    "crosstabSignificance": "Chi-square {{statistic}}, p={{p}}.",
    "crosstabMultipleComparison": "Arrows mark unadjusted pairwise p<.05; interpret cautiously because multiple comparisons increase false positives.",
    "crosstabSignificantHigher": "Significantly higher than at least one banner column (unadjusted p<.05)",
    "crosstabStatisticsDetails": "Statistical details",
    "crosstabSignificanceWarning": {
      "expected_count_below_5": "Significance is hidden because at least one expected count is below 5.",
      "multiple_membership": "Significance is not shown for multiple-membership axes.",
      "insufficient_categories": "At least two populated row and banner categories are required for significance."
    },
    "crosstabWeightTargets": "Banner target distribution (must total 100%)",
    "crosstabWeightSection": "Response weighting",
    "crosstabApplyWeights": "Apply weights",
    "crosstabWeightedCount": "weighted {{value}}",
    "crosstabWeightDiagnostics": "Unweighted n={{n}} · weighted n={{weighted}} · ESS={{ess}} · design effect={{deff}}",
    "crosstabWeightError": {
      "invalid_targets": "Weights were not applied. Use positive targets totaling 100%.",
      "multiple_membership": "Weights cannot be applied to a multiple-membership banner."
    },
    "crosstabMeanComparison": "{{test}} {{statistic}}, p={{p}} for banner means.",
    "crosstabMeanTest": {
      "welch_t": "Welch t",
      "anova": "ANOVA F"
    },
    "crosstabMeanInsufficient": "Mean comparison is hidden because every banner needs at least two numeric observations.",
    "segments": "Segments",
    "segmentAll": "All responses",
    "segmentName": "Segment name",
    "segmentCondition": "Segment condition",
    "segmentSave": "Save segment",
    "segmentDelete": "Delete segment {{name}}",
    "segmentDeleteAction": "Delete",
    "segmentDeleteConfirm": "Confirm delete?",
    "segmentDeleting": "Deleting…",
    "segmentSaving": "Saving…",
    "tabAnalytics": "Analytics",
    "tabPartial": "Partial submissions",
    "viewLabel": "Response view",
    "lastUpdated": "Last updated",
    "progress": "Progress",
    "partialEmpty": "No partial submissions yet.",
    "partialHint": "In-progress submissions that weren't completed. They don't count as responses and are removed once the form is submitted.",
    "quotaTitle": "Quota status",
    "quotaRevision": "Policy revision {{revision}}",
    "quotaNotConfigured": "No quota policy is configured.",
    "quotaSaved": "New quota revision saved.",
    "quotaConflict": "The quota policy changed in another tab. Review the latest revision before saving again.",
    "quotaRemaining": "{{remaining}} remaining",
    "quotaConfigure": "Configure quotas and screen-out",
    "quotaPublishFirst": "Publish this form before configuring quotas.",
    "quotaNeedsScreener": "Add a multiple choice, dropdown, checkbox, or hidden field to use as a screener.",
    "quotaCellLabel": "Cell label",
    "quotaTarget": "Target",
    "quotaRemoveCell": "Remove {{label}}",
    "quotaCurrentCount": "Current revision: {{accepted}} / {{target}} accepted",
    "quotaQuestion": "Screener question",
    "quotaValue": "Matching value",
    "quotaRemoveCondition": "Remove condition",
    "quotaAddCondition": "Add cross-cell condition",
    "quotaAddCell": "Add quota cell",
    "quotaScreenTitle": "Screen-out title",
    "quotaScreenBody": "Screen-out message",
    "quotaRevisionWarning": "Saving creates a new immutable policy revision and resets counters for that revision. Historical responses retain the policy that screened them.",
    "quotaSave": "Save new revision",
    "quotaSaving": "Saving…",
    "quotaDefaultTitle": "This study is no longer accepting responses from your group",
    "quotaDefaultBody": "Thank you for your interest.",
    "analyticsViews": "Views",
    "analyticsSubmits": "Submissions",
    "analyticsBounce": "Bounce rate",
    "analyticsAvgTime": "Avg. time to complete",
    "analyticsDevice": "Device",
    "analyticsReferer": "Referrer",
    "analyticsUtm": "Campaign source",
    "analyticsTrend": "Views and submissions over time",
    "analyticsFunnel": "Question funnel",
    "analyticsFunnelPresentationNote": "Randomized responses are grouped by assignment arm and counted by the position actually shown, never folded back into the authored order.",
    "analyticsFunnelArm": "Balanced arm {{arms}}",
    "analyticsFunnelRandomized": "Randomized order",
    "analyticsFunnelLegacy": "Definition order (legacy)",
    "analyticsFunnelPosition": "Shown position {{position}}",
    "analyticsFunnelPositionDropoff": "{{count}} partial response(s) stopped at shown position {{position}}.",
    "analyticsWindow": "Trend window",
    "analyticsWindowDays": "{{days}}d",
    "analyticsPartials": "Partial submissions",
    "analyticsAbandonment": "Abandonment rate",
    "analyticsNoData": "No data yet.",
    "analyticsEmptyTitle": "There is no activity to analyze yet",
    "analyticsEmptyBody": "Share the form and analytics will appear as views and submissions arrive.",
    "analyticsEmptyFilteredTitle": "There is no analytics data in this date range",
    "analyticsEmptyFilteredBody": "Clear the date filter or choose a different range.",
    "analyticsBasisNote": "Views, bounce rate, and this funnel use page loads as their basis. Estimated respondent continuity is reported separately in the response table, CSV, and report API; it is not verified identity.",
    "summaryAverage": "Average",
    "summaryCoverage": "{{answered}} of {{total}} answered",
    "summaryRange": "Range {{min}} to {{max}}",
    "summaryResponseCount_one": "{{count}} response",
    "summaryResponseCount_other": "{{count}} responses",
    "summaryAvgRank": "avg {{rank}}",
    "summaryEmpty": "No answers yet for this question.",
    "otherOption": "Other (free text)",
    "sortBy": "{{column}}, activate to sort",
    "sortByAscending": "{{column}}, sorted ascending, activate to sort descending",
    "sortByDescending": "{{column}}, sorted descending, activate to clear sort",
    "keyFindingsEyebrow": "Key findings",
    "keyFindingsTitle": "What is happening so far",
    "keyFindingsBody": "Use the summary and analytics views to turn responses into decisions.",
    "keyFindingsEmptyTitle": "No responses yet",
    "keyFindingsEmptyBody": "Share the public link to start collecting responses.",
    "viewSummaryCta": "Open summary",
    "viewAnalyticsCta": "Open analytics",
    "keyFindingsPartials": "In-progress responses",
    "keyFindingsNextStep": "Next step",
    "keyFindingsReview": "Review",
    "keyFindingsShare": "Share",
    "partialInsight": "{{count}} respondent(s) stopped before submitting. Review where they left off and consider shortening or simplifying that part.",
    "partialHotspotAfter": "On this page, {{count}} respondent(s) ({{percent}}%) most often stopped after “{{label}}”.",
    "partialHotspotStart": "On this page, {{count}} respondent(s) ({{percent}}%) left before answering the first question.",
    "partialHotspotNext": "Next question: {{label}}",
    "partialHotspotEditCta": "Edit questions",
    "lowCoverageEyebrow": "Needs attention",
    "lowCoverageTitle": "“{{label}}” is answered by only {{answered}} of {{total}} respondents.",
    "lowCoverageBody": "Consider moving it earlier, making it optional, or clarifying the wording.",
    "lowCoverageEditCta": "Edit this question",
    "showMoreFields_one": "Show {{count}} more field",
    "showMoreFields_other": "Show {{count}} more fields",
    "showLess": "Show less",
    "actions": "Actions",
    "viewDetail": "View",
    "signaturePreview": "Submitted signature",
    "detailTitle": "Response detail",
    "respondentEstimate": "Respondent estimate",
    "respondentEstimateCaveat": "Estimated from form-scoped browser continuity, not verified identity. It can be bypassed by private browsing, storage deletion, another browser, or another device.",
    "respondentRepeatCount_one": "{{count}} repeat",
    "respondentRepeatCount_other": "{{count}} repeats",
    "respondentReviewRecommended": "Review recommended by this form's repeat-response policy",
    "respondentConfidence": {
      "deterministic": "High confidence",
      "probable": "Probable",
      "weak": "Low confidence"
    },
    "qualityEstimate": "Quality signals",
    "qualityFlaggedOnly": "Flagged responses",
    "qualityShowAll": "Show all responses",
    "qualityScore": "Score {{score}}/100",
    "qualityNoSignals": "No quality signals",
    "qualityExcluded": "Excluded from analysis",
    "qualityExclude": "Exclude",
    "qualityRestore": "Restore",
    "qualityExclusionUpdated": "Analysis inclusion updated.",
    "qualityExclusionError": "Could not update analysis inclusion.",
    "qualitySignal": {
      "speeder": "Unusually fast",
      "straightline": "Matrix straightlining",
      "low_selection_diversity": "Low selection diversity",
      "duplicate": "Estimated repeat response",
      "trap_failed": "Attention check failed",
      "meaningless_text": "Low-information text",
      "generated_text_suspected": "Generated text suspected"
    },
    "exclusionReason": {
      "quality_review": "Manual quality review",
      "test_response": "Test response",
      "duplicate": "Duplicate",
      "other": "Other"
    },
    "presentationOrder": "Actual presentation order",
    "presentationAssignment": "Assignment",
    "deleteResponse": "Delete",
    "deleteResponseConfirm": "Confirm delete?",
    "revokeEditAccess": "Revoke edit link",
    "revokeEditAccessConfirm": "Revoke this response's edit link?",
    "editAccessRevoked": "Response edit access revoked.",
    "editAccessRevokeError": "Could not revoke response edit access.",
    "responseDeleted": "Response deleted.",
    "responseDeleteError": "Could not delete the response."
  },
  "share": {
    "linkTitle": "Share link",
    "notPublished": "Make the form public to get a share link.",
    "unpublishedChanges": "You have unpublished changes — the public link still serves the previous version.",
    "unpublishedChangesCta": "Publish changes",
    "goToEditor": "Go to editor to publish",
    "copy": "Copy",
    "copied": "Copied!",
    "copyError": "Couldn't copy to clipboard.",
    "renderMode": "Render mode",
    "modeConversational": "Conversational (one question at a time)",
    "modeConversationalHint": "Immersive step-by-step flow with focus on one question.",
    "modeClassic": "Classic (survey sheet)",
    "modeClassicHint": "Numbered questions on a single scrollable sheet with clear section breaks.",
    "modeDocument": "Document (reading page)",
    "modeDocumentHint": "Reads like a written document: quiet fields on a flat page, optional cover, and multi-column placement.",
    "formLocale": "Form language (respondent-facing)",
    "primaryColor": "Primary",
    "backgroundColor": "Background",
    "textColor": "Text",
    "save": "Save settings",
    "saving": "Saving…",
    "saved": "Settings saved.",
    "saveError": "Could not save settings.",
    "embedTitle": "Embed",
    "embedHint": "Paste this HTML where you want the form to appear.",
    "embedHeightConversational": "Conversational forms show one question at a time — a fixed height around {{height}}px usually fits.",
    "embedHeightClassic": "Classic forms render on a single page — start around {{height}}px and increase it to fit your longest screen.",
    "embedInline": "Inline frame",
    "embedPopup": "Popup",
    "embedSlideIn": "Slide-in panel",
    "embedSideTab": "Side tab",
    "embedFullscreen": "Fullscreen",
    "embedKiosk": "Kiosk",
    "embedKioskHint": "Kiosk mode reloads a clean form after each submission so the next respondent cannot see previous input.",
    "embedCopiedNote": "Embed code copied to your clipboard.",
    "copyEmbed": "Copy embed code",
    "customDomainTitle": "Custom domain",
    "customDomainHint": "Connect a domain you control. Point its CNAME to the target below, then publish the TXT ownership record.",
    "customDomainHostname": "Domain",
    "customDomainConfigure": "Configure domain",
    "customDomainPending": "Waiting for DNS verification",
    "customDomainActive": "Domain verified and active",
    "customDomainDnsHint": "DNS changes may take time to propagate. Keep both records while the domain is active.",
    "customDomainVerify": "Verify DNS",
    "customDomainVerifying": "Verifying…",
    "customDomainRemove": "Remove domain",
    "customDomainRemoveConfirm": "Click again to remove",
    "customDomainError": {
      "invalid": "Enter a valid hostname without a path or port.",
      "taken": "That domain is already connected to another form.",
      "not_configured": "Configure the domain before verifying it.",
      "not_verified": "The expected TXT record was not found yet."
    },
    "openForm": "Open form",
    "slugTitle": "Custom URL",
    "slugHint": "Use lowercase letters, numbers, and hyphens (3–60 characters). Changing it breaks existing links.",
    "slugSave": "Save URL",
    "slugSaved": "URL updated.",
    "slugInvalidFormat": "Use only lowercase letters, numbers, and hyphens.",
    "slugTooShort": "Too short — use at least 3 characters.",
    "slugTooLong": "Too long — use at most 60 characters.",
    "slugReserved": "That URL is reserved. Choose another.",
    "slugTaken": "That URL is already taken. Choose another.",
    "slugError": "Could not update the URL.",
    "launchEyebrow": "Launch center",
    "launchTitle": "Your form is ready to share",
    "launchBody": "Copy the public link, open it as a respondent, or embed it on your site.",
    "launchDraftTitle": "Publish before sharing",
    "launchDraftBody": "Finish the form in the editor, then publish it to create a public link.",
    "previewRespondent": "Preview as respondent",
    "viewResponses": "View responses",
    "checkPublished": "Published",
    "checkLink": "Share link ready",
    "checkTest": "Send a test response",
    "checkQuestions": "Questions added",
    "readyTitle": "Ready",
    "recommendedTitle": "Before you share",
    "checkPreview": "Preview it as a respondent",
    "checkMobile": "Open it on a phone",
    "qrTitle": "QR code",
    "qrHint": "Print it or show it on screen so people can open your form by scanning with a phone camera.",
    "qrDownloadPng": "Download PNG",
    "qrDownloadSvg": "Download SVG",
    "emailNotificationTitle": "Email notifications",
    "emailNotificationHint": "Send an email to your team after each completed response. Delivery runs in the background queue.",
    "emailNotificationEnable": "Email me when a response is completed",
    "emailNotificationEnableHint": "Works for classic forms and AI interviews.",
    "emailNotificationRecipients": "Recipients",
    "emailNotificationRecipientsHint": "One email per line or comma-separated. Up to 5 recipients.",
    "emailNotificationSave": "Save notification",
    "emailNotificationSaved": "Email notification settings saved.",
    "emailNotificationNotConfigured": "Email delivery is not configured for this deployment.",
    "emailNotificationInvalid": "Enter valid email addresses.",
    "emailNotificationLimit": "Use at most 5 recipients.",
    "emailNotificationConflict": "This form changed elsewhere. The latest settings were reloaded; try again.",
    "emailNotificationError": "Could not update email notification settings.",
    "respondentConvenienceTitle": "Respondent follow-up",
    "respondentConvenienceHint": "Let respondents edit a submitted response or receive a copy without creating an account.",
    "respondentEditingEnable": "Issue a private response editing link",
    "respondentEditingHint": "The link grants access to one response for 30 days. You can revoke it from the response list.",
    "respondentReceiptEnable": "Email the respondent a copy of their response",
    "respondentReceiptHint": "Delivery is queued after submission. Uploaded files and signatures are never attached.",
    "respondentReceiptEmailField": "Respondent email field",
    "respondentReceiptEmailPlaceholder": "Select an email question",
    "respondentConvenienceEmailRequired": "Add an email question to the form and select it here.",
    "respondentConvenienceSave": "Save respondent options",
    "respondentConvenienceSaved": "Respondent options saved.",
    "respondentConvenienceError": "Could not update respondent options.",
    "translationsTitle": "Survey translations",
    "translationsHint": "Translate the published title, questions, choices, intro, submit label, and completion copy. Empty fields fall back to the base language.",
    "translationsPublishWarning": "The draft has unpublished changes. Republish checks every configured language and lists missing copy before creating the next version.",
    "translationsLanguage": "Translation language",
    "translationsBase": "Base language: {{locale}}",
    "translationsRevision": "revision {{revision}}",
    "translationsValue": "Translation",
    "translationsSave": "Save translation revision",
    "translationsAiDraft": "Draft with AI",
    "translationsMissing": "{{count}} translation missing",
    "translationsMissing_plural": "{{count}} translations missing",
    "translationsComplete": "Translation complete",
    "translationsSaved": "A new immutable translation revision was saved.",
    "translationsError": "Could not create the translation revision.",
    "translationsRtlUnsupported": "Right-to-left languages are not supported in this release. Supported respondent languages are English, Korean, and Japanese.",
    "accessTitle": "Form access",
    "accessHint": "Editors can change the form and read responses. Analysts can read responses only. Viewers can inspect the form without response access.",
    "accessRole": "Access role for {{email}}",
    "accessNone": "No access",
    "accessEditor": "Editor",
    "accessAnalyst": "Analyst",
    "accessViewer": "Viewer",
    "accessCreator": "Editor (creator)",
    "accessWorkspaceManager": "Editor (workspace manager)",
    "accessSave": "Save access",
    "researchComplianceTitle": "Research compliance",
    "researchComplianceHint": "Configure the consent disclosure, withdrawal link, retention purge, and IRB-ready processing record for this form.",
    "researchPurpose": "Research purpose",
    "researchContact": "Research contact",
    "researchRetentionDays": "Retention period (days after completion)",
    "researchCollectionItems": "Consent collection items",
    "researchCollectionItemsHint": "Enter one disclosed item per line, up to 20.",
    "researchWithdrawalEnable": "Issue a private withdrawal and deletion link after completion",
    "researchThirdPartyEnable": "Data is provided to a third party",
    "researchThirdPartyDetails": "Third-party recipient, items, and purpose",
    "researchSave": "Save research settings",
    "researchSaved": "Research settings saved.",
    "researchSaveFailed": "Could not save the research settings.",
    "researchConsentApply": "Add research consent block",
    "researchConsentRefresh": "Refresh research consent block",
    "researchConsentApplied": "The research consent block was updated in the draft.",
    "researchConsentFailed": "Could not update the consent block.",
    "researchConsentFlagRequired": "Enable the privacy-consent block feature for this workspace before applying the template.",
    "researchProcessingRecord": "Download processing record",
    "contactsTitle": "Contacts and invitations",
    "contactsHint": "Import a workspace contact list, send individual form links, and track claimed and completed invitations. Contacts are deleted after 365 days unless re-imported.",
    "contactsResult": {
      "invalid_csv": "The CSV could not be read. Check the file format and try again.",
      "missing_email": "The CSV must include an email column.",
      "row_limit": "The CSV exceeds the 5,000-row limit.",
      "no_valid_contacts": "No valid contacts were found in the CSV.",
      "imported": "Imported {{count}} contacts.",
      "publish_first": "Publish the form before sending invitations.",
      "email_not_configured": "Email delivery is not configured for this workspace.",
      "invalid_reminder": "Reminder days must be a whole number between 1 and 30.",
      "invited": "Sent invitations to {{count}} contacts.",
      "revoked": "Invitation access was revoked.",
      "delete_confirmation": "Confirm delete all contacts in the dialog before continuing.",
      "deleted": "Deleted {{count}} contacts.",
      "unknown": "The contact operation could not be completed."
    },
    "contactsInvited": "Invited",
    "contactsClaimed": "Claimed",
    "contactsCompleted": "Completed",
    "contactsImportTitle": "Import CSV",
    "contactsImportHint": "The CSV must have an email column. A name column is optional; other columns become contact attributes. Up to 5,000 rows.",
    "contactsImport": "Import contacts",
    "contactsImporting": "Importing…",
    "contactsSendTitle": "Send individual links",
    "contactsSendHint": "{{count}} active contacts are eligible. Opted-out and expired contacts are always excluded.",
    "contactsReminderDays": "Remind after days",
    "contactsSend": "Invite active contacts",
    "contactsSending": "Sending…",
    "contactsList": "Workspace contacts",
    "contactsInvitations": "Form invitations",
    "contactsEmail": "Email",
    "contactsName": "Name",
    "contactsState": "Status",
    "contactsAccess": "Access",
    "contactsOptedOut": "Opted out",
    "contactsActive": "Active",
    "contactsRevoke": "Revoke",
    "contactsRevoking": "Revoking…",
    "contactsDeleteTitle": "Delete all workspace contacts",
    "contactsDeleteHint": "This permanently deletes contacts, invitation lineages, and queued invitation email.",
    "contactsDeleteConfirmBody": "This permanently deletes all workspace contacts, invitation lineages, and queued invitation email. This cannot be undone.",
    "contactsDeleteConfirm": "Delete all contacts",
    "contactsDeleteCancel": "Cancel",
    "contactsDelete": "Delete all contacts",
    "contactsDeleting": "Deleting…",
    "contactsInvitationState": {
      "invited": "Invited",
      "reminded": "Reminded",
      "claimed": "Claimed",
      "completed": "Completed",
      "revoked": "Revoked",
      "optedOut": "Opted out"
    },
    "webhookTitle": "Webhooks",
    "webhookHint": "Send response.completed when a response finishes and response.analysis.completed when interview analysis reaches a terminal state. Delivery runs in the background queue.",
    "webhookUrl": "Webhook URL",
    "webhookSecret": "Signing secret",
    "webhookSecretPlaceholder": "Signing secret (optional)",
    "webhookAdd": "Add webhook",
    "webhookEmpty": "No webhooks yet.",
    "webhookEnabled": "Enabled",
    "webhookDisabled": "Disabled",
    "webhookSigned": "Signed",
    "webhookEnable": "Enable",
    "webhookDisable": "Disable",
    "webhookDelete": "Delete",
    "webhookStats": "{{queued}} queued · {{succeeded}} delivered · {{failed}} failed",
    "webhookLastDelivered": "Last delivered",
    "webhookDeliveriesTitle": "Recent deliveries",
    "webhookDeliveryAttempts": "{{count}} attempt",
    "webhookDeliveryAttempts_plural": "{{count}} attempts",
    "webhookDeliveryDelivered": "Delivered",
    "webhookDeliveryNextRun": "Next run",
    "webhookRetry": "Retry",
    "webhookRetryQueued": "Webhook delivery queued for retry.",
    "webhookRetryBusy": "That delivery is already queued or running.",
    "webhookDeliveryStatus": {
      "queued": "Queued",
      "running": "Running",
      "succeeded": "Delivered",
      "failed": "Failed",
      "canceled": "Canceled"
    },
    "webhookSaved": "Webhook settings saved.",
    "webhookDuplicate": "That webhook URL is already configured.",
    "webhookUrlInvalid": "Use a valid HTTPS URL. Local HTTP is allowed only in development.",
    "webhookSecretInvalid": "Signing secret must be 200 characters or fewer.",
    "webhookLimit": "This form already has the maximum number of webhooks.",
    "webhookError": "Could not update webhook settings.",
    "webhookDeleteConfirm": "Confirm delete?"
  },
  "editor": {
    "titlePlaceholder": "Form title",
    "blockPlaceholder": "Click Add question to insert a block",
    "labelPlaceholder": "Type your question…",
    "publish": "Make public",
    "unpublish": "Unpublish",
    "discardChanges": "Discard changes",
    "unpublishConfirm": "Unpublishing makes the form inaccessible to respondents. Continue?",
    "revertConfirm": "All edits made since the published version will be lost. Continue?",
    "confirm": "Continue",
    "cancel": "Cancel",
    "publishedToast": "Your form is now public.",
    "unpublishedToast": "Your form is no longer public.",
    "reverted": "Reverted to the published version.",
    "saved": "Saved",
    "saving": "Saving…",
    "saveError": "Save failed",
    "saveConflict": "Edited in another session",
    "saveConflictReload": "Reload latest",
    "saveConflictReloadConfirm": "Reloading replaces the edits in this tab with the latest saved version. This cannot be undone. Continue?",
    "saveRetry": "Retry",
    "unsavedLeaveWarning": "You have unsaved changes that could not be saved. Leave anyway?",
    "invalidDraft": "Incomplete",
    "invalidDraftDetail": "Can't publish yet — check these questions: {{labels}}",
    "invalidDraftGeneric": "Can't publish yet — some questions are incomplete.",
    "interviewEmptyHint": "Add at least one field or discussion topic before publishing.",
    "invalidDefinition": "The form definition is invalid.",
    "missingTranslations": "Publishing is blocked by {{count}} missing translations. Complete them on Share. First items: {{fields}}",
    "interviewPreflightTitle": "Interview publish preflight",
    "interviewPreflightSummary": "{{hardFields}} required fields, {{requiredGoals}} required goals · budget {{maxExchanges}} exchanges / {{maxFollowups}} follow-ups",
    "interviewPreflightReady": "The current design is runnable.",
    "interviewPreflightBlocked": "Resolve the publish preflight blockers first.",
    "interviewPreflightBlockers": "Blockers ({{count}})",
    "interviewPreflightWarnings": "Warnings ({{count}})",
    "featureDisabled": "This form uses a feature that is not enabled for this workspace.",
    "emptyForm": "Add at least one question before publishing.",
    "publishedUrl": "Public URL",
    "aiPlaceholder": "Tell AI how to change this form…",
    "aiApply": "Apply AI edit",
    "aiPending": "Editing…",
    "aiError": "Could not apply the AI edit.",
    "required": "Required",
    "addChoice": "Add option",
    "removeChoice": "Remove option",
    "addChoiceImage": "Add image",
    "choiceImageUploading": "Uploading…",
    "removeChoiceImage": "Remove image",
    "choiceImageAlt": "Image description",
    "choiceImageAltPlaceholder": "Describe the image (alt text)",
    "choiceImageError": "Upload failed",
    "allowOther": "Add an \"Other\" (free text) option",
    "qualityTrap": "Use as an attention check",
    "qualityTrapExpected": "Expected answer",
    "qualityTrapHint": "The question looks ordinary. A wrong answer adds a private quality signal after submission.",
    "moveChoiceUp": "Move option up",
    "moveChoiceDown": "Move option down",
    "moveQuestionUp": "Move question up",
    "moveQuestionDown": "Move question down",
    "rankingSoftCap": "Ranking works best with 8 or fewer options — long lists are hard to reorder with buttons.",
    "choice": "Option",
    "scale": "Steps",
    "ratingShape": "Shape",
    "ratingShapeNumber": "Number",
    "ratingShapeStar": "Star",
    "ratingShapeCircle": "Circle",
    "ratingLowLabel": "Low label",
    "ratingHighLabel": "High label",
    "ratingZeroBased": "Start at 0 (0–N scale)",
    "insertTitle": "Insert",
    "questionGroup": "Questions",
    "libraryGroup": "Research library",
    "contentGroup": "Content",
    "hint": "Click Add question to insert a block. Drag the handle to reorder.",
    "descriptionPlaceholder": "Add a description (optional)",
    "choiceAria": "Choice {{index}}",
    "statementBodyPlaceholder": "Announcement text…",
    "statementBodyAria": "Announcement text",
    "inlineFieldInsert": "Insert inline field",
    "optionsToggle": "Options",
    "placeholderLabel": "Placeholder",
    "minLength": "Min length",
    "maxLength": "Max length",
    "minValue": "Min",
    "maxValue": "Max",
    "integerOnly": "Whole numbers only",
    "numberStep": "Step",
    "numberPrefix": "Prefix",
    "numberSuffix": "Suffix",
    "numberDecimals": "Decimals",
    "minSelected": "Min selections",
    "maxSelected": "Max selections",
    "dateMin": "Earliest date",
    "dateMax": "Latest date",
    "timeMin": "Earliest time",
    "timeMax": "Latest time",
    "maxFiles": "Max files",
    "signatureWidth": "Pad width",
    "signatureHeight": "Pad height",
    "maxSizeMb": "Max size (MB)",
    "acceptedTypes": "Allowed types (comma-separated, e.g. image/*, .pdf)",
    "privacyItems": "Information collected",
    "privacyItemsPlaceholder": "One item per line",
    "privacyItemsHint": "Enter up to 20 items, one per line.",
    "privacyPurpose": "Purpose of collection and use",
    "privacyRetention": "Retention period",
    "privacyRefusal": "Right to refuse and consequences",
    "privacyLegalNotice": "This template is a starting point, not legal advice. Review it for your policy and applicable law before publishing.",
    "privacyAgreePreview": "I agree to the collection and use described above.",
    "privacyMode": "Consent style",
    "privacyModeAgreeOnly": "Agree checkbox",
    "privacyModeAgreeOrDecline": "Agree / decline choice",
    "privacyModeAgreeOnlyHint": "Respondents must agree before they can submit (required consent).",
    "privacyModeAgreeOrDeclineHint": "Respondents must choose agree or decline; declining still allows submission and is recorded (optional consent).",
    "privacyPartialBlockedNote": "While this block is unanswered, in-progress answers are not saved as partial responses. Collection starts only after the respondent completes this consent.",
    "format": "Format",
    "formatNone": "No restriction",
    "formatEmail": "Email",
    "formatUrl": "URL",
    "formatPhone": "Phone",
    "formatPhoneKr": "Korean phone",
    "formatE164": "International (E.164)",
    "formatCustom": "Custom (regex)",
    "deleteBlock": "Delete question",
    "permanentBlockDeleteTitle": "Permanently delete this block?",
    "permanentBlockDeleteBody": "This block will be removed permanently and will no longer appear in response tables, summaries, or CSV exports after you publish the change. This cannot be undone.",
    "permanentBlockDeleteConfirm": "Permanently delete",
    "blockDeleted": "Question deleted",
    "shortcutsTitle": "Keyboard shortcuts",
    "shortcutsGeneral": "General",
    "shortcutsWriting": "Writing & insert",
    "shortcutsCanvas": "Document canvas (block selected)",
    "shortcutsOpen": "Open this cheat sheet",
    "shortcutsSlash": "Insert block palette",
    "shortcutsMention": "Insert an earlier answer",
    "shortcutsMarkdown": "Markdown line shortcuts",
    "shortcutsEditBlock": "Edit the selected block",
    "shortcutsSelect": "Select previous / next block",
    "shortcutsMove": "Move block up / down",
    "shortcutsResize": "Shrink / widen block",
    "shortcutsRowBreak": "Toggle row break",
    "shortcutsDeselect": "Deselect / close",
    "undo": "Undo",
    "redo": "Redo",
    "insertBelow": "Insert below",
    "typeSwitchLostChoices": "Type changed — the choices were removed.",
    "flushBlocked": "Couldn't save the draft — fix the highlighted issue (or reload the latest version) and try again.",
    "blockDeletedLogicWarning": "Deleted — other questions had logic based on this one; those rules will be removed.",
    "conditionMissingChoice": "(deleted choice)",
    "conditionValueMissing": "Pick a value — this rule is inactive until then.",
    "duplicateBlock": "Duplicate question",
    "addQuestion": "Add question",
    "country": "Country",
    "countryDatasetNote": "Respondents pick from the built-in list of countries. Stored as an ISO country code.",
    "matrix": "Matrix",
    "matrixNote": "Each row is a separate single-choice question sharing the same columns. Edit rows below.",
    "matrixRow": "Row {{n}}",
    "matrixCol": "Column {{n}}",
    "matrixMulti": "Allow multiple per row",
    "matrixRowsLabel": "Rows",
    "matrixColsLabel": "Columns (shared)",
    "matrixAddRow": "Add row",
    "matrixAddCol": "Add column",
    "matrixRowAria": "Row {{index}} label",
    "matrixColAria": "Column {{index}} label",
    "randomizeChoices": "Randomize choices",
    "randomizeMode": "Order",
    "randomizeShuffle": "Shuffle",
    "randomizeReverse": "Reverse",
    "randomizeLatinSquare": "Balanced rotation",
    "randomizePinLast": "Keep last N fixed",
    "randomGroupsTitle": "Question order",
    "randomGroupsDescription": "Randomize consecutive questions and record the exact order for every response.",
    "randomGroupAdd": "Add group",
    "randomGroupRange": "Consecutive question range",
    "randomGroupInvalid": "Choose a valid range",
    "randomGroupRemove": "Remove random group",
    "scoringTitle": "Scales and quizzes",
    "scoringDescription": "Combine numeric questions into scores or grade selected questions. Quiz answers stay private until submission succeeds.",
    "scoringScales": "Scales",
    "scoringQuizzes": "Quizzes",
    "scoringAddScale": "Add scale",
    "scoringAddQuiz": "Add quiz",
    "scoringScaleDefault": "Scale {{n}}",
    "scoringQuizDefault": "Quiz {{n}}",
    "scoringNoNumericQuestions": "Add a rating, number, or calculated field to create a scale.",
    "scoringNoQuizQuestions": "Add a choice, checkbox, rating, number, or consent question to create a quiz.",
    "scoringLabel": "Score label",
    "scoringAggregation": "Aggregation",
    "scoringMean": "Mean",
    "scoringSum": "Sum",
    "scoringMissing": "Missing answers",
    "scoringMissingExclude": "Exclude from mean",
    "scoringMissingZero": "Count as zero",
    "scoringMissingRequireAll": "Require every item",
    "scoringReverse": "Reverse score",
    "scoringRemoveScale": "Remove scale",
    "scoringRemoveQuiz": "Remove quiz",
    "scoringCutoffs": "Cutoff labels",
    "scoringAddCutoff": "Add cutoff",
    "scoringCutoffDefault": "Level {{n}}",
    "scoringCutoffMin": "Minimum score",
    "scoringCutoffLabel": "Cutoff label",
    "scoringRemoveCutoff": "Remove cutoff",
    "scoringQuizQuestion": "Quiz question",
    "scoringCorrectAnswer": "Correct answer",
    "scoringCorrectAnswers": "Correct answers",
    "scoringPoints": "Points",
    "scoringCorrectFeedback": "Feedback when correct",
    "scoringIncorrectFeedback": "Feedback when incorrect",
    "scoringAddQuizItem": "Add quiz item",
    "scoringRemoveQuizItem": "Remove quiz item",
    "scoringConsentAgree": "Agree",
    "scoringConsentDecline": "Decline",
    "pageBreak": "Page break",
    "pageBreakConversational": "Page breaks don't apply in conversational mode.",
    "aiRateLimited": "Too many AI requests. Please wait a moment.",
    "aiQuotaExceeded": "Daily AI quota is used up. Check AI usage in Workspace settings.",
    "aiQuotaExceededWithRetry": "Daily AI quota is used up. Try again {{when}}, or check AI usage in Workspace settings.",
    "aiUnconfigured": "AI is not configured on the server.",
    "aiInputTooLarge": "This form is too large for AI editing. Shorten long question text or edit it manually.",
    "aiConflict": "The form changed in the meantime. Please try again.",
    "aiChangesTitle": "AI made these changes",
    "aiChangeAdded": "Added “{{label}}”",
    "aiChangeRemoved": "Removed “{{label}}”",
    "aiChangeUpdated": "Updated “{{label}}”",
    "aiChangeReordered": "Reordered questions",
    "aiChangeLogic": "Updated conditional logic",
    "aiChangeTitle": "Renamed the form",
    "aiUndoAll": "Undo",
    "aiDismiss": "Dismiss",
    "aiAssistant": "AI assistant",
    "aiPreview": "Preview changes",
    "aiPreviewTitle": "AI suggests these changes",
    "aiApplyChanges": "Apply",
    "aiDiscard": "Discard",
    "aiReviewing": "Review the changes — nothing is saved until you apply.",
    "aiNoChanges": "No concrete changes resulted from this request. Nothing will be applied.",
    "aiPendingAnnounce": "Working on it — this can take a few seconds.",
    "aiProposalDiscarded": "The unapplied AI suggestion was discarded.",
    "emptyTitle": "Build your form",
    "emptyBody": "Use Add question to insert a question, text, or heading.",
    "emptyAddCta": "Add question",
    "aiEmptyTitle": "Start with AI",
    "aiEmptyBody": "Tell us what you'd like to ask in a sentence or two, and we'll draft the questions for you.",
    "aiEmptyCta": "Draft it",
    "aiEmptyPlaceholder": "e.g. an onboarding satisfaction survey with a star rating, a multiple choice, and one open comment",
    "aiGenerating": "Drafting…",
    "types": {
      "short_text": "Short text",
      "long_text": "Long text",
      "multiple_choice": "Multiple choice",
      "checkboxes": "Checkboxes",
      "dropdown": "Dropdown",
      "ranking": "Ranking",
      "rating": "Scale",
      "date": "Date",
      "datetime": "Date & time",
      "time": "Time",
      "date_range": "Date range",
      "email": "Email",
      "number": "Number",
      "file_upload": "File upload",
      "signature": "Signature",
      "privacy_consent": "Privacy consent",
      "conversational_open": "Conversational open",
      "statement": "Statement",
      "text": "Text",
      "heading": "Heading",
      "calculated_field": "Calculated field",
      "hidden_field": "Hidden field",
      "matrix": "Matrix",
      "divider": "Divider",
      "image": "Image",
      "address": "Korean address"
    },
    "logicSection": "Logic",
    "textColor": "Text color",
    "bgColor": "Background",
    "color": {
      "default": "Default",
      "gray": "Gray",
      "brown": "Brown",
      "red": "Red",
      "orange": "Orange",
      "yellow": "Yellow",
      "green": "Green",
      "blue": "Blue",
      "purple": "Purple",
      "pink": "Pink"
    },
    "reorder": "Drag to reorder",
    "statementBody": "Body",
    "statementPlaceholder": "Type text or a heading...",
    "turnIntoText": "Text",
    "divider": "Divider",
    "documentCanvas": "Document form editor",
    "documentBlocksRemaining": "{{count}} blocks remaining",
    "documentHiddenFields": "Hidden fields ({{count}})",
    "documentGhostPlaceholder": "Type or press / to add a block...",
    "slashAddBlock": "Add block (/)",
    "slashSearch": "Search blocks",
    "slashSearchPlaceholder": "Search questions and content...",
    "slashResults": "Available blocks",
    "slashNoResults": "No matching blocks",
    "slashGroups": {
      "answer": "Answers",
      "choice": "Choices",
      "contact": "Contact details",
      "content": "Content",
      "layout": "Layout",
      "library": "Research library",
      "advanced": "Advanced"
    },
    "documentQuickAddTitle": "Start with a question",
    "documentQuickAddBrowseAll": "Browse all blocks (/)",
    "documentQuickAddHint": "Choose a common field, or type / for every block.",
    "blockInspector": "Block settings",
    "documentLayout": "Layout",
    "documentEditorMenu": "Form menu",
    "documentAdvancedTools": "Advanced tools",
    "documentReviewTools": "Review, readiness, and AI",
    "documentQuickSettings": "Form settings",
    "documentQuickSettingsHint": "Adjust document essentials here. Collection controls live in Settings.",
    "documentOpenSettings": "Open collection settings",
    "documentBlockWidth": "Block width",
    "documentStartNewRow": "Start on a new row",
    "documentStartsNewRow": "starts on a new row",
    "documentFlowsInRow": "flows in the current row",
    "documentBlockLayoutStatus": "Width {{span}} of 12, {{row}}.",
    "documentDragBlock": "Drag block",
    "documentResizeBlock": "Resize block",
    "documentPlaceBesidePrevious": "Place beside previous block",
    "documentPlaceBesideNext": "Place beside next block",
    "documentMergePages": "Merge adjacent pages",
    "documentPageOutline": "Pages",
    "documentPreviewSize": "Preview size",
    "documentPreviewResponsive": "Fit editor width",
    "documentPreviewDesktop": "Desktop preview",
    "documentPreviewTablet": "Tablet preview",
    "documentPreviewMobile": "Mobile preview",
    "documentAddPageAfter": "Add a page after page {{index}}",
    "documentEmptyPage": "Empty page",
    "documentSelectPage": "Select page {{index}}: {{label}}",
    "documentMovePageUp": "Move page {{index}} up",
    "documentMovePageDown": "Move page {{index}} down",
    "documentDuplicatePage": "Duplicate page {{index}}",
    "documentDeletePage": "Delete page {{index}}",
    "documentMergePagePrevious": "Merge page {{index}} with the previous page",
    "documentMergePageNext": "Merge page {{index}} with the next page",
    "documentPageActions": "Actions for page {{index}}",
    "documentPageMutationApplied": "Page {{index}} is ready.",
    "documentPageMutationBlocked": "That page change cannot be applied because it would make the form invalid.",
    "documentFieldChrome": "Field display",
    "documentSemanticLabel": "Semantic field label",
    "documentFieldChromeRequiresLabel": "Add a semantic label before showing only the field.",
    "documentFieldChromeFull": "Label and field",
    "documentFieldChromeOnly": "Field only",
    "documentControlWidth": "Control width",
    "documentControlWidthAuto": "Content width",
    "documentControlWidthFull": "Fill cell",
    "documentOneQuestionPerPage": "One question per page",
    "documentShowFieldsOnly": "Fields only",
    "documentShowFieldLabels": "Show field labels",
    "documentFieldsOnlyMissingLabels": "Add labels to {{count}} fields before hiding field labels.",
    "documentPaginationConfirm": "Rebuild the document as {{count}} question pages. Existing manual page breaks will be replaced.",
    "documentPaginationApply": "Create pages",
    "documentPaginationBlockLimit": "There is not enough block capacity to create every question page. No changes were made.",
    "documentDuplicateTitleWarning": "This document also has a heading identical to the form title.",
    "documentDuplicateTitleRemove": "Remove duplicate heading",
    "alignLeft": "Align left",
    "alignCenter": "Align center",
    "alignRight": "Align right",
    "statementQuote": "Quote",
    "statementCallout": "Callout",
    "statementBulletList": "Bulleted list",
    "statementNumberList": "Numbered list",
    "mentionSearchAria": "Search answer references",
    "mentionSearchPlaceholder": "Search earlier questions...",
    "markdownImport": "Import Markdown",
    "markdownImportTitle": "Import a document",
    "markdownImportDescription": "Paste Markdown to split headings, paragraphs, quotes, lists, and dividers into editable blocks.",
    "markdownImportSource": "Markdown document",
    "markdownImportPlaceholder": "# Application form\n\nAdd your instructions and lists here...",
    "markdownImportAction": "Import {{count}} blocks",
    "markdownImportTruncated": "{{count}} blocks exceed this form's block limit and will not be imported.",
    "documentBlockLimitReached": "Block limit reached — this form cannot hold more blocks.",
    "documentDeletePageTitle": "Delete page",
    "documentDeletePageConfirm": "Permanently delete \"{{label}}\" and its {{count}} blocks? After you publish this change, those blocks will no longer appear in response tables, summaries, or CSV exports. This cannot be undone.",
    "documentDeletePageAction": "Permanently delete page",
    "documentHint": "Type in the trailing line or press / to insert a block. Drag or use Ctrl+Shift+Arrows to reorder.",
    "documentPageMutationBlockLimit": "This change needs more blocks than the form's limit allows.",
    "documentPageMutationIdAllocation": "Could not allocate new block ids — please try again.",
    "documentDuplicateDropsInlineField": "Duplicated without the inline blank — a field can be placed inline only once per form.",
    "documentEmptyPageHidden": "Not shown to respondents",
    "imagePlaceholder": "Image upload pending",
    "imageAdd": "Upload image",
    "imageUploading": "Uploading…",
    "imageReplace": "Replace image",
    "imageRemove": "Remove image",
    "imageUploadError": "Could not upload the image.",
    "imageAlt": "Alternative text",
    "imageCaption": "Add a caption",
    "imageWidth": "Image width",
    "imageWidthOptions": {
      "small": "Small",
      "medium": "Medium",
      "full": "Full"
    },
    "documentCover": "cover",
    "documentLogo": "logo",
    "documentImageAdd": "Add {{label}}",
    "documentImageReplace": "Replace {{label}}",
    "documentImageRemove": "Remove {{label}}",
    "documentImageUploading": "Uploading...",
    "documentImageError": "The image could not be uploaded.",
    "documentHeaderSaving": "Saving design...",
    "documentHeaderSaved": "Design saved",
    "documentHeaderSaveError": "Design could not be saved.",
    "documentOpenDesign": "Open design",
    "linkDialogTitle": "Add link",
    "linkUrlLabel": "URL",
    "linkApply": "Add link",
    "linkInvalid": "Enter a valid http(s) URL.",
    "bold": "Bold",
    "italic": "Italic",
    "underline": "Underline",
    "strike": "Strikethrough",
    "code": "Code",
    "link": "Link",
    "showWhen": "Show this question only when…",
    "branchWhen": "Skip based on this answer",
    "logicNoEarlier": "Add an earlier question to use it as a condition.",
    "matchAll": "Match all",
    "matchAny": "Match any",
    "addCondition": "Add condition",
    "removeCondition": "Remove condition",
    "addShowCondition": "Add condition",
    "removeShowCondition": "Always show",
    "logicComparator": "Comparator",
    "skipTo": "skip to",
    "skipToEnd": "End of form",
    "skipTargetMissing": "(missing — pick again)",
    "addBranch": "Add branch",
    "removeBranch": "Remove branch",
    "comparator": {
      "eq": "is",
      "neq": "is not",
      "contains": "contains",
      "not_contains": "doesn't contain",
      "gt": "greater than",
      "gte": "at least",
      "lt": "less than",
      "lte": "at most",
      "is_empty": "is empty",
      "is_filled": "is filled"
    },
    "calcExpression": "Expression",
    "calcInsertField": "Insert field",
    "calcPrecision": "Decimals",
    "calcHelp": "Use + - * / ( ) and other answers, e.g. {price} × {qty}.",
    "calcBadRef": "Unknown reference: {{refs}}. Use a numeric question that comes before this one.",
    "hiddenNamePlaceholder": "Field name (for you)",
    "hiddenParam": "URL parameter",
    "hiddenDefault": "Default value",
    "hiddenHelp": "Filled from the form URL, e.g.",
    "conversationalPrompt": "Conversation prompt",
    "conversationalPromptPlaceholder": "Ask the open-ended prompt respondents will answer first…",
    "conversationalTemplate": "Template",
    "conversationalTemplatePick": "Apply a preset…",
    "conversationalStructuredFields": "Structured fields",
    "conversationalAddField": "Add field",
    "conversationalRecommend": "Suggest with AI",
    "conversationalRecommending": "Suggesting…",
    "conversationalNoFields": "No structured fields. This block will only collect a transcript.",
    "conversationalFieldDefault": "Field {{n}}",
    "conversationalFieldLabel": "Label",
    "conversationalFieldId": "Field ID",
    "conversationalIdHint": "Code-safe identifier — letters, numbers, _ and - only.",
    "conversationalIdEdit": "Edit ID ({{id}})",
    "conversationalFieldType": "Type",
    "conversationalFieldOptions": "Options",
    "conversationalOptionId": "Option ID",
    "conversationalOptionLabel": "Option label",
    "conversationalOptionDefault": "Option {{n}}",
    "conversationalRemoveField": "Remove field",
    "conversationalRequiredForAnalysis": "Required for analysis",
    "conversationalAskDirectly": "Ask directly if missing",
    "conversationalAllowInference": "Allow inference",
    "conversationalConfidence": "Confidence",
    "conversationalQualGoals": "Qualitative goals",
    "conversationalAddGoal": "Add goal",
    "conversationalGoalDefault": "Goal {{n}}",
    "conversationalGoalLabel": "Label",
    "conversationalGoalId": "Goal ID",
    "conversationalPriority": "Priority",
    "conversationalGoalDescription": "What should this goal look for?",
    "conversationalRemoveGoal": "Remove goal",
    "conversationalFollowupPolicy": "Follow-up policy",
    "conversationalMinFollowups": "Min follow-ups",
    "conversationalMaxFollowups": "Max follow-ups",
    "conversationalMaxTurns": "Max turns",
    "conversationalTokenBudget": "Token budget",
    "conversationalAvoidTopics": "Avoid topics, one per line",
    "conversationalDisclosure": "Disclosure",
    "conversationalSensitiveMode": "Sensitive mode",
    "conversationalAllowDeepDive": "Allow deep dive",
    "conversationalEmergentProbe": "Probe emergent themes",
    "interviewBasics": "Basics",
    "interviewSections": "Interview sections",
    "interviewTitle": "Title",
    "interviewTitlePlaceholder": "Name this interview…",
    "interviewGoal": "Research brief",
    "interviewGoalPlaceholder": "What are you trying to learn from this interview?",
    "interviewLanguage": "Language",
    "interviewLanguagePlaceholder": "e.g. en, ko",
    "interviewPersona": "Persona",
    "interviewPersonaName": "Name",
    "interviewPersonaNamePlaceholder": "Interviewer name (optional)",
    "interviewPersonaTone": "Tone",
    "interviewPersonaTonePlaceholder": "e.g. warm and curious",
    "interviewOpeningClosing": "Opening & closing",
    "interviewGreeting": "Greeting",
    "interviewGreetingPlaceholder": "First message respondents see…",
    "interviewClosing": "Closing",
    "interviewClosingPlaceholder": "Final message after the interview…",
    "interviewFields": "Structured fields",
    "interviewFieldsHint": "The extracted result captured from the conversation.",
    "interviewAddField": "Add field",
    "interviewNoFields": "No structured fields yet. The interview will only collect a transcript.",
    "interviewFieldDefault": "Field {{n}}",
    "interviewRemoveField": "Remove field",
    "interviewFieldRemoved": "Field removed",
    "interviewObjectives": "Objectives",
    "interviewAddGoal": "Add objective",
    "interviewNoGoals": "No objectives yet.",
    "interviewGoalDefault": "Objective {{n}}",
    "interviewGoalDescription": "What should this objective look for?",
    "interviewRemoveGoal": "Remove objective",
    "interviewGoalRemoved": "Objective removed",
    "interviewPolicy": "Conversation policy",
    "interviewExperience": "Experience",
    "interviewTheme": "Theme",
    "interviewThemePlaceholder": "Theme key (optional)",
    "interviewLiveProfile": "Live profile",
    "interviewSmartChips": "Smart chips",
    "interviewProgress": "Progress bar",
    "interviewAllowRestart": "Allow restart",
    "interviewMotion": "Motion",
    "interviewMotionFull": "Full",
    "interviewMotionReduced": "Reduced",
    "interviewRequiredPill": "Required",
    "interviewAssistButton": "AI assist",
    "interviewAssistClose": "Close",
    "interviewAssistTitle": "AI design assistant",
    "interviewAssistSubtitle": "Design your interview together, by chat",
    "interviewAssistModeDraft": "Quick draft",
    "interviewAssistModeChat": "Design by chat",
    "interviewAssistDraftHint": "Describe what you want to learn in a sentence or two — the AI fills in the rest.",
    "interviewAssistBriefPlaceholder": "e.g. Ask customers who recently cancelled why they left and whether they'd come back",
    "interviewAssistReplaceNote": "The generated draft replaces the current interview content. You can still edit everything after applying.",
    "interviewAssistGenerate": "Generate draft",
    "interviewAssistGenerating": "Generating…",
    "interviewAssistChatWelcome": "Hi! What interview would you like to build? Tell me your goal or what you want to learn.",
    "interviewAssistChatPlaceholder": "Type a message…",
    "interviewAssistThinking": "Thinking…",
    "interviewAssistSend": "Send",
    "interviewAssistProposalTitle": "Proposed design",
    "interviewAssistFieldsCount": "{{count}} fields",
    "interviewAssistObjectivesCount": "{{count}} objectives",
    "interviewAssistMore": "+{{count}} more",
    "interviewAssistApply": "Apply this design",
    "interviewAssistKeepRefining": "Keep refining",
    "interviewAssistApplied": "Applied the AI design.",
    "interviewAssistApplyCaution": "Applying replaces your current edits with this proposal.",
    "interviewAssistSendHint": "⌘/Ctrl + Enter to send",
    "interviewAssistCtaTitle": "Design your interview with AI",
    "interviewAssistCtaSubtitle": "Give a one-line brief for a draft, or chat to design it together.",
    "interviewAssistErrRate": "Too many requests. Please try again shortly.",
    "interviewAssistErrQuota": "Daily AI quota is used up. Check AI usage in Workspace settings.",
    "interviewAssistErrQuotaWithRetry": "Daily AI quota is used up. Try again {{when}}, or check AI usage in Workspace settings.",
    "interviewAssistErrUnconfigured": "AI isn't configured.",
    "interviewAssistErrDisabled": "This feature isn't available.",
    "interviewAssistErrGeneric": "Generation failed. Please try again.",
    "interviewAssistReviewTitle": "Choose what to apply",
    "interviewAssistApplySelected": "Apply {{count}} selected",
    "interviewAssistBack": "New brief",
    "interviewAssistRecommend": "AI suggest",
    "interviewAssistRecommending": "Suggesting…",
    "interviewAssistRecommendedToast": "Added {{count}} suggested fields.",
    "interviewAssistRecommendEmpty": "Couldn't find fields to add.",
    "interviewEditor": {
      "wizard": {
        "brief": "Brief",
        "modules": "Modules",
        "preview": "Preview",
        "publish": "Publish",
        "previewTitle": "Interview at a glance",
        "previewDescription": "Counts for the current draft. Open Share to preview or send the live link after publishing.",
        "fieldCount": "Fields",
        "goalCount": "Goals",
        "moduleCount": "Modules",
        "openShare": "Open share & preview"
      },
      "researchDesignTitle": "Research design",
      "researchDesignDescription": "Define who you want to learn from, which decision this study supports, and the questions the final analysis must answer.",
      "methodPresetLabel": "Interview method",
      "methodPresetNone": "Choose a method",
      "methodPresetHint": "A method seeds modules and anchor questions only when the interview is empty. It never creates a separate runtime mode or replaces existing work.",
      "methodPresets": {
        "exploratory": "Exploratory semi-structured",
        "critical_incident": "Critical incident",
        "jtbd_switch": "JTBD switch",
        "laddering": "Laddering",
        "cognitive": "Cognitive interviewing"
      },
      "participantProfile": "Participant profile",
      "participantProfilePlaceholder": "Who should answer this interview?",
      "decisionUse": "Decision this research supports",
      "decisionUsePlaceholder": "What decision will you make with the findings?",
      "researchQuestions": "Research questions",
      "researchQuestionsPlaceholder": "One question per line",
      "goalLabel": "Research brief",
      "goalPlaceholder": "Describe what you want to learn from this interview",
      "goalHint": "The overall purpose of this interview — it guides extraction and analysis.",
      "goalsDescription": "Topics to explore in depth. Each is pursued with follow-up questions. With no topics, the interview runs like a plain survey that asks your fields in order.",
      "personaTitle": "Persona / tone",
      "personaDescription": "The interviewer name and tone shape how questions are phrased.",
      "personaName": "Interviewer name",
      "personaNamePlaceholder": "e.g. Researcher Jane",
      "personaTone": "Voice / tone",
      "personaTonePlaceholder": "e.g. warm, calm, and curious",
      "messagesTitle": "Welcome & closing messages",
      "messagesDescription": "The greeting respondents see first and the closing line on the completion screen. Leave blank to use the defaults.",
      "greetingLabel": "Welcome greeting",
      "greetingPlaceholder": "e.g. Hi! I'd love to ask you a few quick questions.",
      "closingLabel": "Closing message",
      "closingPlaceholder": "e.g. Thank you so much — this really helps.",
      "appearanceTitle": "Background & appearance",
      "appearanceDescription": "A background image behind the interview. When set, a theme-colored scrim is laid over it to keep text readable.",
      "backgroundLabel": "Background image",
      "backgroundAdd": "Upload image",
      "backgroundUploading": "Uploading…",
      "backgroundRemove": "Remove",
      "backgroundUrlLabel": "or image URL",
      "backgroundUrlPlaceholder": "https://…",
      "backgroundError": "Upload failed",
      "scrimLabel": "Scrim strength",
      "modulesTitle": "Interview modules",
      "modulesDescription": "Group comparable constructs into a deliberate sequence. Modules organize the existing fields and goals; they do not duplicate them.",
      "addModule": "Add module",
      "moduleLabel": "Module",
      "moduleLabelPlaceholder": "e.g. Recent experience",
      "modulePurpose": "Internal purpose",
      "modulePurposePlaceholder": "What this module must establish",
      "moduleMaxFollowups": "Module follow-up cap",
      "deleteModule": "Delete module",
      "noModule": "No module",
      "noModules": "No modules yet. Existing interviews continue to use global priority order.",
      "fieldsTitle": "Structured fields",
      "recommendFields": "Suggest fields",
      "addField": "Add field",
      "allHardWarning": "All fields are marked required. The interview may feel like a rigid survey. Keep only the must-have fields required and lower the rest to recommended or optional for a more natural conversation.",
      "fieldLabel": "Question label",
      "fieldLabelPlaceholder": "e.g. Main cancellation reason",
      "authoredQuestion": "Fixed core question (optional)",
      "authoredQuestionPlaceholder": "Ask every respondent with this exact wording",
      "deleteField": "Delete field",
      "fieldDeleted": "Field deleted.",
      "moveFieldUp": "Move field up",
      "moveFieldDown": "Move field down",
      "type": "Type",
      "requirednessLabel": "Requiredness",
      "sensitivityLabel": "Sensitivity",
      "options": "Options",
      "optionPlaceholder": "Option {{index}}",
      "deleteOption": "Delete option",
      "addOption": "Add option",
      "allowInference": "Allow unsupported inference after confirmation",
      "advancedSettings": "Advanced settings (question and non-answer policy)",
      "allowedNonAnswerStates": "Allowed non-answer states",
      "maxAttempts": "Max attempts",
      "allowFollowup": "Allow follow-up questions to ask why after ratings or short answers",
      "askIfAlreadyImplied": "Ask directly even when the answer was already implied",
      "noFields": "No fields yet.",
      "goalsTitle": "Qualitative goals",
      "addGoal": "Add goal",
      "goalFieldLabel": "Goal label",
      "goalFieldLabelPlaceholder": "e.g. Purchase barriers",
      "deleteGoal": "Delete goal",
      "publicHint": "Respondent-facing hint",
      "publicHintPlaceholder": "e.g. The specific moment they decided to stop",
      "anchorQuestion": "Fixed anchor question (optional)",
      "anchorQuestionPlaceholder": "Open this goal with the same question for every respondent",
      "internalRubric": "Internal rubric",
      "internalRubricPlaceholder": "e.g. Mentions a concrete event, timing, and behavior change",
      "requiredGoal": "Required goal (coverage must be met)",
      "maxProbes": "Max probes for this goal",
      "probeKindsLabel": "Probe styles",
      "noGoals": "No goals yet.",
      "budgetTitle": "Conversation budget",
      "maxExchanges": "Max exchanges",
      "maxFollowups": "Max follow-ups",
      "targetFollowups": "Target follow-ups",
      "researchQualityTitle": "Respondent verification & analysis",
      "researchQualityDescription": "Optionally let respondents correct the captured profile, validate selected structured values, and define a study-specific codebook.",
      "memberCheckEnabled": "Show a respondent recap before completion",
      "memberCheckCorrection": "Allow corrections from the recap",
      "validationEnabled": "Ask structured validation items after the recap",
      "validationItemsPerRespondent": "Items per respondent",
      "validationAssignmentVersion": "Assignment version",
      "validationFields": "Eligible validation fields",
      "codebookEnabled": "Use a study codebook",
      "codebookVersion": "Codebook version",
      "allowEmergentCodes": "Allow proposed emergent codes",
      "addCode": "Add code",
      "codeLabel": "Code label",
      "codeLabelPlaceholder": "e.g. TIME_SAVING",
      "deleteCode": "Delete code",
      "disclosureTitle": "Disclosure",
      "enabled": "Enabled",
      "version": "Version",
      "versionPlaceholder": "e.g. v1",
      "disclosureRequired": "Require consent before starting",
      "purposeText": "Purpose text",
      "purposePlaceholder": "e.g. Used only for product research and service improvement",
      "retentionText": "Retention text",
      "retentionPlaceholder": "e.g. Responses are retained for 6 months and then deleted",
      "disclosureEmpty": "Enable disclosure to show purpose and retention information before the interview starts.",
      "emergentTitle": "Emergent extraction",
      "captureTypesLabel": "Capture types",
      "relatednessPolicy": "Relatedness policy",
      "onlyRelated": "Capture only when related to defined fields or topics",
      "allowNovelTheme": "Allow new themes",
      "requireEvidenceSpan": "Require evidence span",
      "followupPolicy": "Follow-up policy",
      "allowEmergentFollowup": "Allow emergent follow-ups",
      "maxEmergentFollowups": "Max emergent follow-ups per session",
      "emergentEmpty": "Capture undefined insights that appear during the conversation.",
      "valueTypes": {
        "short_text": "Short text",
        "long_text": "Long text",
        "single_select": "Single select",
        "multi_select": "Multi-select",
        "boolean": "Yes/no",
        "number": "Number",
        "scale_1_5": "1-5 scale",
        "nps_0_10": "NPS 0-10"
      },
      "requiredness": {
        "hard": "Required",
        "soft": "Recommended",
        "optional": "Optional"
      },
      "probeKinds": {
        "example": "Example",
        "why": "Why",
        "impact": "Impact",
        "behavior": "Behavior",
        "emotion": "Emotion",
        "barrier": "Barrier",
        "tradeoff": "Trade-off",
        "clarify": "Clarify",
        "temporal_sequence": "Sequence",
        "comparison": "Comparison",
        "counterexample": "Counterexample",
        "priority": "Priority",
        "laddering": "Laddering"
      },
      "sensitivity": {
        "none": "No sensitivity",
        "low": "Low",
        "moderate": "Moderate",
        "high": "High"
      },
      "nonAnswerStates": {
        "refused": "Refused",
        "unknown": "Unknown",
        "not_applicable": "Not applicable",
        "deferred": "Later"
      },
      "captureTypes": {
        "pain_point": "Pain point",
        "motivation": "Motivation",
        "barrier": "Barrier",
        "preference": "Preference",
        "emotion": "Emotion",
        "context": "Context",
        "constraint": "Constraint",
        "risk": "Risk",
        "contradiction": "Contradiction",
        "unexpected_topic": "Unexpected topic",
        "quote": "Quote"
      }
    },
    "convFieldType": {
      "single_select": "Single select",
      "multi_select": "Multi-select",
      "scale_1_5": "1–5 scale",
      "nps_0_10": "NPS 0–10",
      "ordinal": "Ordered select",
      "boolean": "Yes/no",
      "short_text": "Short text",
      "number": "Number"
    },
    "followupType": {
      "clarify": "Clarify",
      "example": "Example",
      "why": "Why",
      "tradeoff": "Trade-off",
      "emotion": "Emotion",
      "behavior": "Behavior",
      "barrier": "Barrier"
    },
    "pipingInsert": "Insert answer",
    "pipingHint": "Show a previous answer here",
    "pipingReferences": "References:",
    "pipingBroken": "source question was deleted",
    "publishChanges": "Publish changes",
    "statusDraftTitle": "Draft, not public yet",
    "statusDraftBody": "Review your questions, then publish when you are ready to collect responses.",
    "statusChangedTitle": "Changes are not public yet",
    "statusChangedBody": "This form is live, but respondents still see the last published version until you publish these changes. Republishing may reset saved progress for respondents who are mid-form.",
    "statusLiveTitle": "Public and up to date",
    "statusLiveBody": "Your form is live. Share the link or review incoming responses.",
    "shareCta": "Share link",
    "viewResponsesCta": "View responses",
    "aiDraftTitle": "AI draft created",
    "aiDraftBody": "AI created a draft. Before publishing, review the wording, required fields, privacy-sensitive questions, and respondent experience.",
    "aiDraftCheckQuestions": "Question wording and required fields",
    "aiDraftCheckPrivacy": "Privacy-sensitive questions",
    "aiDraftCheckDesign": "Design and completion message",
    "aiDraftReview": "Review questions",
    "aiDraftDismiss": "Dismiss",
    "qualityTitle": "Ready to publish?",
    "qualityReadyStatus": "Looks ready",
    "qualityReviewStatus_one": "Review {{count}} suggestion",
    "qualityReviewStatus_other": "Review {{count}} suggestions",
    "qualityReadyBody": "Nothing stands out. Preview the form once as a respondent before you publish.",
    "qualityEmptyTitle": "Add at least one question",
    "qualityEmptyBody": "This form has no questions yet, so respondents have nothing to answer.",
    "qualityTooShortTitle": "Only one question",
    "qualityTooShortBody": "Add more if there's anything else worth learning from respondents.",
    "qualityTooLongTitle": "{{count}} questions may be a lot",
    "qualityTooLongBody": "Longer forms see more drop-off. Trim what you can, or split it with page breaks.",
    "qualityManyRequiredTitle": "{{count}} required questions",
    "qualityManyRequiredBody": "Lots of required fields add friction. Make some optional where you can.",
    "qualitySensitiveTitle": "Contact or file questions",
    "qualitySensitiveBody": "Tell respondents why you collect these and how they'll be used.",
    "qualityIntroTitle": "No intro",
    "qualityIntroBody": "Add a statement block to set context on the first screen.",
    "featureDisabledNamed": "This form uses features that are not enabled for this workspace: {{features}}.",
    "interviewAssistYou": "You",
    "interviewAssistAi": "AI",
    "documentDragKeyboardHint": "To move with the keyboard, select the block, then press Control+Shift+Arrow Up or Control+Shift+Arrow Down.",
    "documentBlockMoved": "Block moved."
  },
  "design": {
    "paneSettings": "Settings",
    "panePreview": "Preview",
    "paneSwitch": "Design view",
    "title": "Design",
    "liveNotice": "This form is published — design and completion changes apply to the live form immediately.",
    "themeTitle": "Theme",
    "presets": "Presets",
    "presetKoreanDocument": "Korean document",
    "palette": "Palette",
    "paletteDefault": "Default",
    "theme_cloud": "Cloud",
    "theme_ink": "Ink",
    "theme_warm": "Warm",
    "theme_forest": "Forest",
    "accent": "Accent color",
    "accentReset": "Use theme accent",
    "font": "Font",
    "fontDefault": "Default",
    "fontSerif": "Serif",
    "fontNanum": "Nanum Gothic",
    "knobsPaletteNote": "A palette is active — adjusting a color switches back to custom colors.",
    "corners": "Corners",
    "cornerRounded": "Rounded",
    "cornerSharp": "Sharp",
    "cornerRound": "Round",
    "background": "Background",
    "backgroundPlain": "Plain",
    "backgroundSoft": "Soft",
    "backgroundGradient": "Gradient",
    "density": "Density",
    "densityCompact": "Compact",
    "densityCozy": "Cozy",
    "densityComfortable": "Comfortable",
    "reduceMotion": "Reduce motion",
    "advancedLocked": "These configured advanced controls remain visible, but your workspace must enable Design Plus before they can be changed.",
    "logo": "Logo",
    "logoAdd": "Upload logo",
    "logoUploading": "Uploading…",
    "logoRemove": "Remove logo",
    "logoError": "Upload failed",
    "intro": "Welcome screen",
    "introHint": "Shown before the first question in conversational mode.",
    "introHeadline": "Title",
    "introBody": "Message",
    "introButton": "Start button",
    "introButtonPlaceholder": "Start",
    "preview": "Live preview",
    "previewEmpty": "Add a question to preview the form.",
    "previewRestart": "Restart preview",
    "documentLayout": "Document layout",
    "documentPageWidth": "Page width",
    "documentPageWidthNarrow": "Narrow",
    "documentPageWidthNormal": "Standard",
    "documentPageWidthWide": "Wide",
    "documentShowNumbers": "Show question numbers",
    "documentShowNumbersHint": "Numbers follow the visible input order on each page.",
    "submissionTitle": "Response intake",
    "submissionButtonLabel": "Submit button label (optional)",
    "submissionButtonLabelPlaceholder": "Submit",
    "submissionButtonLabelHint": "Leave blank to use the form language default.",
    "acceptingResponses": "Accept new responses",
    "submissionClosesAt": "Close at (optional)",
    "submissionMaxResponses": "Maximum responses (optional)",
    "submissionClosedMessage": "Closed message (optional)",
    "respondentContinuityTitle": "Estimated respondent continuity",
    "respondentContinuityHint": "When enabled, a form-scoped capability estimates repeat visits for up to 90 days. It is not verified identity.",
    "respondentAnonymous": "Fully anonymous mode: do not persist respondent IDs",
    "repeatResponsePolicy": "Estimated repeat responses",
    "repeatResponseAllow": "Allow",
    "repeatResponseWarn": "Allow and flag for review",
    "repeatResponseSoftBlock": "Soft block",
    "respondentContinuityLimitations": "This estimate can be bypassed by private browsing, changing devices or browsers, or deleting storage. Embedded forms may have lower-confidence estimates when cookies are blocked.",
    "respondentNoticeTemplateTitle": "Suggested privacy notice",
    "respondentNoticeTemplate": "Collected item: form-scoped browser continuity estimate ID. Purpose: estimate continuity between form views and submissions and flag possible repeat responses. Retention: up to 90 days from issue. This is not verified identity and can be bypassed. Adapt this notice to your policy and applicable law before publishing.",
    "completionTitle": "Thank-you screen",
    "completionHeading": "Heading",
    "completionBody": "Message",
    "completionRedirect": "Redirect URL (optional)",
    "completionAllowAnother": "Show “Submit another response”",
    "completionIcon": "Ending icon",
    "completionIconCheck": "Check",
    "completionIconHeart": "Heart",
    "completionIconParty": "Confetti",
    "completionIconNone": "None",
    "completionCtaLabel": "Button label (optional)",
    "completionCtaUrl": "Button link (optional)",
    "completionConfetti": "Celebrate with confetti",
    "unsavedChanges": "The preview has changed, but these settings are not saved yet.",
    "contrastWarning": "Text and background contrast is too low for respondents to read comfortably. Adjust the colors.",
    "primaryContrastWarning": "The primary button color and its text have low contrast. Pick a different primary color so the call-to-action stays readable.",
    "customScriptTitle": "Custom script",
    "customScriptWarning": "This runs arbitrary JavaScript on your published form. Only paste code you trust — it can read everything respondents type and runs on every visit.",
    "customScriptLabel": "Snippet (HTML / <script>)",
    "customScriptPlaceholder": "<script>/* your analytics / pixel / widget */</script>",
    "hexLabel": "hex",
    "contrastValue": "(currently {{ratio}}:1, needs 4.5:1)",
    "notSavedFixContrast": "Not saved — fix contrast",
    "previewAddQuestions": "Add questions",
    "previewViewport": "Respondent preview"
  },
  "error": {
    "title": "Oops!",
    "unexpected": "An unexpected error occurred.",
    "notFound": "The requested page could not be found.",
    "backHome": "Back to dashboard",
    "goHome": "Go to home"
  },
  "admin": {
    "title": "Operator console",
    "badge": "Admin",
    "homeNavigation": "Admin home",
    "tabsLabel": "Admin sections",
    "backToApp": "Back to app",
    "tabs": {
      "users": "Users",
      "forms": "Forms",
      "flags": "Feature flags",
      "settings": "Settings",
      "audit": "Audit log",
      "apiLogs": "API logs",
      "usage": "AI usage",
      "modelRuns": "Model runs",
      "interviewTurns": "Turn taking",
      "scheduler": "Scheduler"
    },
    "apiLogs": {
      "empty": "No API requests yet.",
      "time": "Time",
      "method": "Method",
      "path": "Path",
      "status": "Status",
      "latency": "Latency",
      "errorCode": "Error",
      "scope": "Scope",
      "key": "Key",
      "requestId": "Request ID",
      "allStatuses": "All statuses",
      "allMethods": "All methods",
      "filter": "Filter",
      "loadMore": "Load more"
    },
    "scheduler": {
      "instanceNote": "Runtime instances are persisted by every resident worker and in-process scheduler. State reflects this web process; batch panels prefer the latest resident worker snapshot.",
      "instancesTitle": "Runtime instances",
      "lastHeartbeat": "Last heartbeat",
      "healthy": "Healthy",
      "stale": "Stale",
      "stopped": "Stopped",
      "worker": "Resident worker",
      "inProcess": "In-process",
      "noInstances": "No scheduler heartbeat has been recorded in the last 7 days.",
      "batchSource": "Batch statistics source",
      "requestProcess": "This request process",
      "refresh": "Refresh",
      "stateTitle": "State",
      "enabled": "In-process scheduler",
      "started": "Started",
      "analysisTick": "Interview analysis tick",
      "webhookTick": "Webhook tick",
      "gcTick": "GC tick",
      "on": "On",
      "off": "Off",
      "yes": "Yes",
      "no": "No",
      "running": "Running",
      "idle": "Idle",
      "disabled": "The in-process scheduler is disabled on this instance (RUN_INPROC_SCHEDULER is off).",
      "analysisTitle": "Last interview analysis batch",
      "webhookTitle": "Last webhook batch",
      "emailTitle": "Last email batch",
      "gcTitle": "Last GC sweep",
      "lastRun": "Last run",
      "never": "Never run yet",
      "claimed": "Claimed",
      "succeeded": "Succeeded",
      "failed": "Failed",
      "canceled": "Canceled",
      "superseded": "Superseded claim",
      "reclaimed": "Reclaimed",
      "staleReclaimed": "Stale reclaimed",
      "queueLag": "Queue lag",
      "errorTitle": "Last error",
      "noError": "No errors recorded.",
      "errorAt": "Occurred at",
      "failedJobsTitle": "Failed jobs",
      "failedJobsNote": "Recent terminal failures from webhook, email, and interview outbox workers. Retry resets the row to queued with attempts cleared; the next worker tick claims it.",
      "failedJobsEmpty": "No failed jobs right now.",
      "failedJobsRetried": "Job requeued.",
      "failedJobsBusy": "That job is already queued or running.",
      "failedJobsInvalid": "That job could not be retried.",
      "retry": "Retry",
      "attempts": "Attempts"
    },
    "forms": {
      "empty": "No deleted forms.",
      "emptyLive": "No live forms.",
      "form": "Form",
      "slug": "URL",
      "workspace": "Workspace",
      "status": "Status",
      "live": "Live",
      "suspended": "Suspended",
      "suspend": "Suspend",
      "unsuspend": "Unsuspend",
      "suspendReason": "Reason (optional)",
      "viewLive": "Live forms",
      "viewDeleted": "Deleted forms",
      "deletedAt": "Deleted at",
      "updatedAt": "Updated at",
      "actions": "Actions",
      "hardDelete": "Delete forever",
      "confirmHardDelete": "Click again to delete forever",
      "loadMore": "Load more",
      "errors": {
        "invalid": "The request is invalid.",
        "not_found": "The form could not be found.",
        "not_live": "Only published live forms can be suspended.",
        "not_deleted": "Only already-deleted forms can be permanently deleted."
      }
    },
    "usage": {
      "window": "Last {{days}}d",
      "note": "Aggregates token usage from AI interview runtime and post-analysis.",
      "quotaTitle": "Daily AI quotas",
      "quotaDesc": "Adjust the per-workspace daily request and token ceilings without redeploying.",
      "quotaDisabledHint": "Set a value to 0 to disable that daily quota.",
      "quotaRequestLimit": "Requests per workspace",
      "quotaTokenLimit": "Tokens per workspace",
      "quotaRuntime": "Runtime setting",
      "quotaEnvFallback": "Env default",
      "quotaStatusError": "Using env fallback",
      "quotaSave": "Save limits",
      "quotaSaving": "Saving…",
      "quotaSavedToast": "AI quota limits saved.",
      "quotaErrorToast": "Could not save AI quota limits.",
      "empty": "No AI usage in this window.",
      "calls": "Calls",
      "totalTokens": "Total tokens",
      "inputTokens": "Input tokens",
      "outputTokens": "Output tokens",
      "health": "Health",
      "degraded": "Degraded",
      "byWorkspace": "Usage by workspace",
      "byModel": "Usage by model",
      "daily": "Daily trend",
      "workspace": "Workspace",
      "model": "Model",
      "total": "Total",
      "day": "Day",
      "unknownWorkspace": "(no name)",
      "unknownModel": "(unknown)"
    },
    "modelRuns": {
      "note": "Per-stage latency, error rate, and token usage for the interview model pipeline. Operator-only — infra/cost debugging.",
      "empty": "No interview model runs in this window.",
      "byStage": "By stage",
      "byModel": "By model",
      "stage": "Stage",
      "failed": "Failed",
      "refused": "Refused",
      "errorRate": "Error rate",
      "avgLatency": "Avg latency",
      "p95Latency": "p95 latency"
    },
    "interviewTurns": {
      "note": "Turn-by-turn AI conversation log: the engine's decision mix, degraded/safety/stale rates, and latency. Operator-only — content-bearing, swept on the retention interval.",
      "empty": "No interview turns in this window.",
      "turns": "Turns",
      "degraded": "Degraded",
      "safetyBlocked": "Safety stop",
      "stale": "Stale",
      "byAction": "By action / intent",
      "byEntrypoint": "By entrypoint",
      "action": "Action",
      "intent": "Intent",
      "entrypoint": "Entrypoint",
      "outcome": "Outcome",
      "sessionLookup": "Session timeline (paste a session id)",
      "sessionIdPlaceholder": "session id…",
      "viewSession": "View session",
      "timeline": "Session timeline",
      "timelineEmpty": "No turns recorded for this session (id may be wrong or swept).",
      "prompt": "Prompt",
      "answer": "Answer",
      "reply": "Reply"
    },
    "users": {
      "add": "Add user",
      "creating": "Adding…",
      "createdToast": "User created.",
      "inviteTitle": "Invite link",
      "inviteDesc": "Create a one-time sign-up link. Each link can be used once.",
      "createInvite": "Create invite link",
      "inviteCreating": "Creating…",
      "inviteCreatedToast": "Invite link created.",
      "inviteLink": "Sign-up link",
      "inviteCopy": "Copy",
      "inviteCopied": "Copied to clipboard.",
      "inviteCopyError": "Could not copy.",
      "moreActions": "More actions",
      "actionToast": "Done.",
      "errorToast": "The request failed.",
      "selfForbidden": "You can't do this to your own account.",
      "confirmBan": "Click again to disable",
      "confirmRevoke": "Click again to sign out",
      "confirmHardDelete": "Click again to delete forever",
      "search": "Search",
      "searchPlaceholder": "Search by email, name, or internal ID…",
      "empty": "No users found.",
      "emptySearch": "No users match \"{{q}}\".",
      "clearSearch": "Clear search",
      "internalId": "Internal ID",
      "roleAdmin": "Admin",
      "banned": "Banned",
      "promote": "Make admin",
      "demote": "Revoke admin",
      "ban": "Disable",
      "unban": "Enable",
      "hardDelete": "Delete forever",
      "revoke": "Sign out",
      "resetPassword": "Reset password",
      "apply": "Apply"
    },
    "flags": {
      "intro": "Flag keys are defined in code. Here you manage global and scoped overrides of existing keys.",
      "capabilityControls": "Operator capability controls",
      "capabilityControlsIntro": "Hard deny always wins. Restricted capabilities also require an explicit workspace grant. These controls are authoritative for pilot workspaces.",
      "legacyFlags": "Legacy rollout flags",
      "hardDeny": "Hard deny",
      "restricted": "Grant required",
      "capabilityDefault": "Enrollment default",
      "codeDefaultValue": "Inherit ({{value}})",
      "grantWorkspace": "Workspace ID",
      "grant": "Grant",
      "codeDefault": "Code default",
      "globalOverride": "Global override",
      "on": "On",
      "off": "Off",
      "toggleGlobal": "Toggle global value for {{key}}",
      "resetGlobal": "Reset to code default",
      "scope": "Scope",
      "scopeWorkspace": "Workspace",
      "scopeUser": "User",
      "scopeId": "Scope ID",
      "scopeIdPlaceholder": "organization.id or user.id",
      "value": "Value",
      "addScope": "Add scoped override",
      "clear": "Clear",
      "apply": "Apply",
      "savedToast": "Flag updated.",
      "errorToast": "Could not update the flag."
    },
    "settings": {
      "publicSignupTitle": "Public sign-up",
      "publicSignupDesc": "Allow anyone to create an account from the sign-up page.",
      "publicSignupOn": "Public sign-up is enabled — anyone can register.",
      "publicSignupOff": "Public sign-up is disabled — only operators can add users.",
      "publicSignupStatusError": "Could not read the saved sign-up setting. Production falls back to closed sign-ups until this is resolved.",
      "savedToast": "Setting saved."
    },
    "audit": {
      "empty": "No activity yet.",
      "time": "Time",
      "actor": "Operator",
      "action": "Action",
      "target": "Target",
      "details": "Details",
      "loadMore": "Load more",
      "allActions": "All actions",
      "actorPlaceholder": "Filter by operator email",
      "filter": "Filter"
    }
  },
  "workflow": {
    "questions": "Questions added",
    "published": "Published",
    "responses": "Responses collected",
    "label": "Form progress",
    "next": "Next",
    "statusCompleted": "Completed",
    "statusNext": "Next step",
    "statusPending": "Not completed",
    "itemAria": "{{step}}: {{status}}",
    "stepCount": "{{done}} of {{total}} steps done"
  },
  "interviewReview": {
    "title": "Qualitative code review",
    "description": "Accept, reject, or edit evidence-grounded AI codes. Every decision is kept as an immutable review event.",
    "openReview": "Review AI codes",
    "backToResults": "Back to results",
    "filterLabel": "Review status",
    "empty": "There are no codes in this review state.",
    "evidence": "Source evidence",
    "staleEvidence": "The source answer changed. This old quote is hidden and cannot be reviewed.",
    "openResponse": "Open source response",
    "useAsCrosstabBanner": "Use codes as crosstab banner",
    "codebook": "Codebook",
    "model": "Model run",
    "rationale": "Review rationale",
    "rationalePlaceholder": "Explain the evidence for this decision",
    "accept": "Accept code",
    "accepting": "Accepting…",
    "reject": "Reject code",
    "rejecting": "Rejecting…",
    "editAndAccept": "Edit and accept",
    "editedLabel": "Edited code label",
    "editedDescription": "Edited code description",
    "saveEdit": "Save edited code",
    "saving": "Saving…",
    "status": {
      "all": "All",
      "pending": "Pending",
      "accepted": "Accepted",
      "rejected": "Rejected",
      "edited": "Edited"
    },
    "error": {
      "invalid": "The review decision was invalid.",
      "not_found": "The code is no longer available.",
      "conflict": "Someone else reviewed this code. The page has been refreshed.",
      "ungrounded_evidence": "This code cannot be reviewed because its source evidence is invalid.",
      "quota_exceeded": "The workspace AI usage limit has been reached. Try again after the quota resets.",
      "coding_busy": "Qualitative coding is already running for this question. Wait for it to finish and try again."
    }
  },
  "classicCoding": {
    "title": "Open-text qualitative coding",
    "description": "Version a codebook, code published long-text answers, and review every evidence-grounded result.",
    "open": "Qualitative coding",
    "codebookTitle": "Codebook versions",
    "codebookVersion": "Codebook version",
    "codebookName": "Codebook name",
    "taxonomyVersion": "Taxonomy version",
    "allowEmergentCodes": "Allow emergent codes",
    "entries": "Code entries",
    "addEntry": "Add code",
    "entriesEmpty": "Add the first code to this codebook.",
    "entryId": "Stable code ID",
    "entryType": "Code type",
    "removeEntry": "Remove code",
    "entryLabel": "Code label",
    "entryDescription": "Code description",
    "entryRules": "Inclusion, exclusion, and examples",
    "inclusionCriteria": "Inclusion criteria, one per line",
    "exclusionCriteria": "Exclusion criteria, one per line",
    "examples": "Examples, one per line",
    "codebookEmpty": "No codebook has been created for this source.",
    "defaultCodebookName": "Research codebook",
    "createCodebook": "Create codebook",
    "saveNewVersion": "Save as new version",
    "runTitle": "Run coding",
    "runUnavailable": "Publish a long-text question and create a codebook first.",
    "question": "Long-text question",
    "run": "Code next 25 responses",
    "running": "Coding responses…",
    "manualLifecycle": "Classic source · manual batches · answer hash and exact-span freshness",
    "automaticLifecycle": "Interview source · automatic completion outbox · immutable message spans",
    "automaticRunDescription": "Interview coding runs automatically after each completed session. Retry and idempotency are managed by the analysis worker.",
    "editorRunOnly": "Analysts can review codes. Only editors can start a classic coding batch."
  },
  "charts": {
    "barItemLabel": "{{label}}: {{pct}}% ({{count}} responses)"
  },
  "a11y": {
    "scrollableTable": "Scrollable table",
    "navigatedTo": "Navigated to {{title}}",
    "scrollableRegion": "Scrollable region"
  }
}
