{
  "common": {
    "appName": "temetro",
    "email": "Email",
    "password": "Password",
    "signIn": "Sign in",
    "signUp": "Sign up",
    "backToSignIn": "Back to sign in",
    "addedByAi": "Added by AI",
    "pagination": {
      "label": "Pages",
      "previous": "Previous",
      "next": "Next",
      "page": "Page {{page}}",
      "summary": "Showing {{from}}–{{to}} of {{total}}"
    }
  },
  "auth": {
    "login": {
      "title": "Welcome back",
      "subtitle": "Sign in to your clinician account",
      "tabEmail": "Email",
      "tabUsername": "Username",
      "emailLabel": "Email",
      "emailPlaceholder": "you@clinic.org",
      "usernameLabel": "Username",
      "usernamePlaceholder": "jdoe",
      "passwordLabel": "Password",
      "forgotPassword": "Forgot your password?",
      "submit": "Sign in",
      "submitting": "Signing in…",
      "noAccount": "Don't have an account?",
      "signUpLink": "Sign up",
      "error": "Could not sign in. Check your email and password and try again.",
      "errorTitle": "Sign in failed",
      "welcomeBack": "Welcome back"
    },
    "signup": {
      "title": "Create your account",
      "subtitle": "Start using temetro in your clinic",
      "nameLabel": "Full name",
      "namePlaceholder": "Dr. Jane Okafor",
      "emailLabel": "Email",
      "emailPlaceholder": "you@clinic.org",
      "passwordLabel": "Password",
      "confirmPasswordLabel": "Confirm password",
      "passwordHint": "Must be at least {{count}} characters long.",
      "passwordTooShort": "Password must be at least {{count}} characters.",
      "passwordMismatch": "Passwords do not match.",
      "submit": "Create account",
      "submitting": "Creating account…",
      "haveAccount": "Already have an account?",
      "signInLink": "Sign in",
      "error": "Could not create your account.",
      "errorTitle": "Sign up failed",
      "created": "Account created",
      "createdHint": "Set up your clinic to get started."
    },
    "verifyEmail": {
      "title": "Check your inbox",
      "subtitle": "We sent a verification link to {{email}}. Open it to activate your account.",
      "subtitleNoEmail": "Open the verification link we emailed you to activate your account.",
      "continue": "I've verified — continue",
      "resend": "Resend email",
      "resending": "Sending…",
      "resent": "Verification email sent. Check your inbox.",
      "resendError": "Could not resend the verification email."
    },
    "forgotPassword": {
      "title": "Reset your password",
      "subtitle": "We'll send a link to reset your password",
      "modeEmail": "Email",
      "modeUsername": "Username",
      "emailLabel": "Email",
      "emailPlaceholder": "you@clinic.org",
      "usernameLabel": "Username",
      "usernamePlaceholder": "your username",
      "submit": "Send reset link",
      "submitting": "Sending…",
      "sent": "If an account exists for {{email}}, a reset link is on its way. Check your inbox.",
      "sentUsername": "If that username exists, a reset link is on its way. If you don't have an inbox, your clinic admin has been notified to set a new password for you.",
      "error": "Could not send the reset email.",
      "failedToastTitle": "Couldn't send reset link",
      "sentToastTitle": "Reset link sent",
      "sentToastBody": "Check your inbox for the link."
    },
    "resetPassword": {
      "title": "Set a new password",
      "subtitle": "Choose a new password for your account",
      "passwordLabel": "New password",
      "confirmLabel": "Confirm new password",
      "passwordHint": "At least {{count}} characters.",
      "submit": "Reset password",
      "submitting": "Saving…",
      "done": "Your password has been reset. Redirecting you to sign in…",
      "invalidToken": "This reset link is invalid or has expired.",
      "tooShort": "Password must be at least {{count}} characters.",
      "mismatch": "Passwords do not match.",
      "error": "Could not reset your password.",
      "failedToastTitle": "Couldn't reset password",
      "successToastTitle": "Password updated",
      "successToastBody": "Redirecting you to sign in…"
    },
    "acceptInvite": {
      "notFoundTitle": "Invitation not found",
      "notFoundBody": "This invitation link is missing or invalid.",
      "invitedTitle": "You've been invited",
      "invitedSubtitle": "Sign in with the email this invitation was sent to, then return to this link to accept.",
      "signIn": "Sign in",
      "createAccount": "Create an account",
      "reopenPrefix": "After signing in, reopen",
      "reopenLink": "this invitation link",
      "acceptTitle": "Accept your invitation",
      "acceptSubtitle": "Join the clinic you were invited to on temetro.",
      "accept": "Accept invitation",
      "accepting": "Joining…",
      "error": "This invitation is invalid or has expired."
    },
    "onboarding": {
      "title": "Set up your clinic",
      "subtitle": "Create your clinic to start organizing patient records"
    }
  },
  "nav": {
    "newChat": "Ask temetro",
    "patients": "Patients",
    "appointments": "Appointments",
    "invoices": "Invoices",
    "prescriptions": "Prescriptions",
    "analysis": "Analysis",
    "pharmacy": "Pharmacy",
    "inventory": "Inventory",
    "lab": "Lab",
    "notes": "Notes",
    "messages": "Messages",
    "inbox": "Inbox",
    "meetings": "Meetings",
    "tasks": "Tasks",
    "activity": "Activity",
    "settings": "Settings",
    "openSidebar": "Open menu",
    "notifications": "Notifications",
    "notificationsEmpty": "You're all caught up.",
    "quickNav": "Quick nav",
    "commandGroup": "Go to",
    "commandPlaceholder": "Search pages…",
    "commandEmpty": "No results.",
    "commandNavigate": "Navigate",
    "commandOpen": "Open",
    "commandClose": "Close"
  },
  "userMenu": {
    "defaultName": "Clinician",
    "selectClinic": "Select clinic",
    "settings": "Settings",
    "docs": "Docs & GitHub",
    "theme": "Theme",
    "dark": "Dark",
    "light": "Light",
    "search": "Search",
    "noClinic": "No clinic selected",
    "clinicCount_one": "{{count}} clinic",
    "clinicCount_other": "{{count}} clinics",
    "switchClinic": "Switch clinic",
    "createClinic": "Create clinic",
    "logout": "Log out",
    "createDialogTitle": "Create clinic",
    "createDialogDescription": "Add a new clinic and switch to it.",
    "signOutFailed": "Sign out failed",
    "tryAgain": "Please try again.",
    "signedOut": "Signed out"
  },
  "clinic": {
    "create": "Create clinic",
    "creating": "Creating clinic…",
    "nameLabel": "Clinic name",
    "namePlaceholder": "North Side Family Practice",
    "slugLabel": "Clinic URL slug",
    "slugPlaceholder": "north-side-family-practice",
    "slugHint": "Used in links and invitations. Lowercase letters, numbers and dashes.",
    "createError": "Could not create the clinic.",
    "createFailedTitle": "Couldn't create clinic",
    "createdTitle": "Clinic created",
    "createdBody": "{{name}} is ready."
  },
  "patients": {
    "title": "Patients",
    "searchPlaceholder": "Search name or MRN",
    "add": "Add patient",
    "newPatient": "New patient",
    "importFromApp": "Import from a patient app",
    "tempBadge": "Temporary",
    "importApp": {
      "title": "Import from a patient app",
      "description": "Enter the patient's wallet number. They'll get a request on their phone to approve sharing their record with this clinic.",
      "tabNumber": "By number",
      "tabQr": "Show QR",
      "qrHint": "Generate a QR code, then have the patient scan it in their wallet app to share their record.",
      "qrCaption": "Scan this in the patient app",
      "generateQr": "Show QR code",
      "walletLabel": "Patient wallet number",
      "walletPlaceholder": "tmw_…",
      "tempLabel": "Share temporarily",
      "tempHint": "The record is automatically deleted from this clinic when the share window ends.",
      "durationLabel": "Share for",
      "hours": "{{count}} hour",
      "hours_other": "{{count}} hours",
      "days": "{{count}} day",
      "days_other": "{{count}} days",
      "request": "Send request",
      "requesting": "Sending…",
      "waitingTitle": "Waiting for the patient",
      "waitingBody": "We've sent a request to the wallet. Approve it on the patient's device to continue.",
      "approvedTitle": "Patient approved",
      "approvedBody": "Review the shared record, then save it to this clinic.",
      "review": "Review record",
      "deniedTitle": "Request declined",
      "deniedBody": "The patient declined to share their record.",
      "expiredTitle": "Request expired",
      "expiredBody": "The request timed out before the patient responded.",
      "invalidWallet": "That doesn't look like a valid wallet number.",
      "errorTitle": "Couldn't reach the wallet",
      "error": "Please check the wallet number and try again.",
      "savedTitle": "Patient imported",
      "savedBody": "{{name}} was added to this clinic.",
      "cancel": "Cancel",
      "close": "Close"
    },
    "loading": "Loading patients…",
    "empty": "No patients found.",
    "loadError": "Failed to load patients.",
    "columns": {
      "name": "Name",
      "mrn": "MRN",
      "ageSex": "Age · Sex",
      "status": "Status",
      "lastSeen": "Last seen",
      "allergies": "Allergies"
    },
    "status": {
      "active": "Active",
      "inpatient": "Inpatient",
      "discharged": "Discharged"
    },
    "detail": {
      "notFound": "Patient not found",
      "loading": "Loading patient…",
      "noPatientForFile": "No patient found for file #{{number}}."
    },
    "transfer": {
      "action": "Transfer",
      "title": "Transfer patient",
      "description": "Reassign {{name}} to another clinician. They become this patient's primary provider.",
      "providerLabel": "New primary provider",
      "choose": "Choose a provider…",
      "cancel": "Cancel",
      "confirm": "Transfer patient",
      "transferring": "Transferring…",
      "successTitle": "Patient transferred",
      "successBody": "{{name}} is now with {{provider}}.",
      "errorTitle": "Couldn't transfer patient",
      "error": "Please try again."
    },
    "delete": {
      "action": "Delete patient",
      "title": "Delete patient?",
      "body": "Permanently delete {{name}}'s chart and all of its records. This cannot be undone.",
      "confirm": "Delete patient",
      "cancel": "Cancel",
      "doneTitle": "Patient deleted",
      "failedTitle": "Couldn't delete patient",
      "failedBody": "Please try again."
    }
  },
  "appointments": {
    "title": "Appointments & Schedule",
    "subtitle": "Today's clinic schedule and what's coming up.",
    "searchPlaceholder": "Search patient, type, provider",
    "calendar": "Calendar",
    "add": "Add",
    "noMatches": "No matching appointments.",
    "today": "Today",
    "nothingToday": "Nothing scheduled today.",
    "addFailedTitle": "Couldn't add appointment",
    "addFailedBody": "Please try again.",
    "kpi": {
      "today": "Today",
      "thisWeek": "This week",
      "checkedIn": "Checked in",
      "completed": "Completed"
    },
    "status": {
      "confirmed": "Confirmed",
      "checked-in": "Checked in",
      "completed": "Completed",
      "cancelled": "Cancelled"
    },
    "dialog": {
      "title": "New appointment",
      "description": "Search for a patient by name or file number, then set the slot.",
      "patient": "Patient",
      "fileNumber": "File #{{number}}",
      "change": "Change",
      "searchPlaceholder": "Search name or file number",
      "noPatients": "No patients found.",
      "noProviders": "No doctors found.",
      "date": "Date",
      "time": "Time",
      "type": "Type",
      "provider": "Provider",
      "providerPlaceholder": "e.g. Dr. Okafor",
      "cancel": "Cancel",
      "submit": "Add appointment",
      "pickPatientTitle": "Pick a patient",
      "pickPatientBody": "Search and select a patient first.",
      "addedTitle": "Appointment added"
    },
    "sheet": {
      "title": "Appointment",
      "editHint": "Click any appointment to edit — this is enabled.",
      "date": "Date",
      "time": "Time",
      "type": "Type",
      "provider": "Provider",
      "status": "Status",
      "save": "Save changes",
      "saving": "Saving…",
      "delete": "Delete",
      "savedTitle": "Appointment updated",
      "savedBody": "Your changes were saved.",
      "saveFailedTitle": "Couldn't save",
      "saveFailedBody": "Please try again.",
      "deletedTitle": "Appointment deleted",
      "deleteFailedTitle": "Couldn't delete",
      "deleteFailedBody": "Please try again."
    },
    "calendarDialog": {
      "today": "Today",
      "appointmentCount_one": "{{count}} appointment",
      "appointmentCount_other": "{{count}} appointments",
      "none": "No appointments on this day."
    }
  },
  "invoices": {
    "title": "Invoices",
    "subtitle": "Patient billing — create, split, and export invoices.",
    "searchPlaceholder": "Search patient, number, status",
    "new": "New invoice",
    "empty": "No invoices yet.",
    "noMatches": "No invoices match your search.",
    "loadError": "Couldn't load invoices.",
    "recent": "Invoices",
    "recentDescription": "Most recent first",
    "addFailedTitle": "Couldn't save invoice",
    "addFailedBody": "Please try again.",
    "kpi": {
      "outstanding": "Outstanding",
      "paid": "Paid",
      "drafts": "Drafts"
    },
    "status": {
      "draft": "Draft",
      "sent": "Sent",
      "paid": "Paid",
      "void": "Void"
    },
    "dialog": {
      "createTitle": "New invoice",
      "editTitle": "Edit invoice",
      "description": "Pick a patient and add line items.",
      "patient": "Patient",
      "searchPlaceholder": "Search name or file number",
      "noPatients": "No patients found.",
      "fileNumber": "File #{{number}}",
      "change": "Change",
      "issued": "Issued",
      "due": "Due date",
      "status": "Status",
      "notes": "Notes",
      "notesPlaceholder": "Optional notes…",
      "lineItems": "Line items",
      "lineDescription": "Description",
      "lineDescriptionPlaceholder": "e.g. Consultation",
      "qty": "Qty",
      "unitPrice": "Unit price",
      "addLine": "Add line",
      "total": "Total",
      "cancel": "Cancel",
      "create": "Create invoice",
      "save": "Save changes",
      "saving": "Saving…",
      "pickPatientTitle": "Pick a patient",
      "pickPatientBody": "Search and select a patient first."
    },
    "sheet": {
      "fallbackTitle": "Invoice",
      "issued": "Issued",
      "due": "Due",
      "status": "Status",
      "total": "Total",
      "lineItems": "Line items",
      "installments": "Installments",
      "noInstallments": "Not split into installments.",
      "split": "Split into installments",
      "splitTitle": "Split invoice",
      "splitBody": "Divide the total into equal monthly installments.",
      "splitCount": "Installments",
      "splitConfirm": "Split",
      "download": "Download PDF",
      "edit": "Edit",
      "delete": "Delete",
      "deletedTitle": "Invoice deleted",
      "splitFailedTitle": "Couldn't split invoice",
      "splitFailedBody": "Please try again.",
      "deleteFailedTitle": "Couldn't delete invoice",
      "deleteFailedBody": "Please try again.",
      "paid": "Paid",
      "unpaid": "Unpaid",
      "markPaid": "Mark paid",
      "paidTitle": "Invoice marked paid",
      "payFailedTitle": "Couldn't record payment",
      "payFailedBody": "Please try again.",
      "payInstallment": "Pay",
      "installmentPaid": "Paid",
      "installmentPaidTitle": "Installment paid",
      "overdue": "Overdue",
      "timeframe": "{{count}} payments · due through {{date}}"
    }
  },
  "prescriptions": {
    "title": "Prescriptions",
    "subtitle": "Medications prescribed across the clinic.",
    "new": "New prescription",
    "recent": "Recent prescriptions",
    "recentDescription": "Most recent first",
    "searchPlaceholder": "Search patient, medication, prescriber",
    "noMatches": "No prescriptions match your search.",
    "emptyList": "No prescriptions yet.",
    "addFailedTitle": "Couldn't add prescription",
    "addFailedBody": "Please try again.",
    "kpi": {
      "active": "Active",
      "completed": "Completed",
      "expired": "Expired"
    },
    "status": {
      "active": "Active",
      "completed": "Completed",
      "expired": "Expired"
    },
    "detail": {
      "fallbackTitle": "Prescription",
      "fileNumber": "File #{{number}}",
      "medication": "Medication",
      "dose": "Dose",
      "frequency": "Frequency",
      "duration": "Duration",
      "prescriber": "Prescriber",
      "date": "Date",
      "status": "Status",
      "notes": "Notes",
      "courseDates": "Course",
      "delete": "Delete prescription"
    },
    "delete": {
      "title": "Delete prescription?",
      "body": "Permanently delete the {{medication}} prescription for {{name}}. This cannot be undone.",
      "confirm": "Delete",
      "cancel": "Cancel",
      "doneTitle": "Prescription deleted",
      "failedTitle": "Couldn't delete prescription",
      "failedBody": "Please try again."
    },
    "dialog": {
      "title": "New prescription",
      "description": "Search for a patient by name or file number, then set the medication.",
      "patient": "Patient",
      "fileNumber": "File #{{number}}",
      "change": "Change",
      "searchPlaceholder": "Search name or file number",
      "noPatients": "No patients found.",
      "medication": "Medication",
      "medicationPlaceholder": "e.g. Amoxicillin",
      "dose": "Dose",
      "dosePlaceholder": "e.g. 500 mg",
      "frequency": "Frequency",
      "duration": "Duration",
      "durationOtherPlaceholder": "e.g. 21 days",
      "notes": "Notes",
      "notesPlaceholder": "Instructions, e.g. take with food in the morning",
      "interactionTitle": "Possible interaction",
      "cancel": "Cancel",
      "submit": "Add prescription",
      "pickPatientTitle": "Pick a patient",
      "pickPatientBody": "Search and select a patient first.",
      "needMedTitle": "Add a medication",
      "needMedBody": "Enter the medication name.",
      "needDurationTitle": "Add a duration",
      "needDurationBody": "Enter the custom duration.",
      "addedTitle": "Prescription added",
      "badDatesTitle": "Check the dates",
      "badDatesBody": "The end date can't be before the start date.",
      "outOfStock": "Out of stock",
      "inStock": "{{count}} in stock",
      "courseDates": "Course dates",
      "removeDates": "Remove",
      "startDate": "Start date",
      "endDate": "End date",
      "addDates": "Add start/end dates"
    }
  },
  "pharmacy": {
    "title": "Pharmacy",
    "subtitle": "Dispensing queue for the clinic's prescriptions.",
    "searchPlaceholder": "Search prescriptions",
    "kpi": {
      "active": "Active prescriptions",
      "expiring": "Expiring soon",
      "patients": "Patients on medication"
    },
    "queue": {
      "title": "Dispensing queue",
      "description": "Active prescriptions, oldest first. Mark a course completed once dispensed.",
      "empty": "No active prescriptions.",
      "noMatches": "No prescriptions match your search."
    },
    "expiringBadge": "Expiring",
    "markCompleted": "Mark completed",
    "completedTitle": "Prescription completed",
    "completedBody": "{{medication}} for {{name}} marked as completed.",
    "completeFailedTitle": "Couldn't update prescription",
    "completeFailedBody": "Please try again.",
    "dispense": "Dispense",
    "dispensedTitle": "Dispensed",
    "dispensedBody": "{{medication}} dispensed to {{name}}.",
    "dispensed": {
      "title": "Recently dispensed",
      "description": "Medications handed to patients at the pharmacy.",
      "empty": "Nothing dispensed yet.",
      "delete": "Delete record",
      "deleteTitle": "Delete dispense record?",
      "deleteBody": "Remove the {{medication}} dispense record for {{name}}. This only corrects the ledger.",
      "deleteConfirm": "Delete",
      "deleteCancel": "Cancel",
      "deletedTitle": "Dispense record deleted",
      "deleteFailedTitle": "Couldn't delete record",
      "deleteFailedBody": "Please try again."
    }
  },
  "inventory": {
    "title": "Inventory",
    "subtitle": "Search the pharmacy's medication stock and check availability.",
    "searchPlaceholder": "Search medications",
    "kpi": {
      "total": "Medications in stock",
      "low": "Low stock",
      "out": "Out of stock"
    },
    "list": {
      "title": "Medications",
      "description": "Current stock levels across the pharmacy. Items at or below their reorder point are flagged.",
      "empty": "No medications in inventory yet.",
      "noMatches": "No medications match your search."
    },
    "stock": "{{count}} {{unit}}",
    "reorderAt": "Reorder at {{count}}",
    "location": "Shelf {{location}}",
    "availability": {
      "in-stock": "In stock",
      "low": "Low stock",
      "out": "Out of stock"
    },
    "addItem": "Add item",
    "dialog": {
      "title": "Add inventory item",
      "description": "Add a medication to the pharmacy's stock. Only the name is required.",
      "name": "Medication",
      "namePlaceholder": "e.g. Amoxicillin",
      "form": "Form",
      "formPlaceholder": "e.g. Tablet",
      "strength": "Strength",
      "strengthPlaceholder": "e.g. 500mg",
      "stock": "In stock",
      "unit": "Unit",
      "unitPlaceholder": "e.g. tablets",
      "reorder": "Reorder at",
      "location": "Location",
      "locationPlaceholder": "e.g. A3",
      "expires": "Expires",
      "cancel": "Cancel",
      "submit": "Add item",
      "nameRequiredTitle": "Medication name required",
      "nameRequiredBody": "Enter a medication name before adding the item.",
      "addedTitle": "Item added",
      "failedTitle": "Could not add item",
      "failedBody": "Something went wrong. Please try again."
    },
    "detail": {
      "description": "Stock item",
      "notes": "Notes",
      "close": "Close",
      "delete": "Delete item"
    },
    "delete": {
      "title": "Delete inventory item?",
      "body": "Permanently delete {{name}} from inventory. This cannot be undone.",
      "confirm": "Delete",
      "cancel": "Cancel",
      "doneTitle": "Item deleted",
      "failedTitle": "Couldn't delete item",
      "failedBody": "Please try again."
    }
  },
  "lab": {
    "title": "Lab",
    "subtitle": "The lab's work queue and analysis results.",
    "queue": {
      "title": "Work queue",
      "description": "Tasks assigned to the Lab department.",
      "empty": "No lab tasks right now.",
      "noNotes": "No details provided.",
      "meta": {
        "status": "Status",
        "patient": "Patient",
        "assignee": "Assignee",
        "createdBy": "Created by"
      }
    },
    "addResult": {
      "button": "Add result",
      "title": "Add analysis result",
      "description": "Record an analysis performed in the lab on a patient's record.",
      "patient": "Patient",
      "patientPlaceholder": "Search by name or file number",
      "noPatients": "No patients match your search.",
      "changePatient": "Change",
      "test": "Test",
      "testPlaceholder": "e.g. Hemoglobin",
      "value": "Value",
      "valuePlaceholder": "e.g. 14.2 g/dL",
      "valueUnitPlaceholder": "e.g. value in {{unit}}",
      "flag": "Flag",
      "takenAt": "Date",
      "advanced": "Advanced",
      "advancedHint": "Record a custom analysis with a reference range.",
      "refRange": "Reference range",
      "refRangePlaceholder": "e.g. 13.0–17.0 g/dL",
      "files": "Analysis files",
      "cancel": "Cancel",
      "submit": "Add result",
      "needPatientTitle": "Pick a patient",
      "needPatientBody": "Search and select a patient first.",
      "needFieldsTitle": "Missing details",
      "needFieldsBody": "Enter the test name and its value.",
      "addedTitle": "Result added",
      "addedBody": "{{test}} added to {{name}}'s record.",
      "failedTitle": "Couldn't add the result",
      "failedBody": "Please try again."
    },
    "recent": {
      "title": "Recent results",
      "description": "Analyses recorded on patient records, newest first.",
      "empty": "No results recorded yet.",
      "delete": "Delete result",
      "deleteTitle": "Delete lab result?",
      "deleteBody": "Remove the {{test}} result from {{name}}'s record. This cannot be undone.",
      "deleteConfirm": "Delete",
      "deleteCancel": "Cancel",
      "deletedTitle": "Result deleted",
      "deletedBody": "Removed {{test}} from {{name}}'s record.",
      "deleteFailedTitle": "Couldn't delete result",
      "deleteFailedBody": "Please try again."
    },
    "toast": {
      "updateFailedTitle": "Couldn't update the task",
      "updateFailedBody": "Please try again."
    }
  },
  "tasks": {
    "title": "Tasks",
    "subtitle": "Care-team to-dos. Click a task to see its details.",
    "new": "New task",
    "empty": "No tasks here.",
    "markDone": "Mark as done",
    "markNotDone": "Mark as not done",
    "status": {
      "todo": "To Do",
      "in_progress": "In Progress",
      "done": "Done"
    },
    "board": {
      "addTask": "Add task",
      "moveTo": "Move to",
      "emptyColumn": "No tasks.",
      "newTask": "New task"
    },
    "filters": {
      "all": "All",
      "open": "Open",
      "done": "Done"
    },
    "priority": {
      "high": "High",
      "medium": "Medium",
      "low": "Low"
    },
    "dialog": {
      "title": "New task",
      "description": "Assign a follow-up to the care team.",
      "subject": "Subject",
      "subjectPlaceholder": "e.g. Review lab results",
      "details": "Details — what needs to be done",
      "detailsPlaceholder": "Describe what needs to happen, any context, links…",
      "assignee": "Assignee",
      "assigneeSelf": "Myself",
      "assigneeOther": "Other",
      "department": "Department",
      "due": "Due",
      "duePlaceholder": "e.g. Today",
      "priorityLabel": "Priority",
      "statusLabel": "Status",
      "cancel": "Cancel",
      "add": "Add task",
      "assigneeDepartment": "Department",
      "assigneePerson": "Person",
      "person": "Team member",
      "personEmpty": "No clinicians available to assign."
    },
    "list": {
      "forDept": "For {{dept}}",
      "personal": "Personal",
      "byCreator": "by {{name}}",
      "forPerson": "For {{name}}"
    },
    "detail": {
      "fallbackTitle": "Task",
      "priorityBadge": "{{priority}} priority",
      "status": "Status",
      "completed": "Completed",
      "open": "Open",
      "assignedTo": "Assigned to",
      "createdBy": "Created by",
      "deptTeam": "{{dept}} team",
      "personal": "Personal task",
      "due": "Due",
      "patient": "Patient",
      "details": "Details",
      "reopen": "Reopen task",
      "complete": "Mark complete",
      "moveTo": "Move to",
      "delete": "Delete task"
    },
    "delete": {
      "title": "Delete task?",
      "body": "Permanently delete \"{{title}}\". This cannot be undone.",
      "confirm": "Delete",
      "cancel": "Cancel",
      "doneTitle": "Task deleted",
      "failedTitle": "Couldn't delete task",
      "failedBody": "Please try again."
    },
    "toast": {
      "needSubjectTitle": "Add a subject",
      "needSubjectBody": "Describe the task first.",
      "addedTitle": "Task added",
      "addFailedTitle": "Couldn't add task",
      "addFailedBody": "Please try again.",
      "updateFailedTitle": "Couldn't update task",
      "updateFailedBody": "Please try again.",
      "needPersonTitle": "Pick a team member",
      "needPersonBody": "Choose who this task is for."
    }
  },
  "meetings": {
    "rooms": "Rooms",
    "newRoom": "New room",
    "newRoomDescription": "Create a voice/video room your team can join.",
    "roomNameLabel": "Room name",
    "roomNamePlaceholder": "e.g. Morning huddle",
    "noRooms": "No rooms yet. Create one to start a call.",
    "create": "Create",
    "creating": "Creating…",
    "cancel": "Cancel",
    "createFailedTitle": "Couldn't create room",
    "createFailedBody": "Please try again.",
    "deleteRoom": "Delete room",
    "deleting": "Deleting…",
    "deleteRoomConfirmTitle": "Delete this room?",
    "deleteRoomConfirmBody": "“{{name}}” will be removed for everyone. Anyone currently in the call will be disconnected.",
    "deleteFailedTitle": "Couldn't delete room",
    "deleteFailedBody": "Please try again.",
    "emptyTitle": "No room selected",
    "emptyDescription": "Pick a room to join the call, or create a new one.",
    "you": "You",
    "guest": "Guest",
    "inCall": "{{count}} in call",
    "connecting": "Connecting…",
    "roomFull": "Room is full (max {{max}}).",
    "callError": "Couldn't start the call. Check camera/mic permissions.",
    "muteMic": "Mute microphone",
    "unmuteMic": "Unmute microphone",
    "startVideo": "Start video",
    "stopVideo": "Stop video",
    "shareScreen": "Share screen",
    "leave": "Leave call",
    "calendar": "Calendar",
    "calendarEmpty": "No meetings on this day.",
    "invite": {
      "add": "Add people",
      "title": "Invite to call",
      "description": "Ring a team member into {{room}}.",
      "search": "Search team…",
      "noMembers": "No other members.",
      "ring": "Ring",
      "invited": "Invited",
      "join": "Join",
      "toastTitle": "{{name}} invited you to a call",
      "accept": "Accept",
      "decline": "Decline"
    },
    "schedule": {
      "cta": "Schedule meeting",
      "title": "Schedule a meeting",
      "description": "Plan a meeting and invite your team.",
      "titleLabel": "Title",
      "titlePlaceholder": "e.g. Weekly sync",
      "date": "Date",
      "time": "Time",
      "participants": "Participants",
      "save": "Schedule",
      "saving": "Scheduling…",
      "failedTitle": "Couldn't schedule meeting",
      "failedBody": "Please try again."
    },
    "calendarEmptyHint": "Schedule a meeting to see it on this day.",
    "upcoming": {
      "title": "Upcoming",
      "empty": "No upcoming meetings."
    }
  },
  "messages": {
    "inbox": "Inbox",
    "unread": "Unread · {{count}}",
    "newMessage": "New message",
    "searchPlaceholder": "Search conversations",
    "noMatches": "No conversations match your search.",
    "noUnread": "No unread messages.",
    "noConversations": "No conversations yet.",
    "you": "You: ",
    "directMessage": "Direct message",
    "peopleCount": "{{count}} people",
    "messagePlaceholder": "Message {{name}}…",
    "send": "Send",
    "emptyTitle": "No conversation selected",
    "emptyDescription": "Choose a conversation from the inbox, or start a new one.",
    "startConversation": "Start a conversation",
    "today": "Today",
    "yesterday": "Yesterday",
    "compose": {
      "title": "New message",
      "description": "Start a conversation with a member of your clinic.",
      "searchPlaceholder": "Search people",
      "noMatches": "No people match your search.",
      "noMembers": "No other clinic members yet. Invite colleagues from Settings → Care team."
    },
    "startFailedTitle": "Couldn't start conversation",
    "startFailedBody": "Please try again.",
    "attach": {
      "menu": "Attach",
      "file": "Files",
      "appointment": "Appointments",
      "remove": "Remove",
      "uploading": "Uploading…",
      "uploadFailedTitle": "Couldn't attach file",
      "uploadFailedBody": "The file may be too large (max 10MB). Please try again.",
      "tooLargeTitle": "File too large",
      "tooLargeBody": "Attachments are limited to 10MB.",
      "download": "Download",
      "apptDialogTitle": "Share an appointment",
      "apptDialogDescription": "Search by patient name, then pick an appointment to attach.",
      "apptSearchPlaceholder": "Patient name…",
      "apptNoMatches": "No appointments match.",
      "apptEmpty": "No appointments yet.",
      "apptCardLabel": "Appointment",
      "apptDetailTitle": "Appointment details",
      "apptWhen": "When",
      "apptType": "Type",
      "apptProvider": "Provider",
      "apptPatient": "Patient",
      "apptStatus": "Status"
    },
    "startCall": "Start a call with {{name}}",
    "system": {
      "label": "System message",
      "tag": "System",
      "readOnly": "This is an automated system notice — you can't reply here.",
      "passwordResetTitle": "Password reset requested",
      "passwordResetBody": "{{name}} forgot their password. Tap to open their settings and set a new one."
    }
  },
  "analysis": {
    "title": "Overview",
    "subtitle": "Clinic performance at a glance, computed from your clinic's data.",
    "customize": "Customize",
    "customizeTitle": "Show sections",
    "range": {
      "all": "All Time",
      "12m": "12m",
      "3m": "3m",
      "30d": "30d",
      "today": "Today"
    },
    "section": {
      "visits": "Patient visits",
      "patients": "Patient volume",
      "trends": "Trends",
      "earnings": "Earnings",
      "appointments": "Appointments",
      "prescriptions": "Prescriptions"
    },
    "area": {
      "title": "Patient visits",
      "subtitle": "Visit volume over the last six months.",
      "label": "Total visits"
    },
    "patientVolume": {
      "title": "Patient volume",
      "description": "New, active and total patients",
      "total": "Total patients",
      "newThisMonth": "New this month",
      "active": "Active patients"
    },
    "earnings": {
      "title": "Earnings",
      "description": "Billed, paid and outstanding — from invoices",
      "billed": "Total billed",
      "paid": "Total paid",
      "outstanding": "Outstanding",
      "byMonth": "Billed vs paid, by month"
    },
    "appointments": {
      "title": "Appointments & schedule",
      "description": "Bookings, attendance and what's coming up",
      "thisWeek": "This week",
      "upcoming": "Upcoming",
      "completed": "Completed",
      "cancelled": "Cancelled"
    },
    "prescriptions": {
      "title": "Prescriptions",
      "description": "Medications prescribed",
      "total": "Total issued",
      "active": "Active"
    },
    "tasks": {
      "title": "Tasks",
      "description": "Care-team workload",
      "open": "Open",
      "completed": "Completed"
    },
    "charts": {
      "title": "Trends",
      "subtitle": "Patient growth and weekly appointment volume.",
      "viewDetails": "Tap for details",
      "patientGrowthTitle": "New patients",
      "patientGrowthDescription": "New patients per month over the last 6 months",
      "weeklyAppointmentsTitle": "Appointments this week",
      "weeklyAppointmentsDescription": "Bookings per day for the current week",
      "empty": "No data yet"
    }
  },
  "activity": {
    "title": "Activity",
    "subtitle": "An audit log of record changes across the clinic.",
    "changesToday": "Changes today",
    "thisWeek": "This week",
    "totalRecorded": "Total recorded",
    "empty": "No activity yet. Changes to patients, notes, appointments, prescriptions and tasks will appear here.",
    "detail": {
      "title": "Activity detail",
      "person": "Performed by",
      "record": "Record type",
      "patient": "Patient",
      "reference": "Reference",
      "time": "Time",
      "close": "Close",
      "entityTypes": {
        "patient": "Patient",
        "note": "Note",
        "appointment": "Appointment",
        "prescription": "Prescription",
        "task": "Task"
      }
    }
  },
  "notes": {
    "title": "Notes",
    "subtitle": "Clinical notes. Click a note to open it.",
    "new": "New note",
    "editNote": "Edit note",
    "loading": "Loading…",
    "emptyTitle": "No notes yet",
    "emptyDescription": "Create a note to start writing.",
    "untitled": "Untitled note",
    "updated": "Updated {{date}}",
    "tryAgain": "Please try again.",
    "loadFailed": "Couldn't load notes",
    "saved": "Note saved",
    "saveFailed": "Couldn't save note",
    "deleted": "Note deleted",
    "deleteFailed": "Couldn't delete note",
    "editor": {
      "placeholder": "Write your note…",
      "titlePlaceholder": "Note title",
      "delete": "Delete note",
      "save": "Save",
      "saving": "Saving…",
      "bold": "Bold",
      "italic": "Italic",
      "underline": "Underline",
      "heading1": "Heading 1",
      "heading2": "Heading 2",
      "bulletList": "Bullet list",
      "numberedList": "Numbered list",
      "undo": "Undo",
      "redo": "Redo",
      "confirmTitle": "Delete this note?",
      "confirmDescription": "\"{{name}}\" will be permanently deleted. This can't be undone.",
      "confirmLabel": "Delete note"
    }
  },
  "chat": {
    "heading": "Which patient would you like to look up?",
    "setupNotice": {
      "title": "Connect an AI model to get started",
      "body": "No AI provider is set up yet. Add an API key or point temetro at a local Ollama model so the assistant can answer.",
      "action": "Open AI settings",
      "dismiss": "Dismiss"
    },
    "input": {
      "placeholder": "Ask anything, or type /patient 10293",
      "message": "Message",
      "addPatient": "Add patient",
      "attachFile": "Attach file",
      "attachFiles": "Attach files",
      "removeFile": "Remove {{name}}",
      "dictate": "Dictate",
      "dictateStop": "Stop dictation",
      "dictateUnsupported": "Voice dictation isn't supported in this browser",
      "send": "Send",
      "stop": "Stop",
      "model": "Model",
      "mode": "Mode",
      "modes": {
        "chat": {
          "label": "Chat",
          "description": "Ask and retrieve patient information."
        },
        "analysis": {
          "label": "Analysis",
          "description": "Interpret patterns across a patient's history."
        },
        "graph": {
          "label": "Graph",
          "description": "See how problems and visits connect."
        }
      },
      "moreModels": "More models",
      "effort": "Effort",
      "effortOptions": {
        "low": "Low",
        "medium": "Medium",
        "high": "High"
      },
      "models": {
        "opus48": "For complex clinical reasoning",
        "sonnet46": "Balanced for everyday tasks",
        "haiku45": "Fastest for quick answers",
        "gemini25Pro": "Google’s most capable model",
        "gemini25Flash": "Fast Google model",
        "gemini20Flash": "Lightweight Google model",
        "gpt4o": "OpenAI multimodal flagship",
        "gpt4oMini": "Fast, low-cost OpenAI model",
        "ollama": "Runs locally on your infrastructure"
      }
    },
    "patientNotFound": "I couldn't find a patient with file number {{fileNumber}}.",
    "thinking": "Thinking…",
    "steps": "Steps",
    "reasoning": "Reasoning",
    "sources": {
      "title": "Sources",
      "kind": {
        "patient": "Patient record",
        "lab": "Lab results",
        "appointments": "Schedule",
        "tasks": "Tasks",
        "prescriptions": "Prescriptions",
        "clinic": "Clinic",
        "analytics": "Analytics",
        "inventory": "Inventory"
      }
    },
    "graphCard": {
      "label": "Record graph"
    },
    "history": {
      "title": "Chats",
      "untitled": "New chat",
      "empty": "No saved chats yet.",
      "delete": "Delete chat",
      "open": "Chat history",
      "search": "Search chats",
      "startNew": "Start new chat"
    },
    "suggestions": {
      "schedule": "Show today's schedule",
      "tasks": "List open tasks",
      "prescriptions": "Show recent prescriptions",
      "import": "Import a patient database"
    },
    "queue": {
      "label": "Queued · {{count}}",
      "remove": "Remove from queue",
      "attachmentsOnly": "{{count}} attachment(s)"
    },
    "veil": {
      "title": "Veil",
      "body": "This message will be processed by {{provider}}, an external provider. Veil de-identifies patient information (names, MRNs, providers) before it leaves your infrastructure, and restores it in the answer.",
      "cancel": "Cancel",
      "useLocal": "Use local model",
      "confirm": "De-identify & send",
      "activeChip": "Veil active · {{provider}}"
    },
    "actionCard": {
      "title": {
        "appointment": "Proposed appointment",
        "task": "Proposed task",
        "prescription": "Proposed prescription",
        "invoice": "Proposed invoice",
        "inventory": "Proposed inventory"
      },
      "kind": {
        "appointment": "Appointment added.",
        "task": "Task added.",
        "prescription": "Prescription added.",
        "invoice": "Invoice added.",
        "inventory": "Inventory updated."
      },
      "inventoryItems": "{{count}} item(s)",
      "itemCount": "{{count}} item(s)",
      "total": "Total",
      "editButton": "Edit",
      "edit": {
        "title": "Edit proposed record",
        "save": "Save changes",
        "cancel": "Cancel",
        "addRow": "Add",
        "removeRow": "Remove row"
      },
      "fields": {
        "name": "Patient name",
        "date": "Date",
        "time": "Time",
        "type": "Type",
        "provider": "Provider",
        "title": "Title",
        "assignee": "Assignee",
        "due": "Due",
        "priority": "Priority",
        "patient": "Patient",
        "medication": "Medication",
        "dose": "Dose",
        "frequency": "Frequency",
        "duration": "Duration",
        "lineItems": "Line items",
        "description": "Description",
        "quantity": "Qty",
        "unitPrice": "Unit price",
        "items": "Items",
        "itemName": "Name",
        "strength": "Strength",
        "stockQuantity": "Quantity"
      },
      "approve": "Add",
      "adding": "Adding…",
      "discard": "Discard",
      "added": "Added.",
      "discarded": "Discarded — nothing was saved.",
      "addedTitle": "Added",
      "failedTitle": "Could not add",
      "failedBody": "Something went wrong, or you don't have permission. Please try again.",
      "batch": {
        "title": "{{count}} records proposed",
        "review": "Review & add",
        "dialogTitle": "Review proposed records",
        "dialogDescription": "Add them all at once, or remove any you don't want.",
        "addAll": "Add all",
        "adding": "Adding…",
        "discardAll": "Discard all",
        "newPatient": "New patient will be created",
        "edited": "Edited",
        "remove": "Remove",
        "done": "Added {{added}} of {{total}}.",
        "alreadyAdded": "Added.",
        "failedCount": "{{count}} failed",
        "discarded": "Discarded — nothing was saved."
      }
    },
    "lists": {
      "appointments": "Appointments",
      "tasks": "Tasks",
      "prescriptions": "Prescriptions",
      "done": "Done",
      "noAppointments": "No appointments.",
      "noTasks": "No tasks.",
      "noPrescriptions": "No prescriptions.",
      "inventory": "Inventory",
      "noInventory": "No inventory items.",
      "moreAppointments": "+{{count}} more",
      "viewInCalendar": "View in calendar"
    },
    "clinicCard": {
      "title": "Clinic",
      "since": "Since {{date}}"
    },
    "analyticsCard": {
      "title": "Clinic analytics",
      "patients": "Patients",
      "appointmentsThisWeek": "Appts this week",
      "activePrescriptions": "Active Rx",
      "openTasks": "Open tasks",
      "billed": "Billed",
      "paid": "Paid",
      "outstanding": "Outstanding",
      "byMonth": "Billed vs paid, by month"
    },
    "labCard": {
      "flags": {
        "low": "Low",
        "high": "High",
        "critical": "Critical",
        "normal": "Normal"
      }
    },
    "importCard": {
      "title": "Import patient records",
      "ready": "Ready to import",
      "skipped": "Skipped",
      "total": "Parsed",
      "row": "Row {{index}}",
      "more": "+{{count}} more",
      "approve": "Import {{count}} record(s)",
      "approve_one": "Import 1 record",
      "reject": "Discard",
      "reviewEdit": "Review & edit",
      "reviewTitle": "Review records",
      "reviewDescription": "Open any record to edit it before importing. Fix the skipped ones to include them.",
      "reviewClose": "Close",
      "fixHint": "Open Review & edit to fix the skipped rows, or import the ready ones.",
      "rowReady": "Ready to import",
      "needsFix": "Needs fixing",
      "unnamed": "Unnamed record",
      "importing": "Importing…",
      "rejectedNote": "Import discarded. Nothing was written.",
      "importedTitle": "Records imported",
      "importedBody": "Imported {{count}} patient record(s).",
      "alreadyImported": "Imported.",
      "failedCount": "{{count}} failed",
      "failedTitle": "Import failed",
      "failedBody": "The records could not be imported. Please try again."
    },
    "error": {
      "title": "AI request failed",
      "body": "Something went wrong reaching the AI. Check your provider and API key in Settings → AI.",
      "dismiss": "Dismiss"
    }
  },
  "patientFiles": {
    "title": "Files",
    "add": "Add files",
    "empty": "No files uploaded.",
    "remove": "Remove",
    "open": "Open",
    "close": "Close",
    "noPreview": "No preview available for this file type.",
    "deletedTitle": "File removed",
    "deleteFailedTitle": "Couldn't remove file",
    "deleteFailedBody": "Something went wrong, or you don't have permission. Please try again.",
    "uploadFailedTitle": "Some files didn't upload",
    "uploadFailedBody": "The record was saved, but one or more files failed to upload. Try adding them again from the record."
  },
  "integrations": {
    "fhir": {
      "cardTitle": "Lab system (HL7/FHIR)",
      "disabledHint": "Not enabled. An owner or admin can connect a lab system in Settings → Integrations.",
      "searchPlaceholder": "Search a patient to pull results…",
      "change": "Change",
      "sync": "Sync results",
      "syncing": "Syncing…",
      "syncedTitle": "Results synced",
      "syncedBody": "Imported {{count}} result(s) for {{name}}.",
      "failedTitle": "Sync failed",
      "failedBody": "Couldn't reach the lab system. Please try again."
    },
    "eRx": {
      "send": "Send to pharmacy",
      "sending": "Sending…",
      "sentTitle": "Prescription sent",
      "sentBody": "Transmitted to the pharmacy as an NCPDP SCRIPT NewRx.",
      "failedTitle": "Couldn't send",
      "failedBody": "The pharmacy gateway rejected the message or is unreachable."
    },
    "claims": {
      "submit": "Submit claim",
      "submitting": "Submitting…",
      "submittedTitle": "Claim submitted",
      "submittedBody": "Clearinghouse status: {{status}}.",
      "failedTitle": "Couldn't submit claim",
      "failedBody": "The clearinghouse rejected the claim or is unreachable."
    }
  },
  "patientCard": {
    "notFound": "No patient found for file #{{number}}.",
    "overview": "Overview",
    "edit": "Edit",
    "exportPdf": "Download summary",
    "clickForMore": "Click for more",
    "pdf": {
      "title": "Clinical summary",
      "mrn": "MRN",
      "generated": "Generated {{date}}"
    },
    "history": {
      "title": "Record history",
      "empty": "No recorded changes yet.",
      "loadError": "Couldn't load the record history."
    },
    "sex": {
      "F": "Female",
      "M": "Male"
    },
    "summary": {
      "fullName": "Full name",
      "mrn": "MRN",
      "age": "Age",
      "sex": "Sex",
      "primaryCare": "Primary care",
      "status": "Status",
      "lastSeen": "Last seen",
      "allergies": "Allergies",
      "activeMeds": "Active meds",
      "openProblems": "Open problems",
      "none": "None",
      "editRecord": "Edit record"
    },
    "vitals": {
      "title": "Vitals",
      "taken": "Taken {{at}}",
      "bp": "BP",
      "hr": "HR",
      "temp": "Temp",
      "spo2": "SpO₂"
    },
    "labs": {
      "title": "Labs",
      "asOf": "As of {{at}}",
      "empty": "No labs on file."
    },
    "medications": {
      "title": "Medications",
      "active": "{{count}} active",
      "empty": "No active medications."
    },
    "problems": {
      "title": "Problems",
      "active": "{{count}} active",
      "empty": "No active problems.",
      "since": "since {{date}}"
    },
    "allergies": {
      "title": "Allergies & alerts",
      "sectionLabel": "Allergies",
      "none": "No known allergies.",
      "count": "{{count}} recorded"
    },
    "visits": {
      "title": "Recent visits",
      "recent": "{{count}} recent",
      "empty": "No visits yet."
    },
    "graph": {
      "title": "Record graph",
      "hint": "Hover a node to focus its connections. Scroll to pan, pinch to zoom.",
      "empty": "Not enough record data to graph yet.",
      "open": "Open graph",
      "close": "Close",
      "kind": {
        "problem": "Problem",
        "visit": "Visit"
      },
      "fields": {
        "since": "Since",
        "date": "Date",
        "provider": "Provider",
        "summary": "Summary"
      }
    },
    "appointments": {
      "title": "Appointments",
      "empty": "No appointments on file."
    },
    "prescriptions": {
      "title": "Prescriptions",
      "empty": "No prescriptions on file."
    },
    "invoices": {
      "title": "Invoices",
      "empty": "No invoices on file."
    },
    "trend": {
      "empty": "No trend data yet.",
      "last": "{{label}} · last {{count}}",
      "lastReadings": "{{label}} · last {{count}} readings",
      "latest": "Latest",
      "min": "Min",
      "max": "Max"
    },
    "labFlag": {
      "normal": "Normal",
      "low": "Low",
      "high": "High",
      "critical": "Critical"
    },
    "severity": {
      "mild": "Mild",
      "moderate": "Moderate",
      "severe": "Severe"
    }
  },
  "patientForm": {
    "editTitle": "Edit record",
    "createTitle": "Add patient",
    "editDescription": "Update {{name}}'s chart and add new data.",
    "createDescription": "Create a new chart. A file number has been generated for you.",
    "fileNumber": "File number",
    "regenerate": "Regenerate file number",
    "fullName": "Full name",
    "fullNamePlaceholder": "e.g. Jordan Pierce",
    "age": "Age",
    "sex": "Sex",
    "status": "Status",
    "primaryCare": "Primary care",
    "primaryCarePlaceholder": "e.g. Dr. Lena Ortiz",
    "primaryCareUnassigned": "Unassigned",
    "currentVitals": "Current vitals",
    "bp": "Blood pressure",
    "hr": "Heart rate",
    "temp": "Temperature",
    "spo2": "Oxygen saturation",
    "allergies": "Allergies",
    "medications": "Medications",
    "problems": "Problems",
    "labs": "Labs",
    "visits": "Visits",
    "add": "Add",
    "removeRow": "Remove {{label}} row",
    "pickDate": "Pick a date",
    "substance": "Substance",
    "reaction": "Reaction",
    "severityAria": "Severity",
    "medNameAria": "Medication name",
    "medName": "Name",
    "dose": "Dose",
    "frequency": "Frequency",
    "problemAria": "Problem",
    "diagnosis": "Diagnosis",
    "sinceAria": "Since",
    "labNameAria": "Lab name",
    "test": "Test",
    "valueAria": "Value",
    "value": "Value",
    "flagAria": "Flag",
    "visitTypeAria": "Visit type",
    "visitType": "Type",
    "visitDateAria": "Visit date",
    "visitDate": "Date",
    "providerAria": "Provider",
    "provider": "Provider",
    "summaryAria": "Summary",
    "summary": "Summary",
    "cancel": "Cancel",
    "saving": "Saving…",
    "saveChanges": "Save changes",
    "savePatient": "Save patient",
    "saveDraft": "Save changes",
    "reviewTitle": "Review record before import",
    "reviewDescription": "Edit any field, then save to update this record in the import. Nothing is written until you import.",
    "saveError": "Could not save the patient.",
    "updatedTitle": "Record updated",
    "updatedBody": "{{name}}'s chart was saved.",
    "addedTitle": "Patient added",
    "addedBody": "{{name}} ({{fileNumber}}).",
    "saveFailedTitle": "Couldn't save patient"
  },
  "settings": {
    "tabs": {
      "profile": "Profile",
      "ai": "AI",
      "records": "Records",
      "signing": "Signing",
      "careTeam": "Care team",
      "integrations": "Integrations",
      "developers": "Developers",
      "version": "About & updates"
    },
    "version": {
      "title": "Version",
      "description": "The temetro version running on this server, and whether a newer release is available.",
      "current": "Current version",
      "latest": "Latest release",
      "checking": "Checking for updates…",
      "checkNow": "Check for updates",
      "upToDate": "Up to date",
      "updateAvailable": "Update available",
      "offline": "Couldn't reach the update server",
      "updateTitle": "How to update",
      "updateDescription": "temetro is self-hosted with Docker. To update, pull the new images and restart on the server machine.",
      "updateCommandLabel": "Update command",
      "viewRelease": "View release notes",
      "networkTitle": "Network access",
      "networkDescription": "Let other departments open temetro from their own computers on the hospital network using this address.",
      "networkUrlLabel": "Network address",
      "networkLocalHint": "You're viewing temetro locally. To share it, open the app on the server machine using its network IP address (e.g. from ipconfig / ifconfig), then share that URL.",
      "networkFirewallHint": "The server's firewall must allow the port for other devices to connect.",
      "banner": "A new version of temetro ({{version}}) is available.",
      "bannerUpdate": "See how to update",
      "bannerDismiss": "Later"
    },
    "integrations": {
      "loading": "Loading integrations…",
      "intro": "Connect temetro to external healthcare systems. Point each integration at your vendor's sandbox or production endpoint and supply its credentials.",
      "endpoint": "Endpoint URL",
      "credentials": "Credentials",
      "credentialsSet": "•••••••• (stored — type to replace)",
      "enable": "Enable integration",
      "enableHint": "When on, its actions appear on the relevant pages.",
      "save": "Save",
      "saving": "Saving…",
      "test": "Test connection",
      "testing": "Testing…",
      "savedTitle": "Integration saved",
      "saveFailedTitle": "Couldn't save",
      "saveFailedBody": "Something went wrong, or you don't have permission. Please try again.",
      "testOk": "Connection succeeded",
      "testFailed": "Connection failed",
      "testError": "Couldn't reach the endpoint.",
      "lastSync": "Last activity {{when}}",
      "status": {
        "connected": "Connected",
        "error": "Error",
        "unconfigured": "Not configured"
      },
      "fhir": {
        "title": "Lab system (HL7/FHIR)",
        "description": "Read lab results from a FHIR R4 server or HL7 v2 feed (e.g. a HAPI FHIR / SMART Health IT sandbox, or your lab's gateway).",
        "endpointPlaceholder": "https://hapi.fhir.org/baseR4",
        "credentialsPlaceholder": "Bearer token (optional for open sandboxes)",
        "credentialsHint": "Sent as a Bearer token, or JSON {\"token\":\"…\"}. Leave blank for public sandboxes."
      },
      "eprescribe": {
        "title": "e-Prescribing (NCPDP SCRIPT)",
        "description": "Transmit prescriptions to pharmacies as NCPDP SCRIPT NewRx messages. Production routing requires your Surescripts (or sandbox) account.",
        "endpointPlaceholder": "https://your-pharmacy-gateway.example/script",
        "credentialsPlaceholder": "JSON: {\"token\":\"…\",\"senderId\":\"…\"}",
        "credentialsHint": "JSON with your gateway token and sender id."
      },
      "claims": {
        "title": "Insurance claims (X12 837/835)",
        "description": "Submit professional claims (837P) to a clearinghouse and read remittances (835). Production requires your clearinghouse account.",
        "endpointPlaceholder": "https://your-clearinghouse.example/claims",
        "credentialsPlaceholder": "JSON: {\"token\":\"…\",\"submitterId\":\"…\",\"receiverId\":\"…\"}",
        "credentialsHint": "JSON with your clearinghouse token and submitter/receiver ids."
      }
    },
    "empty": "Nothing here yet.",
    "copy": "Copy",
    "copied": "Copied",
    "records": {
      "description": "How patient records are sourced, stored, and displayed",
      "comingSoon": "Coming soon",
      "connected": "Connected",
      "sourcesTitle": "Data sources",
      "sourcesDescription": "Where the patient records shown in temetro come from",
      "clinicDb": "Clinic database",
      "clinicDbDesc": "Patient records are stored in your clinic's own database and scoped to this clinic.",
      "patientStorage": "Patient-owned storage",
      "patientStorageDesc": "Read and write records directly on the patient's device once the companion app ships.",
      "importExportTitle": "Import & export",
      "importExportDescription": "Move records in and out of temetro",
      "export": "Export records",
      "exportDesc": "Download every patient record in this clinic as a single archive.",
      "import": "Import an existing database",
      "importDesc": "Connect an existing patient database and browse it in the same card UI.",
      "retentionTitle": "Retention",
      "retentionDescription": "How long records are kept",
      "retentionBody": "Records are kept for as long as your clinic exists. Deleting a patient permanently removes their chart from the clinic database, and the activity log keeps an audit trail of every change — who made it and when.",
      "exporting": "Exporting…",
      "exportDoneTitle": "Records exported",
      "exportDoneBody": "Downloaded {{count}} patient record(s).",
      "exportFailedTitle": "Export failed",
      "exportFailedBody": "Couldn't export records. Please try again.",
      "importTemetro": "Import a temetro archive",
      "importTemetroDesc": "Load patients from a temetro export file. Existing file numbers are skipped.",
      "importChoose": "Choose file",
      "importPreview": "{{count}} patient record(s) ready to import.",
      "importCancel": "Cancel",
      "importApply": "Import",
      "importing": "Importing…",
      "importInvalidTitle": "Invalid file",
      "importInvalidBody": "That doesn't look like a temetro export.",
      "importDoneTitle": "Import complete",
      "importDoneBody": "Created {{created}}, skipped {{skipped}}.",
      "importFailedTitle": "Import failed",
      "importFailedBody": "Couldn't import records. Please try again."
    },
    "developers": {
      "description": "Access tokens for the temetro API",
      "comingSoon": "Coming soon",
      "apiTitle": "API access",
      "apiDescription": "Build on the same REST API the temetro app uses",
      "baseUrlLabel": "API base URL",
      "baseUrlDescription": "All endpoints live under this origin (e.g. /api/patients)",
      "authLabel": "Authentication",
      "authDescription": "Requests authenticate with your temetro session cookie. Scoped personal access tokens for server-to-server use are planned.",
      "tokensTitle": "Personal access tokens",
      "tokensDescription": "Long-lived tokens for scripts and integrations",
      "noTokens": "No tokens yet.",
      "generateToken": "Generate token",
      "resourcesTitle": "Resources",
      "resourcesDescription": "Where to learn more",
      "resourcesBody": "The API reference — covering patients, appointments, prescriptions, tasks, messaging, activity and analytics — lives in the project documentation under docs/api. temetro is open source, so the route handlers in backend/src/routes are the authoritative spec.",
      "email": {
        "title": "Email provider",
        "description": "How temetro sends verification, password-reset and invitation emails. This is a deployment-wide setting.",
        "provider": "Provider",
        "providers": {
          "none": "Not configured",
          "smtp": "SMTP",
          "resend": "Resend",
          "postmark": "Postmark",
          "sendgrid": "SendGrid"
        },
        "from": "From address",
        "apiKey": "API key",
        "apiKeySet": "•••••••• (saved — leave blank to keep)",
        "apiKeyPlaceholder": "Paste your provider API key",
        "smtpHint": "SMTP uses the SMTP_HOST/PORT/USER/PASS environment variables on the server.",
        "save": "Save",
        "saving": "Saving…",
        "savedTitle": "Email settings saved",
        "savedFailed": "Couldn't save email settings.",
        "test": "Send test",
        "testing": "Sending…",
        "testSentTitle": "Test email sent",
        "testSentBody": "Sent a test email to {{to}}.",
        "testFailed": "Couldn't send the test email."
      }
    },
    "profile": {
      "sectionTitle": "Clinician profile",
      "clinicianIdLabel": "Clinician ID",
      "clinicianIdDescription": "Your unique clinician identifier, used when signing records",
      "handleLabel": "Handle",
      "handleDescription": "Used in your public profile and the patient portal",
      "avatar": "Avatar",
      "displayName": "Display name",
      "specialty": "Specialty",
      "selectSpecialty": "Select specialty",
      "clinic": "Clinic / practice",
      "clinicPlaceholder": "e.g. Main Hospital",
      "contactEmail": "Contact email",
      "contactEmailPlaceholder": "clinician@example.org",
      "professionalLinks": "Professional links",
      "professionalLinksHint": "Registry or institutional profiles used to verify your identity. They are never shown to patients.",
      "addLink": "Add link",
      "language": {
        "title": "Language",
        "description": "The language temetro's interface is shown in on this device.",
        "label": "Display language",
        "en": "English",
        "fr": "Français",
        "so": "Soomaali",
        "ar": "العربية",
        "de": "Deutsch",
        "confirmTitle": "Change display language?",
        "confirmBody": "Switch the interface to {{language}}? The app will reload its text in the new language.",
        "confirmCta": "Change language",
        "cancel": "Cancel"
      },
      "patientNotifications": "Patient notifications",
      "patientNotificationsDescription": "Emails sent to patients about their records, results, and pending approvals",
      "accountNotifications": "Account notifications",
      "accountNotificationsDescription": "Notifications sent to you about your patients and the care team",
      "features": "Features",
      "featuresDescription": "Manage alpha & beta features for your account",
      "dangerZone": "Danger Zone",
      "dangerZoneDescription": "Irreversible actions for your account",
      "deleteAccount": "Delete account",
      "deleteAccountDescription": "Permanently delete your temetro account and any locally stored signing keys. This action cannot be undone.",
      "delete": "Delete",
      "unsavedChanges": "You have unsaved changes",
      "saveChanges": "Save changes",
      "saving": "Saving…",
      "savedTitle": "Settings saved",
      "savedBody": "Your preferences are up to date.",
      "saveFailedTitle": "Couldn't save settings",
      "saveFailedBody": "Please try again.",
      "deleteDialog": {
        "title": "Delete your account?",
        "description": "This permanently deletes your account, removes you from your clinics, and cannot be undone.",
        "passwordLabel": "Confirm your password",
        "passwordPlaceholder": "Your password",
        "cancel": "Cancel",
        "confirm": "Delete account",
        "deleting": "Deleting…",
        "failed": "Couldn't delete the account. Check your password and try again."
      },
      "notif": {
        "newLab": "New lab result",
        "newLabDesc": "Sent when a new lab result is available on a patient's chart",
        "recordUpdated": "Record updated",
        "recordUpdatedDesc": "Sent when a patient's record is updated by a member of the care team",
        "approvalRequested": "Approval requested",
        "approvalRequestedDesc": "Sent when a signed change is awaiting the patient's approval",
        "changeApproved": "Change approved",
        "changeApprovedDesc": "Sent when a patient approves a pending change to their record",
        "newMessage": "New message",
        "newMessageDesc": "Sent when a patient or another clinician sends a message",
        "visitScheduled": "Visit scheduled",
        "visitScheduledDesc": "Sent when an upcoming visit is added to a patient's record",
        "pendingApprovals": "Pending approvals",
        "pendingApprovalsDesc": "Notify me when a patient approves or rejects a pending change",
        "recordsShared": "Records shared with me",
        "recordsSharedDesc": "Notify me when a patient shares a record with me",
        "patientStorage": "Patient-owned storage (beta)",
        "patientStorageDesc": "Write records to the patient's own device instead of your database",
        "requireSigned": "Require signed records",
        "requireSignedDesc": "Require a signature on every change you make to a patient record"
      }
    },
    "careTeam": {
      "title": "Care team",
      "description": "Staff with access to this clinic",
      "loadError": "Could not load the care team.",
      "loading": "Loading care team…",
      "you": "(you)",
      "clickHint": "Tip: click a team member to see their permissions and manage their role.",
      "addMember": "Add team member",
      "removeMember": "Remove member",
      "specialties": {
        "general": "General practitioner",
        "orthopedics": "Orthopedist",
        "dentistry": "Dentist",
        "cardiology": "Cardiologist",
        "pediatrics": "Pediatrician",
        "dermatology": "Dermatologist",
        "neurology": "Neurologist",
        "obgyn": "OB-GYN",
        "ophthalmology": "Ophthalmologist",
        "ent": "ENT specialist",
        "psychiatry": "Psychiatrist",
        "radiology": "Radiologist",
        "anesthesiology": "Anesthesiologist",
        "surgery": "Surgeon"
      },
      "employee": {
        "title": "Team member",
        "description": "View this member's access, change their role, or remove them.",
        "permissions": "Permissions",
        "noAccess": "No access",
        "changeRole": "Change role",
        "save": "Save",
        "saving": "Saving…",
        "remove": "Remove employee",
        "close": "Close",
        "roleUpdatedTitle": "Role updated",
        "roleUpdatedBody": "{{name}} is now {{role}}.",
        "roleFailedTitle": "Couldn't update role",
        "roleFailedBody": "Please try again.",
        "specialty": "Specialty",
        "noSpecialty": "No specialty",
        "specialtyUpdatedTitle": "Specialty updated",
        "specialtyUpdatedBody": "Updated {{name}}'s specialty.",
        "specialtyFailedTitle": "Couldn't update specialty",
        "specialtyFailedBody": "Please try again.",
        "resources": {
          "patient": "Patients",
          "appointment": "Appointments",
          "prescription": "Prescriptions",
          "task": "Tasks",
          "lab": "Lab results"
        },
        "actions": {
          "read": "View",
          "write": "Edit",
          "delete": "Delete"
        },
        "resetPassword": "Reset password",
        "resetPasswordHint": "Set a new password for this employee (e.g. they forgot theirs and no email provider is configured).",
        "newPassword": "New password (min 12 chars)",
        "confirmPassword": "Confirm password",
        "setPassword": "Set password",
        "pwTooShortTitle": "Password too short",
        "pwTooShortBody": "Use at least 12 characters.",
        "pwMismatchTitle": "Passwords don't match",
        "pwMismatchBody": "Re-enter the same password in both fields.",
        "pwUpdatedTitle": "Password updated",
        "pwUpdatedBody": "{{name}} can now sign in with the new password.",
        "pwFailedTitle": "Couldn't set password",
        "pwFailedBody": "Please try again."
      },
      "remove": {
        "title": "Remove team member?",
        "description": "{{name}} will lose access to this clinic. This can't be undone.",
        "thisMember": "This member",
        "cancel": "Cancel",
        "confirm": "Remove",
        "removing": "Removing…",
        "removedTitle": "Member removed",
        "removedBody": "{{name}} no longer has access.",
        "failedTitle": "Couldn't remove member",
        "failedBody": "Please try again."
      },
      "add": {
        "title": "Add team member",
        "step1Description": "Who are you adding, and what can they do?",
        "step2Description": "Set the username and password they'll sign in with.",
        "nameLabel": "Full name",
        "namePlaceholder": "Jane Okafor",
        "nameRequired": "Enter the person's name.",
        "roleLabel": "Role",
        "usernameLabel": "Username",
        "usernamePlaceholder": "jokafor",
        "usernameHint": "Letters, numbers, dots and underscores — no spaces.",
        "usernameTooShort": "Username must be at least {{count}} characters.",
        "usernameInvalid": "Username can't contain spaces. Use letters, numbers, dots or underscores.",
        "passwordLabel": "Password",
        "passwordHint": "Must be at least {{count}} characters long.",
        "passwordTooShort": "Password must be at least {{count}} characters.",
        "back": "Back",
        "cancel": "Cancel",
        "next": "Next",
        "create": "Create account",
        "creating": "Creating…",
        "createdTitle": "Account created",
        "createdBody": "{{name}} can now sign in with the username {{username}}.",
        "error": "Could not create the account.",
        "errorTitle": "Could not add member"
      }
    },
    "signing": {
      "keyTitle": "Signing key",
      "active": "Active",
      "keyDescription": "Every change you make to a patient record is signed with this key, so patients can verify it came from you before approving it.",
      "rotateKey": "Rotate key",
      "rotating": "Rotating…",
      "rotateSuccessTitle": "Signing key rotated",
      "rotateSuccessBody": "A new Ed25519 key is now active for this clinic.",
      "rotateErrorTitle": "Couldn't rotate the key",
      "rotateError": "Please try again.",
      "loadError": "Couldn't load the signing key.",
      "loading": "Loading signing key…",
      "createdAt": "Created May 28, 2026",
      "createdAtLabel": "Created {{date}}",
      "rotatedAtLabel": "Rotated {{date}}",
      "records": {
        "permanent": "Permanent",
        "temporary": "Temporary",
        "expires": "Expires {{date}}",
        "statusPending": "Awaiting approval",
        "statusApproved": "Shared",
        "statusDenied": "Declined",
        "statusExpired": "Expired"
      },
      "identityTitle": "Signing identity",
      "identityDescription": "The public key patients use to verify your signatures",
      "fingerprintLabel": "Public key fingerprint",
      "fingerprintDescription": "Share or publish this fingerprint so patients can trust your changes",
      "signedRecordsTitle": "Signed records",
      "signedRecordsDescription": "Changes you've signed that are waiting on the patient's approval",
      "noPending": "No pending signatures",
      "comingSoon": "Coming soon",
      "howItWorksTitle": "How signing works",
      "howItWorksDescription": "The flow behind patient-approved records",
      "steps": {
        "sign": "You sign every change",
        "signDesc": "Each edit you make to a patient record is signed with your private key before it's written.",
        "approve": "The patient approves it",
        "approveDesc": "Signed changes stay pending until the patient accepts them in the companion app.",
        "verify": "Anyone can verify",
        "verifyDesc": "Your public key fingerprint lets patients and other clinics verify a change really came from you."
      },
      "backupTitle": "Backup key",
      "backupDescription": "Recover your signing identity if you lose this device",
      "backupLabel": "Recovery phrase",
      "backupDesc": "Export an encrypted backup of your signing key to restore it on a new device."
    },
    "ai": {
      "availability": {
        "title": "Availability",
        "description": "Control who in your clinic can use the AI assistant. When disabled, every AI surface — New chat, Analysis, and the chat history — is hidden and cannot be reached.",
        "enabled": "Enable AI assistant",
        "enabledHint": "Master switch. Turning this off disables and hides the AI for everyone in the clinic — including owners and admins.",
        "employeesOnly": "Disable for employees only",
        "employeesOnlyHint": "Keep the AI for owners and admins, but hide it from all other staff.",
        "savedTitle": "AI availability updated",
        "savedBody": "The change applies across your clinic.",
        "readonlyEnabled": "The AI assistant is enabled for your clinic.",
        "readonlyEmployeesOnly": "The AI assistant is restricted to owners and admins.",
        "readonlyDisabled": "The AI assistant is disabled for your clinic."
      },
      "modeTitle": "Inference mode",
      "modeDescription": "Choose how temetro runs the AI. A cloud API key sends data off your infrastructure; a local model keeps everything on your machine.",
      "mode": "Mode",
      "modeApi": "Cloud API key",
      "modeLocal": "Local model (Ollama)",
      "modeApiHint": "Requests go to your chosen provider. Patient identifiers are de-identified by Veil before they leave.",
      "modeLocalHint": "Requests run against a model on your own infrastructure. No patient data leaves the clinic.",
      "providerTitle": "Provider & API key",
      "providerDescription": "Your key is encrypted at rest and never shown again. You can store a key per provider and switch between them.",
      "provider": "Provider",
      "providers": {
        "openai": "OpenAI",
        "anthropic": "Anthropic",
        "gemini": "Google Gemini"
      },
      "apiKey": "API key",
      "apiKeyPlaceholder": "Paste your API key",
      "apiKeySet": "•••••••••• (key set)",
      "apiKeyHint": "The key is encrypted before storage and used only to call the provider.",
      "apiKeyStored": "A key is stored for {{provider}}.",
      "defaultModel": "Default model",
      "selectModel": "Select a model",
      "defaultEffort": "Default effort",
      "localTitle": "Local model (Ollama)",
      "localDescription": "Point temetro at your Ollama server. The model runs on your infrastructure, so patient data never leaves the clinic.",
      "ollamaBaseUrl": "Ollama base URL",
      "ollamaModel": "Model name",
      "testConnection": "Test connection",
      "testing": "Testing…",
      "testOk": "Connection succeeded",
      "testFailed": "Connection failed",
      "testError": "Could not run the test.",
      "veilTitle": "Veil — PHI safeguards",
      "veilDescription": "Veil de-identifies patient information before it is sent to an external model, then restores it in the response.",
      "veilLevel": "De-identification level",
      "veilLevels": {
        "full": "Full — names, MRNs, providers & free-text",
        "names": "Names only — direct identifiers",
        "off": "Off — send data as-is (not recommended)"
      },
      "veilApiNote": "Veil applies to every external request. Identifiers are replaced with tokens the model never sees, and re-inserted before you read the answer.",
      "veilLocalNote": "You are in local mode, so patient data never leaves your infrastructure and Veil is not needed.",
      "unsavedChanges": "You have unsaved AI settings.",
      "saveChanges": "Save changes",
      "saving": "Saving…",
      "savedTitle": "AI settings saved",
      "savedBody": "Your AI configuration has been updated.",
      "saveFailedTitle": "Could not save",
      "saveFailedBody": "Saving your AI settings failed. Please try again."
    }
  },
  "portal": {
    "kicker": "Patient Portal",
    "back": "Back",
    "done": "Done",
    "notFoundTitle": "Clinic not found",
    "notFoundBody": "This portal link isn't valid. Please ask the front desk for help.",
    "choose": {
      "bookTitle": "Book an appointment",
      "bookDesc": "Schedule a visit with your care team.",
      "resultsTitle": "View my results",
      "resultsDesc": "Check upcoming visits and whether results are ready."
    },
    "field": {
      "name": "Full name",
      "fileNumber": "File number",
      "date": "Date",
      "time": "Time",
      "reason": "Reason for visit (optional)",
      "reasonPlaceholder": "e.g. Follow-up, check-up",
      "sex": "Sex",
      "sexMale": "Male",
      "sexFemale": "Female",
      "age": "Age"
    },
    "book": {
      "title": "Book an appointment",
      "submit": "Request appointment",
      "successTitle": "You're booked",
      "successBody": "Your appointment is set for {{date}} at {{time}}. Please check in at the front desk.",
      "errorGeneric": "Couldn't book the appointment. Please try again or ask the front desk.",
      "mode": {
        "returning": "Returning patient",
        "new": "New patient"
      },
      "newFileNote": "Your new file number is {{file}} — keep it for next time.",
      "slotTaken": "That time is already taken. Please choose another."
    },
    "results": {
      "title": "View my results",
      "subtitle": "Enter your name and file number to continue.",
      "submit": "Look up",
      "greeting": "Hi {{name}}",
      "upcoming": "Upcoming appointments",
      "noUpcoming": "No upcoming appointments.",
      "resultsLabel": "Results",
      "ready": "{{count}} result(s) are on file.",
      "none": "No results are on file yet.",
      "askStaff": "Please ask a staff member to review your results with you.",
      "lookupAnother": "Look up another",
      "errorGeneric": "Couldn't find your record. Please check your details or ask the front desk."
    }
  }
}
