{
  "app": {
    "title": "ScanChess",
    "subtitle": "AI Chess Scoresheet Recognition",
    "aiPowered": "AI Powered"
  },
  "auth": {
    "login": "Login",
    "signup": "Sign Up",
    "logout": "Logout",
    "loginRequired": "Login Required",
    "loginDescription": "Login to use the scanning feature. New users get 10 free credits.",
    "loginNow": "Login / Sign Up",
    "email": "Email",
    "password": "Password",
    "confirmPassword": "Confirm Password",
    "forgotPassword": "Forgot Password?",
    "noAccount": "Don't have an account?",
    "hasAccount": "Already have an account?",
    "signupSuccess": "Account created successfully",
    "orContinueWith": "Or continue with",
    "loginSuccess": "Login successful",
    "logoutSuccess": "Logged out",
    "emailNotVerified": "Email Not Verified",
    "emailNotVerifiedDesc": "Please check your email and click the verification link to activate your account.",
    "invalidCredentials": "Invalid email or password",
    "emailAlreadyRegistered": "This email is already registered",
    "verificationSent": "Verification Email Sent",
    "verificationSentDesc": "Please check your inbox and click the verification link.",
    "checkYourEmail": "Check Your Email",
    "verificationSentTo": "We've sent a verification email to {{email}}. Please click the link to activate your account.",
    "resendEmail": "Resend Verification Email",
    "verificationResent": "Email Resent",
    "verificationResentDesc": "A new verification email has been sent.",
    "enterEmailFirst": "Please enter your email address first",
    "didntReceiveEmail": "Didn't receive the email? Resend",
    "referralBonus": "Use a referral code to get 5 bonus credits",
    "emailVerificationNotice": "You'll need to verify your email address to complete registration.",
    "emailVerified": "Email Verified",
    "emailUnverified": "Email Not Verified",
    "verifyStatus": {
      "waiting": {
        "title": "Check your email",
        "description": "Open the verification link we sent before using scan credits."
      },
      "verifying": {
        "title": "Verifying your email",
        "description": "This will only take a moment."
      },
      "verified": {
        "title": "Email verified",
        "description": "Your account is ready to scan."
      },
      "failed": {
        "title": "Verification link invalid",
        "description": "The link is invalid or expired. Sign in to request another one."
      }
    },
    "welcomeBack": "Welcome back.",
    "welcome": "Welcome to ScanChess.",
    "emailPlaceholder": "you@example.com",
    "passwordPlaceholder": "At least 6 characters",
    "signupWithCredits": "Sign Up — 10 free credits",
    "enterValidEmail": "Enter a valid email address",
    "passwordResetSent": "Check your email",
    "passwordResetSentDesc": "If an account exists for that address, we sent a password reset link.",
    "validation": {
      "emailInvalid": "Enter a valid email address.",
      "passwordMin": "The password must be at least 6 characters."
    },
    "agreement": "By continuing you agree to the <terms>Terms of Service</terms> and <privacy>Privacy Policy</privacy>.",
    "pageTitle": "Sign in to ScanChess"
  },
  "scan": {
    "title": "Start Scan",
    "seoHeading": "Scan a chess scoresheet or board photo",
    "seoIntro": "Upload a clear photo to convert handwritten moves into validated SAN and PGN, or turn a board position into FEN.",
    "inputType": "Image type",
    "scoresheetMode": "Handwritten scoresheet",
    "boardMode": "Board image",
    "uploadBoardImage": "Upload Board Image",
    "scanning": "AI Recognizing...",
    "uploadImages": "Upload Images",
    "dragDrop": "Drag and drop scoresheet images here",
    "orClick": "or click to select",
    "tapUpload": "Tap to add scoresheet photos",
    "tapUploadHint": "Take a photo or pick from your library",
    "pasteSupport": "Supports paste (Ctrl+V)",
    "maxImages": "Maximum {{count}} images",
    "maxSize": "Max {{size}}MB per image",
    "scanSuccess": "Scan Complete",
    "scanSuccessDesc": "Successfully recognized {{count}} moves, cost {{credits}} credits",
    "scanSuccessSavedDesc": "Recognized {{count}} moves, used {{credits}} credits, and saved the game to History",
    "scanSuccessImagePending": "Recognized {{count}} moves and saved the game to History, but the source image still needs to be saved",
    "notationTranslated": "The piece letters were read as {{language}} notation ({{mapping}}).",
    "scanFailed": "Scan Failed",
    "noImages": "Please Upload Images",
    "noImagesDesc": "Upload scoresheet images to start scanning",
    "insufficientCredits": "Insufficient Credits",
    "insufficientCreditsDesc": "Scanning requires {{cost}} credits, current balance {{balance}}",
    "inviteFriends": "Invite friends for more credits",
    "scoresheetImages": "Scoresheet Images",
    "uploadedImages": "Uploaded Images",
    "monthlyQuotaUsed": "Monthly Pro quota used up",
    "monthlyQuotaUsedDesc": "You've used this month's Pro scan credits. They refresh on {{date}}.",
    "monthlyQuotaUsedDescNoDate": "You've used this month's Pro scan credits. They refresh next period.",
    "upgradeHint": "Upgrade to Pro in the ScanChess app for 100 credits/month",
    "outOfCredits": "You're out of credits for this scan.",
    "seePricing": "Get more credits — $4.99/month",
    "overlayDescription": "Analyzing the scoresheet images and extracting the moves.",
    "cancelWait": "Stop waiting",
    "cancelWaitDesc": "Processing may finish in the background. Retry the same images to retrieve it without another charge.",
    "uploadRejected": "Some images could not be added",
    "uploadRejectedDesc": "{{count}} file(s) exceeded the type, size, or {{max}}-image limit.",
    "verifyEmailRequired": "Verify your email first",
    "verifyEmailRequiredDesc": "Scanning is available once you confirm your email address. Check your inbox, or send the link again.",
    "verifyEmailCta": "Send the verification link",
    "repeatScanTitle": "Same image — no credits used",
    "repeatScanDesc": "This is the result from the earlier scan of this photo. Re-scanning an unchanged image never costs credits. For a different result, take a clearer or more complete photo.",
    "lowBalance": "{{balance}} credits left — about one more scoresheet.",
    "onlineSourceNotice": "This looks like a screenshot of an online game. A screenshot only shows the moves visible in the move panel, so the scan cannot recover the rest — on Chess.com or Lichess, exporting the PGN from the game itself gives you the full game.",
    "scanWithCost": "Scan · {{cost}} credits",
    "recognizeWithCost": "Recognize · {{cost}} credit",
    "pasteHint": "Paste with {{shortcut}}",
    "uploadLimits": "Up to {{max}} images, {{size}} MB each — JPG, PNG or WebP. HEIC is not supported; convert it first.",
    "uploadLimitsBoard": "One image, up to {{size}} MB — JPG, PNG or WebP. HEIC is not supported; convert it first.",
    "imageCount": "{{count}} of {{max}} images added",
    "fileRejectedType": "{{name}}: unsupported format. Use JPG, PNG or WebP — HEIC must be converted first.",
    "fileRejectedSize": "{{name}}: larger than {{size}} MB.",
    "fileRejectedCount": "{{name}}: only {{max}} image(s) can be scanned at once.",
    "fileRejectedRead": "{{name}}: could not be read as an image.",
    "switchToBoardTitle": "Keep only the first image?",
    "switchToBoardDesc": "Board recognition reads a single photo. Switching keeps the first of your {{count}} images and removes the rest.",
    "switchToBoardConfirm": "Keep first image",
    "signInHint": "You'll be asked to sign in before the scan runs. New accounts get 10 free credits.",
    "unverifiedNotice": "Your first scan works without verifying your email; verify to keep scanning.",
    "unverifiedUsedTitle": "Free unverified scan used",
    "unverifiedUsedDesc": "Verify your email to keep scanning. We can send the link again.",
    "resendVerification": "Resend link",
    "stillRunningTitle": "The scan is still running",
    "stillRunningDesc": "The server is still processing this photo. Your credits were charged once and the same photo will not be charged again — try again in a minute to pick up the result.",
    "replayedTitle": "Loaded your earlier result",
    "replayedDesc": "This photo was already scanned. No credits were charged.",
    "getCredits": "Get credits",
    "insufficientInline": "You have {{balance}} credits; this scan needs {{cost}}.",
    "imageAlt": "Scoresheet page {{n}}",
    "boardImageAlt": "Board photo",
    "removeImage": "Remove image {{n}}",
    "moveImageEarlier": "Move image {{n}} earlier",
    "moveImageLater": "Move image {{n}} later",
    "restoredTitle": "Restored your unsaved game",
    "restoredDesc": "Your moves and images from before the reload are back.",
    "restoredDismiss": "Dismiss",
    "batchHint": "Scanning a whole tournament round? Use batch scanning"
  },
  "notation": {
    "de": "German",
    "es": "Spanish",
    "fr": "French",
    "pt": "Portuguese",
    "nl": "Dutch",
    "pl": "Polish",
    "cs": "Czech",
    "hu": "Hungarian",
    "ru": "Russian",
    "zh": "Chinese"
  },
  "game": {
    "moves": "Moves",
    "totalMoves": "{{count}} moves total",
    "doubleClickEdit": "Use the pencil button to edit",
    "noMoves": "No Game Data",
    "noMovesDesc": "Upload scoresheet images to start scanning",
    "suspiciousMoves": "{{count}} move(s) may need review",
    "autoFixPrompt": "Engine check flagged {{issues}} problem move(s); auto-fix would adjust {{changes}} spot(s)",
    "autoFixApply": "Try auto-fix",
    "autoFixDismiss": "Keep as scanned",
    "allMovesValid": "All moves validated successfully",
    "alternatives": "Alternatives",
    "moveEmpty": "Move cannot be empty",
    "illegalMove": "Move {{move}} does not replay from the position before it. Fix it with the pencil, and any later problem will show up next.",
    "white": "White",
    "black": "Black",
    "event": "Event",
    "site": "Site",
    "date": "Date",
    "result": "Result",
    "unknown": "Unknown",
    "unknownEvent": "Unknown Event",
    "unknownSite": "Unknown Site",
    "unknownDate": "Unknown Date",
    "navStart": "Go to start",
    "navPrev": "Previous move",
    "navNext": "Next move",
    "navEnd": "Go to final position",
    "navReset": "Reset board",
    "navFlip": "Flip board",
    "resultWhite": "White won",
    "resultBlack": "Black won",
    "resultDraw": "Draw",
    "resultOngoing": "Ongoing",
    "editMove": "Edit {{move}}",
    "goToMove": "Show the position after {{move}}",
    "resetTitle": "Discard this scan?",
    "resetDescription": "This clears the current images, moves, and any unsaved corrections. It cannot be undone.",
    "scanUnreliable": {
      "notFromStartingPosition": "This move list doesn't start from the opening",
      "notFromStartingPositionHint": "It looks like part of a game — a screenshot of a move panel, or a later page of a scoresheet. The moves are shown exactly as scanned; we can't replay or auto-correct them without the earlier moves. Scan the full scoresheet from move 1, or edit the moves by hand.",
      "descriptiveNotation": "This scoresheet uses descriptive notation",
      "descriptiveNotationHint": "Moves like P-K4 or P4R name pieces instead of squares. We can only read algebraic notation (e4, Nf3) for now, so the moves are shown exactly as scanned rather than converted."
    },
    "lowConfidence": "Read with {{percent}}% confidence — check it against the scoresheet.",
    "implausible": "A legal move the game argues with: {{san}} would win {{gain}} pawns on {{square}} and nobody played it. This ply or the next one was probably misread.",
    "replaceWith": "Replace with {{move}}",
    "insertBefore": "Insert a move before {{move}}",
    "insertMove": "Insert move",
    "deleteMove": "Delete {{move}}",
    "undoEdit": "Undo last edit",
    "newMovePlaceholder": "e.g. Nf3",
    "moreActions": "More actions for {{move}}",
    "round": "Round",
    "opening": "Opening",
    "addWhite": "Add white player",
    "addBlack": "Add black player",
    "addEvent": "Add event",
    "addSite": "Add site",
    "addDate": "Add date",
    "addRound": "Add round",
    "editField": "Edit {{field}}"
  },
  "history": {
    "title": "History",
    "viewAll": "View All",
    "noHistory": "No History",
    "cloudSync": "Login to sync history to cloud",
    "gameLoaded": "Game Loaded",
    "deleted": "Deleted",
    "deletedDesc": "History record deleted",
    "justNow": "Just now",
    "minutesAgo": "{{count}} min ago",
    "hoursAgo": "{{count}} hours ago",
    "daysAgo": "{{count}} days ago",
    "startScan": "Scan a scoresheet",
    "totalRecords_one": "1 game saved",
    "totalRecords_other": "{{count}} games saved",
    "loadedRecords": "{{count}} games loaded — more are available",
    "moveCount_one": "1 move",
    "moveCount_other": "{{count}} moves",
    "scanAnother": "Scan another",
    "noHistoryDesc": "Games you save after a scan appear here, on every device you sign in from.",
    "deleteGame": "Delete {{game}}",
    "deleteTitle": "Delete this game?",
    "deleteDesc": "{{game}} will be removed from your library. This cannot be undone — export the PGN first if you want to keep it.",
    "searchLabel": "Search saved games",
    "searchPlaceholder": "Search by player, event or date",
    "matchCount": "{{count}} of {{total}} games",
    "savedAt": "Saved {{when}}",
    "loadMore": "Load more games",
    "openGame": "Open {{game}}",
    "deleteFailed": "Could not delete the game",
    "deleteFailedDesc": "The game is still in your library. Please try again.",
    "sharedBadge": "Shared",
    "revokeShare": "Revoke the share link for {{game}}",
    "revokeTitle": "Revoke this share link?",
    "revokeDesc": "The link to {{game}} will stop working for everyone who has it. You can create a new one later.",
    "needsCorrection_one": "1 move needs correction",
    "needsCorrection_other": "{{count}} moves need correction",
    "sortLabel": "Sort",
    "sort": {
      "savedDesc": "Newest saved",
      "savedAsc": "Oldest saved",
      "gameDateDesc": "Game date, newest first",
      "gameDateAsc": "Game date, oldest first",
      "white": "White player, A to Z",
      "black": "Black player, A to Z"
    },
    "filterLabel": "Result",
    "filter": {
      "all": "All",
      "whiteWins": "1-0",
      "blackWins": "0-1",
      "draws": "½-½",
      "unfinished": "Unfinished"
    },
    "tryBatch": "Scan a whole round at once"
  },
  "export": {
    "exportPGN": "Export PGN",
    "copyPGN": "Copy PGN",
    "copied": "Copied",
    "embed": "Embed Game",
    "embedCopied": "Embed code copied to clipboard",
    "exportSuccess": "Export Successful",
    "exportSuccessDesc": "PGN file downloaded",
    "copySuccess": "Copy Successful",
    "copySuccessDesc": "PGN copied to clipboard",
    "noData": "No Game Data",
    "noDataDesc": "Please scan scoresheet images first",
    "saveGame": "Save Game",
    "saving": "Saving...",
    "gameSaved": "Game Saved",
    "gameSavedDesc": "Game has been saved to your history",
    "saveFailed": "Save Failed",
    "saveFailedDesc": "Failed to save game. Please try again.",
    "gameSavedWithCorrections_one": "Saved — 1 move still needs correction",
    "gameSavedWithCorrections_other": "Saved — {{count}} moves still need correction",
    "gameSavedWithCorrectionsDesc": "Replay stops at move {{ply}}. Fix the moves and save again.",
    "signInToSave": "Sign in to save",
    "openLichess": "Open on Lichess",
    "lichessOpening": "Sending to Lichess…",
    "lichessFailed": "Lichess did not take the game",
    "lichessFailedDesc": "The import did not go through. Copy the PGN and paste it at lichess.org/paste instead.",
    "lichessRateLimited": "Lichess is limiting imports right now. Wait a minute and try again, or paste the PGN at lichess.org/paste.",
    "lichessPasteReady": "We opened Lichess' paste page and copied the PGN — press ⌘V / Ctrl+V there and import it."
  },
  "share": {
    "title": "Share",
    "text": "Check out this game: {{title}} ({{count}} moves) - Scanned with ScanChess.com",
    "wechat": "WeChat",
    "wechatTitle": "Share to WeChat",
    "wechatDesc": "Link copied! Paste it in WeChat to share.",
    "copyLink": "Copy Link",
    "copied": "Copied!",
    "linkCopied": "Link Copied",
    "linkCopiedDesc": "Share link copied to clipboard",
    "more": "More Options",
    "cardTitle": "Share it with your opponent",
    "cardBody": "You both played this game — send them a link so they can replay it. Anyone can open it, no account needed.",
    "cardBodyShared": "The link is live. Anyone who has it can replay this game.",
    "needsSave": "Save the game first — a share link points at the saved copy.",
    "createLink": "Create share link",
    "linkReady": "Share link ready",
    "linkReadyDesc": "Send it to your opponent — they can open it without signing in.",
    "linkFailed": "Could not create the link",
    "linkFailedDesc": "Please try again in a moment.",
    "linkRevoked": "Link revoked",
    "linkRevokedDesc": "The old link no longer opens this game.",
    "revokeLink": "Revoke",
    "anyoneWithLink": "Anyone with the link can view this game.",
    "anyoneWithLinkImages": "Anyone with the link can view this game and the scoresheet photos.",
    "unsavedEdits": "You have edited this game since it was saved. Save again so the link shows your corrections.",
    "includeImages": "Include the original scoresheet photos",
    "includeImagesHint": "Off by default. Turn it on if the person you send the link to should see the uploaded photos.",
    "imagesNowShared": "Scoresheet photos are now visible on the link",
    "imagesNowPrivate": "Scoresheet photos are no longer on the link",
    "updateFailed": "Could not update the link",
    "revokeFailed": "Could not revoke the link",
    "copyFailedDesc": "Copy the link from the box above instead."
  },
  "user": {
    "profile": "Profile",
    "credits": "Credits",
    "settings": "Settings",
    "referralCode": "Referral Code",
    "copyCode": "Copy Code",
    "codeCopied": "Code Copied",
    "copyReferralLink": "Copy Referral Link",
    "referralBonusDesc": "Share with friends, both get 5 credits!",
    "referralPlaceholder": "Friend's referral code",
    "proUntil": "Pro until",
    "creditsRefresh": "Credits refresh",
    "manageSubscription": "Manage subscription"
  },
  "demo": {
    "title": "How it works",
    "source": "Scoresheet",
    "sourceBoard": "Board Photo",
    "result": "Digital Board"
  },
  "nav": {
    "home": "Home",
    "history": "History",
    "about": "About",
    "howToUse": "Tutorial",
    "faq": "FAQ",
    "boardRecognition": "Board Recognition",
    "scan": "Scan",
    "howItWorks": "How it works",
    "blog": "Blog",
    "solutions": "Solutions",
    "scanCta": "Scan an image",
    "pricing": "Pricing",
    "settings": "Settings",
    "tools": "Tools"
  },
  "footer": {
    "tagline": "Turn a board image into a position to analyse, or handwritten scoresheets into a game to replay. Check the result, then make your next move.",
    "rights": "All rights reserved",
    "product": "Product",
    "resources": "Resources",
    "company": "Company",
    "scanScoresheet": "Scan a scoresheet",
    "boardToFen": "Board photo → FEN",
    "howItWorks": "How it works",
    "blog": "Blog",
    "solutions": "Solutions",
    "scoresheetToPgn": "Scoresheet → PGN",
    "faq": "FAQ",
    "about": "About",
    "gameHistory": "Game history",
    "privacy": "Privacy Policy",
    "terms": "Terms of Service",
    "deleteAccount": "Delete Account",
    "pricing": "Pricing",
    "support": "Support",
    "contactSupport": "Contact support",
    "supportLabel": "Support",
    "refunds": "Refund Policy",
    "operator": "ScanChess is operated by SudoAI. Web subscriptions are sold by Waffo as merchant of record.",
    "security": "Security",
    "status": "Status",
    "changelog": "Changelog",
    "cookieSettings": "Cookie settings",
    "tools": "Free chess tools",
    "allTools": "All free tools",
    "pgnViewer": "PGN viewer",
    "boardEditor": "Board editor & FEN",
    "pgnValidator": "PGN validator",
    "printableScoresheets": "Printable scoresheets"
  },
  "about": {
    "kicker": "About ScanChess",
    "title": "A scoresheet scanner from a small team that plays",
    "lead": "ScanChess turns photos of handwritten chess scoresheets into rule-checked, editable PGN. This page says who makes it, why, how the recognition works, and what it does not do.",
    "cta": "Scan a scoresheet",
    "who": {
      "title": "Who builds it",
      "body1": "ScanChess is made by SudoAI, a small software studio. There is no sales team and no support department: the people who write the code read the support inbox and look at every scan a user reports as wrong.",
      "body2": "The guides on the blog are written by the same team and checked against the FIDE handbook and the platforms they describe."
    },
    "why": {
      "title": "Why it exists",
      "body": "Over-the-board games end up as a stack of paper, and typing them into a database is slow enough that most are never looked at again. We wanted the step from a scoresheet photo to a game you can replay to take about a minute — including the checking."
    },
    "how": {
      "title": "How recognition works",
      "steps": [
        "A vision model reads the handwriting on each photo and proposes a move for every cell, with a confidence score.",
        "The proposed moves are replayed on a board with chess.js. A move that is illegal in its position, or that the model was unsure about, is flagged. Nothing is corrected silently.",
        "You check the flagged moves against your scoresheet in the editor — retype a move, pick one of the alternatives the rules allow, insert or delete a move — then export the PGN or save the game."
      ],
      "note": "Recognition quality depends on the handwriting, the lighting and the notation used, so we do not quote an accuracy figure. Expect to check a few moves in a typical game."
    },
    "not": {
      "title": "What it does not do",
      "items": [
        "It does not guarantee an error-free transcription. A flagged move is one to check; an unflagged move can still be wrong when a misread was confident.",
        "It reads standard algebraic notation (e4, Nf3, O-O). Descriptive notation (P-K4) and non-Latin piece letters are not converted.",
        "It does not upload games to Lichess or Chess.com for you. It gives you a standard .pgn file, which those sites and desktop programs import.",
        "Scanning uses credits and needs an account. The PGN viewer, board editor and PGN validator are free and work without signing in."
      ]
    },
    "links": {
      "title": "Elsewhere on this site",
      "security": "Security — how uploads and accounts are protected, and how to report a vulnerability",
      "status": "Status — a live check of the website and the scanning API",
      "changelog": "Changelog — what shipped and when",
      "contact": "Contact — email the team about a bad scan or a billing question"
    }
  },
  "common": {
    "loading": "Loading...",
    "error": "Error",
    "success": "Success",
    "cancel": "Cancel",
    "confirm": "Confirm",
    "save": "Save",
    "delete": "Delete",
    "edit": "Edit",
    "back": "Back",
    "next": "Next",
    "prev": "Previous",
    "language": "Language",
    "optional": "optional",
    "closeMenu": "Close menu",
    "copyFailed": "Failed to copy",
    "pageNotFound": "Page not found",
    "returnHome": "Return to Home",
    "imgScoresheet": "Chess scoresheet",
    "imgBoard": "Chess board",
    "imgDigitalBoard": "Digital chessboard",
    "menu": "Menu",
    "versus": "vs",
    "sentenceEnd": "."
  },
  "notFound": {
    "description": "The address may be mistyped, or the page has moved. These are the places most people are looking for.",
    "tools": "Free chess tools"
  },
  "errors": {
    "INVALID_CREDENTIALS": "Invalid email or password.",
    "EMAIL_EXISTS": "This email is already registered. Sign in instead, or use the reset link if you forgot the password.",
    "REAUTH_REQUIRED": "That password or sign-in check did not match this account.",
    "INVALID_RESET_TOKEN": "This reset link is invalid or has expired. Request a new one from the sign-in page.",
    "INVALID_VERIFICATION_TOKEN": "This verification link is invalid or has expired. Sign in to request another one.",
    "VERIFICATION_UNAVAILABLE": "Verification emails cannot be sent right now. Please try again later.",
    "INVALID_GOOGLE_TOKEN": "Google could not confirm your identity. Please try again.",
    "GOOGLE_EMAIL_UNVERIFIED": "Your Google account email is not verified, so it cannot be used to sign in.",
    "GOOGLE_LOGIN_DISABLED": "Sign in with Google is not available right now.",
    "INVALID_INPUT": "Some of the information entered is not valid. Please check it and try again.",
    "NOT_FOUND": "We could not find that record.",
    "SESSION_EXPIRED": "Your session has expired. Please sign in again.",
    "EMAIL_NOT_VERIFIED": "Verify your email address before using scan credits.",
    "INSUFFICIENT_CREDITS": "You do not have enough credits for this action.",
    "SUBSCRIPTION_ACTIVE": "Cancel the active App Store subscription before deleting this account.",
    "CHECKOUT_FAILED": "Checkout could not be started. Please try again in a moment.",
    "CANCEL_FAILED": "The subscription could not be cancelled. Please try again or contact support.",
    "server": "Something went wrong on our side. Please try again in a moment.",
    "network": "Could not reach ScanChess. Check your connection and try again.",
    "generic": "Something went wrong. Please try again."
  },
  "resetPassword": {
    "title": "Reset password",
    "checkingLink": "Checking your reset link…",
    "missingToken": "This link is missing its token. Request a new reset email from the sign-in page or the app.",
    "goToSignIn": "Go to sign in",
    "done": "Password updated. Sign in with your new password.",
    "confirmNew": "Confirm new password",
    "submit": "Set new password"
  },
  "boardRecognition": {
    "title": "Board Recognition",
    "subtitle": "Upload a chess board image, AI will recognize the position and generate FEN",
    "uploadTitle": "Upload Board Image",
    "uploadDesc": "Supports diagrams, real board photos, and screenshots",
    "dragDrop": "Drag and drop a board image here",
    "orClick": "or click to select",
    "tapUpload": "Tap to add a board photo",
    "uploadImageFirst": "Please upload a board image first",
    "recognizing": "AI Recognizing...",
    "recognize": "Recognize Position",
    "result": "Recognition Result",
    "confidence": "Confidence",
    "notes": "Notes",
    "noResult": "No Result Yet",
    "noResultDesc": "Upload a board image to start recognition",
    "recognitionSuccess": "Recognition Successful",
    "recognitionSuccessDesc": "Position recognized, cost {{credits}} credit(s)",
    "recognitionFailed": "Recognition Failed",
    "insufficientCreditsDesc": "Recognition requires {{cost}} credit(s), current balance {{balance}}",
    "fenCopied": "FEN copied to clipboard",
    "copyFen": "Copy FEN",
    "uncertainSquares": "Check highlighted squares: {{squares}}",
    "invalidFen": "Invalid FEN format, may need manual correction",
    "reset": "Reset Board",
    "feature1Title": "Multiple Image Types",
    "feature1Desc": "Supports diagrams, real board photos, and digital screenshots",
    "feature2Title": "AI Recognition",
    "feature2Desc": "Advanced AI accurately identifies piece positions and generates standard FEN",
    "feature3Title": "One-Click Copy",
    "feature3Desc": "Recognition results can be copied directly for use in any chess software",
    "flipBoard": "Flip board",
    "openInEditor": "Open in board editor",
    "analyseLichess": "Analyse on Lichess"
  },
  "analysis": {
    "title": "Engine Analysis",
    "depth": "Depth",
    "calculating": "Calculating",
    "startAnalysis": "Start Analysis",
    "stopAnalysis": "Stop Analysis",
    "bestMove": "Best Move",
    "evaluation": "Evaluation",
    "annotations": "Annotations",
    "comment": "Comment",
    "addComment": "Add a comment...",
    "arrows": "Arrows",
    "arrowsHighlights": "Arrows & Highlights",
    "bookmark": "Bookmark",
    "symbols": "Symbols",
    "engineOff": "Engine Off",
    "engineLoading": "Loading Engine...",
    "engineReady": "Engine Ready",
    "engineError": "Engine Failed",
    "enable": "Turn on the engine",
    "disable": "Turn off the engine",
    "unavailable": "The engine could not load in this browser.",
    "lines": "Best lines",
    "noLegalMoves": "No legal moves: the game is over.",
    "reviewGame": "Review the whole game",
    "reviewing": "Reviewing position {{done}} of {{total}}…",
    "stopReview": "Stop the review",
    "accuracy": "Accuracy",
    "bestWas": "Best was {{san}}",
    "kind": {
      "book": "Book",
      "best": "Best",
      "good": "Good",
      "inaccuracy": "Inaccuracy",
      "mistake": "Mistake",
      "blunder": "Blunder"
    },
    "poweredBy": "Stockfish 18 runs in your browser; nothing is uploaded.",
    "licence": "Engine source (GPL-3.0)",
    "linePreview": "Line preview",
    "previewingLine": "Line preview · move {{current}} of {{total}}",
    "exitPreview": "Exit preview",
    "previewLineHint": "Play this line out on the board",
    "saveAsVariation": "Save as variation"
  },
  "home": {
    "badge": "AI scoresheet OCR",
    "hero": {
      "titlePre": "Turn handwritten scoresheets into",
      "titleMid": "",
      "titleEm": "clean PGN",
      "lead": "Snap a photo of your chess scoresheet. ScanChess transcribes every move, checks each one against the rules, marks what it is unsure about, and hands you an editable PGN that works with Lichess, Chess.com, or your analysis tool.",
      "ctaPrimary": "Scan your scoresheet",
      "ctaSecondary": "See how it works",
      "trust": "10 free credits for new accounts — no card required.",
      "demoOriginal": "Handwritten · the original",
      "demoArrow": "AI reads & validates",
      "reviewBadge": "Rule-checked · editable"
    },
    "exportsLabel": "Works with",
    "steps": {
      "kicker": "How it works",
      "title": "From paper to PGN in three steps",
      "subtitle": "No typing, no manual transcription, no learning curve.",
      "s1title": "Photograph the scoresheet",
      "s1desc": "A clear, flat, well-lit photo is all it takes — phone or scanner, no app to install.",
      "s2title": "AI reads every move",
      "s2desc": "ScanChess transcribes the notation and validates each move against the board as it goes.",
      "s3title": "Review & export",
      "s3desc": "Fix flagged moves in the editor, then download your game or replay it move by move."
    },
    "features": {
      "kicker": "Why ScanChess",
      "title": "Everything you need to digitize your games",
      "f1title": "Reads your handwriting",
      "f1desc": "AI OCR turns a photo of a handwritten scoresheet into algebraic notation — messy pen included, with anything uncertain marked for your review.",
      "f2title": "Catches mistakes",
      "f2desc": "Every move is rule-checked and editable: illegal or low-confidence entries are flagged so you can confirm them before you export.",
      "f3title": "Exports standard PGN",
      "f3desc": "Download a standard .pgn file that opens in Lichess, Chess.com, ChessBase, or SCID.",
      "f4title": "Faster than typing it",
      "f4desc": "A whole game usually comes back in well under a minute. Checking the few flagged moves takes far less time than typing the game out."
    },
    "blog": {
      "kicker": "From the journal",
      "title": "Guides on notation & PGN",
      "all": "All articles",
      "minRead": "min"
    },
    "cta": {
      "title": "Ready to digitize your scoresheets?",
      "desc": "Upload your first game and get a rule-checked, editable PGN in seconds.",
      "button": "Scan your scoresheet"
    }
  },
  "blog": {
    "pageTitle": "ScanChess Blog",
    "pageSubtitle": "Guides on chess notation, scoresheets, PGN, and digitizing your games.",
    "solutions": "Solutions",
    "allArticles": "All articles",
    "searchLabel": "Search articles",
    "searchPlaceholder": "Search articles",
    "clearSearch": "Clear search",
    "resultCount_one": "{{count}} article",
    "resultCount_other": "{{count}} articles",
    "noResults": "No articles match that. Try another word, or clear the filters.",
    "minRead": "min read",
    "keepReading": "Keep reading",
    "diagramAlt": "Workflow diagram for {{title}}",
    "sources": "Sources and review notes",
    "reviewed": "Sources reviewed {{date}}",
    "ctaTitle": "Turn your scoresheet into PGN in seconds",
    "ctaDesc": "Upload a photo and let ScanChess do the transcription.",
    "ctaButton": "Scan your scoresheet",
    "categories": {
      "Improvement": "Improvement",
      "Guides": "Guides",
      "Notation": "Notation",
      "Comparison": "Comparison",
      "Rules": "Rules",
      "Tools": "Tools",
      "Billing": "Billing",
      "Statistics": "Statistics"
    }
  },
  "blogTools": {
    "pgnTitle": "Try a PGN on the board",
    "pgnLead": "The example is already loaded. Step through the moves, tap a move, or copy the FEN of any position.",
    "fenTitle": "Decode a FEN field by field",
    "fenLead": "Paste a complete six-field FEN. The board and explanation update locally in your browser.",
    "invalidFen": "Enter a complete, valid six-field FEN.",
    "placement": "Piece placement",
    "placementHint": "Ranks 8 to 1; letters are pieces and digits count consecutive empty squares.",
    "sideToMove": "Side to move",
    "sideToMoveHint": "w means White moves next; b means Black moves next.",
    "castling": "Castling rights",
    "castlingHint": "K/Q are White’s kingside/queenside rights; k/q are Black’s. A dash means none.",
    "enPassant": "En passant target",
    "enPassantHint": "The skipped square after a two-square pawn move, or none. It is not the pawn’s square.",
    "halfmove": "Halfmove clock",
    "halfmoveHint": "Moves by either side since the last pawn move or capture, used for the fifty-move rule.",
    "fullmove": "Fullmove number",
    "fullmoveHint": "Starts at 1 and increases after Black completes a move.",
    "white": "White",
    "black": "Black",
    "none": "None",
    "white-kingside": "White kingside",
    "white-queenside": "White queenside",
    "black-kingside": "Black kingside",
    "black-queenside": "Black queenside",
    "openEditor": "Open this FEN in the board editor",
    "sanTitle": "Read SAN on a board",
    "sanLead": "Tap each SAN move to see exactly how the compact notation changes the position.",
    "start": "Start"
  },
  "solution": {
    "faqTitle": "Frequently asked questions",
    "alsoTitle": "Other ways people use ScanChess",
    "freeCredits": "10 free credits on sign-up. Volume pricing:",
    "hubKicker": "Choose your workflow",
    "hubTitle": "Chess scoresheet and PGN solutions",
    "hubIntro": "Start with the outcome you need: capture notation, create a PGN, archive a collection, or support a player.",
    "explore": "View solution",
    "diagramAlt": "ScanChess workflow for {{title}}",
    "clusters": {
      "capture": {
        "title": "Capture a game from paper or photo",
        "description": "Turn handwritten notation and board photos into structured chess data."
      },
      "convert": {
        "title": "Convert to standard PGN",
        "description": "Create a portable game file for Lichess, Chess.com, ChessBase, and SCID."
      },
      "archive": {
        "title": "Digitize and archive collections",
        "description": "Preserve tournament and club scoresheets in a searchable digital form."
      },
      "audiences": {
        "title": "Workflows for coaches and families",
        "description": "Keep a student’s or child’s over-the-board games ready for review."
      }
    }
  },
  "howToUse": {
    "metaTitle": "How to Use ScanChess - Chess Scoresheet Scanning Guide",
    "pageTitle": "How to Use ScanChess",
    "pageSubtitle": "Digitize your scoresheet in 5 easy steps",
    "demoAlt": "Handwritten scoresheet example",
    "demoCaption": "A typical handwritten tournament scoresheet, the kind ScanChess reads",
    "shotAlts": [
      "A handwritten tournament scoresheet, photographed flat",
      "The upload area on the Scan page with one scoresheet image added and the limits line",
      "The move list after a scan: two amber low-confidence moves, one red illegal move, a pencil beside every move",
      "Editing move 4 inline, with the two rule-legal alternatives the recognizer offered",
      "Save Game, Export PGN and Copy PGN buttons above the share card"
    ],
    "shotCaptions": [
      "What you start with",
      "Step 2 in the app",
      "Step 3 and 4 in the app",
      "Editing a flagged move",
      "Step 5 in the app"
    ],
    "ctaTitle": "Ready to get started?",
    "ctaSubtitle": "Upload your first scoresheet now",
    "ctaStart": "Start Scanning",
    "ctaFaq": "View FAQ",
    "schemaName": "How to Scan Chess Scoresheets with ScanChess",
    "schemaDesc": "Convert handwritten chess scoresheets to PGN using AI",
    "steps": [
      {
        "title": "1. Take a Photo",
        "description": "Use your phone or camera to photograph your handwritten scoresheet. Ensure good lighting and clear visibility of moves.",
        "tips": [
          "Keep the photo flat, avoid tilting",
          "Make sure all moves are in frame",
          "Multi-page scoresheets can be photographed separately"
        ]
      },
      {
        "title": "2. Upload Images",
        "description": "Add photos from your phone or computer — tap the upload area to pick them, or drag files onto it on a desktop. JPG, PNG and WebP, up to 10 images per scan. HEIC (the iPhone default) is not supported yet, so convert it first.",
        "tips": [
          "Up to 15 MB per image",
          "Pages are read in the order shown; use the arrows to reorder them before you scan",
          "On a phone, take a photo and upload it straight away"
        ]
      },
      {
        "title": "3. AI Recognition",
        "description": "Press the Scan button (it shows the cost, 2 credits). The model reads every cell and replays the moves on a board as it goes. A full game usually comes back in well under a minute.",
        "tips": [
          "System validates each move legality",
          "Low-confidence moves are marked for review",
          "One scan costs 2 credits, however many pages you upload"
        ]
      },
      {
        "title": "4. Review & Edit",
        "description": "Preview moves on the board and use the pencil button beside any move to edit. Shorthand input like \"dc\" auto-converts to \"dxc5\".",
        "tips": [
          "Red marks indicate illegal moves",
          "Yellow marks show low-confidence moves — check them against your sheet",
          "Tap a move to jump to it; on a desktop the arrow keys step through the game"
        ]
      },
      {
        "title": "5. Export & Save",
        "description": "When satisfied, export PGN file or copy to clipboard. Import directly to Chess.com, Lichess, and more.",
        "tips": [
          "Every successful scan is saved to your History automatically",
          "PGN includes full game info",
          "Share a link to the game after saving it"
        ]
      }
    ]
  },
  "seo": {
    "homeTitle": "ScanChess · Chess Images to FEN & Scoresheets to PGN",
    "homeDesc": "Chess OCR for board images and handwritten scoresheets: turn a photo into a position to analyze or a game to replay, check the result, then play on.",
    "scanTitle": "Scan a chess board or scoresheet | ScanChess",
    "scanDesc": "Chess image to an editable position. Handwritten scoresheets to PGN. Preloaded examples: no sign-in, no OCR request, no credits spent. Explore the result and try editing it.",
    "aboutTitle": "About ScanChess | AI Chess Scoresheet Scanner",
    "aboutDesc": "Learn how ScanChess helps chess players, arbiters, and clubs digitize handwritten scoresheets into PGN.",
    "faqTitle": "ScanChess FAQ | Scoresheet OCR and PGN Conversion",
    "faqDesc": "Answers to common questions about ScanChess, handwritten chess notation OCR, PGN export, and AI scan credits.",
    "blogTitle": "Chess Scoresheet & Notation Guides | ScanChess Blog",
    "blogDesc": "Guides on reading chess scoresheets, algebraic notation (SAN), PGN, FIDE rules, and digitizing your games with ScanChess.",
    "privacyTitle": "Privacy Policy | ScanChess",
    "privacyDesc": "How ScanChess collects, uses, stores, and deletes your data, including account email, uploaded scoresheet images, and credits.",
    "termsTitle": "Terms of Service | ScanChess",
    "termsDesc": "The terms governing your use of ScanChess, including accounts, credits and purchases, acceptable use, and account deletion.",
    "pricingTitle": "Pricing | ScanChess Pro",
    "pricingDesc": "10 free credits to start. Pro adds 100 scan credits every 30 days for $4.99/month or $29.99/year; Pro+ adds 500 for $19.99/month or $119.99/year.",
    "refundsTitle": "Refund Policy | ScanChess",
    "refundsDesc": "ScanChess does not offer refunds: all payments are final. The exceptions, what credits are, and how to cancel instead.",
    "contactTitle": "Contact ScanChess Support",
    "contactDesc": "Reach ScanChess support at support@scanchess.com — billing, refunds, account deletion and scan problems, answered within two business days.",
    "settingsTitle": "Account Settings | ScanChess",
    "settingsDesc": "Credits, subscription, referral code, language, analytics consent, and exporting or deleting your data.",
    "statusTitle": "ScanChess Service Status",
    "statusDesc": "Check whether the ScanChess website and scanning API are reachable right now.",
    "securityTitle": "Security | ScanChess",
    "securityDesc": "How ScanChess protects your data, and how to report a vulnerability.",
    "changelogTitle": "Changelog | ScanChess",
    "changelogDesc": "What changed in ScanChess and when — new pages, billing, scanning fixes and translations.",
    "historyTitle": "Saved Games | ScanChess",
    "historyDesc": "Your saved chess games, synced across devices — reload one onto the board or export it as PGN.",
    "howToUseTitle": "How to Use ScanChess | ScanChess",
    "howToUseDesc": "Choose your material and follow it from upload to review and export.",
    "toolsTitle": "Free Online Chess Tools – PGN Viewer, Board Editor & More",
    "toolsDesc": "Free, fast, no-sign-up chess web tools that run in your browser. Review a game with Stockfish, replay a PGN, work out a FIDE rating change, export board diagrams and animated GIFs, and print tournament scoresheets.",
    "solutionsTitle": "Chess Scoresheet Scanning & PGN Solutions | ScanChess",
    "solutionsDesc": "Choose the ScanChess workflow for scanning notation, converting photos to PGN, archiving tournament games, or preserving a player’s game history.",
    "deleteAccountTitle": "Delete Your Account | ScanChess",
    "deleteAccountDesc": "Permanently delete your ScanChess account, saved games and uploaded scoresheet images.",
    "authTitle": "Sign In | ScanChess",
    "authDesc": "Sign in to ScanChess to save scanned chess games and manage scan credits.",
    "resetTitle": "Reset Password | ScanChess",
    "resetDesc": "Set a new ScanChess account password.",
    "verifyEmailTitle": "Verify Email | ScanChess",
    "verifyEmailDesc": "Verify the email address on your ScanChess account.",
    "batchTitle": "Batch Scoresheet Scanning | ScanChess",
    "batchDesc": "Scan a whole tournament round at once: upload every scoresheet, group the pages, and file each game into your library."
  },
  "deleteAccount": {
    "title": "Delete your account",
    "intro": "This removes your ScanChess account and everything stored with it. If you only want to sign out, use the menu instead.",
    "warningTitle": "This cannot be undone",
    "warningGames": "Every saved game and PGN in your library is deleted.",
    "warningImages": "Every scoresheet image you uploaded is deleted.",
    "warningCredits": "Remaining credits are forfeited and are not refundable.",
    "warningSubscription": "Web renewal is cancelled before deletion. An active App Store subscription must be cancelled with Apple first, or deletion is blocked.",
    "manageSubscription": "Manage subscription",
    "warningIrreversible": "Deletion is immediate and permanent — we cannot restore the account afterwards.",
    "confirmPrompt": "To confirm, type your email address:",
    "passwordPrompt": "Enter your current password",
    "providerPrompt": "Or verify again with your sign-in provider",
    "providerVerified": "Identity verified for account deletion",
    "button": "Permanently delete my account",
    "signInFirst": "Sign in to the account you want to delete, then come back to this page.",
    "noAccessNote": "Locked out of the account? Email us and we will handle the request:",
    "doneTitle": "Account deleted",
    "doneDesc": "Your account and all associated data have been removed.",
    "failedTitle": "Could not delete the account",
    "failedDesc": "Something went wrong. Please try again, or email support@scanchess.com.",
    "proofRequired": "To delete the account we need proof it is yours: your current password, or a fresh Google sign-in.",
    "appleTitle": "Signed in with Apple?",
    "appleDesc": "Sign in with Apple only works in the iOS app, so this page cannot verify an Apple-only account. Email us from the address on the account and we will delete it for you.",
    "requestByEmail": "Request deletion by email",
    "emailSubject": "Account deletion request ({{email}})",
    "emailBody": "Please delete my ScanChess account {{email}} and all data stored with it. I understand this cannot be undone."
  },
  "cookies": {
    "title": "Cookie choice",
    "body": "We use Google Analytics and Microsoft Clarity to see how the site is used. Clarity records how you move around a page.",
    "accept": "Accept",
    "decline": "Decline",
    "learnMore": "How we use your data",
    "currentlyOn": "Analytics are currently on.",
    "currentlyOff": "Analytics are currently off."
  },
  "pricing": {
    "checkoutSuccessTitle": "Payment confirmed",
    "checkoutSuccessDesc": "Your subscription and credit balance are now up to date.",
    "title": "Simple pricing",
    "subtitle": "Scan credits and your full game library, on every device.",
    "perMonth": "/month",
    "perYear": "/year",
    "yearlyNote": "Half the price of paying monthly",
    "bestValue": "Best value",
    "billing": {
      "monthly": "Monthly",
      "yearly": "Yearly",
      "yearlySave": "−50%"
    },
    "tiers": {
      "pro": "Pro",
      "proplus": "Pro+"
    },
    "tierCredits": {
      "pro": "100 scan credits every 30 days — about 50 scoresheets",
      "proplus": "500 scan credits every 30 days — about 250 scoresheets"
    },
    "subscribe": "Subscribe",
    "signInToSubscribe": "Sign in to subscribe",
    "included": "What Pro adds",
    "smallPrint": "Billed in USD and renews automatically at the same price — monthly plans every month, yearly plans every year — until you cancel. Cancel any time on this page: Pro stays active until the end of the period you have paid for, and you are not charged again. All payments are final and non-refundable except where the law requires otherwise — see our Refund Policy. Taxes are calculated at checkout by Waffo, our merchant of record, who is the seller for web purchases.",
    "manage": {
      "title": "Your subscription",
      "activeUntil": "Pro is active until {{date}}. It renews automatically unless you cancel.",
      "cancel": "Cancel subscription",
      "cancelNote": "Cancelling stops the next charge. You keep Pro — and the credits already in your balance — until the paid period ends.",
      "canceledTitle": "Subscription cancelled",
      "canceledDesc": "You will not be charged again. Pro stays active until the end of the period you have paid for.",
      "cancelFailedTitle": "Could not cancel",
      "cancelFailedDesc": "Please try again, or email support@scanchess.com and we will cancel it for you.",
      "titleWithPlan": "You're on {{plan}}",
      "appStoreNote": "This subscription was bought in the iOS app. Manage or cancel it in your Apple ID subscription settings.",
      "passTitle": "You hold a {{plan}}",
      "passActiveUntil": "Pro is active until {{date}}. Nothing renews or is charged when it ends.",
      "passNote": "To extend it, buy another pass below — the days you have left carry over."
    },
    "failedTitle": "Could not start checkout",
    "failedDesc": "Please try again in a moment.",
    "plans": {
      "pro_monthly": "Pro Monthly",
      "pro_yearly": "Pro Yearly",
      "proplus_monthly": "Pro+ Monthly",
      "proplus_yearly": "Pro+ Yearly",
      "pro_pass_365": "Pro Yearly Pass"
    },
    "benefits": {
      "credits": "Scan credits every 30 days — 100 on Pro, 500 on Pro+ — added to your balance when you sign in",
      "history": "Your whole game library, synced across devices",
      "export": "PGN export and interactive replay",
      "priority": "New features first"
    },
    "free": {
      "name": "Free",
      "price": "$0",
      "period": "to start",
      "note": "10 credits when you sign up — no card required",
      "cta": "Scan a scoresheet",
      "signUpCta": "Start free — sign up",
      "includedNote": "What every account starts with, before Pro.",
      "priceCn": "¥0"
    },
    "credits": {
      "title": "How credits work",
      "intro": "Credits are the only thing you spend on ScanChess. Every new account starts with 10 free credits, and credits never expire.",
      "colAction": "What you do",
      "colCost": "Cost",
      "rows": {
        "scoresheet": "Scoresheet photo → PGN",
        "scoresheetCost": "2 credits",
        "board": "Board photo → FEN",
        "boardCost": "1 credit",
        "other": "Editing, replay, PGN export, game history",
        "otherCost": "Free"
      },
      "topUp": "Pro adds 100 credits every 30 days — about 50 scoresheets — and Pro+ adds 500. The grant lands when you sign in after the 30 days are up, and unused credits stay in your balance.",
      "perScanMonthly": "On the monthly plans that works out to about $0.05 per credit on Pro and $0.04 on Pro+ — roughly $0.10 per scoresheet on Pro and $0.08 on Pro+.",
      "perScanYearly": "On the yearly plans that works out to about $0.02 per credit on both Pro and Pro+ — roughly $0.05 per scoresheet on Pro and $0.04 on Pro+, half the monthly rate.",
      "perScanPass": "The Pro yearly pass works out to about ¥0.08 per credit — roughly ¥0.17 per scoresheet."
    },
    "support": {
      "title": "Questions about billing?",
      "body": "Questions about a charge, a refund or your credit balance — write to us at"
    },
    "help": {
      "credits": "How credits work",
      "cancel": "How to cancel",
      "compare": "Free vs Pro",
      "refunds": "Refund policy (no refunds)"
    },
    "currentPlan": "Your plan",
    "currentPlanButton": "Current plan",
    "switchPlan": "Switch to this plan",
    "switchNote": "Switching opens checkout for the new plan; nothing changes until you complete it. Afterwards we stop the previous plan from renewing on request, and moving up releases the larger credit allowance straight away.",
    "appStoreSwitchDesc": "This subscription was bought in the iOS app, so Apple has to change it. Open your Apple ID subscription settings to switch plans.",
    "overlapTitle": "You already have active Pro access",
    "overlapDesc": "Cancel the current subscription and wait for its paid period to end before buying another plan. This prevents overlapping charges.",
    "checkout": {
      "processingTitle": "Confirming your payment",
      "processingDesc": "Waffo is telling us about your payment. This usually takes under a minute; you can leave this page open.",
      "pendingTitle": "Still processing",
      "pendingDesc": "Your payment is taking longer than usual to reach us. Your plan will switch on automatically once it does — refresh in a moment to check, or write to us if it has not appeared after a few minutes.",
      "refresh": "Check again",
      "contactSupport": "Contact support"
    },
    "subscriptionUnknownTitle": "Could not check your subscription",
    "subscriptionUnknownDesc": "We could not load your subscription details. Try again before changing plans.",
    "retry": "Try again",
    "switchDoneDesc": "Your new plan is active. Your previous plan ({{previous}}) is still set to renew — see below to stop it.",
    "switchDoneNote": "Your previous plan ({{previous}}) is still set to renew. We will stop it for you — send us the request below and it is done the same day, before any further charge.",
    "switchStopPrevious": "Ask us to stop the previous plan",
    "switchEmailSubject": "Stop renewal of my previous plan ({{previous}})",
    "switchEmailBody": "I switched from {{previous}} to {{current}} on ScanChess ({{email}}). Please stop the previous plan from renewing.",
    "switchPreviousCanceledDesc": "Your new plan is active. Your previous plan ({{previous}}) has been stopped and will not renew.",
    "switchPreviousNoneDesc": "Your new plan is active. Your previous plan ({{previous}}) was already stopped — nothing further will be charged for it.",
    "switchPreviousCancelFailedTitle": "New plan active, but the previous one is still renewing",
    "switchPreviousCancelFailedDesc": "We could not stop {{previous}} automatically. Use the request below and we will stop it before any further charge.",
    "allAccountsNote": "Every account — free or paid — gets editing, interactive replay, PGN export and saved game history.",
    "market": {
      "label": "Store",
      "global": "International",
      "globalDetail": "USD · card / Apple Pay / Google Pay",
      "cn": "Mainland China",
      "cnDetail": "CNY · WeChat Pay",
      "showingGlobal": "Prices in USD, billed by card, Apple Pay or Google Pay.",
      "switchToCn": "In mainland China? Show CNY pricing with WeChat Pay.",
      "showingCn": "Prices for mainland China in CNY, paid once with WeChat Pay.",
      "switchToGlobal": "Not in mainland China? Show international pricing."
    },
    "pass": {
      "period": "/year, paid once",
      "noRenew": "Does not renew",
      "buy": "Pay with WeChat",
      "extend": "Add another year",
      "signInToBuy": "Sign in to buy",
      "note": "A pass is paid once and lasts 365 days; nothing is charged when it ends. To extend it, buy another — the days you have left carry over.",
      "holderSwitchDesc": "Your pass is still running. Subscribe once it ends so you are not paying twice for the same days.",
      "listPrice": "List price {{price}}"
    },
    "smallPrintCn": "The Mainland China store is priced in CNY and paid once with WeChat Pay. You are buying a 365-day Pro pass: it does not renew and there is nothing to cancel; buy again to extend it and the days you have left carry over. All payments are final and non-refundable except where applicable law requires otherwise — see the Refund Policy. Tax is calculated at checkout by our reseller Waffo, which is the merchant of record for web purchases."
  },
  "settings": {
    "title": "Settings",
    "subtitle": "Your account, your plan, and what happens to your data.",
    "account": "Account",
    "memberSince": "Member since",
    "password": "Password",
    "sendReset": "Email me a reset link",
    "resetSent": "Reset link sent",
    "resetSentDesc": "Check your inbox and follow the link to set a new password.",
    "resetFailed": "Could not send the reset email",
    "plan": "Plan and credits",
    "currentPlan": "Current plan",
    "upgrade": "See plans",
    "refresh": "Refresh",
    "referral": "Invite friends",
    "preferences": "Preferences",
    "analytics": "Analytics cookies",
    "analyticsAccepted": "Accepted",
    "analyticsDeclined": "Declined",
    "analyticsUnset": "Not chosen yet",
    "analyticsOn": "Analytics enabled",
    "analyticsOff": "Analytics turned off",
    "analyticsNote": "Google Analytics and Microsoft Clarity run only while this is on. Where prior consent is required — the EEA, the UK, Switzerland — they stay off until you accept. Details in the",
    "yourData": "Your data",
    "yourDataDesc": "Take your games with you, or ask us for everything we hold.",
    "exportGames": "Download all games ({{count}})",
    "exportEmpty": "No saved games to export yet",
    "exportDone": "Exported {{count}} games",
    "exportFailed": "Could not export your games. Please try again.",
    "dangerZone": "Account actions",
    "displayName": "Display name",
    "displayNamePlaceholder": "Your name",
    "nameSaved": "Name updated",
    "nameFailed": "Could not save the name",
    "passwordDesc": "Changing it needs your current password. Signed in with Apple or Google? Use the reset link instead.",
    "currentPassword": "Current password",
    "newPassword": "New password",
    "changePassword": "Change password",
    "passwordChanged": "Password changed",
    "passwordChangedDesc": "You have been signed out on every device. Sign in again with the new password.",
    "passwordFailed": "Could not change the password",
    "passwordMismatch": "The new passwords do not match",
    "passwordTooShort": "The new password must be at least 6 characters",
    "billingHistory": "Billing history",
    "billingHistoryDesc": "What we recorded against your account. Receipts are emailed by Waffo.",
    "payment": {
      "paid": "Paid",
      "canceled": "Cancelled",
      "refunded": "Refunded"
    },
    "receiptNote": "Need a receipt or an invoice? Reply to the Waffo email, or write to support with the order id.",
    "analyticsDefaultOn": "On by default in your region",
    "analyticsDefaultOff": "Off until you accept",
    "passwordSignsOutNote": "Changing your password signs you out on every device, including this one.",
    "passwordConfirmTitle": "Change password and sign out everywhere?",
    "passwordConfirmDesc": "Every device signed in to this account, including this one, will be signed out. You will be taken to the sign-in page to continue with the new password.",
    "exportGamesAll": "Download all games",
    "requestData": "Request a copy of my data",
    "dataRights": "For any other data right, write to "
  },
  "status": {
    "title": "Service status",
    "subtitle": "Checked live from your browser when you open this page — not a number we typed in.",
    "website": "Website",
    "api": "Scanning and account API",
    "checking": "Checking",
    "up": "Reachable",
    "down": "Not reachable",
    "recheck": "Check again",
    "checkedAt": "Last checked {{time}}",
    "footnote": "The website figure is the response time of this page’s HTML (the browser’s own timing on first load, a fresh request on re-check); the API figure is a live /api/health request.",
    "failingHint": "A scan itself failing? See the ",
    "downTitle": "The API is not answering from here",
    "downBody": "Scanning and sign-in will fail until it comes back. If this persists for more than a few minutes, tell us at",
    "honestTitle": "What this page is, honestly",
    "honestBody": "We do not publish an uptime percentage, because we do not measure one. This page asks the API the same question your browser does when you scan, and shows the answer. A failure here could also be your own network or a blocked request."
  },
  "changelog": {
    "title": "Changelog",
    "subtitle": "What changed, and when.",
    "feedback": "Something you would like changed?"
  },
  "savedGame": {
    "title": "Saved game",
    "body": "You are looking at a game from your library. Editing and export are free — scanning it again would only spend credits on a game you already have.",
    "newScan": "Scan a new scoresheet",
    "backToLibrary": "Back to my games"
  },
  "tools": {
    "common": {
      "home": "ScanChess",
      "load": "Load",
      "clear": "Clear",
      "copy": "Copy",
      "copied": "Copied to clipboard",
      "copyFailed": "Could not copy — please select and copy manually",
      "download": "Download",
      "share": "Share link",
      "shareCopied": "Share link copied",
      "embed": "Embed",
      "embedCopied": "Embed code copied",
      "openInEditor": "Open in board editor",
      "openInViewer": "Open in PGN viewer",
      "analyzeLichess": "Analyse on Lichess",
      "flipBoard": "Flip board",
      "chooseFile": "Choose file",
      "dropHint": "or drop a file here",
      "pasteHint": "or paste the moves above",
      "loadSample": "Load example",
      "navStart": "First position",
      "navPrev": "Previous move",
      "navNext": "Next move",
      "navEnd": "Last position",
      "featuresTitle": "What this tool does",
      "faqTitle": "Frequently asked questions",
      "relatedTools": "More free tools",
      "relatedGuides": "Guides for this tool",
      "allTools": "All tools",
      "white": "White",
      "black": "Black",
      "fen": "FEN",
      "privacyNote": "Runs in your browser. Nothing is uploaded.",
      "openTool": "Open tool",
      "scanStripBoard": "Have a screenshot or photo of this position? Scan it and the board sets itself up.",
      "scanStripScoresheet": "Is the game on a paper scoresheet? Scan it into PGN instead of typing it.",
      "scanStripAction": "Scan an image",
      "scanStripSample": "Try the free example",
      "pasteFirst": "Paste a PGN above, choose a file, or load the example first."
    },
    "viewer": {
      "placeholder": "Paste PGN here — for example:\n\n[Event \"Casual game\"]\n[White \"Anderssen\"]\n[Black \"Kieseritzky\"]\n\n1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ ...",
      "gameSelect": "Game",
      "gameCount": "{{count}} games in file",
      "movesTitle": "Moves",
      "headersTitle": "Game details",
      "noMoves": "No moves loaded yet. Paste a PGN above and press Load.",
      "parseFailed": "No moves could be read from that text.",
      "stoppedAt": "Stopped at {{label}} {{token}} — that move is not legal here. Open the validator for details.",
      "downloadPgn": "Download PGN",
      "currentFen": "Current position",
      "result": "Result",
      "openValidator": "Check in validator",
      "startPosition": "Start position"
    },
    "editor": {
      "startPosition": "Start position",
      "emptyBoard": "Empty board",
      "fenInput": "Paste a FEN to load it",
      "fenLoad": "Load FEN",
      "fenInvalid": "That is not a valid FEN: {{reason}}",
      "turn": "Side to move",
      "white": "White",
      "black": "Black",
      "castling": "Castling rights",
      "epSquare": "En passant square",
      "epNone": "None",
      "downloadPng": "Download PNG",
      "swapColours": "Swap colours",
      "tray": "Pieces",
      "trayHint": "Drag a piece onto the board, or select one and tap squares. Drag a piece off the board to remove it.",
      "eraser": "Eraser",
      "playable": "Position is legal and playable",
      "notPlayable": "Position is not playable",
      "status": {
        "checkmate": "Checkmate: {{side}} is mated.",
        "stalemate": "Stalemate: {{side}} has no legal move.",
        "check": "{{side}} to move, in check.",
        "normal": "{{side}} to move."
      },
      "problems": {
        "pawn-back-rank": "Pawns cannot stand on the first or eighth rank.",
        "white-king-count": "White must have exactly one king.",
        "black-king-count": "Black must have exactly one king.",
        "opponent-in-check": "The side not to move is in check.",
        "unplayable": "The position cannot be loaded by a chess engine."
      },
      "selectedPiece": "Placing: {{piece}}",
      "pieceNames": {
        "wK": "white king",
        "wQ": "white queen",
        "wR": "white rook",
        "wB": "white bishop",
        "wN": "white knight",
        "wP": "white pawn",
        "bK": "black king",
        "bQ": "black queen",
        "bR": "black rook",
        "bB": "black bishop",
        "bN": "black knight",
        "bP": "black pawn"
      },
      "pngFailed": "Could not render the image in this browser."
    },
    "validator": {
      "placeholder": "Paste a PGN or a plain move list, e.g.\n\n1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. 0-0 Be7 ...",
      "validate": "Validate",
      "okTitle": "All {{count}} moves are legal",
      "okBody": "The game plays out cleanly from the starting position. Result: {{result}}.",
      "errorTitle": "Illegal move at {{label}} {{token}}",
      "errorBody": "{{count}} moves were legal before this one. The moves that are legal in that position are listed below.",
      "warningsTitle": "Notation fixed automatically",
      "warningsBody": "{{count}} tokens were rewritten to standard SAN.",
      "legalMoves": "Legal moves here",
      "rewritten": "{{token}} → {{replacement}}",
      "trailing": "{{count}} moves after the error were not checked.",
      "unknownToken": "Ignored unrecognised token \"{{token}}\".",
      "cleanedTitle": "Cleaned PGN",
      "downloadPgn": "Download PGN",
      "empty": "Paste some moves first.",
      "openViewer": "Replay in viewer",
      "boardAtError": "Position where it stopped",
      "movesPlayed": "Moves played",
      "tokens": "Tokens read"
    },
    "analysis": {
      "summaryTitle": "Review summary",
      "white": "White",
      "black": "Black",
      "accuracy": "Accuracy"
    },
    "rating": {
      "currentRating": "Your current rating",
      "kFactor": "Development coefficient",
      "kReasons": {
        "new-player": "first 30 games",
        "junior": "junior under 2300",
        "reached-2400": "has reached 2400",
        "standard": "standard",
        "manual": "set by hand"
      },
      "newPlayer": "Still completing my first 30 rated games",
      "junior": "Junior (until the end of the year I turn 18)",
      "reached2400": "My rating has reached 2400",
      "budgetNote": "K is reduced to {{k}} from {{base}} because K times the number of games may not exceed 700.",
      "minimumNote": "FIDE publishes ratings from {{minimum}} up; below that a player is shown as unrated.",
      "opponents": "Games",
      "addGame": "Add a game",
      "round": "#",
      "opponentRating": "Opponent",
      "opponentRatingFor": "Opponent rating in round {{round}}",
      "result": "Result",
      "expected": "Expected (D)",
      "removeGame": "Remove round {{round}}",
      "results": {
        "win": "1",
        "draw": "½",
        "loss": "0"
      },
      "noGames": "Add a game to see the rating change.",
      "newRating": "New rating",
      "scored": "Scored",
      "expectedTotal": "Expected total",
      "deltaSum": "Sum of score minus expectation",
      "rawChange": "Before rounding",
      "performance": "Performance rating",
      "howTitle": "How this is worked out",
      "howBody": "Each game's expected score comes from FIDE's table 8.1.2, not from the logistic curve, so the figures match the published rating list. The differences are added up and multiplied by K, then rounded to a whole number with a half going away from zero.",
      "capNote": "A rating difference wider than 400 points counts as 400 for players rated below {{threshold}}. From {{threshold}} up the real difference is used, a change that took effect on 1 October 2025."
    },
    "diagram": {
      "previewAlt": "The position as a board diagram",
      "startPosition": "Starting position",
      "sizeLabel": "Image size",
      "themeLabel": "Board colours",
      "themes": {
        "classic": "Classic brown",
        "green": "Tournament green",
        "blue": "Blue",
        "walnut": "Walnut",
        "slate": "Slate"
      },
      "coordinates": "Show coordinates",
      "downloadPng": "Download PNG",
      "downloadSvg": "Download SVG",
      "copySvg": "Copy SVG markup",
      "exportNote": "The diagram is drawn in your browser from vector pieces. No watermark, no attribution required."
    },
    "gif": {
      "idle": "Choose your settings and press Build to render the animation.",
      "previewAlt": "The game as an animated board",
      "rendering": "Drawing frame {{done}} of {{total}}",
      "fileSize": "{{size}} KB",
      "moveCount": "{{count}} plies in this game",
      "fromMove": "From ply",
      "toMove": "To ply",
      "frameLimit": "Trimmed to {{max}} frames; narrow the range to animate a different part.",
      "sizeLabel": "Frame size",
      "speedLabel": "Speed",
      "speeds": {
        "slow": "Slow",
        "normal": "Normal",
        "fast": "Fast"
      },
      "highlight": "Tint the squares each move touched",
      "build": "Build ({{count}} frames)",
      "download": "Download GIF",
      "privacyNote": "Frames are drawn and the GIF is encoded on your device. Nothing is uploaded.",
      "failed": "The GIF could not be built. Try a smaller size or a shorter range."
    },
    "print": {
      "columnsLabel": "Columns",
      "columns": "{{count}} columns",
      "diagramsLabel": "Diagrams",
      "diagramModes": {
        "none": "No diagrams",
        "final": "Final position only",
        "every10": "Every 10 moves",
        "every20": "Every 20 moves"
      },
      "paperLabel": "Paper",
      "letter": "US Letter",
      "showTags": "Include the PGN tags",
      "printButton": "Print / Save as PDF",
      "saveHint": "In the print dialog, set the destination to Save as PDF.",
      "afterMove": "After {{move}} {{san}}"
    },
    "hub": {
      "badge": "Free Chess Tools · No Login · Runs in Browser",
      "title": "Free Online Chess Tools & Utilities",
      "subtitle": "A suite of fast, privacy-first tools for chess players, coaches, and arbiters. Review a game with the engine, replay and clean PGNs, work out a rating change, export diagrams and animations, and print tournament-standard scoresheets.",
      "trustFree": "100% Free Forever",
      "trustLocal": "Runs in Browser · Zero Upload",
      "trustNoAccount": "No Account Needed",
      "clientSide": "Free & Client-Side",
      "benefitsKicker": "Engineered for Chess Enthusiasts",
      "benefitsTitle": "Fast, Secure, and Built for Everyday Play",
      "benefitPrivacyTitle": "Zero Data Storage",
      "benefitPrivacyDesc": "Everything processes client-side using JavaScript. Your tournament prep and private moves remain 100% confidential.",
      "benefitSpeedTitle": "Lightning Fast & Clean",
      "benefitSpeedDesc": "No bloated ads, no paywalls, and no pop-ups. Optimized for distraction-free study and fast coaching workflows.",
      "benefitBridgeTitle": "Bridging Paper to Digital",
      "benefitBridgeDesc": "From printing blank score sheets to scanning finished games with AI, we complete the entire tournament workflow.",
      "ctaTitle": "Have a Handwritten Scoresheet to Digitize?",
      "ctaDesc": "Skip typing moves one by one. ScanChess uses vision AI to turn your paper scoresheets into replayable games in seconds.",
      "ctaButton": "Try the AI Scoresheet Scanner",
      "faq": {
        "q1": "Are these chess tools completely free with no sign-up required?",
        "a1": "Yes, 100% free with no account creation and no usage limits. Every tool runs directly in your browser.",
        "q2": "Does ScanChess upload my PGN files or custom board positions to a server?",
        "a2": "No. All PGN parsing, move validation, and diagram rendering happen entirely inside your web browser. Nothing leaves your device.",
        "q3": "How do I convert a physical, handwritten paper scoresheet into digital PGN?",
        "a3": "Use ScanChess AI scanner. Photograph your scoresheet with your smartphone, and the AI will read the handwriting, validate the moves, and produce an exportable digital PGN.",
        "q4": "Can I use these tools on my phone or tablet?",
        "a4": "Yes. All tools are touch-friendly and fully responsive on iOS, Android, tablets, and desktop computers."
      }
    },
    "badges": {
      "pgn-viewer": [
        "Keyboard Navigation",
        "Multi-game PGN",
        "FEN Export"
      ],
      "board-editor": [
        "Live FEN",
        "Legality Checks",
        "PNG Export"
      ],
      "pgn-validator": [
        "Pinpoint Errors",
        "Notation Cleaner",
        "SAN Standard"
      ],
      "printable-scoresheets": [
        "FIDE Standard",
        "4 Layouts",
        "Vector Print PDF"
      ],
      "game-analysis": [
        "Stockfish 18",
        "Whole-game Review",
        "Runs On Your Device"
      ],
      "rating-calculator": [
        "Official FIDE Table",
        "Every K-factor",
        "Performance Rating"
      ],
      "fen-to-image": [
        "PNG & SVG",
        "Up To 1600px",
        "Five Board Colours"
      ],
      "pgn-to-gif": [
        "Animated Replay",
        "Trim The Range",
        "Encoded In-browser"
      ],
      "pgn-to-pdf": [
        "Selectable Text",
        "Inline Diagrams",
        "A4 & Letter"
      ]
    },
    "printable": {
      "selectLayout": "1. Select Scoresheet Layout",
      "selectLayoutDesc": "Formats are precision-engineered for A4 & US Letter paper, ready for physical printing or \"Save as PDF\".",
      "printButton": "Print Scoresheet (Save as PDF)",
      "signInToPrint": "Sign In to Print (Save as PDF)",
      "clearAll": "Clear all fields",
      "signInNotice": "Free feature: scoresheets are 100% free to print and download. Please sign in or create a free ScanChess account.",
      "signInRequiredTitle": "Sign in Required",
      "signInRequiredDesc": "Please sign in to print or export official scoresheets.",
      "layouts": {
        "standard60Badge": "FIDE Standard",
        "standard60Title": "Standard 60 Moves",
        "standard60Desc": "2 columns, official layout",
        "classical80Badge": "Classical",
        "classical80Title": "Classical 80 Moves",
        "classical80Desc": "Extended match length",
        "junior40Badge": "Kids & Beginners",
        "junior40Title": "Junior 40 Moves",
        "junior40Desc": "Large row spacing for easy writing",
        "rapid2in1Badge": "Rapid 2-in-1",
        "rapid2in1Title": "Two 30-Move Sheets",
        "rapid2in1Desc": "2 games on 1 page with cut-line"
      },
      "prefillTitle": "2. Optional: Pre-fill Tournament Info (Prints on the sheet)",
      "prefillHint": "Leave empty for players to write",
      "club": "Club or Organiser (Optional)",
      "clubPlaceholder": "Printed under the title, e.g. Riverside Chess Club",
      "paper": "Paper",
      "event": "Event Name (Optional)",
      "eventPlaceholder": "e.g. Club Open",
      "date": "Date (Optional)",
      "datePlaceholder": "e.g. 2026-09-08",
      "round": "Round (Optional)",
      "table": "Table # (Optional)",
      "whitePlayer": "White Player (Optional)",
      "blackPlayer": "Black Player (Optional)",
      "fieldOptional": "Optional",
      "printTip": "Tip: In browser print dialog, choose Destination: \"Save as PDF\" to export digital PDF. Keep \"Background graphics\" checked.",
      "digitizeCta": "Have a completed sheet? Digitize now →",
      "sheet": {
        "title": "Official Chess Scoresheet",
        "subtitle": "ScanChess.com · FIDE Standard Notation Sheet",
        "badgeStandard": "60 Moves · Match",
        "badgeClassical": "80 Moves · Classical",
        "badgeJunior": "40 Moves · Junior Grid",
        "eventLabel": "Event:",
        "roundLabel": "Round:",
        "tableLabel": "Table:",
        "dateLabel": "Date:",
        "whiteLabel": "White:",
        "blackLabel": "Black:",
        "ratingLabel": "Rating:",
        "resultLabel": "Result:",
        "whiteSignLabel": "White Sign:",
        "blackSignLabel": "Black Sign:",
        "signLabel": "Sign:",
        "signLine": "White ________ Black ________",
        "white": "White",
        "black": "Black",
        "game1": "Game 1 · 30 Moves",
        "game2": "Game 2 · 30 Moves",
        "cutHere": "✂ Cut Here",
        "digitize": "⚡ Digitize this scoresheet in seconds with AI:",
        "digitizeBody": "Photograph this sheet with your smartphone camera. ScanChess converts handwriting into digital PGN & FEN for Lichess and Chess.com.",
        "footerNote": "Free Scoresheet Template",
        "signInToPrint": "Please sign in to scanchess.com to print or save official scoresheets"
      },
      "previewCaption": "Print preview. Moves are written by hand on the printed sheet; the optional fields above are printed onto it."
    },
    "fenImage": {
      "errors": {
        "noSideToMove": "A FEN needs at least a placement and a side to move",
        "ranks": "The placement must have 8 ranks separated by /",
        "character": "The placement contains an unexpected character",
        "squares": "A rank does not add up to 8 squares",
        "sideToMove": "Side to move must be w or b"
      }
    }
  },
  "sharedGame": {
    "eyebrow": "Shared game",
    "scoresheet": "Scoresheet",
    "scoresheetPage": "Scoresheet page {{page}}",
    "moveCount": "Moves",
    "noMoves": "This game has no replayable moves.",
    "ctaTitle": "Scan your own scoresheet",
    "ctaBody": "ScanChess turns a photo of a handwritten scoresheet into a replayable game and a PGN file. Free credits when you sign up.",
    "ctaButton": "Try it free",
    "notFoundTitle": "This link is no longer available",
    "notFoundBody": "The share link was revoked, or the game was deleted.",
    "replayStops": "Replay stops at move {{ply}}: {{san}} could not be played from the previous position. The full move list is shown below.",
    "playableCount": "Replayable",
    "unplayableMove": "{{san}} could not be played",
    "pgnPartial": "The PGN contains the {{playable}} moves that could be played, out of {{total}} on the scoresheet.",
    "claimButton": "Save to my library",
    "claimSaving": "Saving…",
    "claimed": "Saved to your library",
    "claimedDesc": "A copy of this game is now in your History. The sender's photos stay with the sender.",
    "claimedOpen": "In your library · open History",
    "claimAlready": "This game is already in your library",
    "claimFailed": "Could not save the game",
    "metaTitle": "{{white}} vs {{black}} | ScanChess",
    "metaDesc": "Replay this game move by move: {{white}} vs {{black}}, {{count}} moves, scanned from a handwritten scoresheet by ScanChess."
  },
  "apiErrors": {
    "RATE_LIMITED": "Too many requests. Please wait a few minutes and try again.",
    "RATE_LIMITED_RETRY_one": "Too many requests. Try again in 1 minute.",
    "RATE_LIMITED_RETRY_other": "Too many requests. Try again in {{count}} minutes.",
    "NOT_FOUND": "That game no longer exists. It may have been deleted.",
    "INVALID_INPUT": "The request was not accepted. Please check the data and try again.",
    "PERMISSION_DENIED": "You do not have access to that game.",
    "EMAIL_NOT_VERIFIED": "Your free scan before email verification has been used. Verify your email to keep scanning.",
    "INSUFFICIENT_CREDITS": "Not enough credits for this scan.",
    "SCAN_IN_PROGRESS": "This scan is still being processed. Please wait a moment.",
    "UPLOAD_LIMIT_REACHED": "Your image storage is full. Delete some saved games to free space.",
    "IMAGE_TOO_LARGE": "One of the images is too large. Please use a smaller photo.",
    "PAYLOAD_TOO_LARGE": "The request is too large. Please try with fewer or smaller images.",
    "AI_GATEWAY_ERROR": "The recognition service could not process the image. Your credits were refunded.",
    "AI_INVALID_RESPONSE": "The recognition service returned an unexpected result. Your credits were refunded.",
    "NO_SCORESHEET_FOUND": "No chess moves could be read from the photo. Make sure the whole scoresheet is in frame, in focus and well lit. Your credits were refunded.",
    "NO_BOARD_FOUND": "No chessboard could be read from the photo. Make sure the whole board and every piece is in frame. Your credits were refunded.",
    "server": "The server ran into a problem. Please try again shortly.",
    "network": "Could not reach the server. Check your connection and try again.",
    "unknown": "Something went wrong. Please try again."
  },
  "annotations": {
    "title": "Notes & variations",
    "needMoves": "Scan or load a game to annotate it.",
    "beforeGame": "before the game",
    "afterMove": "after {{number}}{{ellipsis}} {{move}}",
    "commentOn": "Comment {{position}}",
    "commentPlaceholder": "What is worth remembering about this position?",
    "commentHint": "The comment follows this move into the exported PGN. Navigate the board to annotate another position.",
    "variations": "Recorded variations",
    "insteadOfFirst": "instead of the first move",
    "variationFrom": "Add a variation {{position}}",
    "variationPlaceholder": "e.g. Nf3 d5 exd5",
    "addVariation": "Add",
    "variationHint": "Type the line in SAN, separated by spaces; it becomes an alternative to the position on the board.",
    "illegalLine": "{{move}} is not a legal move here.",
    "variationRejected": "That line does not replay from this position.",
    "previewVariation": "Show this variation on the board",
    "deleteVariation": "Delete this variation"
  },
  "batch": {
    "title": "Scan a whole round at once",
    "intro": "For arbiters and club organizers: upload every scoresheet from a round, group double-sided or multi-page sheets into one game each, and every game is scanned and filed into your library on its own.",
    "signInRequired": "Batch scanning needs an account — the credits are spent per game.",
    "uploadTitle": "The stack of scoresheets",
    "dropTitle": "Drop the photos here",
    "limits": "Up to {{max}} photos per batch, {{size}} MB each. A game can have up to {{pages}} pages.",
    "fileRejectedCount": "{{name}}: this batch is full ({{max}} photos).",
    "groups": "Games in this batch",
    "gameLabel": "Game {{number}}",
    "pageAlt": "Photo {{number}}",
    "removeImage": "Remove photo {{number}}",
    "joinShort": "Same sheet",
    "joined": "Joined",
    "joinPrevious": "This photo continues the previous game",
    "separateGame": "Start a new game with this photo",
    "joinFull": "That game already has a full set of pages",
    "sharedMeta": "Shared details",
    "sharedMetaHint": "Filled in when a sheet does not say: the event's name, the venue and the date are attached to every game the batch produces.",
    "eventPlaceholder": "Spring Club Championship",
    "sitePlaceholder": "Club venue, city",
    "runTitle": "Run the batch",
    "costSummary": "{{games}} games × {{per}} credits = {{cost}} credits",
    "balance": "balance {{credits}}",
    "run": "Scan {{count}} games",
    "stop": "Stop after this game",
    "insufficient": "This batch costs {{cost}} credits and the balance is {{balance}}. Games are scanned until the balance runs out.",
    "insufficientPro": "The monthly Pro credits are used up; the next grant unlocks {{date}}.",
    "outOfCredits": "No credits left for this game.",
    "summary": "{{saved}} saved, {{failed}} failed.",
    "state": {
      "pending": "Waiting",
      "scanning": "Scanning…",
      "saved": "Saved",
      "failed": "Failed",
      "blocked": "Not enough credits"
    },
    "open": "Open",
    "retry": "Retry",
    "moveCount": "{{count}} moves",
    "signInCta": "Sign in",
    "tournament": {
      "title": "Pairings",
      "hint": "Upload the round's pairing list and every game is filed under the right players, ratings, round and board. Photos named like R3B7.jpg are grouped and placed on their own.",
      "add": "Add a pairing file",
      "clear": "Remove",
      "formats": "CSV or tab-separated exports with a header row, a PGN roster, or a JSON pairing file.",
      "loaded": "{{count}} pairings read from {{files}}",
      "matchSummary": "{{matched}} of {{total}} games matched",
      "matched": "matched to {{white}} vs {{black}}",
      "unmatched": "No pairing matched.",
      "placed": "Round {{round}}, board {{board}}",
      "parseFailed": "{{name}} could not be read as a pairing list.",
      "exportHint": "Download the round as one PGN for the event's website, with a record of what still needs a human eye.",
      "exportPgn": "Round PGN",
      "exportCsv": "Audit CSV"
    }
  },
  "extensionImport": {
    "title": "From the ScanChess extension",
    "loading": "Receiving your capture…",
    "error": "Could not receive or import this content. Retry here, or discard and capture it again. Your current work is kept.",
    "imageHint": "Review this image before importing. AI recognition starts only when you choose to recognize the image, using your website account and credits.",
    "textHint": "Import into this tool to validate and edit the notation.",
    "replaceHint": "Importing replaces the current work in this view. Save anything you want to keep first.",
    "board": "Board position → FEN",
    "scoresheet": "Scoresheet → PGN",
    "imageAlt": "Image received from the ScanChess extension",
    "accept": "Import this content",
    "discard": "Discard",
    "retry": "Retry",
    "cleanupPending": "Finishing temporary transfer cleanup…",
    "cleanupError": "Could not confirm cleanup. Retrying only cleans the transfer; it will not change your current game."
  },
  "policy": {
    "effectiveDate": "Effective date",
    "updated": "Updated",
    "seeAlso": "See also:"
  },
  "privacyPage": {
    "title": "Privacy Policy",
    "intro": "ScanChess (\"we\", \"us\") respects and protects your privacy. This Privacy Policy explains how we collect, use, store, and disclose your information when you use the ScanChess website, browser extension and mobile app (the \"Service\").",
    "sections": [
      {
        "heading": "Information We Collect",
        "paragraphs": [
          "To provide our chess-scanning service, we collect the following information:"
        ],
        "bullets": [
          "Account information: When you sign in with Apple or Google, we receive your email address and a basic account identifier to create and manage your account.",
          "Content you upload: Photos of scoresheets, chessboards, and related images you capture or upload. These images are sent to a third-party AI model provider to be processed and converted into standard chess notation (PGN).",
          "Credits and transactions: Your credit balance, purchase records, and consumption history, used for billing and abuse prevention.",
          "Usage and device information: For security and product improvement, we may log basic data such as device type, app version, and crash reports.",
          "Website analytics: Google Analytics 4 and Microsoft Clarity may collect page views, referral sources, approximate city-level location and page interactions under the cookie rules and choices described below."
        ]
      },
      {
      "id": "browser-extension",
      "heading": "Browser Extension Sign-in and Scanning",
      "paragraphs": [
        "The extension signs in directly to the ScanChess API with the email address and password you enter. It stores the returned session token and basic account profile in protected extension storage so content scripts cannot read them. The token is removed when you sign out or the session expires.",
        "The extension captures a visible page only after you choose a board or scoresheet action. Region selection and cropping happen locally. When you release the selection, only that image region is sent to api.scanchess.com and the AI providers described here for recognition; the result appears in the extension side panel without a website handoff.",
        "Current scan progress and results use browser session storage and clear when the browser session ends or you sign out. A newly recognized scoresheet is also saved to your ScanChess account when possible so it can appear in website history. The extension does not collect browsing history in the background or include analytics scripts.",
        "Opening a result on the website is optional and requires a separate action. That handoff uses an exact destination, tab-bound identifier and a temporary browser-session transfer that expires after 30 minutes. We use account, image and notation content only for the disclosed sign-in, capture, recognition, review and saving features, not for sale, unrelated advertising, creditworthiness or lending decisions."
      ]
      },
      {
        "heading": "How We Use Information",
        "bullets": [
          "To provide core functionality: recognizing your uploaded images and generating scan results.",
          "To manage your account, credit balance, and transactions.",
          "To keep the Service secure and prevent fraud and abuse.",
          "To respond to your support requests and improve the product."
        ]
      },
      {
        "heading": "Third-Party Services",
        "paragraphs": [
          "We share the minimum necessary data with the following third parties to operate the Service:"
        ],
        "bullets": [
          "AI model provider: To perform scan recognition, the scoresheet/board images you upload are transmitted to the AI model provider we use for processing.",
          "Apple and Google Sign-In: Used for authentication (Sign in with Apple / Google).",
          "Waffo (Waffo Pancake): The merchant of record for web subscriptions. Your payment details are collected and processed by Waffo — we never see or store your card details. We receive only the order id, billing email, and subscription status, which we use to grant Pro.",
          "Google Analytics 4 and Microsoft Clarity: Website analytics subject to the cookie rules and choices described below.",
          "Cloudflare: Hosting, CDN, and email routing for the site and API, which processes the connection logs this requires.",
          "We do not sell your personal information, and we do not use it for advertising unrelated to the Service."
        ]
      },
      {
        "heading": "Cookies and Analytics",
        "paragraphs": [
          "Your web sign-in session is kept in a secure, server-only cookie. Browser storage holds interface preferences and, after you confirm an import, may hold game data and images to restore your work. These drafts use session storage first and local storage when session storage is unavailable. The necessary session cookie cannot be turned off: without it you cannot stay signed in on the web.",
          "Beyond that we use two analytics services, and both set cookies. Where prior consent is required by law — the EEA, the UK, and Switzerland — neither loads until you press \"Accept\" in the prompt. Elsewhere they are on by default and you can turn them off at any time (see below):"
        ],
        "bullets": [
          "Google Analytics 4: Visit counts, referral sources, and page performance. Processed by Google and may be transferred outside your country, including to the United States.",
          "Microsoft Clarity: Records clicks, scrolling, and mouse movement within a page (session replay) plus heatmaps, so we can find interface problems. We do not use it to identify you personally."
        ],
        "paragraphsAfter": [
          "You can change your mind at any time from \"Cookie settings\" in the footer of every page, or from your account settings. When analytics are off, none of these scripts load at all. Turning them off does not stop a script that is already running in the tab you are on — reload the page and it will not come back."
        ]
      },
      {
        "heading": "Data Retention",
        "paragraphs": [
          "We retain your account information, game history, and images only for as long as necessary to provide the Service. When the data is no longer needed, or when you request deletion, we delete it."
        ]
      },
      {
        "heading": "Data Deletion and Account Deletion",
        "paragraphs": [
          "You can delete your account at any time — in the mobile app under Settings, or on the web at https://scanchess.com/delete-account. This deletes your account information along with the uploaded images and scan data associated with your account. Once deleted, this data cannot be recovered.",
          "If you need help deleting your data, you can also email us at {{email}}."
        ]
      },
      {
        "heading": "Data Security",
        "paragraphs": [
          "We use reasonable technical and organizational measures to protect your data in transit and at rest. However, no method of transmission over the Internet or electronic storage is completely secure."
        ]
      },
      {
        "heading": "Your Rights",
        "paragraphs": [
          "Wherever you live, you can exercise the following rights over the personal data we hold. To use any of them, email {{email}} and we will respond within 30 days."
        ],
        "bullets": [
          "Access: find out what data we hold about you and get a copy.",
          "Correction: ask us to fix data that is inaccurate.",
          "Deletion: delete your account yourself at any time, or ask us to do it.",
          "Restriction and objection: object to processing we base on legitimate interests, such as analytics.",
          "Portability: receive your game data in a common format — you can also export PGN yourself at any time.",
          "Withdraw consent: turn off analytics cookies at any time, without affecting processing carried out before you withdrew."
        ],
        "paragraphsAfter": [
          "EU/UK visitors: we process data to perform our contract with you (account, scanning, billing), for our legitimate interests (security and abuse prevention), and on your consent (analytics cookies). You have the right to complain to your local data protection authority.",
          "California residents: we do not \"sell\" or \"share\" personal information as those terms are defined by the CCPA/CPRA, and we will not treat you differently for exercising your rights.",
          "International transfers: our providers (the AI model provider, Cloudflare, Google, Microsoft, and Waffo) may process data outside your country, including in the United States and the EU."
        ]
      },
      {
        "heading": "Children's Privacy",
        "paragraphs": [
          "The Service is not directed to children under 13. We do not knowingly collect personal information from children. If you believe a child has given us personal information, contact {{email}} and we will delete it."
        ]
      },
      {
        "heading": "Changes to This Policy",
        "paragraphs": [
          "We may update this Privacy Policy from time to time. Material changes will be posted on this page with an updated effective date at the top."
        ]
      },
      {
        "heading": "Contact Us",
        "paragraphs": [
          "If you have any questions about this Privacy Policy, contact us by email at {{email}}."
        ]
      }
    ]
  },
  "termsPage": {
    "title": "Terms of Service",
    "intro": "Welcome to ScanChess. These terms (\"Terms\") govern your access to and use of the ScanChess website and mobile app (the \"Service\"). By using the Service, you agree to these Terms.",
    "sections": [
      {
        "heading": "Description of the Service",
        "paragraphs": [
          "ScanChess is an AI-powered tool that recognizes photos of handwritten scoresheets and chessboards and converts them into standard chess notation (PGN). AI recognition results may contain errors, so please verify the accuracy of the moves before relying on them."
        ]
      },
      {
        "heading": "Accounts and Age",
        "paragraphs": [
          "You may need to sign in with Apple or Google to use certain features. You are responsible for safeguarding your account and for all activity that occurs under it.",
          "The Service is not for children under 13. If you are under 18 (or the age of majority where you live), you may use the Service only with a parent or guardian's consent, and any purchase must be made by an adult able to enter a contract, or with their explicit consent."
        ]
      },
      {
        "heading": "Subscriptions, Credits and Purchases",
        "bullets": [
          "The Service uses credits for scanning: a scoresheet scan costs 2 credits and a board photo costs 1 credit, and every new account starts with 10 free credits. Current prices and credit rules are listed on our pricing page at scanchess.com/pricing.",
          "Pro is a subscription. It renews automatically at the same price for the period you chose — monthly or yearly — until you cancel.",
          "On the Mainland China store, Pro is sold as a 365-day pass priced in CNY and paid once with WeChat Pay. A pass does not renew and nothing further is charged when it ends; buying another extends it and the days you have left carry over.",
          "You can cancel yourself at any time at scanchess.com/pricing. Cancelling stops future charges; Pro stays active until the end of the period you have already paid for.",
          "Waffo is the merchant of record for web subscriptions: it is the seller, it appears on your statement, and it calculates tax at checkout.",
          "All payments are final and non-refundable — including the unused remainder of a period and unspent credits — except where applicable law requires otherwise. Use the free credits that come with your account to check the Service suits you before subscribing. The full terms are in our Refund Policy at scanchess.com/refunds.",
          "Purchases made through the Apple App Store or Google Play are also subject to those platforms' terms, and refunds for them must be requested from the platform."
        ]
      },
      {
        "heading": "Acceptable Use",
        "paragraphs": [
          "When using the Service, you agree not to:"
        ],
        "bullets": [
          "Upload any content that is unlawful, infringing, or that you do not have the right to process.",
          "Attempt to disrupt, reverse engineer, or abuse the Service or its underlying systems.",
          "Make excessive automated requests or circumvent the credit and billing mechanisms."
        ]
      },
      {
        "heading": "Term and Termination",
        "paragraphs": [
          "These Terms apply from the moment you start using the Service until you or we end them. If you breach the Acceptable Use rules above, we may take one or more of the following actions, depending on how serious the breach is and whether it is repeated:"
        ],
        "bullets": [
          "Issue a warning, or remove or restrict access to the offending content.",
          "Suspend your account, or limit specific features such as scanning.",
          "Terminate your account immediately and without prior notice for serious breaches — for example unlawful content, attacks on the Service, or circumventing the credit and billing mechanisms.",
          "If your account is terminated for a breach of these Terms, any unused credits are forfeited without refund and any active subscription stops renewing, except where a refund is required by applicable law or the relevant app store policy."
        ],
        "paragraphsAfter": [
          "We will notify you at the email address on your account when we suspend or terminate it, unless we are legally prevented from doing so. If you believe we acted in error, you may appeal by emailing {{email}} within 30 days of the notice, and we will review the decision.",
          "You may also stop using the Service at any time and delete your account and its data using the \"Delete Account\" feature. Sections that by their nature should survive termination — including Disclaimer, Limitation of Liability, and Governing Law — remain in effect."
        ]
      },
      {
        "heading": "Your Content",
        "paragraphs": [
          "You retain ownership of the images you upload. To provide the scanning feature, you grant us a limited license necessary to process those images, including transmitting them to the third-party AI model provider we use for recognition. See our Privacy Policy for details on how images are processed."
        ]
      },
      {
        "heading": "Account Deletion",
        "paragraphs": [
          "You can delete your account and associated data at any time using the in-app \"Delete Account\" feature. Once deleted, this data cannot be recovered."
        ]
      },
      {
        "heading": "Disclaimer",
        "paragraphs": [
          "The Service is provided on an \"as is\" and \"as available\" basis, without warranties of any kind, express or implied. We do not guarantee that recognition results are fully accurate or that the Service will be uninterrupted or error-free."
        ]
      },
      {
        "heading": "Limitation of Liability",
        "paragraphs": [
          "To the maximum extent permitted by applicable law, ScanChess shall not be liable for any indirect, incidental, or consequential damages arising from your use of or inability to use the Service."
        ]
      },
      {
        "heading": "Intellectual Property and Complaints",
        "paragraphs": [
          "The ScanChess software, interface, and documentation are ours. The images you upload and the notation we produce from them are yours; we process them only to provide the Service.",
          "If you believe something on the Service infringes your copyright or other rights, email {{email}} with: how to contact you, what the material is and where it appears, a statement of your rights in the work, and a statement that you believe in good faith the use is not authorised. We investigate promptly, remove material where warranted, and may terminate accounts that infringe repeatedly."
        ]
      },
      {
        "heading": "Changes to the Service",
        "paragraphs": [
          "We may improve, change, or discontinue parts of the Service. If a change materially disadvantages you — a price increase, a reduction in what Pro includes, or shutting the Service down — we will give at least 30 days' notice by email to the address on your account or by notice in the app, so subscribers can cancel before the change takes effect rather than renew on the new terms.",
          "The Service may be interrupted briefly for maintenance, fixes, or to deal with a security incident. We keep those interruptions as short as we can."
        ]
      },
      {
        "heading": "Changes to These Terms",
        "paragraphs": [
          "We may update these Terms from time to time. Material changes will be posted on this page with an updated effective date at the top, and subscribers will be notified by email or in-app notice before they take effect. Continued use of the Service means you accept the updated Terms."
        ]
      },
      {
        "heading": "Disputes and Governing Law",
        "paragraphs": [
          "If something goes wrong, email {{email}} first — almost everything is settled that way within 30 days.",
          "These Terms are governed by the laws of Singapore, and disputes arising from them are subject to the courts of Singapore.",
          "If you are a consumer, the mandatory consumer protection law of the country where you habitually live applies to these Terms, and you may bring a claim in your local courts. Nothing here takes those rights away.",
          "If any part of these Terms is found invalid or unenforceable, that part is adjusted or removed only as far as necessary, and the rest stays in effect."
        ]
      },
      {
        "heading": "Contact Us",
        "paragraphs": [
          "If you have any questions about these Terms, contact us by email at {{email}}."
        ]
      }
    ]
  },
  "refundsPage": {
    "title": "Refund Policy",
    "sections": [
      {
        "heading": "All sales are final",
        "paragraphs": [
          "Subscription payments are not refundable. That includes the unused remainder of a period, a renewal you forgot to cancel, and credits you bought but did not spend.",
          "This is what lets us price the way we do, and in exchange the free tier is a real one: every new account gets 10 free credits — five scoresheets — with no card required and no feature held back. Use them to check that the recognition copes with your handwriting before you subscribe."
        ]
      },
      {
        "heading": "Exceptions",
        "paragraphs": [
          "The above does not apply to:"
        ],
        "bullets": [
          "Anything applicable law requires us to refund. This policy does not reduce rights given to you by the mandatory consumer protection law where you live; EU/UK customers keep their statutory withdrawal rights where those conditions are met.",
          "Purchases made through the Apple App Store or Google Play. Those are refunded by the platform under its own policy — request it there. We can neither approve nor block them.",
          "Technical errors on our side or the payment provider's, such as a duplicate charge or the wrong amount. That is not a refund, it is a correction: contact us and we will fix it."
        ]
      },
      {
        "heading": "What to do instead",
        "paragraphs": [
          "Cancel rather than wait for the charge and then ask for it back. Cancelling is self-serve: sign in, open the pricing page, press Cancel subscription. Two clicks, no email to anyone.",
          "Cancelling stops all future charges. You keep Pro until the end of the period you have already paid for, and the credits in your balance stay yours — they never expire. Step by step: \"How to cancel a ScanChess subscription\".",
          "Cancel before the renewal date. For a yearly plan, dealing with it as soon as you get the renewal reminder is the safest habit."
        ]
      },
      {
        "heading": "What credits are",
        "bullets": [
          "Credits are the internal unit for using the Service. They are not stored value and have no cash value.",
          "They cannot be refunded, paid out, or transferred to another account.",
          "The same is true of credits given for free through sign-up or referrals.",
          "Cancelling does not wipe the credits already in your balance."
        ]
      },
      {
        "heading": "Ask us anyway",
        "paragraphs": [
          "If a scan comes back unusable, if your account was charged in a way that looks wrong, or if you think your situation should not be handled by the rule above, email {{email}} with your account address and the order id from your Waffo receipt. We reply within 2 business days and look at cases on their facts — a policy is a policy, and a person is a person."
        ]
      },
      {
        "heading": "Who you are buying from",
        "paragraphs": [
          "Waffo is the merchant of record for web subscriptions and is what appears on your statement. Any refund we are legally required to make is initiated by us and carried out by Waffo.",
          "The 365-day pass sold on the Mainland China store and paid with WeChat Pay is also collected by Waffo and covered by this policy: paid once, not refundable. A pass never renews, so there is no forgotten renewal to dispute."
        ]
      }
    ],
    "intro": "ScanChess does not offer refunds. We put that at the top, and next to the buy button, because you should know it before you pay rather than discover it afterwards. Below: why, the exceptions, and what to do instead if you no longer want to be charged.",
    "stopCharges": "Want to stop being charged? Cancel on the <pricing>pricing page</pricing>, or email <mail>{{email}}</mail>."
  },
  "securityPage": {
    "title": "Security",
    "sections": [
      {
        "heading": "Reporting a vulnerability",
        "paragraphs": [
          "Email {{email}} with \"Security\" in the subject. Describe how to reproduce it and what it lets someone do. We reply within 3 business days and tell you the outcome once it is fixed.",
          "We will not pursue legal action over good-faith research, provided you do not access, change, or exfiltrate anyone else's data, do not run denial-of-service or spam tests, and give us a chance to fix the issue before disclosing it. There is no paid bounty programme, but we will credit you by name if you want that."
        ]
      },
      {
        "heading": "How your data is protected",
        "bullets": [
          "Everything travels over HTTPS; the site and API sit behind Cloudflare.",
          "Passwords are stored as salted bcrypt hashes — we cannot read yours.",
          "Web sessions use signed JWTs in HttpOnly cookies; changing a password revokes previously issued sessions and password-reset tokens.",
          "We never handle payment details: web checkout is hosted by Waffo, our merchant of record, and we receive only an order id and subscription status.",
          "Deleting an account really deletes it — profile, games, and uploaded images go, and cannot be recovered."
        ]
      },
      {
        "heading": "The images you upload",
        "paragraphs": [
          "Scoresheet photos are sent to the third-party AI model provider we use for recognition; the Privacy Policy sets out exactly what is shared. Images belong to your account: delete a single game at any time, or delete the account to remove all of them."
        ]
      },
      {
        "heading": "What we do not have",
        "paragraphs": [
          "Plainly: no SOC 2, no ISO 27001, no third-party audit, and no paid bounty programme. ScanChess is built by a small team. If your school, federation, or employer needs compliance paperwork, write to us and we will tell you honestly what we can and cannot provide."
        ]
      }
    ]
  },
  "contactPage": {
    "title": "Contact us",
    "subtitle": "We are a small team, and a person reads every message.",
    "emailHeading": "Support email",
    "replyTime": "We reply within 2 business days, and usually the same day for anything about billing.",
    "includeHeading": "What to include",
    "include": [
      "The email address on your account.",
      "For billing: the order id from the receipt Waffo sent you.",
      "For a bad scan: the scoresheet photo, and which move came out wrong."
    ],
    "shortcutsHeading": "You might not need us",
    "shortcuts": {
      "pricing": "Pricing, credits and cancelling",
      "refunds": "Refund policy (no refunds)",
      "deleteAccount": "Delete your account and data",
      "faq": "Frequently asked questions"
    },
    "operatorHeading": "Who runs ScanChess",
    "operatorBody": "ScanChess is operated by SudoAI. Web subscriptions are sold by Waffo as merchant of record, which is what appears on your statement."
  },
  "faqPage": {
    "title": "Frequently Asked Questions",
    "subtitle": "Common questions about ScanChess scoresheet scanning",
    "items": [
      {
        "question": "What is ScanChess?",
        "answer": "ScanChess is an AI-powered chess scoresheet scanner that converts photos of handwritten chess notation into standard PGN format. Simply upload a photo and the AI automatically recognizes the moves."
      },
      {
        "question": "What notation formats are supported?",
        "answer": "We support Standard Algebraic Notation (SAN) in various handwriting styles. Shorthand forms like \"dc\" (pawn captures) are automatically converted to standard format like \"dxc5\"."
      },
      {
        "question": "Is it free to use?",
        "answer": "Every new account gets 10 free credits, no card required. A scoresheet scan costs 2 credits and a board photo costs 1; editing, replay, PGN export and your game history cost nothing. You can also earn credits by inviting friends."
      },
      {
        "question": "What does Pro cost, and what do I get?",
        "answer": "Pro is {{proMonthly}}/month or {{proYearly}}/year and adds 100 credits every 30 days (about 50 scoresheets); Pro+ is {{proPlusMonthly}}/month or {{proPlusYearly}}/year and adds 500. Unused credits stay in your balance, and new features reach Pro first. Editing, replay, PGN export and cloud history are free on every account; what Pro buys is volume. The full comparison is on the pricing page at /pricing."
      },
      {
        "question": "How do I pay, and what shows on my statement?",
        "answer": "Sign in, open the pricing page, and press Subscribe — that opens a checkout hosted by Waffo. Waffo is the merchant of record for web subscriptions: it takes the payment, calculates tax, and is what appears on your statement rather than ScanChess. We never see or store your card details. In mainland China, switch the pricing page to the Mainland China store to buy a 365-day Pro pass in CNY with WeChat Pay — paid once, never renewing."
      },
      {
        "question": "How do I cancel?",
        "answer": "Sign in and open /pricing — a \"Your subscription\" panel appears at the top with a Cancel subscription button. No need to email anyone. Cancelling stops the next charge; Pro and the credits already in your balance stay until the paid period ends. Subscriptions bought in the iOS app are cancelled in iPhone Settings → Subscriptions instead."
      },
      {
        "question": "Can I get a refund?",
        "answer": "No. All payments are final and non-refundable, including the unused remainder of a period and unspent credits, except where applicable law requires otherwise. That is why the free tier is a real one: 10 credits on sign-up, no card, no feature held back — use it to check the recognition suits you before subscribing. If you no longer want to be charged, cancel: it is self-serve and takes two clicks. Full terms at /refunds."
      },
      {
        "question": "How accurate is the recognition?",
        "answer": "Recognition quality depends on handwriting, lighting, camera angle, and notation style, so we do not promise a fixed accuracy rate. Chess-rule validation flags low-confidence or illegal moves for your review."
      },
      {
        "question": "Can I scan multiple pages at once?",
        "answer": "Yes! You can upload up to 10 images in one scan (JPG, PNG or WebP; HEIC is not supported yet). Pages are read in the order shown, so a double-sided or multi-page scoresheet becomes one game, and it still costs a single scan."
      },
      {
        "question": "How do I export my game?",
        "answer": "After scanning, click \"Export PGN\" to download a standard PGN file. You can also copy PGN to clipboard and paste directly into Chess.com or Lichess."
      },
      {
        "question": "What if the recognition has errors?",
        "answer": "Use the pencil button beside a move to edit it. The system validates moves in real-time. You can use shorthand input (like \"dc\"), and it will auto-convert to full notation."
      },
      {
        "question": "Are my games saved?",
        "answer": "A successful scoresheet scan is automatically saved to cloud History. If you edit moves or game details afterward, “Save Game” updates the same record instead of creating a duplicate. Scanning requires an account."
      },
      {
        "question": "How long do you keep my photos and games, and how do I delete them?",
        "answer": "Scoresheet photos are stored with the recognized game in your account until you delete them. Deleting a game from History removes its photos with it; deleting your account in Settings removes every game, photo and credit record. Deletion takes effect in the live database immediately, and routine backup copies expire within 90 days."
      }
    ],
    "ctaTitle": "Still have questions?",
    "ctaBody": "Try ScanChess now and experience AI scoresheet recognition",
    "ctaButton": "Start Scanning"
  },
  "changelogEntries": {
    "2026-09-10": {
      "title": "The site in eight languages, a sharper eye for doubtful moves, and pairings for a whole round",
      "items": [
        "ScanChess now reads in Spanish, German, French, Portuguese, Italian and Russian as well as English and Chinese — on the website and in the iOS app. Pick yours from the globe in the header, or from Language in Settings.",
        "A misread move is usually still a legal move, so legality alone never caught it. Scans are now also checked for material behaving in a way no real game does — a piece left to be taken for nothing that nobody takes — and the plies involved are flagged for review with the reason. Nothing is rewritten.",
        "Notation people actually write is now understood rather than rejected: a pawn written with a P prefix, long algebraic like e2-e4, a capture that names the piece taken (BxN), and file-takes-file (cxd).",
        "When a move is doubtful, the review step now offers the legal moves that look closest to the ink instead of an open question, and an answer that would stop the game replaying is dropped rather than saved.",
        "Batch scanning learned the arbiter's workflow. Photos named like R3B7p2.jpg or filed under Round 3/Board 7 are grouped and placed on their own, and a pairing list — CSV, a PGN roster or JSON, from any program — files every game under the right players, ratings, round and board. Download the round as one PGN, plus a CSV of what still needs a human eye."
      ]
    },
    "2026-09-07": {
      "title": "Lines on the board, notes on the game, and a batch mode for whole rounds",
      "items": [
        "Click an engine line and it plays out on the board — step through it move by move, and while the engine is on, the board shows its best move as an arrow for the position you are looking at.",
        "Annotate your game: write a comment on any position, and record alternative lines — typed in, or saved straight from an engine preview. Comments and variations are saved with the game, travel with share links, and export inside the PGN.",
        "Scanning a whole round? The new batch page takes the stack of scoresheets at once, groups multi-page sheets into one game each, and files every game into your library on its own."
      ]
    },
    "2026-09-06": {
      "title": "Engine analysis, opening names, and games that belong to both players",
      "items": [
        "Stockfish runs in your browser. Turn it on under the board to see the evaluation and best lines, or review the whole game to have every inaccuracy, mistake and blunder marked with an accuracy score per side. Nothing is uploaded.",
        "Every game now names its opening (ECO code and Lichess name) in the workbench, the share page, the library and the PGN header.",
        "Scoresheets written with German, Spanish, French, Portuguese, Dutch, Polish, Czech, Hungarian, Russian or Chinese piece letters, and figurine notation, are read as such and translated to standard SAN.",
        "One click sends a game to Lichess and opens it there. On a share link, \"Save to my library\" files a copy under your own account — on the web and in the iOS app.",
        "The library sorts by saved time, game date or player name, and filters by result."
      ]
    },
    "2026-09-04": {
      "title": "The fixes from the September review",
      "items": [
        "You can upload a scoresheet and run your first scan before verifying your email; verification is asked for from the second scan on.",
        "A game you are still correcting survives a reload: the moves and images come back where you left them.",
        "Low-confidence moves are flagged again, each with the alternatives the rules allow, and you can insert or delete a move instead of only retyping one. A game can be saved while corrections are still pending.",
        "Game details (players, event, date, result) are editable after a scan, and a saved game can be exported as PGN straight from History.",
        "Share links can be turned off again, and a link you have revoked stops working immediately.",
        "Fixed: the mobile menu would not open; sessions expired mid-visit instead of refreshing quietly; the pricing page described the plans incorrectly.",
        "Honest copy: the home page no longer implies error-free output, the About page says who builds ScanChess and what it does not do, the tool pages load faster and never show an empty board, and Chinese articles show a real reading time."
      ]
    },
    "2026-08-23": {
      "title": "A link your opponent can open",
      "items": [
        "Every saved game can have a public link. Whoever opens it sees the board, the moves and the PGN without an account.",
        "Scans that were refused because of where the AI request came from are retried from a US route automatically, instead of failing and refunding."
      ]
    },
    "2026-08-19": {
      "title": "No more confident guesses",
      "items": [
        "When a scanned game stops making sense, the move that breaks it is marked and the rest is left as written. Automatic correction is off; changes are yours to make.",
        "Board photos are read twice and cross-checked before a position is reported, and an unreadable image is now reported as unreadable rather than as a plausible-looking position.",
        "Board mode shows a real photo → position demo, and the free tools sit above the fold on their pages."
      ]
    },
    "2026-08-17": {
      "title": "Free tools, and Pro+",
      "items": [
        "Three tools that need no account: a PGN viewer, a board editor that produces FEN, and a PGN validator that finds the move that breaks a game.",
        "Pro+ ($19.99/month or $119.99/year) adds 500 credits every 30 days for clubs and coaches who scan a lot. Web subscribers can move between Pro and Pro+.",
        "Scanning the same photo twice no longer charges twice: the earlier result is returned for free.",
        "The scan-complete email is back, and the API now runs on Cloudflare, closer to you."
      ]
    },
    "2026-08-12": {
      "title": "Accounts, billing and consent",
      "items": [
        "A settings page: your plan and credits, display name, password, referral code, language, billing history, and one button that downloads every game you have saved.",
        "Subscriptions can be cancelled on the pricing page in two clicks. Cancelling stops the next charge; Pro and your credits last out the period you paid for.",
        "Analytics now ask first. Google Analytics and Microsoft Clarity do not load until you accept, and the choice can be changed in settings at any time.",
        "A pricing page that shows what a scan actually costs, a refund policy, a contact page, and a security page.",
        "The first Chinese translations of the guides, and a language link on every article that has one."
      ]
    },
    "2026-08-11": {
      "title": "Pay on the web",
      "items": [
        "Pro can now be bought on the website, not only in the iOS app. Checkout is handled by Waffo, our merchant of record.",
        "Scoresheets that quote a number — \"1.d4\" written with the move number attached — no longer break the rest of the scan."
      ]
    },
    "2026-08-10": {
      "title": "Delete your account yourself",
      "items": [
        "Account deletion moved out of email and onto a page: /delete-account removes your profile, games and uploaded images for good.",
        "Email from ScanChess now goes through Cloudflare, which fixed the verification messages that were landing in spam."
      ]
    }
  },
  "toolCopy": {
    "pgn-viewer": {
      "name": "PGN Viewer",
      "seoTitle": "PGN Viewer – Open and Replay PGN Files Online, Free",
      "seoDescription": "Paste or upload a PGN file and replay any chess game move by move. Free online PGN viewer with keyboard navigation, FEN export and share links. No sign-up.",
      "kicker": "Free tool · No account needed",
      "h1": "Online PGN Viewer",
      "tagline": "Paste a PGN, replay the game move by move, copy any position as FEN.",
      "intro": "Paste a PGN or open a .pgn file to step through the game on an interactive board. Every position can be copied as FEN, opened in the board editor, or shared with a link. Everything runs in your browser — nothing is uploaded.",
      "features": [
        {
          "title": "Multi-game files",
          "body": "Load a tournament file with dozens of games and switch between them from a list."
        },
        {
          "title": "Tap or keyboard navigation",
          "body": "Tap any move to jump to it. On a desktop, ← → step through the game and Home/End jump to the start or the final position."
        },
        {
          "title": "Position tools",
          "body": "Copy the FEN of any position, open it in the board editor, or analyse it on Lichess in one click."
        },
        {
          "title": "Forgiving parser",
          "body": "Comments, variations, NAGs and even scoresheet shorthand like 0-0 or dc are understood. Illegal moves are flagged, not silently dropped."
        }
      ],
      "howToTitle": "How to use the PGN viewer",
      "howTo": [
        "Paste PGN text into the box, or use Choose file to pick a .pgn — on a desktop you can also drag one onto the box.",
        "Tap Load. The board shows the starting position, with the move list beside it on a wide screen and below it on a phone.",
        "Tap any move to jump to that position; on a desktop the arrow keys work too.",
        "Use Copy FEN, Open in editor or Share to take the position elsewhere."
      ],
      "faq": [
        {
          "question": "What is a PGN file?",
          "answer": "PGN (Portable Game Notation) is the standard plain-text format for recording chess games. It contains a header with tags such as Event, White, Black and Result, followed by the moves in algebraic notation. Chess.com, Lichess and every chess database can import and export PGN."
        },
        {
          "question": "Is my PGN uploaded to a server?",
          "answer": "No. The viewer parses and replays the game entirely in your browser. Nothing you paste or open here leaves your device."
        },
        {
          "question": "Can I view a PGN with several games?",
          "answer": "Yes. When the file contains more than one game a selector appears above the board so you can switch between them."
        },
        {
          "question": "What if the PGN has an illegal move?",
          "answer": "The viewer replays every legal move up to the problem and highlights the move it could not play. Use the PGN validator to see the legal alternatives and produce a cleaned file."
        },
        {
          "question": "How do I get a PGN from a paper scoresheet?",
          "answer": "Photograph the scoresheet and run it through ScanChess. The AI reads the handwriting, validates the moves and gives you a downloadable PGN you can open in this viewer."
        }
      ],
      "cta": {
        "title": "Have a handwritten scoresheet instead?",
        "body": "ScanChess turns a photo of your scoresheet into a validated PGN in seconds. New accounts get free credits — no card required.",
        "button": "Scan a scoresheet"
      }
    },
    "board-editor": {
      "name": "Board Editor & FEN Generator",
      "seoTitle": "Chess Board Editor & FEN Generator – Free Online",
      "seoDescription": "Free online chess board editor. Tap or drag pieces to set up any position, get the FEN instantly, download the board as a PNG image, or open it in analysis. No login.",
      "kicker": "Free tool · No account needed",
      "h1": "Chess Board Editor & FEN Generator",
      "tagline": "Place pieces manually, or paste a screenshot to hand it to image-to-FEN scanning.",
      "intro": "Set up any position by tapping or dragging pieces, or paste or drop a screenshot above the board to continue in image-to-FEN scanning. The FEN updates as you edit and can be copied, shared, exported as an image, or analysed here or on Lichess.",
      "features": [
        {
          "title": "Live FEN",
          "body": "The FEN string updates with every change, and a paste box lets you load one to start from."
        },
        {
          "title": "Position checks",
          "body": "Castling rights, side to move and en passant are set from the panel; the tool warns when a position is not playable."
        },
        {
          "title": "Board to image",
          "body": "Download the diagram as a crisp PNG for a blog, worksheet or social post."
        },
        {
          "title": "Touch friendly",
          "body": "Tap a piece in the tray, then tap squares to place it. Tap the eraser to clear squares."
        }
      ],
      "howToTitle": "How to use the board editor",
      "howTo": [
        "Start from the initial position, an empty board, or paste a FEN.",
        "Tap a piece in the tray, then tap a square to place it — or drag it across on a desktop. Tap the eraser, or drag a piece off the board, to remove it.",
        "Choose the side to move and castling rights in the panel.",
        "Copy the FEN, download the PNG, share the link or open the position for analysis."
      ],
      "faq": [
        {
          "question": "What is FEN?",
          "answer": "FEN (Forsyth–Edwards Notation) is a one-line description of a chess position: piece placement rank by rank, side to move, castling rights, en passant square, halfmove clock and move number. Engines, databases and websites use it to exchange positions."
        },
        {
          "question": "Why does the tool say my position is not playable?",
          "answer": "A legal position needs exactly one king per side, no pawns on the first or eighth rank, and the side that is not to move must not be in check. You can still copy the FEN, but engines and analysis boards may reject it."
        },
        {
          "question": "Can I get a FEN from a photo of a real chessboard?",
          "answer": "Yes — ScanChess includes a board-photo recognizer that turns a picture of a physical or on-screen board into a FEN, which you can then fine-tune here."
        },
        {
          "question": "How do I turn a FEN into an image?",
          "answer": "Paste the FEN into the editor and click Download PNG. The image is rendered locally at high resolution with coordinates."
        }
      ],
      "cta": {
        "title": "Snap a real board instead",
        "body": "ScanChess reads a photo of a physical chessboard and gives you the FEN, ready to edit here or analyse. Free credits on sign-up.",
        "button": "Recognise a board photo"
      }
    },
    "pgn-validator": {
      "name": "PGN Validator & Cleaner",
      "seoTitle": "PGN Validator – Check and Fix a Chess PGN Online",
      "seoDescription": "Paste chess notation to check every move for legality, spot the exact error, and download a clean, standards-compliant PGN. Free, instant, no login.",
      "kicker": "Free tool · No account needed",
      "h1": "PGN Validator & Cleaner",
      "tagline": "Find the first move that does not work, get a clean seven-tag PGN back.",
      "intro": "Paste a PGN or a bare list of moves. The validator plays them out on a real board, points at the first move that does not work and lists the legal alternatives, then rewrites the game as a clean seven-tag PGN. Shorthand such as 0-0, dc or e8Q is normalised automatically.",
      "features": [
        {
          "title": "Exact error location",
          "body": "See the move number, the token that failed, and every legal move in that position."
        },
        {
          "title": "Notation clean-up",
          "body": "Castling with zeros, missing check marks, lowercase pieces and promotion shorthand are corrected to standard SAN."
        },
        {
          "title": "Standard output",
          "body": "The result is a Seven Tag Roster PGN wrapped at 80 columns that Chess.com, Lichess and ChessBase accept."
        },
        {
          "title": "Nothing leaves your browser",
          "body": "Validation runs locally with chess.js. Paste tournament games without worrying about privacy."
        }
      ],
      "howToTitle": "How to validate a PGN",
      "howTo": [
        "Paste the PGN, or just the moves, into the box.",
        "Click Validate. Green means every move is legal; red points at the first problem.",
        "Fix the move in your source (or in the PGN viewer) and validate again.",
        "Copy or download the cleaned PGN."
      ],
      "faq": [
        {
          "question": "What does the validator check?",
          "answer": "It parses the header tags, strips comments and variations, then plays each move on a board that enforces the rules of chess. Any move that is illegal, ambiguous or malformed is reported with its move number and the legal moves in that position."
        },
        {
          "question": "Does it fix errors automatically?",
          "answer": "It fixes notation errors — 0-0 for O-O, dc for dxc5, e8Q for e8=Q, missing + and # signs. It cannot guess what a genuinely illegal move was meant to be; that is why it shows the legal alternatives for you to choose from."
        },
        {
          "question": "Can I paste moves without headers?",
          "answer": "Yes. A bare move list such as \"1. e4 e5 2. Nf3 Nc6\" is enough. The cleaned output adds placeholder headers you can fill in."
        },
        {
          "question": "Why do handwritten scoresheets produce invalid PGN?",
          "answer": "Players skip a move, write the wrong file, or forget to mark a capture. If you are typing up a scoresheet, ScanChess can read the photo, apply the same validation and let you correct moves on the board."
        }
      ],
      "cta": {
        "title": "Typing up scoresheets by hand?",
        "body": "Skip the typing. ScanChess reads handwritten scoresheets, validates every move the same way and lets you fix mistakes on the board. Free credits on sign-up.",
        "button": "Scan a scoresheet"
      }
    },
    "printable-scoresheets": {
      "name": "Printable Scoresheet Generator",
      "seoTitle": "Printable Chess Score Sheet PDF – Free Notation Sheets",
      "seoDescription": "Print free chess score sheets and notation sheets as PDF: a 60-move tournament sheet, an 80-move classical sheet, a large-grid 40-move sheet for kids and a two-game rapid page.",
      "kicker": "Free PDF · A4 and US Letter",
      "h1": "Printable Chess Score Sheets",
      "tagline": "Pick a layout, add your event details, and print or save a PDF.",
      "intro": "A chess score sheet (also called a notation sheet, or a scorebook page) is where both players write every move of a tournament game. Choose from four layouts: a 60-move sheet in the two-column tournament format, an 80-move sheet for long classical games, a 40-move sheet with large rows for kids and beginners, and a rapid page that fits two 30-move games. Add the event, round and club, check the live preview, then print it or save it as a PDF. When the game is over, a photo of the filled-in sheet is all ScanChess needs to turn it into a PGN.",
      "features": [
        {
          "title": "Four layouts",
          "body": "60 moves for club and tournament games, 80 moves for classical time controls, 40 large rows for juniors, and two 30-move games on one page for rapid events."
        },
        {
          "title": "Event details printed in",
          "body": "Fill in the tournament, date, round, table, players and club before printing, or leave any field blank for players to write by hand."
        },
        {
          "title": "Sharp on A4 and US Letter",
          "body": "The sheets are drawn as vectors in black and white, so lines and move numbers stay crisp on any office printer and use little toner."
        },
        {
          "title": "Ready to scan afterwards",
          "body": "The grid keeps White and Black moves in separate, numbered columns, which is the layout a scoresheet scanner reads most reliably."
        }
      ],
      "howToTitle": "How to print a chess score sheet",
      "howTo": [
        "Choose a layout: 60 moves, 80 moves, 40 moves for kids, or two rapid games on one page.",
        "Optionally type the tournament, round, club or player names to print them on every sheet.",
        "Click \"Print Scoresheet\" and print, or choose \"Save as PDF\" in the print dialog to keep a file.",
        "After the game, photograph the completed sheet and let ScanChess turn the handwriting into a PGN."
      ],
      "faq": [
        {
          "question": "What is a chess notation sheet?",
          "answer": "It is the same thing as a score sheet: a form with numbered rows where both players record each move in algebraic notation, plus boxes for the event, round, players and result. A scorebook is simply many of these sheets bound together."
        },
        {
          "question": "Do these sheets follow FIDE conventions?",
          "answer": "The 60-move and 80-move sheets use the usual tournament layout: a header for White, Black, event, date, round, table and result, numbered move rows with White and Black columns, and signature lines for both players. An arbiter can still require the official sheet of a particular event."
        },
        {
          "question": "How do I fill out a chess score sheet?",
          "answer": "Write the move number once per row, White's move in the left column and Black's in the right, using algebraic notation such as Nf3 or exd5. Under FIDE rules you make the move on the board first and then write it down. Our guide on filling out a scoresheet walks through a full example."
        },
        {
          "question": "How can I save the sheet as a PDF file?",
          "answer": "Click \"Print Scoresheet\" (or press Ctrl+P / Cmd+P) and pick \"Save as PDF\" as the print destination instead of a printer."
        },
        {
          "question": "What paper size should I use?",
          "answer": "Choose A4 (210 x 297 mm) or US Letter (8.5 x 11 in) in the paper setting. Both print with standard margins."
        },
        {
          "question": "How do I turn a filled-in score sheet into a PGN?",
          "answer": "Take a clear, flat photo of the sheet and upload it to ScanChess. It reads the handwriting, replays every move on a board to check it is legal, and lets you correct anything before you download the PGN."
        }
      ],
      "cta": {
        "title": "Already filled out your score sheet?",
        "body": "Skip the typing. ScanChess reads the handwritten moves, checks each one against the rules, and gives you a PGN to replay or import into Lichess.",
        "button": "Scan a score sheet"
      }
    },
    "game-analysis": {
      "name": "Game Analysis",
      "seoTitle": "Free Chess Game Analysis – Stockfish in Your Browser",
      "seoDescription": "Paste a PGN and have Stockfish review the whole game: accuracy for both sides, every inaccuracy, mistake and blunder, and the move it would have played. Free, no sign-up, nothing uploaded.",
      "kicker": "Free tool · No account needed",
      "h1": "Free Chess Game Analysis",
      "tagline": "Paste a game, get a Stockfish review of every move without signing in.",
      "intro": "Load a PGN and Stockfish runs in this tab, not on a server. Switch the engine on, review the whole game, and the move list fills with the verdict on each move: an accuracy figure per side, and a mark against every inaccuracy, mistake and blunder. Step through any position to see the engine’s lines and the move it preferred.",
      "features": [
        {
          "title": "The engine runs on your device",
          "body": "Stockfish 18 is downloaded once and searches in your browser. Your games are never sent anywhere, and there is no queue and no daily limit."
        },
        {
          "title": "A verdict on every move",
          "body": "The whole-game review walks each position and scores the move that was played against the one the engine wanted, in winning chances rather than raw centipawns."
        },
        {
          "title": "Accuracy for both sides",
          "body": "Each side gets a single accuracy figure, plus counts of inaccuracies, mistakes and blunders, so a post-mortem has somewhere to start."
        },
        {
          "title": "Lines you can walk into",
          "body": "Any variation the engine suggests can be played out on the board and stepped through move by move, then dropped to return to the game."
        }
      ],
      "howToTitle": "How to analyse a game",
      "howTo": [
        "Paste the PGN into the box, or open a .pgn file. The example game loads with one tap if you just want to see how it works.",
        "Press Start analysis. The engine is about seven megabytes and is fetched once, so the first run takes a moment.",
        "Press Review the whole game. Progress runs along the move list as each position is searched.",
        "Tap any move to see its verdict, the engine’s preferred move, and the lines from that position."
      ],
      "faq": [
        {
          "question": "Is the analysis really free, with no account?",
          "answer": "Yes. The engine runs in your browser, so there is nothing to meter. No sign-up, no credits, no daily cap on how many games you review."
        },
        {
          "question": "Which engine is this, and how strong is the analysis?",
          "answer": "Stockfish 18, the lite single-threaded WebAssembly build. The whole-game review searches each position to a fixed shallow depth so a long game finishes in reasonable time; stepping to a single position searches it deeper. For serious opening preparation a desktop engine given minutes per move will always see further."
        },
        {
          "question": "Does my game get uploaded?",
          "answer": "No. The PGN is parsed in the page and the engine searches on your own processor. Nothing about the game leaves your device."
        },
        {
          "question": "What do the accuracy numbers mean?",
          "answer": "Each move is scored by how much winning chance it gave away compared with the engine’s choice, and the accuracy figure is the average across a side’s moves. It is a summary, not a rating: a quiet game with few decisions will score higher than a sharp one played just as well."
        },
        {
          "question": "Why is the first analysis slow?",
          "answer": "The WebAssembly engine has to be downloaded before it can search. After that it is cached, and later visits start immediately."
        },
        {
          "question": "How do I analyse a game I played on paper?",
          "answer": "Photograph the scoresheet and run it through the ScanChess scanner first. It reads the handwriting, checks every move against the rules and gives you a PGN you can paste straight in here."
        }
      ],
      "cta": {
        "title": "The game you want to analyse is on paper",
        "body": "ScanChess reads a photographed scoresheet into a validated PGN, ready to review. New accounts start with free credits.",
        "button": "Scan a scoresheet"
      }
    },
    "rating-calculator": {
      "name": "FIDE Rating Calculator",
      "seoTitle": "FIDE Rating Calculator – Elo Change and Performance",
      "seoDescription": "Enter your rating and your opponents and see the change FIDE would publish. Uses the official table 8.1.2, the K-factor rules, and the 2025 amendment that lifts the 400-point cap above 2650.",
      "kicker": "Free tool · No account needed",
      "h1": "FIDE Rating Calculator",
      "tagline": "Your rating, your opponents, and the change the rating list would actually show.",
      "intro": "Enter your published rating, add a row per game with your opponent’s rating and the result, and the calculator works through the FIDE Rating Regulations as written: the expected score for each game comes from table 8.1.2, the development coefficient follows the rules in article 8.3.3, and the total is rounded the way article 8.3.4 says. It also gives the performance rating for the event.",
      "features": [
        {
          "title": "The official table, not the formula",
          "body": "FIDE converts a rating difference into an expected score with a lookup table whose steps round to two decimals. Calculators that use the logistic curve instead disagree by a point or more over a long event."
        },
        {
          "title": "The 2650 rule",
          "body": "Since 1 October 2025 the 400-point cap on the rating difference applies only below 2650. Above it the real gap is used, which changes what a draw against a much weaker opponent costs."
        },
        {
          "title": "Every K-factor case",
          "body": "Forty while you are completing your first thirty games, forty for juniors under 2300, ten once 2400 has been reached, twenty otherwise, and the ceiling that keeps K times the number of games at 700 or less."
        },
        {
          "title": "Performance rating too",
          "body": "The opponents’ average plus the rating difference for your fractional score, from table 8.1.1 — the number tournament reports print."
        }
      ],
      "howToTitle": "How to work out your rating change",
      "howTo": [
        "Type in the rating you are published at. If you are still completing your first thirty rated games, or you are a junior, tick the box that applies.",
        "Add one row per game: the opponent’s rating, and whether you won, drew or lost.",
        "Read the expected score beside each row; the number in brackets is the rating difference actually used after the cap.",
        "The panel shows your new rating, the change, and the event’s performance rating."
      ],
      "faq": [
        {
          "question": "How does FIDE calculate a rating change?",
          "answer": "For each game it takes the rating difference, reads the expected score from table 8.1.2, and subtracts it from what you actually scored. Those differences are added up across the event and multiplied by your development coefficient K. The result is rounded to a whole number, with a half rounding away from zero."
        },
        {
          "question": "What K-factor applies to me?",
          "answer": "K is 40 while you are completing events totalling your first 30 rated games, and 40 for a player until the end of the year of their 18th birthday as long as their rating is under 2300. It is 10 once a published rating has reached 2400, and stays there even if the rating later drops. Otherwise it is 20."
        },
        {
          "question": "Why is the difference capped at 400 points?",
          "answer": "To stop a single result against a far weaker or far stronger opponent from moving a rating too far. Since 1 October 2025 the cap only applies to players rated below 2650; from 2650 up the true difference is used in every case."
        },
        {
          "question": "Does this work for rapid and blitz ratings?",
          "answer": "Yes. The rapid and blitz regulations use the same probability table and the same K rules as the standard list, so the arithmetic here applies to all three. What differs is which events count towards which list."
        },
        {
          "question": "Is this an official FIDE tool?",
          "answer": "No. It implements the published FIDE Rating Regulations, but the rating list itself is the authority. Your federation may also rate the same event on a national list with different rules."
        },
        {
          "question": "Where do I get my opponents’ ratings from?",
          "answer": "The pairing sheet or the tournament’s published start list carries them, and they are the ratings used for the calculation, not whatever the opponent is rated by the time the list is published."
        }
      ],
      "cta": {
        "title": "The scoresheets from that event are still in your bag",
        "body": "ScanChess turns a photographed scoresheet into a validated PGN, so the games behind the rating change are searchable instead of stacked in a drawer.",
        "button": "Scan a scoresheet"
      }
    },
    "fen-to-image": {
      "name": "FEN to Image",
      "seoTitle": "FEN to Image – Free Chess Diagram Maker (PNG, SVG)",
      "seoDescription": "Turn any FEN into a chess board image. Choose the size, the square colours and which way the board faces, then download a PNG or a vector SVG. Free, no sign-up, nothing uploaded.",
      "kicker": "Free tool · No account needed",
      "h1": "FEN to Image",
      "tagline": "Paste a FEN, get a board diagram to download as PNG or SVG.",
      "intro": "Paste a FEN and the position is drawn as a board you can download. Pick a size up to 1600 pixels, choose the square colours, turn the board round or drop the coordinates, then take it as a PNG for a post or as an SVG that stays sharp at any size. The board is drawn from vector pieces in the page, so the file has no external images in it and nothing is uploaded to make one.",
      "features": [
        {
          "title": "PNG or vector SVG",
          "body": "PNG for anywhere that wants a picture; SVG for print, slides and anything that will be resized later."
        },
        {
          "title": "Sizes up to 1600 pixels",
          "body": "Small enough for a forum post, large enough for a printed page or a lesson handout."
        },
        {
          "title": "Five board colours",
          "body": "Classic brown, tournament green, blue, walnut and slate, with coordinates you can switch off."
        },
        {
          "title": "Any position, not just legal ones",
          "body": "A study fragment with no kings, or a puzzle with pieces on half the board, renders the same way. Only the placement field is needed."
        }
      ],
      "howToTitle": "How to turn a FEN into an image",
      "howTo": [
        "Paste the FEN into the box. Only the first field, the piece placement, is used for the picture.",
        "Choose a size, a board colour and which side is at the bottom.",
        "Download the PNG, or take the SVG if the diagram will be printed or resized.",
        "Need to change the position first? Open it in the board editor, drag the pieces and come back."
      ],
      "faq": [
        {
          "question": "What is a FEN?",
          "answer": "FEN (Forsyth-Edwards Notation) is a single line of text that describes one chess position: where the pieces stand, whose turn it is, the castling rights, the en passant square, and the two move counters. It is how a single position travels between programs, the way PGN carries a whole game."
        },
        {
          "question": "Should I download the PNG or the SVG?",
          "answer": "PNG if it is going into a post, a chat or a document that wants a picture. SVG if it will be printed, projected, or scaled up later, because a vector stays sharp at any size."
        },
        {
          "question": "Is the image uploaded or watermarked?",
          "answer": "Neither. The board is drawn in your browser and the file is written on your device. There is no watermark and no attribution requirement."
        },
        {
          "question": "Can I use these diagrams in a book or a course?",
          "answer": "Yes. The pieces are drawn from our own vector set and the images carry no restrictions, so they can go into lessons, articles and printed material."
        },
        {
          "question": "How do I get a FEN from a photo of a board?",
          "answer": "Photograph the position and let the ScanChess board reader work it out. It returns the FEN, which you can paste straight in here to make a clean diagram."
        }
      ],
      "cta": {
        "title": "The position is on a real board in front of you",
        "body": "Photograph it and ScanChess reads the position into a FEN. Recognising one board costs a single credit.",
        "button": "Scan a board"
      }
    },
    "pgn-to-gif": {
      "name": "Chess GIF Maker",
      "seoTitle": "PGN to GIF – Free Animated Chess Game Maker",
      "seoDescription": "Paste a PGN and download the game as an animated GIF. Choose the size, the speed, the board colours and which moves to include. Free, no sign-up, encoded in your browser.",
      "kicker": "Free tool · No account needed",
      "h1": "Chess GIF Maker",
      "tagline": "Turn a PGN into an animated GIF you can post anywhere.",
      "intro": "Load a game and the tool draws every position, encodes them into an animated GIF and hands you the file. Pick the size and speed, choose the board colours, highlight the squares each move touched, and trim the animation to the part of the game worth showing. The frames are drawn and the GIF is encoded in this page, so a game never leaves your device to become a picture.",
      "features": [
        {
          "title": "Encoded in your browser",
          "body": "No upload, no queue and no watermark. The GIF is written on your device from the first frame to the last."
        },
        {
          "title": "Only the moves that matter",
          "body": "Set a first and last move to animate just the combination, rather than eighty plies of manoeuvring nobody will watch."
        },
        {
          "title": "Three sizes and three speeds",
          "body": "240, 320 or 480 pixels square, at roughly half a second to a second and a half per move, with a longer hold on the first and last frames so a loop reads."
        },
        {
          "title": "The move is easy to follow",
          "body": "The squares a piece left and arrived on are tinted, so the eye finds each move instead of hunting for what changed."
        }
      ],
      "howToTitle": "How to make a chess GIF",
      "howTo": [
        "Paste the PGN, or open a .pgn file. The example game loads with one tap.",
        "Trim the range if you only want part of the game, then pick a size, a speed and the board colours.",
        "Press Build. The progress bar counts the frames as they are drawn.",
        "Check the preview and press Download to save the GIF."
      ],
      "faq": [
        {
          "question": "How large will the file be?",
          "answer": "A twenty-move fragment at 320 pixels is usually a few hundred kilobytes; a full game at 480 pixels can run into several megabytes. Trimming the range and dropping a size is the fastest way to make a GIF small enough to post."
        },
        {
          "question": "Why is there a limit on the number of moves?",
          "answer": "Beyond a couple of hundred frames a GIF stops being shareable: it grows past what most sites accept and nobody watches it to the end. The range is clamped rather than refusing the game."
        },
        {
          "question": "Is my game uploaded to make the GIF?",
          "answer": "No. The board is drawn and the GIF is encoded in your browser, which is also why the work happens on your device rather than instantly."
        },
        {
          "question": "Can I use the GIF commercially?",
          "answer": "Yes. The pieces are our own vector set, there is no watermark, and nothing about the output is restricted."
        },
        {
          "question": "Can I make a GIF from a game I played over the board?",
          "answer": "Scan the scoresheet with ScanChess first. Once the game is a PGN, paste it in here and animate whichever part of it you want to show."
        }
      ],
      "cta": {
        "title": "The game worth animating is on a scoresheet",
        "body": "ScanChess reads a photographed scoresheet into a PGN in seconds, and the PGN is all this tool needs.",
        "button": "Scan a scoresheet"
      }
    },
    "pgn-to-pdf": {
      "name": "PGN to PDF",
      "seoTitle": "PGN to PDF – Print a Chess Game with Diagrams",
      "seoDescription": "Paste a PGN and lay the game out for paper: two or three columns of moves, board diagrams where you want them, A4 or Letter. Save as PDF from the print dialog. Free, no sign-up.",
      "kicker": "Free tool · No account needed",
      "h1": "PGN to PDF",
      "tagline": "Lay a game out for paper, with diagrams, and save it as a PDF.",
      "intro": "Paste a PGN and the game is set as a printed game score: the players and event across the top, the moves in columns, and board diagrams at the points you choose. Print it, or pick Save as PDF in the print dialog to keep the file. Because it goes through the browser’s own printer, the moves stay as selectable text and the diagrams stay as vectors, so the PDF is sharp at any zoom and small enough to email.",
      "features": [
        {
          "title": "A game score, not a screenshot",
          "body": "The moves are text and the diagrams are vector drawings, so the file prints cleanly and can be searched and copied from."
        },
        {
          "title": "Diagrams where you want them",
          "body": "Final position only, every ten moves, every twenty, or none at all. Each diagram tints the squares the move touched."
        },
        {
          "title": "A4 or Letter",
          "body": "The page is set for either, with margins that keep the columns off the edge on a home printer."
        },
        {
          "title": "Two or three columns",
          "body": "Two columns for a game with notes to add by hand, three to fit a long game on a single sheet."
        }
      ],
      "howToTitle": "How to save a game as a PDF",
      "howTo": [
        "Paste the PGN, or open a .pgn file.",
        "Choose two or three columns, where diagrams should appear, and the paper size.",
        "Press Print. In the dialog that opens, set the destination to Save as PDF.",
        "Everything except the page itself is left out of the print, so the file starts at the game score."
      ],
      "faq": [
        {
          "question": "Where is the download button?",
          "answer": "There is no separate download: the print dialog is the download. Choose Save as PDF as the destination and pick where the file goes. This produces a smaller, sharper file than generating a PDF in the page would."
        },
        {
          "question": "Will the moves be selectable in the PDF?",
          "answer": "Yes. The game score is real text, so it can be searched, copied and read by a screen reader. A PDF made from a screenshot cannot do any of that."
        },
        {
          "question": "Can I print several games at once?",
          "answer": "One game per sheet, and a multi-game PGN puts a selector above the box so you can move between them. Print each one in turn."
        },
        {
          "question": "Does it print the comments and variations in my PGN?",
          "answer": "No. The layout is the game score: the moves that were played, with the tags and the result. Comments, variations and annotation symbols are left out to keep the sheet readable on paper."
        },
        {
          "question": "Can I print a blank scoresheet instead?",
          "answer": "Yes, the printable scoresheets tool has layouts for different time controls, with space for the event, round and player names."
        }
      ],
      "cta": {
        "title": "Going the other way, from paper to PGN",
        "body": "ScanChess reads a photographed scoresheet into a validated PGN. New accounts get free credits, no card required.",
        "button": "Scan a scoresheet"
      }
    }
  },
  "experience": {
    "startWithImage": "Start with the image you have",
    "heroTitle": "Bring the chess in your images to life.",
    "heroLead": "Turn a board image into a position to analyse, or handwritten scoresheets into a game to replay. Check the result, then make your next move.",
    "boardTitle": "Chess image to an editable position",
    "boardLead": "Paste or upload one clear screenshot, 2D diagram, or top-down board photo to get editable FEN. Angled photos and physical 3D pieces can need correction; always check the result and side to move.",
    "sheetTitle": "Handwritten scoresheets to PGN",
    "sheetLead": "Upload the pages of one game in order. Review the moves beside the original, then export PGN. Use batch scanning for several separate games.",
    "samples": "No image ready? Try an example.",
    "sampleHint": "Preloaded examples: no sign-in, no OCR request, no credits spent. Explore the result and try editing it.",
    "sample_board": "Board photo → editable position",
    "sample_scoresheet": "Scoresheet → first 8 moves",
    "sample_review": "Practise reviewing a flagged move",
    "sampleNotice": "Preloaded example / review exercise, not a live scan. The scoresheet example covers only its first 8 moves. A flagged move in the exercise is a teaching aid, not an OCR measurement.",
    "importNotice": "Imported notation. No image recognition was performed. Check the content before using it.",
    "checkPosition": "Rule checks do not prove a match with the original. Compare the result with your image and correct anything that differs.",
    "newTask": "New scan",
    "continueTask": "Continue your task",
    "replaceTitle": "Keep your current work?",
    "replaceHint": "Your current images or result are still here. Continue working on them, or replace them to start the requested task. Export any result you want to keep first.",
    "replace": "Replace and start",
    "keep": "Continue current task",
    "reviewTitle": "Review your game",
    "reviewNext": "Check next move",
    "reviewRemaining": "{{count}} moves to check",
    "sourceImage": "Original image",
    "zoom": "Zoom",
    "extras": "Game details, notes and sharing",
    "editPosition": "Correct pieces and position",
    "applyPosition": "Use this position",
    "turnHint": "Which side is to move? Board orientation does not answer this. Castling and other history may also need correction in the position editor.",
    "confirmPosition": "I have checked the position",
    "reviewed": "Checked by you",
    "unreviewed": "Not yet checked by you. You can still copy this FEN.",
    "outputTitle": "One position. Or an entire game.",
    "boardCost": "Image recognition requires sign-in: 1 credit per board. New accounts receive 10 free credits.",
    "sheetCost": "Image recognition requires sign-in: 2 credits per scoresheet scan, including the pages of one game.",
    "lowBalance": "{{balance}} credits left, enough for {{count}} scans in this mode.",
    "boardWaiting": "Reading the pieces and board orientation. You can check and correct the position once the result arrives.",
    "freeAllowance": "10 free credits on sign-up: up to 10 boards or 5 scoresheet scans. No card required.",
    "pricingUsage": "Credits can be mixed: 100 credits cover 100 boards or 50 scoresheet scans. Editing, replay, PGN export and saved game history remain free.",
    "selectedPlan": "Your selected plan: {{plan}}. Review the price below to continue.",
    "group_read": "Read & analyse",
    "group_create": "Prepare & export",
    "group_compete": "Before & after a tournament",
    "toolsTitle": "Already have PGN or FEN?",
    "toolsLead": "Replay, check, analyse or prepare your chess material for sharing. These tools run in your browser without an account.",
    "tournamentTitle": "A whole round of scoresheets?",
    "tournamentLead": "Group the pages by game, add a pairing list and prepare a round for review and PGN export. Keep individual game scans and tournament work separate.",
    "faqBoard": "Which board images can I use?",
    "faqBoardComparison": "How does this compare with FENShot or Chessify?",
    "boardComparison": "They solve the same image-to-FEN job with different tradeoffs. FENShot focuses on free local screenshot recognition, while Chessify includes board scanning in its service. ScanChess accepts screenshots, diagrams, and clear photos, then keeps correction beside the result; recognition requires sign-in and 1 credit. Check every tool’s output before analysis.",
    "faqSheet": "Can I upload several pages of a game?",
    "faqCorrection": "Can I correct the result?",
    "faqExample": "Do examples spend credits?",
    "correctionHelp": "Open a marked move or the position editor to correct the result. Editing does not spend credits.",
    "analysisHint": "Try legal moves by dragging, or tap a piece and its destination. Exploration does not change the original position.",
    "resetAnalysis": "Return to the original position",
    "partialTitle": "Some moves still need correction",
    "partialHint": "The full game cannot be replayed yet. You can export only the playable beginning with an unfinished result. Your original moves remain available for correction.",
    "partialConfirm": "Export playable beginning"
  },
  "refinement": {
    "preparing": "Preparing your images…",
    "boardInputHint": "Screenshots, diagrams, photos",
    "sheetInputHint": "One game, one or more pages",
    "fileGuide": "JPG, PNG, WebP · up to 15 MB per image",
    "playablePosition": "Editable position",
    "tryResult": "Try this position",
    "sampleHint": "Free examples. No account or credits needed.",
    "useOwnImage": "Use my own image",
    "portable": "Export your result to the chess tools you already use.",
    "position": "Position",
    "correct": "Correct",
    "needTurn": "Choose the side to move before analysis. This FEN currently has {{side}} to move.",
    "reviewHint": "Check the pieces or flagged moves. Corrections are free.",
    "analyse": "Analyse position",
    "notChecked": "Not yet checked by you",
    "moreOptions": "More options",
    "stepImage": "Image",
    "stepReview": "Review",
    "stepUse": "Use",
    "boardReview": "Review your position",
    "sample": "Example",
    "imported": "Imported",
    "unsaved": "Unsaved changes",
    "saved": "Saved",
    "reviewPending": "Ready to review",
    "boardSampleHint": "Try editing and analysing this example.",
    "sheetSampleHint": "First 8 moves. The review marker is part of the exercise.",
    "next": "Next issue",
    "save": "Save",
    "export": "Export",
    "guideLead": "Choose your material and follow it from upload to review and export.",
    "exportHint": "Download or copy PGN after review. If a move is still invalid, choose whether to export the playable beginning."
  },
  "scanFlow": {
    "signInToScan_one": "Sign in to scan · {{cost}} credit",
    "pagesReady_one": "1 page ready. Add more pages of this game or start scanning.",
    "replaceImage": "Replace image",
    "addPages": "Add more pages",
    "boardReady": "Image ready. Check it, then start recognition below.",
    "pagesReady": "{{count}} pages ready. Put them in game order before scanning.",
    "signInToScan": "Sign in to scan · {{cost}} credits",
    "readyLead": "Check your images, then start recognition. You can change the image type without uploading again."
  }
}
