{"version":3,"sources":["locale-loader.source.js"],"sourcesContent":["window.NIYAJAR_LANDING_LOCALES = {\n  \"languages\": {\n    \"en\": {\n      \"name\": \"English\",\n      \"dir\": \"ltr\",\n      \"locale\": \"en-CA\"\n    },\n    \"ar\": {\n      \"name\": \"العربية\",\n      \"dir\": \"rtl\",\n      \"locale\": \"ar\"\n    },\n    \"id\": {\n      \"name\": \"Bahasa Indonesia\",\n      \"dir\": \"ltr\",\n      \"locale\": \"id\"\n    },\n    \"ur\": {\n      \"name\": \"اردو\",\n      \"dir\": \"rtl\",\n      \"locale\": \"ur\"\n    },\n    \"tr\": {\n      \"name\": \"Türkçe\",\n      \"dir\": \"ltr\",\n      \"locale\": \"tr\"\n    },\n    \"bn\": {\n      \"name\": \"বাংলা\",\n      \"dir\": \"ltr\",\n      \"locale\": \"bn\"\n    },\n    \"fr\": {\n      \"name\": \"Français\",\n      \"dir\": \"ltr\",\n      \"locale\": \"fr\"\n    },\n    \"ms\": {\n      \"name\": \"Bahasa Melayu\",\n      \"dir\": \"ltr\",\n      \"locale\": \"ms\"\n    },\n    \"fa\": {\n      \"name\": \"فارسی\",\n      \"dir\": \"rtl\",\n      \"locale\": \"fa\"\n    },\n    \"de\": {\n      \"name\": \"Deutsch\",\n      \"dir\": \"ltr\",\n      \"locale\": \"de-DE\"\n    },\n    \"kk\": {\n      \"name\": \"Қазақша\",\n      \"dir\": \"ltr\",\n      \"locale\": \"kk-KZ\"\n    },\n    \"ru\": {\n      \"name\": \"Русский\",\n      \"dir\": \"ltr\",\n      \"locale\": \"ru-RU\"\n    },\n    \"es\": {\n      \"name\": \"Español\",\n      \"dir\": \"ltr\",\n      \"locale\": \"es-ES\"\n    },\n    \"tl\": {\n      \"name\": \"Tagalog\",\n      \"dir\": \"ltr\",\n      \"locale\": \"fil-PH\"\n    },\n    \"it\": {\n      \"name\": \"Italiano\",\n      \"dir\": \"ltr\",\n      \"locale\": \"it-IT\"\n    },\n    \"pl\": {\n      \"name\": \"Polski\",\n      \"dir\": \"ltr\",\n      \"locale\": \"pl-PL\"\n    },\n    \"pt\": {\n      \"name\": \"Português (Brasil)\",\n      \"dir\": \"ltr\",\n      \"locale\": \"pt-BR\"\n    },\n    \"hi\": {\n      \"name\": \"हिन्दी\",\n      \"dir\": \"ltr\",\n      \"locale\": \"hi-IN\"\n    },\n    \"mr\": {\n      \"name\": \"मराठी\",\n      \"dir\": \"ltr\",\n      \"locale\": \"mr-IN\"\n    },\n    \"te\": {\n      \"name\": \"తెలుగు\",\n      \"dir\": \"ltr\",\n      \"locale\": \"te-IN\"\n    },\n    \"ta\": {\n      \"name\": \"தமிழ்\",\n      \"dir\": \"ltr\",\n      \"locale\": \"ta-IN\"\n    }\n  },\n  \"catalogs\": {\n    \"en\": {\n      \"telemetry.preferences\": \"Optional app reports\",\n      \"telemetry.summaryIntro\": \"Optional reports help us fix errors, improve performance and prioritize features. They are off until you choose them and exclude financial records and credentials. Change each choice in Settings at any time.\",\n      \"firstUse.receipt\": \"When you sign in, a copy of your acceptance and reporting choices is saved with your account. Local-only use keeps this receipt on this device.\",\n      \"about.receipt.title\": \"Your acceptance receipt\",\n      \"legal.terms\": \"Terms of Use\",\n      \"legal.privacy\": \"Privacy Notice\",\n      \"settings.gentle.reminders\": \"Optional reminders\",\n      \"reminders.availability\": \"Notifications require the Android or iOS app. Included in your 14-day trial; a monthly or annual subscription is required afterward.\",\n      \"bk.reportHelp\": \"Business cash flow by month and category.\",\n      \"bk.suppliersHelp\": \"Track suppliers, bill due dates, partial payments and unpaid balances.\",\n      \"bookkeeping.invoices\": \"Invoicing dashboard\",\n      \"app.bookkeeping\": \"Bookkeeping\",\n      \"shortcuts.title\": \"Transaction shortcuts\",\n      \"voice.purpose\": \"Use your microphone to turn spoken expenses into editable text for review before saving.\",\n      \"voice.privacy\": \"Speech recognition may send audio to its provider and require internet. Review the text before saving.\",\n      \"textEntry.reviewHelp\": \"Check the amount, category, account and date. Nothing is recorded until you save.\",\n      \"textEntry.title\": \"Text entry\",\n      \"voice.title\": \"Voice entry\",\n      \"tasks.quick\": \"Quick entry\",\n      \"overview.actionQuestion\": \"What should I do now?\",\n      \"tasks.reviewCash\": \"Review account balances\",\n      \"app.weekly.review\": \"Weekly review\",\n      \"bookkeeping.clients\": \"Client directory\",\n      \"bk.purchaseBills\": \"Purchase bills\",\n      \"bk.handoff\": \"Accountant handoff\",\n      \"bk.businessReport\": \"Business income and expenses\",\n      \"payment.record.a.payment\": \"Record a payment\",\n      \"app.main.navigation\": \"Main navigation\",\n      \"app.add.transaction\": \"Add transaction\",\n      \"workflow.editPlan\": \"Edit category plan\",\n      \"premium.subscriptionSummary\": \"14-day trial, then a renewing subscription. Paid offline access lasts up to 30 days, within your paid term.\",\n      \"app.everyday.account\": \"Everyday account\",\n      \"accounts.current.balance\": \"Current balance\",\n      \"domain.sample.a.little.peace.of.mind\": \"A little peace of mind\",\n      \"goals.list.inProgress\": \"In progress\",\n      \"screens.still.reserved\": \"Still reserved\",\n      \"screens.target.amount\": \"Target amount\",\n      \"sample.goal.car\": \"Car maintenance\",\n      \"screens.overdue\": \"Overdue\",\n      \"screens.includes.unpaid.past.bills.mark.paid.only.after.money\": \"Includes unpaid past bills. Mark paid only after money leaves your account.\",\n      \"app.reports\": \"Reports\",\n      \"reports.last.30.days\": \"Last 30 days\",\n      \"reports.recorded.income\": \"Recorded income\",\n      \"reports.net.recorded.spending\": \"Net recorded spending\",\n      \"reports.net.change.not.a.spending.estimate\": \"Net change\",\n      \"app.my.money\": \"My money\",\n      \"app.plans.goals\": \"Plans & goals\",\n      \"reports.available.to.allocate\": \"Available to allocate\",\n      \"sample.activity.tag\": \"Sample activity\",\n      \"tasks.multicurrency\": \"Multiple currencies\",\n      \"screens.your.first.goal.starts.with.a.small.intention\": \"Choose a savings target and a date to work toward.\",\n      \"premium.recurring.bill.schedules\": \"Recurring bill schedules\",\n      \"app.a.few.details.then.a.little.more.clarity\": \"Set up your accounts and protect your local budget.\",\n      \"manual.capture\": \"Receipts and log-later inbox\",\n      \"screens.manage.bill.schedules\": \"Manage bill schedules\",\n      \"planner.tools.start.a.weekly.review\": \"Start a weekly review\",\n      \"screens.funding.account\": \"Funding account\",\n      \"reports.saved.presets\": \"Saved report presets\",\n      \"reports.save.snapshot\": \"Save this report\",\n      \"ext.pdf\": \"Download PDF report\",\n      \"settings.encrypted.backup\": \"Encrypted backup\",\n      \"premium.your.budget.stays.local.this.account.restores.premium.access\": \"Your budget stays encrypted and local by default. A subscription continues access after the 14-day trial.\",\n      \"settings.save.an.encrypted.backup.somewhere.safe.moving.to.another\": \"Keep an encrypted backup off-device. Moving devices needs the file and password; browser storage may be erased.\",\n      \"cloud.title\": \"NiyaJar Cloud Backup\",\n      \"app.overview\": \"Home\",\n      \"app.trial.offer\": \"Try every NiyaJar feature for 14 days. Then choose a monthly or annual subscription to continue.\",\n      \"app.you.re.exploring.a.sample.changes.stay.in.this\": \"Sample budget — changes are temporary and will be lost when you refresh or leave the sample.\",\n      \"app.local.private\": \"Private by default\",\n      \"app.small.steps.meaningful.progress\": \"Start your household plan\",\n      \"app.start.with.what.you.have.make.a.plan.for\": \"Start with your account balances, then add bills and savings goals.\",\n      \"app.start.my.own.budget\": \"Start my own budget\",\n      \"app.create.my.budget\": \"Create my budget\",\n      \"app.preview.signIn\": \"After setup, sign in with your email to open your budget.\",\n      \"account.signIn\": \"Sign in\",\n      \"app.your.budget.stays.with.you\": \"Your budget stays with you\",\n      \"brand.descriptor\": \"A private household money planner\",\n      \"brand.tagline\": \"Plan your money around what matters.\",\n      \"common.learnMore\": \"Learn more\",\n      \"overview.coming.up.description\": \"A quick look at what's coming up.\",\n      \"screens.savings.goals\": \"Savings goals\",\n      \"screens.set.aside.for.goals\": \"Set aside for goals\",\n      \"screens.upcoming.bills\": \"Upcoming bills\",\n      \"screens.your.accounts\": \"Your accounts\",\n      \"screens.your.transactions\": \"Your transactions\",\n      \"premium.spending.and.goal.progress.reports\": \"Spending and goal progress reports\",\n      \"premium.every.goal.in.one.place\": \"Multiple active savings goals\",\n      \"premium.subscriptionTerms\": \"The trial lasts 14 days from activation. Monthly and annual subscriptions renew automatically; annual billing is one payment for the year. Checkout shows the local price and taxes. Verified paid access works offline for up to 30 days, never beyond the verified subscription expiry; reconnect to renew verification. Cancel through your payment service to keep access until the paid term ends. Immediate termination and refunds follow applicable rights and the purchasing platform’s process.\",\n      \"premium.purchases.are.not.available.in.this.preview.pricing.and\": \"Subscriptions are unavailable right now. You can still view, export and back up your saved records.\",\n      \"reports.see.the.bigger.picture\": \"See the bigger picture\",\n      \"premium.the.sample.lets.you.explore.premium.features.without.a\": \"Explore every feature with example data. Changes here do not affect your own budget.\",\n      \"premium.freePlan\": \"14-day trial: every NiyaJar feature. A subscription is required after the trial.\",\n      \"cloud.monthly\": \"US${monthly} / month\",\n      \"cloud.annual\": \"US${annual} / year\",\n      \"cloud.description\": \"Your household shares 10 GB. Members cannot read each other’s backups.\",\n      \"cloud.storagePool\": \"{capacity} GB shared household storage\",\n      \"cloud.storageHelp\": \"Receipt files are reused. Reduced storage limits uploads to your remaining allowance; saved backups remain. Prices are estimates until purchasing is available.\",\n      \"cloud.upgradeStorage\": \"Review storage upgrades\",\n      \"cloud.subscription.required\": \"An active trial or subscription is required for cloud backup.\",\n      \"nav.subscription\": \"Subscription\",\n      \"settings.contact.support\": \"Contact support\",\n      \"settings.language\": \"Language\",\n      \"deletion.title\": \"Account deletion\",\n      \"deletion.request\": \"Request deletion by email\",\n      \"deletion.verification\": \"Email us from the address linked to your NiyaJar account and ask us to delete it. We will verify ownership before proceeding. If you cannot access that email address, explain this so we can discuss verification. Never send passwords, recovery keys, sign-in codes, financial records or backup files.\",\n      \"deletion.effects\": \"Account deletion removes your sign-in, paid-access association and account-owned cloud copies. Export needed records first. Your local budget and surviving household members’ shared copies remain. Web Stripe renewal is stopped during deletion; Apple and Google subscriptions must be cancelled separately. Deletion does not itself request a refund.\",\n      \"deletion.retention\": \"Payment records required by law and limited request or security records may be retained. Service logs and backups may remain until their retention periods end. Support will explain any retained data and applicable timing when handling your request.\",\n      \"deletion.billing\": \"Cancellation and refunds\",\n      \"deletion.cancellation\": \"Uninstalling does not cancel billing. Stop renewal through your purchasing service or contact support. Account deletion stops web Stripe renewal; cancel Apple or Google subscriptions separately. Stopping renewal normally preserves access until the paid term ends. Immediate termination and refunds follow applicable rights.\",\n      \"deletion.seller\": \"NiyaJar by Dyno Automate LTD.\",\n      \"deletion.email\": \"support@niyajar.com\",\n      \"deletion.apple\": \"Apple App Store\",\n      \"deletion.google\": \"Google Play\",\n      \"household.continuityHelp\": \"Account deletion preserves the shared household. Appointing a successor authorizes them, after acceptance, to claim ownership later without another approval. Payment and private access stay separate.\",\n      \"help.title\": \"Setup, recovery and purchase help\",\n      \"help.setup\": \"Set up my budget\",\n      \"help.setup.body\": \"Create your budget, choose its currency, and save your password and recovery key safely outside this device. Add current balances with their dates, then upcoming commitments and goals. Complete a weekly review; expected income is not available cash.\",\n      \"help.loss\": \"I lost my password\",\n      \"help.loss.body\": \"Do not uninstall NiyaJar or clear its storage. If device unlock works, open your budget and save an encrypted backup. Otherwise, use your saved recovery key on the lock screen, if recovery was enabled, or restore a backup using its password. A recovery key cannot replace lost data. Without encrypted data and a working password or recovery key, recovery is not possible.\",\n      \"help.secrets\": \"Email sign-in cannot reset encryption secrets. Never send support your password, recovery key, email code, backup file or financial records.\",\n      \"help.manual\": \"Save or restore a manual backup\",\n      \"help.manual.body\": \"Back up in Settings with a separate password. Keep both off-device. Back up and verify important changes. Excludes drafts and purchase identity.\",\n      \"help.restore.body\": \"Enter the backup password, review and confirm. Restore replaces data; back up first.\",\n      \"help.purchase\": \"Restore a purchase\",\n      \"help.purchase.body\": \"Connect to the internet. In Settings, open Account & subscription, sign in with the NiyaJar account used for the purchase, and choose Restore purchases. On mobile, also check the purchasing Apple or Google account. If access is still missing, contact support before buying again. Restoring a purchase restores subscription access, not your budget.\",\n      \"public.tools.your.first.weekly.plan\": \"Your first weekly plan\",\n      \"public.tools.record.balances.as.of.a.date\": \"Record balances as of a date.\",\n      \"public.tools.add.upcoming.bills.and.savings.goals\": \"Add upcoming bills and savings goals.\",\n      \"public.tools.resolve.payments.then.confirm.balances\": \"Resolve payments, then confirm balances.\",\n      \"public.tools.export.and.verify.an.encrypted.backup\": \"Export and verify an encrypted backup.\",\n      \"limits.currency\": \"Budget currency is permanent. Accounts in other currencies need a dated exchange rate.\",\n      \"security.backupExplanation\": \"A recovery key helps with a forgotten password. An encrypted backup stored outside this device protects against a lost phone, uninstall, or cleared storage. Save and verify a backup now.\",\n      \"limits.snapshot\": \"Restoring replaces this device’s budget; changes from two devices are not combined. Save a backup of your current data first.\",\n      \"help.automatic\": \"Use automatic cloud backup\",\n      \"help.automatic.body\": \"Sign in during your trial or subscription, save your recovery key and turn on uploads in Settings. Cloud Backup saves copies; it does not keep devices up to date together. Choose Back up now and check the date of the latest online copy.\",\n      \"cloud.schedule\": \"Backups run only while NiyaJar is open and online: one minute after changes settle, at most once per hour. A lock/background upload is best effort and may be interrupted. Before removing the app or changing devices, open NiyaJar, choose Back up now, and confirm the latest server backup date.\",\n      \"cloud.restoreHelp\": \"Restore a downloaded cloud backup from the lock screen. Use your recovery key or the budget password that was in use when that backup was created.\",\n      \"limits.account\": \"Sign in to download or restore encrypted copies with their password or recovery key. Restoring purchases restores access only; support cannot decrypt data.\",\n      \"help.expiry\": \"After a subscription expires\",\n      \"help.expiry.body\": \"When your trial or subscription ends, the workspace becomes read-only. Existing records remain viewable; manual backup, restoration, export, recovery and account management remain accessible. Subscribe monthly or yearly to continue editing and using all features. Canceling renewal and deleting your account are different actions.\",\n      \"cloud.retention\": \"Copies remain downloadable for at least 90 days after paid access ends. Deletion waits at least 30 days after confirmed email delivery and until its stated date. Download or renew first. Local/manual copies remain; verified account deletion skips this wait.\",\n      \"limits.retentionTrigger\": \"The retention period starts when paid access ends, not when you stop renewal. Inactivity or uninstalling does not start expiry cleanup. Uninstalling does not cancel billing.\",\n      \"review.record.payments.you.have.already.made.or.link.expenses\": \"Record completed payments or link existing expenses, then confirm balances. Future bills can stay open.\",\n      \"help.cancel\": \"Manage or cancel a subscription\",\n      \"help.cancel.body\": \"Connect to the internet. In Settings, open Account & subscription, sign in with the purchasing NiyaJar account, and choose Manage subscription. This opens the service where you purchased: Stripe for web purchases, Google Play for Android, or Apple subscriptions for iPhone and iPad. Follow its cancellation steps and check the confirmation and access end date.\",\n      \"settings.purchases.restoration\": \"Account & subscription\",\n      \"premium.restore.purchases\": \"Restore purchases\",\n      \"household.manageBilling\": \"Manage subscription\",\n      \"deletion.household\": \"If you own a shared household, review its ownership and successor settings before requesting deletion. Deleting your account does not delete the shared household. Household ownership, subscription payments and access to private records are separate.\",\n      \"deletion.refunds\": \"Request a refund\",\n      \"deletion.refundHelp\": \"Use the Apple or Google refund links for store purchases. For web purchases or statutory remedies, contact support with the purchasing platform and order reference, if available. Web annual subscriptions allow an unused-day prorated refund on immediate termination. Mandatory consumer rights remain available. Never send passwords, recovery keys or full card details.\",\n      \"deletion.appleRefund\": \"Apple refund requests\",\n      \"deletion.googleRefund\": \"Google Play refund requests\",\n      \"site.availability\": \"Availability\",\n      \"site.comingSoon\": \"Coming soon\",\n      \"site.later\": \"Later\",\n      \"site.iosLater\": \"Planned after web and Android.\",\n      \"site.availableNow\": \"Available now\",\n      \"site.features\": \"Features\",\n      \"site.pricing\": \"Pricing\",\n      \"site.sample\": \"Illustrative app preview · sample values\",\n      \"site.trial\": \"14-day trial\",\n      \"site.devices\": \"Phone, tablet, and desktop\",\n      \"site.tabletCopy\": \"Responsive browser layouts support tablets and iPads. The native iOS app is planned for a later release.\",\n      \"site.storageExtra\": \"Optional storage purchases add capacity to your subscription. They do not replace the base subscription.\",\n      \"site.proposed\": \"Proposed USD prices\",\n      \"site.checkoutNotice\": \"Purchases will be available at launch. Checkout confirms the final local price and taxes.\",\n      \"site.billingDetails\": \"Subscription details\",\n      \"site.languageCount\": \"21 languages\",\n      \"site.pricingHeadline\": \"Every feature. One subscription.\",\n      \"site.viewPricing\": \"View pricing\",\n      \"site.signUp\": \"Sign up\",\n      \"site.skipToContent\": \"Skip to content\",\n      \"site.home\": \"NiyaJar home\",\n      \"site.supportNavigation\": \"Site and support\",\n      \"site.relatedHelp\": \"Related help\",\n      \"site.reminderDescription\": \"Get optional reminders for scheduled bills and sent, unpaid invoices.\",\n      \"site.reportingScope\": \"The app asks you to accept its Terms and acknowledge its Privacy Notice. Visiting this website does not grant app reporting consent.\",\n      \"site.heroHeadline\": \"Know what’s left after bills and savings.\",\n      \"site.heroLead\": \"Start with your current balances. Plan upcoming bills and savings goals before deciding what to spend.\",\n      \"site.languageLoadError\": \"This language could not be loaded. Try again.\",\n      \"site.termsDraft\": \"Terms of Use (draft)\",\n      \"site.appPrivacyDraft\": \"App Privacy Notice (draft)\",\n      \"site.learn\": \"Learn\",\n      \"learn.title\": \"Learn NiyaJar\",\n      \"learn.intro\": \"Step-by-step guides for everyday money tasks.\",\n      \"learn.readGuide\": \"Read guide\",\n      \"learn.allGuides\": \"All guides\",\n      \"learn.onThisPage\": \"On this page\",\n      \"learn.related\": \"Related guides\",\n      \"learn.recoveryHelp\": \"Need help with a lost passphrase or recovery?\",\n      \"learn.step.choose\": \"Choose {control}.\",\n      \"learn.step.select\": \"Choose {value} for {field}.\",\n      \"learn.step.enter\": \"Enter {value} in {field}.\",\n      \"learn.step.complete\": \"Complete {field}.\",\n      \"learn.step.check\": \"Check {field}.\",\n      \"learn.savedHelp\": \"Wait for save confirmation. If an error appears, correct it before continuing.\",\n      \"learn.balanceExample\": \"Example balance: {start} − {expense} = {balance}.\",\n      \"learn.loading\": \"Loading the guide…\",\n      \"learn.loadError\": \"The guide could not be loaded. Try again.\",\n      \"learn.retry\": \"Try again\",\n      \"learn.guideNotice\": \"Screenshots use fictional data. Mobile navigation and file pickers may differ.\",\n      \"learn.screenshotCaption\": \"Fictional data. Select the image to view it at full size.\",\n      \"site.calculator\": \"Calculator\",\n      \"calculator.title\": \"Financial Health Calculator\",\n      \"calculator.intro\": \"See where your money stands. A few numbers can help you understand your monthly balance, savings, and emergency cushion.\",\n      \"calculator.free\": \"Free tool · no sign-up needed\",\n      \"calculator.formTitle\": \"Start with your numbers\",\n      \"calculator.formHelp\": \"Use monthly amounts in one currency. Enter 0 where a cost or saving does not apply.\",\n      \"calculator.currency\": \"Currency\",\n      \"calculator.currencyHelp\": \"Changes the display currency, without converting amounts.\",\n      \"calculator.income\": \"Monthly take-home income\",\n      \"calculator.incomeHelp\": \"After-tax income. Average irregular earnings over a typical month.\",\n      \"calculator.expenses\": \"Monthly living expenses\",\n      \"calculator.expensesHelp\": \"All living costs, excluding debt payments and savings below.\",\n      \"calculator.debt\": \"Monthly debt payments\",\n      \"calculator.debtHelp\": \"Loan, credit card, and mortgage payments. Count each payment only once.\",\n      \"calculator.savings\": \"Monthly savings contributions\",\n      \"calculator.savingsHelp\": \"Money set aside from take-home pay, including investments and emergency savings.\",\n      \"calculator.emergency\": \"Emergency savings balance\",\n      \"calculator.emergencyHelp\": \"Accessible emergency savings available today, rather than monthly contributions.\",\n      \"calculator.exampleNotice\": \"These are example amounts. Replace them with your own numbers.\",\n      \"calculator.calculate\": \"Calculate my snapshot\",\n      \"calculator.example\": \"Try an example\",\n      \"calculator.reset\": \"Clear amounts\",\n      \"calculator.results\": \"Your monthly snapshot\",\n      \"calculator.empty\": \"Add your numbers and calculate, or try an example to see how it works.\",\n      \"calculator.validation\": \"Complete every amount with a non-negative number and up to two decimal places. Income must be greater than zero.\",\n      \"calculator.balance\": \"Monthly balance\",\n      \"calculator.balanced\": \"Your income covers this plan\",\n      \"calculator.deficit\": \"This plan exceeds your income\",\n      \"calculator.balanceHelp\": \"What remains after living expenses, debt payments, and savings contributions.\",\n      \"calculator.savingsRate\": \"Savings rate\",\n      \"calculator.savingsRateHelp\": \"Savings contributions ÷ take-home income.\",\n      \"calculator.debtShare\": \"Debt payment share\",\n      \"calculator.debtShareHelp\": \"Debt payments ÷ take-home income. Lenders use a different debt-to-income calculation.\",\n      \"calculator.buffer\": \"Emergency cushion\",\n      \"calculator.bufferHelp\": \"How long emergency savings could cover living expenses and debt payments.\",\n      \"calculator.target\": \"Progress toward your {months}-month target\",\n      \"calculator.gap\": \"Still needed for this target: {amount}.\",\n      \"calculator.targetReached\": \"Your savings meet this emergency fund target.\",\n      \"calculator.noExpenses\": \"Add living expenses or debt payments to estimate emergency cover.\",\n      \"calculator.privacy\": \"Your amounts stay on this page. Nothing is saved or sent to a server.\",\n      \"calculator.method\": \"How this calculator works\",\n      \"calculator.sourceHelp\": \"Choose a target that suits your needs. Canada's Financial Consumer Agency suggests 3 to 6 months of regular expenses as a starting point.\",\n      \"calculator.note\": \"An educational estimate, not financial advice or a credit score. This snapshot does not assess your full financial situation.\",\n      \"calculator.updated\": \"Results updated.\",\n      \"calculator.methodIntro\": \"Four simple measures. A clearer picture of your money.\",\n      \"calculator.targetChoice\": \"Emergency savings target\",\n      \"calculator.targetHelp\": \"Choose how many months of expenses your emergency fund should cover.\",\n      \"calculator.balanceFormula\": \"Income − expenses − debt payments − savings\",\n      \"calculator.debtFormula\": \"Debt payments ÷ take-home income × 100\",\n      \"calculator.bufferFormula\": \"Emergency savings ÷ (expenses + debt payments)\",\n      \"calculator.savingsFormula\": \"Savings contributions ÷ take-home income × 100\",\n      \"calculator.targetFormula\": \"Target = (expenses + debt payments) × chosen months\",\n      \"calculator.next.title\": \"Your next steps\",\n      \"calculator.next.deficit.title\": \"Bring the month back into balance\",\n      \"calculator.next.deficit.body\": \"Your plan is {amount} over income. Check your figures and flexible spending while protecting essential costs and required payments.\",\n      \"calculator.next.tight.title\": \"Give your plan some breathing room\",\n      \"calculator.next.tight.body\": \"Your plan uses all of your income. Allow for irregular costs before adding commitments.\",\n      \"calculator.next.surplus.title\": \"Give your remaining money a purpose\",\n      \"calculator.next.surplus.body\": \"Your plan leaves {amount}. Give it a purpose: upcoming costs, savings, or debt repayments.\",\n      \"calculator.next.buffer.title\": \"Build toward your emergency target\",\n      \"calculator.next.buffer.body\": \"Your target needs {amount} more. Review what your budget allows before choosing a regular contribution.\",\n      \"calculator.next.bufferMet.title\": \"Keep your cushion ready\",\n      \"calculator.next.bufferMet.body\": \"Your savings meet your chosen target. Review it whenever your living costs change.\",\n      \"calculator.next.costs.title\": \"Check your monthly costs\",\n      \"calculator.next.costs.body\": \"Add regular living costs and debt payments to get a meaningful emergency coverage estimate.\",\n      \"calculator.next.debt.title\": \"Review your debt commitments\",\n      \"calculator.next.debt.body\": \"{percent} of take-home income goes to debt payments. Review due dates, balances, and interest costs.\",\n      \"calculator.next.savings.title\": \"Start a regular saving habit\",\n      \"calculator.next.savings.body\": \"No monthly savings are planned. If your budget allows, start with an amount you can sustain.\",\n      \"wellbeing.optional\": \"Optional checkup\",\n      \"wellbeing.title\": \"Financial wellbeing checkup\",\n      \"wellbeing.intro\": \"A personal review beyond the monthly numbers. Skip any area you are unsure about. Your answers stay on this page.\",\n      \"wellbeing.yes\": \"Yes\",\n      \"wellbeing.working\": \"Not yet\",\n      \"wellbeing.unsure\": \"Not sure / skip\",\n      \"wellbeing.submit\": \"Review my answers\",\n      \"wellbeing.reset\": \"Clear checkup\",\n      \"wellbeing.validation\": \"Choose an answer for at least one area, or leave the checkup for later.\",\n      \"wellbeing.results\": \"Your checkup\",\n      \"wellbeing.inPlace\": \"In place\",\n      \"wellbeing.review\": \"To review\",\n      \"wellbeing.skipped\": \"Skipped or unsure\",\n      \"wellbeing.keepGoing\": \"Review these areas as life changes. Revisit skipped questions whenever you are ready.\",\n      \"wellbeing.updated\": \"Checkup updated.\",\n      \"wellbeing.bills.title\": \"Bill payments\",\n      \"wellbeing.bills.question\": \"I can pay my bills by their due dates.\",\n      \"wellbeing.bills.advice\": \"Put bill due dates beside your income dates and review the coming month.\",\n      \"wellbeing.debt.title\": \"Manageable debt\",\n      \"wellbeing.debt.question\": \"I can manage my debt payments, or have no debt.\",\n      \"wellbeing.debt.advice\": \"List balances, payment dates, and interest costs to see what needs attention.\",\n      \"wellbeing.goals.title\": \"Longer-term goals\",\n      \"wellbeing.goals.question\": \"I regularly set money aside for my longer-term goals.\",\n      \"wellbeing.goals.advice\": \"Choose one longer-term goal and a regular contribution your monthly budget can support.\",\n      \"wellbeing.protection.title\": \"Financial protection\",\n      \"wellbeing.protection.question\": \"I have reviewed how insurance or other support would cover a major setback.\",\n      \"wellbeing.protection.advice\": \"Review your cover, exclusions, and other support for a major financial setback.\",\n      \"wellbeing.planning.title\": \"Planning ahead\",\n      \"wellbeing.planning.question\": \"I plan for irregular costs and upcoming expenses.\",\n      \"wellbeing.planning.advice\": \"Add irregular expenses to your plan before deciding how much is available.\",\n      \"wellbeing.confidence.title\": \"Money confidence\",\n      \"wellbeing.confidence.question\": \"I understand my finances well enough to choose my next step.\",\n      \"wellbeing.confidence.advice\": \"Review one account or bill at a time, and ask for help where needed.\",\n      \"websitePrivacy.title\": \"Website privacy\",\n      \"websitePrivacy.scope\": \"This notice covers the public NiyaJar website and calculator. App accounts, subscriptions and financial records have separate app notices and choices.\",\n      \"websitePrivacy.operator\": \"NiyaJar is provided by Dyno Automate LTD., operating from British Columbia, Canada.\",\n      \"websitePrivacy.hostingHeading\": \"Hosting and security\",\n      \"websitePrivacy.hosting\": \"Cloudflare hosts this site. Requests expose your IP address, browser, requested page and security information to deliver and protect the website. This processing continues when optional analytics is off.\",\n      \"websitePrivacy.localHeading\": \"Calculator and browser storage\",\n      \"websitePrivacy.local\": \"Calculator values and checkup answers stay in your browser; the calculator does not save or send them. Your chosen language and analytics choice are saved in this browser. Clearing website storage removes these choices.\",\n      \"websitePrivacy.analyticsHeading\": \"Optional web analytics\",\n      \"websitePrivacy.analytics\": \"Cloudflare Web Analytics is off until you choose to enable it below. It measures page visits, browser/device categories and page performance. Requests can reveal your IP address to the provider. We do not attach calculator inputs, entered text, account details or financial records. This choice is separate from app reporting.\",\n      \"websitePrivacy.supportHeading\": \"Support email\",\n      \"websitePrivacy.support\": \"If you email us, we and our email provider handle your address and message to answer the request. Never send passwords, recovery keys, sign-in codes or financial records.\",\n      \"websitePrivacy.rightsHeading\": \"Your information and choices\",\n      \"websitePrivacy.rights\": \"Contact support@niyajar.com to ask about access, correction, deletion or an objection to processing. We verify requests proportionately. Your legal rights and available complaint routes depend on applicable law; you may contact your local privacy regulator.\",\n      \"websitePrivacy.retention\": \"We retain service/security records and support messages only as needed for their purpose, legal recordkeeping or a dispute. Provider logs and backups follow their own retention cycles. Providers may process information outside your country. Contact us for the handling and timing applicable to your request.\",\n      \"websitePrivacy.updated\": \"Notice version: website-2026-11-04. Applies to this website release.\",\n      \"websiteAnalytics.enable\": \"Enable website analytics\",\n      \"websiteAnalytics.disable\": \"Turn off website analytics\",\n      \"websiteAnalytics.on\": \"Website analytics is on in this browser.\",\n      \"websiteAnalytics.off\": \"Website analytics is off in this browser.\",\n      \"websiteAnalytics.withdraw\": \"You can change this choice here from any website footer. Turning analytics off reloads the page to stop further reports. Reports already sent or in progress cannot be recalled. Clearing browser storage returns the choice to off.\",\n      \"websiteAnalytics.storageError\": \"Your choice could not be saved. Website analytics remains off. Check your browser storage settings to change this choice.\",\n      \"websitePrivacy.notices\": \"Third-party notices\",\n      \"websitePrivacy.appDraft\": \"Publication candidate — not yet effective. English is the source draft. Translations are working drafts and await review. The public website has its own privacy notice and separate optional analytics choice.\",\n      \"websitePrivacy.providerPrivacy\": \"Provider privacy policy\",\n      \"websiteBanner.title\": \"Optional web analytics\",\n      \"websiteBanner.body\": \"With your permission, site analytics measures page visits and performance. The provider receives network information such as your IP address. Your choice covers optional website analytics only.\",\n      \"websiteBanner.accept\": \"Accept all\",\n      \"websiteBanner.reject\": \"Reject all\",\n      \"websiteBanner.manage\": \"Website privacy and settings\",\n      \"websiteBanner.withdraw\": \"You can change your choice at any time in Website privacy.\",\n      \"appLegal.status\": \"Publication candidate — not yet effective.\",\n      \"appLegal.review\": \"These app documents await final legal and service-provider review. They do not enable public app access, checkout or a worldwide service offer, and are not used for agreement acceptance. Prepared 4 November 2026; source version app-candidate-2026-11-04.\",\n      \"appLegal.translation\": \"English is the source draft. Translations are working drafts and await review. The public website has its own privacy notice and separate optional analytics choice.\",\n      \"appLegal.terms.title\": \"Proposed app Terms of Use\",\n      \"appLegal.terms.block000\": \"Provider, eligibility and agreement\",\n      \"appLegal.terms.block001\": \"NiyaJar is supplied by **Dyno Automate LTD.**, operating from British Columbia, Canada. Business notice address: **601-9320 Parksville Drive, Richmond, BC, V7E 4W2, Canada**. Contact: **support@niyajar.com**.\",\n      \"appLegal.terms.block002\": \"The intended service is for adults who are at least 18 and have reached the age of majority where they live; in BC this means at least 19.  Public help can be viewed without an account.\",\n      \"appLegal.terms.block003\": \"The app presents the Terms for acceptance and Privacy Notice for acknowledgment. Optional reports remain separate choices, not a condition of planner use. Browsing the website does not accept this app agreement. A release configured with account services requires sign-in for the real planner and access verification; sign-in does not authorize cloud uploads.\",\n      \"appLegal.terms.block004\": \"Product scope and estimates\",\n      \"appLegal.terms.block005\": \"NiyaJar is a household planning and recordkeeping tool with optional bookkeeping, invoicing, giving and assessment tools. Estimates depend on your inputs. Expected income is not available cash. The app cannot observe unrecorded transactions, outside assets or changes in your circumstances. Verify the inputs and result before relying on them.\",\n      \"appLegal.terms.block006\": \"The app does not connect to a bank, hold or transfer money, manage investments, file taxes, produce statutory accounts or create an adviser-client relationship. User-rate tax reserves, cash reports, exchange-rate records and invoices need review against the rules that apply to you. Generating an invoice or export does not establish legal or accounting compliance.\",\n      \"appLegal.terms.block007\": \"Zakat/nisab/hawl and legacy giving worksheets use their stated methodology and have not been independently approved by a qualified religious or financial adviser. Saved observations cannot establish unknown continuity in wealth; fixed lunar/solar periods are not a general calendar converter. Review the method and your circumstances with an appropriate adviser.\",\n      \"appLegal.terms.block008\": \"Trial, subscriptions and prices\",\n      \"appLegal.terms.block009\": \"The 14-day trial includes all product records/review tools and manual backup, restore, export and local deletion. Trial eligibility uses account verification and the disclosed repeat-trial control. The trial does not itself charge a card; a subscription requires a separate purchase through an offered checkout.\",\n      \"appLegal.terms.block010\": \"Repeat-trial identity protection lasts 24 months after the most recent validated eligibility check. Existing accounts keep their original trial date; a new account can qualify after that identity has had no validated check for 24 months. Legacy identity records without a known last-check date begin this period when the retention migration is applied. The Privacy Notice explains pseudonymous hashes, source-approved retention and pending production verification.\",\n      \"appLegal.terms.block011\": \"The base reference price is **US$9.99 monthly or US$99.99 annually**. Annual billing is one full-year payment. Actual currency, price, applicable taxes, interval, automatic renewal and the management route must appear before purchase. Review the payment service's final amount. Any monthly equivalent of an annual price is explanatory rather than the charge.\",\n      \"appLegal.terms.block012\": \"Both intervals provide the same base features and optional encrypted cloud backup in an included 10 GB pool. A standalone subscriber has this allowance; a covered household shares it across member accounts without granting access to other members' private backups. Optional storage add-ons buy extra capacity, require the base subscription and have separately disclosed recurring prices. There is no lifetime purchase, permanent free editing tier, separate backup-feature subscription or promise of unbuilt bank connections.\",\n      \"appLegal.terms.block013\": \"After trial or paid access ends the workspace becomes read-only. Existing records remain viewable; manual backup, restore, export, recovery, local deletion and account management stay available. Editing and paid features need current access. Losing Premium does not authorize destroying local records.\",\n      \"appLegal.terms.block014\": \"Verified paid access can work offline for at most 30 days after verification and never beyond verified paid/grace access. Reconnect to refresh. Annual payment does not promise a full year without verification. A disconnected device learns about later revocations or refunds when verification refreshes or its cached access ends.\",\n      \"appLegal.terms.block015\": \"Optional storage and sync\",\n      \"appLegal.terms.block016\": \"Purchasing does not enable uploads. Cloud backup, receipt/inbox inclusion and personal sync use their separate app choices. Uploads require connectivity. Automatic activity runs while the app is open; lock/background attempts can be interrupted. Confirm a successful server copy before uninstalling or changing devices. Recovery storage, personal sync and household sync serve different purposes and can require conflict review.\",\n      \"appLegal.terms.block017\": \"The pool counts retained encrypted snapshots, included receipt objects and pending/deleting objects. Ordinary rotation uses up to 24 hourly, 30 daily and three monthly recovery buckets, with overlap, latest-copy protection and bounded migration checkpoints. Current sync copies and protected conflicts have separate lifecycles. Deleting a current record does not rewrite older recovery copies.\",\n      \"appLegal.terms.block018\": \"Personal sync can include private ledgers and subsequent recovery snapshots in your own account. Receipts still need their separate choice. Shared household projections exclude private ledgers; a shared export does not cover everything. Review the app's backup scope for the intended recovery.\",\n      \"appLegal.terms.block019\": \"Household roles and continuity\",\n      \"appLegal.terms.block020\": \"A household supports an owner and up to five invited accounts, one shared budget per account, with a 5 MB shared ciphertext limit. Members can read shared records; editors can change them. Understand visibility before sharing. Removing a member cannot erase a downloaded copy.\",\n      \"appLegal.terms.block021\": \"Household-private ledgers use separate keys and manual household-private cloud copies, distinct from optional account-private personal sync. Keep the appropriate private backup. Shared history is limited to ten versions available for thirty days, pruned on access/write, rather than an immutable audit trail.\",\n      \"appLegal.terms.block022\": \"Ownership transfer requires acceptance and leaves the previous owner an editor. It does not transfer a subscription. A current member can separately accept payment responsibility with their own subscription. Sponsorship covers advanced planning and the shared private-backup pool without access to members' private contents.\",\n      \"appLegal.terms.block023\": \"Owner-account deletion preserves the household for surviving members. Accepted succession or unanimous recovery can restore ownership under the disclosed app rules. Household deletion is separate and uses its own notices/retention. Choose participants and distribute connection secrets carefully.\",\n      \"appLegal.terms.block024\": \"Cancellation, termination and refunds\",\n      \"appLegal.terms.block025\": \"Cancellation requests carry no NiyaJar cancellation fee. Stopping renewal normally preserves access through the paid period. Immediate termination and refund requests are separate; applicable consumer rights may require another outcome. Confirm renewal, refund amount/currency, payment route and access end after the provider confirms them.\",\n      \"appLegal.terms.block026\": \"For direct-web Stripe subscriptions use **Manage subscription** or email support@niyajar.com. Manage Apple subscriptions through [Apple](https://apps.apple.com/account/subscriptions) and Google purchases through [Google Play](https://play.google.com/store/account/subscriptions). Direct requests and statutory remedies remain available where required, including when a platform control is unavailable. Provide platform/order reference if available; never email card details or financial records.\",\n      \"appLegal.terms.block027\": \"For direct-web annual purchases, the selected operating policy offers unused-time prorated refunds on explicit immediate termination, calculated using actual unused days at the annual price paid, with tax adjustments. Used time is not repriced at the monthly rate. More favorable mandatory rights or advertised promises still apply. Refunds are operator-handled; a request is not a completed refund.\",\n      \"appLegal.terms.block028\": \"Apple refund requests use [Apple's process](https://reportaproblem.apple.com/); Google help is at [Google Play](https://support.google.com/googleplay/answer/2479637). Native-store refunds use available platform processes while preserving the seller's mandatory obligations. A store deadline does not universally end rights against NiyaJar. Contact support for unresolved or statutory requests. There is no universal full-refund guarantee or blanket no-refund exclusion.\",\n      \"appLegal.terms.block029\": \"Uninstalling or disabling uploads does not cancel billing. Successful account deletion stops direct-web Stripe renewal; Apple/Google billing needs separate cancellation. Deletion itself does not request a refund. A partially failed deletion is not confirmation that cancellation completed.\",\n      \"appLegal.terms.block030\": \"Covered products must receive required pre-renewal notices and a retainable contract confirmation. Backup-expiry notices are different. Rights, statutory formulas and deadlines depend on applicable law and channel. No store process or clause here excludes non-waivable customer protections.\",\n      \"appLegal.terms.block031\": \"Expiry and recovery\",\n      \"appLegal.terms.block032\": \"After verified paid access ends, uploads stop. Retained copies remain downloadable for **at least 90 days after paid access ends**. Expiry cleanup also waits **at least 30 days after confirmed advance-notice delivery** and never precedes its stated date. Every current household member must be notified. Failed delivery can extend retention. Renewing cannot recover copies whose deletion was committed after the deadline.\",\n      \"appLegal.terms.block033\": \"Verified account deletion removes account-owned cloud copies without that expiry wait. It does not remotely delete local records, exported files, other members' downloaded copies or the surviving shared household. Payment services and necessary legal/security records have separate retention described by the Privacy Notice.\",\n      \"appLegal.terms.block034\": \"You retain rights in your records. You authorize only processing needed for the services you request, their safeguards and legal duties; this is not a permission to sell your ledger or use it for advertising. For other people's information, have appropriate authority to enter and share it.\",\n      \"appLegal.terms.block035\": \"Protect devices, sign-in access, decryption secrets and exports. A recovery key without a surviving usable copy cannot recreate data. Email sign-in and restored purchases cannot decrypt a vault. Restoration can replace local records; review the confirmation and retain a separate copy. Support must never request decryption secrets, sign-in codes or private financial files. These responsibilities do not excuse failures for which applicable law holds NiyaJar responsible.\",\n      \"appLegal.terms.block036\": \"Use, software rights and support\",\n      \"appLegal.terms.block037\": \"Use services lawfully. Do not access other accounts without permission, distribute others' secrets, attack availability or bypass server authorization/storage limits. Service restrictions must be proportionate to an actual breach, fraud, security risk or legal duty. Preserve local records and available export/recovery. Where practical and lawful, explain the reason and review route for a restriction.\",\n      \"appLegal.terms.block038\": \"Software and branding remain the rights of their owners. Released software is licensed subject to these terms and applicable store license terms. Third-party components keep their licenses/notices; nothing limits rights granted by those licenses or mandatory law. No ownership in your records transfers to NiyaJar.\",\n      \"appLegal.terms.block039\": \"Support@niyajar.com handles product, access, billing and privacy questions. Support is not financial, tax, legal or religious advice. This draft promises no response SLA, continuous availability, unlimited coaching or ability to decrypt unavailable records. Store terms allocate store support/refund responsibilities subject to mandatory rights.\",\n      \"appLegal.terms.block040\": \"Changes, discontinuation and disputes\",\n      \"appLegal.terms.block041\": \"Identify material changes and their effective date, provide required notice and obtain agreement or offer cancellation where law requires it. Updated terms must not withhold access to existing local records or available export/recovery. A privacy-notice update is not blanket permission for new optional processing. Changes to purchased service remain subject to required notice and remedies.\",\n      \"appLegal.terms.block042\": \"If service is discontinued, provide legally required notice and a practical export opportunity where possible, with required unused-service remedies. No indefinite hosted service or ownership of all future features is promised. A change does not authorize destruction of local records.\",\n      \"appLegal.terms.block043\": \"These terms do not exclude statutory consumer guarantees, remedies or liabilities that cannot be excluded. They introduce no compulsory arbitration, class-action waiver, review ban or unsupported universal liability cap. Support can help resolve complaints; contacting it is not a condition of exercising a right. Mandatory laws and competent courts remain available.\",\n      \"appLegal.terms.block044\": \"Institutional/sponsor services, workshops and creator commissions require separate agreements if offered. These consumer terms grant no organization access to private ledgers and promise no unimplemented seat management or child accounts.\",\n      \"appLegal.privacy.title\": \"Proposed app Privacy Notice\",\n      \"appLegal.privacy.block000\": \"Who provides NiyaJar\",\n      \"appLegal.privacy.block001\": \"NiyaJar is provided by **Dyno Automate LTD.**, operating from British Columbia, Canada. Business notice address: **601-9320 Parksville Drive, Richmond, BC, V7E 4W2, Canada**. Contact **support@niyajar.com** for privacy questions, requests or complaints.\",\n      \"appLegal.privacy.block002\": \"This notice covers the web, Android and iOS apps and their account, subscription, storage and sharing services. Browsing the public website does not accept app terms or enable app reports. The website's separate privacy notice covers its hosting, language preference and optional website analytics.\",\n      \"appLegal.privacy.block003\": \"Information you keep in the planner\",\n      \"appLegal.privacy.block004\": \"Your working records are encrypted on your device. Depending on your chosen tools, they can include balances, transactions, debts, goals, giving or religious assessments, receipts, notes, places, clients, invoices, suppliers, trips, property, equipment and other household or bookkeeping records. Unfinished task drafts are encrypted separately. Records may contain information about others; enter and share only information you are entitled to use, and avoid unnecessary sensitive details.\",\n      \"appLegal.privacy.block005\": \"The app does not connect to a bank or move money. Sign-in and purchasing do not, by themselves, upload financial records. A release configured with account services requires sign-in for the real planner and access verification; it can then work offline within its verified access period. Requiring an account is different from permission to upload a budget.\",\n      \"appLegal.privacy.block006\": \"Storage can be lost when cleared, an app is uninstalled, a device fails or a decryption secret is lost. Local deletion and account deletion are different actions. We cannot erase downloaded copies from another person's device or reconstruct an unavailable passphrase or recovery key.\",\n      \"appLegal.privacy.block007\": \"Backups, exports and destinations you choose\",\n      \"appLegal.privacy.block008\": \"Complete encrypted manual backups can include books, private records, receipts, places and pending captures. Private records restore as offline books. Unfinished forms, sign-in identity and household connection secrets are excluded. Review the scope and successful completion before relying on a copy.\",\n      \"appLegal.privacy.block009\": \"Readable JSON, CSV, PDF and accountant-package exports are not encrypted. Raw exports can contain receipts, places and pending widget entries. A file you save, email or share can be read or retained by its destination. Creating it does not itself send it to NiyaJar. Deleting a current record does not rewrite older copies; recoverable Trash can remain in complete backups until permanently deleted.\",\n      \"appLegal.privacy.block010\": \"You can explicitly send password-encrypted backups to your own HTTPS WebDAV/Nextcloud folder or a system file/share destination. Transfer credentials are used for that operation and not saved as task drafts. Your selected provider has its own privacy and retention practices. Operating-system backup and native temporary-file handling require platform verification; this candidate does not promise that every operating-system copy is excluded.\",\n      \"appLegal.privacy.block011\": \"Accounts, trial access and purchases\",\n      \"appLegal.privacy.block012\": \"Supabase processes sign-in email, account identifiers, login verification, sessions and service information. A session is stored on your device. Authentication email and support mail also involve the configured email providers. Service-provider details will be confirmed before app release.\",\n      \"appLegal.privacy.block013\": \"Stripe handles direct-web checkout and subscription management. Apple and Google handle store purchases. NiyaJar verifies purchases and stores account associations, purchase identifiers, product, renewal and paid-access information. The payment service handles card entry. Plaintext ledger records are not sent to authentication or billing services. Payment services can retain records under their own legal responsibilities.\",\n      \"appLegal.privacy.block014\": \"The service keeps a secret-key hash of a normalized email and the trial-start date to limit repeat trials. The hash is pseudonymous: the operator can match an email using the service's secret. The source retention policy approved by the owner on 4 November 2026 keeps this identity for **24 months after the most recent validated trial-eligibility check**, including after account deletion. A later validated check refreshes that period. The existing account keeps its original trial start; deleting an identity hash does not restart that account's trial. After 24 months without such a check, a newly created account can qualify again. The trial itself remains 14 days.\",\n      \"appLegal.privacy.block015\": \"Older identity rows did not record a last-check time. The migration initializes those rows to the date it is applied, so their first 24-month cutoff runs from migration rather than an invented past activity date. Eligibility checks disregard expired identity matches even before scheduled physical cleanup. The source migration and schedule still need deployment and verification; owner approval is not proof that production data has already been cleaned. Provider backups and necessary legal exceptions have separate handling. This record is not anonymous.\",\n      \"appLegal.privacy.block016\": \"Optional cloud backup and personal sync\",\n      \"appLegal.privacy.block017\": \"Cloud backup needs a separate choice. Encrypted copies leave the device for Supabase storage. The service also holds account identity, opaque vault/object identifiers, revisions, sizes, timestamps and access/retention metadata. Encryption does not make this metadata anonymous.\",\n      \"appLegal.privacy.block018\": \"Receipt photographs and saved inbox records need an additional choice. Their notes, links and images are encrypted before upload. Images are resized and source location metadata is removed. Turning this option off stops future inclusion; existing copies keep their content until normal deletion. Remembered places and unfinished task drafts are outside this cloud scope.\",\n      \"appLegal.privacy.block019\": \"When available, separately enabled personal sync checks for changes while the app is open, unlocked and online. It can synchronize books and private ledgers within your account and include those private records in later ordinary recovery snapshots. Receipts still need the separate receipt choice. Current sync copies, merge state and protected conflicts have lifecycles separate from ordinary snapshots. Sync can require conflict review and is not continuous closed-app protection.\",\n      \"appLegal.privacy.block020\": \"The server is not given your passphrase or recovery key to decrypt these records. A person with usable encrypted data and its decryption secret may be able to read it. Email access and purchase restoration do not replace that secret.\",\n      \"appLegal.privacy.block021\": \"Household sharing and nearby transfers\",\n      \"appLegal.privacy.block022\": \"Creating or joining a household uploads an encrypted projection of records selected for sharing. Current members can read shared records and retained shared history; only editors can change them. Removing someone stops future authorized service access but cannot erase downloaded copies. Shared history is limited to ten versions available for thirty days, pruned on access/write, rather than a permanent audit trail.\",\n      \"appLegal.privacy.block023\": \"Supabase stores household administration metadata outside the encrypted budget: owner/member identifiers, **user-chosen member display names**, roles, invitation hashes and expiry, revision/subscription timestamps, ownership offers, successor appointments, recovery votes, payment handovers and backup allowance grants. Chosen names are visible to current members. Do not put secrets or financial details in a member display name.\",\n      \"appLegal.privacy.block024\": \"Household-private ledgers use separate keys and stay out of shared totals/history. Their household-private cloud-copy action is manual. Optional account-private personal sync is different and can include those private records in personal copies. Membership removal ends access to the household-private cloud row; that row can remain until household or member-account deletion. Keep a suitable personal export before leaving.\",\n      \"appLegal.privacy.block025\": \"Owner-account deletion preserves the household for surviving members; accepted succession or unanimous recovery can restore ownership. It does not erase another member's records. Household deletion is a separate process. Sponsorship does not permit the payer to read members' private copies. Every current member must receive the required notice before expiry/deletion cleanup of the household.\",\n      \"appLegal.privacy.block026\": \"Nearby sharing sends an encrypted shared projection directly to a manually paired local-network device and requires recipient confirmation. There is no cloud relay or background discovery. Optional foreground native discovery broadcasts a random session name through Bonjour and exchanges encrypted connection descriptions with the chosen device. Receipts, places and private records stay out of nearby shared projections. Participants control their copies and connection secrets.\",\n      \"appLegal.privacy.block027\": \"Permissions and speech recognition\",\n      \"appLegal.privacy.block028\": \"Camera/photo selection, location and microphone use start from your action and the relevant permission prompt. Remembered-place matching is local. Location is requested through location actions; disabling learned places deletes the learned places. Coordinates are not sent to authentication or billing services.\",\n      \"appLegal.privacy.block029\": \"Voice entry needs a separate confirmation before listening and produces editable text for your review. Depending on device, language and browser, an operating-system or browser speech service may process expense audio, including information you say about an expense, on its servers. Internet may be needed. On-device recognition is used when supported but is not guaranteed. Provider handling and retention follow that service's applicable notices. Check the speech service notices for your platform. You can type instead. Stopping listening or closing the flow stops the app's request; it cannot undo provider processing already performed.\",\n      \"appLegal.privacy.block030\": \"Native reminders and widgets use device services. Widgets keep encrypted pending captures with a separate capture key and import them after unlock. Permissions and store declarations must match the released native binaries.\",\n      \"appLegal.privacy.block031\": \"Reports, acceptance receipts and service operations\",\n      \"appLegal.privacy.block032\": \"Error/crash reports, performance reports and aggregate usage counts are separate, initially off choices. Legal acknowledgment alone does not enable them. You can turn each off in the app. Sentry receives allowed technical error codes, platform/build information and code locations for crash reporting. Separately chosen performance reports contain fixed operation/outcome names, rounded durations and sampled timings. PostHog receives fixed screen/action counts with platform/release information.\",\n      \"appLegal.privacy.block033\": \"App report payloads exclude financial records and amounts, entered text, account or persistent device identifiers, credentials, screenshots, recordings and replay. Providers nevertheless receive network metadata such as IP addresses. Native crash SDKs can temporarily cache sanitized reports while enabled; revocation gates transport and clears the dedicated cache. Reports are not guaranteed anonymous.\",\n      \"appLegal.privacy.block034\": \"When enabled, the signed-in account receipt service stores document acceptance and the three report choices in Supabase. A receipt contains exact document URLs/versions, disclosure version, interface language, client timestamps, a random event identifier and a server receipt time bound to the verified account. It contains no ledger or credentials and cannot enable reports on another device. Local-only use keeps it on the device. Offline changes may be combined before upload. Superseded receipt history is retained for **24 months after server receipt**; the most recently server-received receipt is retained while the account exists. Live receipt rows cascade on account deletion; provider backups are separate. These owner-approved source controls require the retention migration and scheduler to be deployed and verified before production handling is claimed.\",\n      \"appLegal.privacy.block035\": \"Backend requests create rate-limit/security counters and can create fixed operational records. Quota rows become eligible for removal after **48 hours**; user-specific quota subjects are removed when verified account deletion completes. An hourly scheduled sweep removes eligible trial identities, receipt history and quota rows in bounded batches of up to 10,000 per category. Backlogs or failed runs can extend physical cleanup beyond the eligibility cutoff; the operator must monitor and clear them. This schedule is implemented in source but not activated on a production service by this document.\",\n      \"appLegal.privacy.block036\": \"Configured app-controlled service logs contain a service, response category and rounded duration, rather than request bodies, identities or raw exceptions. Hosting providers can separately process IP addresses, headers and access/security logs. These operations do not observe an offline ledger.\",\n      \"appLegal.privacy.block037\": \"Support receives your email and content you choose to send. A technical summary can be reviewed and sent only through your explicit copy/email action. Do not send financial files, passphrases, recovery keys or sign-in codes. Routine support and request evidence need the approved category-specific retention schedule.\",\n      \"appLegal.privacy.block038\": \"Locations, purposes and safeguards\",\n      \"appLegal.privacy.block039\": \"Service information supports accounts and verified access, service protection, your optional storage/sharing/reporting choices, requests and legal obligations. Optional reporting consent is separate from contract acceptance. New purposes require assessment and any consent required by applicable law.\",\n      \"appLegal.privacy.block040\": \"Service-provider roles, locations, retention and safeguards are under review before app release. Processing may occur outside your country under the laws there. Our BC address does not establish Canadian-only storage.\",\n      \"appLegal.privacy.block041\": \"Retention and deletion\",\n      \"appLegal.privacy.block042\": \"You control local deletion. Turning an upload/reporting option off stops future optional collection and does not itself remove earlier copies. Unfinished drafts are excluded from backups; readable exports and downloaded copies remain with their destinations.\",\n      \"appLegal.privacy.block043\": \"Cloud copies follow the disclosed quota and recovery-point rotation. After paid access ends, uploads stop while existing copies remain downloadable for **at least 90 days**. Expiry cleanup also waits **at least 30 days after confirmed notice delivery** and never precedes the date in that notice. Delivery failure can extend retention. Every current household member must be notified. Renewal cannot restore files whose deletion was committed after the deadline.\",\n      \"appLegal.privacy.block044\": \"Verified account deletion removes account-owned cloud copies before identity deletion without that expiry wait. Successful deletion stops direct-web Stripe renewal; Apple/Google subscriptions need separate cancellation. Deletion itself does not request a refund. Surviving members' shared household records and separately controlled platform transaction records are not erased with one account.\",\n      \"appLegal.privacy.block045\": \"The owner-approved metadata retention policy is implemented in prepared source changes. Production activation, jurisdiction review, provider log/backup handling and necessary tax, request or incident exceptions still require verification. These metadata limits do not shorten the cloud-copy protections above. This candidate does not establish that production cleanup has been activated.\",\n      \"appLegal.privacy.block046\": \"Requests, eligibility and changes\",\n      \"appLegal.privacy.block047\": \"Use in-app account deletion or the public /account-deletion resource on the app host. You can email support@niyajar.com without reinstalling or unlocking. Account control is verified proportionately; decryption secrets are never needed. An email request does not itself complete deletion.\",\n      \"appLegal.privacy.block048\": \"You can ask about handling, access/correction of service information, applicable deletion rights, withdrawal of optional consent or complaints through the same contact. Applicable deadlines and exceptions depend on the request. We cannot decrypt financial records for you. Rights and complaint routes depend on applicable law, including BC PIPA and PIPEDA where applicable. This draft does not set one worldwide request deadline.\",\n      \"appLegal.privacy.block049\": \"The intended launch audience is adults who are at least 18 and have reached local majority, including 19 in BC.  Identify material notice changes and provide required notice or choices before a materially different use. A policy edit alone does not authorize new processing.\"\n    }\n  },\n  \"currencies\": [\n    \"AED\",\n    \"AFN\",\n    \"ALL\",\n    \"AMD\",\n    \"ANG\",\n    \"AOA\",\n    \"ARS\",\n    \"AUD\",\n    \"AWG\",\n    \"AZN\",\n    \"BAM\",\n    \"BBD\",\n    \"BDT\",\n    \"BGN\",\n    \"BHD\",\n    \"BIF\",\n    \"BMD\",\n    \"BND\",\n    \"BOB\",\n    \"BRL\",\n    \"BSD\",\n    \"BTN\",\n    \"BWP\",\n    \"BYN\",\n    \"BZD\",\n    \"CAD\",\n    \"CDF\",\n    \"CHF\",\n    \"CLP\",\n    \"CNY\",\n    \"COP\",\n    \"CRC\",\n    \"CUC\",\n    \"CUP\",\n    \"CVE\",\n    \"CZK\",\n    \"DJF\",\n    \"DKK\",\n    \"DOP\",\n    \"DZD\",\n    \"EGP\",\n    \"ERN\",\n    \"ETB\",\n    \"EUR\",\n    \"FJD\",\n    \"FKP\",\n    \"GBP\",\n    \"GEL\",\n    \"GHS\",\n    \"GIP\",\n    \"GMD\",\n    \"GNF\",\n    \"GTQ\",\n    \"GYD\",\n    \"HKD\",\n    \"HNL\",\n    \"HRK\",\n    \"HTG\",\n    \"HUF\",\n    \"IDR\",\n    \"ILS\",\n    \"INR\",\n    \"IQD\",\n    \"IRR\",\n    \"ISK\",\n    \"JMD\",\n    \"JOD\",\n    \"JPY\",\n    \"KES\",\n    \"KGS\",\n    \"KHR\",\n    \"KMF\",\n    \"KPW\",\n    \"KRW\",\n    \"KWD\",\n    \"KYD\",\n    \"KZT\",\n    \"LAK\",\n    \"LBP\",\n    \"LKR\",\n    \"LRD\",\n    \"LSL\",\n    \"LYD\",\n    \"MAD\",\n    \"MDL\",\n    \"MGA\",\n    \"MKD\",\n    \"MMK\",\n    \"MNT\",\n    \"MOP\",\n    \"MRU\",\n    \"MUR\",\n    \"MVR\",\n    \"MWK\",\n    \"MXN\",\n    \"MYR\",\n    \"MZN\",\n    \"NAD\",\n    \"NGN\",\n    \"NIO\",\n    \"NOK\",\n    \"NPR\",\n    \"NZD\",\n    \"OMR\",\n    \"PAB\",\n    \"PEN\",\n    \"PGK\",\n    \"PHP\",\n    \"PKR\",\n    \"PLN\",\n    \"PYG\",\n    \"QAR\",\n    \"RON\",\n    \"RSD\",\n    \"RUB\",\n    \"RWF\",\n    \"SAR\",\n    \"SBD\",\n    \"SCR\",\n    \"SDG\",\n    \"SEK\",\n    \"SGD\",\n    \"SHP\",\n    \"SLE\",\n    \"SLL\",\n    \"SOS\",\n    \"SRD\",\n    \"SSP\",\n    \"STN\",\n    \"SVC\",\n    \"SYP\",\n    \"SZL\",\n    \"THB\",\n    \"TJS\",\n    \"TMT\",\n    \"TND\",\n    \"TOP\",\n    \"TRY\",\n    \"TTD\",\n    \"TWD\",\n    \"TZS\",\n    \"UAH\",\n    \"UGX\",\n    \"USD\",\n    \"UYU\",\n    \"UZS\",\n    \"VES\",\n    \"VND\",\n    \"VUV\",\n    \"WST\",\n    \"XAF\",\n    \"XCD\",\n    \"XCG\",\n    \"XDR\",\n    \"XOF\",\n    \"XPF\",\n    \"XSU\",\n    \"YER\",\n    \"ZAR\",\n    \"ZMW\",\n    \"ZWG\",\n    \"ZWL\"\n  ]\n};\n(() => {\n  const source = document.currentScript.src;\n  const data = window.NIYAJAR_LANDING_LOCALES;\n  const pending = new Map();\n  function load(code) {\n    if (!Object.hasOwn(data.languages, code))\n      return Promise.reject(new Error('Unsupported language'));\n    if (data.catalogs[code]) return Promise.resolve(data.catalogs[code]);\n    if (pending.has(code)) return pending.get(code);\n    const task = new Promise((resolve, reject) => {\n      const script = document.createElement('script');\n      const url = new URL(`locale-data/${code}.js`, source);\n      script.src = window.NiyaJarAssets?.url(url) || url.href;\n      script.onload = () => {\n        if (data.catalogs[code]) resolve(data.catalogs[code]);\n        else {\n          script.remove();\n          reject(new Error('Incomplete language'));\n        }\n      };\n      script.onerror = () => {\n        script.remove();\n        reject(new Error('Language unavailable'));\n      };\n      document.head.append(script);\n    });\n    pending.set(code, task);\n    task.catch(() => pending.delete(code));\n    return task;\n  }\n  window.NiyaJarLocales = { load };\n  const initial = document.documentElement.lang;\n  if (Object.hasOwn(data.languages, initial)) load(initial).catch(() => {});\n})();\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
