{
  "athleteAnalytics": {
    "title": "Help improve the app",
    "description": "Allow Strength Academy to send signup steps, screen visits and workout-save events to PostHog in the EU. Names, contact details, workout contents, health data and messages are excluded. Events use your internal account ID after signup.",
    "deviceNote": "Optional. You can change this choice in Settings on this device.",
    "enable": "Allow analytics",
    "decline": "No thanks",
    "disable": "Turn off analytics",
    "saveFailed": "Your choice could not be saved. Analytics remains unchanged."
  },
  "coachAnalytics": {
    "title": "Help improve coach setup",
    "description": "Allow PostHog to measure coach screen visits using your internal account ID. We do not send workout content, messages, or screen recordings.",
    "deviceNote": "Optional, for this account in this browser. Change this anytime in Profile settings.",
    "enable": "Allow usage analytics",
    "decline": "No thanks",
    "disable": "Turn off usage analytics",
    "saveFailed": "Your preference could not be saved. Analytics remains unchanged."
  },
  "chat": {
    "today": "Today",
    "yesterday": "Yesterday",
    "unreadDivider": "Unread messages",
    "newMessages": "New messages",
    "jumpToLatest": "Jump to latest",
    "reconnecting": "Reconnecting\u2026 messages may take a moment",
    "noMessagesYet": "No messages yet. Say hello!",
    "edited": "edited",
    "failedTapToRetry": "Not sent. Tap to retry",
    "typeMessage": "Message",
    "attachVideo": "Send a video",
    "send": "Send",
    "recordVoice": "Record a voice note",
    "you": "You",
    "deleteMessage": "Delete message",
    "deleteConfirm": "Delete this message?",
    "previewVideo": "Video",
    "previewVoice": "Voice note",
    "previewCard": "Interactive card",
    "coachBadge": "Coach",
    "pinnedByCoach": "Pinned by coach",
    "reply": "Reply",
    "replyTo": "Reply to {{name}}\u2026",
    "quickReplySent": "Sent",
    "quickReplyFailed": "Could not send. Open the chat to try again.",
    "openChat": "Open chat",
    "edit": "Edit",
    "pin": "Pin message",
    "unpin": "Unpin",
    "delete": "Delete",
    "save": "Save",
    "cancel": "Cancel",
    "leaveReview": "Leave a review",
    "sendFailed": "Failed to send message",
    "uploadFailed": "Upload failed. Please try again.",
    "videoTooLarge": "Video must be under 100MB",
    "members_one": "{{count}} member",
    "members_other": "{{count}} members",
    "communityTitle": "Community chats",
    "communitySubtitle": "Connect with your training community",
    "selectCommunity": "Select a community to start messaging",
    "noCommunitiesCoach": "Create a public workout template to start a community chat",
    "noCommunitiesAthlete": "Join a workout program from the marketplace to access community chats",
    "noCommunitiesTitle": "No community chats",
    "browsePrograms": "Browse programs",
    "coachOnlyVideo": "Upload video (coaches only)",
    "coachOnlyVoice": "Record voice note (coaches only)"
  },
  "notifications": {
    "genericError": {
      "title": "Something didn\u2019t work",
      "body": "We\u2019ve been notified and are on it \u2014 your progress is safe."
    },
    "profilePartial": {
      "title": "Profile partly saved",
      "body": "Some details didn\u2019t save \u2014 you can finish them anytime in Settings."
    },
    "errors": {
      "generic": "Something went wrong. We\u2019ve been notified.",
      "network": "You appear to be offline. Check your connection and try again.",
      "auth": "Your session expired. Please sign in again.",
      "invalidCredentials": "Incorrect email or password.",
      "emailTaken": "An account with this email already exists.",
      "emailTakenSignIn": "You already have an account \u2014 just sign in below.",
      "emailNotConfirmed": "Please confirm your email first \u2014 check your inbox.",
      "rateLimited": "Too many attempts. Please wait a moment and try again.",
      "appleTimeout": "Apple sign-in is taking longer than expected. If the Apple window is still open you can finish there \u2014 otherwise please try again.",
      "appleUnavailable": "Apple sign-in couldn\u2019t start on this device. Make sure you\u2019re signed in to iCloud in Settings, then try again \u2014 or sign in with your email instead."
    }
  },
  "nav": {
    "workouts": "Workouts",
    "progress": "Progress",
    "calendar": "Calendar",
    "plans": "Plans",
    "community": "Chat",
    "coach": "Programs",
    "clientDashboard": "In Person",
    "admin": "Admin",
    "journeys": "Journeys",
    "growthTools": "Growth Tools",
    "challenge": "90-Day Challenge",
    "aiChat": "AI Chat",
    "promotionCrm": "Promotion",
    "account": "Account",
    "signIn": "Sign In",
    "signInNow": "Sign In Now \u2192",
    "powerContest": "PowerContest",
    "stayTuned": "Stay Tuned!",
    "plansAndTemplates": "Plans & Templates",
    "profileSettings": "Profile Settings",
    "achievements": "Achievements",
    "featureIdeas": "Feature Ideas",
    "technicalSupport": "Technical Support"
  },
  "auth": {
    "signInPrompt": "Sign in to your account to access your {{section}}"
  },
  "buttons": {
    "save": "Save",
    "cancel": "Cancel",
    "delete": "Delete",
    "edit": "Edit",
    "back": "Back",
    "close": "Close",
    "submit": "Submit",
    "confirm": "Confirm",
    "loading": "Loading...",
    "search": "Search",
    "create": "Create",
    "update": "Update",
    "remove": "Remove",
    "add": "Add",
    "next": "Next",
    "previous": "Previous",
    "done": "Done",
    "retry": "Retry"
  },
  "days": {
    "monday": "Monday",
    "tuesday": "Tuesday",
    "wednesday": "Wednesday",
    "thursday": "Thursday",
    "friday": "Friday",
    "saturday": "Saturday",
    "sunday": "Sunday"
  },
  "daysShort": {
    "mon": "Mon",
    "tue": "Tue",
    "wed": "Wed",
    "thu": "Thu",
    "fri": "Fri",
    "sat": "Sat",
    "sun": "Sun"
  },
  "status": {
    "active": "Active",
    "inactive": "Inactive",
    "pending": "Pending",
    "completed": "Completed",
    "cancelled": "Cancelled",
    "error": "Error",
    "success": "Success",
    "invited": "Invited"
  },
  "units": {
    "sets": "sets",
    "reps": "reps",
    "kg": "kg",
    "lbs": "lbs",
    "minutes": "min",
    "seconds": "sec",
    "hours": "hours",
    "meters": "m",
    "calories": "cal"
  },
  "language": {
    "label": "Language",
    "switchTo": "Switch language"
  },
  "coach": {
    "challenge": {
      "ui": {
        "title": "90-Day Challenge",
        "subtitle": "Fourteen missions, one number. Missions unlock when their goals are done, not when a week ends. The 90 days is the pace we compare you to, never a lock.",
        "back": "Back",
        "checkProgress": "Check my progress",
        "checking": "Checking…",
        "evaluated": "{{count}} goals just verified from your data.",
        "startTitle": "Start the challenge",
        "startBody": "Set the number you are building toward. The default is 1,000 a month of online coaching revenue, measured over the trailing 30 days. You can change it later.",
        "startCta": "Start",
        "targetLabel": "Monthly target",
        "currencyLabel": "Currency",
        "disclaimer": "The target is what we work toward with you. It is not a guarantee. Results depend on the work you put in, your market and your starting point.",
        "paceAhead": "{{count}} missions ahead of pace",
        "paceBehind": "{{count}} missions behind pace",
        "paceOnTrack": "On pace",
        "score": "{{pct}}% verified",
        "goals": "goals",
        "open": "Open",
        "markDone": "Mark as done",
        "undo": "Undo",
        "save": "Save",
        "optional": "Optional",
        "proofAuto": "Verified from your data",
        "proofSelf": "Your tick",
        "proofAi": "AI session",
        "reviewCall": "Review call",
        "reviewAi": "AI review",
        "needsIg": "Needs Instagram messaging permission. It turns on by itself once Meta approves the app.",
        "aiSoon": "The AI session for this goal is coming. Tick it yourself once you have done it.",
        "reviewAiSoon": "The AI review readout is coming. Tick it once you have reviewed the period.",
        "reviewCallSoon": "Book your review call from the calendar; tick it once you have had it.",
        "permalinkPlaceholder": "Paste the post link",
        "textPlaceholder": "Write it in one sentence",
        "baselineHint": "Enter your baseline in the number panel on the right.",
        "nextGoal": "Next",
        "noCoachTitle": "Coach account needed",
        "noCoachBody": "The challenge runs on a coach account. Switch to your coach profile to open it.",
        "verifiedBy": {
          "auto": "verified from your data",
          "self": "your tick",
          "ai": "AI",
          "call": "on the call",
          "admin": "confirmed by Strength Academy"
        }
      },
      "phases": {
        "setup": "Base camp",
        "foundation": "Foundation",
        "traction": "Traction",
        "compounding": "Compounding"
      },
      "number": {
        "title": "Your number",
        "inApp": "in-app",
        "manual": "outside",
        "targetRung": "{{amount}} target",
        "next": "Next rung: {{amount}} in the trailing 30 days.",
        "baseline": "Baseline (before day 1)",
        "target": "Target",
        "addEntry": "Paid outside the app? Add it",
        "amount": "Amount",
        "note": "Note (who, what)",
        "add": "Add",
        "channels": {
          "stripe": "Stripe",
          "sumup": "SumUp",
          "revolut": "Revolut",
          "invoice": "Invoice",
          "cash": "Cash",
          "other": "Other"
        }
      },
      "dose": {
        "title": "The dose",
        "rule": "4 DMs a day · 3 posts and 5 stories a week. Miss a day, fine. Never miss two in a row.",
        "dms": "DMs today",
        "posts": "posts today",
        "stories": "stories today",
        "streak": "Streak: {{count}} days",
        "best": "Best: {{count}}",
        "weeksHeld": "Weeks held: {{count}}",
        "autoNote": "DMs sent by your funnel and posts published through the app count themselves. Tap to add the ones the app cannot see."
      },
      "badges": {
        "title": "Badges",
        "none": "No badges yet. The first one is a connected Instagram account.",
        "goal_connected": "Connected",
        "goal_voice": "Voice ready",
        "goal_keyword": "Keyword live",
        "goal_stocked": "Stocked library",
        "goal_first_reel": "First reel",
        "goal_dose_on": "Dose on",
        "goal_on_camera": "On camera",
        "goal_reviewed_1": "Reviewed I",
        "goal_pipeline": "Pipeline wired",
        "goal_first_proof": "First proof",
        "goal_asked_everyone": "Asked everyone",
        "goal_reviewed_2": "Reviewed II",
        "goal_upsold": "Upsold",
        "goal_batcher": "Batcher",
        "goal_high_ticket": "High-ticket priced",
        "goal_best_month": "Best month",
        "goal_finisher": "Finisher",
        "ladder_target": "Target hit",
        "ladder_2000": "2,000 a month",
        "ladder_3000": "3,000 a month",
        "ladder_5000": "5,000 a month",
        "ladder_7500": "7,500 a month",
        "ladder_10000": "10,000 a month",
        "streak_7": "7-day dose",
        "streak_28": "28-day dose",
        "streak_90": "90-day dose"
      },
      "missions": {
        "m0": { "title": "Base camp", "mission": "Account set up to deliver before day 1: Instagram connected, offer and tiers live, brand applied, page published, voice recorded, roster loaded, first keyword armed, baseline locked.", "outcome": "Everything after this assumes these eight are true." },
        "m1": { "title": "Film everything once", "mission": "The b-roll batch filmed, the gym photographed, one reel built from your own footage and your own voice, the keyword used on one post.", "outcome": "A stocked footage library and your voice in the app." },
        "m2": { "title": "The dose starts", "mission": "4 DMs a day, 3 posts and 5 stories a week, and you can say what each piece of content is for.", "outcome": "The dose is running, and content has a job." },
        "m3": { "title": "Talking heads + the speed run", "mission": "Thirty statements written, one high-volume filming session shot, the first talking-head pieces built.", "outcome": "Volume on the board, in your own voice." },
        "m4": { "title": "Torn apart", "mission": "Everything you have published, analysed in depth. One adjustment written for the next four missions.", "outcome": "You know exactly what your content is doing wrong." },
        "m5": { "title": "Acquisition standardized", "mission": "The pipeline wired: content, signup, call, setup. Testimonial requests automated, the first proof captured and posted.", "outcome": "A path a stranger can walk without you improvising." },
        "m6": { "title": "Time & templates", "mission": "Five days of time tracked honestly, two more reusable templates built.", "outcome": "You know your real cost per client." },
        "m7": { "title": "Community + referrals", "mission": "A referral offer live, every active client asked, one piece made for the people who already know you.", "outcome": "Content stops being performance and starts being belonging." },
        "m8": { "title": "DM teardown + proof", "mission": "Your real DM threads torn apart, scripts sent and logged, prospects pulled, a second testimonial round.", "outcome": "The DM stops being guesswork." },
        "m9": { "title": "Proof pipeline + upsell", "mission": "Review requests to every eligible client, tiers written as an upgrade path, an upgrade offered to one client.", "outcome": "Client proof becomes automatic instead of occasional." },
        "m10": { "title": "Batch it", "mission": "Next week built in one sitting, every piece tagged with its job, one trend-led piece with a funnel behind it.", "outcome": "A week of content in half a day." },
        "m11": { "title": "The new product", "mission": "A high-ticket offer defined, priced and live on your page; renewals and upgrades listed.", "outcome": "An offer that exists and has a price." },
        "m12": { "title": "The conversion push", "mission": "Seven days of preorder, every route used, an email to the whole list, conversions logged by route, the number every day.", "outcome": "Best revenue month so far, and a number that proves what converts." },
        "m13": { "title": "Close", "mission": "Proof library gathered, the whole run reviewed with every number and its source.", "outcome": "The story gets its ending. The ladder keeps going." }
      },
      "goals": {
        "m0_ig": { "label": "Connect your Instagram professional account", "how": "Growth Tools → Get Started. Verified when the account shows connected." },
        "m0_offer": { "label": "Diagnose your offer and publish your tiers", "how": "The offer diagnostic picks your archetype and proposes three tiers with one recommended. Verified when a persona is confirmed and a tier is active." },
        "m0_brand": { "label": "Apply your brand kit", "how": "Brand wizard or guidelines. Verified when a kit exists." },
        "m0_page": { "label": "Publish your coach page", "how": "Verified when the page is published." },
        "m0_voice": { "label": "Record your voice", "how": "Three short teleprompter reads. Verified when your voice profile is ready." },
        "m0_roster": { "label": "Load your roster or build your first template", "how": "Verified when you own a template or have an active client." },
        "m0_loop": { "label": "Arm your first keyword: LOOP", "how": "One post ends with one word; the guide goes out automatically. Verified when a LOOP funnel is active." },
        "m0_baseline": { "label": "Lock your baseline and your target", "how": "Your online coaching revenue over the 30 days before day 1, and the number you are building toward." },
        "m1_broll": { "label": "Shoot the b-roll batch", "how": "Verified at 15 clips imported since you started." },
        "m1_photos": { "label": "Photograph the gym", "how": "Verified at 3 photos in your footage library." },
        "m1_reel": { "label": "Build one reel from your own footage and voice", "how": "Auto-Edit with your cloned voice. Verified when a render completes." },
        "m1_post": { "label": "Use the keyword on one post", "how": "Verified when a post publishes through the app, or paste the post link." },
        "m2_dose7": { "label": "Hold the dose for one week", "how": "Verified at 5 of the last 7 days with 4+ DMs." },
        "m2_plan": { "label": "Generate this week's content plan", "how": "Verified when a plan exists for this week." },
        "m2_buckets": { "label": "Sort your last 10 posts: stranger, follower, buyer", "how": "AI session over your recent posts." },
        "m2_funnel": { "label": "Arm FUNNEL", "how": "Verified when a FUNNEL funnel is active." },
        "m3_statements": { "label": "Write 30 statements", "how": "AI session seeded by your playbook. One sentence each, no scripts." },
        "m3_session": { "label": "One filming session uploaded", "how": "Verified at 8+ clips imported on a single day." },
        "m3_heads": { "label": "Talking-head pieces built", "how": "Verified at 3 renders since you started." },
        "m4_audit": { "label": "Run the content audit", "how": "Growth Tools → Content. Verified when an audit completes." },
        "m4_review": { "label": "Period review, missions 0 to 3", "how": "What the dose, the posts and the number did. One adjustment comes out of it." },
        "m4_adjust": { "label": "Write your one adjustment", "how": "One sentence. It stays on the map until mission 8." },
        "m4_line": { "label": "Arm LINE", "how": "Verified when a LINE funnel is active." },
        "m5_pipeline": { "label": "Wire the pipeline: content, signup, call, setup", "how": "Verified when intro-call slots exist and your page carries a lead-magnet or intro-call block." },
        "m5_testi_auto": { "label": "Turn on the testimonial request automation", "how": "Verified when a review-request automation or a plan-completed email trigger is active." },
        "m5_testi_first": { "label": "Capture your first testimonial", "how": "Verified when a review lands on you or one of your plans." },
        "m5_proofpost": { "label": "Post the first social-proof piece", "how": "Verified when your page carries a success-stories, testimonials or transformations block, or paste the post link." },
        "m5_proof": { "label": "Arm PROOF", "how": "Verified when a PROOF funnel is active." },
        "m6_time": { "label": "Track five days of time", "how": "Hours in content, outreach, programming, admin. Then your real cost per client." },
        "m6_templates": { "label": "Two more reusable templates", "how": "Verified at 2 templates created since you started." },
        "m6_hours": { "label": "Arm HOURS", "how": "Verified when a HOURS funnel is active." },
        "m7_referral": { "label": "Referral offer live", "how": "Verified when an active promo code exists." },
        "m7_ask": { "label": "Ask every active client", "how": "The two sentences, right after a win. Tick when everyone has been asked." },
        "m7_circle": { "label": "One piece for people who already know you", "how": "AI reframes this week's slot for your circle." },
        "m7_keys": { "label": "Arm CIRCLE and REFER", "how": "Verified when a CIRCLE or REFER funnel is active." },
        "m8_teardown": { "label": "DM teardown on your real threads", "how": "AI scores your openers and finds where threads died." },
        "m8_scripts": { "label": "Send from the tagged scripts, log outcomes", "how": "Manual DMs are yours to log; the app cannot see them." },
        "m8_prospects": { "label": "Pull prospects that look like your avatar", "how": "Prospect Finder. Verified when prospects exist." },
        "m8_testi2": { "label": "Second testimonial round", "how": "Verified at 2 reviews." },
        "m8_review": { "label": "Period review, missions 4 to 7", "how": "Dose held, revenue and clients with sources, one adjustment." },
        "m8_script": { "label": "Arm SCRIPT", "how": "Verified when a SCRIPT funnel is active." },
        "m9_requests": { "label": "Review requests sent to every eligible client", "how": "Verified when review prompts went out since you started." },
        "m9_tiers": { "label": "Tiers written as an upgrade path", "how": "Verified at 3 active tiers with one highlighted." },
        "m9_upgrade": { "label": "Upgrade offered to one client", "how": "One sentence, at a win, never at a complaint." },
        "m9_upsell": { "label": "Arm UPSELL", "how": "Verified when an UPSELL funnel is active." },
        "m10_batch": { "label": "Next week built in one sitting", "how": "Verified at 3 renders or carousel drafts on the same day." },
        "m10_intent": { "label": "Every piece tagged with its job", "how": "Convert, reach, engage or save. Decide before the hook." },
        "m10_trend": { "label": "One trend-led piece with a funnel behind it", "how": "Paste the post link." },
        "m10_key": { "label": "Arm INTENT", "how": "Verified when an INTENT funnel is active." },
        "m11_offer": { "label": "Define and price the high-ticket block", "how": "AI session on top of your offer's money model." },
        "m11_tier": { "label": "High-ticket tier live on your page", "how": "Verified when an active tier priced at 500 or more was created during the challenge." },
        "m11_renewals": { "label": "Renewal and upgrade list", "how": "Who is up for renewal, who has earned the upgrade conversation." },
        "m11_key": { "label": "Arm TICKET", "how": "Verified when a TICKET funnel is active." },
        "m12_push": { "label": "Seven-day preorder, every route", "how": "Posts, stories, DMs, email, referral asks. Tick when the seven days are done." },
        "m12_email": { "label": "Email campaign sent to the list", "how": "Verified when a campaign was sent during the challenge." },
        "m12_routes": { "label": "Conversions logged by route", "how": "Which route brought each sale." },
        "m12_number": { "label": "The number, each day of the push", "how": "Add outside payments as entries; in-app payments count themselves." },
        "m13_proof": { "label": "Proof library gathered", "how": "Verified when you hold at least one review." },
        "m13_review": { "label": "The whole run, every number", "how": "Adherence, dose, revenue and clients with sources, badges earned." },
        "m13_story": { "label": "Feature my story", "how": "Opt-in only. Nothing is published without your release." }
      }
    },
    "weeklyGrid": {
      "title": "This week",
      "qAnswered": "Answered",
      "qPending": "Awaiting answer",
      "qSkipped": "Skipped",
      "qNotAnswered": "Not answered yet",
      "qYes": "Yes",
      "qNo": "No",
      "pendingReview": "Awaiting review",
      "reviewed": "Reviewed",
      "empty": "\u2014",
      "mandatory": "Training",
      "optional": "Optional",
      "rest": "Rest",
      "readiness": "Readiness",
      "recovery": "Recovery",
      "setsFeel": "Sets felt",
      "readinessTooltip": "Pre-workout readiness check-in (1-5, avg of answers)",
      "recoveryTooltip": "Morning recovery check-in, overall (1-5)",
      "setsFeelTooltip": "Average feeling across the day's logged sets (1=missed, 4=easy)"
    },
    "scorecard": {
      "title": "Weekly health score",
      "color_green": "Green",
      "color_yellow": "Yellow",
      "color_red": "Red",
      "color_gray": "No data",
      "subScores": "Behavior {{behavior}} \u00b7 Outcome {{outcome}} \u00b7 State {{state}}",
      "insufficientData": "Not enough logged data this week to score.",
      "notScoredYet": "This week hasn't been scored yet. Scorecards are computed automatically at the end of the week.",
      "generateNow": "Generate now",
      "generating": "Generating\u2026",
      "recompute": "Recompute scorecards",
      "completion": "Completion",
      "prs": "PRs",
      "readiness": "Readiness",
      "sleep": "Sleep",
      "pain": "Pain",
      "nutrition": "Nutrition",
      "suggestedMessage": "Suggested message",
      "useInChat": "Use in chat",
      "suggestedTweaks": "Suggested tweaks for next week",
      "kind_sets": "sets",
      "kind_reps": "reps",
      "kind_percentage": "% of 1RM",
      "kind_weight": "weight",
      "kind_swap": "swap",
      "accept": "Accept",
      "reject": "Reject",
      "manualOnly": "manual",
      "manualOnlyTooltip": "This athlete is enrolled in a shared template \u2014 apply this change by hand in the week builder so other enrollees aren't affected.",
      "applyToNextWeek": "Apply {{count}} to next week",
      "applyResult": "{{applied}} applied, {{failed}} failed",
      "rosterBadgeTooltip": "Weekly health score (week of {{week}})",
      "coachReport": "AI weekly report",
      "possiblyUnlogged": "Possibly unlogged",
      "possiblyUnloggedTooltip": "Fewer logged days than planned \u2014 the athlete may have trained without validating sets. The suggested message asks before judging.",
      "athleteNotes": "Athlete notes this week",
      "generalNote": "General",
      "daysTrained": "{{trained}}/{{planned}} days",
      "distance": "Distance"
    },
    "common": {
      "client": "Client",
      "clients": "Clients",
      "athlete": "Athlete",
      "athletes": "Athletes",
      "program": "Program",
      "programs": "Programs",
      "invited": "Invited"
    },
    "clients": {
      "title": "My Clients",
      "addClient": "Add Client",
      "addNewClient": "Add New Client",
      "clientEmail": "Client Email",
      "searchPlaceholder": "Start typing to search users...",
      "searchHint": "Start typing to see available users or enter the exact email",
      "noUsersFound": "No users found matching \"{{query}}\"",
      "notesLabel": "Notes (Optional)",
      "notesPlaceholder": "Any notes about this client...",
      "adding": "Adding...",
      "noClientsYet": "No clients yet",
      "addFirstClient": "Add Your First Client",
      "noNameProvided": "No name provided",
      "invitedTooltip": "You've invited this person by email. They'll appear as a full client once they create an account and accept your invite.",
      "pendingTooltip": "Waiting for athlete to accept the coaching relationship. You can still open their page and prepare a plan \u2014 it will only appear on their side once they accept.",
      "cancelInvite": "Cancel invite",
      "cancelPendingRequest": "Cancel pending request",
      "archiveClient": "Archive client",
      "archivedSuccess": "Client archived. They\u2019ll be recognised as a returning client if you add or invite them again.",
      "archiveFailed": "Failed to archive client",
      "userNotFound": "User not found. Make sure they have an account.",
      "alreadyActive": "{{email}} is already an active client.",
      "requestSent": "Request sent to {{email}}. They\u2019ll appear here once they accept.",
      "alreadyYourClient": "This user is already your client",
      "addFailed": "Failed to add client",
      "confirmCancelInvite": "Cancel the invite to {{email}}?",
      "cancelInviteFailed": "Failed to cancel invite",
      "inviteCancelled": "Invite cancelled.",
      "notesPrefix": "Notes:",
      "archiveConfirmTitle": "Archive this client?",
      "archiveConfirmSubtitle": "They\u2019ll move out of your active client list",
      "archiveConfirmBody": "Archive <b>{{email}}</b>? They\u2019ll disappear from your active client list, but all their history is kept.",
      "checkingSubscriptions": "Checking subscriptions\u2026",
      "personalizedSubWarning": "This will cancel their personalized coaching subscription at the end of the current billing period \u2014 they keep access until then, with no further charges.",
      "tierSubWarning": "They also have an active program subscription \u2014 archiving does <b>not</b> cancel it. Manage it from their Billing & Subscription tab if needed.",
      "archiveReversible": "Archiving is reversible \u2014 if you add or invite this athlete again, we\u2019ll recognise them as a returning client and restore the relationship.",
      "archiving": "Archiving\u2026"
    },
    "notificationCenter": {
      "title": "Notifications",
      "empty": "You're all caught up. New client messages, activity and leads show up here.",
      "close": "Close notifications",
      "newLead": "New lead inquiry"
    },
    "coachMainDashboard": {
      "welcomeBack": "Welcome back, {{name}}",
      "subtitleGettingStarted": "Let's get your coaching business set up",
      "subtitleEstablished": "Overview of your coaching activities",
      "openJarvis": "Open Jarvis",
      "jarvis": "Jarvis",
      "milestonesCompleted": "{{completed}} of {{total}} milestones completed",
      "milestoneGo": "Go \u2192",
      "milestoneHint": {
        "createProgramFirst": "Create a program first",
        "sendInviteFirst": "Send an invite first",
        "getFirstClientFirst": "Get your first client first",
        "getClientFirst": "Get a client first",
        "completeProfileFirst": "Complete your profile first"
      },
      "ideas": "Ideas",
      "techSupport": "Tech Support",
      "setUpWebPageTitle": "Set Up Your Web Page",
      "setUpWebPageDesc": "Build your public coaching page \u2014 services, pricing & specializations",
      "getStarted": "Get started \u2192",
      "addClientsTitle": "Add Clients",
      "addClientsDesc": "Send an invite to your first client via email",
      "sendInvite": "Send invite \u2192",
      "importProgramTitle": "Import a Program",
      "importProgramDesc": "Upload an existing program from a spreadsheet",
      "import": "Import \u2192",
      "clientActivity": "Client Activity",
      "newCount": "{{count}} new",
      "noRecentActivity": "No recent activity",
      "dismissAll": "Dismiss all",
      "chat": "Chat",
      "unreadCount": "{{count}} unread",
      "showLess": "Show less",
      "showAll": "Show all",
      "newLead": "New lead",
      "dismiss": "Dismiss",
      "wantsToCall": "Wants to call: {{date}} at {{time}}",
      "viewDetails": "View details \u2192",
      "community": "Community",
      "noUnreadMessages": "No unread messages",
      "viewAllChats": "View all chats \u2192",
      "videoFeedback": "Video Feedback",
      "toReview": "{{count}} to review",
      "videoCount_one": "{{count}} video",
      "videoCount_other": "{{count}} videos",
      "paidCount": "{{count}} paid",
      "paidVideoTooltip": "Paid Video Feedback Service submission",
      "noPendingVideoReviews": "No pending video reviews",
      "viewAllVideos": "View all videos \u2192",
      "anAthlete": "An athlete",
      "unknownClient": "Unknown",
      "thisWeeksAgenda": "This Week's Agenda",
      "hideGoogleCalEvents": "Hide Google Calendar events",
      "showGoogleCalEvents": "Show Google Calendar events",
      "googleCalOn": "Google Cal On",
      "googleCalOff": "Google Cal Off",
      "connectGoogleCalTooltip": "Connect Google Calendar to see your events here",
      "connecting": "Connecting...",
      "syncGoogleCalendar": "Sync Google Calendar",
      "addTask": "Add Task",
      "taskCount_one": "{{count}} task",
      "taskCount_other": "{{count}} tasks",
      "joinNotes": "Join + Notes",
      "moreTasks": "+{{count}} more",
      "noTasks": "No tasks",
      "addTaskFor": "Add Task for {{date}}",
      "taskName": "Task Name",
      "enterTaskName": "Enter task name...",
      "startTimeOptional": "Start Time (optional)",
      "endTimeOptional": "End Time (optional)",
      "editTask": "Edit Task",
      "workoutBuilder": "Workout Builder",
      "workoutBuilderDesc": "Create and manage workout programs",
      "editWebPage": "Edit Web Page",
      "editWebPageDesc": "Build your coaching promo page",
      "clientDashboard": "Client Dashboard",
      "clientDashboardDesc": "View and manage all clients",
      "timeAgo": {
        "justNow": "just now",
        "minutes_one": "{{count}}m ago",
        "minutes_other": "{{count}}m ago",
        "hours_one": "{{count}}h ago",
        "hours_other": "{{count}}h ago",
        "days_one": "{{count}}d ago",
        "days_other": "{{count}}d ago"
      },
      "activityType": {
        "notes": "Notes",
        "missedLifts": "Missed Lifts",
        "incompleteDays": "Incomplete Days",
        "exerciseSwaps": "Exercise Swaps",
        "routinesCompleted": "Routines Completed",
        "foodLogs": "Food Logs",
        "prsHit": "PRs Hit",
        "painReports": "Pain Reports",
        "programsExpiring": "Programs Expiring",
        "videoFeedback": "Video Feedback",
        "paymentFailed": "Payment failed"
      }
    },
    "coachHomeDashboard": {
      "nextTasks": "Next tasks",
      "allTasks": "All",
      "noUpcomingCalls": "No upcoming calls.",
      "myAvatar": "My Avatar",
      "communication": "Communication",
      "loadingDashboard": "Loading dashboard...",
      "loadPlanFailed": "Failed to load plan details",
      "duplicatePrompt": "Name for the duplicated template:",
      "duplicateFailed": "Could not duplicate the template. Please try again.",
      "assignDraftTitle": "Assign draft to a client",
      "assignDraftBody": "Pick who \"{{plan}}\" is for. The plan moves onto their card and becomes their active program.",
      "assignDraftNoClients": "No active clients yet. Invite the athlete first \u2014 the draft stays here until they accept.",
      "assignDraftPick": "Choose a client\u2026",
      "assignDraftBusy": "Assigning\u2026",
      "assignDraftConfirm": "Assign",
      "assignDraftFailed": "Failed to assign the draft. Please try again.",
      "archiveDraftConfirm": "Archive \"{{plan}}\"? It will be hidden from your dashboard.",
      "createWeekFailed": "Failed to create first week",
      "loadWeekFailed": "Failed to load week details",
      "openPlanFailed": "Failed to open plan",
      "thisClient": "this client",
      "noAccount": "Client doesn't have an account",
      "coachProfileNotFound": "Coach profile not found. Please try again.",
      "addClientSuccess": "Successfully added {{email}} as a client!",
      "alreadyClient": "This user is already your client",
      "addClientFailed": "Failed to add client",
      "archiveSuccess": "{{name}} archived. They'll be recognised as a returning client if you add or invite them again.",
      "archiveFailed": "Failed to archive client",
      "deleteSuccess": "Successfully deleted \"{{name}}\"",
      "deleteFailed": "Failed to delete plan",
      "backToMain": "Back to Main Dashboard",
      "title": "Coach Dashboard",
      "subtitle": "Manage your programs and clients",
      "openJarvis": "Open Jarvis",
      "jarvis": "Jarvis",
      "automations": "Automations",
      "manageTeam": "Manage My Team",
      "team": "Team",
      "clubs": "Clubs",
      "import": "Import",
      "jarvisConnected": "Jarvis companion connected",
      "jarvisApprovalHint": "Navigation suggestions require your approval",
      "disconnect": "Disconnect",
      "publicPageLabel": "Your public page:",
      "copied": "Copied!",
      "copyLink": "Copy link",
      "noSlugHint": "Save your profile to generate your public page URL.",
      "goToProfile": "Go to profile \u2192",
      "upcomingCalls": "Upcoming Calls",
      "bookingCount_one": "{{count}} booking",
      "bookingCount_other": "{{count}} bookings",
      "pastSuffix": "(past)",
      "athleteFallback": "Athlete",
      "confirmed": "Confirmed",
      "join": "Join",
      "showLess": "Show less",
      "moreBookings_one": "+{{count}} more booking",
      "moreBookings_other": "+{{count}} more bookings",
      "addNewClient": "Add New Client",
      "clientEmail": "Client Email",
      "clientEmailPlaceholder": "Enter client's full email address",
      "clientEmailHint": "Enter the complete email address of your client",
      "notesLabel": "Notes (Optional)",
      "notesPlaceholder": "Any notes about this client...",
      "adding": "Adding...",
      "addClient": "Add Client",
      "provisionTitle": "Start programming",
      "provisionBody": "We'll set them up as your client so you can build their program now. It goes live in their app \u2014 and any messages reach them \u2014 the moment they accept your invite. Everything you build will be waiting for them.",
      "provisionConfirm": "Set up & open",
      "provisionBusy": "Setting up...",
      "provisionFailed": "Couldn't set up this athlete. Please try again.",
      "provisionAlreadyHasAccount": "This person already has an account \u2014 they'll show up as your client once they accept your invite (they're prompted next time they log in).",
      "newReviews_one": "{{count}} new review",
      "newReviews_other": "{{count}} new reviews",
      "tapToViewReply": "Tap to view and reply",
      "dismiss": "Dismiss",
      "consultationRequests": "Consultation Requests",
      "pendingCount_one": "{{count}} pending",
      "pendingCount_other": "{{count}} pending",
      "videoReview": "Video Review",
      "programReview": "Program Review",
      "fromAthlete": "from {{name}}",
      "statusAccepted": "Accepted",
      "athleteMessageLabel": "Athlete's message:",
      "diagnosticLabel": "Diagnostic: {{type}} \u2014 {{status}}",
      "balanceScore": "Balance score: {{score}}/100",
      "accepting": "Accepting...",
      "acceptConsultation": "Accept Consultation",
      "consultationNotesPlaceholder": "Add your consultation notes...",
      "completing": "Completing...",
      "completeAndSend": "Complete & Send Notes",
      "yourNotesLabel": "Your notes:",
      "createWorkout": "Create Workout",
      "createWorkoutDesc": "Build a new training program",
      "exerciseLibrary": "My Exercise Library",
      "exerciseLibraryDesc": "Manage your custom exercises",
      "customLibrary": "Custom Library",
      "customLibraryDesc": "Manage your custom blocks, days & week templates",
      "deletePlanTitle": "Delete Plan",
      "deletePlanConfirm": "Are you sure you want to delete <b>\"{{name}}\"</b>?",
      "deletePlanEnrollmentWarning_one": "<b>Warning:</b> This template has {{count}} active enrollment. Deleting it will affect all users enrolled in this program.",
      "deletePlanEnrollmentWarning_other": "<b>Warning:</b> This template has {{count}} active enrollments. Deleting it will affect all users enrolled in this program.",
      "planAssignedTo": "This plan is assigned to <b>{{name}}</b>",
      "deletePlanIrreversible": "This action cannot be undone. All workout data, sessions, and progress will be permanently deleted.",
      "deleting": "Deleting...",
      "archiveClientTitle": "Archive Client",
      "archiveClientConfirm": "Archive <b>{{name}}</b>? They'll move out of your active client list, but all their history is kept.",
      "checkingSubscriptions": "Checking subscriptions\u2026",
      "archivePersonalizedWarning": "This will cancel their personalized coaching subscription at the end of the current billing period \u2014 they keep access until then, with no further charges.",
      "archiveTierWarning": "They also have an active program subscription \u2014 archiving does <b>not</b> cancel it. Manage it from their Billing & Subscription tab if needed.",
      "archiveReversibleNote": "Archiving is reversible \u2014 if you add or invite this athlete again, we'll recognise them as a returning client and restore the relationship.",
      "archiving": "Archiving...",
      "archive": "Archive"
    },
    "manageTeamPage": {
      "loadingWorkspace": "Loading workspace...",
      "runBy": "Run by {{name}}",
      "memberOfWorkspace": "You are a member of this workspace.",
      "joinedOn": "Joined {{date}}.",
      "yourAssignedClients": "Your Assigned Clients",
      "noClientsAssignedYet": "No clients assigned to you yet. The workspace owner will assign clients from the Client Assignments tab.",
      "sharedTemplateAssignments": "Shared Template Assignments",
      "serviceChat": "Chat",
      "serviceVideoReview": "Video Review",
      "serviceProgram": "Program",
      "assignedClientsHint": "Assigned clients appear in your Active Clients list so you can use the week builder, messaging, and video feedback for them.",
      "createWorkspaceTitle": "Create Your Workspace",
      "createWorkspaceSubtitle": "Build your coaching team. Invite coaches, physios, and specialists \u2014 then assign them to clients with a revenue split.",
      "createWorkspaceFailed": "Failed to create workspace",
      "workspaceNameLabel": "Workspace Name",
      "workspaceNamePlaceholder": "e.g. Elite Strength Academy",
      "descriptionLabel": "Description (optional)",
      "descriptionPlaceholder": "Describe your team or coaching philosophy...",
      "creating": "Creating...",
      "createWorkspaceButton": "Create Workspace",
      "renameWorkspace": "Rename workspace",
      "memberCount": "{{count}} member",
      "memberCount_other": "{{count}} members",
      "clientCount": "{{count}} client",
      "clientCount_other": "{{count}} clients",
      "tabTeam": "Team",
      "tabClients": "Clients",
      "tabTemplates": "Templates",
      "tabPayouts": "Payouts",
      "inviteHeading": "Invite a Coach or Specialist",
      "emailLabel": "Email address",
      "emailPlaceholder": "coach@example.com",
      "roleLabel": "Role",
      "roleCustomOption": "Custom...",
      "customRolePlaceholder": "Enter custom role (e.g. Biomechanics Coach)",
      "sendInviteFailed": "Failed to send invite",
      "inviteSentTo": "Invite sent to {{email}}",
      "sending": "Sending...",
      "sendInviteButton": "Send Invite",
      "pendingInvites": "Pending Invites",
      "awaitingCount": "{{count}} awaiting",
      "inviteSentExpires": "Invite sent \u00b7 expires {{date}}",
      "revokeInvite": "Revoke invite",
      "inviteesHint": "Invitees can create a Strength Academy account and their membership will link automatically. You can also pre-assign them to clients now from the Clients tab \u2014 staged assignments activate the moment they accept.",
      "teamMembers": "Team Members",
      "noTeamMembers": "No team members yet. Send an invite above.",
      "stripeReady": "Ready",
      "stripeNotConfigured": "Stripe not configured \u2014 cannot receive payouts",
      "setupNeeded": "Setup needed",
      "removeConfirm": "Remove?",
      "confirmYes": "Yes",
      "confirmNo": "No",
      "removeMember": "Remove member",
      "clientsTabIntro": "Assign workspace members \u2014 or pre-assign pending invitees \u2014 to each client. Per-assignment toggles control what they can do (program, chat, video review). Staged assignments on pending invites activate automatically the moment the invitee accepts. The payout split is optional \u2014 set it to 0% to assign a coach without routing any revenue. Stripe is only required when you actually want to transfer money.",
      "noActiveClients": "No active clients yet.",
      "capProgram": "Program",
      "capChat": "Chat",
      "capVideoReview": "Video review",
      "noCapabilities": "No capabilities",
      "pendingChipTooltip": "Pending: {{email}} (accepts \u2192 auto-assigns)",
      "inviteFirstHint": "Invite team members first before assigning them to clients.",
      "pendingBadge": "Pending",
      "rolePlaceholder": "Role",
      "payoutLabel": "Payout",
      "canLabel": "Can:",
      "stagedAssignmentHint": "This assignment is staged \u2014 it activates automatically the moment the invitee accepts.",
      "stripeWarning": "{{name}} hasn't connected Stripe yet \u2014 the {{pct}}% split is saved but payouts won't transfer until they finish Stripe setup. The assignment itself works regardless.",
      "thisCoach": "This coach",
      "totalPayoutSplit": "Total payout split to team:",
      "payoutExceedsHundred": "Total payout split exceeds 100%. The sum of all team member payout percentages cannot exceed 100%.",
      "saveAssignmentsFailed": "Failed to save assignments",
      "saving": "Saving...",
      "templatesTabIntro": "Share your templates with workspace members and assign subscribers to specific coaches for chat, video review, or workout editing.",
      "noActiveTemplates": "No active templates. Create a template first to share with your team.",
      "shareTemplateFailed": "Failed to share template",
      "published": "Published",
      "unpublished": "Unpublished",
      "subscriberCount": "{{count}} subscriber",
      "subscriberCount_other": "{{count}} subscribers",
      "enrolledCount": "{{count}} enrolled",
      "membersSharedCount": "{{count}} member shared",
      "membersSharedCount_other": "{{count}} members shared",
      "sharedWith": "Shared With",
      "notSharedYet": "Not shared with any team members yet.",
      "videoShort": "Video",
      "programEditing": "Program Editing",
      "removeShare": "Remove share",
      "selectMember": "Select member...",
      "addTeamMember": "Add Team Member",
      "subscriberAssignments": "Subscriber Assignments",
      "noActiveSubscribers": "No active subscribers with chat or video services on this template.",
      "chatCoach": "Chat Coach",
      "videoCoach": "Video Coach",
      "programCoach": "Program Coach",
      "unassignedOwner": "Unassigned (Owner)",
      "noClientAssignments": "No client assignments yet. Assign workspace members to clients first.",
      "monthlyManaged": "Monthly Managed",
      "distributedToTeam": "Distributed to Team",
      "perMonthSuffix": "/mo",
      "youLeadCoach": "You (Lead Coach)",
      "remainder": "Remainder"
    },
    "clientDetailPage": {
      "loading": "Loading client program...",
      "backToClients": "Back to Clients",
      "dashboardSubtitle": "Client Program Dashboard",
      "placeholderBannerTitle": "This athlete hasn't accepted yet",
      "placeholderBannerBody": "Build their program now \u2014 it goes live in their app, and any messages reach them, only once they accept your invite.",
      "copyClaimLink": "Copy claim link",
      "claimLinkCopied": "Copied!",
      "badgePersonalized": "Personalized",
      "badgeOngoing": "Ongoing",
      "tierCoachingAdaptation": "Coaching + Adaptation",
      "tierCoachingPackage": "Coaching Package",
      "startedAgo": "Started {{date}} ({{days}}d ago)",
      "videoLabel": "Video {{state}}",
      "notesLabel": "Notes {{state}}",
      "on": "On",
      "off": "Off",
      "daysLeft": "days left",
      "programSettingsTitle": "Program Settings",
      "archiveProgramTitle": "Archive program (end this season)",
      "noActiveProgram": "No Active Program",
      "noActiveProgramDesc": "{{name}} doesn't have an active personalized program yet.",
      "createNewProgram": "Create New Program",
      "pastPrograms": "Past Programs",
      "archivedBadge": "Archived",
      "tabActivity": "Activity",
      "tabActivityShort": "Activity",
      "tabNutrition": "Nutrition",
      "tabNutritionShort": "Nutrition",
      "tabOverview": "Overview",
      "tabOverviewShort": "Overview",
      "tabPlanSpecific": "Plan Specific",
      "tabPlanShort": "Plan",
      "tabAnalytics": "Analytics",
      "tabStatsShort": "Stats",
      "tabGeneral": "General",
      "tabGeneralShort": "General",
      "tabVideoReview": "Video Review",
      "tabVideoFeedback": "Video Feedback",
      "tabVideosShort": "Videos",
      "tabPlanDetail": "Plan Detail",
      "videoReviewsFor": "Video reviews for {{name}}",
      "videoReviewsComingSoon": "Single-athlete video-feedback surface coming next \u2014 same shape as the community video review tab, scoped to this athlete only.",
      "archiveConfirmTitle": "Archive program?",
      "archiveConfirmBody": "Archive <b>{{plan}}</b> for <b>{{name}}</b>?",
      "archiveConfirmDetail": "This ends the current season \u2014 the plan disappears from {{firstName}}'s app and your dashboard, but all training history is kept. Their other plans are unaffected. You can start a fresh plan for them anytime.",
      "theirFallback": "their",
      "archiveFailed": "Failed to archive program",
      "archiving": "Archiving\u2026",
      "archiveProgram": "Archive program",
      "noWeeksFound": "No weeks found for this plan",
      "weekLoadFailed": "Error loading week details",
      "planLoadFailed": "Error loading plan",
      "deleteProgram": "Delete program",
      "openProgram": "Open",
      "deleteProgramTitle": "Delete this program?",
      "deleteProgramBody": "This permanently deletes \"{{name}}\" and all of its weeks and sessions. This can't be undone.",
      "deletingProgram": "Deleting..."
    },
    "coachCalendarPage": {
      "title": "Coach Calendar",
      "googleCal": "Google Cal",
      "appleCal": "Apple Cal",
      "on": "On",
      "off": "Off",
      "connecting": "Connecting...",
      "syncGoogle": "Sync Google",
      "emptyWeekHint": "Nothing scheduled this week yet - click a day or drag a time slot to add a task. Sessions and bookings appear here automatically; Google sync is optional.",
      "syncApple": "Sync Apple",
      "enableInSettings": "Enable in Settings",
      "appleAccessDenied": "Calendar access was denied \u2014 enable it in iOS Settings \u2192 Strength Academy \u2192 Calendars",
      "addTask": "Add Task",
      "today": "Today",
      "meet": "Meet",
      "addTaskFor": "Add Task for {{date}}",
      "taskName": "Task Name",
      "taskNamePlaceholder": "Enter task name...",
      "description": "Description",
      "descriptionPlaceholder": "Add notes or details (optional)",
      "startTime": "Start Time",
      "endTime": "End Time",
      "saveTo": "Save to",
      "localTask": "Local Task",
      "googleCalendar": "Google Calendar",
      "repeat": "Repeat",
      "doesNotRepeat": "Does not repeat",
      "everyDay": "Every day",
      "everyWeek": "Every week",
      "every2Weeks": "Every 2 weeks",
      "everyMonth": "Every month",
      "weeklyFor4Weeks": "Weekly for 4 weeks",
      "weeklyFor8Weeks": "Weekly for 8 weeks",
      "weeklyFor12Weeks": "Weekly for 12 weeks",
      "recurrenceCreatesCount": "Creates {{count}} tasks",
      "addGoogleMeet": "Add Google Meet",
      "inviteAttendee": "Invite Attendee (email)",
      "inviteHelp": "They'll receive a calendar invite",
      "inviteHelpWithMeet": "They'll receive a calendar invite with the Meet link",
      "saving": "Saving...",
      "addToGoogleCalendar": "Add to Google Calendar",
      "editGoogleEvent": "Edit Google Event",
      "editTask": "Edit Task",
      "joinMeet": "Join Meet",
      "calendarSettings": "Calendar Settings",
      "programEndingReminders": "Program Ending Reminders",
      "programEndingRemindersDesc": "Auto-add tasks when client programs are ending",
      "remind": "Remind",
      "daysBefore": "days before",
      "before": "before",
      "sessionReminders": "Session Reminders",
      "sessionRemindersDesc": "Add reminder tasks before coaching sessions",
      "min15": "15 min",
      "min30": "30 min",
      "hour1": "1 hour",
      "day1": "1 day",
      "defaultTaskTime": "Default Task Time",
      "defaultTaskTimeDesc": "Pre-fill time when creating new tasks",
      "start": "Start",
      "end": "End",
      "eventColors": "Event Colors",
      "legendSessions": "Sessions",
      "legendTasks": "Tasks",
      "legendReminders": "Reminders",
      "legendPrograms": "Programs",
      "meetLinkCreated": "Meet Link Created",
      "meetLinkCreatedDesc": "Your Google Meet has been created and the invite has been sent.",
      "copy": "Copy"
    },
    "coachAutomationsPage": {
      "title": "Automations",
      "activeRuleCount": "{{count}} active rule",
      "activeRuleCount_other": "{{count}} active rules",
      "loadFailed": "Failed to load data",
      "createPresetFailed": "Failed to create rule from preset",
      "deleteRuleConfirm": "Delete this automation rule and its history? This cannot be undone.",
      "scopeTabTemplate": "Templates",
      "scopeTabPersonalized": "Personalized",
      "whatAreAutomations": "What are automations?",
      "scopeInfoTemplateTitle": "Template Automations",
      "scopeInfoTemplateDescription": "These automations apply to your public or shared workout templates. Athletes enroll themselves into these programs, so automations here help you engage with many athletes at scale without manual effort.",
      "scopeInfoTemplateTip1": "Welcome Messages greet new athletes when they join your template",
      "scopeInfoTemplateTip2": "Group Posts keep your template community engaged with recurring content",
      "scopeInfoTemplateTip3": "Review Requests encourage athletes to leave ratings that boost your template visibility",
      "scopeInfoPersonalizedTitle": "Personalized Automations",
      "scopeInfoPersonalizedDescription": "These automations apply to your 1-on-1 coaching clients. Since you already have a personal relationship with these athletes, the focus here is on operational alerts and proactive follow-ups.",
      "scopeInfoPersonalizedTip1": "Weekly Plan Ready lets clients know their new week is ready with one click",
      "scopeInfoPersonalizedTip2": "Videos Reviewed notifies clients that you've left feedback on their form checks",
      "scopeInfoPersonalizedTip3": "Missed Workout Follow-Ups show clients you're paying attention to their progress",
      "subTabRules": "Available Rules",
      "subTabLogs": "Execution Log",
      "emptyStateHint": "No automations set up yet. Pick a category above and tap \"Browse presets\" to get started.",
      "activeBadge": "{{count}} active",
      "pausedBadge": "{{count}} paused",
      "browsePresets": "Browse {{count}} preset",
      "browsePresets_other": "Browse {{count}} presets",
      "addAnother": "Add another",
      "fixedOnly": "Fixed only",
      "lastFired": "Last fired {{time}}",
      "lastFiredTo": "\u00b7 to {{name}}",
      "neverFired": "Never fired yet \u2014 waiting for trigger",
      "howDoesThisWork": "How does this work?",
      "editTooltip": "Edit message & settings",
      "deleteTooltip": "Delete rule",
      "disableTooltip": "Disable",
      "enableTooltip": "Enable",
      "whyUseThis": "Why use this",
      "exampleMessage": "Example message",
      "howToSetUp": "How to set up",
      "presetsHeading": "{{category}} presets",
      "alreadyAdded": "Already added",
      "sampleMessage": "Sample message",
      "startFromBlank": "Start from blank instead",
      "timeJustNow": "just now",
      "timeMinutesAgo": "{{count}}m ago",
      "timeHoursAgo": "{{count}}h ago",
      "timeDaysAgo": "{{count}}d ago",
      "timeMonthsAgo": "{{count}}mo ago",
      "triggerScheduled": "Every {{day}} at {{time}} UTC",
      "triggerInactivity": "After {{days}} days inactive ({{cooldown}}d cooldown)",
      "triggerWeekSpecific": "At week {{week}}",
      "triggerReviewRequest": "After {{days}} days \u2014 {{target}} review",
      "triggerMissedWorkout": "{{hours}}h after missed session ({{cooldown}}d cooldown)",
      "triggerPainReported": "Pain severity \u2265 {{severity}} ({{cooldown}}d cooldown)",
      "triggerSessionCompleted": "{{minutes}} min after session completed",
      "triggerOnEvent": "On event",
      "reviewTargetCoach": "Coach",
      "reviewTargetPlan": "Plan",
      "ruleWelcomeMessageBenefit": "Reduces early drop-off by making new athletes feel welcomed and supported from day one.",
      "ruleWelcomeMessageExample": "Welcome Alex! Excited to have you on Strength Fundamentals. Feel free to reach out if you have any questions!",
      "ruleWelcomeMessageSetup": "Write your welcome message and toggle it on. It fires automatically when anyone enrolls in your template.",
      "ruleScheduledGroupPostBenefit": "Keeps your template community active and engaged with consistent coach presence, even when you're busy.",
      "ruleScheduledGroupPostExample": "Every Monday at 8am: \"New week, new opportunities! Drop your goals for this week below.\"",
      "ruleScheduledGroupPostSetup": "Pick a day and time, select which template's group chat to post in, and write your recurring message.",
      "ruleReviewRequestBenefit": "More reviews = more social proof = more enrollments. Athletes who leave reviews are also more likely to stay.",
      "ruleReviewRequestExample": "After 14 days: \"Hey Alex, you've been training for a while now! We'd love to hear your thoughts.\"",
      "ruleReviewRequestSetup": "Set how many days after plan start to send the request, and choose whether to prompt for a plan or coach review.",
      "ruleInactivityNudgeBenefit": "Catches disengaged athletes before they churn. A simple check-in can bring back 20-30% of inactive users.",
      "ruleInactivityNudgeExample": "After 7 days inactive: \"Hey Alex, haven't seen you in 7 days. Everything ok?\"",
      "ruleInactivityNudgeSetup": "Set how many days of inactivity trigger the nudge, and a cooldown period so athletes aren't spammed.",
      "rulePrCelebrationBenefit": "Athletes who feel celebrated are more motivated and loyal. Automated celebrations ensure no PR goes unnoticed.",
      "rulePrCelebrationExample": "\"Incredible work Alex! New PR on Back Squat \u2014 120kg for 3 reps. Keep crushing it!\"",
      "rulePrCelebrationSetup": "Toggle on and optionally filter to specific exercises. Fires automatically when a PR is logged.",
      "ruleCheckInPromptBenefit": "Builds a habit of coach-athlete communication. Athletes who report regularly have better adherence and outcomes.",
      "ruleCheckInPromptExample": "Every Friday at 5pm: \"Hey Alex, how did training go this week? Let me know if anything needs adjusting.\"",
      "ruleCheckInPromptSetup": "Pick a day and time for your weekly check-in. The message is sent as a DM from you to each athlete.",
      "rulePlanAssignmentNotifyBenefit": "Ensures athletes know their plan is ready, even if they're not actively checking the app.",
      "rulePlanAssignmentNotifyExample": "\"Hey Alex, your new plan 'Off-Season Strength' is ready! Open it up and let me know if you have questions.\"",
      "rulePlanAssignmentNotifySetup": "Toggle on \u2014 it fires automatically whenever you assign or update a client's plan.",
      "ruleMissedWorkoutFollowupBenefit": "Shows clients you're paying attention. Athletes who feel accountable are 40% more likely to stay consistent.",
      "ruleMissedWorkoutFollowupExample": "\"Hey Alex, looks like you missed your session yesterday. Everything ok?\"",
      "ruleMissedWorkoutFollowupSetup": "Set a grace period (hours after the scheduled session) and cooldown (days between follow-ups).",
      "ruleVideoFeedbackNotifyBenefit": "Keeps athletes in the loop when you review their form videos, encouraging more submissions.",
      "ruleVideoFeedbackNotifyExample": "\"Hey Alex, I just reviewed your latest video. Check out my feedback when you get a chance!\"",
      "ruleVideoFeedbackNotifySetup": "Toggle on \u2014 fires automatically when you review any video submission.",
      "ruleCompletionCelebrationBenefit": "Ends the program on a high note. Celebrated athletes are more likely to re-enroll or upgrade.",
      "ruleCompletionCelebrationExample": "\"Congratulations Alex! You've completed '12-Week Strength'. Great work staying consistent!\"",
      "ruleCompletionCelebrationSetup": "Toggle on \u2014 fires automatically when an athlete reaches the end date of a fixed-duration plan.",
      "ruleWeekSpecificMessageBenefit": "Delivers timely coaching cues at the right moment in the program, improving adherence at key milestones.",
      "ruleWeekSpecificMessageExample": "At week 4: \"Week 4 \u2014 this is where the real gains happen. Keep pushing!\"",
      "ruleWeekSpecificMessageSetup": "Choose which week number triggers the message. Great for deload weeks, testing weeks, or mid-program check-ins.",
      "ruleScheduledMessageBenefit": "Send any recurring message on a schedule. Flexible catch-all for anything not covered by other rule types.",
      "ruleScheduledMessageExample": "Every Monday at 8am: \"Have a great week! Stay consistent and keep pushing towards your goals.\"",
      "ruleScheduledMessageSetup": "Pick a day and time, write your message, and choose whether to send via DM or group chat.",
      "ruleWeeklyPlanReadyBenefit": "Lets your client know their training plan for the week is ready, so they can start right away.",
      "ruleWeeklyPlanReadyExample": "\"Hey Alex, your training plan for this week is ready! Open the app and check it out.\"",
      "ruleWeeklyPlanReadySetup": "Configure the message, toggle on, then click Send whenever you've finished building the week's plan.",
      "ruleVideosReviewedBenefit": "Notifies your client that you've reviewed their video submissions, prompting them to check your feedback.",
      "ruleVideosReviewedExample": "\"Hey Alex, I've reviewed your latest videos and left feedback on each one. Check them out!\"",
      "ruleVideosReviewedSetup": "Configure the message, toggle on, then click Send whenever you've finished reviewing a batch of videos.",
      "ruleWeeklyAvailabilityRequestBenefit": "Collects next week's availability in one tap. The athlete gets a Mon\u2013Sun picker pre-filled with their mandatory & optional days, so you plan against real availability instead of guessing.",
      "ruleWeeklyAvailabilityRequestExample": "\"Which days will you train the week of Jun 23, Alex? Tap your training days below.\" \u2014 with tappable Mon\u2013Sun buttons.",
      "ruleWeeklyAvailabilityRequestSetup": "Configure the prompt, toggle on, then click Send. The athlete taps their days right in the chat and you see the answer live."
    },
    "coachDashboard": {
      "pleaseSignIn": "Please sign in",
      "coachSubscriptionRequired": "You need a Coach subscription to access this feature. Please upgrade your account.",
      "coachProfileNotFound": "Coach profile not found. Please contact support.",
      "loadFailed": "Failed to load coach data",
      "loading": "Loading coach dashboard...",
      "backToMainDashboard": "Back to Main Dashboard",
      "backToDashboard": "Back to Dashboard",
      "unknownClient": "Unknown Client",
      "title": "Coach Dashboard",
      "subtitle": "Manage your clients and workout programs",
      "tabClients": "My Clients ({{count}})",
      "tabPrograms": "My Programs ({{count}})",
      "tabProfile": "Coach Profile",
      "tabExerciseLibrary": "Exercise Library",
      "yourClients": "Your Clients",
      "totalClients_one": "{{count}} total client",
      "totalClients_other": "{{count}} total clients",
      "noClientsYet": "No Clients Yet",
      "noClientsHint": "Clients will appear here once you create programs for them or they accept your invitations.",
      "unknown": "Unknown",
      "clickToViewDetails": "Click to view details",
      "workoutPrograms": "Workout Programs",
      "filterAll": "All",
      "filterTemplates": "Templates",
      "filterPersonal": "Personal",
      "filterUnassigned": "Unassigned",
      "createMobilityRoutine": "Create Mobility Routine",
      "buildWorkout": "Build Workout",
      "importProgram": "Import Program",
      "noTemplatesYet": "No Templates Yet",
      "noPersonalPlansYet": "No Personal Plans Yet",
      "noUnassignedPlans": "No Unassigned Plans",
      "noProgramsYet": "No Programs Yet",
      "createFirstProgram": "Create your first program to get started.",
      "badgeTemplate": "Template",
      "enrollmentTimes": "{{count}}x",
      "badgeUnassigned": "Unassigned",
      "badgeImported": "Imported",
      "reusableTemplate": "Reusable template",
      "notYetAssigned": "Not yet assigned to a client",
      "noClientAssigned": "No client assigned",
      "durationWeeks": "Duration: {{count}} weeks",
      "continuousProgram": "Continuous Program",
      "startedOn": "Started: {{date}}",
      "clientsEnrolled_one": "{{count}} client enrolled",
      "clientsEnrolled_other": "{{count}} clients enrolled",
      "assignClient": "Assign Client",
      "resumeDraftTitle": "Resume Draft?",
      "unfinishedDraftFrom": "You have an unfinished program draft from",
      "draftNameLabel": "Draft Name:",
      "draftTypeLabel": "Type:",
      "draftTypeTemplate": "Template",
      "draftTypePersonalized": "Personalized",
      "draftProgressLabel": "Progress:",
      "draftStep": "Step {{current}} of {{total}}",
      "resumeOrNew": "Would you like to continue where you left off, or start a new program?",
      "startNew": "Start New",
      "resumeDraftButton": "Resume Draft"
    },
    "coachDeskScreen": {
      "readinessReadyLabel": "Ready",
      "readinessReadyDesc": "Good to go",
      "readinessMonitorLabel": "Monitor",
      "readinessMonitorDesc": "Train with care",
      "readinessReduceLabel": "Reduce",
      "readinessReduceDesc": "Reduce load",
      "exit": "Exit",
      "deskTitle": "Strength Academy Desk",
      "refreshData": "Refresh data"
    },
    "meetingDetail": {
      "googleCalendar": "Google Calendar",
      "session": "Session",
      "attendees": "Attendees",
      "organizer": "(organizer)",
      "addNote": "Add a note",
      "notePlaceholder": "e.g. things to cover, questions for the call\u2026",
      "saving": "Saving\u2026",
      "saveToEvent": "Save to event",
      "noteSaved": "Note saved",
      "noteFailed": "Failed to save note",
      "joinMeeting": "Join meeting",
      "openNotes": "Open notes"
    },
    "coachMeetingNotesPage": {
      "prospectTitle": "Client Signup",
      "prospectHint": "Create a client card and a signup link for this prospect. Everything you save here is already on their account when they sign up.",
      "prospectCreate": "Create client card + signup link",
      "prospectCreating": "Setting up\u2026",
      "prospectLinkHint": "Send this link to your prospect \u2014 they set a password and everything you saved is waiting on their account.",
      "prospectCopy": "Copy",
      "prospectCopied": "Copied!",
      "prospectExistingAccount": "This athlete already has an account \u2014 they've been added to your roster as a pending client.",
      "prospectError": "Couldn't set up the prospect. Please try again.",
      "bookingNotFound": "Booking not found",
      "loadFailed": "Failed to load session data",
      "unknownQuestion": "Unknown question",
      "loadingSession": "Loading session...",
      "sessionNotFound": "Session not found",
      "backToDashboard": "Back to Dashboard",
      "introCall": "Intro Call",
      "groupSession": "Group Session",
      "privateSession": "Private Session",
      "introCallNotes": "Intro Call Notes",
      "meetingNotes": "Meeting Notes",
      "saving": "Saving...",
      "saved": "Saved",
      "saveFailed": "Save failed",
      "openMeet": "Open Meet",
      "sessionInfo": "Session Info",
      "dateLabel": "Date",
      "timeLabel": "Time",
      "typeLabel": "Type",
      "titleLabel": "Title",
      "statusLabel": "Status",
      "sessionTimer": "Session Timer",
      "pause": "Pause",
      "start": "Start",
      "reset": "Reset",
      "questionnaireAnswers": "Questionnaire Answers",
      "noQuestionnaire": "No intake questionnaire submitted",
      "intakeVideos": "Intake Videos",
      "noIntakeVideos": "No intake videos submitted",
      "repMaxesTitle": "Rep Maxes (1RM)",
      "setByAthlete": "Set by athlete",
      "generalNotes": "General Notes",
      "generalNotesPlaceholder": "Additional observations, training history discussed, goals, etc...",
      "autoSaveHint": "Notes auto-save after 3 seconds. Press Ctrl+S / Cmd+S to save immediately.",
      "saveRepMaxesAndNotes": "Save Rep Maxes & Notes",
      "saveAndEndSession": "Save & End Session",
      "repMaxesSavedSuccess": "Rep maxes and notes saved successfully",
      "saveTryAgain": "Failed to save. Please try again.",
      "sessionNotes": "Session Notes",
      "saveNow": "Save Now",
      "technicalFocusLabel": "Technical Focus",
      "technicalFocusPlaceholder": "What technical skills were worked on...",
      "cuesThatWorkedLabel": "Cues That Worked",
      "cuesThatWorkedPlaceholder": "Verbal/visual cues the athlete responded to...",
      "mobilityFocusLabel": "Mobility Focus",
      "mobilityFocusPlaceholder": "Mobility or flexibility work done...",
      "limitationsLabel": "Limitations Observed",
      "limitationsPlaceholder": "Pain, stiffness, ROM issues noticed...",
      "nextSessionLabel": "Next Session Plan",
      "nextSessionPlaceholder": "What to focus on next time..."
    },
    "clientDetailModal": {
      "loadFailed": "Failed to load progress details",
      "continuousEnabled": "Continuous planning enabled",
      "continuousDisabled": "Continuous planning disabled",
      "settingUpdateFailed": "Failed to update setting",
      "videoFeedbackEnabled": "Video feedback enabled",
      "videoFeedbackDisabled": "Video feedback disabled",
      "sessionWarmups": "Warm-ups",
      "sessionDrills": "Drills",
      "sessionWeightlifting": "Weightlifting",
      "sessionStrength": "Strength",
      "sessionAccessories": "Accessories",
      "sessionPainAches": "Pain & Aches",
      "sessionCooldown": "Cooldown",
      "loadingProgress": "Loading progress details...",
      "noProgressData": "No progress data available",
      "programSettings": "Program Settings",
      "continuousPlanning": "Continuous Planning",
      "continuousPlanningDesc": "Program runs continuously with no fixed end date",
      "videoFeedback": "Video Feedback",
      "videoFeedbackDesc": "Allow client to upload videos for coach review",
      "addWeekToProgram": "Add Week to Program",
      "addWeekHint": "Create the next week for this continuous training plan",
      "sessionTypeBreakdown": "Session Type Breakdown",
      "noSessionData": "No session data available yet",
      "completedCount": "{{count}} completed",
      "totalSetsCount": "{{count}} total sets",
      "keyMovementPerformance": "Key Movement Performance",
      "clickMissedHint": "Click missed count to see details",
      "missedCount": "{{count}} missed",
      "missRate": "{{pct}}% miss rate",
      "feelingScaleTitle": "Feeling Scale Reference:",
      "feelingScaleEasyLabel": "3: \ud83d\ude07 Easy",
      "feelingScaleEasyDesc": "- Could add weight",
      "feelingScaleMediumLabel": "2: \ud83d\ude24 Medium",
      "feelingScaleMediumDesc": "- Solid execution (default when not selected)",
      "feelingScaleHardLabel": "1: \ud83d\ude35\u200d\ud83d\udcab Hard",
      "feelingScaleHardDesc": "- Struggled",
      "feelingScaleMissedLabel": "0: \u274c Missed",
      "feelingScaleMissedDesc": "- Explicitly marked as failed",
      "feelingScaleNote": "Note: Missed sets only counted when user marks with \u274c emoji",
      "movementTrackingWeightliftingOnly": "Movement-specific performance tracking is only available for weightlifting programs",
      "weekAddedSuccess": "Week added successfully"
    },
    "coachQuestionnaireModal": {
      "contactCoach": "Contact {{name}}",
      "subtitleBoth": "Answer questions and book an intro call",
      "subtitleQuestions": "Please answer a few questions to get started",
      "subtitleBooking": "Book an intro call to get started",
      "answerPlaceholder": "Your answer...",
      "videoSubmissions": "Video Submissions",
      "optionalParen": "(Optional)",
      "videoUploadHint": "Upload videos to help the coach assess your form. Max 45 sec, Max 250 MB per clip.",
      "videoThumbnailAlt": "Video thumbnail",
      "videoUploaded": "Video uploaded",
      "duration": "Duration: {{seconds}}s",
      "removeVideo": "Remove video",
      "processingVideo": "Processing video...",
      "selectVideo": "Select Video",
      "sending": "Sending...",
      "sendRequest": "Send Request",
      "bookIntroCall": "Book an Intro Call",
      "introCallBooked": "Intro call booked!",
      "checkEmailConfirmation": "Check your email for confirmation details.",
      "joinMeeting": "Join Meeting",
      "durationMin": "{{minutes}} min",
      "free": "Free",
      "selectDate": "Select a date",
      "availableTimes": "Available times",
      "promoCodeOptional": "Promo code (optional)",
      "enterCode": "Enter code",
      "apply": "Apply",
      "promoApplied": "{{percent}}% off \u2014 new total {{total}}",
      "booking": "Booking...",
      "payAndBook": "Pay {{price}} & Book",
      "bookCall": "Book Call",
      "bookFailed": "Failed to book the intro call. Please try again.",
      "promoValidateFailed": "Failed to validate promo code",
      "questionRequired": "This question is required"
    },
    "coachInviteModal": {
      "title": "Invite Athlete",
      "sendInviteTab": "Send Invite",
      "sentInvitesTab": "Sent Invites",
      "athleteEmail": "Athlete Email",
      "emailPlaceholder": "athlete@email.com",
      "linkToTemplate": "Link to Template (Optional)",
      "noTemplate": "No template (coaching invite only)",
      "linkTemplateHint": "Optionally link a private template for the athlete to enroll in after accepting.",
      "coachingPackage": "Coaching Package (Optional)",
      "letAthleteChoose": "Let athlete choose at acceptance",
      "coachingPackageHint": "Pre-lock a coaching package for this athlete. Leave default to let them pick when they accept.",
      "attachQuestionnaire": "Attach Questionnaire (Optional)",
      "noQuestionnaire": "No questionnaire",
      "templateSuffix": " (template)",
      "editQuestionnaire": "Edit questionnaire",
      "createQuestionnaire": "Create new questionnaire",
      "questionnaireHint": "The athlete will fill this out when accepting the invite.",
      "personalMessage": "Personal Message (Optional)",
      "messagePlaceholder": "Write a message to your athlete...",
      "inviteSentSuccess": "Invitation sent successfully!",
      "inviteFailed": "Failed: {{error}}",
      "unknownError": "Unknown error",
      "sending": "Sending...",
      "sendInvite": "Send Invite",
      "loadingInvites": "Loading invites...",
      "noInvitesYet": "No invites sent yet",
      "sentOn": "Sent {{date}}",
      "withTemplate": " (with template)",
      "revoke": "Revoke",
      "statusAccepted": "Accepted",
      "statusExpired": "Expired",
      "statusDeclined": "Declined",
      "statusRevoked": "Revoked"
    },
    "resultsHub": {
      "before": "Before",
      "after": "After",
      "prShort": "PR",
      "kept": "Kept",
      "keepForever": "Keep this lift",
      "keptCount": "{{kept}}/{{quota}} kept",
      "beforeAfter": "Before / after",
      "beforeAfterHint": "Pick two videos \u2014 the first is the before, the second the after.",
      "createTransformation": "Create transformation",
      "showOlderVideos": "Show {{count}} older",
      "keepLimitReached": "Your plan keeps {{count}} lifts per athlete. Remove one first.",
      "keepFailed": "Couldn't keep this video.",
      "submittedVideos": "Submitted videos",
      "videosError": "Couldn't load videos.",
      "reviewRecorded": "Reviewed",
      "notesOnly": "Notes",
      "athleteVideo": "Athlete video",
      "yourReview": "Your review",
      "yourNotes": "Your written feedback",
      "withReview": "{{count}} with a recorded review",
      "headerTitle": "Your athletes' wins",
      "headerSubtitle": "Every PR, clip and video review from your clients \u2014 ready to feature or share.",
      "editSuccessStories": "Edit success stories",
      "recentPRs": "Recent PRs",
      "evolutionClips": "Evolution clips",
      "loading": "Loading\u2026",
      "prsError": "Couldn't load PRs.",
      "clipsError": "Couldn't load clips.",
      "noPRs": "No PRs yet",
      "noPRsHint": "When your athletes hit a personal record, it'll show up here.",
      "noClips": "No evolution clips yet",
      "noClipsHint": "Save lift videos to a client's evolution library and they'll appear here.",
      "featureOnPage": "Feature on my page",
      "feature": "Feature",
      "exportShare": "Export / Share",
      "shareTitle": "Athlete PR",
      "exportFailed": "Export failed. Please try again.",
      "featureModalTitle": "Feature on my page",
      "consentLabel": "I confirm this athlete is OK with being featured publicly",
      "addToMyPage": "Add to my page",
      "adding": "Adding\u2026",
      "copying": "Copying video\u2026",
      "featureFailed": "Couldn't add to your page. Please try again.",
      "addedTitle": "Added to your page",
      "addedBody": "This is saved to your page draft. Open the builder to arrange it and publish.",
      "viewOnMyPage": "View on my page",
      "prsWithoutVideo": "PRs without a video"
    },
    "coachMarketingPage": {
      "title": "Marketing",
      "tabStorefront": "Storefront",
      "tabResults": "Results",
      "tabEmailCrm": "Email & CRM",
      "tabConversions": "Conversions",
      "publicPageTitle": "Your Public Page",
      "publicPageFindYou": "athletes can find you at /{{slug}}",
      "publicPageSetup": "Set up your public page to attract new clients",
      "viewLive": "View Live",
      "editMyPage": "Edit My Page",
      "servicesOnboardingTitle": "Services & Athlete Onboarding",
      "servicesOnboardingSubtitle": "Configure pricing tiers and the intake questionnaires athletes fill out",
      "services": "Services",
      "athleteOnboarding": "Athlete Onboarding",
      "coachRevenueTitle": "Coach Revenue",
      "coachRevenueSubtitle": "Track earnings, services & payouts",
      "viewRevenue": "View Revenue",
      "statPrograms": "Programs",
      "statEnrollments": "Enrollments",
      "statMonthlyRevenue": "Monthly Revenue",
      "bundleDeals": "Bundle Deals",
      "manageBundles": "Manage Bundles",
      "noActiveBundles": "No active bundles",
      "noActiveBundlesHint": "Bundle 2+ programs together at a discount to boost sales",
      "bundleProgramCount_one": "{{count}} program",
      "bundleProgramCount_other": "{{count}} programs",
      "publishedPrograms": "Published Programs",
      "filterAll": "All",
      "filterFixed": "Fixed",
      "filterOngoing": "Ongoing",
      "noPublishedPrograms": "No published programs yet",
      "noPublishedProgramsHint": "Create a template and set it to public to start selling",
      "free": "Free",
      "noDescription": "No description added yet.",
      "weeksShort": "{{count}}wk",
      "daysPerWeekShort": "{{count}}d/wk",
      "editListing": "Edit Listing",
      "copySellLinkTooltip": "Copy the public sell link \u2014 share it on Instagram or anywhere",
      "linkCopied": "Link copied",
      "copySellLink": "Copy sell link",
      "noFixedProgramsPublished": "No fixed-timeframe programs published yet",
      "noContinuousProgramsPublished": "No continuous programs published yet",
      "couldNotLoadProfile": "Could not load coach profile.",
      "pageNotLiveTitle": "Your page isn't live yet",
      "pageNotLiveBody": "You need to set up and publish your website before visitors can see it.",
      "setUpMyPage": "Set Up My Page"
    },
    "conversionsDashboard": {
      "vsPrevPeriod": "vs prev period",
      "title": "Conversion Funnel",
      "subtitle": "Track how athletes discover you and become clients",
      "statTotalReach": "Total Reach",
      "statLeads": "Leads",
      "statIntroCalls": "Intro Calls",
      "statActiveClients": "Active Clients",
      "percentOfReach": "{{pct}}% of reach",
      "percentOfLeads": "{{pct}}% of leads",
      "percentOverall": "{{pct}}% overall",
      "funnelStages": "Funnel Stages",
      "noContactsPeriod": "No contacts in this period",
      "noContactsPeriodHint": "Share your promo page link to start tracking conversions",
      "stageTotalReach": "Total Reach",
      "stageLeadsCaptured": "Leads Captured",
      "stageIntroCalls": "Intro Calls",
      "stageActiveClients": "Active Clients",
      "conversionRateLabel": "{{rate}} conversion",
      "newContactsOverTime": "New Contacts Over Time",
      "noDataPeriod": "No data for this period",
      "channelPerformance": "Channel Performance",
      "channelPerformanceHint": "Click a row to see who came from that channel",
      "noChannelData": "No channel data yet",
      "noChannelDataHint": "Use UTM parameters on your promo page links to track traffic sources",
      "colChannel": "Channel",
      "colReach": "Reach",
      "colLeads": "Leads",
      "colCalls": "Calls",
      "colClients": "Clients",
      "colConvRate": "Conv. Rate",
      "topBadge": "Top",
      "contactCount_one": "\u2014 {{count}} contact",
      "contactCount_other": "\u2014 {{count}} contacts",
      "noContactsFound": "No contacts found in this period",
      "unlockAttribution": "Unlock channel attribution",
      "unlockAttributionPrefix": "Add UTM parameters to your promo page links (e.g.",
      "unlockAttributionSuffix": ") to see exactly which platforms are driving your growth.",
      "insightInstagramText": "Instagram is your #1 acquisition channel with {{contacts}} contacts and {{rate}}% client conversion.",
      "insightInstagramCta": "Add UTM links (?utm_source=instagram) to your bio and stories to track every click.",
      "insightIntroCallsText": "Intro calls convert at {{rate}}% \u2014 your best-performing conversion action.",
      "insightIntroCallsCta": "Add an Intro Call block to your promo page to increase bookings.",
      "insightEmailText": "Email is your top channel at {{rate}}% conversion rate.",
      "insightEmailCta": "Set up an automated email sequence to follow up with new leads faster.",
      "insightLeadsNoClientsText_one": "You have {{count}} lead but no clients yet.",
      "insightLeadsNoClientsText_other": "You have {{count}} leads but no clients yet.",
      "insightLeadsNoClientsCta": "Try adding an Intro Call block to your page to turn leads into booked calls.",
      "insightBestChannelText": "{{channel}} is your best channel at {{rate}}% client conversion.",
      "insightBestChannelCta": "Focus your outreach there to maximise ROI."
    },
    "coachAnalyticsDashboard": {
      "loadFailed": "Failed to load analytics",
      "errorTitle": "Error Loading Analytics",
      "loading": "Loading analytics...",
      "title": "Coach Analytics Dashboard",
      "subtitle": "Comprehensive analytics for your athletes",
      "filters": "Filters",
      "allClients": "All Clients",
      "allPrograms": "All Programs",
      "athleteCount_one": "{{count}} athlete",
      "athleteCount_other": "{{count}} athletes",
      "timePeriod": "Time Period",
      "lastNDays": "Last {{count}} days",
      "noClientsForSport": "<b>No clients found for {{sport}}.</b> Clients will appear here once you assign athletes to your coaching roster.",
      "criticalWarningCount_one": "{{count}} Critical Warning",
      "criticalWarningCount_other": "{{count}} Critical Warnings",
      "immediateAttention": "Immediate attention required for your athletes",
      "viewWarnings": "View Warnings",
      "activeClients": "Active Clients",
      "activeBlocks": "Active Blocks",
      "activeTemplates": "Active Templates",
      "avgWeeklyVolume": "Avg Weekly Volume",
      "hypothesisAlerts": "Hypothesis Alerts",
      "trainingWarnings": "Training Warnings",
      "tabOverview": "Overview",
      "tabHypotheses": "Hypotheses",
      "tabWarnings": "Warnings",
      "tabEffectiveness": "Effectiveness",
      "intensityDistribution": "Intensity Distribution",
      "intensityDistributionSubtitle": "How your athletes are distributing training intensity",
      "volumeBreakdownTitle": "{{sport}} Volume Breakdown",
      "volumeBreakdownSubtitle": "Distribution by movement category",
      "athletePerformanceSummary": "Athlete Performance Summary",
      "athletePerformanceSubtitle": "Per-athlete metrics with diagnostic indicators",
      "noAthleteData": "No athlete data available for the selected filters.",
      "needsAttention": "Needs attention",
      "onTrack": "On track",
      "volumeKg": "{{value}}kg volume",
      "completionPct": "{{value}}% completion",
      "feelingScore": "{{value}}/5.0 feeling",
      "weeksTracked_one": "{{count}} week",
      "weeksTracked_other": "{{count}} weeks",
      "accessoriesVol": "Accessories Vol",
      "painRoutines": "Pain Routines",
      "painLogs": "Pain Logs",
      "foodLogs": "Food Logs",
      "missPct": "Miss %",
      "allClear": "All Clear!",
      "noViolations": "No hypothesis violations detected. Your athletes' training is within optimal ranges.",
      "metric": "Metric",
      "current": "Current",
      "expected": "Expected",
      "affected": "Affected",
      "affectedAthletes_one": "{{count}} athlete",
      "affectedAthletes_other": "{{count}} athletes",
      "recommendation": "Recommendation",
      "noWarnings": "No Warnings",
      "noWarningsBody": "All training metrics are within safe ranges for your athletes.",
      "criticalWarnings": "Critical Warnings",
      "monitoring": "Monitoring",
      "currentLabel": "Current: {{value}}",
      "safeRangeLabel": "Safe range: {{value}}",
      "noProgramBlocks": "No Program Blocks",
      "noProgramBlocksBody": "Program effectiveness analysis will appear here once training blocks are created for your athletes.",
      "effectiveness": "Effectiveness",
      "performanceImprovement": "Performance Improvement",
      "volumeConsistency": "Volume Consistency",
      "strengths": "Strengths",
      "areasForImprovement": "Areas for Improvement",
      "recommendations": "Recommendations"
    },
    "coachProgramsAdmin": {
      "title": "My Programs",
      "bundles": "Bundles",
      "storefront": "Storefront",
      "programsLabel": "Programs",
      "enrollments": "Enrollments",
      "revenue": "Revenue",
      "activeBundles": "Active Bundles",
      "programsCount_one": "{{count}} program",
      "programsCount_other": "{{count}} programs",
      "publishedPrograms": "Published Programs",
      "noPublishedPrograms": "No published programs yet.",
      "noPublishedProgramsHint": "Create a template and set it to public to start selling.",
      "daysPerWeek": "{{count}}d/wk",
      "weeksCount": "{{count}}wk",
      "noReviews": "No reviews",
      "free": "FREE"
    },
    "coachExerciseLibraryManagement": {
      "title": "Exercise Library",
      "subtitle": "Manage exercises, add your own videos, and build your custom library",
      "searchPlaceholder": "Search exercises...",
      "addExercise": "Add Exercise",
      "allCategories": "All categories",
      "videoLabel": "Video:",
      "allVideos": "All videos",
      "yourVideo": "Your video",
      "standardVideo": "Standard video",
      "noVideo": "No video",
      "resultCount_one": "{{count}} result",
      "resultCount_other": "{{count}} results",
      "clearFilters": "Clear filters",
      "loading": "Loading exercises...",
      "noResults": "No exercises found matching your filters",
      "noExercisesYet": "No exercises yet",
      "addFirstExercise": "Add Your First Exercise",
      "editExercise": "Edit exercise",
      "deleteExercise": "Delete exercise",
      "removeYourVideo": "Remove your video",
      "referenceExercise": "Reference Exercise:",
      "primary": "Primary:",
      "secondary": "Secondary:",
      "publicTag": "(Public)",
      "createdByYou": "Created by you",
      "confirmDeleteExercise": "Are you sure you want to delete \"{{name}}\"? This will permanently remove the exercise from the library.",
      "confirmRemoveVideo": "Are you sure you want to remove your video for \"{{name}}\"? The exercise will remain in the library.",
      "deleteFailed": "Failed to delete. Please try again."
    },
    "coachPaywall": {
      "genericError": "Something went wrong. Please try again.",
      "trialEndedTitle": "Your free trial has ended",
      "cancelledTitle": "Your subscription has been cancelled",
      "pastDueTitle": "Payment issue with your subscription",
      "choosePlanTitle": "Choose your plan to get started",
      "trialEndedSubtitle": "Subscribe to continue building and managing your coaching business.",
      "pastDueSubtitle": "Please update your payment method to restore access.",
      "defaultSubtitle": "Everything you need to run your coaching business, all in one place.",
      "needHelp": "Trial ended or a payment issue? We're here to help \u2014 email us at",
      "requestExtension": "Request 14 more days",
      "extensionRequested": "Request sent. Dominic will confirm your extra 14 days by email, usually within a day.",
      "monthly": "Monthly",
      "yearly": "Yearly",
      "savePercent": "Save ~18%",
      "mostPopular": "Most Popular",
      "athletePassesIncluded_one": "{{count}} athlete pass included",
      "athletePassesIncluded_other": "{{count}} athlete passes included",
      "perMonthShort": "mo",
      "perYearShort": "yr",
      "getStarted": "Get Started",
      "athletePassInfo": "Need more athlete passes? Add premium passes for CHF {{price}}/mo per athlete. The Autopilot Plan includes 10 and the Growth Plan includes 5.",
      "updatePaymentMethod": "Update Payment Method"
    },
    "coachRevenuePage": {
      "title": "Revenue Dashboard",
      "subtitle": "Track your earnings and client revenue",
      "loadingRevenue": "Loading revenue data...",
      "bankAccountSettings": "Bank Account Settings",
      "bankShort": "Bank",
      "bills": "Bills",
      "export": "Export",
      "last7Days": "Last 7 days",
      "last30Days": "Last 30 days",
      "last90Days": "Last 90 days",
      "last12Months": "Last 12 months",
      "allTime": "All time",
      "totalRevenue": "Total Revenue",
      "pending": "Pending: {{amount}}",
      "templateSales": "Template Sales",
      "salesCount": "{{count}} sales",
      "serviceRevenue": "Service Revenue",
      "activeClientsCount": "{{count}} active clients",
      "affiliateRevenue": "Affiliate Revenue",
      "referralsCount": "{{count}} referrals",
      "affiliateCommission": "Affiliate Commission",
      "tabOverview": "Overview",
      "tabTransactions": "Transactions",
      "tabServiceClients": "Service Clients",
      "tabAffiliates": "Affiliates",
      "tabServiceTiers": "Service Tiers",
      "tabPromoCodes": "Promo Codes",
      "tabBillingSettings": "Billing Settings",
      "revenueTimeline": "Revenue Timeline",
      "txCount": "{{count}} tx",
      "txCount_other": "{{count}} txs",
      "colDate": "Date",
      "colType": "Type",
      "colClient": "Client",
      "colAmount": "Amount",
      "colStatus": "Status",
      "colService": "Service",
      "colRate": "Rate",
      "colLastPayment": "Last Payment",
      "colActions": "Actions",
      "notAvailable": "N/A",
      "noTransactions": "No transactions found for this period",
      "pastDue": "Past Due",
      "paused": "Paused",
      "estMrr": "Est. MRR",
      "unknownClient": "Unknown",
      "workoutsBlocked": "Workouts blocked",
      "cancelsAtPeriodEnd": "Cancels at period end",
      "paid": "Paid",
      "failed": "Failed",
      "failureCount": "{{count}} failure",
      "failureCount_other": "{{count}} failures",
      "viewClient": "View client",
      "noSubscriptions": "No active service subscriptions",
      "athleteBenefits": "Athlete Benefits",
      "instantRebate": "Instant Rebate",
      "instantRebateDesc": "Athletes get 10% off StrengthAcademy subscriptions when they use your code",
      "appliesToAllFeatures": "Applies to all in-app StrengthAcademy features",
      "yourCommission": "Your Commission",
      "recurringRevenue": "Recurring Revenue",
      "recurringRevenueDesc": "Earn 20% commission on every subscription from your referred athletes",
      "doesNotAffectSales": "Does not affect your workout plan sales revenue",
      "yourAffiliateCode": "Your Affiliate Code",
      "affiliateCodeDesc": "Give this code to another coach or athlete. They get 10% off for life. A referred coach earns you 97% of their first month, a referred athlete 10% of every payment.",
      "ambassadorReferrals": "Referrals",
      "ambassadorEarned": "Earned",
      "ambassadorPaidOut": "Paid out",
      "ambassadorRebateActive": "Your 10% ambassador rebate is active on your own plan.",
      "ambassadorRebateHint": "Your first coach referral unlocks 10% off your own plan for life, as long as your plan has no other discount.",
      "loadingShort": "Loading...",
      "copyCode": "Copy code",
      "editCode": "Edit code",
      "customCodePlaceholder": "Enter your custom code",
      "codeHelper": "4-20 characters, letters and numbers only",
      "saving": "Saving...",
      "saveCode": "Save Code",
      "referredAthletes": "Referred Athletes",
      "subscriptionLevel": "{{level}} subscription",
      "commissionCount": "{{count}} commission",
      "commissionCount_other": "{{count}} commissions",
      "firstDate": "First: {{date}}",
      "lastDate": "Last: {{date}}",
      "totalCommission": "total commission",
      "noReferredAthletes": "No referred athletes yet",
      "noReferredAthletesHint": "Share your affiliate code to start earning commissions",
      "serviceTiers": "Service Tiers",
      "serviceTiersDesc": "Define your coaching service packages and pricing",
      "addTier": "Add Tier",
      "editTier": "Edit Tier",
      "newServiceTier": "New Service Tier",
      "fieldName": "Name",
      "namePlaceholder": "e.g. Basic Coaching",
      "fieldServiceType": "Service Type",
      "fieldMonthlyRate": "Monthly Rate",
      "fieldCurrency": "Currency",
      "fieldDescription": "Description (optional)",
      "descriptionPlaceholder": "Describe what's included in this tier...",
      "intervalPricingLabel": "Interval Pricing <note>(optional \u2014 overrides the monthly rate for specific intervals)</note>",
      "weeklyEquiv": "\u2248 {{currency}} {{amount}}/week",
      "updateTier": "Update Tier",
      "createTier": "Create Tier",
      "noTiers": "No service tiers yet",
      "noTiersHint": "Create tiers to define your coaching packages and pricing",
      "createFirstTier": "Create Your First Tier",
      "perMonth": "per month",
      "editTierTitle": "Edit tier",
      "deleteTierTitle": "Delete tier",
      "deleteTierConfirm": "Delete this service tier? This cannot be undone.",
      "deleteTierFailed": "Failed to delete tier: {{error}}",
      "unknownError": "Unknown error",
      "saveTierFailed": "Failed to save tier",
      "nameRequired": "Name is required",
      "rateMustBePositive": "Rate must be greater than 0",
      "promoCodes": "Promo Codes",
      "promoCodesDesc": "Create discount codes for your coaching services. Athletes enter these at checkout to receive a percentage off.",
      "newCode": "New Code",
      "newPromoCode": "New Promo Code",
      "editPromoCode": "Edit Promo Code",
      "promoCodeLabel": "Code *",
      "promoDiscountLabel": "Discount % *",
      "maxUses": "Max Uses",
      "unlimited": "Unlimited",
      "promoServiceType": "Service Type",
      "anyLeaveBlank": "Any (leave blank)",
      "validFrom": "Valid From",
      "validUntil": "Valid Until",
      "clear": "Clear",
      "createCode": "Create Code",
      "saveChanges": "Save Changes",
      "noPromoCodes": "No promo codes yet",
      "noPromoCodesHint": "Create a code and share it with your athletes for a discount at checkout.",
      "percentOff": "{{percent}}% off",
      "usesCount": "{{used}} uses",
      "expires": "Expires {{date}}",
      "noExpiration": "No expiration",
      "deactivate": "Deactivate",
      "activate": "Activate",
      "codeDiscountRequired": "Code and discount % are required",
      "discountRange": "Discount must be between 1 and 100",
      "createPromoFailed": "Failed to create promo code",
      "updatePromoFailed": "Failed to update promo code",
      "codeLengthError": "Code must be between 4 and 20 characters",
      "codeCharsError": "Code can only contain letters and numbers",
      "userNotFound": "User not found",
      "codeUpdated": "Affiliate code updated successfully",
      "updateCodeFailed": "Failed to update affiliate code",
      "unexpectedError": "An unexpected error occurred",
      "billingSettings": "Billing Settings",
      "billingSettingsDesc": "Configure default billing behavior for all your clients. These can be overridden per client.",
      "gracePeriodTitle": "Failed Payment Grace Period",
      "gracePeriodDesc": "How many days to wait after a payment fails before taking action.",
      "days": "days",
      "failedPaymentActionTitle": "Default Failed Payment Action",
      "failedPaymentActionDesc": "What happens when a client's payment fails and the grace period expires.",
      "notifyOnly": "Notify Only",
      "notifyOnlyDesc": "Mark subscription as past due. The athlete can still access their workouts.",
      "blockWorkouts": "Block Workouts",
      "blockWorkoutsDesc": "Block the athlete from viewing their coached workouts until payment is resolved.",
      "billingIntervals": "Billing Intervals",
      "billingIntervalsDesc": "Which billing frequencies do you want to offer your clients?",
      "taxSettings": "Tax Settings",
      "taxSettingsDesc": "If you're required to charge tax, enter your rate here. The tax is inclusive \u2014 it will be extracted from your set price and shown as a breakdown on invoices.",
      "taxRate": "Tax Rate (%)",
      "taxLabel": "Tax Label (on invoices)",
      "taxLabelPlaceholder": "VAT, TVA, GST, Sales Tax...",
      "taxExample": "Example: A $120 subscription includes {{label}} of ${{amount}}",
      "taxFallback": "Tax",
      "saveSettings": "Save Settings",
      "settingsSaved": "Settings saved",
      "connectStripeError": "Error connecting Stripe account: {{error}}",
      "connectStripeRetry": "Error connecting Stripe account. Please try again.",
      "openDashboardError": "Error opening Stripe dashboard: {{error}}",
      "openDashboardRetry": "Error opening Stripe dashboard. Please try again.",
      "disconnectError": "Error disconnecting Stripe account. Please try again.",
      "disconnectSuccess": "Stripe account disconnected successfully. You can now connect a new account.",
      "managePayoutAccount": "Manage your payout account",
      "connectBankAccount": "Connect Your Bank Account",
      "connectBankAccountDesc": "Connect your bank account via Stripe to receive payouts from template sales and affiliate commissions.",
      "payoutCountry": "Payout country",
      "payoutCountryPlaceholder": "Select your country\u2026",
      "payoutCountryHelp": "The country where your bank account is. It cannot be changed after your Stripe account is created.",
      "manualPayoutHint": "Stripe is not available in this country. We will enable manual payouts instead: athletes pay Strength Academy and we transfer your earnings to your bank account every month.",
      "enableManualPayouts": "Enable manual payouts",
      "manualPayoutTitle": "Manual payouts active",
      "manualPayoutDesc": "Stripe is not available in your country ({{country}}). Athletes pay Strength Academy directly and we transfer your earnings to your bank account every month.",
      "manualPayoutNote": "To set up or change your bank details, or to switch to Stripe payouts, contact support.",
      "connecting": "Connecting...",
      "connectWithStripe": "Connect with Stripe",
      "bankAccountConnected": "Bank Account Connected",
      "bankAccountConnectedDesc": "Your Stripe account is active and ready to receive payouts.",
      "charges": "Charges",
      "enabled": "Enabled",
      "notEnabled": "Not enabled",
      "payouts": "Payouts",
      "accountInformation": "Account Information",
      "accountId": "Account ID:",
      "country": "Country:",
      "currency": "Currency:",
      "manageAccountInStripe": "Manage Account in Stripe",
      "disconnectStripeAccount": "Disconnect Stripe Account",
      "payoutsAutoNote": "Payouts are processed automatically according to your Stripe account settings.",
      "disconnectStripeConfirm": "Disconnect Stripe?",
      "disconnectWarning": "Warning: This action cannot be undone",
      "disconnectBullet1": "Your current Stripe account will be disconnected",
      "disconnectBullet2": "You will need to reconnect and complete Stripe onboarding again",
      "disconnectBullet3": "Any pending payouts will remain in your disconnected Stripe account",
      "disconnectBullet4": "You won't be able to receive new payouts until you reconnect",
      "disconnecting": "Disconnecting...",
      "yesDisconnect": "Yes, Disconnect",
      "billHeader": "STRENGTH ACADEMY - REVENUE STATEMENT",
      "billPeriod": "Period",
      "billGenerated": "Generated",
      "billRevenueBreakdown": "Revenue Breakdown",
      "coachingServices": "Coaching Services",
      "affiliateCommissions": "Affiliate Commissions",
      "billTotalRevenue": "TOTAL REVENUE",
      "billTransactionDetails": "Transaction Details",
      "revenueBills": "Revenue Bills",
      "revenueBillsDesc": "Generate sales statements from your revenue",
      "selectPeriod": "Select Period",
      "print": "Print",
      "generating": "Generating...",
      "downloadBill": "Download Bill",
      "revenueStatement": "Revenue Statement",
      "noTransactionsPeriod": "No transactions for this period",
      "billAutoGenerated": "This is an automatically generated statement from Strength Academy",
      "billSupportContact": "For support, contact {{email}}"
    },
    "coachBookingSettingsModal": {
      "loadFailed": "Failed to load settings",
      "saveSettingsFailed": "Failed to save settings",
      "saveFailed": "Failed to save",
      "deleteFailed": "Failed to delete",
      "endAfterStartError": "End time must be after start time",
      "deleteRuleConfirm": "Delete this availability rule? Future slots will stop being generated.",
      "cancelSlotConfirm": "Cancel this slot?",
      "loading": "Loading booking settings...",
      "title": "Booking Settings",
      "tabDefaultSettings": "Default Settings",
      "tabAvailability": "Availability",
      "locations": "Locations",
      "locationsHint": "Add all your coaching locations. The first one is the default for new rules.",
      "defaultBadge": "default",
      "addLocation": "Add location",
      "defaultCurrency": "Default Currency",
      "allowedDurations": "Allowed Booking Durations",
      "allowedDurationsHint": "Select which session durations clients can book",
      "cancellationPolicy": "Cancellation Policy",
      "cancellationWindow": "Cancellation Window",
      "refundInTime": "Refund (in time)",
      "lateCancelRefund": "Late cancel refund",
      "cancellationPolicyDescription": "Clients who cancel more than {{hours}}h before their session get a {{refund}}% refund. Late cancellations get {{lateRefund}}%.",
      "autoAccept": "Auto-accept bookings",
      "autoAcceptHint": "Automatically confirm bookings after payment",
      "slotGenerationHorizon": "Slot Generation Horizon",
      "weeksAhead": "weeks ahead",
      "slotGenerationHorizonHint": "How far in advance to generate bookable slots from your availability rules",
      "bookingTerms": "Booking Terms (optional)",
      "bookingTermsPlaceholder": "Any policies or terms clients should know before booking...",
      "settingsSaved": "Settings saved successfully",
      "saving": "Saving...",
      "saveSettings": "Save Settings",
      "templateWeek": "Template Week",
      "specificWeeks": "Specific Weeks",
      "templateModeHint": "Drag on the calendar to create recurring availability. These rules auto-generate bookable slots.",
      "specificModeHint": "View and manage materialized slots for a specific week. Add one-off slots or cancel individual ones.",
      "overlaps": "Overlaps",
      "min30min": "Min 30min",
      "private": "Private",
      "group": "Group",
      "overriddenSlotLegend": "* = overridden slot",
      "noRulesYet": "No availability rules yet",
      "noRulesHint": "Drag on the calendar to create your first availability block",
      "noSlotsThisWeek": "No slots for this week",
      "noSlotsHint": "Slots are generated from your template rules, or drag to add one-off slots",
      "editRule": "Edit Rule",
      "editSlot": "Edit Slot",
      "newRule": "New Availability Rule",
      "newSlot": "New One-Off Slot",
      "start": "Start",
      "end": "End",
      "slotType": "Slot Type",
      "sessionType": "Session Type",
      "titleOptional": "Title (optional)",
      "titlePlaceholder": "e.g., Morning Weightlifting",
      "location": "Location",
      "noLocation": "No location",
      "locationPlaceholder": "Add locations in Default Settings",
      "price": "Price",
      "pricePerPerson": "Price (per person)",
      "free": "Free",
      "currency": "Currency",
      "capacity": "Capacity",
      "minBookings": "Min. Bookings",
      "recurrence": "Recurrence",
      "recurrenceWeekly": "Weekly",
      "recurrenceBiweekly": "Every 2 Weeks",
      "recurrenceEvery4Weeks": "Every 4 Weeks",
      "bookingSlotDuration": "Booking Slot Duration",
      "durationDefault": "Default",
      "durationCustomHint": "Clients book {{minutes}}-minute sessions within this window",
      "durationDefaultHint": "Uses your global duration from Default Settings",
      "minBookingsWarning": "Session auto-cancels if fewer than {{count}} people book",
      "cancelSlot": "Cancel Slot",
      "sessionTypes": {
        "general": "General",
        "warmup": "Warmup",
        "powerlifting": "Powerlifting",
        "weightlifting": "Weightlifting",
        "weightlifting_variation": "Weightlifting Variation",
        "strength": "Strength",
        "crossfit": "Crossfit",
        "accessories": "Accessories",
        "pain_aches": "Pain Aches",
        "running": "Running",
        "ergo": "Ergo",
        "hyrox_circuit": "Hyrox Circuit",
        "mobility": "Mobility",
        "text_block": "Text Block",
        "competition": "Competition"
      },
      "currencyFollowsProfile": "Follows your profile currency."
    },
    "avatarPage": {
      "back": "Back to dashboard",
      "title": "Communication",
      "subtitle": "Your avatar, automated messages and questionnaires \u2014 all in one place.",
      "noCoach": "No active coach profile found.",
      "deliveryTitle": "What your avatar delivers",
      "deliveryHint": "Your avatar presents your automated messages and questionnaires \u2014 for template athletes and personal coaching clients.",
      "automationsTitle": "Automation rules & questionnaires",
      "automationsHint": "Set up automated messages, check-ins and questionnaires for templates or in-person coaching."
    },
    "companionStudio": {
      "title": "Coach Companion",
      "hint": "Upload a fresh selfie and we'll turn you into a cartoon companion that delivers your notes, tips and check-ins to your athletes.",
      "uploadCta": "Upload 1\u20134 selfies to get started (different angles improve likeness)",
      "uploadNewCta": "Upload 1\u20134 new selfies to regenerate",
      "photoReady": "Photo ready \u2014 hit Generate",
      "photosReady": "{{count}} photo(s) ready \u2014 hit Generate",
      "removePhoto": "Remove this photo",
      "generateCandidates": "Generate characters",
      "generatingCandidates": "Creating 3 character options\u2026 this takes about a minute. Keep this page open.",
      "generatingPoses": "Creating all poses from your chosen character\u2026 about a minute more.",
      "pickTitle": "Pick your character",
      "pickHint": "All poses will be created from the one you choose \u2014 pick the best likeness.",
      "pickThis": "Choose this one",
      "keepCurrent": "Keep my current character",
      "changeCharacter": "Change character",
      "generate": "Generate",
      "regenerate": "Regenerate",
      "generating": "Creating your companion\u2026 this takes 1\u20133 minutes. Keep this page open.",
      "enabledLabel": "Show my companion to my athletes",
      "requiresAdvanced": "The Coach Companion requires the Growth Plan or higher.",
      "failed": "Something went wrong. Try a different photo or try again."
    },
    "coachProfileEditor": {
      "visibilityUpdateFailed": "Failed to update profile visibility. Please try again.",
      "mobilitySharingUpdateFailed": "Failed to update mobility sharing. Please try again.",
      "deletionInfoLoadFailed": "Failed to load deletion information. Please try again.",
      "deleteProfileFailed": "Failed to delete coach profile. Please try again.",
      "uploadImageFile": "Please upload an image file",
      "imageSizeLimit": "Image size must be less than 5MB",
      "canvasError": "Could not get canvas context",
      "notAuthenticated": "Not authenticated",
      "uploadImageFailed": "Failed to upload image. Please try again.",
      "imageSavedButProfileFailed": "Image uploaded but profile could not be saved. Please try again.",
      "uploadFailed": "Failed to upload profile picture",
      "updateProfileFailed": "Failed to update profile. Please try again.",
      "title": "Public Coach Profile",
      "subtitle": "This information will be visible to users browsing the \"Find a Coach\" section. Make sure to provide a clear description of your coaching style and specializations.",
      "savedTitle": "Your profile has been updated and saved correctly",
      "savedSubtitle": "Changes are now visible to users browsing coaches",
      "profilePicture": "Profile Picture",
      "profilePictureHint": "Upload a professional photo that will be displayed to users browsing coaches. Max size: 5MB",
      "profileAlt": "Profile",
      "uploadCta": "Click to upload or drag and drop",
      "uploadFormats": "PNG, JPG, GIF up to 5MB",
      "bioLabel": "Bio / Description",
      "bioHint": "Tell potential clients about your coaching experience, philosophy, and what makes you unique.",
      "bioPlaceholder": "Example: I'm a certified Olympic weightlifting coach with 10+ years of experience. I specialize in helping athletes improve their technique and reach their competitive goals...",
      "charCount": "{{count}} / {{max}} characters",
      "specializations": "Specializations",
      "specializationsHint": "Select your sport specializations and add additional areas of expertise.",
      "sportSpecializations": "Sport Specializations",
      "additionalSpecializations": "Additional Specializations",
      "additionalSpecializationsHint": "Add other areas of expertise (e.g., CrossFit, Mobility, Youth Training, etc.)",
      "addSpecializationPlaceholder": "Add a specialization...",
      "noSpecializations": "No specializations added yet. Add at least one to help users find you!",
      "servicesOffered": "Services Offered",
      "servicesOfferedHint": "Select the services you offer to help clients find the right coach for their needs.",
      "noServices": "Select at least one service to help clients understand what you offer.",
      "currencyLabel": "Currency",
      "currencyHint": "The currency for everything you sell \u2014 coaching tiers, templates, bundles and session bookings.",
      "currencyFootnote": "Changing this also updates the currency on your existing prices. The amounts stay the same, so 499 CHF becomes 499 EUR \u2014 review your pricing after switching.",
      "questionnaireTitle": "Client Intake Questionnaire",
      "questionnaireHint": "Add questions that new clients must answer when they contact you. This helps you understand their needs before starting the conversation.",
      "questionPlaceholder": "Enter your question...",
      "removeQuestion": "Remove question",
      "requiredQuestion": "Required question",
      "addQuestionPlaceholder": "Add a new question...",
      "addQuestion": "Add Question",
      "noQuestions": "No questions added yet",
      "noQuestionsHint": "Add questions to learn more about potential clients before they contact you",
      "videoRequestsTitle": "Intake Video Requests",
      "videoRequestsHint": "Request up to 3 videos from new clients during their intake. These videos help you assess their form and movement before starting coaching.",
      "videoPromptPlaceholder": "Describe what video you want (e.g., 'Record a front view of your squat')",
      "removeVideoRequest": "Remove video request",
      "addVideoPlaceholder": "Describe what video you want from clients...",
      "addVideo": "Add Video",
      "noVideoRequests": "No video requests added yet",
      "noVideoRequestsHint": "Request videos like form checks or movement assessments from new clients",
      "maxVideoRequests": "Maximum of 3 video requests reached",
      "saving": "Saving...",
      "saveProfile": "Save Profile",
      "profileVisibility": "Profile Visibility",
      "visible": "Visible",
      "hidden": "Hidden",
      "visibleDescription": "Your profile is visible in the public coach directory. Users can find and contact you.",
      "hiddenDescription": "Your profile is hidden from the coach directory. Existing clients are not affected.",
      "shareMobility": "Share Mobility Routines",
      "shared": "Shared",
      "private": "Private",
      "mobilitySharedDescription": "Your athletes see the mobility routines you create in a \"From your coach\" section on their Mobility tab.",
      "mobilityPrivateDescription": "Your mobility routines are private. Turn this on to let your athletes view them.",
      "dangerZone": "Danger Zone",
      "dangerZoneHint": "Permanently delete your coach profile. This action cannot be undone.",
      "deleteCoachProfile": "Delete Coach Profile",
      "deleteModalTitle": "Delete Your Coach Profile?",
      "deleteModalSubtitle": "This action is permanent and cannot be undone.",
      "whatWillBeDeleted": "What will be deleted:",
      "deleteItemProfile": "Your coach profile and bio",
      "deleteItemClients": "Client relationships ({{count}} clients)",
      "deleteItemSessions": "Scheduled sessions ({{count}} sessions)",
      "deleteItemQuestionnaires": "Intake questionnaires and client responses",
      "deleteItemVideos": "Custom exercise videos",
      "whatWillNotBeDeleted": "What will NOT be deleted:",
      "keepItemAccount": "Your user account (you can still log in as an athlete)",
      "keepItemPlans": "Workout plans you created (will be preserved but unlinked)",
      "keepItemHistory": "Client workout history and progress",
      "alsoDeletePlans": "Also delete all workout plans I created ({{count}} templates)",
      "alsoDeletePlansWarning": "Warning: This will also remove plans from clients currently using them.",
      "typeToConfirm": "Type <b>DELETE</b> to confirm:",
      "typeDeletePlaceholder": "Type DELETE here",
      "deleting": "Deleting...",
      "deleteProfileButton": "Delete Profile",
      "adjustPicture": "Adjust Your Profile Picture",
      "adjustPictureHint": "Drag to reposition and use the zoom buttons to adjust your photo",
      "cropPreviewAlt": "Crop preview",
      "zoomOut": "Zoom Out",
      "zoomIn": "Zoom In",
      "savePhoto": "Save Photo"
    },
    "coachClubsPage": {
      "coachesOnly": "Only coaches can manage clubs.",
      "newClub": "New Club",
      "title": "Clubs",
      "subtitle": "Persistent groups your athletes can join. Members get notified about every session in the club's schedule.",
      "tabMyClubs": "My Clubs",
      "tabPendingRequests": "Pending Requests",
      "tabClubMembers": "{{name}} Members",
      "confirmRemoveMember": "Remove this member? They will be dropped from future sessions of this club.",
      "confirmDeleteClub": "Delete this club? Members will lose access; future sessions will detach from the club.",
      "promoBlockCreated": "Clubs block added to your page \u2014 finishing in the editor.",
      "promoBlockExtended": "Club added to your existing Clubs block \u2014 opening the editor.",
      "promoAlreadyFeatured": "Your page already features this club \u2014 opening the editor.",
      "promoUpdateFailed": "Could not update your promo page.",
      "reorderFailed": "Could not reorder clubs on your page.",
      "noClubs": "No clubs yet. Create one to start grouping athletes.",
      "positionOnSite": "#{{position}} on site",
      "public": "Public",
      "private": "Private",
      "openToRequests": "Open to requests",
      "manualAdd": "Manual add",
      "activeCount": "{{count}} active",
      "pendingCount": "{{count}} pending",
      "seriesCount": "{{count}} series",
      "manage": "Manage",
      "editOnMyWebsite": "Edit on my website",
      "moveUpOnWebsite": "Move up on website",
      "showEarlierOnWebsite": "Show earlier on website",
      "moveDownOnWebsite": "Move down on website",
      "showLaterOnWebsite": "Show later on website",
      "addClubToWebsite": "Add this club to my website",
      "noPendingRequests": "No pending requests.",
      "unknownAthlete": "Unknown athlete",
      "wantsToJoin": "wants to join <club>{{clubName}}</club> \u00b7 requested {{date}}",
      "approve": "Approve",
      "reject": "Reject",
      "addManually": "Add manually",
      "activeMembersSummary": "<count>{{count}}</count> active members",
      "pendingSummary": "<count>{{count}}</count> pending",
      "pendingHeading": "Pending",
      "activeHeading": "Active",
      "noActiveMembers": "No active members yet.",
      "removeNote": "Removing an athlete drops them from future sessions of this club. Past sessions and their attendance history are kept.",
      "joinModeLine": "Join mode: <b>{{mode}}</b>",
      "joinModeOpen": "Open \u2014 anyone can request to join",
      "joinModeManual": "Manual \u2014 only you can add members",
      "unknown": "Unknown",
      "chooseImageFile": "Please choose an image file.",
      "imageTooLarge": "Image must be under 5 MB.",
      "uploadFailed": "Upload failed. Try again.",
      "editClub": "Edit Club",
      "coverImageLabel": "Cover image (optional)",
      "uploading": "Uploading\u2026",
      "replace": "Replace",
      "addBannerImage": "Add a banner image (3:1 looks best)",
      "nameLabel": "Name",
      "namePlaceholder": "e.g. CLHM Wednesday Squad",
      "descriptionLabel": "Description (optional)",
      "descriptionPlaceholder": "What's this club about?",
      "sportLabel": "Sport",
      "locationLabel": "Location (optional)",
      "locationPlaceholder": "e.g. Le Havre, France",
      "joinModeLabel": "Join mode",
      "joinModeManualTitle": "Manual",
      "joinModeManualSubtitle": "Only you can add members",
      "joinModeRequestTitle": "Open to requests",
      "joinModeRequestSubtitle": "Athletes can request to join",
      "listedPublicly": "Listed publicly (shown on Find a Coach + your promo page)",
      "saveChanges": "Save changes",
      "createClub": "Create club",
      "invitationSent": "Invitation sent to {{email}}",
      "invitationFailed": "Failed to send invitation",
      "addMember": "Add member",
      "searchPlaceholder": "Type a name to search clients, or an email to invite",
      "noClientMatchInvite": "<muted>No client matches.</muted> Send an email invitation to <email>{{email}}</email> \u2014 they'll join the club once they accept.",
      "sending": "Sending...",
      "sendInvitationTo": "Send invitation to {{email}}",
      "invitePending": "An invite to <b>{{email}}</b> is already pending.",
      "startTypingHint": "Start typing a client's name, or an email address to invite someone new.",
      "minCharsHint": "Type at least 2 characters to search clients.",
      "noMatchingClients": "No matching clients.",
      "unnamed": "Unnamed",
      "alreadyAdded": "Already added",
      "pendingInvitations": "Pending invitations",
      "sentOn": "Sent {{date}}",
      "revoke": "Revoke"
    },
    "coachVideoFeedback": {
      "unknown": "Unknown",
      "filter": "Filter",
      "allVideos": "All Videos",
      "templatePrograms": "Template Programs",
      "personalizedPlans": "Personalized Plans",
      "videoRequests": "Video Requests",
      "oneTimeReviews": "One-Time Reviews",
      "byAthlete": "By Athlete",
      "techniqueNotesFor": "Technique notes \u2014 {{name}}",
      "techniqueNotes": "Technique Notes",
      "backToDashboard": "Back to Dashboard",
      "videoReview": "Video Review",
      "pendingCount_one": "Pending ({{count}})",
      "pendingCount_other": "Pending ({{count}})",
      "reviewed": "Reviewed",
      "new": "New",
      "storedNote": "Reviewed videos stored for 30 days",
      "videoFeedback": "Video Feedback",
      "videoCount_one": "{{count}} video",
      "videoCount_other": "{{count}} videos",
      "due": "Due {{date}}",
      "oneTimeEmptyPendingTitle": "No Pending Reviews",
      "oneTimeEmptyReviewedTitle": "No Reviewed Submissions",
      "oneTimeEmptyPendingBody": "New paid Video Feedback purchases will appear here.",
      "oneTimeEmptyReviewedBody": "Reviewed paid submissions will show here once you respond.",
      "requestsEmptyPendingTitle": "No Submitted Requests",
      "requestsEmptyPendingBody": "No athletes have submitted requested videos yet.",
      "requestsEmptyReviewedTitle": "No Reviewed Requests",
      "requestsEmptyReviewedBody": "No reviewed video requests in the last 30 days.",
      "allCaughtUp": "All Caught Up!",
      "noPendingReviews": "No pending video reviews.",
      "noReviewedVideosTitle": "No Reviewed Videos",
      "noReviewedVideosBody": "No reviewed videos in the last 30 days.",
      "emailSentTo": "Email sent to {{name}}",
      "enableEmailAlerts": "Enable email alerts in client Automations",
      "failedToLoadVideo": "Failed to load video",
      "videoTagUnsupported": "Your browser does not support the video tag.",
      "weeklyLimitTitle": "Weekly video limit",
      "weeklyLimitUnlimited": "Unlimited",
      "weeklyLimitVideosN": "{{n}} videos",
      "weeklyLimitCustom": "Custom\u2026",
      "weeklyLimitHelp": "Max form videos each client can send per training week (Mon\u2013Sun). Pick Custom for any other number \u2014 0 blocks free uploads. Override per client from their profile. Requested videos don't count."
    },
    "inquiryComposeModal": {
      "bookIntroCall": "Choose an intro-call time",
      "agendaEmailNote": "The email button opens your intro-call availability for the chosen week. The lead picks a time and enters their email to book.",
      "missingCoachPage": "Set up your public coach page before sending an agenda link.",
      "weekSlotsHint": "Your website’s intro-call availability is included automatically for the week below. Disable any days or times you don’t want to offer.",
      "invitationOnly": "Changes apply to this invitation only.",
      "refreshAvailability": "Refresh",
      "weekIncluded": "{{included}} of {{total}} times included",
      "includeWholeWeek": "Include whole week",
      "includeDay": "Include {{date}}",
      "editDayTimes": "Edit times for {{date}}",
      "responseTitle": "Respond to inquiry",
      "responseType": "Email type",
      "replyOption": "Personal reply",
      "introOption": "Intro-call invitation",
      "tiersOption": "Coaching tiers & prices",
      "reviewHint": "Choose your response, personalise it, then review the email before sending.",
      "chooseTiers": "Choose tiers to include",
      "tierHint": "Only selected tiers, prices and included features will appear below your message.",
      "noTiers": "Create an active coaching tier before sending prices.",
      "slotsFailed": "Could not load availability. Try again to choose times.",
      "previousWeek": "Previous week",
      "nextWeek": "Next week",
      "backToEdit": "Back to edit",
      "reviewEmail": "Review email",
      "titleIntroCall": "Send Intro Call Invite",
      "titleEmail": "Compose Email",
      "titleMessage": "Send Message",
      "toLabel": "To:",
      "composeTab": "Compose",
      "previewTab": "Preview",
      "inquiryDetailsHeading": "Lead's Inquiry Details",
      "answerCount_one": "{{count}} answer",
      "answerCount_other": "{{count}} answers",
      "wantsToCall": "Wants to call: <b>{{date}}</b> at <b>{{time}}</b>",
      "subjectLabel": "Subject",
      "subjectPlaceholder": "Email subject...",
      "messageLabel": "Message",
      "messagePlaceholder": "Write your message...",
      "availableSlots": "Available Time Slots",
      "selectedCount_one": "{{count}} selected",
      "selectedCount_other": "{{count}} selected",
      "noSlots": "No intro call slots available. Set up your availability first.",
      "deselectAll": "Deselect all",
      "selectAllWeek": "Select all this week",
      "introCallNote": "Each slot will have a \"Book\" button linking to your promo page",
      "brandedEmailNote": "Sent as a branded Strength Academy email from your coach name",
      "appInviteLabel": "Also invite them to download the app",
      "appInviteHint": "Adds a download link + invite to this email so they can join and become your client.",
      "badgeIntroCall": "Intro call invite from <b>{{coachName}}</b>",
      "badgeMessage": "Message from <b>{{coachName}}</b>",
      "greetingNamed": "Hi {{name}},",
      "greetingGeneric": "Hi there,",
      "messagePreviewPlaceholder": "Your message will appear here...",
      "clickToBook": "Click a slot to book instantly",
      "bookButton": "Book",
      "selectSlotsHint": "Select time slots in the Compose tab to see them here",
      "viewCoachPage": "View {{coachName}}'s Page",
      "viewAllTimes": "View All Available Times",
      "footerSentBy": "This email was sent by {{coachName}} via Strength Academy. You received it because you expressed interest in their coaching services.",
      "footerWebsite": "Website",
      "footerInstagram": "Instagram",
      "footerReceived": "You received this email from Strength Academy.",
      "sending": "Sending...",
      "sendInvite_one": "Send Invite ({{count}} slot)",
      "sendInvite_other": "Send Invite ({{count}} slots)",
      "send": "Send",
      "sendFailed": "Failed to send"
    },
    "coachChatInterface": {
      "backToDashboard": "Back to Dashboard",
      "tabChats": "Chats",
      "tabChat": "Chat",
      "tabGroups": "Groups",
      "tabGroup": "Group",
      "tabVideos": "Videos",
      "tabVid": "Vid",
      "searchClients": "Search clients...",
      "searchCommunities": "Search communities...",
      "noClientsFound": "No clients found",
      "noClientsYet": "No clients yet",
      "noCommunitiesFound": "No communities found",
      "noCommunitiesYet": "No communities yet",
      "memberCount_one": "{{count}} member",
      "memberCount_other": "{{count}} members",
      "selectClientPrompt": "Select a client to start chatting",
      "selectCommunityPrompt": "Select a community to start chatting",
      "chooseFromList": "Choose from the list on the left",
      "unknownSender": "Unknown",
      "sendFailed": "Failed to send message",
      "noMessagesYet": "No messages yet. Start the conversation!",
      "coachBadge": "Coach",
      "typeMessage": "Type a message..."
    },
    "coachInstagramPromoCard": {
      "errImageType": "Please choose an image file.",
      "errImageSize": "Image must be under 8MB.",
      "errNoImage": "Add an image first.",
      "errNoSentence": "Add your sentence.",
      "errNoHandle": "Add your Instagram handle so we can tag you.",
      "errNoConsent": "Please confirm the posting permission to continue.",
      "errUploadFailed": "Could not upload the image. Please try again.",
      "errGeneric": "Something went wrong. Please try again.",
      "statusSubmitted": "Submitted",
      "statusScheduled": "Scheduled",
      "statusPosted": "Posted",
      "statusActionNeeded": "Action needed",
      "triggerLong": "Get featured on Instagram",
      "triggerShort": "Get featured",
      "pendingTitle": "Submitted \u2014 awaiting scheduling",
      "pendingSub": "We've got your feature request. We'll schedule and post it from the company account soon.",
      "scheduledForTitle": "Scheduled for {{date}}",
      "scheduledTitle": "Scheduled \ud83c\udf89",
      "scheduledSub": "Your collaboration post is queued. Accept the collab invite on Instagram when it arrives.",
      "postedTitle": "Posted \u2705",
      "postedSub": "You're live on @strengthacademy \u2014 check Instagram and accept the collaboration to show it on your grid.",
      "rejectedTitle": "Needs another look",
      "rejectedSub": "Please reach out to support about your feature request.",
      "paidGate": "Available on a paid plan. Choose a plan to get featured.",
      "publishGate": "Publish your public page first \u2014 the post links athletes to it.",
      "editMyPage": "Edit My Page",
      "yourPhoto": "Your photo",
      "previewAlt": "Preview",
      "changePhoto": "Change photo",
      "uploadImage": "Upload an image",
      "sportsLabel": "Sport(s)",
      "yourStats": "Your stats",
      "optional": "(optional)",
      "ratherNotShare": "I'd rather not share",
      "hideStatsNote": "No problem \u2014 your post will feature your photo, sport and quote, without numbers.",
      "pickSportForStats": "Pick a sport above to add stats.",
      "timePlaceholderRunning": "e.g. 3:15:00",
      "timePlaceholderRace": "e.g. 1:05:30",
      "addDistance": "+ Add distance",
      "addRace": "+ Add race",
      "pickValuePlaceholder": "e.g. 140 kg",
      "tapLiftsHint": "Tap the lifts you want to show, then add a number.",
      "freeStatPlaceholder": "e.g. Best lift \u2014 200 kg",
      "oneLineLabel": "One line about you",
      "oneLinePlaceholder": "Your coaching philosophy in one line \u2014 this is the quote on the post.",
      "handleLabel": "Your Instagram handle",
      "handleLabelHint": "(for the collaboration tag)",
      "handlePlaceholder": "yourhandle",
      "handleHelper": "We'll send a collaboration invite here \u2014 accept it so the post appears on your grid.",
      "preview": "Preview",
      "collabWith": "Collab with @{{handle}}",
      "yourNameFallback": "Your name",
      "certifiedCoach": "CERTIFIED COACH",
      "previewDisclaimer": "This is a rough preview, not the final post \u2014 our team designs the finished branded image before it goes live.",
      "consentWaiver": "I confirm I have the right to share this image and these stats, and I grant Strength Academy permission to feature me on its Instagram. I understand I'll receive a collaboration invite to accept.",
      "submitting": "Submitting\u2026",
      "submitForFeature": "Submit for feature",
      "submitOnceNote": "You can submit this once. We'll review, schedule and post it from the company account.",
      "modalTitle": "Get featured on our Instagram",
      "modalSubtitle": "A one-time collaboration post on @strengthacademy \u2014 tagged to you, so it lands on your grid too."
    },
    "coachVideoFeedbackReviewPanel": {
      "saveVideoFeedbackFailed": "Failed to save video feedback",
      "draftSaved": "Draft saved",
      "saveDraftFailed": "Failed to save draft",
      "addFeedbackBeforeSending": "Add at least one piece of feedback before sending the review.",
      "submitReviewFailed": "Failed to submit review",
      "cancelRequestFailed": "Failed to cancel the request",
      "backToList": "Back to list",
      "videoFeedback": "Video Feedback",
      "paidOn": "Paid {{date}}",
      "dueOn": "Due {{date}}",
      "reviewed": "Reviewed",
      "perVideoReview": "Per-video review ({{count}})",
      "questionnaireResponses": "Questionnaire responses",
      "generalComments": "General comments & recommendations",
      "generalCommentsPlaceholder": "Overall feedback, programming recommendations, what to focus on next\u2026",
      "techniqueNotes": "Technique notes by lift & phase",
      "urgencyLow": "Low",
      "urgencyMedium": "Medium",
      "urgencyHigh": "High",
      "urgencyCritical": "Critical",
      "phaseCuePlaceholder": "Cue for the {{phase}} of {{lift}}\u2026",
      "cancelAndRefund": "Cancel & refund",
      "cancelRequest": "Cancel request",
      "saveDraft": "Save draft",
      "sendReview": "Send review to athlete",
      "cancelRefundTitle": "Cancel & refund this request?",
      "cancelTitle": "Cancel this request?",
      "cancelRefundBodyWithAmount": "The athlete will receive a full refund of {{amount}} and an email letting them know. This can't be undone.",
      "cancelRefundBody": "The athlete will receive a full refund and an email letting them know. This can't be undone.",
      "cancelFreeBody": "This was a free submission, so there's nothing to refund. The athlete will get an email letting them know. This can't be undone.",
      "noteToAthleteLabel": "Note to the athlete (optional)",
      "noteToAthletePlaceholder": "e.g. Sorry, I'm fully booked this week \u2014 please resubmit next week!",
      "keepRequest": "Keep request"
    },
    "coachPlatformBillingPage": {
      "title": "Subscription & Billing",
      "subtitle": "Manage your Strength Academy plan",
      "genericError": "Something went wrong. Please try again.",
      "genericErrorShort": "Something went wrong.",
      "currentPlan": "Current Plan",
      "grandfathered": "Grandfathered",
      "freeTrial": "Free Trial",
      "noPlan": "No Plan",
      "daysRemaining_one": "{{count}} day remaining",
      "daysRemaining_other": "{{count}} days remaining",
      "paymentFailed": "Payment failed",
      "manageBilling": "Manage Billing",
      "extendTrialTitle": "Extend Your Trial",
      "extendTrialDescription": "Get 14 more days free by answering a few questions. A credit card is required but won't be charged during the extended trial.",
      "extendTrialCta": "Extend Trial \u2014 Answer Questions",
      "howDidYouFindLabel": "How did you find Strength Academy?",
      "howDidYouFindPlaceholder": "Google, Instagram, friend referral...",
      "featuresMissingLabel": "What features are you missing?",
      "featuresMissingPlaceholder": "What would make you subscribe?",
      "likelihoodLabel": "How likely are you to subscribe? (1-10)",
      "hesitationLabel": "Biggest hesitation?",
      "hesitationPlaceholder": "Price, features, switching costs...",
      "selectPlanAfterExtension": "Select your plan for after the extension:",
      "continueToCheckout": "Continue to Checkout (card required, not charged)",
      "switchPlan": "Switch Plan",
      "choosePlan": "Choose a Plan",
      "monthly": "Monthly",
      "yearly": "Yearly",
      "currentBadge": "Current",
      "perMonthShort": "mo",
      "perYearShort": "yr",
      "switchTo": "Switch to {{name}}",
      "subscribe": "Subscribe",
      "startAfterTrial": "Continue with this plan",
      "trialCardNote": "Your free trial keeps running. Add your card now and the first charge is on {{date}}. Cancel before then and you pay nothing.",
      "premiumPassesTitle": "Premium Athlete Passes",
      "passesUsed": "{{used}} / {{included}} included passes used",
      "paidPasses_one": "+{{count}} paid (CHF {{amount}}/mo)",
      "paidPasses_other": "+{{count}} paid (CHF {{amount}}/mo)",
      "noPassesAssigned": "No premium passes assigned yet. Manage passes from your athlete list.",
      "unknownAthlete": "Unknown Athlete",
      "addonPassPricing": "CHF {{amount}}/mo per additional pass beyond your included {{included}}."
    },
    "coachVideoReviewPage": {
      "title": "Video Feedback Reviews",
      "subtitle": "Review and provide feedback on athlete videos",
      "tabWorkout": "Workout videos",
      "tabOneTime": "One-time reviews",
      "allCaughtUpTitle": "All Caught Up!",
      "allCaughtUpBody": "No pending video submissions to review",
      "pendingReviewsHeading": "Pending Reviews ({{count}})",
      "exerciseFallback": "Exercise",
      "planDay": "{{plan}} - Day {{day}}",
      "submittedAt": "Submitted {{date}}",
      "videoNotSupported": "Your browser does not support the video tag.",
      "clientNotesLabel": "Client Notes:",
      "yourFeedbackLabel": "Your Feedback:",
      "feedbackPlaceholder": "Provide technique feedback, corrections, and encouragement...",
      "submitting": "Submitting...",
      "submitFeedback": "Submit Feedback",
      "submitFailed": "Failed to submit feedback. Please try again.",
      "selectVideoTitle": "Select a Video to Review",
      "selectVideoBody": "Choose a submission from the list to watch and provide feedback",
      "noOneTimeTitle": "No one-time reviews yet",
      "noOneTimeBody": "When an athlete pays for a video review through your promo page, it'll show up here.",
      "awaitingReviewHeading": "Awaiting review ({{count}})",
      "sentHeading": "Sent ({{count}})",
      "tierFallback": "Video feedback",
      "videoCount_one": "{{count}} video",
      "videoCount_other": "{{count}} videos",
      "questionnaire": "Questionnaire",
      "dueDate": "Due {{date}}",
      "submittedDate": "Submitted {{date}}",
      "pillNew": "New",
      "pillDrafting": "Drafting",
      "pillSent": "Sent",
      "pillCancelled": "Cancelled"
    },
    "coachSessionNotification": {
      "registerFailed": "Could not register for this session.",
      "noProblem": "No problem!",
      "changeResponseAnytime": "You can change your response anytime from the <b>Calendar</b> page.",
      "sessionCancelled": "Session Cancelled",
      "coachCancelledAccepted": "Your coach cancelled a session you had accepted",
      "coach": "Coach",
      "group": "Group",
      "wasScheduledFor": "Was scheduled for",
      "time": "Time",
      "coachsNote": "Coach's note",
      "updating": "Updating\u2026",
      "gotIt": "Got it",
      "personalTrainingSession": "Personal Training Session",
      "groupTrainingSession": "Group Training Session",
      "assignedToSession": "You've been assigned to a training session",
      "groupName": "Group Name",
      "date": "Date",
      "waitlistInfo": "You're on the waitlist for this session. We'll let you know if a spot opens up.",
      "registerInfo": "Your coach has opened registration for this club session. Tap Register to claim a spot \u2014 if it's full you'll join the waitlist.",
      "confirmAttendanceInfo": "Please confirm your attendance. The session will appear in your calendar.",
      "groupParticipantsInfo": "You will train with other participants in this group session.",
      "registeredSeeYouThere": "You're registered. See you there!",
      "fullWaitlistOutcome": "Session is full \u2014 you're on the waitlist. We'll notify you if a spot opens.",
      "registering": "Registering\u2026",
      "register": "Register",
      "declining": "Declining\u2026",
      "decline": "Decline",
      "decideLater": "I'll Decide Later",
      "accepting": "Accepting...",
      "accept": "Accept"
    },
    "coachingCallSendModal": {
      "title": "Coaching Call",
      "withClient": "with {{name}}",
      "tabInvite": "Invite to Book",
      "tabSchedule": "Schedule a Call",
      "tabWeekly": "Weekly Schedule",
      "inviteDescription": "Send {{name}} an invite to pick from your available coaching call slots. They'll get an email with a link to choose a time.",
      "manageSlotsTitle": "Manage your availability slots",
      "mySchedule": "My Schedule",
      "optionalMessage": "Optional message",
      "inviteMessagePlaceholder": "Hi {{name}}, let's schedule your next coaching call\u2026",
      "inviteSent": "Invite sent!",
      "sending": "Sending\u2026",
      "sendInvite": "Send Invite",
      "scheduleDescription": "Pick an exact date and time. The booking will be automatically confirmed and {{name}} will receive an email.",
      "dateLabel": "Date",
      "timeLabel": "Time",
      "durationLabel": "Duration",
      "durationMinutes": "{{count}} min",
      "repeatLabel": "Repeat",
      "recurrenceOneTime": "One-time",
      "recurrenceWeekly": "Weekly",
      "recurrenceBiweekly": "Bi-weekly",
      "recurrenceMonthly": "Monthly",
      "createSessionsWeeksAhead": "Create sessions for (weeks ahead)",
      "sessionsScheduled_one": "{{count}} session scheduled!",
      "sessionsScheduled_other": "{{count}} sessions scheduled!",
      "scheduling": "Scheduling\u2026",
      "scheduleCall": "Schedule Call",
      "createRecurringSessions": "Create Recurring Sessions",
      "weeklyDescription": "Set a recurring day(s) and time. Sessions will be auto-confirmed and {{name}} will be notified.",
      "daysOfWeek": "Day(s) of week",
      "frequencyLabel": "Frequency",
      "weeksAhead": "Weeks ahead",
      "scheduleApplied": "Schedule applied!",
      "applying": "Applying\u2026",
      "applySchedule": "Apply Schedule"
    },
    "coachServiceTierEditor": {
      "title": "Service Tiers",
      "popularBadge": "Popular",
      "oneTimeBadge": "One-time",
      "perOneTime": "/ one-time",
      "coachRespondsWithin_one": "Coach responds within {{count}} day",
      "coachRespondsWithin_other": "Coach responds within {{count}} days",
      "videoCount_one": "{{count}} video",
      "videoCount_other": "{{count}} videos",
      "addTier": "Add Tier",
      "serviceTypeLabel": "Service Type",
      "serviceTypes": {
        "personalCoaching": "Personal Coaching",
        "videoFeedback": "Video Feedback",
        "programDesign": "Program Design",
        "nutritionCoaching": "Nutrition Coaching"
      },
      "paymentLabel": "Payment",
      "subscription": "Subscription",
      "oneTime": "One-time",
      "nameLabel": "Name",
      "namePlaceholder": "e.g. Pro",
      "priceLabel": "Price",
      "descriptionLabel": "Description",
      "descriptionPlaceholder": "Short description",
      "billingCycleLabel": "Billing Cycle",
      "videoFeedbackSettings": "Video Feedback settings",
      "responseDelayLabel": "Response delay (days)",
      "responseDelayHint": "How long after payment until the athlete gets feedback.",
      "questionnaireLabel": "Questionnaire",
      "questionnaireNone": "\u2014 none \u2014",
      "questionnaireHint": "Athlete uploads one video per <em>video_prompt</em> on this questionnaire.",
      "noTemplatesYet": "No templates yet \u2014 <a>create one <icon/></a>.",
      "featuresLabel": "Features",
      "addFeaturePlaceholder": "Add feature...",
      "toggleMessaging": "Messaging",
      "toggleIntroCall": "Intro Call",
      "toggleHighlight": "Highlight",
      "saving": "Saving...",
      "saveTier": "Save Tier"
    },
    "coachProgramAnalytics": {
      "notAuthenticated": "Not authenticated",
      "loadFailed": "Failed to load analytics",
      "loading": "Loading analytics...",
      "title": "Program Analytics",
      "subtitle": "Performance metrics for your programs",
      "refresh": "Refresh",
      "realData": "Real Data",
      "theoretical": "Theoretical",
      "templateMaster": "Template Master",
      "allTrainingTypes": "All Training Types",
      "weightlifting": "Weightlifting",
      "hypertrophy": "Hypertrophy",
      "powerlifting": "Powerlifting",
      "hyrox": "Hyrox",
      "allPlanTypes": "All Plan Types",
      "templates": "Templates",
      "personalized": "Personalized",
      "totalPrograms": "Total Programs",
      "totalVolume": "Total Volume",
      "totalSets": "Total Sets",
      "activeUsers": "Active Users",
      "noProgramsFound": "No Programs Found",
      "noProgramsMatchFilters": "No programs match your current filters",
      "createFirstProgram": "Create your first program to see analytics",
      "volumeByCategory": "Volume by Category",
      "volumeByMuscleGroup": "Volume by Muscle Group",
      "weightliftingMovements": "Weightlifting Movements",
      "squatMovements": "Squat Movements",
      "intensityDistribution": "Intensity Distribution",
      "perWeek": "{{count}}/week"
    },
    "coachServicePromoCodesManager": {
      "codeAndDiscountRequired": "Code and discount are required",
      "discountRange": "Discount must be between 1 and 100",
      "maxUsesMin": "Max uses must be at least 1",
      "codeAlreadyExists": "This code already exists",
      "createFailed": "Failed to create promo code",
      "title": "Promo Codes",
      "createCode": "Create Code",
      "codeLabel": "Code",
      "codePlaceholder": "e.g., WELCOME20",
      "discountLabel": "Discount %",
      "maxUsesLabel": "Max Uses",
      "restrictToTier": "Restrict to tier (optional)",
      "allTiers": "All tiers",
      "validFrom": "Valid From (optional)",
      "validUntil": "Valid Until (optional)",
      "creating": "Creating...",
      "emptyState": "No promo codes yet. Create codes to offer discounts on your coaching services.",
      "percentOff": "{{percent}}% off",
      "tierOnly": "{{tier}} only",
      "singleUse": "Single use",
      "usedTimes": "Used {{used}} times",
      "usedTimesLimited": "Used {{used}}/{{max}} times",
      "expiresOn": " \u00b7 Expires {{date}}",
      "deactivate": "Deactivate",
      "activate": "Activate"
    },
    "coachReviewsPage": {
      "loading": "Loading reviews...",
      "title": "Reviews",
      "subtitle": "Reviews from your athletes and program subscribers",
      "avg": "avg",
      "reviewCount_one": "{{count}} review",
      "reviewCount_other": "{{count}} reviews",
      "filterAll": "All ({{count}})",
      "filterCoach": "Coach ({{count}})",
      "filterPrograms": "Programs ({{count}})",
      "noReviewsTitle": "No Reviews Yet",
      "noReviewsBody": "Reviews will appear here when athletes rate your coaching or programs.",
      "anonymous": "Anonymous",
      "badgeCoach": "Coach",
      "badgeProgram": "Program",
      "reportReview": "Report this review",
      "yourReply": "Your reply",
      "replyPlaceholder": "Write a reply (max 300 chars)...",
      "reply": "Reply"
    },
    "coachingCallPickerModal": {
      "title": "Book a Coaching Call",
      "withCoach": "with {{name}}",
      "bookedTitle": "Coaching Call Booked!",
      "bookedBody": "Your session with {{name}} is confirmed. You'll receive the meeting details by email.",
      "noSlots": "No available time slots right now. Ask {{name}} to add more availability.",
      "durationMin_one": "{{count}} min",
      "durationMin_other": "{{count}} min",
      "free": "Free",
      "selectDate": "Select a date",
      "availableTimes": "Available times",
      "booking": "Booking...",
      "confirmBooking": "Confirm Booking"
    },
    "inquiryCard": {
      "followUpSent": "Follow-up sent",
      "status": {
        "new": "New",
        "contacted": "Contacted",
        "qualified": "Qualified",
        "converted": "Converted",
        "closed": "Closed"
      },
      "inApp": "In App",
      "viaChannel": "via {{channel}}",
      "wantsToCall": "Wants to call: <b>{{date}}</b> at <b>{{time}}</b>",
      "introCallConfirmed": "Intro call confirmed: <b>{{date}}</b> at <b>{{time}}</b>",
      "introCallBooked": "Intro call booked: <b>{{date}}</b> at <b>{{time}}</b>",
      "joinMeet": "Join Meet",
      "questionnaireAnswers_one": "{{count}} questionnaire answer",
      "questionnaireAnswers_other": "{{count}} questionnaire answers",
      "confirmAndSendEmail": "Confirm & Send Email",
      "sendConfirmation": "Send Confirmation",
      "introCall": "Intro Call",
      "message": "Message",
      "email": "Email",
      "sendTiers": "Send Tiers",
      "setUpTiers": "Set up tiers",
      "setUpTiersHint": "Set up a service to send your tiers",
      "convertToClient": "Convert to Client"
    },
    "coachProfileEditorPage": {
      "steps": {
        "services": {
          "label": "Services & Pricing",
          "sub": "Tiers, questionnaires & billing"
        },
        "onboarding": {
          "label": "Onboarding Process",
          "sub": "Questionnaires, videos & scheduling"
        }
      },
      "mustBeLoggedIn": "You must be logged in to edit your coach profile",
      "profileNotFound": "Coach profile not found. Please contact support.",
      "loadFailed": "Failed to load coach profile",
      "heading": "Athlete Onboarding & Payment Setup",
      "subheading": "Configure everything athletes see before they sign up",
      "previewMyPage": "Preview My Page",
      "nextStep": "Next step"
    },
    "coachProgramReviewSummary": {
      "noSharedNotesError": "No shared notes available for this program. Ask your client to enable note sharing in the Workout tab.",
      "comingSoonMessage": "AI-powered program review summary coming soon! This feature will analyze your client's training notes and provide insights on their progress, struggles, and patterns.",
      "generateFailed": "Failed to generate summary. Please try again.",
      "title": "Monthly Program Review",
      "generateTitle": "Generate AI-Powered Insights",
      "generateDescription": "Analyze your client's shared training notes to gain insights into their progress, identify patterns, and receive recommendations for program adjustments.",
      "generateButton": "Generate Monthly Review",
      "analyzing": "Analyzing training notes...",
      "noSharedNotesTitle": "No Shared Notes",
      "analysisComplete": "Analysis Complete",
      "analyzedNotes_one": "Analyzed {{count}} training note from this program.",
      "analyzedNotes_other": "Analyzed {{count}} training notes from this program.",
      "aiInsightsComingSoon": "AI Insights Coming Soon",
      "futureCapabilities": "Future capabilities will include:",
      "capabilitySentiment": "\u2022 Overall sentiment analysis (positive, negative, neutral)",
      "capabilityMovement": "\u2022 Movement-specific insights and technique struggles",
      "capabilityFatigue": "\u2022 Fatigue and recovery pattern detection",
      "capabilityThemes": "\u2022 Recurring themes and progress indicators",
      "capabilityRecommendations": "\u2022 Personalized recommendations for program adjustments",
      "sharedNotesPreview": "Shared Notes Preview",
      "moreNotes_one": "+ {{count}} more note",
      "moreNotes_other": "+ {{count}} more notes"
    },
    "coachReviewsManagement": {
      "title": "Your Reviews",
      "subtitle": "Manage and respond to reviews from your clients",
      "refresh": "Refresh",
      "addReplyFailed": "Failed to add reply"
    },
    "coachPromoPageBuilder": {
      "title": "My Promotional Page",
      "backToDashboard": "Back to Dashboard",
      "exitTemplateEditor": "Exit Template Editor",
      "editingTemplateLabel": "Editing Template:",
      "templateEditBanner": "You are editing the <b>{{template}}</b> template. Changes will apply to all coaches who pick this template. Your own page is not affected.",
      "pleaseSignIn": "Please sign in",
      "coachProfileNotFound": "Coach profile not found",
      "loadFailed": "Failed to load page data",
      "loadingBuilder": "Loading page builder...",
      "somethingWentWrong": "Something went wrong",
      "savingTemplate": "Saving template...",
      "unsavedChanges": "Unsaved changes",
      "templateSaved": "Template saved",
      "saveTemplate": "Save Template",
      "resetPage": "Reset Page",
      "saving": "Saving...",
      "saved": "Saved",
      "errorSaving": "Error saving",
      "viewLive": "View Live",
      "preview": "Preview",
      "unpublish": "Unpublish",
      "publish": "Publish",
      "buildWithAI": "Build with AI",
      "startFromTemplate": "Start from a template",
      "templates": "Templates",
      "finishSetup": "Finish Setup ({{count}} remaining)",
      "setupProfilePhoto": "Profile photo",
      "setupHeroBackground": "Hero background image",
      "setupTestimonials": "Client testimonials",
      "setupTransformations": "Transformation photos",
      "setupGalleryPhotos": "Gallery photos",
      "editBlock": "Edit {{type}} Block",
      "hide": "Hide",
      "addBlock": "+ Add Block",
      "livePreview": "Live Preview",
      "desktopView": "Desktop view",
      "mobileView": "Mobile view",
      "published": "Published",
      "draft": "Draft",
      "resetPageConfirmTitle": "Reset Page?",
      "resetPageConfirmBody": "This will clear all your current blocks and restore the starter template. Your changes will be lost.",
      "chooseTemplate": "Choose a Template",
      "chooseTemplateDescription": "Pick a page layout that matches your coaching style. You can customise everything after.",
      "customised": "customised",
      "blocksAdminCustomised": "{{count}} blocks (admin customised)",
      "blocksSequence": "{{count}} blocks: {{sequence}}",
      "useThisTemplate": "Use This Template",
      "editTemplate": "Edit Template"
    },
    "videoReviewCard": {
      "failedToLoad": "Failed to load",
      "setsLoggedNoDetails": "{{completed}}/{{planned}} sets logged (no details)",
      "noData": "No data",
      "readiness": {
        "ready": "Ready",
        "monitor": "Monitor",
        "reduce": "Reduce"
      },
      "day": "Day {{number}}",
      "athleteNote": "Athlete Note",
      "reviewed": "Reviewed",
      "download": "Download",
      "saved": "Saved",
      "saveToEvolution": "Save to Evolution",
      "saveToEvolutionLibrary": "Save to Evolution Library",
      "label": "Label",
      "category": "Category",
      "categories": {
        "Snatch": "Snatch",
        "Clean & Jerk": "Clean & Jerk",
        "Squats": "Squats",
        "Other": "Other"
      },
      "yourFeedback": "Your Feedback",
      "timestampedNotes_one": "+ {{count}} timestamped note",
      "timestampedNotes_other": "+ {{count}} timestamped notes",
      "annotatedFrame": "Annotated frame",
      "emptyNote": "(empty note)",
      "recordingFullscreen": "Recording in fullscreen\u2026",
      "quickFeedbackPlaceholder": "Quick feedback...",
      "uploading": "Uploading...",
      "send": "Send",
      "sendWithNotes_one": "Send ({{count}} note)",
      "sendWithNotes_other": "Send ({{count}} notes)",
      "voiceNote": "Voice note",
      "recordVideo": "Record video",
      "uploadVideoFile": "Upload video file",
      "timestampNote": "Timestamp Note",
      "timestampNotePlaceholder": "Type your note for this moment...",
      "voiceRecorded": "{{seconds}}s recorded",
      "recordVoice": "Record voice",
      "videoRecorded": "{{seconds}}s video recorded",
      "deleteNote": "Delete note",
      "loadingAudio": "Loading audio...",
      "downloadFeedback": "My feedback",
      "downloadFeedbackTitle": "Download your feedback video",
      "downloadReel": "Full reel",
      "downloadReelTitle": "Create one shareable video: athlete clip, your timestamped notes and your feedback video",
      "downloadCarousel": "Carousel",
      "downloadCarouselTitle": "Create a slideshow video of your annotated frames, notes and voice notes",
      "renderingReel": "Rendering...",
      "reelFailed": "Could not create the feedback reel. Please try again."
    },
    "coachProfileSection": {
      "title": "Public Coach Profile",
      "subtitle": "This information will be visible to users browsing the \"Find a Coach\" section. Make sure to provide a clear description of your coaching style and specializations.",
      "savedTitle": "Your profile has been updated and saved correctly",
      "savedSubtitle": "Changes are now visible to users browsing coaches",
      "profilePictureLabel": "Profile Picture",
      "profilePictureHelp": "Upload a professional photo that will be displayed to users browsing coaches. Max size: 5MB",
      "profileAlt": "Profile",
      "uploadCta": "Click to upload or drag and drop",
      "uploadFormats": "PNG, JPG, GIF up to 5MB",
      "bioLabel": "Bio / Description",
      "bioHelp": "Tell potential clients about your coaching experience, philosophy, and what makes you unique.",
      "bioPlaceholder": "Example: I'm a certified Olympic weightlifting coach with 10+ years of experience. I specialize in helping athletes improve their technique and reach their competitive goals...",
      "bioCharCount": "{{count}} / {{max}} characters",
      "slugLabel": "Public page handle",
      "slugHelp": "This is the web address where athletes find your public page. We set one from your name automatically \u2014 change it here if you'd like a custom handle.",
      "slugPlaceholder": "your-name",
      "slugPreview": "Your handle will be saved as: {{slug}}",
      "slugSave": "Save handle",
      "slugSaving": "Saving\u2026",
      "slugSaved": "Handle saved.",
      "slugError": {
        "empty": "Please enter a handle using letters or numbers.",
        "reserved": "That handle is reserved. Please choose another.",
        "taken": "That handle is already taken. Please choose another.",
        "generic": "Couldn't save your handle. Please try again."
      },
      "specializationsLabel": "Specializations",
      "specializationsHelp": "Select your sport specializations and add additional areas of expertise.",
      "sportSpecializations": "Sport Specializations",
      "additionalSpecializations": "Additional Specializations",
      "additionalSpecializationsHelp": "Add other areas of expertise (e.g., CrossFit, Mobility, Youth Training, etc.)",
      "addSpecializationPlaceholder": "Add a specialization...",
      "noSpecializations": "No specializations added yet. Add at least one to help users find you!",
      "servicesLabel": "Services Offered",
      "servicesHelp": "Select the services you offer to help clients find the right coach for their needs.",
      "noServices": "Select at least one service to help clients understand what you offer.",
      "currencyLabel": "Currency for Template Pricing",
      "currencyHelp": "Select the currency you want to use when setting prices for your public workout templates.",
      "currencyNote": "This currency will be displayed to users when they browse your templates in the marketplace.",
      "saving": "Saving...",
      "saveProfile": "Save Profile",
      "visibilityTitle": "Profile Visibility",
      "visible": "Visible",
      "hidden": "Hidden",
      "visibilityOnDescription": "Your profile is visible in the public coach directory. Users can find and contact you.",
      "visibilityOffDescription": "Your profile is hidden from the coach directory. Existing clients are not affected.",
      "dangerZone": "Danger Zone",
      "dangerZoneDescription": "Permanently delete your coach profile. This action cannot be undone.",
      "deleteProfileButton": "Delete Coach Profile",
      "deleteModalTitle": "Delete Your Coach Profile?",
      "deleteModalSubtitle": "This action is permanent and cannot be undone.",
      "willBeDeleted": "What will be deleted:",
      "deletedProfileBio": "Your coach profile and bio",
      "deletedClientRelationships": "Client relationships ({{count}} clients)",
      "deletedScheduledSessions": "Scheduled sessions ({{count}} sessions)",
      "deletedQuestionnaires": "Intake questionnaires and client responses",
      "deletedExerciseVideos": "Custom exercise videos",
      "willNotBeDeleted": "What will NOT be deleted:",
      "keptUserAccount": "Your user account (you can still log in as an athlete)",
      "keptWorkoutPlans": "Workout plans you created (will be preserved but unlinked)",
      "keptClientHistory": "Client workout history and progress",
      "alsoDeletePlans": "Also delete all workout plans I created ({{count}} templates)",
      "alsoDeletePlansWarning": "Warning: This will also remove plans from clients currently using them.",
      "typeToConfirm": "Type <b>DELETE</b> to confirm:",
      "typeDeleteHere": "Type DELETE here",
      "deleting": "Deleting...",
      "cropperTitle": "Adjust Your Profile Picture",
      "cropperHelp": "Drag to reposition and use the zoom buttons to adjust your photo",
      "cropPreviewAlt": "Crop preview",
      "zoomOut": "Zoom Out",
      "zoomIn": "Zoom In",
      "savePhoto": "Save Photo",
      "visibilityUpdateFailed": "Failed to update profile visibility. Please try again.",
      "deletionInfoFailed": "Failed to load deletion information. Please try again.",
      "deleteProfileFailed": "Failed to delete coach profile. Please try again.",
      "uploadImageOnly": "Please upload an image file",
      "imageTooLarge": "Image size must be less than 5MB",
      "canvasContextError": "Could not get canvas context",
      "notAuthenticated": "Not authenticated",
      "uploadImageFailed": "Failed to upload image. Please try again.",
      "imageSaveFailed": "Image uploaded but profile could not be saved. Please try again.",
      "uploadPictureFailed": "Failed to upload profile picture",
      "profileUpdateFailed": "Failed to update profile. Please try again."
    },
    "clientSummaryList": {
      "title": "Client Summary",
      "refresh": "Refresh",
      "loadingClients": "Loading clients...",
      "loadFailed": "Failed to load clients",
      "planNeedsExtension": "Plan needs extension",
      "noSportType": "No sport type",
      "noCategory": "No category",
      "noActiveProgram": "No active program",
      "latestLifts": "Latest Lifts",
      "snatch": "Snatch:",
      "cleanJerk": "C&J:",
      "avgFeel": "Avg Feel",
      "last50Sets": "Last 50 sets",
      "missed": "Missed",
      "fiveDays": "5 days",
      "remaining": "Remaining",
      "sessions": "sessions",
      "noActive": "No active",
      "program": "program",
      "topPr": "Top PR",
      "noRecords": "No records",
      "feeling": "Feeling",
      "feelingExcellent": "Excellent: {{percent}}%",
      "feelingGood": "Good: {{percent}}%",
      "feelingModerate": "Moderate: {{percent}}%",
      "feelingHard": "Hard: {{percent}}%",
      "feelingTerrible": "Terrible: {{percent}}%",
      "next": "Next",
      "noSessions": "No sessions",
      "filterAll": "All",
      "filterPt": "PT",
      "filterGroup": "Group",
      "filterGroupTraining": "Group Training",
      "filterProgramming": "Programming",
      "plansLabel": "Plans:",
      "filterTemplates": "Templates",
      "filterPersonal": "Personal",
      "noClientsFound": "No clients found.",
      "noClientsForCategory": "You don't have any clients planned for {{category}}.",
      "noClientsForFilters": "No clients found for the selected filters."
    },
    "weeklyCalendar": {
      "title": "Weekly Calendar",
      "prevShort": "Prev",
      "today": "Today",
      "ptSessionLabel": "PT session",
      "groupLabel": "Group \u2013 {{group}}",
      "programmingLabel": "Programming \u2013 {{task}}",
      "sessionCount": "{{count}} session",
      "sessionCount_other": "{{count}} sessions",
      "addSession": "Add Session",
      "overlapsSession": "Overlaps session",
      "minOneHour": "Min 1 hour",
      "legendPtSession": "PT Session",
      "legendGroupTraining": "Group Training",
      "legendProgramming": "Programming",
      "typeLabel": "Type:",
      "typePersonalTraining": "Personal Training",
      "typeGroupTraining": "Group Training",
      "typeProgramming": "Programming",
      "startLabel": "Start:",
      "endLabel": "End:",
      "durationLabel": "Duration:",
      "durationMinutes": "{{count}} minute",
      "durationMinutes_other": "{{count}} minutes",
      "deleting": "Deleting...",
      "deleteSession": "Delete Session",
      "deleteFailed": "Failed to delete session"
    },
    "transformationsBlockEditor": {
      "sectionTitleLabel": "Section Title (Optional)",
      "sectionTitlePlaceholder": "Client Results",
      "importFromLibrary": "Import from Client Evolution Library",
      "selectBeforeAfterVideos": "Select Before/After Videos",
      "loadingClients": "Loading clients...",
      "selectClient": "Select Client",
      "chooseClientOption": "\u2014 choose a client \u2014",
      "loadingVideos": "Loading videos...",
      "noEvolutionVideos": "No evolution videos saved for this client.",
      "before": "Before",
      "after": "After",
      "addToPage": "Add to Page",
      "importing": "Importing...",
      "copyingMedia": "Copying video {{current}} of {{total}}...",
      "importFailed": "Couldn't import these clips \u2014 please try again.",
      "transformationCards": "Transformation Cards ({{count}})",
      "cardLabel": "Card {{number}}",
      "cardTitlePlaceholder": "Client name or title",
      "mediaType": {
        "photo": "Photo",
        "video": "Video",
        "text": "Text"
      },
      "descriptionPlaceholder": "Description (optional)",
      "metricsLabel": "Metrics (Before \u2192 After)",
      "metricLabelPlaceholder": "Label (e.g., Snatch)",
      "beforeValuePlaceholder": "Before (e.g., 100kg)",
      "afterValuePlaceholder": "After (e.g., 120kg)",
      "addMetric": "+ Add Metric",
      "addCard": "Add Card"
    },
    "successStoriesBlockEditor": {
      "sectionTitleLabel": "Section Title (Optional)",
      "sectionTitlePlaceholder": "Success Stories",
      "subtitleLabel": "Subtitle (Optional)",
      "subtitlePlaceholder": "Real athletes. Real progress.",
      "importFromClient": "Import from Client",
      "importTitle": "Import a Success Story",
      "loadingClients": "Loading clients...",
      "selectClient": "Select Client",
      "chooseClientOption": "\u2014 choose a client \u2014",
      "tabVideos": "Evolution Videos",
      "tabPRs": "PR Progression",
      "loadingVideos": "Loading videos...",
      "noEvolutionVideos": "No evolution videos saved for this client.",
      "loadingPRs": "Loading PR history...",
      "noPRHistory": "No PR history found for this client.",
      "prPoints": "{{count}} PRs",
      "before": "Before",
      "after": "After",
      "afterOptional": "After (optional)",
      "consentLabel": "I confirm this athlete is OK with being featured publicly",
      "consentRequired": "Check the consent box before adding this story.",
      "addToPage": "Add Story to Page",
      "importing": "Importing...",
      "copyingMedia": "Copying video {{current}} of {{total}}...",
      "importFailed": "Couldn't import this story \u2014 please try again.",
      "loadFailed": "Couldn't load this client's data. Please try again.",
      "storyCards": "Story Cards ({{count}})",
      "cardLabel": "Story {{number}}",
      "athleteNamePlaceholder": "Athlete name (e.g. Sarah M.)",
      "headlinePlaceholder": "Headline (e.g. Snatch: 70kg \u2192 92kg in 8 months)",
      "exerciseNamePlaceholder": "Exercise (optional)",
      "mediaType": {
        "none": "No media",
        "photo": "Photo",
        "video": "Video"
      },
      "beforeLabelPlaceholder": "Before label (e.g. Jan 2025 \u2014 70kg)",
      "afterLabelPlaceholder": "After label (e.g. Sep 2025 \u2014 92kg)",
      "quotePlaceholder": "Athlete quote (optional)",
      "metricsLabel": "Metrics (Before \u2192 After)",
      "metricLabelPlaceholder": "Label (e.g., Snatch)",
      "beforeValuePlaceholder": "Before (e.g., 70kg)",
      "afterValuePlaceholder": "After (e.g., 92kg)",
      "addMetric": "+ Add Metric",
      "prChartAttached": "PR chart attached ({{count}} points)",
      "mainLiftsChartsAttached": "{{count}} main-lift charts attached",
      "mainLiftsHeader": "Main lifts",
      "otherLiftsHeader": "Other lifts",
      "mainLiftsCardTitle": "Main Lifts",
      "sports": {
        "weightlifting": "Weightlifting",
        "powerlifting": "Powerlifting"
      },
      "removeChart": "Remove chart",
      "consentCardLabel": "Athlete approved public feature",
      "addCard": "Add Story"
    },
    "clientSidebar": {
      "addClient": "Add Client",
      "addActiveClient": "Add Active Client",
      "addGroupOnlyClient": "Add Group-Only Client",
      "filterAll": "All",
      "filterPt": "PT",
      "filterGroup": "Group",
      "filterProgram": "Program",
      "searchPlaceholder": "Search by email...",
      "searchGo": "Go",
      "searchMinChars": "Enter at least 3 characters to search",
      "searchFailed": "Failed to search users",
      "addSuccess": "Added {{email}} as active client!",
      "alreadyClient": "This user is already a client",
      "addFailed": "Failed to add client",
      "noName": "No name",
      "removeGroupOnlyConfirm": "Remove \"{{name}}\" from group-only clients?",
      "pendingAttendance": "{{count}} pending attendance",
      "groupSession": "Group Session",
      "acceptedCount": "{{count}} accepted",
      "pendingCount": "{{count}} pending",
      "declinedCount": "{{count}} declined",
      "noClientsMatch": "No clients match filter",
      "badgeGroupOnly": "Group Only",
      "invitedTooltip": "Invited by email \u2014 they'll become a full client once they create an account and accept.",
      "pendingTooltip": "Waiting for athlete to accept. Plans you build will only appear on their side after they accept.",
      "unreadMessagesTooltip": "Unread messages",
      "pendingVideoTooltip": "Pending video feedback",
      "removeGroupOnlyTooltip": "Remove group-only client"
    },
    "groupTemplateManager": {
      "title": "Group Templates",
      "subtitle": "Create and manage group templates for quick session creation.",
      "dismiss": "Dismiss",
      "templatesHeading": "Templates",
      "namePlaceholder": "Template name",
      "descriptionPlaceholder": "Description (optional)",
      "capacityPlaceholder": "Default capacity (optional)",
      "creating": "Creating...",
      "noTemplates": "No templates yet. Create one to get started.",
      "memberCount_one": "{{count}} member",
      "memberCount_other": "{{count}} members",
      "defaultCapacity_one": "Default capacity: {{count}}",
      "defaultCapacity_other": "Default capacity: {{count}}",
      "addMember": "Add Member",
      "noMembers": "No members yet.",
      "noMembersHint": "Add members to this template.",
      "unknownMember": "Unknown",
      "groupOnlyBadge": "Group-only",
      "allClientsMembers": "All clients are already members of this template.",
      "activeClients": "Active Clients",
      "groupOnlyClients": "Group-Only Clients",
      "selectTemplatePrompt": "Select a template to view members",
      "nameRequired": "Template name is required",
      "loadFailed": "Failed to load templates",
      "createFailed": "Failed to create template",
      "updateFailed": "Failed to update template",
      "deleteFailed": "Failed to delete template",
      "confirmDelete": "Are you sure you want to delete this template?",
      "addMemberFailed": "Failed to add member",
      "removeMemberFailed": "Failed to remove member"
    },
    "sessionDetailView": {
      "loadFailed": "Failed to load session details",
      "notFound": "Session not found",
      "confirmRestore": "Are you sure you want to restore this session?",
      "restoreFailed": "Failed to restore session",
      "confirmCancel": "Are you sure you want to cancel this session?",
      "reasonPrompt": "Optional reason (shown to athletes who had accepted):",
      "cancelFailed": "Failed to cancel session",
      "cancelFutureFailed": "Failed to cancel future sessions",
      "confirmDelete": "Delete this session permanently? This cannot be undone.",
      "deleteFailed": "Failed to delete session",
      "statusConfirmed": "Confirmed",
      "statusDeclined": "Declined",
      "statusPending": "Pending",
      "personalTraining": "Personal Training",
      "groupTraining": "Group Training",
      "capacity": "Capacity: {{total}} / {{max}} participants",
      "clientResponse": "Client Response",
      "responses": "Responses",
      "noParticipants": "No participants",
      "recurringSeries": "This is part of a recurring series",
      "editSession": "Edit Session",
      "updating": "Updating...",
      "restoreSession": "Restore Session",
      "cancelSession": "Cancel Session",
      "deleting": "Deleting...",
      "deleteSessionPermanently": "Delete Session Permanently",
      "cancelRecurringTitle": "Cancel Recurring Session",
      "cancelRecurringBody": "This session is part of a recurring series. What would you like to do?",
      "cancelThisOnly": "Cancel this session only",
      "cancelThisOnlyDesc": "Other sessions in the series will remain active",
      "cancelAllFuture": "Cancel this and all future sessions",
      "cancelAllFutureDesc": "All sessions from this date onwards will be cancelled",
      "goBack": "Go back"
    },
    "testimonialsBlockEditor": {
      "askClientsTitle": "Ask clients for a review",
      "askClientsDescription": "Pick from your active clients \u2014 they'll see an in-app prompt next time they open the app.",
      "requestButton": "Request",
      "myCoachingLabel": "My coaching",
      "sourceLabel": "Testimonials Source",
      "modeManual": "Manual",
      "modeLinked": "Select Reviews",
      "modeAll": "All Reviews",
      "allModeHint": "All your published reviews will appear automatically.",
      "showSatisfactionLabel": "Show client satisfaction scores",
      "showSatisfactionHint": "Adds your average Coaching Satisfaction scores (satisfaction, progress, would recommend) from 2+ clients. Averages only, no names.",
      "selectReviewsLabel": "Select Reviews to Display",
      "loadingReviews": "Loading reviews...",
      "noReviewsTitle": "No reviews yet",
      "noReviewsHint": "Reviews appear when your athletes submit feedback on completed programs. Share your promo page link with past clients to collect reviews.",
      "sectionTitleLabel": "Section Title (Optional)",
      "sectionTitlePlaceholder": "What Clients Say",
      "layoutLabel": "Layout",
      "layoutCards": "Cards Grid",
      "layoutCarousel": "Carousel",
      "testimonialsCount": "Testimonials ({{count}})",
      "testimonialNumber": "Testimonial {{number}}",
      "screenshotModeOn": "Screenshot mode \u2014 image is the testimonial",
      "screenshotModeOff": "Use screenshot as testimonial",
      "screenshotAlt": "Testimonial screenshot",
      "uploading": "Uploading...",
      "uploadScreenshot": "Upload screenshot",
      "addPhotoVideo": "Add Photo/Video",
      "clientNamePlaceholder": "Client Name",
      "quotePlaceholder": "Their testimonial...",
      "programNamePlaceholder": "Program name (optional)",
      "addTestimonial": "Add Testimonial"
    },
    "heroBlockEditor": {
      "templateCenteredLabel": "Centered Overlay",
      "templateCenteredDescription": "Text centered over background",
      "templateImageLeftLabel": "Image Left",
      "templateImageLeftDescription": "Image on left, text on right",
      "templateImageRightLabel": "Image Right",
      "templateImageRightDescription": "Text on left, image on right",
      "layoutTemplateLabel": "Layout Template",
      "displayNameLabel": "Display Name",
      "displayNamePlaceholder": "Your Name",
      "profilePhotoLabel": "Profile Photo",
      "profileAlt": "Profile",
      "changePhoto": "Change photo",
      "uploading": "Uploading...",
      "uploadProfilePhoto": "Upload profile photo",
      "taglineLabel": "Tagline",
      "taglinePlaceholder": "Your coaching philosophy or headline...",
      "ctaButtonLabel": "CTA Button Text",
      "ctaButtonPlaceholder": "Get Started",
      "backgroundMediaLabel": "Background Image/Video",
      "backgroundAlt": "Background",
      "uploadImageOrVideo": "Upload image or video",
      "socialLinksLabel": "Social Links"
    },
    "sessionClientSummary": {
      "title": "Upcoming Sessions",
      "loadFailed": "Failed to load sessions",
      "noSessions": "No sessions scheduled this week",
      "ptSession": "PT Session",
      "groupTraining": "Group Training",
      "bodyweight": "Bodyweight",
      "foodLog": "Food Log",
      "mobility": "Mobility",
      "noParticipants": "No participants in this session"
    },
    "addGroupOnlyClientModal": {
      "title": "Add Group-Only Client",
      "description": "Add an existing user as a group-only client. They won't appear in your Active Clients list.",
      "searchByEmail": "Search by Email",
      "emailSearchPlaceholder": "Enter email address...",
      "searching": "Searching...",
      "noName": "No name",
      "activeClientBadge": "Active Client",
      "alreadyAddedBadge": "Already Added",
      "selectedLabel": "Selected:",
      "changeSelection": "Change selection",
      "displayNameLabel": "Display Name *",
      "displayNamePlaceholder": "Name shown in session lists",
      "emailLabel": "Email",
      "emailPlaceholder": "Contact email (optional)",
      "phoneLabel": "Phone",
      "phonePlaceholder": "Contact phone (optional)",
      "notesLabel": "Notes",
      "notesPlaceholder": "Any notes about this client (optional)",
      "adding": "Adding...",
      "addClient": "Add Client",
      "minChars": "Please enter at least 3 characters to search",
      "searchFailed": "Failed to search users",
      "selectUser": "Please select a user",
      "displayNameRequired": "Display name is required",
      "alreadyGroupOnly": "This user is already a group-only client",
      "addFailed": "Failed to add client"
    },
    "coachPlanCard": {
      "unreadMessages": "Unread messages",
      "pendingVideoFeedback": "Pending video feedback",
      "unreadQuestionnaires": "Unread questionnaires",
      "moreActions": "More actions",
      "editPlanDetails": "Edit plan details",
      "archiveClient": "Archive client",
      "templateBadge": "Template",
      "duplicateTemplate": "Duplicate template",
      "enrolledCount": "{{count}} enrolled",
      "draftNoClient": "{{trainingType}} \u00b7 no client",
      "draftBadge": "Draft",
      "assignToClient": "Assign to client",
      "archiveDraft": "Archive draft",
      "assignedTeamMember": "Assigned team member",
      "pendingAcceptanceTooltip": "Waiting for the athlete to accept. You can prep a plan now \u2014 it appears on their side once they accept.",
      "pendingAcceptance": "Pending acceptance",
      "noActivePlan": "No active plan",
      "preparePlan": "Prepare plan",
      "createPlan": "Create plan",
      "invitedNotJoined": "Invited \u00b7 not joined yet",
      "invitedNotJoinedTooltip": "This athlete hasn't joined yet. Set up their account to start programming \u2014 they claim it when they sign up.",
      "startProgramming": "Start programming",
      "notJoined": "Not joined yet",
      "notJoinedTooltip": "You set up this athlete's account \u2014 they'll get access when they accept your invite and sign up.",
      "demoBadge": "Demo",
      "demoTooltip": "Example client with sample data so you can see the product with a full history. Remove it any time."
    },
    "editSessionModal": {
      "title": "Edit Session",
      "endAfterStart": "End time must be after start time",
      "saveFailed": "Failed to save changes",
      "recurringSession": "This is a recurring session",
      "editThisOnly": "Edit this session only",
      "editThisOnlyHint": "Changes will only apply to this occurrence",
      "editAllInSeries": "Edit all sessions in series",
      "editAllInSeriesHint": "Changes will apply to all future occurrences",
      "dateLabel": "Date",
      "dateLockedHint": "Date cannot be changed when editing all sessions",
      "startTime": "Start Time",
      "endTime": "End Time",
      "duration": "Duration: {{minutes}} minutes",
      "groupNameLabel": "Group Name",
      "groupNamePlaceholder": "e.g., Advanced Weightlifting",
      "sportTypeLabel": "Sport Type",
      "sportWeightlifting": "Weightlifting",
      "sportPowerlifting": "Powerlifting",
      "sportHyrox": "Hyrox",
      "sportHypertrophy": "Hypertrophy",
      "saving": "Saving...",
      "saveChanges": "Save Changes"
    },
    "externalSiteBlockEditor": {
      "presentationFeatured": "Featured",
      "presentationCard": "Card",
      "presentationButton": "Button",
      "importAllFilled": "We read your site but everything's already filled in.",
      "importFailed": "Couldn't read that site \u2014 fill the fields in manually.",
      "reassuranceBanner": "Already have a site or store? <b>Keep it</b> \u2014 don't throw away your work. We'll feature it here so your page becomes the hub: your store keeps selling your plans, and you add booking, video feedback and programs right alongside it.",
      "urlLabel": "Website / Store URL",
      "urlInvalid": "Enter a full public URL starting with https://",
      "readingSite": "Reading your site\u2026",
      "autoFill": "Auto-fill from my site",
      "titleLabel": "Title",
      "titlePlaceholder": "My Online Store",
      "pitchLabel": "Short Pitch (optional)",
      "pitchPlaceholder": "Grab my training PDFs and gear over on my store.",
      "buttonTextLabel": "Button Text",
      "buttonTextPlaceholder": "Visit My Store",
      "presentationLabel": "Presentation",
      "displayModeLabel": "Display mode",
      "embedInline": "Embed the site inline",
      "embedHintCanEmbed": "This provider can be shown inline. Otherwise we link out to it.",
      "embedHintCannotEmbed": "This site can't be embedded (most stores block it) \u2014 we'll show it as a card that opens in a new tab.",
      "embedHintDefault": "Most sites block embedding; we feature them as a card/button instead.",
      "coverImageLabel": "Cover Image (optional)",
      "coverImageAlt": "Cover",
      "uploading": "Uploading...",
      "uploadCoverImage": "Upload cover image"
    },
    "frameAnnotationEditor": {
      "title": "Annotate Frame",
      "loadingFrame": "Loading frame...",
      "line": "Line",
      "circle": "Circle",
      "angle": "Angle",
      "angleHintVertex": "Tap the joint (e.g. the knee)",
      "angleHintFirst": "Tap the end of the first limb",
      "angleHintSecond": "Tap the end of the second limb",
      "angleHintAdjust": "Drag the dots to fine-tune",
      "thick": "Thick",
      "thin": "Thin",
      "snapTitle": "Snap straight lines to 45\u00b0 angles",
      "snap45": "Snap 45\u00b0",
      "undo": "Undo",
      "clearAll": "Clear all",
      "textPlaceholder": "Explain the annotation (optional)...",
      "voiceRecorded": "{{seconds}}s recorded",
      "voice": "Voice"
    },
    "introCallBlockEditor": {
      "sectionTitle": "Section Title",
      "titlePlaceholder": "Book an Intro Call",
      "subtitleLabel": "Subtitle (Optional)",
      "subtitlePlaceholder": "Schedule a free introductory session",
      "linkedQuestionnaire": "Linked Questionnaire",
      "manageTemplates": "Manage templates",
      "noQuestionnaireOption": "No questionnaire \u2014 just name & email",
      "questionCount_one": "{{count}} question",
      "questionCount_other": "{{count}} questions",
      "videoCountSuffix_one": ", {{count}} video",
      "videoCountSuffix_other": ", {{count}} video",
      "systemSuffix": " \u2014 System",
      "visitorsWillAnswer": "Visitors will answer \"{{name}}\" when booking an intro call",
      "visitorsNameEmailOnly": "Visitors will only provide their name and email when booking",
      "availability": "Availability",
      "availabilityConfigured": "Availability configured",
      "slot_one": "slot",
      "slot_other": "slots",
      "day_one": "day",
      "day_other": "days",
      "slotsAcrossDays": "{{slots}} {{slotLabel}} across {{days}} {{dayLabel}}",
      "minutes_one": "{{count}} min",
      "minutes_other": "{{count}} min",
      "free": "Free",
      "editAvailability": "Edit Availability",
      "noAvailabilityYet": "No intro call availability set up yet",
      "noAvailabilityHint": "Visitors won't see any available times until you configure your availability.",
      "setUpAvailability": "Set Up Availability",
      "athletePreview": "Athlete Preview",
      "googleCalendarLabel": "Google Calendar:",
      "googleCalendarNotConnected": "Google Calendar not connected",
      "googleCalendarHint": "Connect via the Intro Call Setup to auto-generate Meet links"
    },
    "mediaGalleryBlockEditor": {
      "sectionTitle": "Section Title (Optional)",
      "titlePlaceholder": "Gallery",
      "columns": "Columns",
      "columnCount_one": "{{count}} column",
      "columnCount_other": "{{count}} columns",
      "media_one": "Media ({{count}})",
      "media_other": "Media ({{count}})",
      "uploading": "Uploading...",
      "uploadImagesOrVideos": "Upload images or videos",
      "caption": "Caption",
      "uploadFailed": "The upload failed. Check your connection and try again. Photos already added are safe.",
      "sessionExpired": "Your session has expired. Sign in again, then retry the upload.",
      "retryUpload": "Retry upload"
    },
    "inPersonCoachingBlockEditor": {
      "sectionTitleLabel": "Section Title",
      "titlePlaceholder": "Train With Me In Person",
      "subtitleLabel": "Subtitle (Optional)",
      "subtitlePlaceholder": "Book a one-on-one session",
      "descriptionLabel": "Description (Optional)",
      "descriptionPlaceholder": "Tell visitors what to expect from your in-person coaching sessions...",
      "highlightFeaturesLabel": "Highlight Features",
      "addFeaturePlaceholder": "Add a feature...",
      "showPricingLabel": "Show Pricing",
      "showPricingOn": "Starting price from your slots will be displayed",
      "showPricingOff": "Price will not be shown",
      "buttonTextLabel": "Button Text",
      "ctaPlaceholder": "Book a Session",
      "bookingAvailabilityLabel": "Booking Availability",
      "slotsConfigured": "Coaching slots configured",
      "rulesSummary": "{{rules}} rule(s) across {{days}} day(s)",
      "privateCount": "{{count}} private",
      "groupCount": "{{count}} group",
      "fromPrice": "From {{price}}",
      "noSlotsTitle": "No coaching slots configured",
      "noSlotsHint": "The 2-week calendar will appear empty until you set up availability rules. Intro call and coaching call slots are excluded from this block.",
      "configureSlots": "Configure coaching slots",
      "manageRules": "Manage availability rules"
    },
    "programsBlockEditor": {
      "free": "Free",
      "sectionTitleLabel": "Section Title (Optional)",
      "titlePlaceholder": "My Programs",
      "showAllTitle": "Show all programs",
      "showAllHint": "Automatically display all your public programs",
      "selectProgramsLabel": "Select Programs to Display",
      "noProgramsTitle": "No published programs yet",
      "noProgramsHint": "Create a program template and publish it to display it here.",
      "goToTemplates": "Go to Program Templates",
      "askReviewTitle": "Ask enrolled athletes for a review of this program",
      "ask": "Ask",
      "displayOrderLabel": "Display Order"
    },
    "leadMagnetBlockEditor": {
      "titleLabel": "Title",
      "titlePlaceholder": "Get Your Free Plan",
      "subtitleLabel": "Subtitle",
      "subtitlePlaceholder": "Enter your name and email \u2014 I'll send it right away.",
      "buttonTextLabel": "Button Text",
      "buttonTextPlaceholder": "Download Now",
      "successMessageLabel": "Success Message",
      "successMessagePlaceholder": "Check your inbox!",
      "fileToDownloadLabel": "File to Download",
      "fileUploadHint": "Upload a PDF or file that visitors can download in exchange for their email.",
      "uploadedFile": "Uploaded file",
      "uploading": "Uploading...",
      "uploadFile": "Upload PDF or file",
      "coverImageLabel": "Cover Image (optional)",
      "coverAlt": "Cover",
      "uploadCoverImage": "Upload cover image"
    },
    "aboutBlockEditor": {
      "sectionTitleLabel": "Section Title (Optional)",
      "titlePlaceholder": "About Me",
      "contentLabel": "Content",
      "contentPlaceholder": "Tell your story, share your coaching philosophy, and connect with potential clients...",
      "mediaLabel": "Image/Video (Optional)",
      "mediaAlt": "About",
      "positionLabel": "Position",
      "position_left": "Left",
      "position_right": "Right",
      "position_top": "Top",
      "position_bottom": "Bottom",
      "uploading": "Uploading...",
      "uploadMedia": "Upload image or video"
    },
    "linkCardsBlockEditor": {
      "sectionTitleLabel": "Section Title (optional)",
      "sectionTitlePlaceholder": "My Links",
      "columns": "Columns",
      "linkCardsCount": "Link Cards ({{count}})",
      "cardLabel": "Card {{index}}",
      "uploading": "Uploading...",
      "uploadImage": "Upload image",
      "linkTitlePlaceholder": "Link title",
      "descriptionPlaceholder": "Short description (optional)",
      "addLinkCard": "Add Link Card"
    },
    "sessionClientCard": {
      "statusConfirmed": "Confirmed",
      "statusDeclined": "Declined",
      "statusPending": "Pending",
      "none": "None",
      "plan": "Plan:",
      "noActivePlan": "No active plan",
      "weekCompletion": "Week Completion:",
      "missed": "Missed:",
      "moreCount": "(+{{count}} more)",
      "painLogs": "Pain Logs:",
      "thisWeekCount": "{{count}} this week",
      "weight": "Weight:",
      "noData": "No data",
      "avgDaily": "Avg Daily:",
      "calProtein": "{{calories}} kcal, {{protein}}g protein",
      "mobilityScores": "Mobility Scores"
    },
    "videoFeedbackBlockEditor": {
      "sectionTitle": "Section Title",
      "sectionTitlePlaceholder": "Get a Video Review",
      "subtitle": "Subtitle",
      "subtitlePlaceholder": "Upload your lifts and get coach-grade feedback within days.",
      "ctaButtonText": "CTA Button Text",
      "ctaPlaceholder": "Book a Review",
      "tiersToFeature": "Tiers to feature",
      "resetShowAll": "Reset (show all)",
      "tiersHint": "Pick which video feedback services to surface here. Leave empty to show every active one-time video feedback tier you've created.",
      "loadingTiers": "Loading your service tiers\u2026",
      "noTiersTitle": "No video feedback tiers yet",
      "noTiersBody": "Create a <b>service tier</b> with type \"Video Feedback\" and payment type \"One-time\" in your Services settings, attach a questionnaire with video prompts, then come back here.",
      "deliveryWithin_one": "Delivery within {{count}} day",
      "deliveryWithin_other": "Delivery within {{count}} days",
      "videosPerSubmission_one": "{{count}} video per submission",
      "videosPerSubmission_other": "{{count}} videos per submission",
      "headsUp": "Heads up",
      "recurringWarning_one": "You have {{count}} video-feedback tier set to \"Subscription\". The Video Feedback block only shows one-time-pay tiers \u2014 switch their payment type to \"One-time\" to feature them here.",
      "recurringWarning_other": "You have {{count}} video-feedback tiers set to \"Subscription\". The Video Feedback block only shows one-time-pay tiers \u2014 switch their payment type to \"One-time\" to feature them here."
    },
    "credentialsBlockEditor": {
      "sectionTitleLabel": "Section Title (Optional)",
      "sectionTitlePlaceholder": "Credentials & Experience",
      "credentialsCount": "Credentials ({{count}})",
      "credentialLabel": "Credential {{index}}",
      "uploading": "Uploading...",
      "addLogo": "Add Logo",
      "titlePlaceholder": "Certification/Credential Title",
      "issuerPlaceholder": "Issuing Organization",
      "yearPlaceholder": "Year (e.g., 2023)",
      "addCredential": "Add Credential"
    },
    "customTextBlockEditor": {
      "sectionTitle": "Section Title",
      "sectionTitlePlaceholder": "Section Title",
      "content": "Content",
      "contentPlaceholder": "Write your content here...",
      "lineBreaksPreserved": "Line breaks will be preserved",
      "backgroundImageLabel": "Background Image (Optional)",
      "backgroundAlt": "Background",
      "darkenOverlay": "Darken overlay ({{value}}%)",
      "blur": "Blur ({{value}}px)",
      "uploading": "Uploading...",
      "uploadBackground": "Upload background image"
    },
    "contactCTABlockEditor": {
      "noIntakeTitle": "No intake questionnaire set up",
      "noIntakeBody": "This button won't do anything useful for visitors until you create a questionnaire.",
      "setUpIntake": "Set up your intake questionnaire",
      "buttonTextLabel": "Button Text",
      "buttonTextPlaceholder": "Get in Touch",
      "subtitleLabel": "Subtitle (Optional)",
      "subtitlePlaceholder": "Ready to start your journey?",
      "buttonStyleLabel": "Button Style",
      "stylePrimary": "Primary",
      "styleSecondary": "Secondary",
      "questionnaireLabel": "Questionnaire",
      "questionnaireHelp": "Which intake questionnaire should appear when someone clicks this button?",
      "useDefaultQuestionnaire": "Use default intake questionnaire",
      "noQuestionnaire": "No questionnaire",
      "questionCount_one": "{{count}} question",
      "questionCount_other": "{{count}} questions",
      "videoCountSuffix_one": ", {{count}} video",
      "videoCountSuffix_other": ", {{count}} videos",
      "systemSuffix": " \u2014 System",
      "showIntroCallTitle": "Show intro call booking",
      "showIntroCallBody": "When enabled, the booking calendar appears in the contact flow so athletes can schedule a call.",
      "livePreviewHint": "See your CTA in the live preview \u2192"
    },
    "coachDashboardFeed": {
      "filterAttention": "Needs attention",
      "filterAll": "All",
      "filterPersonal": "Clients",
      "filterTemplates": "Templates",
      "title": "Your roster",
      "inviteViaEmail": "Invite via Email",
      "invite": "Invite",
      "addClient": "Add Client",
      "loading": "Loading your roster\u2026",
      "emptyAttention": "Nothing needs attention \u2014 nice work.",
      "emptyDefault": "Nothing here yet."
    },
    "videoRequestReviewCard": {
      "failedToLoad": "Failed to load video",
      "markReviewed": "Mark Reviewed",
      "reviewed": "Reviewed",
      "download": "Download"
    },
    "sportTagPicker": {
      "primarySport": "Primary sport",
      "alsoCovers": "Also covers",
      "hybridProgram": "Hybrid program",
      "hybridDescription": "Mixes the primary sport with one or more secondary sports.",
      "secondaryHint": "Pick at least one secondary sport so athletes searching for it find this plan.",
      "sport": {
        "weightlifting": {
          "label": "Weightlifting",
          "hint": "Snatch \u00b7 C&J"
        },
        "powerlifting": {
          "label": "Powerlifting",
          "hint": "Squat \u00b7 Bench \u00b7 DL"
        },
        "hypertrophy": {
          "label": "Hypertrophy",
          "hint": "Body composition"
        },
        "hyrox": {
          "label": "Hyrox",
          "hint": "Race simulation"
        },
        "crossfit": {
          "label": "CrossFit",
          "hint": "WODs \u00b7 benchmarks"
        },
        "running": {
          "label": "Running",
          "hint": "Road \u00b7 trail \u00b7 track"
        },
        "triathlon": {
          "label": "Triathlon",
          "hint": "Swim \u00b7 bike \u00b7 run"
        }
      }
    },
    "clubsBlockEditor": {
      "sectionTitle": "Section Title",
      "subtitle": "Subtitle",
      "clubsToShow": "Clubs to show",
      "showAllPublic": "Show all public clubs",
      "noPublicClubs": "You don't have any public clubs yet. Go to <b>Clubs</b> and create one (or flip an existing club to public).",
      "memberCount_one": "{{count}} member",
      "memberCount_other": "{{count}} members",
      "askTitle": "Ask active members of this club for a review",
      "ask": "Ask",
      "myCoaching": "My coaching",
      "showingAll": "Showing all your public clubs (newest stays automatically included).",
      "showingSelected_one": "Showing {{count}} selected club.",
      "showingSelected_other": "Showing {{count}} selected clubs."
    },
    "socialLinksBlockEditor": {
      "displayStyle": "Display Style",
      "iconsOnly": "Icons Only",
      "buttons": "Buttons",
      "socialLinks_one": "Social Links ({{count}})",
      "socialLinks_other": "Social Links ({{count}})",
      "addSocialLink": "Add Social Link"
    },
    "coachServiceShortcutGrid": {
      "today": "Today",
      "tailored": "Tailored to the services you offer",
      "onlineProgrammingTitle": "Weekly programming",
      "onlineProgrammingDetail": "check-ins due this week",
      "inPersonSessionsTitle": "Today's sessions",
      "inPersonSessionsDetail": "sessions on your calendar",
      "videoFeedbackTitle": "Video reviews",
      "videoFeedbackDetail": "pending lifts to review",
      "nutritionTitle": "Meal plans",
      "nutritionDetail": "plans waiting for approval",
      "groupClassesTitle": "Group classes",
      "groupClassesDetail": "classes this week",
      "competitionPrepTitle": "Peak weeks",
      "competitionPrepDetail": "athletes in final prep"
    },
    "pricingBlockEditor": {
      "livePricingBlock": "Live pricing block",
      "livePricingDescription": "This block automatically shows your active service tiers. Tier names, prices, and features are pulled from your Athlete Onboarding & Payment Setup \u2014 edit them there to update this block.",
      "openOnboarding": "Open Athlete Onboarding & Payment Setup \u2192 Services & Pricing",
      "sectionTitle": "Section title",
      "sectionTitlePlaceholder": "Work With Me",
      "subtitle": "Subtitle",
      "subtitlePlaceholder": "Choose the plan that fits your goals",
      "showIntroCallLink": "Show \"Book a free intro call\" link",
      "appearsBelowCards": "Appears below the pricing cards"
    },
    "readinessMiniGauge": {
      "tooltip": "Readiness: {{score}} - {{status}}",
      "status": {
        "ready": "Ready",
        "monitor": "Monitor",
        "reduce": "Reduce"
      }
    },
    "annotatedFrameViewer": {
      "frameAlt": "Annotated frame"
    },
    "trainingCyclePlannerModal": {
      "title": "Training Cycle Planner",
      "unsavedWillSave": "Unsaved changes \u2014 will save on close",
      "autosaveSaving": "Saving\u2026",
      "autosaveSaved": "Saved",
      "autosaveHint": "Changes save automatically \u2014 click to save now",
      "autosavePending": "Unsaved changes \u2014 saving automatically",
      "tabReverse": "Reverse Engineer",
      "tabMacro": "1\u00b0 Macro",
      "tabMeso": "2\u00b0 Meso",
      "tabMicro": "3\u00b0 Micro",
      "untitledPhase": "Untitled Phase",
      "periodN": "Period {{number}}",
      "weekN": "Week {{number}}",
      "unsavedChanges": "Unsaved changes",
      "phaseNamePlaceholder": "Phase name\u2026",
      "customLabel": "Custom",
      "phaseLabel": "Phase",
      "saveTemplate": "Save template",
      "from": "From",
      "to": "To",
      "cycleDayTypeHint": "Click to cycle: mandatory \u2192 optional \u2192 rest",
      "dayTitlePlaceholder": "Day title\u2026",
      "dayDescriptionPlaceholder": "Short description\u2026",
      "restDay": "Rest day",
      "weightlifting": "Weightlifting",
      "strength": "Strength",
      "accessories": "Accessories",
      "noCategoryTargets": "No category targets set for this period",
      "volBadge": "{{value}} vol",
      "intBadge": "{{value}} int",
      "allPeriods": "All periods",
      "noWeeksBuilt": "No weeks built for this period yet.",
      "addAllWeeks": "Add all weeks for this period",
      "periodDayAria": "Period day this week (logged or predicted)",
      "restWeek": "Rest Week",
      "gap": "Gap",
      "exercisesCount": "{{count}} exercises",
      "restHoliday": "Rest / Holiday",
      "untracked": "Untracked",
      "addWeek": "Add Week",
      "openInBuilder": "Open in Builder",
      "rest": "REST",
      "loadCyclesFailed": "Failed to load macro cycles",
      "editMacro": "Edit Macro",
      "createMacro": "Create Macro",
      "kpis": "KPIs",
      "reverseView": "Reverse View",
      "newMacro": "New Macro",
      "selectOrCreateCycle": "Select or create a macro cycle first.",
      "goToCreateMacro": "Go to Create Macro",
      "selecting": "Selecting:",
      "startDate": "Start Date",
      "endDate": "End Date",
      "editMacroCycle": "Edit Macro Cycle",
      "createMacroCycle": "Create Macro Cycle",
      "bundleMesoPhases": "Bundle multiple meso phases into one named training block.",
      "cycleNameLabel": "Cycle Name *",
      "cycleNamePlaceholder": "e.g. Spring 2026 Competition Block",
      "startDateLabel": "Start Date *",
      "endDateLabel": "End Date *",
      "notesLabel": "Notes",
      "notesPlaceholder": "Optional notes about this macro cycle...",
      "trainingTypeLabel": "Training Type *",
      "selectTrainingTypeOption": "Select training type\u2026",
      "trainingType_weightlifting": "Weightlifting",
      "trainingType_powerlifting": "Powerlifting",
      "trainingType_hypertrophy": "Hypertrophy",
      "trainingType_crossfit": "CrossFit",
      "trainingType_hyrox": "Hyrox",
      "trainingType_general": "General",
      "nameDatesRequired": "Name, start date, and end date are required.",
      "selectTrainingType": "Please select a training type.",
      "phasesOverlap": "Phases \"{{a}}\" and \"{{b}}\" have overlapping dates. Please fix before saving.",
      "saveFailed": "Failed to save. Please try again.",
      "mesoPhases": "Meso Phases",
      "addPhase": "Add Phase",
      "noPhasesYet": "No phases yet \u2014 click Add Phase to define your meso cycles.",
      "phaseRowNamePlaceholder": "Phase name (e.g. Rebuilding)",
      "phaseNotesPlaceholder": "Notes...",
      "detectedMesos": "Detected mesos:",
      "alreadyApplied": "Already applied",
      "applyToPhase": "Apply \"{{name}}\" to this phase",
      "useArrow": "\u2191 use",
      "saved": "Saved!",
      "saveChanges": "Save Changes",
      "deleteMacroCycle": "Delete Macro Cycle",
      "performanceKpis": "Performance KPIs",
      "kpisIntro": "Set target lifts per phase. KPIs auto-mark as achieved when the athlete logs a matching exercise.",
      "kpisTip": "Tip: weight matching only works for numeric weights (e.g. \"75\"). Percentage values skip the weight check.",
      "unassignedKpis": "Unassigned KPIs",
      "noMesoPhasesDefined": "No meso phases defined yet \u2014 add phases in the Create Macro tab first.",
      "movementRequired": "Movement name is required.",
      "addKpiFailed": "Failed to add KPI.",
      "addKpi": "Add KPI",
      "movementLabel": "Movement *",
      "movementPlaceholder": "e.g. Snatch",
      "targetWeightLabel": "Target Weight (kg)",
      "targetWeightPlaceholder": "e.g. 70",
      "targetRepsLabel": "Target Reps",
      "targetRepsPlaceholder": "e.g. 2",
      "kpiDescriptionLabel": "Description (optional)",
      "kpiDescriptionPlaceholder": "e.g. 70kg double clean & jerk",
      "macroTimeline": "Macro Timeline (end \u2192 start)",
      "kpiCount": "{{achieved}}/{{total}} KPIs",
      "noWeeksInRange": "No weeks fall within the macro cycle date range.",
      "adjustCycleDates": "Adjust your macro cycle dates or add weeks in the 3\u00b0 Micro tab.",
      "achieved": "Achieved",
      "pending": "Pending",
      "noPlanYetTitle": "No program yet",
      "noPlanYetBody": "Plan your macro cycle, phases and KPIs in the Reverse tab. When you're ready, build your first week to turn it into a program.",
      "goToReverse": "Plan the cycle",
      "buildFirstWeek": "Build first week \u2192",
      "tabAiPlanner": "AI Planner",
      "targetSetsLabel": "Target Sets",
      "kpiTimeline": "KPI Timeline",
      "kpiTimelineHint": "Click a week to add a target \u00b7 click a marker to edit",
      "kpiSyncHint": "KPIs targeted at a week show up in that week\u2019s builder for one-click insertion.",
      "kpiTimelineNoPhases": "No meso phases yet \u2014 you can still place KPIs on the timeline above. Phases from the Create Macro tab will color it in.",
      "editKpiTitle": "Edit KPI",
      "addKpiForWeek": "New KPI \u2014 week of {{date}}",
      "kpiTargetWeekLabel": "Target Week"
    },
    "mealEditorModal": {
      "editMeal": "Edit meal",
      "addMeal": "Add meal",
      "mealName": "Meal name",
      "mealNamePlaceholder": "e.g. Greek yogurt + oats",
      "swapMeal": "Swap meal",
      "swapTitle": "Swap for another saved template \u2014 quantities rescale to match current calories",
      "rebalance": "Rebalance",
      "rebalanceTitle": "Rebalance to a target \u2014 calories match exactly; macros land close to target depending on ingredient mix",
      "rescaledFactor": "Rescaled \u00d7{{factor}}",
      "rebalancedToFit": "Rebalanced ingredients to fit macros",
      "labelKcal": "kcal",
      "labelProtein": "P g",
      "labelCarbs": "C g",
      "labelFats": "F g",
      "targetValue": "target {{value}}",
      "targetMacros": "Target macros",
      "wasKcalHint": "Was {{kcal}} kcal \u00b7 fix any 3, the 4th auto-fills",
      "calories": "Calories",
      "protein": "Protein",
      "carbs": "Carbs",
      "fats": "Fats",
      "fat": "Fat",
      "unitKcal": "kcal",
      "unitG": "g",
      "apply": "Apply",
      "actionsHelp": "Swap drops in a saved meal and rescales it to the current kcal. Rebalance scales every ingredient uniformly to hit your calorie target \u2014 macros land close to your target depending on the ingredient mix; deltas are shown above so you can fine-tune.",
      "addIngredient": "Add ingredient",
      "searchFoodsPlaceholder": "Search foods (chicken, rice, eggs\u2026)",
      "noMatchesPrefix": "No matches for",
      "addAsNewIngredient": "Add \"{{query}}\" as a new ingredient",
      "newIngredientPer100g": "New ingredient \u00b7 per 100g",
      "labelKcalShort": "Kcal",
      "saveAndUse": "Save & use",
      "toggleUnitGrams": "Toggle {{unit}} \u2194 grams",
      "serving": "serving",
      "unit": "unit",
      "removeIngredient": "Remove ingredient",
      "emptyIngredients": "Search and add ingredients above. Use the slider to scrub quantities.",
      "notesLabel": "Notes for the athlete (optional)",
      "notesPlaceholder": "e.g. Eat within 30 min post-training",
      "mealTotals": "Meal totals",
      "removeFromSlot": "Remove from slot",
      "saveAsTemplate": "Save as template",
      "updateMeal": "Update meal",
      "saveMeal": "Save meal",
      "auto": "Auto",
      "autoCalculatedFrom": "Calculated from the others",
      "makeAutoField": "Make this the auto-calculated field",
      "saveFailed": "Could not save \u2014 please try again",
      "nameRequired": "Name is required",
      "caloriesPositive": "Calories must be a positive number",
      "swappedNoRescale": "Swapped to \"{{name}}\" \u2014 no ingredients to rescale",
      "swappedTo": "Swapped to \"{{name}}\"",
      "swappedRescaled": "Swapped to \"{{name}}\" \u2014 rescaled to {{kcal}} kcal (\u00d7{{factor}})"
    },
    "competitionCycleChart": {
      "title": "Competition Cycle Intelligence",
      "noCompetitions": "No weightlifting competitions found",
      "addCompetitionHint": "Add competition data to unlock cycle analysis",
      "from": "from",
      "last8Weeks": "Last 8 weeks",
      "filterAllWl": "All WL",
      "filterSnatch": "Snatch",
      "filterCnj": "C&J",
      "filterStrength": "Strength",
      "compare": "Compare",
      "selectComparisonComp": "Select comparison comp",
      "recovery": "Recovery",
      "readiness": "Readiness",
      "feeling": "Feeling",
      "noTrainingData": "No training data for this cycle",
      "competitionWeek": "Competition Week",
      "weekN": "Week {{n}}",
      "compShort": "Comp",
      "weekShort": "W{{n}}",
      "axisVolumeKg": "Volume (kg)",
      "axisScore": "Score (1-5)",
      "plannedTonnageBreakdown": "Planned tonnage breakdown",
      "setFeelingBreakdown": "Set feeling breakdown",
      "totalLabel": "Total:",
      "abbrCnj": "C&J",
      "catSnatch": "Snatch",
      "catCleanJerk": "Clean & Jerk",
      "catStrength": "Strength",
      "catSquat": "Squat",
      "catPull": "Pull",
      "catPress": "Press",
      "catAccessories": "Accessories",
      "colExercise": "Exercise",
      "colSets": "Sets",
      "colReps": "Reps",
      "colWeight": "Weight",
      "colTons": "Tons",
      "colCategory": "Category",
      "colAvgFeeling": "Avg Feeling",
      "colMisses": "Misses",
      "noResolvableTonnage": "No exercises with resolvable tonnage this week",
      "noFeelingData": "No feeling data logged this week",
      "setsMissesSummary_one": "{{sets}} sets \u00b7 {{count}} miss",
      "setsMissesSummary_other": "{{sets}} sets \u00b7 {{count}} misses",
      "missCount_one": "{{count}} miss",
      "missCount_other": "{{count}} misses",
      "tooltipSn": "Sn:",
      "tooltipCnj": "C&J:",
      "tooltipStr": "Str:",
      "tooltipIntensity": "Intensity:",
      "tooltipMisses": "Misses:",
      "tooltipMissesValue": "{{misses}} / {{sets}} sets ({{pct}}%)",
      "tooltipFeeling": "Feeling:",
      "tooltipRecovery": "Recovery:",
      "tooltipReadiness": "Readiness:",
      "clickBarForDetails": "Click bar for details",
      "legendSnatchVol": "Snatch vol",
      "legendCnjVol": "C&J vol",
      "legendStrengthVol": "Strength vol",
      "legendFilteredVolume": "{{label}} volume",
      "legendAvgIntensity": "Avg intensity",
      "legendMisses": "Misses (larger = low %)",
      "legendFeeling": "Feeling (click dot)",
      "chatDisabledMessage": "Select a competition with training data to enable analysis",
      "promptExplainData": "Explain data",
      "promptCompReady": "Comp ready?",
      "promptMissAnalysis": "Miss analysis",
      "promptTaperCheck": "Taper check"
    },
    "loadFatigueScatterChart": {
      "title": "Weekly Planned Tonnage",
      "custom": "Custom",
      "to": "to",
      "recovery": "Recovery",
      "readiness": "Readiness",
      "feeling": "Feeling",
      "wl": "WL",
      "squat": "Squat",
      "other": "Other",
      "total": "Total",
      "legendWl": "WL (Sn + C&J)",
      "filterVolume": "{{label}} volume",
      "noPlannedData": "No planned training data for this period",
      "fewerWeeks": "Showing {{shown}} of {{total}} weeks \u2014 plan data available from {{from}}",
      "loadTonnageToAnalyze": "Load tonnage data to enable analysis",
      "axisPlannedTonnage": "Planned Tonnage (kg)",
      "axisScore": "Score (1-5)",
      "clickForDetails": "Click for details",
      "weekOf": "Week of {{date}}",
      "tonnageBreakdown": "Planned tonnage breakdown",
      "feelingBreakdown": "Set feeling breakdown",
      "noResolvableTonnage": "No exercises with resolvable tonnage this week",
      "noFeelingData": "No feeling data logged this week",
      "thExercise": "Exercise",
      "thSets": "Sets",
      "thReps": "Reps",
      "thWeight": "Weight",
      "thTons": "Tons",
      "thCategory": "Category",
      "thAvgFeeling": "Avg Feeling",
      "thMisses": "Misses",
      "setsMisses_one": "{{sets}} sets \u00b7 {{count}} miss",
      "setsMisses_other": "{{sets}} sets \u00b7 {{count}} misses",
      "missCount_one": "{{count}} miss",
      "missCount_other": "{{count}} misses",
      "catSnatch": "Snatch",
      "catCleanJerk": "Clean & Jerk",
      "catSquat": "Squat",
      "catPull": "Pull",
      "catPress": "Press",
      "catAccessories": "Accessories",
      "planned": "Planned",
      "actual": "Done",
      "thDone": "Done",
      "estimatedNote": "~ load estimated from logged sets (no prescribed load)",
      "metricTonnage": "Tonnage",
      "metricVolInt": "Vol + Int",
      "allExercises": "All exercises",
      "axisReps": "Volume (reps)",
      "axisIntensity": "Intensity (%1RM)",
      "legendVolume": "Volume (reps)",
      "legendIntensity": "Avg intensity (%1RM)",
      "volumeLabel": "Volume",
      "intensityLabel": "Intensity",
      "repsUnit": "reps"
    },
    "weightliftingAnalytics": {
      "loading": "Loading analytics...",
      "noDataTitle": "No Training Data Yet",
      "noDataDesc": "Analytics will appear once the client logs workouts.",
      "plannedOverview": "Planned Training Overview",
      "volumeByWeek": "Volume by Week",
      "noPlannedWorkouts": "No planned workouts",
      "weekShort": "W{{n}}",
      "intensityDistribution": "Intensity Distribution",
      "noIntensityData": "No intensity data",
      "ratios": "Ratios",
      "viewAll": "View all",
      "showing": "Showing:",
      "allFilter": "All",
      "strengthRatios": "Strength Ratios"
    },
    "clientDetailOverviewTab": {
      "loadingOverview": "Loading overview...",
      "viewAll": "View all",
      "trainingCycle": "Training Cycle",
      "progress": "Progress",
      "daysRemaining_one": "{{count}} day remaining",
      "daysRemaining_other": "{{count}} days remaining",
      "allPeriods": "All Periods",
      "noTrainingCycle": "No Training Cycle",
      "clickToSetUpPeriods": "Click to set up training periods",
      "assignPlanFirst": "Assign a plan first, then plan cycles",
      "mobility": "Mobility",
      "painAndAches": "Pain & Aches",
      "requestMobilityTest": "Request mobility test",
      "viewMobilityDetails": "View mobility details",
      "viewPainDetails": "View pain details",
      "noMobilityData": "No mobility data",
      "morePainAreas_one": "+{{count}} more",
      "morePainAreas_other": "+{{count}} more",
      "noPainReported": "No pain reported",
      "jointHistory": "{{joint}} History",
      "painLabel": "Pain:",
      "noExerciseLogs": "No exercise logs found",
      "mobilityAssessment": "Mobility Assessment",
      "noMobilityAssessment": "No mobility assessment available",
      "reportsCount_one": "{{count}} report",
      "reportsCount_other": "{{count}} reports",
      "techniqueAnalysis": "Technique Analysis",
      "technicalAnalysis": "Technical Analysis"
    },
    "billingTab": {
      "updateSubscriptionFailed": "Failed to update subscription",
      "updateRateFailed": "Failed to update rate",
      "statusCancelling": "Cancelling",
      "statusPaused": "Paused",
      "statusPausedUntil": "Paused until {{date}}",
      "statusPastDue": "Past Due",
      "intervalWeek": "week",
      "intervalMonth": "month",
      "interval3Months": "3 months",
      "interval6Months": "6 months",
      "intervalYear": "year",
      "checkoutLinkReady": "Checkout Link Ready",
      "shareCheckoutLink": "Share this link with {{name}} to complete payment setup:",
      "intervalSubscription": "{{interval}} Subscription",
      "monthlyLabel": "Monthly",
      "workoutsBlocked": "Workouts are blocked for this athlete due to failed payment.",
      "awaitingPayment": "Awaiting payment from {{name}}. Their workouts are locked until checkout is completed. You can edit the rate or interval below before they pay.",
      "rate": "Rate",
      "nextBilling": "Next Billing",
      "cancels": "Cancels",
      "started": "Started",
      "lastPayment": "Last Payment",
      "failedPaymentWarning_one": "{{count}} failed payment. The athlete may need to update their payment method.",
      "failedPaymentWarning_other": "{{count}} failed payments. The athlete may need to update their payment method.",
      "willCancelAtPeriodEnd": "Subscription will cancel at end of current period ({{date}})",
      "pausedUntilInfo": "Paused until {{date}} \u2014 will auto-resume on that date.",
      "pause": "Pause",
      "resuming": "Resuming...",
      "resumeNow": "Resume Now",
      "overrides": "Overrides",
      "waitingForPaymentSetup": "Waiting for athlete to complete payment setup...",
      "pauseSubscription": "Pause Subscription",
      "quickBreak": "Quick break",
      "resumeDateOptional": "Resume date (optional)",
      "resumeDateHint": "Pick a preset above, set a custom date, or leave empty to pause indefinitely",
      "pauseUntil": "Pause until {{date}}",
      "pauseIndefinitely": "Pause Indefinitely",
      "billingOverridesFor": "Billing Overrides for {{name}}",
      "gracePeriodDays": "Grace Period (days)",
      "defaultPlaceholder": "Default: {{value}}",
      "usingDefaultDays_one": "Using default ({{count}} day)",
      "usingDefaultDays_other": "Using default ({{count}} days)",
      "failedPaymentAction": "Failed Payment Action",
      "useDefaultAction": "Use default ({{action}})",
      "notifyOnly": "Notify Only",
      "blockWorkouts": "Block Workouts",
      "saveOverrides": "Save Overrides",
      "saved": "Saved",
      "noActiveSubscription": "No Active Subscription",
      "emptyStateDescription": "Set up a recurring billing subscription for {{name}}'s coaching services.",
      "createSubscription": "Create Subscription",
      "paymentHistory": "Payment History",
      "cancelSubscription": "Cancel Subscription",
      "chooseCancelMethod": "Choose how to cancel {{name}}'s subscription:",
      "cancelAtPeriodEnd": "Cancel at Period End",
      "cancelAtPeriodEndDesc": "Service continues until the current billing period ends",
      "cancelImmediately": "Cancel Immediately",
      "cancelImmediatelyDesc": "Stops the subscription right now \u2014 no further charges",
      "keepSubscription": "Keep Subscription"
    },
    "competitionProgressModal": {
      "title": "Competition Progress",
      "competitionResults": "Competition Results",
      "best": "Best:",
      "latest": "Latest:",
      "snatch": "Snatch",
      "cjShort": "C&J",
      "cleanJerk": "Clean & Jerk",
      "weightAxis": "Weight (kg)",
      "dateAxis": "Date"
    },
    "videoRequestsCard": {
      "title": "Video Requests",
      "toReview": "{{num}} to review",
      "templates": "Templates",
      "loadTemplate": "Load template",
      "newRequest": "New Request",
      "savedTemplates": "Saved Templates",
      "noTemplates": "No templates saved yet. Create a request and save it as a template.",
      "videoCount": "{{num}} videos",
      "deleteTemplate": "Delete template",
      "templateNamePlaceholder": "Template name (e.g., Intro Assessment)",
      "exercisePlaceholder": "Exercise {{number}} (e.g., Snatch Lourd)",
      "instructionsPlaceholder": "Instructions (optional)",
      "addExercise": "Add Exercise ({{num}}/{{max}})",
      "saveAsTemplate": "Save as template for reuse",
      "saving": "Saving...",
      "sending": "Sending...",
      "sendRequests_one": "Send {{count}} Request",
      "sendRequests_other": "Send {{count}} Requests",
      "emptyState": "No video requests yet",
      "requestFirstVideo": "Request your first video",
      "reviewSubmission": "Review submission",
      "deleteRequest": "Delete request",
      "submittedOn": "Submitted {{date}}",
      "markReviewed": "Mark Reviewed",
      "statusSubmitted": "Submitted",
      "statusReviewed": "Reviewed"
    },
    "intensityZoneExercisesModal": {
      "title": "{{label}} Intensity Exercises",
      "filteredLabel": "Filtered:",
      "weekLabel": "Week {{number}}",
      "setsCount": "{{count}} sets",
      "colExercise": "Exercise",
      "colSetsReps": "Sets\u00d7Reps",
      "colIntensity": "Intensity",
      "colWeight": "Weight",
      "emptyState": "No exercises found in this intensity zone",
      "emptyStateFilterHint": "Try removing the filter to see all exercises",
      "totalSetsIn": "Total Sets in {{label}}"
    },
    "recoveryReadinessEvolutionChart": {
      "title": "Recovery & Readiness",
      "noData": "No data",
      "statusReady": "Ready",
      "statusMonitor": "Monitor",
      "statusReduce": "Reduce",
      "metricRecovery": "Recovery",
      "metricPreWorkout": "Pre-workout",
      "statsFooter": "{{recoveryDays}}/{{totalDays}} recovery \u00b7 {{preWorkoutDays}}/{{totalDays}} pre-workout",
      "activateForAthlete": "Activate for athlete",
      "recoveryQuestionnaire": "Recovery questionnaire",
      "preWorkoutReadiness": "Pre-workout readiness"
    },
    "perDayTargetsCard": {
      "title": "Per-day Overrides",
      "previousWeek": "Previous week",
      "nextWeek": "Next week",
      "jumpToThisWeek": "Jump to this week",
      "nowBadge": "NOW",
      "noWeeklyDefaultHint": "Set a weekly default prescription first (above). Per-day overrides inherit from it on un-overridden days.",
      "loading": "Loading per-day overrides\u2026",
      "resetToDefault": "Reset to weekly default",
      "resetDayToDefault": "Reset day to default",
      "override": "Override",
      "kcal": "kcal",
      "overrideLabel": "override",
      "inheritsDefault": "inherits default",
      "noDefaultSetAbove": "No default \u2014 set one above.",
      "footerHintPre": "Tap ",
      "footerHintPost": " on a day to set different macros. Untouched days inherit the weekly default. Per-week \u2014 clears when you start a new week unless you save again.",
      "clearWeek": "Clear week",
      "saveOverrides": "Save overrides",
      "proteinG": "P g",
      "carbsG": "C g",
      "fatsG": "F g",
      "carbsAutoHint": "Carbs auto from the other three.",
      "discardUnsavedConfirm": "Unsaved overrides will be discarded. Continue?",
      "overridesSaved": "Per-day overrides saved",
      "saveFailed": "Failed to save \u2014 please retry",
      "clearAllConfirm": "Remove ALL per-day overrides for this week? Every day will fall back to the weekly default.",
      "clearFailed": "Failed to clear \u2014 please retry",
      "overridesCleared": "Per-day overrides cleared"
    },
    "coachClientNotesModal": {
      "title": "Coach Notes",
      "addNote": "Add Note",
      "notePlaceholder": "Write a note about this client...",
      "saving": "Saving...",
      "deleting": "Deleting...",
      "charCount": "{{count}}/2000 characters",
      "introCallNotes": "Intro Call Notes",
      "noNotesYet": "No notes yet",
      "deleteConfirm": "Delete this note?",
      "saveFailed": "Failed to save note.",
      "updateFailed": "Failed to update note.",
      "deleteFailed": "Failed to delete note."
    },
    "movementMakeRateChart": {
      "title": "Historical Miss Rate",
      "loadFailed": "Failed to load data",
      "noData": "No data available",
      "logToTrack": "Log workouts to track",
      "miss": "miss",
      "attempts_one": "{{count}} attempt",
      "attempts_other": "{{count}} attempts"
    },
    "runningAnalytics": {
      "loading": "Loading analytics...",
      "distance": "Distance",
      "runs": "Runs",
      "avgPace": "Avg pace",
      "longest": "Longest",
      "weeklyMileage": "Weekly Mileage",
      "noRunsInRange": "No runs logged in range.",
      "bikeSessions_one": "{{count}} bike session \u00b7 {{km}} km (triathlon)",
      "bikeSessions_other": "{{count}} bike sessions \u00b7 {{km}} km (triathlon)",
      "paceEvolution": "Pace Evolution",
      "personalRecords": "Personal Records",
      "notEnoughRuns": "Not enough runs to chart pace yet.",
      "fasterPaceHigher": "Faster pace is higher on the chart.",
      "speedVsEndurance": "Speed vs Endurance",
      "speedVsEnduranceEmpty": "Log both a short PR (1K\u20135K) and a long PR (10K+) to see the speed-vs-endurance gap.",
      "speedVsEnduranceDesc": "How much the athlete slows from short to long \u2014 and whether the long run beats its Riegel prediction.",
      "distancePace": "{{distance}} pace",
      "slowdownShortToLong": "Slowdown short\u2192long",
      "vsRiegel": "vs Riegel prediction",
      "enduranceStrength": "Endurance is a relative strength \u2014 long efforts beat what the short PR predicts.",
      "speedOutpaces": "Speed outpaces endurance \u2014 long efforts lag the short-PR prediction; aerobic base may be the lever.",
      "planned": "Planned",
      "actual": "Actual",
      "plannedKm": "planned {{km}} km",
      "planCompliance": "{{actual}} of {{planned}} planned km ({{pct}}%)"
    },
    "rpeEvolutionGrid": {
      "title": "RPE Evolution",
      "description": "Average logged RPE per lift, week over week. Falling RPE at similar loads = strength building; rising RPE = fatigue accumulating.",
      "liftSquat": "Squat",
      "liftBench": "Bench",
      "liftDeadlift": "Deadlift",
      "liftAccessories": "Accessories",
      "emptyTitle": "No RPE logged yet",
      "emptyHint": "RPE-tagged sets on powerlifting blocks will build this grid.",
      "trendTooltip": "RPE trend (first \u2192 last week)",
      "cellTooltip": "{{lift}} \u00b7 W{{week}}: avg RPE {{avg}} ({{count}} sets)",
      "cellSets_one": "{{count}} set",
      "cellSets_other": "{{count}} sets",
      "weekShort": "W{{week}}",
      "axisLifts": "Lifts \u2191",
      "axisWeeks": "Weeks \u2192",
      "legendRpe": "RPE",
      "legendFresh": "6\u20137 fresh",
      "legendHard": "8 hard",
      "legendMaxed": "9\u201310 maxed",
      "legendTotalSets_one": "{{count}} RPE set",
      "legendTotalSets_other": "{{count}} RPE sets",
      "cellModalTitle": "{{lift}} \u00b7 Week {{week}}",
      "setsWithRpe_one": "{{count}} set with RPE",
      "setsWithRpe_other": "{{count}} sets with RPE",
      "rpeValue": "RPE {{value}}"
    },
    "volumeDetailModal": {
      "title": "Volume by Category",
      "tabAll": "All",
      "tabWeightlifting": "Weightlifting",
      "tabStrength": "Strength",
      "tabAccessories": "Accessories",
      "categorySnatch": "Snatch",
      "categoryCleanJerk": "Clean & Jerk",
      "categorySquat": "Squat",
      "categoryPull": "Pull",
      "categoryPress": "Press",
      "categoryAccessories": "Accessories",
      "categoryBreakdown": "{{category}} Breakdown",
      "setCount_one": "{{count}} set",
      "setCount_other": "{{count}} sets",
      "tonnageKg": "{{value}} kg",
      "total": "Total",
      "noExercises": "No exercises logged for this category",
      "clickBarHint": "Click a bar to see exercise breakdown"
    },
    "questionnaireCard": {
      "title": "Questionnaire",
      "questionsAnswered_one": "{{count}} question answered",
      "questionsAnswered_other": "{{count}} questions answered",
      "manageTooltip": "Manage",
      "historyTooltip": "View history",
      "assign": "Assign",
      "assignQuestionnaire": "Assign Questionnaire",
      "manageQuestionnaire": "Manage Questionnaire",
      "noneAssigned": "No questionnaire assigned",
      "noResponses": "No responses yet",
      "upToDate": "Up to date",
      "pending_one": "{{count}} pending",
      "pending_other": "{{count}} pending",
      "skipped_one": "{{count}} skipped",
      "skipped_other": "{{count}} skipped"
    },
    "repMaxProgressModal": {
      "title": "{{exercise}} Progress",
      "noHistory": "No max history recorded yet",
      "trainingLabel": "Training:",
      "competitionLabel": "Competition:",
      "trainingTooltip": "{{date}} - {{weight}}kg (Training)",
      "competitionTooltip": "{{date}} - {{weight}}kg (Competition)",
      "trainingMaxLegend": "Training Max",
      "competitionMaxLegend": "Competition Max"
    },
    "questionnaireHistoryModal": {
      "title": "Questionnaire History",
      "noAnswer": "No answer",
      "yes": "Yes",
      "no": "No",
      "noDaysSelected": "No days selected",
      "empty": "No questionnaire responses yet",
      "emptyHint": "Responses will appear here once {{name}} submits a questionnaire",
      "questionsCount": "{{count}} questions"
    },
    "groceryListModal": {
      "title": "Grocery list",
      "forClient": "for {{name}}",
      "thisWeek": "This week",
      "next7Days": "Next 7 days",
      "next14Days": "Next 14 days",
      "custom": "Custom",
      "to": "to",
      "invalidRange": "Start date must be on or before end date.",
      "aggregating": "Aggregating ingredients\u2026",
      "pickRange": "Pick a valid date range.",
      "itemsReady": "{{count}} items ready",
      "copied": "Copied",
      "copy": "Copy",
      "emailTo": "Email to {{name}}",
      "clipboardUnavailable": "Clipboard not available \u2014 try selecting the text manually",
      "sentToast": "Sent to {{name}}",
      "sendFailed": "Failed to send \u2014 please retry"
    },
    "athleteActionsColumn": {
      "title": "Athlete Actions",
      "painChanges": "Pain changes",
      "eventCount_one": "{{count}} event",
      "eventCount_other": "{{count}} events",
      "noActions": "No actions this week",
      "emptyHint": "Exercise changes, pain reports, and mobility activity will appear here",
      "highSeverity": "High severity - requires attention",
      "skippedExercise": "Skipped {{name}}",
      "changedExercise": "Changed {{name}}",
      "noReasonProvided": "No reason provided",
      "painTitle": "Pain: {{joint}}",
      "painDescription": "Severity {{severity}}/10 during {{exercise}}",
      "mobilityRoutine": "Mobility Routine",
      "mobilityCompleted": "Completed {{minutes}} min routine"
    },
    "macroCalculatorCard": {
      "title": "Macro Calculator",
      "coachOnly": "(coach-only)",
      "bodyweightLabel": "Bodyweight (kg)",
      "bodyweightPlaceholder": "e.g. 80",
      "stepsLabel": "Steps / day",
      "trainingLabel": "Training",
      "trainingNone": "\u2014 None \u2014",
      "trainingWeightlifting": "Weightlifting",
      "trainingPowerlifting": "Powerlifting",
      "trainingHypertrophy": "Hypertrophy",
      "trainingHyrox": "Hyrox",
      "trainingEndurance": "Endurance",
      "goalLabel": "Goal",
      "goalLose": "Lose (-300)",
      "goalMaintain": "Maintain (\u00b10)",
      "goalGain": "Gain (+300)",
      "calculate": "Calculate",
      "calories": "Calories",
      "protein": "Protein",
      "carbs": "Carbs",
      "fats": "Fats",
      "saveAsTargets": "Save as prescribed targets",
      "savedToast": "Saved as prescribed targets.",
      "saveFailedToast": "Failed to save. Please try again."
    },
    "crossfitAnalytics": {
      "loading": "Loading analytics...",
      "modalDomainBalance": "Modal Domain Balance",
      "lastWeeks": "last {{weeks}}w",
      "noClassifiedWork": "No classified work yet \u2014 Gymnastics / Weightlifting / Cardio balance appears once sets are logged.",
      "domainBarTitle": "{{domain}}: {{sets}} sets ({{pct}}%)",
      "underTrained": "Under-trained: {{domains}} \u2014 rebalance for full-spectrum fitness.",
      "balanceOverTime": "Balance Over Time",
      "weeklyBarTitle": "G {{gymnastics}} \u00b7 WL {{weightlifting}} \u00b7 C {{cardio}}",
      "wodFormatsTrained": "WOD Formats Trained",
      "noWodSessions": "No WOD-tagged sessions logged yet.",
      "gymnasticsSkills": "Gymnastics Skills",
      "noGymnasticsMovements": "No gymnastics movements logged yet.",
      "plannedVsCompleted": "Planned vs Completed Reps",
      "plannedVsCompletedBarTitle": "Planned {{planned}} \u00b7 Completed {{actual}}",
      "plannedReps": "Planned reps",
      "completedReps": "Completed reps",
      "plannedVsCompletedNote": "Planned working reps from the active plan vs reps logged \u2014 distance/time prescriptions are not counted."
    },
    "clientCompetitionCard": {
      "competition": "Competition",
      "addCompetition": "Add competition",
      "viewProgress": "View progress",
      "snatch": "Snatch",
      "cleanJerk": "C&J",
      "total": "Total",
      "noCompetitions": "No competitions",
      "openHistory": "Open competition history",
      "competitionResults": "Competition Results",
      "progress": "Progress",
      "pastResults": "Past Results"
    },
    "bodyPartDiagram": {
      "title": "Volume by Body Part",
      "parts": {
        "shoulders": "Shoulders",
        "chest": "Chest",
        "back": "Back",
        "arms": "Arms",
        "core": "Core",
        "legs": "Legs"
      },
      "totalLabel": "Total:",
      "totalReps": "{{value}} reps",
      "noData": "No data available"
    },
    "powerliftingCompetitionCard": {
      "competition": "Competition",
      "addCompetition": "Add competition",
      "viewProgress": "View progress",
      "squat": "Squat",
      "bench": "Bench",
      "deadlift": "Deadlift",
      "dl": "DL",
      "total": "Total",
      "noCompetitions": "No competitions",
      "openHistory": "Open competition history",
      "competitionResults": "Competition Results",
      "pastResults": "Past Results",
      "totalKg": "Total (kg)",
      "dots": "DOTS",
      "bestTotal": "Best total {{total}} kg ({{date}})",
      "noCompetitionsLogged": "No competitions logged"
    },
    "clientNotificationCard": {
      "videoCount_one": "{{count}} video",
      "videoCount_other": "{{count}} videos",
      "messageCount_one": "{{count}} message",
      "messageCount_other": "{{count}} messages",
      "noPending": "No pending notifications",
      "videosPendingReview_one": "{{count}} video pending review",
      "videosPendingReview_other": "{{count}} videos pending review",
      "fromName": "From {{name}}",
      "unreadMessages_one": "{{count}} unread message",
      "unreadMessages_other": "{{count}} unread messages"
    },
    "repMaxCard": {
      "no1rm": "No 1RM",
      "viewRatios": "View ratios"
    },
    "genericAnalytics": {
      "loading": "Loading analytics...",
      "noDataTitle": "No Training Data Yet",
      "noDataDesc": "Analytics will appear once the client logs workouts.",
      "weeklyTraining": "Weekly Training",
      "totalVolume": "Total Volume",
      "totalSets": "Total Sets",
      "avgCompletion": "Avg Completion",
      "volumeByWeek": "Volume by Week",
      "weekShort": "W{{num}}"
    },
    "painChangesReviewModal": {
      "title": "Pain changes",
      "description": "Changes the athlete applied for pain. Accept to endorse, or refuse to restore the original.",
      "empty": "No upcoming pain changes.",
      "paused": "Paused",
      "setsCount_one": "{{count}} set",
      "setsCount_other": "{{count}} sets",
      "reduced": "Reduced {{detail}}",
      "endorsed": "Endorsed",
      "accept": "Accept",
      "refuse": "Refuse"
    },
    "analyticsTab": {
      "title": "Training Analytics",
      "loadingAnalytics": "Loading analytics...",
      "periodLast4Weeks": "Last 4 weeks",
      "periodLast8Weeks": "Last 8 weeks",
      "periodLast12Weeks": "Last 12 weeks",
      "periodLast3Months": "Last 3 months",
      "primary": "Primary",
      "secondary": "Secondary",
      "editRecords": "Records"
    },
    "clientReviewCard": {
      "title": "Client Review",
      "yourReply": "Your reply",
      "noReviewYet": "{{name}} hasn't left a review yet."
    },
    "activityWeekPicker": {
      "previousWeek": "Previous week",
      "nextWeek": "Next week"
    },
    "weeklyPlanView": {
      "slots": {
        "breakfast": "Breakfast",
        "lunch": "Lunch",
        "dinner": "Dinner",
        "snack": "Snack"
      },
      "addDay": "Day",
      "addDayTooltip": "Apply a saved custom day to this day",
      "saveDay": "Save day",
      "saveDayTooltip": "Save this day's meals as a reusable custom day",
      "confirmDiscardSwitch": "You have unsaved changes. Discard and switch week?",
      "confirmDiscardJump": "You have unsaved changes. Discard and jump to this week?",
      "stagedReviewSave": "Jarvis staged this plan \u2014 review and Save.",
      "stagedSkipped_one": "({{count}} meal couldn't be found in your library and was skipped.)",
      "stagedSkipped_other": "({{count}} meals couldn't be found in your library and were skipped.)",
      "stagedNoneFound_one": "Jarvis tried to stage {{count}} meal, but it wasn't found in your library.",
      "stagedNoneFound_other": "Jarvis tried to stage {{count}} meals, but none were found in your library.",
      "weekSaved": "Week plan saved",
      "saveFailed": "Failed to save \u2014 please retry",
      "targetsSaved": "Targets saved",
      "targetsSaveFailed": "Failed to save targets \u2014 please retry",
      "aiNoDays": "AI returned no days. Please try again.",
      "aiPlanSaved": "AI plan saved to this week",
      "aiPlanGenerated": "AI plan generated \u2014 tap Save week to keep it",
      "aiApplyFailed": "Failed to apply AI plan.",
      "confirmDeleteTemplate": "Delete this template? Meals already prescribed from it stay untouched.",
      "jarvisSetTargets": "Jarvis set targets:",
      "applyTargets": "Apply targets",
      "dismissBanner": "Dismiss Jarvis banner",
      "dismiss": "Dismiss",
      "previousWeek": "Previous week",
      "jumpToThisWeek": "Jump to this week",
      "thisWeek": "THIS WEEK",
      "nextWeek": "Next week",
      "coachPrescription": "Coach prescription",
      "planTab": "Plan",
      "loggedTooltip": "What the athlete actually logged",
      "loggedTab": "Logged",
      "generateWeekTooltip": "Generate a full week with AI",
      "buildingPlan": "Building plan\u2026",
      "aiPlan": "AI plan",
      "groceryListTooltip": "Build a grocery list from this week's meals",
      "groceryList": "Grocery list",
      "saveWeek": "Save week",
      "loadingPlan": "Loading plan\u2026",
      "mealLibrary": "Meal Library",
      "dietaryFilters": "Dietary filters",
      "toggleDietaryFilters": "Toggle dietary filters",
      "generateMealsAi": "Generate meals with AI",
      "templatesTooltip": "Coach templates & starter recipes",
      "templatesTab": "Templates",
      "athleteSavedMealsTooltip": "{{name}}'s saved meals",
      "athleteSavedMealsTooltipGeneric": "Athlete's saved meals",
      "athletePossessive": "Athlete's",
      "filterAll": "All",
      "dietary": "Dietary",
      "clear": "Clear",
      "searchMeals": "Search meals",
      "noAthleteMeals": "The athlete hasn't saved any meals yet.",
      "noSavedMealsMatch": "No saved meals match this filter.",
      "noTemplatesYet": "No templates yet. Tick <em>Save as template</em> when composing a meal \u2014 it lands here.",
      "noFilterMatches": "No matches for the current filter.",
      "deleteTemplate": "Delete template",
      "starterRecipes": "Starter recipes",
      "noStarterMatches": "No starter matches this filter.",
      "dragHelp": "Drag any meal onto a slot. The slot tag is just an organiser \u2014 drop on Lunch and it becomes a lunch. Starter/sealed meals drop with fixed macros.",
      "previousDay": "Previous day",
      "nextDay": "Next day",
      "empty": "empty",
      "targetKcal": "target <v>{{calories}}</v> kcal",
      "fillGapTooltip": "Fill the {{kcal}} kcal gap",
      "fillGap": "Fill gap ({{kcal}} kcal)",
      "starter": "Starter",
      "removeMealFromSlot": "Remove meal from slot",
      "tapToEditQuantities": "tap to edit quantities",
      "ingredient": "Ingredient",
      "meal": "Meal",
      "generateMealSlotTooltip": "Generate a meal for this slot with AI",
      "ai": "AI",
      "athleteSwapped": "Athlete swapped",
      "replacementVsPrescribed": "Replacement vs prescribed",
      "unsavedChanges": "You have unsaved changes \u2014 click \"Save week\" to persist.",
      "loadingLoggedMeals": "Loading logged meals\u2026",
      "loggedLoadFailed": "Couldn't load logged meals for this week.",
      "kcalLogged": "kcal logged",
      "nothingLogged": "nothing logged",
      "loggedMeal": "Logged meal",
      "noMealsLogged": "No meals logged"
    },
    "videoEvolutionCard": {
      "title": "Video Evolution",
      "exitCompare": "Exit Compare",
      "compare": "Compare",
      "addVideo": "Add Video",
      "categoryAll": "All",
      "categorySnatch": "Snatch",
      "categoryCleanJerk": "Clean & Jerk",
      "categorySquats": "Squats",
      "categoryOther": "Other",
      "loadingVideos": "Loading videos...",
      "loadFailed": "Failed to load videos",
      "saveVideoFailed": "Failed to save video",
      "uploadVideoFailed": "Failed to upload video",
      "downloadFailed": "Download failed. Please try again.",
      "shareFailedRetry": "Share failed. Please try again.",
      "shareFailed": "Share failed",
      "shareLiftTitle": "Check out this lift!",
      "beforeAndAfter": "Before & After",
      "exportFailed": "Export failed",
      "exportFailedCors": "Export failed \u2014 video could not be loaded. Please contact support.",
      "videoExportFailed": "Video export failed",
      "webCodecsUnsupported": "Your browser does not support video export. Please use Chrome or Firefox.",
      "includeOverlay": "Include overlay in download",
      "downloadWithOverlay": "Download with Overlay",
      "downloadVideo": "Download Video",
      "shareToSocial": "Share to Social",
      "before": "Before",
      "after": "After",
      "selectVideoSlot": "Select video {{slot}}",
      "exportSocialCard": "Export Social Card",
      "showExerciseName": "Show Exercise Name",
      "showDate": "Show Date",
      "showSetsReps": "Show Sets x Reps",
      "showWeightKg": "Show Weight (kg)",
      "beforeKg": "Before kg",
      "afterKg": "After kg",
      "weightPlaceholder80": "e.g. 80",
      "weightPlaceholder100": "e.g. 100",
      "aspectRatio": "Aspect Ratio",
      "format": "Format",
      "formatImage": "Image",
      "formatVideo": "Video",
      "requiresChromeFirefox": "Requires Chrome/Firefox",
      "brandingNote": "Always includes strengthacademy.app branding.",
      "exporting": "Exporting...",
      "downloadFormat": "Download {{format}}",
      "selectToCompare": "Select videos below to compare:",
      "pickBefore": "pick Before",
      "pickAfter": "pick After",
      "addPanelTitle": "Add Video to Evolution Library",
      "source_feedback": "Feedback",
      "source_intake": "Intake",
      "source_upload": "Upload",
      "loading": "Loading...",
      "noFeedbackVideos": "No video feedback submissions found for this client.",
      "noIntakeVideos": "No intake videos found for this client.",
      "selectVideoHint": "Click to select video (max 250 MB)",
      "labelLabel": "Label",
      "labelPlaceholder": "e.g. Competition Snatch",
      "categoryLabel": "Category",
      "dateLabel": "Date",
      "weightKgLabel": "Weight (kg)",
      "uploadAndSave": "Upload & Save",
      "emptyAll": "No videos saved yet. Add from feedback, intake, or upload directly.",
      "emptyCategory": "No {{category}} videos saved yet.",
      "slotABefore": "A (Before)",
      "slotBAfter": "B (After)",
      "select": "Select",
      "share": "Share",
      "download": "Download"
    },
    "clientCompetitionHistoryModal": {
      "title": "Competition History",
      "empty": "No competition history",
      "deleteVideoConfirm": "Delete this attempt video? This cannot be undone.",
      "weightlifting": "Weightlifting",
      "powerlifting": "Powerlifting",
      "powerliftingCompetition": "Powerlifting Competition",
      "editCompetition": "Edit competition",
      "bodyweight": "BW: {{weight}}kg",
      "bestSnatch": "Best Snatch",
      "bestCleanJerk": "Best C&J",
      "total": "Total",
      "sinclair": "Sinclair",
      "snatchAttempts": "Snatch Attempts",
      "cleanJerkAttempts": "Clean & Jerk Attempts",
      "squat": "Squat",
      "bench": "Bench",
      "benchPress": "Bench Press",
      "deadlift": "Deadlift",
      "snatch": "Snatch",
      "cleanJerk": "Clean & Jerk",
      "squatAttempts": "Squat Attempts",
      "benchPressAttempts": "Bench Press Attempts",
      "deadliftAttempts": "Deadlift Attempts",
      "attemptLabel": "{{lift}} attempt {{num}}",
      "attemptHeading": "{{lift}} \u00b7 Attempt {{num}}",
      "trimmedRange": "Trimmed {{start}}s \u2192 {{end}}s",
      "playAttemptVideo": "Play attempt video",
      "uploadAthleteVideo": "Upload athlete's video for this attempt",
      "closeVideo": "Close video",
      "replaceVideo": "Replace video",
      "deleting": "Deleting\u2026",
      "uploadingVideos": "Uploading videos",
      "uploadingVideosNote": "Don't close \u2014 uploads are running on behalf of the athlete.",
      "uploadingAttemptVideo": "Uploading attempt video",
      "statusQueued": "queued",
      "statusUploading": "uploading\u2026",
      "statusDone": "done",
      "statusFailed": "failed",
      "reasonTooHeavy": "Weight too heavy",
      "reasonMisgroove": "Misgroove",
      "reasonTechnique": "Technique issue",
      "reasonDepth": "Depth",
      "reasonButtLift": "Butt lift",
      "reasonHitching": "Hitching"
    },
    "clientNutritionPage": {
      "loading": "Loading nutrition data\u2026",
      "title": "{{name}}'s Nutrition",
      "subtitle": "Coach workspace \u00b7 targets, meals, bodyweight",
      "tabSummary": "Summary",
      "tabWeeklyPlan": "Weekly Plan",
      "dailyTargets": "Daily Targets",
      "athletesOwn": "Athlete's own",
      "calories": "Calories",
      "protein": "Protein",
      "carbs": "Carbs",
      "fats": "Fats",
      "kcal": "kcal",
      "athleteNoTargets": "Athlete hasn't set their own targets yet.",
      "prescriptionSaved": "Prescription (saved)",
      "prescriptionNotSaved": "Prescription (not saved yet)",
      "lastUpdatedBy": "Last updated by",
      "aCoach": "a coach",
      "onDate": "on {{date}}",
      "fixThreeFields": "Fix any 3 fields. The 4th auto-fills.",
      "auto": "Auto",
      "autoTitleOn": "This field is calculated from the others",
      "autoTitleOff": "Make this the auto-calculated field",
      "macroOverage": "Macros overshoot calories by {{kcal}} kcal \u2014 the auto field hit 0g. Reduce one of the fixed macros or raise calories.",
      "notesPlaceholder": "Notes for the athlete (optional)",
      "sharedWithCoaches": "Shared with every coach linked to this athlete. Athlete's own targets stay separate above.",
      "updatePrescription": "Update prescription",
      "savePrescription": "Save prescription",
      "caloriesRange": "Calories must be between 800 and 10000",
      "targetsSaved": "Coach targets saved",
      "saveFailed": "Failed to save \u2014 please retry",
      "removePrescriptionConfirm": "Remove your coach prescription? The athlete will fall back to their own targets.",
      "prescriptionCleared": "Coach prescription cleared",
      "past7Days": "Past 7 Days",
      "daysLogged": "Days logged",
      "avgKcal": "Avg kcal",
      "avgP": "Avg P",
      "avgC": "Avg C",
      "avgF": "Avg F",
      "noMealsThisWeek": "No meals logged this week.",
      "bodyweight": "Bodyweight",
      "noChange": "no change",
      "overWindow": "over window",
      "weight": "Weight",
      "goalKg": "Goal {{weight}} kg",
      "noBodyweightLogs": "No bodyweight logs in the last 90 days.",
      "today": "Today",
      "previousDay": "Previous day",
      "nextDay": "Next day",
      "jumpToToday": "Jump to today",
      "untitledMeal": "Untitled meal",
      "noMealsOnDay": "No meals logged on {{day}}."
    },
    "intensityQualityChart": {
      "title": "Intensity \u2192 Quality Curve",
      "feeling": "Feeling",
      "missRate": "Miss Rate",
      "noDataForFilter": "No data yet for this filter",
      "noMissDataForFilter": "No miss data yet for this filter",
      "intensityRangesAxis": "Intensity Ranges",
      "planWeeksAxis": "Plan Weeks",
      "avgIntensityOfMisses": "Avg Intensity of Misses",
      "planWeek": "Plan Week",
      "missesShiftingHigher": "Misses shifting higher",
      "missesShiftingLower": "Misses shifting lower",
      "cellSets": "{{count}} sets",
      "weekRange": "Week {{week}} \u00b7 {{range}}",
      "week": "Week {{week}}",
      "setsLabel": "Sets:",
      "avgFeelingLabel": "Avg feeling:",
      "dominantLabel": "Dominant:",
      "missesLabel": "Misses:",
      "missRateLabel": "Miss rate:",
      "avgIntensityLabel": "Avg intensity:",
      "loadDataToAnalyze": "Load intensity data to enable analysis",
      "setsMissesSummary": "{{sets}} sets \u00b7 {{misses}} misses",
      "setsMissesCount": "{{sets}} sets | {{misses}} misses",
      "setLabel": "Set {{number}}",
      "planned": "Planned: {{sets}}\u00d7{{reps}}",
      "done": "Done: {{reps}} reps",
      "notAvailable": "N/A",
      "legendMiss": "Miss (dot size = count)",
      "legendTrendLine": "Trend line",
      "legendCleanWeek": "Clean week",
      "period": {
        "weeks4": "4 weeks",
        "weeks8": "8 weeks",
        "weeks12": "12 weeks",
        "weeks24": "24 weeks",
        "allTime": "All time"
      },
      "quickPrompts": {
        "explainData": "Explain data",
        "sweetSpot": "Sweet spot",
        "riskZones": "Risk zones",
        "weeklyTrend": "Weekly trend"
      }
    },
    "unifiedWeekColumn": {
      "weekOverview": "Week Overview",
      "weekTitle": "Week {{number}}",
      "noWorkoutData": "No workout data for this week",
      "doneCount": "{{count}} done",
      "missedCount": "{{count}} missed",
      "feelingSetsTitle_one": "{{count}} {{feeling}} set",
      "feelingSetsTitle_other": "{{count}} {{feeling}} sets",
      "restDay": "Rest day",
      "noDetails": "No details",
      "skipped": "SKIPPED",
      "notStarted": "Not started",
      "viewVideoSubmission": "View video submission",
      "coachFeedback": "Coach feedback",
      "coachVoiceNote": "Coach voice note",
      "coachNotes": "Coach notes",
      "reviewed": "Reviewed",
      "pendingReview": "Pending review"
    },
    "questionnaireManageModal": {
      "title": "Manage Questionnaires",
      "confirmRemove": "Are you sure you want to remove this questionnaire assignment?",
      "viewResponses": "View responses",
      "useCase": {
        "checkins": "Regular check-ins",
        "onboarding": "Onboarding & intake",
        "progress": "Progress & satisfaction",
        "health": "Health & recovery",
        "competition": "Competition",
        "own": "Your templates"
      },
      "viewQuestions": "View questions",
      "assignFailed": "Couldn't assign this questionnaire.",
      "freqOnce": "One-time",
      "freqDaily": "Daily",
      "freqEveryDay": "Every {{day}}",
      "freqWeekFallback": "week",
      "freqMonthly": "Monthly (Day {{day}})",
      "dueToday": "Today",
      "dueTomorrow": "Tomorrow",
      "dueOverdue": "Overdue",
      "dueInDays": "In {{count}} days",
      "activeQuestionnaires": "Active Questionnaires",
      "unknownTemplate": "Unknown Template",
      "badgeSystem": "System",
      "badgePaused": "Paused",
      "typeRecovery": "Recovery",
      "typeCompetition": "Competition",
      "typeReadiness": "Readiness",
      "optionOnce": "One-time (send now)",
      "optionDaily": "Daily",
      "optionWeekly": "Weekly",
      "optionMonthly": "Monthly",
      "dayOfMonth": "Day {{day}}",
      "saving": "Saving...",
      "nextLabel": "Next: {{value}}",
      "sendNowTitle": "Send now (one-off, doesn't affect schedule)",
      "pause": "Pause",
      "resume": "Resume",
      "postCompTitle": "Post-Competition Reflection",
      "postCompDescription": "13-question debrief \u2014 prep quality, competition-day psychology, and future goal-setting. Click to view responses, or send manually after each competition.",
      "view": "View",
      "duplicateTitle": "Copy this template to create your own customised version",
      "duplicateEdit": "Duplicate & Edit",
      "duplicateDescription": "Three-section debrief \u2014 prep quality, competition-day psychology, and future goal-setting.",
      "sending": "Sending\u2026",
      "sent": "Sent \u2713",
      "sendNow": "Send Now",
      "addQuestionnaire": "Add Questionnaire",
      "noAvailableTemplates": "No available templates",
      "createNewTemplate": "Create a new template",
      "templateLabel": "Template",
      "selectTemplatePlaceholder": "Select a template...",
      "questionsCount": "{{count}} questions",
      "systemTemplate": "System Template",
      "frequencyLabel": "Frequency",
      "assigning": "Assigning...",
      "assign": "Assign",
      "createNewQuestionnaireTemplate": "Create new questionnaire template"
    },
    "clientDetailGeneralTab": {
      "loading": "Loading general info...",
      "generating": "Generating...",
      "downloadPlanPdf": "Download Plan PDF",
      "weeksToInclude": "Weeks to include",
      "includeAllWeeks": "Include all weeks",
      "all": "All",
      "weekN": "Week {{number}}",
      "allWeeksIncluded": "All weeks will be included.",
      "weeksSelected_one": "{{count}} week selected.",
      "weeksSelected_other": "{{count}} weeks selected.",
      "standardPdf": "Standard PDF",
      "standardPdfDesc": "Roomy editorial layout",
      "condensedPdf": "Condensed PDF",
      "condensedPdfDesc": "Tight layout \u00b7 ~30% fewer pages",
      "clientInformation": "Client Information",
      "noContactInfo": "No contact information available",
      "magicLinkHint": "Single-use sign-in link. Anyone with the link can open the app as this athlete \u2014 only share with them.",
      "copied": "Copied",
      "copySignInLink": "Copy sign-in link",
      "linkGenerateFailed": "Failed to generate link",
      "linkCopyFailed": "Failed to copy link",
      "coachingRelationship": "Coaching Relationship",
      "clientSince": "Client Since",
      "coachNotes": "Coach Notes",
      "noRelationshipData": "No relationship data found",
      "viewAll": "View All",
      "addNote": "Add Note",
      "introCall": "Intro Call",
      "moreNotes_one": "+{{count}} more note",
      "moreNotes_other": "+{{count}} more notes",
      "noCoachNotes": "No coach notes yet",
      "addFirstNote": "Add your first note",
      "recentClientNotes": "Recent Client Notes",
      "noClientNotes": "No notes from client yet",
      "billingSubscription": "Billing & Subscription",
      "intakeQuestionnaire": "Intake Questionnaire",
      "submittedOn": "Submitted {{date}}",
      "noAnswerProvided": "No answer provided",
      "noIntakeQuestionnaire": "No intake questionnaire submitted yet",
      "intakeVideos": "Intake Videos",
      "noIntakeVideos": "No intake videos uploaded yet",
      "videoLimitTitle": "Weekly Video Limit",
      "videoLimitDefaultUnlimited": "Default: unlimited",
      "videoLimitDefaultN": "Default: {{n}}",
      "videoLimitUnlimited": "Unlimited",
      "videoLimitVideosN": "{{n}} videos",
      "videoLimitCustom": "Custom\u2026",
      "videoLimitHelp": "Videos this client can send per training week (Mon\u2013Sun). The default follows your setting on the Video Review page. 0 blocks free uploads; videos you request don't count.",
      "videoLimitUsage": "{{used}} of {{limit}} videos used this training week"
    },
    "planSpecificTab": {
      "loading": "Loading plan data...",
      "noActivePlan": "No Active Plan",
      "noActivePlanHint": "Create a plan to see plan-specific data",
      "sessionTypesLabel": "Session Types:",
      "sessionTypes": {
        "warmup": "Warmup",
        "powerlifting": "Powerlifting",
        "weightlifting": "Weightlifting",
        "strength": "Strength",
        "accessories": "Accessories"
      },
      "twoWeek": "2-Week",
      "fourWeek": "4-Week",
      "programOverview": "Program Overview",
      "lastNWeeks": "Last {{count}} weeks",
      "noProgramData": "No program data available",
      "viewWeeklyWorkouts": "View Weekly Workouts",
      "addWeek": "Add Week",
      "selectWeekToDuplicate": "Select Week to Duplicate",
      "duplicateWeekHint": "Choose which week you want to duplicate with custom progression:",
      "weekN": "Week {{number}}"
    },
    "generateMealLibraryModal": {
      "title": "Generate meals with AI",
      "subtitle": "Set target macros, pick dietary restrictions, generate a batch for your library.",
      "reviewTitle": "Review generated meals",
      "reviewSubtitle": "Untick anything you don't want, edit names if needed, then save.",
      "slots": {
        "breakfast": "Breakfast",
        "lunch": "Lunch",
        "dinner": "Dinner",
        "snack": "Snack",
        "any": "Any"
      },
      "slotLabel": "Slot",
      "slotLocked": "(locked to this slot)",
      "howManyMeals": "How many meals",
      "upToTen": "Up to 10 per generation.",
      "targetMacrosPerMeal": "Target macros per meal",
      "fillRemaining": "Fill remaining ({{kcal}} kcal)",
      "fillRemainingTitle": "Fill from remaining day gap: {{kcal}} kcal",
      "macroCalories": "Calories",
      "macroProtein": "Protein",
      "macroCarbs": "Carbs",
      "macroFats": "Fats",
      "dietaryRestrictions": "Dietary restrictions (optional)",
      "dietaryHelp": "Stack any combination. The AI will respect every selected restriction strictly and also tag any extra restrictions a meal naturally meets.",
      "additionalNotes": "Additional notes (optional)",
      "notesPlaceholder": "e.g. Mediterranean style, no shellfish, batch-cookable",
      "caloriesRange": "Calories per meal must be between 50 and 3000.",
      "countRange": "Count must be between 1 and 10.",
      "saveFailed": "Failed to save any meals \u2014 please retry.",
      "generatingMeals_one": "Generating {{count}} meal\u2026",
      "generatingMeals_other": "Generating {{count}} meals\u2026",
      "resolvingIngredients": "Resolving ingredients against the food catalog. This can take 20\u201360 seconds.",
      "selectedCount": "{{selected}} of {{total}} selected",
      "selectMeal": "Select meal",
      "unselectMeal": "Unselect meal",
      "offTarget": "\u26a0 {{drift}} kcal off target",
      "generateCount": "Generate {{n}}",
      "saveToLibrary": "Save {{n}} to library",
      "saving": "Saving\u2026"
    },
    "techniqueFeedbackTab": {
      "title": "Technique Feedback",
      "viewing": "Viewing: {{period}}",
      "viewingCurrentMonth": "Viewing: Current Month",
      "addVoiceNote": "Add Voice Note",
      "dismiss": "Dismiss",
      "pendingTranscriptions": "Pending Transcriptions ({{count}})",
      "voiceNote": "Voice Note",
      "transcribe": "Transcribe",
      "notesTab": "Notes ({{count}})",
      "summaryTab": "Summary",
      "evolutionTab": "Evolution",
      "noNotesYet": "No Notes Yet",
      "noNotesHint": "Add voice notes or transcribe video feedback to see technique notes for {{category}}.",
      "loadFailed": "Failed to load transcriptions",
      "voiceNoteTranscriptionFailed": "Voice note saved but transcription failed. You can retry later.",
      "transcriptionFailed": "Transcription failed. Please try again.",
      "generateSummaryFailed": "Failed to generate summary"
    },
    "bodyMeasurementsCard": {
      "title": "Body Measurements",
      "coachOnly": "(coach-only)",
      "logMeasurements": "Log measurements",
      "loading": "Loading\u2026",
      "emptyState": "No measurements recorded yet. Log the first one to start tracking.",
      "deleteEntry": "Delete entry",
      "confirmDelete": "Delete this measurement?",
      "deleteFailed": "Failed to delete. Please try again.",
      "date": "Date",
      "standardAreas": "Standard areas (cm)",
      "customInHistory": "Custom (in history)",
      "addCustomArea": "Add custom area",
      "cmPlaceholder": "cm",
      "areaNamePlaceholder": "Area name",
      "notesOptionalPlaceholder": "Notes (optional)",
      "invalidValueFor": "Invalid value for {{area}}",
      "invalidCustomValue": "Invalid custom value",
      "enterAtLeastOne": "Enter at least one measurement.",
      "saveFailed": "Failed to save.",
      "saving": "Saving\u2026"
    },
    "powerliftingAnalytics": {
      "loading": "Loading analytics...",
      "squat": "Squat",
      "bench": "Bench",
      "deadlift": "Deadlift",
      "accessories": "Access.",
      "setsCount": "{{n}} sets",
      "sbdTitle": "Squat \u00b7 Bench \u00b7 Deadlift",
      "volumeByLift": "Volume by Lift",
      "intensityDistribution": "Intensity Distribution",
      "ratios": "Ratios",
      "viewAll": "View all",
      "bestTotal": "Best Total",
      "rpeVsOneRm": "RPE vs %1RM",
      "rpeVsOneRmDesc": "How hard each set felt against the load lifted. Drift up-and-left flags fatigue or an over-set 1RM.",
      "noRpeLogged": "No RPE logged yet",
      "noRpeHint": "RPE-tagged sets on powerlifting / strength blocks will plot here.",
      "strengthRatios": "Strength Ratios",
      "planned": "Planned",
      "actual": "Actual",
      "plannedGhostLegend": "Faint bar = planned volume from the active plan",
      "plannedVsActualTonnage": "Planned vs Actual Tonnage",
      "noPlanLinked": "No active plan in range \u2014 showing completed work only.",
      "unrankedSets": "{{n}} main-lift sets have no 1RM reference and are not ranked.",
      "intensityMainLiftsNote": "Completed sets vs family 1RM \u2014 main lifts only."
    },
    "weekExercisesModal": {
      "title": "{{weekLabel}} - Planned Exercises",
      "dayFallback": "Day {{n}}",
      "filteredLabel": "Filtered:",
      "exercise": "Exercise",
      "setsReps": "Sets\u00d7Reps",
      "weight": "Weight",
      "tonnage": "Tonnage",
      "dayTotal": "Day Total",
      "noExercises": "No exercises found for this week",
      "removeFilterHint": "Try removing the filter to see all exercises",
      "weekTotal": "Week Total"
    },
    "combinedActivityCard": {
      "title": "Weekly Activity",
      "sessions": "Sessions",
      "completionRate": "Completion rate",
      "setsCompleted": "Sets completed",
      "missedLifts": "Missed lifts",
      "missedExercises": "Missed exercises ({{count}})",
      "noSessionsScheduled": "No sessions scheduled this week",
      "feelingIntensity": "Feeling & intensity",
      "feelingSetsTitle": "{{count}} {{feeling}} set",
      "feelingSetsTitle_other": "{{count}} {{feeling}} sets",
      "noFeelingRatings": "No feeling ratings logged this week",
      "intensityZones": "Intensity zones",
      "prsThisWeek": "PRs this week",
      "recovery": "Recovery",
      "recoveryWithDays": "Recovery ({{count}} day)",
      "recoveryWithDays_other": "Recovery ({{count}} days)",
      "noRecoveryData": "No recovery data logged",
      "modifications": "Modifications ({{count}})",
      "skipped": "Skipped",
      "painTag": "(pain)",
      "painReported": "Pain reported ({{count}})",
      "metricSleep": "Sleep",
      "metricFatigue": "Fatigue",
      "metricStress": "Stress",
      "metricOverall": "Overall"
    },
    "tierBillingTab": {
      "cycleWeek": "week",
      "cycleMonth": "month",
      "cycle3Months": "3 months",
      "cycle6Months": "6 months",
      "cycleYear": "year",
      "updateFailed": "Failed to update subscription",
      "statusCancelling": "Cancelling",
      "statusActive": "Active",
      "statusPaused": "Paused",
      "statusPausedUntil": "Paused until {{date}}",
      "statusPastDue": "Past Due",
      "subscriptionTitle": "{{tier}} subscription",
      "noManageableSubscription": "No manageable subscription found for {{name}}. Pending or cancelled subscriptions don\u2019t appear here.",
      "continuousProgram": "Continuous program",
      "rate": "Rate",
      "cancels": "Cancels",
      "renews": "Renews",
      "accessStarted": "Access started",
      "lastPayment": "Last payment",
      "willCancelNotice": "Subscription will cancel at the end of the current period ({{date}}).",
      "pausedNotice": "Paused until {{date}} \u2014 will auto-resume on that date.",
      "pause": "Pause",
      "resuming": "Resuming...",
      "resumeNow": "Resume Now",
      "pauseSubscription": "Pause Subscription",
      "quickBreak": "Quick break",
      "resumeDateOptional": "Resume date (optional)",
      "pauseDateHelp": "Pick a preset above, set a custom date, or leave empty to pause indefinitely",
      "pauseUntil": "Pause until {{date}}",
      "pauseIndefinitely": "Pause Indefinitely",
      "cancelSubscription": "Cancel Subscription",
      "cancelPrompt": "Choose how to cancel {{name}}'s program subscription:",
      "cancelAtPeriodEnd": "Cancel at Period End",
      "cancelAtPeriodEndDesc": "Access continues until the current billing period ends",
      "cancelImmediately": "Cancel Immediately",
      "cancelImmediatelyDesc": "Stops the subscription right now \u2014 no further charges",
      "keepSubscription": "Keep Subscription"
    },
    "intensityDetailModal": {
      "title": "Intensity Distribution",
      "filterAll": "All",
      "filterWeightlifting": "Weightlifting",
      "filterStrength": "Strength",
      "filterAccessories": "Accessories",
      "exercisesAtZone": "Exercises at {{zone}} Intensity",
      "totalVolume": "Total Volume",
      "noExercisesAtIntensity": "No exercises logged at this intensity",
      "noExercisesForCategory": "No exercises logged at this intensity for this category",
      "clickBarHint": "Click a bar to see exercise breakdown"
    },
    "completedWeekColumn": {
      "title": "Completed Week",
      "noData": "No completion data for this week",
      "doneCount": "{{count}} done",
      "missedCount": "{{count}} missed",
      "restDay": "Rest day",
      "skipped": "SKIPPED",
      "notStarted": "Not started",
      "setsCount": "{{completed}}/{{prescribed}} sets",
      "reasonLabel": "Reason:"
    },
    "nutritionDay": {
      "createTitle": "Build a custom day",
      "editTitle": "Edit custom day",
      "namePlaceholder": "Day name (e.g. High-carb day)",
      "descriptionPlaceholder": "Description (optional)",
      "nameRequired": "Give the day a name first",
      "untitledDay": "Custom day",
      "dayTotal": "Day total",
      "saveDay": "Save day",
      "saveFailed": "Couldn't save \u2014 please retry",
      "editMeal": "Edit meal",
      "pickerTitle": "Add a custom day",
      "pickerSubtitle": "Drop a whole saved day into {{day}}",
      "createNew": "Build a new custom day",
      "noneYet": "No custom days yet. Build one to drop full days in fast.",
      "mealCount_one": "{{count}} meal",
      "mealCount_other": "{{count}} meals",
      "editDay": "Edit",
      "deleteDay": "Delete",
      "confirmDelete": "Delete this custom day?",
      "replace": "Replace day",
      "fillEmpty": "Fill empty slots"
    },
    "slotMealPickerModal": {
      "slot": {
        "breakfast": "Breakfast",
        "lunch": "Lunch",
        "dinner": "Dinner",
        "snack": "Snack"
      },
      "slotLower": {
        "breakfast": "breakfast",
        "lunch": "lunch",
        "dinner": "dinner",
        "snack": "snack"
      },
      "addTitle": "Add {{slot}} \u2014 {{day}}",
      "subtitle": "Tap a saved meal or starter to fill the slot.",
      "searchPlaceholder": "Search {{slot}} meals\u2026",
      "athleteSavedMeals": "{{name}}'s saved meals",
      "athleteSavedMealsGeneric": "Athlete's saved meals",
      "noSavedSlotMeals": "No saved {{slot}} meals.",
      "myTemplates": "My templates",
      "noTemplatesYet": "No saved templates yet. Build a meal with \"+ Ingredients\", tick \"Save as template\" in the editor, and it lands here.",
      "noTemplatesMatch": "No templates match.",
      "starterRecipes": "Starter recipes",
      "noStarterRecipes": "No starter recipes for this slot."
    },
    "hypertrophyAnalytics": {
      "loading": "Loading analytics...",
      "consistency": "Consistency ({{weeks}}w)",
      "setsPerMuscleGroup": "Sets per Muscle Group",
      "lastWeeks": "last {{weeks}}w",
      "noTaggedSets": "No tagged sets yet \u2014 muscle-group balance appears once the client logs tagged exercises.",
      "underTrainedWarning": "Under {{minSets}} sets/wk: {{groups}} \u2014 consider rebalancing for equilibrium.",
      "bodyweightVsNutrition": "Bodyweight vs Nutrition",
      "bodyweightVsNutritionDesc": "Weight trend against logged calories \u2014 reads the energy-balance lever at a glance.",
      "noBodyNutritionLogs": "No bodyweight or nutrition logs in range.",
      "legendBodyweight": "Bodyweight",
      "legendCalories": "Calories",
      "weeklyVolume": "Weekly Volume",
      "noVolumeHistory": "No volume history yet."
    },
    "chartAnalysisChat": {
      "title": "PIE Analysis",
      "analysisFailed": "Failed to get analysis. Please try again.",
      "loadDataPrompt": "Load data to enable analysis",
      "noDataPlaceholder": "No data loaded",
      "askPlaceholder": "Ask about the data..."
    },
    "clientRepMaxEditor": {
      "title": "Enter rep maxes (1RM)",
      "hint": "Set the athlete's current 1RMs directly \u2014 saved as today's training max and used by the ratios below.",
      "addPlaceholder": "Add exercise (e.g. Overhead Squat)",
      "add": "Add",
      "saveFailed": "Failed to save",
      "savedNote": "Saved",
      "saving": "Saving\u2026",
      "save": "Save",
      "saveCount": "Save ({{count}})"
    },
    "requestRepMaxPanel": {
      "title": "Request rep maxes",
      "titleFromClient": "Request rep maxes from {{name}}",
      "sendFailed": "Failed to send request",
      "pendingRequests_one": "pending request",
      "pendingRequests_other": "pending requests",
      "andMore": ", +{{count}} more",
      "searchPlaceholder": "Search exercises (e.g. Power Snatch)",
      "addCustom": "Add custom: \"{{name}}\"",
      "quickAdd": "Quick add:",
      "inThisRequest_one": "In this request ({{count}}):",
      "inThisRequest_other": "In this request ({{count}}):",
      "notePlaceholder": "Optional note to the athlete",
      "sentSuccess_one": "Sent {{count}} request as one notification.",
      "sentSuccess_other": "Sent {{count}} requests as one notification.",
      "sending": "Sending\u2026",
      "send": "Send",
      "sendCount": "Send ({{count}})"
    },
    "activityTab": {
      "chat": "Chat",
      "expandChat": "Expand chat",
      "collapseChat": "Collapse chat",
      "automations": "Automations",
      "planFallback": "Plan",
      "noActivePlan": "No active plan \u2014 assign a plan to configure automations.",
      "weeklySummary": "Weekly Summary",
      "loadFailed": "Failed to load activity data. Please try again."
    },
    "hyroxAnalytics": {
      "loading": "Loading analytics...",
      "bestSim": "Best Sim",
      "runVolume": "Run volume",
      "avgPace": "Avg pace",
      "stations": "Stations",
      "stationBenchmarks": "Station Benchmarks",
      "noStationBests": "No station bests logged yet (Ski Erg, Sled, Row, Wall Balls, etc.).",
      "runVolumeAndPace": "Run Volume & Pace",
      "noRuns": "No runs logged in range.",
      "simulationTimes": "Simulation Times",
      "noSimulations": "No race / simulation results logged.",
      "simulation": "Simulation",
      "planned": "Planned",
      "actual": "Actual",
      "planCompliance": "{{actual}} of {{planned}} planned km ({{pct}}%)"
    },
    "fillGapModal": {
      "title": "Fill missing gap",
      "sourceTemplate": "Template",
      "sourceStarter": "Starter",
      "sourceQuick": "Quick",
      "dailyMacroGap": "Daily macro gap",
      "scaledHint": "Suggestions are scaled to close this gap. Slot options: {{slots}}.",
      "notEnoughMeals": "Fill in at least 2 of breakfast / lunch / dinner before using Fill Gap.",
      "noGap": "Daily target is already met \u2014 no gap to fill.",
      "bestMatch": "Best match",
      "outOfBoundsScale": "Out-of-bounds scale",
      "scaledLine_one": "Scaled {{percent}}% \u00b7 {{count}} ingredient",
      "scaledLine_other": "Scaled {{percent}}% \u00b7 {{count}} ingredients",
      "use": "Use",
      "footerNote": "Suggestions ranked by macro distance (protein weighted 2\u00d7). Scaling clamped to 30\u2013300% of the base recipe."
    },
    "histogramFilterBar": {
      "primary": {
        "all": "All",
        "weightlifting": "WL",
        "strength": "Str",
        "accessories": "Acc"
      },
      "sub": {
        "snatch": "Snatch",
        "clean": "Clean",
        "jerk": "Jerk",
        "clean_jerk": "C&J",
        "squat": "Squats",
        "deadlift": "Deadlifts",
        "chest": "Chest",
        "back": "Back",
        "shoulders": "Shoulders",
        "arms": "Arms",
        "core": "Core",
        "legs": "Legs"
      }
    },
    "plannedWeekColumn": {
      "title": "Planned Week",
      "noWorkoutData": "No workout data for this week",
      "restDay": "Rest day"
    },
    "trainingPeriodSection": {
      "title": "Active Training Period",
      "weekRange": "Week {{start}}-{{end}}",
      "noPeriodSetup": "No training period has been set up yet.",
      "setupTrainingPeriod": "Setup Training Period",
      "noActivePeriod": "No active training period defined \u2022 Click to manage periods",
      "weeklySchedule": "Weekly Training Schedule",
      "scheduleType": {
        "mandatory": "mandatory",
        "optional": "optional",
        "rest": "rest"
      },
      "legendMandatory": "Mandatory (M)",
      "legendOptional": "Optional (O)",
      "legendRest": "Rest (R)"
    },
    "nutritionBodyCard": {
      "title": "Nutrition & Body",
      "open": "Open",
      "mealsLogged": "Meals logged",
      "avgMealsPerDay": "Avg meals/day",
      "cal": "Cal",
      "protein": "Protein",
      "carbs": "Carbs",
      "fat": "Fat",
      "bodyweight": "Bodyweight",
      "stable": "stable",
      "lastWeight": "Last: {{weight}}kg ({{date}})",
      "emptyState": "No nutrition or body data this week"
    },
    "weekNavigator": {
      "noWeeksAvailable": "No weeks available",
      "week": "Week {{number}}",
      "weekWithRange": "Week {{number}} ({{range}})"
    },
    "dayByDayTimeline": {
      "restDay": "Rest day",
      "title": "Day-by-Day",
      "activitiesCount": "{{count}} activities"
    },
    "hyroxCompetitionCard": {
      "raceResults": "Race Results",
      "history": "History",
      "latest": "Latest",
      "bestSim": "Best sim",
      "noRaceResults": "No race results logged"
    },
    "competitionCardDispatch": {
      "noCompetitionTracking": "No competition tracking for this sport"
    },
    "sectionErrorBoundary": {
      "loadFailed": "{{label}} analytics couldn\u2019t load",
      "unaffected": "Other sections are unaffected. Try refreshing."
    },
    "sportConfig": {
      "weightlifting": "Weightlifting",
      "powerlifting": "Powerlifting",
      "hypertrophy": "Hypertrophy",
      "running": "Running",
      "triathlon": "Triathlon",
      "hyrox": "Hyrox",
      "crossfit": "CrossFit",
      "techniqueNotes": "Technique Notes",
      "technicalNotes": "Technical Notes"
    },
    "demoClient": {
      "badge": "Demo",
      "bannerTitle": "This is your demo client",
      "bannerBody": "Example client with sample data so you can see the product with a full history. Remove it any time.",
      "remove": "Remove demo client",
      "removing": "Removing...",
      "removeFailed": "Could not remove the demo client"
    },
    "promoExport": {
      "title": "Promo export",
      "subtitle": "Turn this athlete's data into branded promo material",
      "exportButton": "Export",
      "loadFailed": "Could not load export data",
      "actionFailed": "Export failed. Please try again.",
      "contentLabel": "Content",
      "contentAnalytics": "Training volume",
      "contentPrs": "PR evolution",
      "contentTestimonial": "Testimonial",
      "contentPdf": "PDF report",
      "formatLabel": "Format",
      "formatStory": "Story 9:16",
      "formatWide": "Wide 16:9",
      "formatSquare": "Square 1:1",
      "formatPdf": "A4 PDF",
      "periodLabel": "Period",
      "customPeriod": "Custom",
      "testimonialPicker": "Pick a testimonial",
      "anonymize": "Hide the athlete's name",
      "athleteLabel": "Athlete",
      "downloadPng": "Download image",
      "downloadPdf": "Download PDF",
      "saveToGrowth": "Save to Growth",
      "publishMagnet": "Publish as lead magnet",
      "queuePost": "Queue as post",
      "downloaded": "Downloaded.",
      "savedToGrowth": "Saved to your Growth resources.",
      "queued": "Queued in Carousel Studio.",
      "preview": "Preview",
      "previewCover": "cover page",
      "noData": "No data for this selection",
      "cardTrainingVolume": "Training volume",
      "cardPlanned": "Planned",
      "cardDone": "Done",
      "cardTotalLifted": "Total lifted",
      "cardWeeks": "Weeks",
      "cardBestWeek": "Biggest week",
      "cardPersonalRecords": "Personal records",
      "cardKgAdded": "added across the big lifts",
      "cardTestimonialTitle": "What clients say",
      "cardPdfTitle": "Progress report",
      "cardPdfSubtitle": "Real training data. Real results.",
      "cardCoachedBy": "Coached by",
      "styleLabel": "Style",
      "styleReset": "Reset to brand",
      "styleAccent": "Accent",
      "styleHeadingFont": "Heading: brand font",
      "styleBodyFont": "Body: brand font",
      "chartTitle": "Export this chart",
      "chartMissRate": "Miss rate",
      "chartQualityCurve": "Quality curve",
      "statMissRate": "Miss rate",
      "statSets": "Sets",
      "statMisses": "Misses",
      "statAvgFeeling": "Avg feeling",
      "chartStyleLabel": "Chart style",
      "chartStyle_heatmap": "Heatmap",
      "chartStyle_line": "Line",
      "chartStyle_bars": "Bars",
      "chartStyle_zones": "By zone",
      "chartStyle_missIntensity": "Miss intensity"
    },
    "pastDueGrace": {
      "title": "Your payment failed",
      "body": "Your monthly subscription payment could not be charged to your card. To keep your coach account open, please retry the payment or update your card details \u2014 it only takes a minute.",
      "bypass_one": "Continue anyway \u2014 bypass ({{count}} day left)",
      "bypass_other": "Continue anyway \u2014 bypass ({{count}} days left)",
      "footer": "Questions about your payment?"
    },
    "recordsEditor": {
      "title": "Athlete records",
      "achievedDate": "Achieved on",
      "hint": "Type a value and save \u2014 the latest update becomes the record. Times as mm:ss (or h:mm:ss).",
      "save": "Save records",
      "saving": "Saving\u2026",
      "saved": "Saved",
      "delete": "Delete record",
      "loadFailed": "Could not load the records.",
      "saveFailed": "Could not save: {{metrics}}. Check the values and try again.",
      "deleteFailed": "Could not delete the record.",
      "catStations": "Race stations",
      "catRunning": "Running",
      "catErgos": "Ergs",
      "catStrength": "Strength",
      "catCompetition": "Competition",
      "catOther": "Other"
    },
    "reviewAutosave": {
      "finishEditing": "Finish or close the current note or recording before sending or leaving.",
      "loadFailed": "Could not load the latest review. Retry to protect your saved work.",
      "enabled": "Autosave",
      "saved": "Saved to your account",
      "unsaved": "Unsaved changes",
      "saving": "Saving…",
      "error": "Not saved — retry",
      "retry": "Retry save",
      "saveFailed": "Could not save. Your draft is still here. Please retry.",
      "closeFailed": "Your review could not be saved. Retry before closing.",
      "backupFailed": "Device backup unavailable. Wait for “Saved to your account” before leaving.",
      "conflict": "This review changed in another tab. Your unsaved draft has been kept. Saving this version will replace the other version.",
      "keepMine": "Save this version instead",
      "useSaved": "Use the saved version",
      "alreadySent": "This review has already been sent or cancelled. Your unsaved copy is kept on this device.",
      "loading": "Loading your review draft…",
      "loadingMedia": "Loading attachment…",
      "retryMedia": "Attachment unavailable — retry",
      "annotatedFrame": "Annotated video frame",
      "saveVideo": "Save video feedback"
    }
  },
  "athlete": {
    "ergoPrescription": {
      "allOut": "All out",
      "high": "High effort",
      "moderate": "Moderate",
      "easy": "Easy",
      "recovery": "Recovery",
      "rounds": "{{count}} rounds",
      "work": "Work",
      "phase": "Phase {{count}}",
      "complete": "Complete exercise",
      "undo": "Mark exercise incomplete"
    },
    "aiMealPlanQuestionnaireModal": {
      "title": "AI Meal Plan",
      "stepIndicator": "Step {{step}} of {{total}} \u2014 {{label}}",
      "stepMacros": "Macros",
      "stepPeople": "People",
      "stepDuration": "Duration",
      "stepPreferences": "Preferences",
      "stepDietary": "Dietary",
      "macrosTitle": "Your Macros",
      "macrosSubtitle": "Define the nutritional targets for your meal plan",
      "loadingTargets": "Loading your targets...",
      "followObjectives": "Follow your set objectives?",
      "yes": "Yes",
      "noCustom": "No, custom",
      "calories": "Calories",
      "protein": "Protein",
      "carbs": "Carbs",
      "fats": "Fats",
      "enqueuedTitle": "Generating your meal plan",
      "enqueuedDescription": "You can leave this page \u2014 we'll let you know when it's ready.",
      "genericError": "Something went wrong. Please try again.",
      "cuisineItalian": "Italian",
      "cuisineAsian": "Asian",
      "cuisineIndian": "Indian",
      "cuisineMediterranean": "Mediterranean",
      "cuisineMexican": "Mexican",
      "cuisineMiddleEastern": "Middle Eastern",
      "cuisineFrench": "French",
      "cuisineJapanese": "Japanese",
      "cuisineThai": "Thai",
      "cuisineAmerican": "American",
      "dietOmnivore": "No restriction",
      "dietVegetarian": "Vegetarian",
      "dietVegan": "Vegan",
      "dietPescatarian": "Pescatarian",
      "dietFlexitarian": "Flexitarian",
      "dietKeto": "Keto",
      "dietPaleo": "Paleo",
      "dietHalal": "Halal",
      "dietKosher": "Kosher",
      "allergenGluten": "Gluten",
      "allergenDairy": "Dairy",
      "allergenEggs": "Eggs",
      "allergenPeanuts": "Peanuts",
      "allergenTreeNuts": "Tree nuts",
      "allergenSoy": "Soy",
      "allergenShellfish": "Shellfish",
      "allergenFish": "Fish",
      "allergenSesame": "Sesame",
      "usingSavedObjectives": "Using your saved objectives",
      "recalculateNow": "Recalculate Now",
      "macroCalculator": "Macro Calculator",
      "loadingData": "Loading your data...",
      "bodyweightKg": "Bodyweight (kg)",
      "lastLogged": "Last logged: {{weight}} kg",
      "noWeightLogged": "No weight logged yet",
      "weightPlaceholder": "e.g. 80",
      "log": "Log",
      "trainingType": "Training Type",
      "fromYourProfile": "From your profile",
      "averageStepsPerDay": "Average Steps Per Day",
      "stepsSedentary": "<5k (Sedentary)",
      "stepsLight": "5-8k (Light)",
      "stepsModerate": "8-12k (Moderate)",
      "stepsActive": "12k+ (Active)",
      "goal": "Goal",
      "goalLose": "Lose",
      "goalLoseSub": "-300 kcal",
      "goalMaintain": "Maintain",
      "goalMaintainSub": "\u00b10",
      "goalGain": "Gain",
      "goalGainSub": "+300 kcal",
      "calculate": "Calculate",
      "newTargets": "New Targets",
      "saveAndUseTargets": "Save & Use These Targets",
      "proteinG": "Protein (g)",
      "carbsG": "Carbs (g)",
      "fatsG": "Fats (g)",
      "caloriesPlaceholder": "e.g. 2200",
      "proteinPlaceholder": "e.g. 150",
      "carbsPlaceholder": "e.g. 250",
      "fatsPlaceholder": "e.g. 70",
      "actualFromMacros": "Actual from macros: {{kcal}} kcal",
      "noSavedObjectives": "No saved objectives found. Use the calculator on the nutrition page to set them, or enter your macros manually below.",
      "peopleTitle": "People",
      "peopleSubtitle": "How many people is this meal plan for?",
      "personN": "Person {{num}}",
      "loadSaved": "Load saved",
      "nameOptional": "Name (optional)",
      "namePlaceholder": "e.g. Partner",
      "enterMacros": "Enter macros",
      "savedFeedback": "Saved!",
      "saveForNextTime": "Save for next time",
      "weightKg": "Weight (kg)",
      "heightCm": "Height (cm)",
      "age": "Age",
      "sex": "Sex",
      "male": "Male",
      "female": "Female",
      "stepsPerDay": "Steps / day",
      "calculateMacros": "Calculate macros",
      "calShort": "Cal",
      "proShort": "Pro",
      "totalCombinedMacros": "Total combined macros ({{count}} {{unit}})",
      "person": "person",
      "people": "people",
      "durationTitle": "Duration",
      "durationSubtitle": "How many days should the meal plan cover?",
      "custom": "Custom",
      "numberOfDays": "Number of days (1-30)",
      "daysPlaceholder": "e.g. 14",
      "day": "day",
      "days": "days",
      "mealPlanForPeople": "Meal plan for {{people}} people over {{days}} {{dayWord}}",
      "personalMealPlan": "Your personal {{days}}-day meal plan",
      "preferencesTitle": "Preferences",
      "preferencesSubtitle": "Customize your meal preferences",
      "recipeComplexity": "Recipe complexity",
      "tier1Time": "15-30 min",
      "tier1Label": "Quick & Simple",
      "tier1Desc": "Fewer ingredients, minimal prep",
      "tier2Time": "30-45 min",
      "tier2Label": "Balanced",
      "tier2Desc": "Moderate complexity",
      "tier3Time": "45-60 min",
      "tier3Label": "Gourmet",
      "tier3Desc": "More ingredients, advanced techniques",
      "max5Title": "Max 5 ingredients per meal",
      "max5Desc": "Generate simple meals with 5 or fewer ingredients. Salt, pepper, water, and oil don't count.",
      "breakfastType": "Breakfast type",
      "breakfastSweet": "Sweet",
      "breakfastSalty": "Salty",
      "breakfastMixed": "Mixed",
      "cuisinePreferences": "Cuisine preferences (lunch & dinner)",
      "additionalNotes": "Additional notes (optional)",
      "notesPlaceholder": "Other preferences (e.g. low spice, batch-cook friendly, no leftovers)\u2026",
      "dietaryTitle": "Dietary needs",
      "dietarySubtitle": "Optional \u2014 skip if you have none. Hit Generate to finish.",
      "dietType": "Diet type",
      "allergiesLabel": "Allergies & foods to exclude",
      "allergiesDesc": "Anything selected here is excluded from every recipe and the shopping list.",
      "allergyPlaceholder": "Add another (e.g. mushrooms)\u2026",
      "generatingTitle": "Generating your meal plan...",
      "generatingBody": "Our AI chef is preparing {{days}} {{dayWord}} of meals.",
      "generatingTime": "This may take 30-60 seconds",
      "generationFailed": "Generation Failed",
      "tryAgain": "Try Again",
      "savingPreferences": "Saving preferences...",
      "generateMealPlan": "Generate Meal Plan"
    },
    "athletePrescribedMealModal": {
      "slots": {
        "breakfast": "Breakfast",
        "lunch": "Lunch",
        "dinner": "Dinner",
        "snack": "Snack"
      },
      "nameRequired": "Name is required",
      "caloriesPositive": "Calories must be a positive number",
      "couldNotSave": "Could not save \u2014 please try again",
      "noCoachThisWeek": "Cannot save \u2014 no coach assigned to this week",
      "saved": "Saved",
      "saveFailed": "Failed to save \u2014 please retry",
      "restoredCoachChoice": "Restored coach's choice",
      "restoreFailed": "Failed to restore \u2014 please retry",
      "loggedMeal": "Logged {{name}}",
      "logFailed": "Failed to log meal",
      "modified": "Modified",
      "coachPrescribed": "Coach prescribed",
      "mealName": "Meal name",
      "ingredients": "Ingredients",
      "editMeal": "Edit meal",
      "noIngredientsLeft": "No ingredients left \u2014 add at least one below to save.",
      "per100g": "per 100g",
      "removeIngredient": "Remove ingredient",
      "searchFoodsPlaceholder": "Add ingredient \u2014 search foods\u2026",
      "createAsNewFood": "Create \u201c{{name}}\u201d as a new food",
      "noMatchesCreateHint": "No matches \u2014 create it with its nutrition per 100g.",
      "newFood": "New food:",
      "valuesPer100g": "(values per 100g)",
      "macroKcal": "kcal",
      "macroProteinG": "Protein g",
      "macroCarbsG": "Carbs g",
      "macroFatG": "Fat g",
      "addToMeal": "Add to meal",
      "noIngredientDetails": "No ingredient details available.",
      "starterSealedHint": "Starter recipes can't be edited per-ingredient. Use Swap to pick a different meal.",
      "notes": "Notes",
      "mealTotals": "Meal totals",
      "vsCoach": "({{delta}} vs coach)",
      "logged": "Logged",
      "logAsEaten": "Log as eaten",
      "swapMealTitle": "Swap for a different meal entirely",
      "swapMeal": "Swap meal",
      "restoreCoachTitle": "Replace your modification with the coach's original meal",
      "restoreCoachs": "Restore coach's",
      "noCoachAssigned": "No coach assigned",
      "addAtLeastOneIngredient": "Add at least one ingredient",
      "saveChangesTitle": "Save these changes as your version of this meal",
      "saveChanges": "Save changes"
    },
    "clientChat": {
      "noAnswer": "No answer",
      "yes": "Yes",
      "no": "No",
      "questionCountShort": "{{count}}Q",
      "deleteQuestionnaireConfirm": "Delete this questionnaire message?",
      "questionnaireNotFound": "Questionnaire not found",
      "moreQuestions": "+{{count}} more questions",
      "skipped": "Skipped",
      "waitingForResponse": "Waiting for response",
      "loadingEllipsis": "Loading\u2026",
      "completedLabel": "Completed",
      "acceptFailed": "Failed to accept request",
      "declineConfirm": "Are you sure you want to decline this request? The client will be removed from your chat list.",
      "declineFailed": "Failed to decline request",
      "unknownSender": "Unknown",
      "sendFailed": "Failed to send message",
      "deleteFailed": "Failed to delete message",
      "videoTooLarge": "Video file must be less than 100MB",
      "uploadVideoFailed": "Failed to upload video",
      "voiceNoteMissingData": "Cannot send voice note: missing conversation data",
      "voiceNoteFailed": "Failed to send voice note: {{error}}",
      "unknownError": "Unknown error",
      "chatWith": "Chat with {{name}}",
      "respondLaterTitle": "Mark as needing a response \u2014 will reappear on your dashboard",
      "reminderSet": "Reminder set",
      "respondLater": "Respond Later",
      "newClientRequest": "New Client Request",
      "athleteWantsToWork": "This athlete wants to work with you",
      "decline": "Decline",
      "acceptRequest": "Accept Request",
      "noMessagesYet": "No messages yet. Start the conversation!",
      "today": "Today",
      "yesterday": "Yesterday",
      "deleteMessageConfirm": "Delete this message?",
      "deleteMessageTitle": "Delete message",
      "you": "You",
      "typeMessagePlaceholder": "Type a message...",
      "sendVideoTitle": "Send video",
      "recordVoiceNoteTitle": "Record voice note"
    },
    "myTrainingDataPage": {
      "noCompetitionData": "No competition data yet",
      "addCompetitionsHint": "Add competitions to see your progress",
      "noRepMaxHistory": "No rep max history yet",
      "noTonnageData": "No tonnage data yet",
      "addRepMax": "Add rep max",
      "repMaxEvolution": "Rep Max Evolution",
      "noHistoryData": "No history data available",
      "noDataAvailable": "No data available",
      "breakdownByTrainingType": "Breakdown by Training Type",
      "percentOfTotal": "{{pct}}% of total",
      "breakdownByMovement": "Breakdown by Movement",
      "breakdownByMovementGroup": "Breakdown by Movement Group",
      "breakdownByMuscleGroup": "Breakdown by Muscle Group",
      "moreCount_one": "+{{count}} more",
      "moreCount_other": "+{{count}} more",
      "moreCount": "+{{count}} more",
      "breakdownByExercise": "Breakdown by Exercise",
      "noExercisesFound": "No exercises found",
      "categoryTonnageTitle": "{{category}} Tonnage",
      "totalTonnage": "Total Tonnage",
      "balanceLogLiftsToRate": "Log lifts to rate",
      "balanceWellBalanced": "Well balanced",
      "balanceMinorImbalances": "Minor imbalances",
      "balanceOutOfBalance": "Out of balance",
      "balanceSubNoData": "Track your key lifts to see how your strength ratios compare.",
      "balanceSubGood": "Your strength ratios sit close to their targets \u2014 nothing to chase.",
      "balanceSubDrifting": "Some lifts are drifting from their target ratios \u2014 check the full analysis.",
      "allMovements": "All movements",
      "title": "My Training Data",
      "subtitle": "Track your progress and performance",
      "athleteRating": "Athlete Rating",
      "athleteRatingSub": "See your tier across all sports",
      "ratioBalance": "Ratio Balance",
      "addRepMaxFor": "Add rep max for {{numerator}} / {{denominator}}",
      "targetPct": "Target: {{pct}}%",
      "enterRepMaxesHint": "Enter rep maxes to see ratio analysis",
      "addRepMaxes": "Add Rep Maxes",
      "competitionMaxes": "Competition Maxes",
      "addShort": "+ Add",
      "viewAll": "View All",
      "addCompetition": "Add Competition",
      "repMaxProgression": "Rep Max Progression",
      "searchExercisesPlaceholder": "Search exercises...",
      "trainingTonnage": "Training Tonnage",
      "week": "Week",
      "month": "Month",
      "categoryLabel": "Category:",
      "overviewGroup": "Overview",
      "allOption": "All",
      "specificGroup": "Specific",
      "weekOf": "Week of {{date}}",
      "noData": "No data",
      "previousPeriod": "Previous period",
      "nextPeriod": "Next period",
      "weeklyPerformance": "Weekly Performance",
      "metric": "Metric",
      "expected": "Expected",
      "actual": "Actual",
      "sets": "Sets",
      "rate": "Rate",
      "weeklyPerformanceNote": "Planned vs actual performance for this week"
    },
    "nutritionPage": {
      "justNow": "just now",
      "minAgo_one": "{{count}} min ago",
      "minAgo_other": "{{count}} min ago",
      "hoursAgo_one": "{{count}}h ago",
      "hoursAgo_other": "{{count}}h ago",
      "breakfast": "Breakfast",
      "lunch": "Lunch",
      "dinner": "Dinner",
      "snack": "Snack",
      "timelineTooAggressiveDeficit": "That timeline needs fewer calories than is safe. Try aiming for {{date}} instead.",
      "timelineTooAggressiveSurplus": "That timeline needs too aggressive a surplus. Try {{date}} instead.",
      "swapNoCoach": "Cannot save swap \u2014 no coach assigned",
      "swappedTo": "Swapped to {{name}}",
      "swapSaveFailed": "Failed to save swap",
      "restoredCoachChoice": "Restored coach's choice",
      "restoreFailed": "Failed to restore",
      "loggedMeal": "Logged {{name}}",
      "logMealFailed": "Failed to log meal",
      "dailyTargetUpdated": "Daily target updated",
      "invalidWeight": "Enter a valid weight in kg",
      "loggedWeight": "Logged {{weight}} kg",
      "logWeightFailed": "Failed to log weight",
      "coachLockedAlert": "Your coach has set your targets. Ask them to update if you want to change.",
      "logBodyweightFirst": "Please log your bodyweight first to calculate targets",
      "calculateTargetsFirst": "Please calculate your calorie targets first",
      "mealUpdated": "\"{{name}}\" updated",
      "mealSaved": "\"{{name}}\" saved successfully!",
      "saveLogFailed": "Failed to save nutrition log. Please try again.",
      "confirmDeleteLog": "Are you sure you want to delete this log?",
      "deleteLogFailed": "Failed to delete log. Please try again.",
      "recipeCreated": "\"{{name}}\" created successfully!",
      "createRecipeFailed": "Failed to create recipe. Please try again.",
      "loadMealForEditFailed": "Could not load meal for editing.",
      "loadMealFailed": "Failed to load meal. Please try again.",
      "confirmDeleteRecipe": "Are you sure you want to delete \"{{name}}\"?",
      "recipeDeleted": "\"{{name}}\" deleted successfully.",
      "deleteRecipeFailed": "Failed to delete recipe. Please try again.",
      "recipeAddedToLog": "\"{{name}}\" added to food log!",
      "addRecipeToLogFailed": "Failed to add recipe to log. Please try again.",
      "backToDashboard": "Back to Dashboard",
      "title": "Nutrition",
      "trackYourFuel": "Track your fuel",
      "subtitle": "Track your nutrition and optimize your performance",
      "tabToday": "Today",
      "calculate": "Calculate",
      "tabWeekly": "Weekly",
      "tabMyPlan": "My plan",
      "tabRecipes": "Recipes",
      "tabMealPrep": "Meal Prep",
      "weeklyTabTitle": "Coach's weekly meal plan",
      "logFood": "Log Food",
      "mealPrepTabTitle": "Bulk-cook logging with partner split",
      "autopilotCta": "Let the coach automate it",
      "autopilotCtaBlurb": "Auto-adjust your targets from your activity & get reminders to stay on track.",
      "targetsSetByCoach": "Targets set by your coach",
      "coachLockedBlurb": "You can browse the calculator for reference, but changes won't save while a coach prescription is active. Message your coach to update.",
      "editDailyTargets": "Edit Daily Targets",
      "manualEdit": "Manual Edit",
      "recalculate": "Recalculate",
      "proteinG": "Protein (g)",
      "carbsG": "Carbs (g)",
      "fatsG": "Fats (g)",
      "caloriesAutoCalculated": "Calories (auto-calculated)",
      "autoTargetTitle": "Auto-target toward your goal",
      "applyTarget": "Apply target",
      "updateTarget": "Update target",
      "currentWeight": "Current weight",
      "sevenDayAvg": "7-day avg",
      "goalLabel": "Goal",
      "inDays": "in {{days}}d",
      "avgSteps": "Avg steps",
      "syncedLabel": "synced",
      "manualLabel": "manual",
      "maintenance": "Maintenance",
      "kcalPerDay": "kcal/day",
      "dailyTarget": "Daily target",
      "vsMaintenance": "vs maintenance",
      "autoUpdatesHint": "Updates as your weight and step count change. Tap <b>Update target</b> to apply to your daily plan.",
      "macroCalculator": "Macro Calculator",
      "macroCalculatorBlurb": "Calculate your daily nutrition targets",
      "currentBodyweight": "Current Bodyweight",
      "sevenDayAvgKg": "7-day avg: {{value}} kg",
      "autoLoadedFromLog": "Auto-loaded from your latest log",
      "noWeightLogged": "No weight logged",
      "logTodaysWeightPlaceholder": "Log today's weight (kg)",
      "logButton": "Log",
      "trainingType": "Training Type",
      "fromYourProfile": "From your profile",
      "averageStepsPerDay": "Average Steps Per Day",
      "syncingSteps": "Syncing your steps\u2026",
      "syncedAgo": "synced {{time}}",
      "resyncNow": "Re-sync now",
      "refresh": "Refresh",
      "useDifferentNumber": "Use a different number",
      "manualOverrideToday": "Manual override for today.",
      "syncedAvgSteps": "Synced 7-day average: {{steps}} steps.",
      "useSyncedAverage": "Use synced average",
      "connectHealth": "Connect {{service}}",
      "enterAvgManuallyPlaceholder": "Or enter your daily average manually",
      "connectHint": "Connect for automatic updates whenever your activity changes.",
      "stepsSedentary": "<5000 (Sedentary)",
      "stepsLight": "5-8k (Light)",
      "stepsModerate": "8-12k (Moderate)",
      "stepsVeryActive": "12k+ (Very Active)",
      "noStepData": "No step data yet \u2014 your target assumes you're sedentary. Sync a device or enter your typical daily steps for an accurate number.",
      "goalMaintain": "Maintain Weight",
      "goalLose": "Lose Weight (-300 kcal)",
      "goalGain": "Gain Muscle (+300 kcal)",
      "yourDailyTargets": "Your Daily Targets",
      "setByYourCoach": "Set by your coach",
      "setByCoach": "Set by coach",
      "totalCalories": "Total Calories",
      "protein": "Protein",
      "carbs": "Carbs",
      "fats": "Fats",
      "logBodyweightToCalculate": "Please log your bodyweight to calculate targets",
      "clickCalculateHint": "Click Calculate to see your personalized nutrition targets",
      "recipesBlurb": "Browse recipes or create your own",
      "createRecipe": "Create Recipe",
      "generateMealsButton": "Generate Meals",
      "yourDailyTarget": "Your Daily Target",
      "targetPerMeal": "Target Per Meal",
      "allRecipes": "All Recipes",
      "myRecipes": "My Recipes",
      "snacks": "Snacks",
      "noRecipesYet": "No Recipes Yet",
      "noRecipesBlurb": "Create your first custom recipe to get started!",
      "createFirstRecipe": "Create Your First Recipe",
      "readyToCook": "Ready to Cook?",
      "calcTargetsFirstRecipes": "Calculate your calorie targets first, then generate a personalized meal plan for the day.",
      "clickGenerateMeals": "Click \"Generate Meals\" to get breakfast, lunch, and dinner recipes tailored to your calorie target.",
      "totalDailyCalories": "Total Daily Calories",
      "addToFoodLog": "Add to Food Log",
      "viewDetails": "View Details",
      "ingredientsLabel": "Ingredients:",
      "instructionsLabel": "Instructions:",
      "editItems": "Edit items",
      "editItemsQuantities": "Edit items & quantities",
      "loggedTimes_one": "Logged {{count}}x",
      "loggedTimes_other": "Logged {{count}}x",
      "calculationBreakdown": "Calculation Breakdown",
      "bmrLabel": "BMR (weight \u00d7 22):",
      "activityFactor": "Activity factor:",
      "trainingModifier": "Training modifier ({{type}}):",
      "goalModifier": "Goal modifier ({{goal}}):",
      "todaysPlanFromCoach": "Today's plan from your coach",
      "todaysPlan": "Today's plan",
      "dayPlan": "{{day}}'s plan",
      "today": "Today",
      "todayBadge": "TODAY",
      "modified": "Modified",
      "starter": "Starter",
      "noMealsLogged": "No meals logged",
      "noMealsTapToAdd": "No meals logged yet \u2014 tap to add",
      "mealCardTitle": "View ingredients, edit quantities, log, or swap",
      "swappedFromTitle": "Swapped from \"{{name}}\" ({{delta}} kcal)",
      "editMeal": "Edit meal",
      "deleteMeal": "Delete meal",
      "macrosDifferTitle": "Macros differ from coach's plan",
      "swapWarnBody": "You're swapping <b>{{original}}</b> ({{originalKcal}} kcal) for <b>{{replacement}}</b> ({{replacementKcal}} kcal).",
      "calorieDelta": "Calorie delta: {{delta}} kcal",
      "deltaWarning": "\u2014 more than 15% off. Your coach will see this delta.",
      "coachPlanDelta": "Coach's plan: {{original}} kcal \u00b7 delta {{delta}} kcal",
      "swapAnyway": "Swap anyway",
      "todaysMacros": "Today's Macros",
      "yesterdaysMacros": "Yesterday's Macros",
      "dayMacros": "{{day}}'s Macros",
      "dailyTargets": "Daily Targets",
      "noTargetsYet": "No targets set yet",
      "setManually": "Set Manually",
      "calories": "Calories",
      "onTrack": "On track (90-105%)",
      "underTarget": "Under (<90%)",
      "overTarget": "Over (>105%)",
      "targetLine": "target",
      "previousDay": "Previous day",
      "nextDay": "Next day",
      "jumpToToday": "Jump to today",
      "selectDay": "Select {{date}}",
      "mealCount_one": "{{count}} meal",
      "mealCount_other": "{{count}} meals",
      "mealsLogged_one": "Meals logged ({{count}})",
      "mealsLogged_other": "Meals logged ({{count}})",
      "moreViewAll_one": "+{{count}} more \u2014 view all",
      "moreViewAll_other": "+{{count}} more \u2014 view all",
      "untitledMeal": "Untitled meal",
      "tapToViewEdit": "Tap to view & edit \u2192",
      "noLogsYet": "No logs yet",
      "noLogsBlurb": "Start tracking your nutrition by adding your first log above",
      "thisWeek": "This Week",
      "fullWeek": "Full week",
      "logMealsForAverages": "Log some meals this week to see your averages.",
      "avgKcal": "Avg kcal",
      "avgP": "Avg P",
      "avgC": "Avg C",
      "avgF": "Avg F",
      "daysLogged": "Days logged",
      "past7DaysTitle": "Past 7 Days",
      "past7Days": "Past 7 days",
      "viewAll": "View all",
      "mealLoggedSuccess": "Meal logged successfully!",
      "mealLoggedVoice": "Meal logged from voice note!",
      "productLoggedBarcode": "Product logged from barcode!",
      "savedMealUpdated": "Saved meal updated.",
      "minAgo": "{{count}} min ago",
      "hoursAgo": "{{count}}h ago",
      "loggedTimes": "Logged {{count}}x",
      "mealsLogged": "Meals logged ({{count}})",
      "moreViewAll": "+{{count}} more \u2014 view all"
    },
    "savedPlansView": {
      "loadFailed": "Failed to load saved plans. Please try again.",
      "replaceFailed": "Failed to replace plan. Please try again.",
      "chainFailed": "Failed to chain plan. Please try again.",
      "enrollFailed": "Failed to enroll in plan. Please try again.",
      "unarchiveFailed": "Failed to unarchive plan. Please try again.",
      "unenrollFailed": "Failed to unenroll. Please try again.",
      "archiveFailed": "Failed to archive plan. Please try again.",
      "deleteFailed": "Failed to delete plan. Please try again.",
      "removeFailed": "Failed to remove plan. Please try again.",
      "switchFailed": "Failed to switch plan. Please try again.",
      "planCount_one": "{{count}} plan",
      "planCount_other": "{{count}} plans",
      "setupTitle": "Set up: {{name}}",
      "setupFrom": "From {{coach}} \u2014 tap to enroll",
      "loadingPlans": "Loading saved plans...",
      "emptyTitle": "No saved plans yet",
      "emptySubtitle": "Enroll in a workout plan to see it here",
      "you": "You",
      "unknownPlan": "Unknown Plan",
      "deleteTitle": "Delete \"{{name}}\"?",
      "deleteDescription": "This permanently deletes the plan and every week, session, exercise, and completed set inside it. Any athlete progress recorded against this plan will also be removed. This cannot be undone.",
      "deleteConfirm": "Delete plan",
      "deleting": "Deleting\u2026",
      "removeTitle": "Remove \"{{name}}\"?",
      "removeDescription": "This hides the plan from My Plans. It won't delete the program, and if you ever buy or enrol in it again it'll come back.",
      "removing": "Removing\u2026",
      "unarchive": "Unarchive",
      "enrollNow": "Enroll Now",
      "assignClient": "Assign Client",
      "unenroll": "Unenroll",
      "enrollAgain": "Enroll Again",
      "activate": "Activate",
      "saved": "Saved",
      "unassigned": "Unassigned",
      "moreActions": "More actions",
      "editDetails": "Edit details",
      "viewTemplate": "View template",
      "archive": "Archive",
      "infiniteWeeksShort": "\u221e wk",
      "weeksShort_one": "{{count}}wk",
      "weeksShort_other": "{{count}}wk",
      "daysPerWeekShort_one": "{{count}}d/wk",
      "daysPerWeekShort_other": "{{count}}d/wk",
      "done": "Done",
      "ongoing": "Ongoing",
      "weeksShort": "{{count}}wk",
      "daysPerWeekShort": "{{count}}d/wk",
      "coachFallback": "Coach",
      "selfCoached": "Self-Coached",
      "timesEnrolled": "{{count}}x"
    },
    "workoutDashboard": {
      "yourCoach": "Your Coach",
      "paymentRequiredReason": "Payment required to access workouts.",
      "signInToView": "Please sign in to view your workout",
      "loadUserFailed": "Failed to load user data",
      "noPlanFoundError": "No workout plan found. Please contact your coach to set up a workout plan.",
      "loadWorkoutFailed": "Failed to load workout data",
      "completeYourPayment": "Complete Your Payment",
      "paymentFailed": "Payment Failed",
      "paymentRequired": "Payment Required",
      "graceDaysRemaining_one": "{{count}} day remaining",
      "graceDaysRemaining_other": "{{count}} days remaining",
      "monthlyFee": "Monthly fee:",
      "promoCodePlaceholder": "Promo code",
      "apply": "Apply",
      "discountApplied": "{{percent}}% discount applied!",
      "promoValidateFailed": "Failed to validate promo code",
      "completePayment": "Complete Payment",
      "updatePaymentMethod": "Update Payment Method",
      "remindMeLater": "Remind me later",
      "goBack": "Go Back",
      "pendingPaymentNote": "Your workouts will be available as soon as your payment is confirmed.",
      "gracePeriodNote": "Your workouts will be locked once the grace period expires.",
      "paymentIssueNote": "Please update your payment method or contact your coach to resolve this.",
      "pendingMobilityToast_one": "You have {{count}} pending mobility assessment",
      "pendingMobilityToast_other": "You have {{count}} pending mobility assessments",
      "mobilityAssessment": "Mobility Assessment",
      "testCount_one": "{{count}} test",
      "testCount_other": "{{count}} tests",
      "scoresSubmitted": "Scores submitted!",
      "coachNotifiedInChat": "Your coach has been notified in the chat.",
      "loadingTests": "Loading tests\u2026",
      "howToPerform": "How to perform",
      "scoringGuide": "Scoring guide",
      "submitting": "Submitting\u2026",
      "submitScores": "Submit Scores",
      "backToDashboard": "Back to Dashboard",
      "coachingInvitation": "You have a coaching invitation",
      "tapToReviewAccept": "Tap to review and accept",
      "setupTemplate": "Set up: {{name}}",
      "fromCoachTapEnroll": "From {{name}} \u2014 tap to enroll",
      "whatsNext": "What's next?",
      "noPlanFoundTitle": "No Workout Plan Found",
      "contactACoach": "Contact a Coach",
      "contactCoachDesc": "Get a personalized workout program designed for your goals.",
      "findACoach": "Find a Coach",
      "myPlans": "My Plans",
      "myPlansDesc": "Start a plan you've purchased or saved \u2014 or browse for a new one.",
      "viewMyPlans": "View My Plans",
      "hidePromo": "Hide these \u2014 I'll just track my own training",
      "lookingForCoach": "Looking for a coach or a ready-made plan?",
      "showOptions": "Show options",
      "trainOnYourOwn": "Train on your own",
      "dateLabel": "Date",
      "findPerfectCoach": "Find Your Perfect Coach",
      "findPerfectCoachDesc": "Answer a few questions about your goals and we'll match you with the best coaches for your needs.",
      "programFallback": "Program",
      "weekN": "Week {{num}}",
      "weekShort": "W{{num}}",
      "challengesCount": "{{count}} Challenges",
      "vsOpponent": "vs {{name}}",
      "readinessCheckIn": "Readiness check-in",
      "logIt": "Log it",
      "ready": "Ready",
      "monitor": "Monitor",
      "reduce": "Reduce",
      "todayTab": "Today",
      "programTab": "Program",
      "todaysWorkoutTab": "Today's Workout",
      "programOverview": "Program Overview",
      "enterRepMaxesTitle": "Enter Your Rep Maxes",
      "enterRepMaxesDesc": "This workout uses percentage-based weights. Enter your 1RM for automatic weight calculations:",
      "addedBadge": "Added",
      "newPrCelebration": "\ud83c\udfc6 NEW PERSONAL RECORD! \ud83c\udfc6",
      "dayCompleteCelebration": "\ud83c\udf89 Entire Workout Day Completed! \ud83c\udf89",
      "confirmCompleteDay": "Complete all sets for today's workout with \"Moderate\" feeling? You can still adjust individual sets afterwards.",
      "completeDayFailed": "Failed to complete workout day. Please try again.",
      "addExercise": "Add Exercise",
      "uploadingVideo": "Uploading video...",
      "videoSubmitted": "Video submitted \u2713",
      "uploadFailed": "Upload failed",
      "uploadFailedRetry": "Upload failed. Please try again.",
      "submissionRecordFailed": "Failed to create submission record",
      "prevWorkoutTitle": "Previous workout (\u2190 arrow key)",
      "noPrevWorkout": "No previous workout",
      "nextWorkoutTitle": "Next workout (\u2192 arrow key)",
      "noNextWorkout": "No next workout",
      "restDay": "Rest Day",
      "restDayDesc": "Take the day to recover and prepare for your next workout",
      "timeToRecover": "Time to Recover",
      "timeToRecoverDesc": "Your body grows stronger during rest. Take it easy, hydrate, and prepare for tomorrow's session!",
      "completeDayTitle": "Complete entire workout day (all sets)",
      "optional": "Optional",
      "reschedule": "Reschedule",
      "rescheduleTitle": "Reschedule this workout",
      "prs": "PRs",
      "shareToArena": "Share to Arena",
      "shareThisWorkout": "Share this workout",
      "postMyWorkout": "Post my workout",
      "workoutComplete": "Workout Complete! \ud83c\udf89",
      "workoutCompleteBody": "Amazing work! You completed all {{count}} sets.",
      "plusPrs_one": "Plus {{count}} new PR!",
      "plusPrs_other": "Plus {{count}} new PRs!",
      "noNotesProvided": "No notes provided.",
      "noExercisesInSession": "No exercises in this session",
      "variationFallback": "Variation",
      "loadCompetitionFailed": "Failed to load competition data",
      "competitionFallback": "Competition",
      "noScheduleData": "No schedule data available",
      "noWeekData": "No week data available",
      "weeksCount_one": "{{count}} Week",
      "weeksCount_other": "{{count}} Weeks",
      "trainingDays": "Training Days",
      "rest": "Rest",
      "workoutLabel": "Workout",
      "videoWeeklyLimitReached": "Your weekly video limit for this training week has been reached. Videos your coach requests don't count against it.",
      "syncFailed": "We couldn\u2019t load this workout. Please retry.",
      "syncStale": "Showing a saved workout. We couldn\u2019t confirm the latest coach updates.",
      "retrySync": "Retry"
    },
    "activeChallenge": {
      "timesUp": "Time's up!",
      "loadFailed": "Failed to load challenge",
      "enterValidWeight": "Enter a valid weight",
      "bodyweightRequired": "Bodyweight is required for Sinclair scoring",
      "submitFailed": "Failed to submit",
      "notFound": "Challenge not found",
      "backToChallenges": "Back to challenges",
      "challengeDay": "Challenge Day",
      "timeRemaining": "Time Remaining",
      "addedToWorkout": "Added to workout",
      "addToWorkoutDay": "Add to Workout Day",
      "repMax": "{{reps}} Rep Max",
      "complex": "Complex",
      "sinclairScoring": "Sinclair Scoring",
      "absoluteWeight": "Absolute Weight",
      "variationNoFoot": "No Foot",
      "variationNoHook": "No Hook",
      "variationNoContact": "No Contact",
      "variationPauseUnderKnee": "Pause Under Knee",
      "variationPauseAboveKnee": "Pause Above Knee",
      "variationPauseInDip": "Pause in Dip",
      "variationPauseInCatch": "Pause in Catch",
      "variationBehindTheNeck": "Behind the Neck",
      "variationFromPosition": "From {{position}}",
      "uploaded": "Uploaded",
      "sinclairScore": "Sinclair: {{score}}",
      "hidden": "Hidden",
      "waitingForYourLift": "Waiting for your lift",
      "waiting": "Waiting...",
      "submitYourResult": "Submit Your Result",
      "weightLifted": "Weight Lifted (kg) *",
      "weightPlaceholder": "e.g. 120",
      "yourBodyweight": "Your Bodyweight (kg) *",
      "bodyweightPlaceholder": "e.g. 85",
      "videoProof": "Video Proof",
      "optional": "(optional)",
      "trimmedVideo": "{{name}} - trimmed {{start}}s\u2192{{end}}s",
      "tapToAttachVideo": "Tap to attach a video",
      "submitScore": "Submit Score",
      "viewResults": "View Results",
      "cancelChallenge": "Cancel Challenge",
      "cancelConfirm": "Cancel this challenge?",
      "cancelFailed": "Failed to cancel",
      "yes": "Yes",
      "no": "No"
    },
    "arenaPage": {
      "enteringArena": "Entering the Arena...",
      "tabDaily": "Daily",
      "tabArena": "The Arena",
      "tabProfile": "Profile",
      "postedToast": "Posted to the Arena \ud83c\udf89",
      "challengeButton": "Challenge",
      "arenaQuiet": "The arena is quiet...",
      "noWarriorsTitle": "No Warriors on the Field",
      "noWarriorsBody": "Challenge a friend to bring the arena to life",
      "createChallenge": "Create a Challenge",
      "activeChallenges": "Active Challenges",
      "accept": "Accept",
      "decline": "Decline",
      "cancelConfirm": "Cancel this challenge?",
      "yes": "Yes",
      "no": "No",
      "groupBadge": "Group",
      "athleteCount_one": "{{count}} athlete",
      "athleteCount_other": "{{count}} athletes",
      "daysLeft": "{{days}}d left",
      "expired": "Expired",
      "weekNumber": "Week {{number}}",
      "battleHistory": "Battle History",
      "victory": "Victory",
      "draw": "Draw",
      "defeat": "Defeat",
      "vs": "vs",
      "vsName": "vs {{name}}",
      "friendsHeading": "Friends",
      "gladiatorSection": "Gladiator",
      "recruitSection": "Recruit",
      "requestsSection": "Requests ({{count}})",
      "friendsSection": "Friends ({{count}})",
      "inviteByEmail": "Invite by Email",
      "pendingInvitesSection": "Pending Invites ({{count}})",
      "today": "Today",
      "daysAgo_one": "1 day ago",
      "daysAgo_other": "{{count}} days ago"
    },
    "arenaPlayground": {
      "backToArena": "Back to Arena",
      "title": "Leaderboard Playground",
      "subtitle": "Preview leaderboard UI, XP scenarios, and stats with mock data.",
      "maxoutLeaderboard": "Maxout Leaderboard",
      "weekLeaderboard": "Week {{week}} Leaderboard",
      "beatScore": "Beat <n>{{name}}</n> with a Sinclair of <s>{{score}}</s>",
      "menTab": "Men ({{count}})",
      "womenTab": "Women ({{count}})",
      "you": "You",
      "youSuffix": "(You)",
      "sinclairCalculator": "Sinclair Calculator",
      "weightKg": "Weight (kg)",
      "weightPlaceholder": "e.g. 120",
      "bodyweightKg": "Bodyweight (kg)",
      "bodyweightPlaceholder": "e.g. 85",
      "gender": "Gender",
      "maleShort": "M",
      "femaleShort": "F",
      "sinclairScore": "Sinclair Score",
      "xpScenarios": "Arena XP Scenarios",
      "victory": "Victory",
      "matchupLine": "You: {{you}} vs Opponent: {{opponent}}",
      "xpAmount": "{{xp}} XP",
      "levelProgress": "Level {{level}} \u2014 {{xp}} XP to Level {{nextLevel}}",
      "defeat": "Defeat",
      "draw": "Draw",
      "leaderboardEntry": "Leaderboard Entry",
      "firstSubmission": "First maxout submission for {{exercise}} Week {{week}}",
      "participationBonus": "Participation bonus \u2014 awarded once per exercise per week",
      "challengeBadgeTitle": "Challenge Badge (appears on maxout exercises)",
      "maxout": "Maxout",
      "challenge": "Challenge",
      "challengeBadgeNote": "These badges appear next to exercises with load_type = 'maxout'. Tapping \"Challenge\" opens the leaderboard modal.",
      "arenaStats": "Arena Stats",
      "wins": "Wins",
      "losses": "Losses",
      "winRate": "Win Rate",
      "currentStreak": "Current Streak",
      "levelLabel": "Level {{level}}",
      "xpFraction": "{{current}} / {{total}} XP",
      "xpBreakdown": "Arena: {{winXp}} XP ({{wins}} wins) / {{lossXp}} XP ({{losses}} losses)",
      "netXp": "Net: {{xp}} XP",
      "headToHead": "Head-to-Head",
      "devOnly": "DEV ONLY \u2014 remove before shipping"
    },
    "challengeExercisePicker": {
      "sessionWeightlifting": "Weightlifting",
      "sessionStrength": "Strength",
      "sessionAccessories": "Accessories",
      "pauseInDip": "Pause in Dip",
      "pauseInCatch": "Pause in Catch",
      "behindTheNeck": "Behind the Neck",
      "noFoot": "No Foot",
      "noHook": "No Hook",
      "noContact": "No Contact",
      "pause": "Pause",
      "underKnee": "Under Knee",
      "aboveKnee": "Above Knee",
      "startingPosition": "Starting Position",
      "noSpecificPosition": "No specific position",
      "exerciseType": "Exercise Type",
      "searchPlaceholder": "Search exercises...",
      "noExercisesFound": "No exercises found",
      "variations": "Variations",
      "complexModeOn": "Complex Mode ON",
      "makeItAComplex": "Make it a Complex",
      "exerciseN": "Exercise {{num}}",
      "selectExercisePlaceholder": "Select exercise...",
      "addExercise": "Add Exercise",
      "complexBadge": "Complex"
    },
    "characterCustomizer": {
      "tierRookie": "Rookie",
      "tierBronze": "Bronze",
      "tierSilver": "Silver",
      "tierGold": "Gold",
      "tierLegendary": "Legendary",
      "costumeGladiator": "Gladiator",
      "costumeGladiatorSubtitle": "Roman Arena Fighter",
      "costumeSamurai": "Samurai",
      "costumeSamuraiSubtitle": "Red Blade Warrior",
      "costumeChevalier": "Chevalier",
      "costumeChevalierSubtitle": "Silver Plate Knight",
      "costumeDarkMercenary": "Dark Mercenary",
      "costumeDarkMercenarySubtitle": "Gothic Shadow Blade",
      "costumeMousquetaire": "Mousquetaire",
      "costumeMousquetaireSubtitle": "The Dashing Duelist",
      "saved": "Saved",
      "changeFacePhoto": "Change face photo",
      "addFacePhoto": "Add face photo",
      "faceAlt": "Face",
      "changeFace": "Change face",
      "addFace": "Add face",
      "xpAmount": "{{amount}} XP",
      "wardrobe": "Wardrobe",
      "nextUnlock": "Next unlock:",
      "xpProgress": "{{current}} / {{total}} XP"
    },
    "competitionShareToArenaPanel": {
      "attempt1st": "1st Attempt",
      "attempt2nd": "2nd Attempt",
      "attempt3rd": "3rd Attempt",
      "shareFailed": "Share failed",
      "downloadFailed": "Download failed",
      "selectAtLeastOneClip": "Select at least one clip",
      "renderFailed": "Render failed",
      "title": "Share to Arena",
      "resultCardTab": "Result card",
      "videoTabDisabledTitle": "Upload at least one attempt video to enable",
      "videoCollageTab": "Video collage",
      "captionPlaceholder": "Add a caption (optional, max 140 chars)\u2026",
      "cardIntro": "Generates a 9:16 result card with your best lifts and posts it to the Arena feed. No videos needed \u2014 works for any completed competition.",
      "cardPreviewCaption": "Preview \u00b7 scaled 9:16",
      "postedToArena": "Posted to Arena",
      "posting": "Posting\u2026",
      "shareToArena": "Share to Arena",
      "downloadCardTitle": "Download the card as PNG",
      "videoIntro_one": "Pick up to {{count}} attempt video. Clips are stitched together with an overlay showing the lift, attempt number, and weight. Render the preview, then choose to share or download.",
      "videoIntro_other": "Pick up to {{count}} attempt videos. Clips are stitched together with an overlay showing the lift, attempt number, and weight. Render the preview, then choose to share or download.",
      "noVideosHint": "Upload videos on individual attempts above to enable this option.",
      "overlayPosition": "Overlay position",
      "positionTopLeft": "Top left",
      "positionTopRight": "Top right",
      "positionBottom": "Bottom",
      "previewLabel": "Preview",
      "rerenderTitle": "Re-render with current selection",
      "rerender": "Re-render",
      "downloadCollageTitle": "Download the collage video",
      "renderingPreview": "Rendering preview \u00b7 {{progress}}%",
      "renderPreview_one": "Render preview \u00b7 {{count}} clip",
      "renderPreview_other": "Render preview \u00b7 {{count}} clips",
      "stitchingHint": "Stitching clips can take {{range}} seconds depending on length.",
      "selectionChangedHint": "Selection or position changed \u2014 re-render to update the preview."
    },
    "createChallengeModal": {
      "you": "You",
      "createFailed": "Failed to create challenge",
      "title": "New Challenge",
      "selectFriendTitle": "Who do you want to challenge?",
      "noFriends": "Add friends first to challenge them!",
      "findFriends": "Find Friends",
      "competeOnTitle": "What are you competing on?",
      "exerciseTab": "Exercise",
      "textTab": "Text",
      "liftPlaceholder": "e.g. Back Squat 1RM",
      "repMaxLabel": "Rep Max",
      "scoringTitle": "How do we score?",
      "scoringAbsolute": "Absolute",
      "scoringAbsoluteDesc": "Heaviest weight wins",
      "scoringSinclair": "Sinclair",
      "scoringSinclairDesc": "Adjusts for bodyweight",
      "challengeDateTitle": "Challenge Date",
      "fixedDate": "Fixed Date",
      "untilDate": "Until Date",
      "fixedDateDesc": "Both athletes compete on this exact day. The challenge auto-loads into both workouts.",
      "untilDateDesc": "Open challenge \u2014 complete anytime before the deadline.",
      "customRulesTitle": "Custom Rules",
      "optional": "(optional)",
      "customRulesPlaceholder": "e.g. Must be ATG, no belt allowed, paused rep...",
      "summaryTitle": "Challenge Summary",
      "summaryOpponent": "Opponent",
      "summaryLift": "Lift",
      "summaryType": "Type",
      "summaryComplex": "Complex",
      "yes": "Yes",
      "summaryReps": "Reps",
      "summaryScoring": "Scoring",
      "absoluteWeight": "Absolute Weight",
      "summaryDate": "Date",
      "challengeOn": "Challenge on",
      "openUntil": "Open until",
      "sendChallenge": "Send Challenge"
    },
    "duelReveal": {
      "dnf": "DNF",
      "pts": "pts",
      "you": "You",
      "vs": "VS",
      "opp": "Opp",
      "draw": "Draw",
      "youWin": "You Win",
      "youLose": "You Lose",
      "tapToClose": "Tap anywhere to close"
    },
    "groupRevealCard": {
      "hideVideo": "Hide Video",
      "watchLift": "Watch Lift",
      "rank1st": "1st",
      "rank2nd": "2nd",
      "rank3rd": "3rd",
      "winner": "Winner",
      "submitted": "Submitted",
      "scoreHiddenUntilReveal": "(score hidden until reveal)",
      "hiddenFromOthers": "(hidden from others)",
      "waitingForLifts": "Waiting for lifts...",
      "enrolledScoresAppear_one": "{{count}} athlete enrolled \u2014 scores will appear as they submit",
      "enrolledScoresAppear_other": "{{count}} athletes enrolled \u2014 scores will appear as they submit",
      "scoresHiddenBanner": "Scores hidden until reveal",
      "revealsIn": "Reveals in {{countdown}}",
      "gracePeriodActive": "Grace period active",
      "lateSubmissionsNote": "Late submissions may change the leaderboard",
      "alsoCompeted": "Also competed",
      "awaitingSubmission_one": "Awaiting submission ({{count}})",
      "awaitingSubmission_other": "Awaiting submission ({{count}})",
      "failedToPlaceBet": "Failed to place bet",
      "groupMaxout": "Group Maxout",
      "weekNumber": "Week {{number}}",
      "scoringAbsolute": "Absolute",
      "athleteCount_one": "{{count}} athlete",
      "athleteCount_other": "{{count}} athletes",
      "xpPool": "{{amount}} XP pool",
      "tabBetting": "Betting",
      "tabLeaderboard": "Leaderboard",
      "betOn": "{{amount}} XP on {{name}}",
      "betWon": "Won {{payout}} XP",
      "betLost": "Lost",
      "betRefunded": "Refunded",
      "betPending": "Pending result...",
      "tapToBet": "Tap an athlete to place your bet",
      "betBlindBanner": "Scores hidden \u2014 bet blind until the reveal!",
      "noAthletesEnrolled": "No athletes enrolled yet",
      "awaitingSubmission": "Awaiting submission ({{count}})",
      "xpAmount": "{{amount}} XP",
      "noBetsYet": "No bets yet",
      "favorite": "Favorite",
      "wager": "Wager",
      "xpUnit": "XP",
      "estPayout": "Est. payout",
      "placingBet": "Placing...",
      "confirmBet": "Confirm Bet",
      "bettingClosed": "Betting closed \u2014 a score has been submitted",
      "needXpToBet": "Need at least 10 XP to bet"
    },
    "maxoutLeaderboardModal": {
      "uploadFailed": "Upload failed",
      "enterValidWeight": "Enter a valid weight",
      "scoreSubmitted": "Score submitted!",
      "newPrRecorded": "New PR recorded!",
      "scoreNotUpdated": "Score not updated \u2014 your current record is higher",
      "submitFailed": "Failed to submit score",
      "weekLeaderboard": "Week {{week}} Leaderboard",
      "beatBanner": "Beat <name>{{name}}</name> with a Sinclair of <score>{{score}}</score>",
      "menTab_one": "Men ({{count}})",
      "menTab_other": "Men ({{count}})",
      "womenTab_one": "Women ({{count}})",
      "womenTab_other": "Women ({{count}})",
      "noEntries": "No entries yet",
      "beFirst": "Be the first to submit a maxout!",
      "you": "(You)",
      "sinclairAbbrev": "SC",
      "submitYourScore": "Submit Your Score",
      "weightLiftedPlaceholder": "Weight lifted (kg)",
      "uploading": "Uploading...",
      "uploadProofVideo": "Upload Proof Video",
      "uploadingProof": "Uploading proof",
      "sinclairCalculator": "Sinclair Calculator",
      "weightKgLabel": "Weight (kg)",
      "weightExamplePlaceholder": "e.g. 120",
      "bodyweightKgLabel": "Bodyweight (kg)",
      "bodyweightExamplePlaceholder": "e.g. 85",
      "genderLabel": "Gender",
      "genderMaleShort": "M",
      "genderFemaleShort": "F",
      "sinclairScore": "Sinclair Score",
      "menTab": "Men ({{count}})",
      "womenTab": "Women ({{count}})",
      "challengeToArena": "Challenge to the Arena",
      "challengeConfirm": "Sure?",
      "challengeSent": "Sent"
    },
    "arenaV2": {
      "tiers": {
        "rookie": "Rookie",
        "bronze": "Bronze",
        "silver": "Silver",
        "gold": "Gold",
        "legendary": "Legendary"
      },
      "costumes": {
        "gladiator": "Gladiator",
        "samurai": "Samurai",
        "chevalier": "Chevalier",
        "darkMercenary": "Dark Mercenary",
        "mousquetaire": "Mousquetaire"
      },
      "ended": "Ended",
      "endsInDays_one": "Ends in {{count}}d",
      "endsInDays_other": "Ends in {{count}}d",
      "endsInHours_one": "Ends in {{count}}h",
      "endsInHours_other": "Ends in {{count}}h",
      "endsToday": "Ends today",
      "you": "You",
      "customChallenge": "Custom challenge",
      "lift": "Lift",
      "opponent": "Opponent",
      "vs": "VS",
      "titleDaily": "Friend activity",
      "titleProfile": "Your gladiator",
      "titleArena": "Coliseum",
      "headingDaily": "Daily",
      "headingProfile": "Barracks",
      "headingArena": "Arena",
      "tabDaily": "Daily",
      "tabArena": "Arena",
      "tabProfile": "Profile",
      "loading": "Loading the coliseum\u2026",
      "arenaOpen": "The arena is open",
      "noBattles": "No battles on the field",
      "battlesOnField_one": "{{count}} battle on the field",
      "battlesOnField_other": "{{count}} battles on the field",
      "challengeToOpen": "Challenge a friend to open the gates.",
      "battlesRacing": "Your warriors are racing to the Coliseum. Tap a chariot to follow a battle.",
      "startChallenge": "Start a challenge",
      "yourBattles": "Your battles",
      "activeCount_one": "{{count}} active",
      "activeCount_other": "{{count}} active",
      "tierHeading": "{{tier}} TIER",
      "xpProgress": "{{current}} / {{next}} XP",
      "xpTotal": "{{current}} XP",
      "xpToUnlock": "<b>{{xp}} XP</b> to unlock the {{tier}} wardrobe.",
      "maxTier": "Max tier reached \u2014 every costume is yours.",
      "youHandle": "@you",
      "wardrobe": "Wardrobe",
      "unlockedCount": "{{unlocked}} of {{total}} unlocked",
      "tierXp": "{{tier}} \u00b7 {{xp}} XP",
      "battleRecord": "Battle record",
      "wins": "Wins",
      "losses": "Losses",
      "winRate": "Win rate",
      "streak": "Streak",
      "friends": "Friends",
      "addFriends": "+ Add friends",
      "viewAll_one": "View all ({{count}})",
      "viewAll_other": "View all ({{count}})",
      "noFriends": "No friends yet. Tap <b>+ Add friends</b> to find your training partners.",
      "challenge": "Challenge",
      "endsInDays": "Ends in {{count}}d",
      "endsInHours": "Ends in {{count}}h",
      "activeCount": "{{count}} active",
      "viewAll": "View all ({{count}})"
    },
    "bodyProgressV2": {
      "noBodyweightYet": "No bodyweight logged yet",
      "sparkDotAria": "{{weight}} kg on {{date}}",
      "sparkDotCompAria": "(competition)",
      "competition": "Competition",
      "deleteEntryConfirm": "Delete this bodyweight entry?",
      "bwHistoryTitle": "Bodyweight history",
      "noEntriesInDays": "No entries in the last {{days}} days.",
      "fromCompetition": "From a competition",
      "deleteEntry": "Delete entry",
      "noData": "No data",
      "noChange": "No change",
      "valueGreaterThanZero": "Enter a value greater than 0",
      "measurementSaveFailed": "Could not save the measurement",
      "logMeasurementTitle": "Log a measurement",
      "siteLabel": "Site",
      "valueCmLabel": "Value (cm)",
      "valueCmPlaceholder": "e.g. 72.0",
      "dateLabel": "Date",
      "saving": "Saving\u2026",
      "saveMeasurement": "Save measurement",
      "logBodyweightTitle": "Log bodyweight",
      "weightKgLabel": "Weight (kg)",
      "weightKgPlaceholder": "e.g. 63.6",
      "weightSavedPhotoFailed": "Weight saved but photo upload failed \u2014 try uploading again from the photos grid.",
      "bodyweightSaveFailed": "Could not save the bodyweight",
      "progressPhotoOptional": "Progress photo (optional)",
      "selectedPhotoAlt": "Selected progress photo",
      "side_front": "Front",
      "side_side": "Side",
      "side_back": "Back",
      "side_other": "Other",
      "camera": "Camera",
      "gallery": "Gallery",
      "saveBodyweight": "Save bodyweight",
      "hoursBetweenError": "Enter hours between 0 and 24",
      "sleepSaveRetry": "Could not save sleep \u2014 try again",
      "sleepSaveFailed": "Could not save sleep",
      "logSleepTitle": "Log sleep",
      "hoursLabel": "Hours",
      "sleepPlaceholder": "e.g. 7.5",
      "nightOfLabel": "Night of",
      "saveSleep": "Save sleep",
      "pickPhotoError": "Pick a photo to upload",
      "uploadFailedRetry": "Upload failed \u2014 try again",
      "photoUploadFailed": "Could not upload photo",
      "addPhotoTitle": "Add a progress photo",
      "photoLabel": "Photo",
      "viewLabel": "View",
      "labelOptional": "Label (optional)",
      "labelPlaceholder": "e.g. Week 4 cut",
      "bodyweightOptional": "Bodyweight (optional)",
      "uploading": "Uploading\u2026",
      "savePhoto": "Save photo",
      "photoAlt": "{{side}} on {{date}}",
      "photoView": "{{side}} view",
      "titleSub": "Composition over time",
      "title": "Body & Progress",
      "loadingBodyData": "Loading your body data\u2026",
      "bodyweight": "Bodyweight",
      "logCta": "Log",
      "inDays": "in {{days}} days",
      "sparkHint": "Tap a point for detail \u00b7 view all {{count}} entries",
      "sparkHintComp": "\u00b7 red = competition",
      "logReadiness": "Log & readiness",
      "last7Days": "Last 7 days",
      "sleepAvg": "Sleep \u00b7 avg",
      "lastNightHours": "Last night {{hours}} h",
      "tapLogLastNight": "Tap to log last night",
      "steps7dAvg": "Steps \u00b7 7-day avg",
      "latestSteps": "Latest {{value}}",
      "syncedFromHealthApp": "Synced from your health app",
      "logRecoveryAria": "Log daily recovery",
      "recovery": "Recovery",
      "tapLogToday": "Tap to log today",
      "loggedToday": "Logged today",
      "loggedYesterday": "Logged yesterday",
      "loggedDaysAgo": "Logged {{days}}d ago",
      "logReadinessAria": "Log pre-workout readiness",
      "readiness": "Readiness",
      "tapLogPreWorkout": "Tap to log pre-workout",
      "measurements": "Measurements",
      "showLess": "Show less",
      "allSites": "All {{count}} sites \u2192",
      "noMeasurementsYet": "No measurements logged yet \u2014 tap \"Log a measurement\" to start tracking sites.",
      "moreSitesTracked_one": "{{count}} more site tracked. Tap \"All sites\" to see them.",
      "moreSitesTracked_other": "{{count}} more sites tracked. Tap \"All sites\" to see them.",
      "progressPhotos": "Progress photos",
      "onFile": "{{count}} on file",
      "addPhoto": "Add photo",
      "deletePhotoConfirm": "Delete this progress photo?",
      "olderPhotosOnFile": "{{count}} older photos on file."
    },
    "competitionV2": {
      "watchLift": "Watch lift",
      "noVideo": "No video",
      "plannedBody": "Your coach can prescribe planned attempts here. Once the meet is over, log your actual results to fill in this card.",
      "enterResults": "Enter results",
      "gamePlan": "Game plan",
      "sinclair": "Sinclair",
      "total": "Total",
      "bodyweight": "Bodyweight",
      "snatchAttempts": "Snatch attempts",
      "cleanJerkAttempts": "Clean & Jerk attempts",
      "gamePlanOnMeetDay": "Game plan on meet day",
      "editScore": "Edit score",
      "reflection": "Reflection",
      "plannedNoScore": "Planned \u00b7 no score yet",
      "totalShort": "TOTAL",
      "title": "Competitions",
      "loadingCompetitions": "Loading competitions",
      "meetRecord": "Meet record",
      "bestSinclair": "Best Sinclair",
      "bestTotal": "Best Total",
      "nextMeet": "Next meet",
      "countdownLabel": "days \u00b7 {{weeks}}w",
      "historyTab": "History",
      "helperTab": "Competition Helper",
      "empty": "No competitions logged yet \u2014 tap \"Add\" to record your first meet result.",
      "plannedMeets": "Planned meets",
      "upcomingCount_one": "{{count}} upcoming",
      "upcomingCount_other": "{{count}} upcoming",
      "pastMeets": "Past meets",
      "scoredCount_one": "{{count}} scored",
      "scoredCount_other": "{{count}} scored",
      "otherSports": "Other sports",
      "meetCount_one": "{{count}} meet",
      "meetCount_other": "{{count}} meets",
      "summarySnatch": "Snatch {{weight}}",
      "summaryCleanJerk": "C&J {{weight}}",
      "summarySinclair": "Sinclair {{value}}"
    },
    "gamePlanEditorV2": {
      "defaultPlanLabel": "My plan",
      "defaultAltLabel": "Alternative",
      "deletePlanConfirm": "Delete this plan and its strategies?",
      "defaultFeelsHeavyLabel": "Feels heavy",
      "defaultBackupLabel": "Backup",
      "setOpenerFirst": "Set your opener (attempt 1) first \u2014 the warmup is computed from it.",
      "replaceWarmupConfirm": "Replace the current bar warmup sets with a standard ladder?",
      "saveFailed": "Saving the game plan failed. Please try again.",
      "title": "Game plan",
      "loadingPlan": "Loading game plan\u2026",
      "saving": "Saving\u2026",
      "untitled": "Untitled",
      "planChip": "Plan",
      "openersTiming": "Openers & timing",
      "deletePlanAria": "Delete plan",
      "compStart": "Comp start",
      "attemptNumber": "Attempt #",
      "attemptNumberPlaceholder": "e.g. 18",
      "planName": "Plan name",
      "turnHint": "Your turn \u2248 {{time}} (attempt {{attempt}}, ~1\u2019/attempt) \u00b7 plan needs ~{{minutes}}\u2019.",
      "turnHintNoStart": "Session start + your attempt number \u2192 your turn (~1\u2019/attempt). Plan needs ~{{minutes}}\u2019.",
      "openerKg": "Opener (kg)",
      "attemptKg": "Attempt {{n}} (kg)",
      "warmupHeader": "Warmup \u2014 sections & sets",
      "warmupTimingHint": "Times count back from your attempt \u2014 last set ~T-3, sets 3\u2019 apart, sections stack in front.",
      "addSection": "Section",
      "addMobility": "Mobility",
      "addSet": "Set",
      "autoFillWarmup": "Auto-fill bar warmup from opener",
      "strategies": "Strategies",
      "addStrategyAria": "Add strategy",
      "strategiesEmptyHint": "Up to {{max}} branch plans \u2014 \u201cif 90 kg feels heavy, switch\u201d. Each has its own attempts + replacement sets.",
      "strategyLabelPlaceholder": "e.g. Feels heavy",
      "deleteStrategyAria": "Delete strategy",
      "decideAtKg": "Decide at (kg)",
      "decideAtPlaceholder": "e.g. 90",
      "noDecisionWeightHint": "Without a decision weight, the choice comes at the end of the warmup.",
      "noWarmupSetBelowHint": "No warmup set at or below {{kg}} kg \u2014 you'll be asked right at the start.",
      "branchReplacesHint": "Replaces the remaining warmup after the decision weight.",
      "noPlanForLift": "No plan for {{lift}} yet \u2014 tap \u201c+ Plan\u201d above to start one.",
      "ladderEmptyHint": "Add sections (\u201cmobility \u2014 12\u2019\u201d), a routine, then your bar sets.",
      "kgLabel": "Kg",
      "repsLabel": "Reps",
      "takesMinLabel": "Takes \u2019",
      "autoPlaceholder": "auto",
      "mobilityRoutineLabel": "Mobility routine",
      "pickRoutine": "Pick a routine\u2026",
      "sectionLabel": "Section",
      "sectionPlaceholder": "e.g. Bodyweight mobility, hips + ankles",
      "moveUpAria": "Move up",
      "moveDownAria": "Move down",
      "deleteItemAria": "Delete item",
      "setNotePlaceholder": "Note for this set \u2014 e.g. \u2018speed under the bar\u2019"
    },
    "landingV2": {
      "signIn": "Sign in",
      "eyebrow": "Track what matters",
      "titleLine1": "Your training, your sport,",
      "titleLine2": "your dashboard.",
      "subtitle": "Log the lifts. Watch the tonnage compound. Stay loose and pain-free. Fuel the work. One app \u2014 for the sport you actually train.",
      "getStarted": "Get started",
      "slateTonnageLabel": "Tonnage",
      "slateTonnageSub": "Every set, every kilo. Tracked.",
      "slateProgressLabel": "Body progress",
      "slateProgressSub": "Cut, bulk, recomp \u2014 see it on the curve.",
      "slateMobilityLabel": "Mobility",
      "slateMobilitySub": "Joint-by-joint, sport-aware.",
      "slatePainLabel": "Pain & aches",
      "slatePainSub": "Map it. Diagnose it. Recover.",
      "slateNutritionLabel": "Nutrition",
      "slateNutritionSub": "Calories. Macros. Goals.",
      "slateCoachLabel": "Coach reviews",
      "slateCoachSub": "Your lifts, broken down.",
      "tonnageEyebrow": "THIS WEEK",
      "tonnageDelta": "\u2191 8% vs last week",
      "mobilityEyebrow": "TODAY \u00b7 8 MIN",
      "mobilityTitle": "Hip mobility routine",
      "painEyebrow": "RECOVERY PROTOCOL",
      "painTitle": "Right shoulder \u00b7 day 6 of 10",
      "painLevel": "Pain level",
      "coachNote": "\"Hips drifted on the 3rd pull. Watch 0:08 \u2014 bar in tight.\"",
      "coachEyebrow": "COACH M. PAVLOV \u00b7 2 H AGO",
      "coachTitle": "{{exercise}} \u2014 set 3",
      "progressEyebrow": "BULKING \u00b7 WEEK 6 OF 12",
      "progressTitle": "Bodyweight goal",
      "progressTarget": "target {{target}}kg",
      "progressToday": "Today",
      "progressSixWeeks": "6 weeks",
      "nutritionEyebrow": "TODAY",
      "nutritionTitle": "2,140 / 2,400 kcal",
      "nutritionProtein": "Protein",
      "nutritionCarbs": "Carbs",
      "nutritionFat": "Fat"
    },
    "marketplaceV2": {
      "discover": "Discover",
      "title": "Marketplace",
      "tabCoaches": "Coaches",
      "tabPlans": "Plans",
      "tabMyPlans": "My Plans",
      "searchPlansPlaceholder": "Search plans or coaches\u2026",
      "searchCoachesPlaceholder": "Search any coach by name or email\u2026",
      "filtersLabel": "Filters",
      "chipAllPrices": "All prices",
      "chipShortProgram": "Short program",
      "free": "Free",
      "continuous": "Continuous",
      "rankedForYou": "Ranked for you",
      "redo": "Redo \u2192",
      "workoutPlansHeading_one": "Workout plans \u00b7 {{count}}",
      "workoutPlansHeading_other": "Workout plans \u00b7 {{count}}",
      "loadingPlans": "Loading plans\u2026",
      "noPlansQuizHint": "No plans match your filters. Try Redo or clear the chips.",
      "noPlansClearHint": "No plans match your filters. Clear the chips to see more.",
      "bestMatch": "Best match",
      "weekProgram": "{{weeks}}-week program",
      "view": "View",
      "independentCoach": "Independent coach",
      "ongoing": "Ongoing",
      "weeksCount_one": "{{count}} week",
      "weeksCount_other": "{{count}} weeks",
      "daysPerWeek_one": "{{count}} day/wk",
      "daysPerWeek_other": "{{count}} days/wk",
      "searchResults": "Search results",
      "coachesHeading": "Coaches",
      "searchingCoaches": "Searching coaches\u2026",
      "loadingCoaches": "Loading coaches\u2026",
      "noCoachesFound": "No coaches found for \u201c{{query}}\u201d. Try a different name or email.",
      "noCoachesMatch": "No coaches match your filters.",
      "coachFallback": "Coach",
      "viewCoach": "View coach",
      "contact": "Contact",
      "sports": {
        "weightlifting": "Weightlifting",
        "powerlifting": "Powerlifting",
        "hyrox": "Hyrox",
        "crossfit": "CrossFit",
        "hypertrophy": "Hypertrophy",
        "running": "Running",
        "hybrid": "Hybrid",
        "any": "Any sport",
        "all": "All sports",
        "triathlon": "Triathlon"
      },
      "levels": {
        "beginner": "Beginner",
        "intermediate": "Intermediate",
        "advanced": "Advanced"
      },
      "goals": {
        "compete": "Compete",
        "strength": "Build strength",
        "general": "General fitness"
      },
      "lengths": {
        "short": "\u2264 6 wk",
        "mid": "6\u201312 wk",
        "long": "12+ wk",
        "continuous": "Ongoing"
      },
      "quiz": {
        "stepSport": "Sport",
        "stepLevel": "Level",
        "stepGoal": "Goal",
        "stepLength": "Length",
        "stepOf": "Step {{step}} of 5 \u00b7 {{label}}",
        "sportQ": "What's your sport?",
        "sportHint": "We'll match programs built for that.",
        "sportWeightliftingDesc": "Snatch, clean & jerk.",
        "sportPowerliftingDesc": "Squat, bench, deadlift.",
        "sportHypertrophyDesc": "Train for muscle and size.",
        "sportCrossfitDesc": "WODs, varied movement.",
        "sportHyroxDesc": "Hybrid race format.",
        "sportRunningDesc": "From 5k to marathon.",
        "sportHybridDesc": "Mixed-modality conditioning.",
        "sportAnything": "Anything",
        "sportAnythingDesc": "Show me everything.",
        "levelQ": "How experienced are you?",
        "levelHint": "Programs will match your starting strength.",
        "levelBeginnerDesc": "New to the barbell.",
        "levelIntermediateDesc": "1\u20133 years training.",
        "levelAdvancedDesc": "3+ years, structured.",
        "goalQ": "What are you training for?",
        "goalHint": "We'll surface programs built around it.",
        "goalCompeteDesc": "Peak for a meet, work to a platform total.",
        "goalStrengthDesc": "Get stronger across the main lifts.",
        "goalGeneralDesc": "Stay consistent, train for health.",
        "lengthQ": "How long do you want to commit?",
        "lengthHint": "Plan length matters for adherence.",
        "weeksLabel": "Weeks",
        "ongoingLabel": "Ongoing",
        "seeMyPlans": "See my plans",
        "continue": "Continue",
        "skip": "Skip \u2014 browse all plans"
      },
      "workoutPlansHeading": "Workout plans \u00b7 {{count}}",
      "weeksCount": "{{count}} weeks",
      "daysPerWeek": "{{count}} days/wk"
    },
    "mealPrepPage": {
      "modeSpread": "Spread evenly",
      "modeMeals": "Build meals",
      "modeConsume": "Eat as I go",
      "modeSpreadHint": "Split the bulk across your days & slots and write the logs now.",
      "modeMealsHint": "Compose named meals from the bulk and push each to a day & slot.",
      "modeConsumeHint": "Keep it as a shared fridge \u2014 log a portion each time you eat.",
      "defaultPrepName": "Meal prep",
      "createFailedTitle": "Couldn't start meal prep",
      "tryAgain": "Please try again.",
      "partnerLinkedTitle": "Partner linked",
      "partnerLinkedDesc": "You're now sharing meal preps with {{name}}.",
      "yourPartner": "your partner",
      "acceptFailedTitle": "Couldn't accept",
      "inviteTitle": "<b>{{name}}</b> wants to share meal preps with you",
      "inviteHint": "Accept to have your share of their preps logged to your nutrition automatically.",
      "accept": "Accept",
      "dismiss": "Dismiss",
      "title": "Meal Prep",
      "subtitle": "Log a whole batch cook once \u2014 split it with a partner and it fans out into daily macros.",
      "scanReceipt": "Scan receipt",
      "newPrep": "New prep",
      "emptyTitle": "No meal preps yet",
      "emptyHint": "Tap \u201cNew prep\u201d, enter the raw ingredients you cooked, and we'll handle the daily macros.",
      "daysCount_one": "{{count}} day",
      "daysCount_other": "{{count}} days",
      "slots": {
        "breakfast": "breakfast",
        "lunch": "lunch",
        "dinner": "dinner",
        "snack": "snack"
      },
      "setMacrosTitle": "Set macros for some items",
      "setMacrosDesc": "Couldn't auto-find macros for {{items}}. Adjust the grams, or edit the macros from your food log after applying.",
      "addIngredientsFailedTitle": "Couldn't add ingredients",
      "appliedTitle": "Added to daily logs",
      "entriesWrittenOne": "{{count}} entry written across everyone's nutrition.",
      "entriesWritten_one": "{{count}} entry written across everyone's nutrition.",
      "entriesWritten_other": "{{count}} entries written across everyone's nutrition.",
      "applyFailedTitle": "Couldn't apply",
      "loggedTitle": "Logged",
      "loggedDesc": "Your {{slot}} portion was added to today's log.",
      "logFailedTitle": "Couldn't log",
      "deleteConfirm": "Delete this meal prep? Any logs it created (for you and your partner) will also be removed.",
      "deletePrepAria": "Delete prep",
      "cookedOn": "Cooked on",
      "fillsSlots": "Fills slots",
      "lastsDays": "Lasts (days)",
      "ingredientsHead": "Ingredients you cooked",
      "kcalPer100g": "{{kcal}} kcal/100g",
      "bulkPlaceholder": "One per line, e.g.\n2.8kg chicken breast\n12 bell peppers\n1kg rice",
      "resolvingMacros": "Resolving macros\u2026",
      "addIngredients": "Add ingredients",
      "kcalTotal": "kcal total",
      "macroP": "P {{g}}g",
      "macroC": "C {{g}}g",
      "macroF": "F {{g}}g",
      "splitHead": "Who eats it & how much",
      "me": "Me",
      "invitePending": "invite pending",
      "pctOfFood": "{{pct}}% of the food",
      "plateLabel": "plate",
      "removePartnerAria": "Remove partner",
      "addPartner": "Add a partner",
      "splitTip": "Tip: enter relative plate sizes \u2014 if you eat 1.5\u00d7 their plate, set yours to 1.5 and theirs to 1 (\u2192 60 / 40).",
      "mealsHead": "Meals",
      "mealsEmptyHint": "Build named meals from your ingredients and assign each to a day & slot.",
      "dayN": "Day {{n}}",
      "unassigned": "Unassigned",
      "itemsCount_one": "{{count}} item",
      "itemsCount_other": "{{count}} items",
      "addMeal": "Add a meal",
      "eatAsYouGoHead": "Eat as you go",
      "ofTotalLeft": "/ {{total}} left",
      "logSlot": "Log {{slot}}",
      "consumeHint": "Each tap logs your share of one portion to today and counts the food down for everyone.",
      "applying": "Applying\u2026",
      "applyToLogs": "Apply to daily logs",
      "applyHintSpread": "Writes each person's share into their daily food log across {{days}} day(s). Re-apply after any change.",
      "applyHint": "Writes each person's share into their daily food log. Re-apply after any change.",
      "applyHintTarget": "Your target is {{kcal}} kcal/day.",
      "inviteSentTitle": "Invite sent",
      "inviteSentDesc": "{{email}} will see it in their app and email.",
      "inviteFailedTitle": "Couldn't send invite",
      "inviteBtn": "Invite",
      "yourPartners": "Your partners",
      "linked": "Linked",
      "inviteNew": "Invite someone new",
      "emailPlaceholder": "partner@email.com",
      "inviteEmailHint": "They'll need an account with this email. Once they accept, their share lands in their own nutrition.",
      "defaultMealName": "Meal",
      "buildMeal": "Build a meal",
      "editMeal": "Edit meal",
      "mealNamePlaceholder": "Meal name",
      "fromIngredients": "From your ingredients (grams in this meal)",
      "kcalInMeal": "kcal in this meal",
      "saveMeal": "Save meal"
    },
    "meetDayRunnerV2": {
      "mobilityRoutine": "Mobility routine",
      "section": "Section",
      "decisionQuestion": "How did {{weight}} feel?",
      "lastBar": "the last bar",
      "decisionHint": "Pick the path \u2014 attempts and remaining sets follow it.",
      "stayOnPlan": "Stay on plan \u2014 {{label}}",
      "openerWeight": "Opener {{weight}}",
      "strategy": "Strategy",
      "untitled": "Untitled",
      "meetDay": "Meet day",
      "loadingPlan": "Loading game plan\u2026",
      "noPlan": "No game plan saved for this competition yet \u2014 build one first.",
      "doneGoLift": "Done \u2014 go lift",
      "toFirstAttempt": "{{lift}} \u00b7 to your first attempt",
      "turnAt": "{{lift}} \u00b7 turn \u2248 {{time}} (attempt {{attempt}})",
      "planLength": "{{lift}} \u00b7 {{minutes}}\u2019 plan",
      "minusTwoMin": "\u22122 min",
      "plusTwoMin": "+2 min",
      "resumedHint": "Resumed the countdown you started at {{time}}.",
      "haveTimeHint": "You have time \u2014 start \u201c{{title}}\u201d at T-{{minutes}}\u2019.",
      "remindersSet": "\ud83d\udd14 Reminders set \u2014 {{reminderTime}} (15\u2019 heads-up) \u00b7 {{warmupTime}} (warmup starts).",
      "startCountdown": "Start warmup countdown",
      "opener": "Opener",
      "attemptN": "Attempt {{n}}",
      "followingBranch": "Following \u201c{{label}}\u201d \u2014 decided at {{point}}.",
      "theDecisionPoint": "the decision point",
      "stayingOn": "Staying on \u201c{{label}}\u201d.",
      "change": "Change",
      "minutesShort": "{{n}} min",
      "finish": "Finish \u2014 first attempt taken",
      "startNextLift": "Start next lift",
      "runAgain": "Run again",
      "runLogged": "Run logged. After the meet, record your results in History \u2014 the reflection will ask how well the game plan worked."
    },
    "nutritionMyPlan": {
      "slotBreakfast": "Breakfast",
      "slotLunch": "Lunch",
      "slotDinner": "Dinner",
      "slotSnack": "Snack",
      "planReadyTitle": "Your meal plan is ready",
      "planReadyDesc": "Added to your week \u2014 tap \"Grocery list\" for the shopping list.",
      "planFailedTitle": "Meal plan generation failed",
      "tryAgain": "Please try again.",
      "premiumUnlimited": "Premium \u00b7 unlimited",
      "freeQuota": "{{remaining}} of {{limit}} free this month",
      "day": "Day",
      "week": "Week",
      "generating": "Generating\u2026",
      "generateMealPlan": "Generate Meal Plan",
      "workingInBackground": "Working in the background\u2026",
      "previousDay": "Previous day",
      "nextDay": "Next day",
      "tapToAddMeal": "Tap to add a meal",
      "swapAria": "Swap {{slot}} for an alternative",
      "all": "All",
      "tapToAdd": "Tap to add",
      "groceryList": "Grocery list",
      "copied": "Copied",
      "copy": "Copy",
      "sent": "Sent",
      "sending": "Sending\u2026",
      "emailMe": "Email me",
      "swapMeal": "Swap meal",
      "swapTitle": "Swap {{slot}}",
      "swapSubtitle": "Pick the meal you'd rather have \u2014 macros stay on target.",
      "original": "Original",
      "optionN": "Option {{n}}",
      "currentSuffix": " \u00b7 current"
    },
    "profileSettingsV2": {
      "titleKicker": "Settings",
      "title": "Your profile",
      "loading": "Loading your profile\u2026",
      "fieldsUnavailable": "Some profile fields are unavailable on this server. Run the latest migrations to unlock sport + contact settings.",
      "loadFailed": "Failed to load profile",
      "logoutConfirm": "Log out of Strength Academy?",
      "logoutFailed": "Log out failed. Try again.",
      "phoneInvalid": "Phone must start with + and country code (e.g. +41 79 123 45 67).",
      "countryInvalid": "Country must be a 2-letter ISO code (uppercase).",
      "saveFailed": "Save failed",
      "saveFallback": "Could not save profile",
      "accountTitle": "Account",
      "fullName": "Full name",
      "lockedHint": "Locked. Contact support to change.",
      "emailLabel": "Email",
      "dateOfBirth": "Date of birth",
      "gender": "Gender",
      "man": "Man",
      "woman": "Woman",
      "genderHint": "Used for Sinclair / DOTS coefficient calculations.",
      "primarySportTitle": "Primary sport",
      "primarySportSub": "The sport that drives your home dashboard. Pick the one you train most.",
      "hybridTitle": "Hybrid athlete",
      "hybridSub": "Train more than one sport? Add the others as secondary.",
      "languageTitle": "Language",
      "languageSub": "Choose the language you want to use across the app.",
      "languageHint": "Changes apply instantly \u2014 no need to save.",
      "sports": {
        "weightlifting": {
          "label": "Weightlifting",
          "blurb": "Snatch, clean & jerk \u00b7 Sinclair-led home"
        },
        "powerlifting": {
          "label": "Powerlifting",
          "blurb": "Squat, bench, deadlift \u00b7 DOTS-led home"
        },
        "hypertrophy": {
          "label": "Hypertrophy",
          "blurb": "Muscle and size \u00b7 volume-led home"
        },
        "crossfit": {
          "label": "CrossFit",
          "blurb": "WODs and variety \u00b7 benchmark-led home"
        },
        "hyrox": {
          "label": "Hyrox",
          "blurb": "Hybrid race \u00b7 sim-time home"
        },
        "running": {
          "label": "Running",
          "blurb": "5k to marathon \u00b7 mileage-led home"
        },
        "triathlon": {
          "label": "Triathlon",
          "blurb": "Swim \u00b7 bike \u00b7 run \u00b7 multi-modal home"
        }
      },
      "countries": {
        "ch": "Switzerland",
        "us": "United States",
        "gb": "United Kingdom",
        "fr": "France",
        "de": "Germany",
        "it": "Italy",
        "es": "Spain",
        "nl": "Netherlands",
        "at": "Austria",
        "be": "Belgium",
        "au": "Australia",
        "ca": "Canada",
        "ie": "Ireland",
        "pt": "Portugal",
        "se": "Sweden",
        "no": "Norway",
        "dk": "Denmark",
        "fi": "Finland"
      },
      "contactTitle": "Contact",
      "contactSub": "Country helps us regionalize timing and content; phone is used for support and ticket alerts. Both optional.",
      "countryLabel": "Country",
      "selectPlaceholder": "\u2014 Select \u2014",
      "otherOption": "Other (enter code)",
      "countryCustomPlaceholder": "e.g. JP",
      "phoneLabel": "Phone",
      "phoneHint": "Start with + and country code (E.164).",
      "devicesTitle": "Connected devices",
      "devicesSub": "Link a watch to sync sleep, steps, heart rate, HRV and activities into your Progress page.",
      "devicesHint": "Apple Health & Health Connect sync in the iOS / Android app and cover most watches (Apple Watch, Samsung, Fitbit, Garmin & more).",
      "safetyTitle": "Safety",
      "safetySub": "Manage the people you've blocked across the Arena feed, chats and community.",
      "billingTitle": "Coaches & Billing",
      "billingSub": "Plan, coach relationships and active services",
      "accountModeTitle": "Account mode",
      "accountModeSub": "Switch between training as an athlete and coaching others. Your data is preserved across both modes \u2014 you can flip back any time.",
      "athlete": "Athlete",
      "coach": "Coach",
      "switchingMode": "Switching mode \u2014 reloading\u2026",
      "currentlyInView": "Currently in <b>{{mode}}</b> view.",
      "loggingOut": "Logging out\u2026",
      "logout": "Log out",
      "saved": "Saved",
      "saving": "Saving\u2026",
      "saveChanges": "Save changes"
    },
    "ratioAnalysisV2": {
      "kicker": "Lifter profile",
      "title": "Ratio Analysis",
      "loadingRatios": "Loading your lift ratios\u2026",
      "emptyState": "Log your key lifts in Rep Maxes \u2014 once a few are tracked, your lift ratios classify you into a lifter archetype here.",
      "heroLabel": "Your lifter archetype",
      "basedOn_one": "Based on <b>{{count}} ratio</b> from your rep maxes",
      "basedOn_other": "Based on <b>{{count}} ratios</b> from your rep maxes",
      "strengths": "Strengths",
      "workOn": "Work on",
      "ratiosBehindIt": "The ratios behind it",
      "allArchetypes": "All lifter archetypes",
      "youTag": "YOU",
      "editRatioAria": "Edit {{numerator}} and {{denominator}} rep maxes",
      "targetTapEnter": "Target {{pct}}% \u00b7 tap to enter your lifts",
      "targetTapEdit": "Target {{pct}}% \u00b7 tap to edit",
      "suggestionAllOnTarget": "Every ratio is within ~5% of its target \u2014 no weak link. Keep progressing your lifts together.",
      "suggestionPrioritise": "Prioritise your {{lift}} \u2014 it's proportionally behind in an off-target ratio, so bringing it up will even out your profile.",
      "suggestionLeads": "Your {{lift}} leads the way \u2014 keep it while progressing every lift together.",
      "suggestionBalanced": "Your lifts sit close to every target \u2014 progress them together.",
      "weightInvalid": "Enter a weight greater than 0 (kg).",
      "saveFailed": "Could not save. Please try again.",
      "editRepMaxes": "Edit rep maxes",
      "savedAsHint": "Saved as your current 1RM (training).",
      "saving": "Saving\u2026",
      "archetypes": {
        "power": {
          "name": "The Power Athlete",
          "short": "Power Athlete",
          "blurb": "Explosive \u2014 squat catching up.",
          "desc": "Explosive off the floor and overhead, with squat strength still catching up. Your power variants are high relative to the full lifts \u2014 the squat is the lever to keep raising."
        },
        "balanced": {
          "name": "The Balanced Athlete",
          "short": "Balanced Athlete",
          "blurb": "Every ratio on target.",
          "desc": "Your lifts sit close to every target ratio. No glaring weak link \u2014 progress comes from raising the whole system together."
        },
        "grinder": {
          "name": "The Grinder",
          "short": "The Grinder",
          "blurb": "Squat strength is the weak link.",
          "desc": "Your squat strength is the weak link \u2014 your lifts sit right up against your squat, so it caps them. Build squat and leg strength and the lifts follow."
        },
        "technician": {
          "name": "The Technician",
          "short": "The Technician",
          "blurb": "Technical \u2014 light on strength & power.",
          "desc": "Technically efficient, but there isn\u2019t much raw strength or explosive power feeding the lifts yet. Adding both strength and power is what raises your ceiling."
        },
        "engine": {
          "name": "The Engine",
          "short": "The Engine",
          "blurb": "Variations strong, full lifts lag.",
          "desc": "Your variations and pulls are strong, but the full Snatch and Clean & Jerk lag behind them. The competition lifts \u2014 positions and turnover \u2014 are the lever."
        },
        "specialist": {
          "name": "The Specialist",
          "short": "The Specialist",
          "blurb": "One lift far ahead of the rest.",
          "desc": "One lift sits far ahead of the others. A strong signature \u2014 the gap is the opportunity."
        }
      }
    },
    "runningV2": {
      "endurance": "Endurance",
      "running": "Running",
      "addRun": "Add Run",
      "overview": "Overview",
      "runs": "Runs",
      "routes": "Routes",
      "loadingRuns": "Loading your runs\u2026",
      "addARun": "Add a run",
      "overviewEmpty": "No runs logged yet \u2014 record or log your first run and your monthly km and pace evolution will land here.",
      "previousMonth": "Previous month",
      "nextMonth": "Next month",
      "avgPacePerKm": "Avg pace /km",
      "totalTime": "Total time",
      "paceEvolution": "Pace evolution",
      "personalRecords": "Personal records",
      "addEdit": "Add / edit",
      "pr5k": "5K",
      "pr10k": "10K",
      "prLongest": "Longest",
      "setBadge": "Set",
      "tapToClaim": "Tap to claim",
      "pacePerRun": "Pace per run",
      "pacePerWeek": "Pace per week",
      "pacePerMonth": "Pace per month",
      "unitRun": "run",
      "unitWeek": "week",
      "unitMonth": "month",
      "unitRuns": "runs",
      "unitWeeks": "weeks",
      "unitMonths": "months",
      "chartEmpty": "Log your first run \u2014 your pace will land here.",
      "oneLogged": "One {{unit}} logged at {{pace}} /km",
      "manyOnChart": "{{count}} {{unit}} on the chart",
      "paceGranularity": "Pace granularity",
      "weeks": "Weeks",
      "months": "Months",
      "runsEmpty": "No runs yet \u2014 record or log one to start your history.",
      "runHistory": "Run history",
      "allTime": "All time",
      "runFallback": "Run",
      "prBadge": "PR",
      "routesEmpty": "No saved routes yet \u2014 record or log a run, and the tours you name become reusable routes you can compare times on.",
      "savedRoutes": "Saved routes",
      "newRoute": "New",
      "routeRunCountOne": "1 run",
      "routeRunCountOther": "{{count}} runs",
      "bestTime": "Best {{time}}",
      "runDetail": "Run detail",
      "routeNoCompletedRuns": "No completed runs on this route yet.",
      "bestBadge": "Best",
      "editPr": "Edit personal record",
      "claimPr": "Claim a personal record",
      "distanceLabel": "Distance",
      "customDistanceOption": "Custom distance\u2026",
      "customDistanceMeters": "Custom distance (meters)",
      "customDistancePlaceholder": "e.g. 8000",
      "timeLabel": "Time (MM:SS or HH:MM:SS)",
      "timePlaceholder": "e.g. 21:45",
      "achievedOn": "Achieved on",
      "surfaceLabel": "Surface",
      "surfaceRoad": "Road",
      "surfaceTrack": "Track",
      "surfaceTrail": "Trail",
      "surfaceVirtual": "Virtual / app",
      "surfaceTreadmill": "Treadmill",
      "labelOptional": "Label (optional)",
      "labelPlaceholder": "e.g. Berlin Half",
      "errDistanceInvalid": "Enter a distance greater than 0",
      "errTimeInvalid": "Enter a time as MM:SS or HH:MM:SS",
      "errSaveRetry": "Could not save the PR \u2014 try again",
      "errSave": "Could not save the PR",
      "confirmDeletePr": "Delete this personal record?",
      "errDeleteRetry": "Could not delete the PR \u2014 try again",
      "saving": "Saving\u2026",
      "saveChanges": "Save changes",
      "savePr": "Save PR"
    },
    "trainingDataV2": {
      "subtitle": "Progress & performance",
      "title": "Analytics",
      "analyzeBarPath": "Analyze Bar Path",
      "analyzeBarPathBlurb": "Trace a lift video to check your bar trajectory",
      "savedBarPaths": "Saved bar paths \u2014 look back on Snatch & C&J over time",
      "rating": "Rating",
      "achievements": "Achievements",
      "liftBalance": "Lift balance",
      "outOfBalance": "Out of balance",
      "perfectlyBalanced": "Perfectly balanced",
      "fullRatioAnalysis": "Full ratio analysis",
      "competitionMaxes": "Competition maxes",
      "chartOverTime": "{{labels}} over time",
      "openCompetitionHistory": "Open competition history",
      "noCompetitionMaxes": "No competition maxes yet \u2014 tap \"+ Add\" to log a meet result.",
      "trainingTonnage": "Training tonnage",
      "weeklyTonnage": "Weekly tonnage",
      "monthlyTonnage": "Monthly tonnage",
      "week": "Week",
      "month": "Month",
      "category": "Category:",
      "previousPeriod": "Previous period",
      "nextPeriod": "Next period",
      "tapAgainForBreakdown": "Tap again for breakdown",
      "tapBarForDetails": "Tap a bar for details",
      "loadingWeeklyTonnage": "Loading weekly tonnage\u2026",
      "loadingMonthlyTonnage": "Loading monthly tonnage\u2026",
      "noTonnageInRange": "No tonnage logged in this range yet. Complete a workout to start filling this chart.",
      "repMaxProgression": "Rep max progression",
      "searchExercisePlaceholder": "Search an exercise\u2026",
      "mainLiftsHint": "Main lifts \u00b7 search to see all",
      "rmTracked": "{{list}} tracked",
      "tracked": "tracked",
      "noExercisesMatch": "No exercises match your search.",
      "noRepMaxes": "No rep maxes tracked yet \u2014 tap \"+ Add\"."
    },
    "athleteDashboard": {
      "newPr": "New PR!",
      "personalRecordSet": "Personal record set",
      "levelReached": "Level {{level}} reached!",
      "totalXp": "{{xp}} total XP",
      "workoutsCount": "{{count}} workouts!",
      "milestoneUnlocked": "Milestone unlocked",
      "dayStreakHeadline": "{{count}}-day streak",
      "shieldActive": "\ud83d\udee1\ufe0f Shield active",
      "onFire": "On fire! Keep going",
      "keepMomentum": "Keep the momentum",
      "newFeedbackCount": "{{count}} new feedback",
      "coachReviewedForm": "Coach reviewed your form",
      "daysCount_one": "{{count}} day",
      "daysCount_other": "{{count}} days",
      "toNextCompetition": "To next competition",
      "weekComplete": "Week complete!",
      "sessionsProgress": "{{done}} / {{target}} sessions",
      "bonusXpEarned": "Bonus XP earned",
      "xpThisWeek": "+{{xp}} XP this week",
      "oneAwayBonus": "1 away from {{days}}-day bonus!",
      "keepStreakAlive": "Keep your \ud83d\udd25 {{count}}-day streak alive",
      "completeTodaysWorkout": "Complete today's workout",
      "earnXp": "Earn 50 XP",
      "lvXpHeadline": "Lv.{{level}} \u00b7 {{xp}}xp",
      "xpToLevel": "{{xp}} XP to Level {{level}}",
      "sinclair": "Sinclair",
      "noPrsYet": "No PRs yet",
      "daysToEvent": "days to event",
      "noEvent": "No event",
      "hybrid": "Hybrid",
      "unrated": "Unrated",
      "hybridScore": "Hybrid Score",
      "sportRankNamed": "{{sport}} Rank",
      "sportRank": "Sport Rank",
      "consistency": "Consistency",
      "weeklyVolume": "Weekly Volume",
      "weightLoss": "Weight Loss",
      "weightGain": "Weight Gain",
      "maintain": "Maintain",
      "setGoal": "Set Goal",
      "bodyGoal": "Body Goal",
      "dailyLog": "Daily Log",
      "yourCoach": "your coach",
      "today": "Today",
      "tomorrow": "Tomorrow",
      "loadingDashboard": "Loading your dashboard...",
      "coachInvitedCall": "{{name}} invited you to book a coaching call",
      "bookATime": "Book a Time",
      "levelShort": "Lv.{{level}}",
      "xpCount": "{{xp}} XP",
      "streakDays_one": "\ud83d\udd25 {{count}} day",
      "streakDays_other": "\ud83d\udd25 {{count}} days",
      "volume": "Volume",
      "thisWeek": "This Week",
      "latest": "Latest",
      "todayLower": "today",
      "daysAgoShort": "{{count}}d ago",
      "totalCount": "{{count}} total",
      "noPrs": "No PRs",
      "raceWeek": "Race week!",
      "finalPrep": "Final prep",
      "days": "days",
      "next": "Next",
      "streak": "Streak",
      "daysLabel_one": "day",
      "daysLabel_other": "days",
      "startToday": "Start today",
      "shields_one": "{{count}} shield",
      "shields_other": "{{count}} shields",
      "nextWorkoutHeading": "NEXT WORKOUT",
      "complex": "Complex",
      "moreCount": "+{{count}} more",
      "noExercisesScheduled": "No exercises scheduled",
      "noUpcomingWorkouts": "No Upcoming Workouts",
      "getStartedProgram": "Get started with a training program",
      "browseTemplates": "Browse Templates",
      "plan": "Plan",
      "exCount_one": "{{count}} ex",
      "exCount_other": "{{count}} exs",
      "moreExercises": "+{{count}} more exercises",
      "nextEvent": "Next Event",
      "chat": "Chat",
      "messageYourCoach": "Message your coach",
      "videoReview": "Video Review",
      "getCoachFeedback": "Get coach feedback",
      "community": "Community",
      "chatWithGroup": "Chat with your training group",
      "weeklyReview": "Weekly Review",
      "yourTrainingSummary": "Your training summary",
      "generate": "Generate",
      "totalTonnage": "Total Tonnage",
      "setsCompleted": "Sets Completed",
      "avgFeeling": "Avg Feeling",
      "jointExerciseHistory": "{{joint}} Exercise History",
      "recent": "Recent",
      "noExerciseHistory": "No exercise history found",
      "showingExercisesTarget": "Showing exercises that target {{joint}} area"
    },
    "voiceNutritionModal": {
      "title": "Voice Log",
      "subtitle": "Describe your meal and we'll calculate the macros",
      "recordingHint": "Describe what you ate \u2014 include ingredients and approximate quantities for the most accurate results.",
      "recordingExample": "Example: \"I had a chicken breast about 200 grams with a cup of rice and some broccoli\"",
      "analyzing": "Analyzing your meal...",
      "analyzingSub": "Transcribing audio & calculating macros",
      "whatYouSaid": "What you said",
      "detectedMeal": "Detected Meal",
      "caloriesLabel": "Calories",
      "proteinLabel": "Protein",
      "carbsLabel": "Carbs",
      "fatsLabel": "Fats",
      "ingredients": "Ingredients",
      "tapToEdit": "Tap any value to edit",
      "ingredientNameAria": "Ingredient name",
      "removeIngredientAria": "Remove ingredient",
      "gramsAria": "Grams",
      "grams": "grams",
      "kcalShort": "kcal",
      "proteinShort": "P (g)",
      "carbsShort": "C (g)",
      "fatShort": "F (g)",
      "mealCategory": "Meal Category",
      "redo": "Redo",
      "logThisMeal": "Log This Meal",
      "saving": "Saving to your food log...",
      "errorTitle": "Something went wrong",
      "tryAgain": "Try Again",
      "notAuthenticated": "Not authenticated",
      "limitReached": "Monthly AI capture limit reached ({{used}}/{{limit}} used). Upgrade to Premium for unlimited access.",
      "analyzeFailed": "Failed to analyze voice note",
      "analysisFailed": "Analysis failed",
      "genericError": "Something went wrong. Please try again.",
      "addIngredientFirst": "Add at least one ingredient before logging.",
      "saveFailed": "Failed to save. Please try again."
    },
    "coachStorefrontV2": {
      "titleLabel": "Coach",
      "title": "Storefront",
      "loadingCoach": "Loading coach\u2026",
      "coachNotFound": "Coach not found.",
      "coachFallbackName": "Coach",
      "visitWebsite": "Visit website",
      "programsCount": "Programs ({{total}})",
      "noPrograms": "No public programs from this coach yet.",
      "free": "Free",
      "weeksShort": "{{weeks}}wk",
      "daysPerWeekShort": "{{days}}d/wk",
      "pageAria": "Page {{page}}",
      "aboutCoach": "About {{name}}",
      "noBio": "This coach hasn't added a bio yet.",
      "specializations": "Specializations"
    },
    "nutritionOnboardingModal": {
      "title": "Set up your targets",
      "goalTitle": "What's your goal?",
      "goalSubtitle": "This sets whether we aim for a deficit, maintenance, or surplus.",
      "goalLoseLabel": "Lose weight",
      "goalLoseBlurb": "Eat in a calorie deficit",
      "goalMaintainLabel": "Maintain",
      "goalMaintainBlurb": "Hold your current weight",
      "goalGainLabel": "Gain / build",
      "goalGainBlurb": "Eat in a calorie surplus",
      "paceLabel": "Pace",
      "paceStandard": "Standard",
      "paceAggressive": "Aggressive",
      "kcalPerDay": "{{amount}} kcal/day",
      "targetWeightLabel": "Target weight (kg)",
      "optionalSuffix": "\u2014 optional",
      "examplePlaceholder": "e.g. {{value}}",
      "activityTitle": "Your daily activity",
      "activitySubtitle": "Roughly how many steps do you average per day? This sets your baseline activity level. You can connect Apple Health later to keep it automatic.",
      "averageStepsLabel": "Average steps / day",
      "presetSedentary": "Sedentary",
      "presetActive": "Active",
      "presetVeryActive": "Very active",
      "profileTitle": "A few details",
      "profileSubtitle": "We use these to estimate your calorie needs accurately.",
      "sexLabel": "Sex",
      "sexMale": "Male",
      "sexFemale": "Female",
      "heightLabel": "Height (cm)",
      "bodyweightLabel": "Current bodyweight (kg)",
      "dobLabel": "Date of birth",
      "saving": "Saving\u2026",
      "calculateMyTargets": "Calculate my targets",
      "saveFailed": "Something went wrong saving your details. Please try again."
    },
    "chariotRoadScene": {
      "chariotsOnRoadOne": "{{count}} chariot on the road",
      "chariotsOnRoadOther": "{{count}} chariots on the road"
    },
    "arenaExerciseCard": {
      "respondFailed": "Failed to respond",
      "enterValidWeight": "Enter a valid weight",
      "bodyweightRequired": "Bodyweight is required for Sinclair scoring",
      "submitFailed": "Failed to submit",
      "vsOpponent": "vs @{{handle}}",
      "daysLeftShort": "{{days}}d left",
      "variations": "Variations",
      "challengedYou": "@{{handle}} challenged you",
      "accept": "Accept",
      "decline": "Decline",
      "waitingForAcceptance": "Waiting for acceptance",
      "notAcceptedYet": "@{{handle}} hasn't accepted this challenge yet",
      "submitted": "Submitted",
      "videoProofUploaded": "Video proof uploaded",
      "bothSubmitted": "Both athletes have submitted \u2014 results coming soon!",
      "waitingForOpponent": "Waiting for opponent to submit...",
      "weightLiftedLabel": "Weight Lifted (kg) *",
      "weightPlaceholder": "e.g. 120",
      "bodyweightLabel": "Your Bodyweight (kg) *",
      "bodyweightPlaceholder": "e.g. 85",
      "videoProofLabel": "Video Proof",
      "optional": "(optional)",
      "trimmedVideoName": "{{name}} ({{seconds}}s trimmed)",
      "attachVideoProof": "Attach video proof",
      "submitResult": "Submit Result"
    },
    "progressPage": {
      "goalAchievedMessage": "You achieved your goal: {{goals}}!",
      "and": "and",
      "deleteGoalConfirm": "Are you sure you want to delete this goal?",
      "goalTarget": "Goal: {{weight}}kg",
      "progress": "Progress",
      "percentComplete": "{{percent}}% Complete",
      "achieved": "Achieved!",
      "daysLeft": "{{days}} days left",
      "targetDatePassed": "Target date passed",
      "targetDate": "Target Date",
      "loading": "Loading your progress...",
      "title": "Your Progress",
      "subtitleHyrox": "Track your HYROX race times and improvements",
      "subtitleLifting": "Track your journey to achieving your lifting goals",
      "newGoal": "New Goal",
      "goalShort": "Goal",
      "noGoalsTitle": "No Goals Set Yet",
      "noGoalsBody": "Start tracking your progress by setting your first lifting goals. We'll help you stay motivated on your journey!",
      "setFirstGoal": "Set Your First Goal"
    },
    "healthHub": {
      "notEnoughData": "Not enough data yet",
      "title": "Health hub",
      "manageDevices": "Manage devices",
      "connectDevice": "Connect a device",
      "loading": "Loading your health data\u2026",
      "connectCtaSub": "Sync sleep, steps, heart rate & activities from your watch",
      "viaProvider": "via {{provider}}",
      "sleepAvg": "Sleep \u00b7 avg",
      "stepsAvg": "Steps \u00b7 7-day avg",
      "restingHrAvg": "Resting HR \u00b7 avg",
      "hrvAvg": "HRV \u00b7 avg",
      "today": "Today",
      "latest": "Latest",
      "noDataSynced": "No health data synced yet \u2014 check back after your next sync.",
      "recentActivities": "Recent activities",
      "activityFallback": "Activity",
      "connectedDevices": "Connected devices"
    },
    "techniqueSummaryPage": {
      "loadUserFailed": "Failed to load user",
      "goBack": "Go Back",
      "title": "Technique Feedback",
      "subtitle": "Review your coaching feedback and progress",
      "summaryTab": "Summary",
      "notesTab": "Notes",
      "progressTab": "Progress",
      "noFeedbackYet": "No Feedback Yet",
      "feedbackWillAppear": "Your coach's technique feedback for {{category}} will appear here.",
      "previousSummaries": "Previous Summaries"
    },
    "athleteRelationshipsPanel": {
      "loadFailed": "Failed to load",
      "coachFallback": "Coach",
      "templateFallback": "Template",
      "endCoachingWarning_one": "\n\nThis will also cancel {{count}} active subscription with this coach.",
      "endCoachingWarning_other": "\n\nThis will also cancel {{count}} active subscriptions with this coach.",
      "endCoachingConfirm": "End your coaching relationship with {{name}}?{{warning}}\n\nThey can't add you again unless you invite them back.",
      "endRelationshipFailed": "Failed to end relationship",
      "cancelSubConfirm": "Cancel this subscription at the end of the current period?",
      "cancelSubFailed": "Failed to cancel subscription",
      "cancelTemplateSubConfirm": "Cancel this template subscription at the end of the current period?",
      "cancelTemplateSubFailed": "Failed to cancel template subscription",
      "myCoaches": "My coaches",
      "pendingReview": "Pending \u2014 review in your inbox",
      "activeSince": "Active since {{date}}",
      "endCoaching": "End coaching",
      "plansSubscriptions": "Plans & subscriptions",
      "endsOn": "ends {{date}}",
      "cancelling": "Cancelling"
    },
    "arenaDoorAnimation": {
      "enterTheArena": "Enter the Arena"
    },
    "coachRequestsBanner": {
      "pendingSummary_one": "{{count}} pending request from coaches",
      "pendingSummary_other": "{{count}} pending requests from coaches",
      "coachCount_one": "{{count}} coach",
      "coachCount_other": "{{count}} coaches",
      "planCount_one": "{{count}} workout plan",
      "planCount_other": "{{count}} workout plans",
      "review": "Review",
      "title": "Coach requests",
      "coachingRequests": "Coaching requests",
      "workoutPlans": "Workout plans",
      "noteLabel": "Note:",
      "accept": "Accept",
      "decline": "Decline",
      "reviewAndAccept": "Review & accept",
      "fromCoach": "from {{name}}",
      "weeksCount_one": "{{count}} week",
      "weeksCount_other": "{{count}} weeks",
      "daysPerWeek": "{{count}} days/week",
      "startsOn": "Starts {{date}}",
      "declineConfirm": "Decline coaching request from {{name}}? This blocks further requests \u2014 they cannot add you again unless you invite them.",
      "declinePlanTitle": "Decline plan",
      "declinePlanBody": "\"{{plan}}\" from {{coach}} will be deactivated. You can let them know why (optional).",
      "reasonPlaceholder": "Reason (optional)",
      "failedAccept": "Failed to accept",
      "failedDecline": "Failed to decline",
      "failedDeclinePlan": "Failed to decline plan"
    },
    "nutritionV2Today": {
      "todaysMacros": "Today's macros",
      "previousDay": "Previous day",
      "nextDay": "Next day",
      "protein": "Protein",
      "carbs": "Carbs",
      "fats": "Fats",
      "logFood": "Log food",
      "dailyTargets": "Daily targets",
      "byCoach": "by {{name}}",
      "personalize": "Personalize",
      "protShort": "Prot",
      "carbShort": "Carb",
      "fatShort": "Fat",
      "todaysPlan": "Today's plan",
      "viewFullWeek": "View full week",
      "modified": "Modified",
      "mealMacros": "P {{protein}}g \u00b7 C {{carbs}}g \u00b7 F {{fats}}g",
      "thisWeek": "This week",
      "loggedOfSeven": "{{count}} / 7 logged",
      "pastSevenDays": "Past 7 days",
      "today": "Today",
      "noMealsLogged": "No meals logged",
      "mealsLogged_one": "{{count}} meal logged",
      "mealsLogged_other": "{{count}} meals logged"
    },
    "challengeQuickSubmitModal": {
      "expired": "Expired",
      "timeLeftDays": "{{d}}d {{h}}h left",
      "timeLeftHours": "{{h}}h {{m}}m left",
      "timeLeftMinutes": "{{m}}m left",
      "enterValidWeight": "Enter a valid weight",
      "bodyweightRequired": "Bodyweight is required for Sinclair scoring",
      "submitFailed": "Failed to submit",
      "title": "Active Challenge",
      "repMax": "{{reps}} Rep Max",
      "complex": "Complex",
      "sinclairScoring": "Sinclair Scoring",
      "absoluteWeight": "Absolute Weight",
      "opponent": "Opponent",
      "scoreSubmitted": "Score Submitted!",
      "waitingForOpponent": "Waiting for opponent...",
      "weightLiftedLabel": "Weight Lifted (kg) *",
      "weightPlaceholder": "e.g. 120",
      "bodyweightLabel": "Your Bodyweight (kg) *",
      "bodyweightPlaceholder": "e.g. 85",
      "videoProof": "Video Proof",
      "optional": "(optional)",
      "videoTrimmed": "{{name}} - trimmed {{start}}s\u2192{{end}}s",
      "tapToAttachVideo": "Tap to attach a video",
      "submitScore": "Submit Score"
    },
    "revealAnimation": {
      "pts": "pts",
      "sinclairScore": "Sinclair: {{score}}",
      "noSubmission": "No submission",
      "abandoned": "Abandoned",
      "draw": "DRAW",
      "victory": "VICTORY",
      "defeat": "DEFEAT",
      "ahead": "+{{diff}} {{unit}} ahead",
      "behind": "{{diff}} {{unit}} behind"
    },
    "shareableCard": {
      "dnf": "DNF",
      "draw": "DRAW",
      "vs": "VS",
      "pts": "pts",
      "sinclairScoring": "Sinclair Scoring",
      "absoluteWeight": "Absolute Weight",
      "watermark": "StrengthAcademy Arena",
      "winner": "Winner!",
      "defeated": "Defeated!",
      "sinclairScore": "Sinclair: {{score}}",
      "repMax": "{{reps}} Rep Max",
      "oneRepMax": "1RM",
      "slashSinclair": "/ Sinclair",
      "slashAbsolute": "/ Absolute"
    },
    "clientDashboard": {
      "pleaseSignIn": "Please sign in",
      "coachSubscriptionRequired": "You need a Coach subscription to access this feature. Please upgrade your account.",
      "coachProfileNotFound": "Coach profile not found. Please contact support.",
      "loadFailed": "Failed to load client dashboard",
      "sessionCreated": "Session created successfully",
      "blockCreated": "Programming block created successfully",
      "accessDenied": "Access Denied",
      "title": "Client Dashboard",
      "session": "Session",
      "addSession": "Add Session",
      "block": "Block",
      "addBlock": "Add Block",
      "clubs": "Clubs",
      "manageClubs": "Manage Clubs",
      "bookingSettings": "Booking Settings",
      "filterBySport": "Filter Clients by Sport Type",
      "allSports": "All Sports"
    },
    "clientMovementPerformance": {
      "noData": "No data",
      "attemptLogged": "{{count}} attempt logged",
      "attemptsLogged": "{{count}} attempts logged",
      "notEnoughData": "Not enough data yet for this movement",
      "missRate": "Miss Rate",
      "missedOfTotal": "{{missed}} of {{total}} missed",
      "avgFeeling": "Avg Feeling",
      "mostlyEasy": "Mostly easy",
      "moderate": "Moderate",
      "challenging": "Challenging",
      "feelingDistribution": "Feeling Distribution",
      "hard": "Hard",
      "medium": "Medium",
      "easy": "Easy",
      "summary": "Until now, the client missed <b>{{missPct}}%</b> of {{movement}}s, with a feeling distribution of <hard>{{hardPct}}% hard</hard>, <medium>{{mediumPct}}% medium</medium>, <easy>{{easyPct}}% easy</easy> and an average feeling score of <b>{{avgScore}} / 3</b>.",
      "overviewTitle": "Movement Performance Overview",
      "noPerformanceData": "No performance data available yet for this client.",
      "weightliftingPerformance": "Weightlifting Performance",
      "powerliftingPerformance": "Powerlifting Performance",
      "hyroxPerformance": "HYROX Performance",
      "subtitle": "Movement consistency, feeling distribution, and performance metrics"
    },
    "competitionShareableCard": {
      "weightlifting": "WEIGHTLIFTING",
      "powerlifting": "POWERLIFTING",
      "bodyweight": "BW {{weight}}kg",
      "total": "TOTAL",
      "attempt1": "1st",
      "attempt2": "2nd",
      "attempt3": "3rd",
      "good": "GOOD",
      "noLift": "NO LIFT"
    },
    "friendsManagerModal": {
      "title": "Friends",
      "removeConfirm": "Remove this friend?",
      "tabMyFriends": "My friends",
      "tabAdd": "Add",
      "tabRequests": "Requests",
      "noFriends": "No friends yet.",
      "findFriends": "Find friends",
      "removeFriend": "Remove friend",
      "noPendingRequests": "No pending requests.",
      "accept": "Accept",
      "decline": "Decline"
    },
    "templateEnrollFlow": {
      "coachFallback": "Coach",
      "enrolledToast": "You're enrolled!",
      "enrolledSubtitle": "Your program is ready. Your first session is waiting for you.",
      "seeWorkout": "See your workout",
      "enrolledLater": "Later",
      "unenrollTitle": "Unenroll from Program?",
      "unenrollBody": "Are you sure you want to unenroll from <b>{{name}}</b>?",
      "unenrollWarning": "This will deactivate your current program. Your workout history will be preserved, but you will no longer have this program as your active plan.",
      "unenrolling": "Unenrolling\u2026",
      "unenroll": "Unenroll"
    },
    "helmetAvatarCropper": {
      "title": "Position Your Face",
      "dragHint": "Drag \u00b7 Scroll to zoom",
      "useThis": "Use This"
    },
    "savedMealEditorModal": {
      "title": "Edit saved meal",
      "mealName": "Meal name",
      "mealType": "Meal type",
      "mealTypes": {
        "breakfast": "breakfast",
        "lunch": "lunch",
        "dinner": "dinner",
        "snack": "snack"
      },
      "legacyNotice": "This meal was created before item-level editing was available, so it has no structured items. Re-save it from the Log Food modal using \"Save as my meal\" to enable item-level edits.",
      "items": "Items",
      "itemCount_one": "{{count}} item",
      "itemCount_other": "{{count}} items",
      "noItems": "No items.",
      "swapIngredient": "Swap ingredient",
      "swapTitle": "Swap for a different food",
      "removeItem": "Remove item",
      "total": "Total",
      "nameRequired": "Name is required",
      "saveFailed": "Failed to save changes.",
      "saving": "Saving\u2026",
      "saveChanges": "Save changes"
    },
    "coliseumRevealCard": {
      "todaysBattle": "Today's Battle",
      "vs": "VS",
      "repsRm": "{{reps}}RM",
      "complex": "Complex",
      "sinclair": "Sinclair",
      "absolute": "Absolute",
      "submitted": "Submitted",
      "awaiting": "Awaiting",
      "viewFullChallenge": "View Full Challenge"
    },
    "dayMealsModal": {
      "title": "Meals \u2014 {{dayLabel}}",
      "mealsLogged_one": "{{count}} meal logged",
      "mealsLogged_other": "{{count}} meals logged",
      "carbsByMeal": "Carbs by meal",
      "gramsTotal": "{{grams}}g total",
      "barSegmentTitle": "{{label}}: {{grams}}g carbs ({{pct}}%)",
      "itemCount_one": "{{count}} item",
      "itemCount_other": "{{count}} items",
      "carbsShare": "{{pct}}% of day carbs",
      "untitledMeal": "Untitled meal",
      "editMeal": "Edit meal",
      "deleteMeal": "Delete meal",
      "dayTotal": "Day total",
      "noMealsLogged": "No meals logged for {{dayLabel}}",
      "noMealsHint": "Use the Log Food button below to add one.",
      "logFood": "Log Food"
    },
    "nutritionAutopilotPanel": {
      "loading": "Loading autopilot\u2026",
      "title": "Autonomous coach",
      "toggleAria": "Toggle autonomous nutrition coach",
      "description": "Auto-adjusts your daily targets from your activity and nudges you to log meals & bodyweight. Activity calories are estimated from distance/duration \u2014 we never trust watch calorie numbers.",
      "lockedByCoach": "Your coach has set your targets, so autopilot is paused. Ask them to hand back control to enable it.",
      "goalLabel": "Goal",
      "goalLose": "Lose",
      "goalMaintain": "Maintain",
      "goalGain": "Gain",
      "adaptFrom": "Adapt my targets from",
      "inAppActivity": "In-app activity",
      "inAppActivityHint": "Runs, rides & workouts you log here (max +400 kcal/day)",
      "dailySteps": "Daily steps",
      "stepsAvg": "{{steps}} steps/day (7-day avg)",
      "stepsSourceHint": "From Apple Health \u2014 iOS app only",
      "resyncAppleHealth": "Re-sync Apple Health",
      "connectAppleHealth": "Connect Apple Health",
      "openIosHint": "Open the iOS app to connect Apple Health and auto-adapt from steps.",
      "turnOff": "Turn off",
      "healthIosOnly": "Health data is only available in the iOS app.",
      "healthPermissionDenied": "Permission denied. Enable Health access in Settings to auto-adapt from steps.",
      "connectedWithSteps": "Connected \u2014 {{steps}} steps/day avg.",
      "connected": "Connected.",
      "connectFailed": "Could not connect to Apple Health. Please try again."
    },
    "betSlider": {
      "yourBet": "Your Bet",
      "betOn": "{{amount}} XP on {{name}}",
      "wonPayout": "Won {{payout}} XP",
      "lost": "Lost",
      "refunded": "Refunded",
      "pendingResult": "Pending result...",
      "bettingClosed": "Betting closed \u2014 a score has been submitted",
      "needMinXp": "Need at least 10 XP to place a bet",
      "placeFailed": "Failed to place bet",
      "placeABet": "Place a Bet",
      "pool": "Pool: {{xp}} XP",
      "wager": "Wager",
      "estPayout": "Est. payout if you win",
      "placing": "Placing...",
      "confirmBet": "Confirm Bet"
    },
    "groceryListPanel": {
      "title": "Grocery list",
      "itemCount": "{{count}} items",
      "thisWeek": "This week",
      "next7Days": "Next 7 days",
      "next14Days": "Next 14 days",
      "custom": "Custom",
      "refresh": "Refresh",
      "to": "to",
      "aggregating": "Aggregating\u2026",
      "pickValidRange": "Pick a valid date range.",
      "fromCoachMeals": "From your coach's prescribed meals.",
      "copied": "Copied",
      "copy": "Copy",
      "emailMe": "Email me",
      "clipboardUnavailable": "Clipboard not available",
      "sentToInbox": "Sent to your inbox",
      "sendFailed": "Failed to send"
    },
    "battleIntro": {
      "challengeDay": "Challenge Day: {{date}}",
      "daysToProve": "{{days}} days to prove yourself",
      "gloryToTheWinner": "GLORY TO THE WINNER",
      "tapToContinue": "Tap anywhere to continue"
    },
    "maxoutProofUploadModal": {
      "title": "Proof Video",
      "uploadPrompt": "Upload your lift video",
      "uploadLimits": "Max 45 sec \u00b7 Max 100 MB",
      "checkingVideo": "Checking video...",
      "uploadingProof": "Uploading proof...",
      "uploaded": "Video uploaded!",
      "visibleOnLeaderboard": "Visible on the arena leaderboard",
      "uploadFailed": "Upload failed"
    },
    "nutritionNotificationsDrawer": {
      "bellAriaLabel": "Nutrition coach notifications",
      "title": "Nutrition Coach",
      "emptyState": "No messages yet. Your coach will nudge you here to stay on track.",
      "setKcal": "Set {{kcal}} kcal",
      "notNow": "Not now",
      "applied": "Applied \u2713",
      "dismissed": "Dismissed"
    },
    "contactCoachModal": {
      "headerTitle": "Contact {{coachName}}",
      "headerSubtitle": "Send a quick note \u2014 they'll get back to you.",
      "sentTitle": "Message sent!",
      "sentBody": "{{coachName}} got your message and will reach out to you soon.",
      "sendFailed": "Something went wrong. Please try again.",
      "nameLabel": "Your name",
      "emailLabel": "Email *",
      "sportLabel": "Sport",
      "goalLabel": "Goal",
      "messageLabel": "Message *",
      "messagePlaceholder": "Tell {{coachName}} a bit about where you're at and what you're looking for\u2026",
      "sending": "Sending\u2026",
      "sendMessage": "Send message",
      "consent": "By sending, you agree to {{coachName}} contacting you about coaching. You can unsubscribe at any time.",
      "sportWeightlifting": "Weightlifting",
      "sportPowerlifting": "Powerlifting",
      "sportHypertrophy": "Hypertrophy",
      "sportCrossfit": "CrossFit",
      "sportHyrox": "Hyrox",
      "sportRunning": "Running",
      "sportTriathlon": "Triathlon",
      "sportHybridGeneral": "Hybrid / general",
      "sportOther": "Other",
      "goalGetStronger": "Get stronger",
      "goalCompete": "Compete",
      "goalBuildMuscle": "Build muscle",
      "goalLoseFat": "Lose fat",
      "goalHybridFitness": "Hybrid fitness",
      "goalRehabPain": "Rehab / pain",
      "goalGeneralHealth": "General health"
    },
    "arenaFightTile": {
      "you": "You",
      "spectating": "Spectating",
      "complex": "Complex",
      "sinclair": "Sinclair",
      "absolute": "Absolute",
      "expired": "Expired"
    },
    "clientPlanningPage": {
      "loading": "Loading client planning...",
      "title": "{{name}}'s Training Plan",
      "clientFallback": "Client",
      "started": "Started: {{date}}",
      "notAvailable": "N/A",
      "videoFeedbackEnabled": "Video Feedback Enabled",
      "macroPlanningTab": "Macro Planning",
      "questionnairesTab": "Questionnaires",
      "performanceTab": "Performance & Feedback"
    },
    "logMealLibraryModal": {
      "title": "Log a meal",
      "subtitle": "Pick from your saved meals or the app's standard meals",
      "myMealsTab": "My Meals",
      "viewMealsTab": "View Meals",
      "searchMyPlaceholder": "Search your meals\u2026",
      "searchStandardPlaceholder": "Search standard meals\u2026",
      "filterAll": "All",
      "filterBreakfast": "Breakfast",
      "filterLunch": "Lunch",
      "filterDinner": "Dinner",
      "filterSnack": "Snack",
      "emptyNoSaved": "No saved meals yet",
      "emptyNoMatch": "No meals match",
      "emptyNoSavedHint": "Save a meal from the Recipes tab and it\u2019ll show up here for one-tap logging.",
      "emptyNoMatchHint": "Try a different search or meal type.",
      "loggedCount": "logged {{count}}\u00d7",
      "macroLine": "P {{protein}}g \u00b7 C {{carbs}}g \u00b7 F {{fats}}g",
      "kcal": "kcal"
    },
    "arenaWelcome": {
      "battleTitle": "Battle your friends",
      "createHandleSubtitle": "Create your handle to enter the Arena",
      "letsGo": "Let's go",
      "tapToContinue": "Tap anywhere to continue"
    },
    "repMaxDetailModal": {
      "dialogAria": "{{exercise}} rep-max history",
      "title": "Rep max progression",
      "loadingHistory": "Loading history\u2026",
      "emptyState": "No rep maxes logged for {{exercise}} yet \u2014 tap \"+ Log rep max\" to add your first.",
      "bestOneRm": "best 1RM",
      "logRepMax": "Log rep max"
    },
    "handleSetupModal": {
      "tooShort": "Must be at least 3 characters",
      "tooLong": "Must be 20 characters or less",
      "invalidChars": "Only letters, numbers, and underscores",
      "handleTaken": "This handle is taken",
      "checkFailed": "Could not check availability",
      "setFailed": "Failed to set handle",
      "readyForArena": "You're ready for the Arena!",
      "welcomeTitle": "Welcome to the Arena",
      "welcomeSubtitle": "Choose your fighter handle. This is how friends will find and challenge you.",
      "handlePlaceholder": "your_handle",
      "handleAvailable": "Handle is available!",
      "formatHint": "3-20 characters, letters, numbers, underscores",
      "enterArena": "Enter the Arena"
    },
    "groupBetPicker": {
      "yourBet": "Your Bet",
      "betSummary": "{{amount}} XP on {{name}}",
      "won": "Won {{payout}} XP",
      "lost": "Lost",
      "refunded": "Refunded",
      "pendingResult": "Pending result...",
      "bettingClosed": "Betting closed \u2014 a score has been submitted",
      "needXp": "Need at least 10 XP to bet",
      "placeFailed": "Failed to place bet",
      "betOnAthlete": "Bet on an Athlete",
      "wager": "Wager",
      "estPayout": "Est. payout if they win",
      "placing": "Placing...",
      "confirmBet": "Confirm Bet"
    },
    "activeChallengeButton": {
      "expired": "Expired",
      "addFailed": "Failed to add challenge",
      "activeChallenge": "Active Challenge",
      "activeChallenges": "{{count}} Active Challenges",
      "addToWorkout": "Add to workout",
      "addChallengeTitle": "Add Challenge",
      "pickChallenge": "Pick a challenge to add as a maxout exercise to today's workout.",
      "vsOpponent": "vs {{name}}"
    },
    "warmupHelperV2": {
      "title": "Warmup Planner",
      "subtitle": "Plan your opener, set how long you have until first attempt, and follow the timing-aware warmup chart.",
      "liftLabel": "Lift",
      "openerLabel": "Opener (kg)",
      "openerPlaceholder": "e.g. 100",
      "minutesLabel": "Minutes until first attempt",
      "generate": "Generate warmup plan",
      "pauseTimer": "Pause timer",
      "startTimer": "Start timer",
      "resetTimer": "Reset timer",
      "timerHint": "Start when warmup begins",
      "colWeight": "Weight",
      "colReps": "Reps",
      "colUntilFirst": "Until 1st",
      "bar": "Bar",
      "minBefore": "{{minutes}} min",
      "footnote": "Weights rounded to the nearest 2.5 kg. Adjust timing based on the lot board and the flow of the session.",
      "empty": "Enter your opener and how long until your first attempt, then generate the plan."
    },
    "athleteSportHeroCard": {
      "today": "Today",
      "physiqueFocus": "Physique focus",
      "powerlifting": {
        "headline": "Next meet in 47 days",
        "sub": "Time to lock in openers and finalize attempt selections.",
        "primaryStatLabel": "DOTS",
        "secondaryStatLabel": "Total",
        "cta": "Plan attempts"
      },
      "weightlifting": {
        "headline": "Sinclair on the rise",
        "sub": "Platform-ready numbers \u2014 your snatch is trending up 4% over the last block.",
        "primaryStatLabel": "Sinclair",
        "secondaryStatLabel": "Total",
        "cta": "Open lifts"
      },
      "hyrox": {
        "headline": "Sim PR: 1:12:48",
        "sub": "Sled push is your weakest station \u2014 2:14 vs. roxers at your level.",
        "primaryStatLabel": "Best sim",
        "secondaryStatLabel": "Weak link",
        "cta": "Race plan"
      },
      "crossfit": {
        "headline": "Benchmark streak: 12",
        "sub": "Fran is overdue \u2014 last attempt was 18 days ago.",
        "primaryStatLabel": "Fran",
        "secondaryStatLabel": "Workouts",
        "cta": "Pick a WOD"
      },
      "hypertrophy": {
        "headline": "Volume up 8% this block",
        "sub": "You hit MEV on all body parts last week. Consider an MRV push next.",
        "primaryStatLabel": "Weekly sets",
        "secondaryStatLabel": "Consistency",
        "cta": "Plan next block"
      },
      "running": {
        "headline": "Mileage up 12% MoM",
        "sub": "Tempo runs are paying off \u2014 threshold pace dropped 8 sec/km.",
        "primaryStatLabel": "Threshold",
        "secondaryStatLabel": "Weekly km",
        "cta": "Log a run"
      },
      "triathlon": {
        "headline": "70.3 in 64 days",
        "sub": "Bike volume is on track. Open-water swim sessions are 1 short this week.",
        "primaryStatLabel": "FTP",
        "secondaryStatLabel": "Swim CSS",
        "cta": "Open block"
      }
    },
    "readinessCard": {
      "todaysCheckIn": "Today's check-in",
      "loggedYesterday": "Logged yesterday",
      "loggedDaysAgo": "Logged {{count}} days ago",
      "recovery": "Recovery",
      "readiness": "Readiness",
      "howAreYouFeeling": "How are you feeling?",
      "recoveryAndReadiness": "Recovery & readiness",
      "bodyweight": "Bodyweight",
      "sleep7d": "Sleep \u00b7 7d",
      "steps7d": "Steps \u00b7 7d",
      "openHealthHub": "Open your health hub",
      "sharedWithCoach": "Shared with coach",
      "privateAutoAdjusts": "Private \u00b7 auto-adjusts your plan",
      "athleteModeOn": "Athlete mode on",
      "athleteModeOff": "Athlete mode off"
    },
    "athleteNotificationCenter": {
      "title": "Notifications",
      "closeNotifications": "Close notifications",
      "emptyState": "You're all caught up. New activity from your coach and community shows up here.",
      "justNow": "just now",
      "minutesAgo": "{{count}}m ago",
      "hoursAgo": "{{count}}h ago",
      "daysAgo": "{{count}}d ago"
    },
    "workoutDayPicker": {
      "title": "Add to Workout",
      "maxout": "Maxout",
      "loadFailed": "Failed to load workout days",
      "addFailed": "Failed to add challenge to workout",
      "noDays": "No upcoming workout days found",
      "added": "Added!",
      "addChallenge": "Add Challenge to Workout"
    },
    "pendingPlanAcceptBanner": {
      "sentYouPlan": "{{name}} sent you a workout plan",
      "weeksCount": "{{count}} weeks",
      "trainingDaysPerWeek": "{{count}} training days/week",
      "startsOn": "Starts {{date}}",
      "reviewAndAccept": "Review & accept",
      "decline": "Decline",
      "declinePlan": "Decline plan",
      "declineBody": "\"{{plan}}\" from {{coach}} will be deactivated. Tell them why (optional).",
      "reasonPlaceholder": "Reason (optional)"
    },
    "devPreviewPage": {
      "backToArena": "Back to Arena",
      "title": "Animation Preview",
      "subtitle": "Compare both animation styles. Tap a card to play.",
      "currentAnimation": "Current Animation",
      "newAnimation": "New Animation",
      "duelBadge": "DUEL",
      "play": "Play",
      "devOnly": "DEV ONLY \u2014 remove before shipping",
      "victory": "Victory",
      "defeat": "Defeat",
      "draw": "Draw",
      "winDescription": "You: 140kg vs Opponent: 125kg",
      "lossDescription": "You: 140kg vs Opponent: 155kg",
      "drawDescription": "You: 140kg vs Opponent: 140kg",
      "battleAnimation": "Barbell Battle Animation",
      "battleBadge": "LIVE"
    },
    "arenaStats": {
      "wins": "Wins",
      "losses": "Losses",
      "winRate": "Win Rate",
      "streak": "Streak",
      "bestStreak": "Best Streak: {{count}} wins",
      "bestStreakSub": "Your longest winning streak",
      "noBattles": "No battles yet",
      "noBattlesSub": "Challenge a friend to start building your record!",
      "headToHead": "Head-to-Head",
      "winsShort": "{{count}}W",
      "lossesShort": "{{count}}L",
      "drawsShort": "{{count}}D"
    },
    "completedBattleCarousel": {
      "victory": "Victory",
      "defeat": "Defeat",
      "draw": "Draw",
      "you": "You",
      "vs": "VS",
      "vsOpponent": "vs {{name}}"
    },
    "coachHubV2": {
      "tabMessages": "Messages",
      "tabVideo": "Video Review",
      "tabNotes": "Technique",
      "tabFocus": "Focus",
      "tabCommunity": "Community",
      "subtitle": "All things coach",
      "title": "Coach Hub",
      "loading": "Loading your Coach Hub\u2026",
      "signInPrompt": "Sign in to access your coach hub.",
      "communityEmpty": "Your template's community feed will appear here."
    },
    "secondarySportsStrip": {
      "weightlifting": "Weightlifting",
      "powerlifting": "Powerlifting",
      "hypertrophy": "Hypertrophy",
      "crossfit": "CrossFit",
      "hyrox": "Hyrox",
      "running": "Running",
      "triathlon": "Triathlon",
      "alsoTraining": "Also training"
    },
    "competitionHelperV2": {
      "inDays": "in {{count}}d",
      "tomorrow": "tomorrow",
      "today": "today",
      "daysAgo": "{{count}}d ago",
      "emptyWeightlifting": "Add an upcoming competition in History to build a saved game plan \u2014 warmup sections, sets with notes, openers and branch strategies. The quick planner below works without one.",
      "emptyOtherSport": "Saved game plans currently support weightlifting meets only \u2014 use the quick planner below for your warmup timing.",
      "gamePlan": "Game plan",
      "createPlan": "Create plan",
      "meetDay": "Meet day",
      "createPlanHint": "Create a game plan to unlock the meet-day countdown.",
      "quickPlannerHeading": "Quick planner \u2014 not saved"
    },
    "challengeCard": {
      "expired": "Expired",
      "timeDaysHours": "{{days}}d {{hours}}h",
      "timeHoursMinutes": "{{hours}}h {{minutes}}m",
      "timeMinutes": "{{minutes}}m",
      "victory": "Victory",
      "defeat": "Defeat",
      "draw": "Draw",
      "declined": "Declined",
      "vs": "VS",
      "repMax": "{{reps}}RM",
      "complex": "Complex",
      "absolute": "Absolute"
    },
    "techniqueNotesView": {
      "all": "All",
      "loading": "Loading your technique notes\u2026",
      "emptyState": "No notes yet for this filter. Add a note from any exercise card in your workout \u2014 it'll show up here alongside any feedback your coach leaves.",
      "coach": "Coach",
      "you": "You",
      "videoReviewsTitle": "Video reviews",
      "videoReviewFallback": "Video review",
      "videoReviewReady": "Feedback ready",
      "videoReviewPending": "In review"
    },
    "athleteIconNav": {
      "home": "Home",
      "workout": "Workout",
      "health": "Health",
      "training": "Training",
      "arena": "Arena",
      "programs": "Programs",
      "intel": "Intel"
    },
    "inviteFriendModal": {
      "sendFailed": "Failed to send invite",
      "sentTitle": "Invite Sent!",
      "sentBody": "We sent an invite to <b>{{email}}</b>. They'll auto-become your friend when they sign up!",
      "title": "Invite a Friend",
      "description": "Know someone who'd love the Arena? Send them an invite! They'll auto-become your friend when they sign up.",
      "sendInvite": "Send Invite"
    },
    "chariotSprite": {
      "versus": "{{left}} vs {{right}}"
    },
    "coliseumRing": {
      "battlesActive_one": "{{count}} battle active",
      "battlesActive_other": "{{count}} battles active"
    },
    "friendSearch": {
      "searchPlaceholder": "Search by name or @handle...",
      "friends": "Friends",
      "sent": "Sent",
      "noResults": "No athletes found matching \"{{query}}\""
    },
    "athleteHomeV2": {
      "sportHomeBeingBuilt": "The redesigned home for your sport is still being built."
    },
    "miniBattleChip": {
      "scoringSinclair": "Sinclair",
      "scoringAbsolute": "Absolute"
    },
    "groupConvoySprite": {
      "athleteCount_one": "{{count}} athlete",
      "athleteCount_other": "{{count}} athletes"
    },
    "clientProgramPage": {
      "loadingWeekData": "Loading week data..."
    },
    "planSwitcherModal": {
      "title": "Switch Active Program",
      "coachAssignedTitle": "Coach-Assigned Program",
      "coachAssignedBody": "You're currently following a personalized program assigned by {{coachName}}.",
      "yourCoach": "your coach",
      "currentActiveProgram": "Current Active Program:",
      "personalCoaching": "Personal Coaching",
      "switchTo": "Switch To:",
      "pauseNote": "Your current program will be paused, and you can switch back anytime. All your training data and progress are preserved.",
      "switching": "Switching...",
      "switchProgram": "Switch Program"
    },
    "launchBugButton": {
      "live": "We're live!",
      "daysToLaunch": "{{days}}d {{hours}}h to launch",
      "hoursToLaunch": "{{hours}}h {{minutes}}m to launch",
      "minutesToLaunch": "{{minutes}}m to launch",
      "ariaLabel": "Help us debug \u2014 report a bug",
      "title": "Help us debug",
      "rewardTail": "earn 1 free month",
      "coachTitle": "Help Us Debug",
      "contributorsReward": "contributors get a free month"
    },
    "coachExtras": {
      "newReview": "New review",
      "mobilityFocus": "Mobility \u00b7 today's focus",
      "newBadge": "NEW",
      "online": "online"
    },
    "blocksBottomNav": {
      "home": "Home",
      "workout": "Workout",
      "mobility": "Mobility",
      "nutrition": "Nutrition",
      "analytics": "Analytics",
      "calendar": "Calendar",
      "calendarSub": "Schedule, training cycles, competitions",
      "bodyProgress": "Body & Progress",
      "bodyProgressSub": "Bodyweight, measurements, trends",
      "coach": "Coach",
      "coachSub": "Chat, video review, meeting notes",
      "arena": "Arena",
      "arenaSub": "Challenges and community feed",
      "analyticsSub": "PRs, Sinclair, rep maxes and trends",
      "videoReviews": "Video Reviews",
      "videoReviewsSub": "One-time technique reviews you purchased",
      "marketplace": "Marketplace",
      "marketplaceSub": "Browse coaching programs",
      "profile": "Profile",
      "profileSub": "Account and settings",
      "more": "More",
      "moreAria": "More destinations",
      "allDestinations": "All destinations"
    },
    "powerContestBanner": {
      "title": "Power Contest",
      "newBadge": "New",
      "subtitle": "Platform-wide challenge \u2014 upload your scores"
    },
    "friendsList": {
      "noFriendsYet": "No friends yet",
      "searchHint": "Search by @handle to add friends and start battling!",
      "challenge": "Challenge",
      "removeFriend": "Remove friend"
    },
    "planSwitcherDropdown": {
      "allPrograms": "All Programs",
      "activePrograms": "{{count}} active programs",
      "weekOf": "Week {{week}}/{{total}}"
    },
    "shareCardExporter": {
      "storyFormat": "Story (9:16)",
      "postFormat": "Post (1:1)"
    },
    "todaySessionCard": {
      "title": "Today's session",
      "viewAll": "View all",
      "startSession": "Start session",
      "restDay": "Rest day",
      "noSession": "No session scheduled",
      "restHint": "Enjoy the recovery \u2014 or browse the marketplace"
    },
    "friendRequestCard": {
      "accepted": "Accepted",
      "declined": "Declined"
    },
    "mobilityPainPage": {
      "title": "Mobility & Pain",
      "mobilityTab": "Mobility",
      "painTab": "Pain & Aches"
    },
    "groceryListRender": {
      "emptyTitle": "No meals in this range yet.",
      "emptyHint": "Prescribe meals on the weekly plan to populate the grocery list.",
      "summary": "<b>{{items}}</b> ingredients across <b>{{categories}}</b> categories \u00b7 <b>{{meals}}</b> meals \u00b7 <b>{{days}}</b> days",
      "extras": "Extras",
      "extrasNote": "from starter recipes (quantities approximate)"
    },
    "homeHeader": {
      "calendar": "Calendar",
      "greeting": "Welcome back, {{name}}",
      "defaultName": "athlete",
      "trainingIntelligence": "Training Intelligence",
      "profileAndSettings": "Profile and settings",
      "profile": "Profile",
      "notifications": "Notifications"
    },
    "dailyCheckIn": {
      "newPill": "NEW",
      "dailyTip": "Daily tip"
    },
    "companion": {
      "fromCoach": "From your coach",
      "encourage1": "Let's get after today's session \u2014 every rep counts!",
      "encourage2": "Show up, do the work, trust the plan. You've got this!",
      "encourage3": "Consistency beats intensity. Let's make today count!",
      "settingsTitle": "Coach companion",
      "settingsSub": "Your coach's avatar pops up with notes and encouragement. Choose how much you want to see.",
      "answerCta": "Answer",
      "announceCta": "Show me",
      "announceLater": "Later",
      "pref_full": "Full",
      "pref_important": "Important only",
      "pref_off": "Off"
    },
    "languageStep": {
      "title": "Pick your language",
      "subtitle": "We'll use this for the app interface and emails. You can change it anytime in Settings."
    },
    "maxoutChallengeBadge": {
      "challenge": "Challenge"
    },
    "battleReveal": {
      "tapToSkip": "Tap to skip",
      "replay": "Replay",
      "downloadVideo": "Battle video",
      "preparing": "Preparing\u2026",
      "saveImage": "End frame",
      "rematch": "Rematch",
      "runItBack": "Run it back",
      "confirmRematch": "Confirm rematch?",
      "rematchSent": "Rematch sent to @{{handle}}!",
      "rematchSentShort": "Rematch sent!",
      "rematchFailed": "Could not send the rematch",
      "posted": "Battle posted to the Arena \u2694\ufe0f",
      "betsBanner": "{{bets}} bets \u00b7 {{amount}} XP pot",
      "backedBy": "Backed by {{names}}",
      "betsRefunded": "All bets refunded",
      "videoUnavailable": "Video not ready \u2014 try again",
      "defeats": "defeats",
      "draw": "Draw"
    },
    "workoutDayStates": {
      "rest": {
        "title": "Rest Day",
        "description": "Your program marks this date as a rest day. Take time to recover."
      },
      "mandatory_empty": {
        "title": "Training not added yet",
        "description": "This is a scheduled training day, but no exercises have been added. Check back later or contact your coach."
      },
      "optional_empty": {
        "title": "No optional workout added yet",
        "description": "This is an optional training day, but no exercises have been added."
      },
      "unplanned": {
        "title": "No workout scheduled",
        "description": "No workout has been scheduled for this date. If you were expecting one, contact your coach."
      },
      "unknown": {
        "title": "Workout information unavailable",
        "description": "We could not confirm the schedule or access for this date. Refresh to try again."
      },
      "payment_failed": {
        "title": "Payment needs attention",
        "description": "Your subscription payment did not go through. You still have access for this date. Check your subscription or contact your coach."
      },
      "payment_restricted": {
        "title": "Workout access restricted",
        "description": "Your subscription payment did not go through, and your current access does not cover this week. Check your subscription or contact your coach."
      },
      "paused": {
        "title": "Subscription paused",
        "description": "Your subscription is paused and does not cover this week. Contact your coach to review your access."
      },
      "subscription_ended": {
        "title": "Subscription ended",
        "description": "Your subscription no longer covers this week. Previously covered weeks may still be available."
      },
      "access_unavailable": {
        "title": "Workout access unavailable",
        "description": "Your current subscription does not include this week. Check your subscription or contact your coach."
      },
      "refresh": "Refresh",
      "manageSubscription": "View subscription"
    }
  },
  "sessionTypes": {
    "all": "All",
    "none": "None",
    "selectAll": "Select all",
    "clear": "Clear",
    "dropdownNoTypes": "No session types",
    "dropdownAllTypes": "All session types",
    "dropdownNoneShown": "No types shown",
    "dropdownCountShown": "{{selected}} of {{total}} shown",
    "warmup": "Warmup",
    "drill": "Drill",
    "weightlifting": "Weightlifting",
    "weightlifting_variation": "WL Variation",
    "strength": "Strength",
    "accessories": "Accessories",
    "cooldown": "Cooldown",
    "pain_aches": "Pain & Aches",
    "running": "Running",
    "cycling": "Cycling",
    "ergo": "Ergo",
    "mobility": "Mobility",
    "hyrox_circuit": "Hyrox",
    "crossfit": "CrossFit",
    "text_block": "Text"
  },
  "common": {
    "close": "Close"
  },
  "workoutSync": {
    "title": "Workout update confirmation",
    "date": "Workout date",
    "unavailable": "Confirmation unavailable",
    "checking": "Checking\u2026",
    "waiting": "Saved \u00b7 waiting for device confirmation",
    "saved": "Saved on server",
    "browser": "Browser",
    "displayed": "Latest saved version displayed",
    "downloaded": "Latest saved version downloaded",
    "lastDisplay": "Last display confirmation:",
    "scope": "Confirmation applies only to this date. Older app versions may not report confirmation."
  },
  "media": {
    "addEmojiGif": "Emoji / GIF",
    "picker": "Emoji and GIF picker",
    "emojis": "Emoji",
    "gifs": "GIFs",
    "closePicker": "Close picker",
    "searchEmojis": "Search emoji",
    "searchGifs": "Search GIFs",
    "trending": "Trending GIFs",
    "selectGif": "Select {{title}}",
    "loading": "Loading…",
    "notConfigured": "GIF search is not available yet.",
    "unavailable": "GIFs could not load. Please try again.",
    "rateLimited": "GIF search is busy. Please try again later.",
    "retry": "Try again",
    "noResults": "No GIFs found. Try another search.",
    "loadMore": "Load more",
    "removeGif": "Remove GIF",
    "playGif": "Play GIF",
    "pauseGif": "Pause GIF",
    "viewOnGiphy": "View on GIPHY"
  }
}
