export const enUS = { common: { cancel: 'Cancel', confirm: 'Confirm', delete: 'Delete', close: 'Close', clear: 'Clear', loading: 'Loading...' }, app: { projectConflict: { title: 'Project Already Open', desc: 'Project "{name}" is already active in another tab. Editing is blocked here to avoid IndexedDB conflicts.', countdown: 'This page will try to close automatically in {seconds} seconds. You can open another project in a new tab first.', opened: '(Opened)', lastEdited: 'Last edited: {time}', openDefault: 'Open Default Project', createAndOpen: 'Create and Open' } }, home: { title: 'Calculation Entry', subtitle: 'Project Budget · Quick Calc · Import Data', projectCalcTab: 'Project Calculation', quickCalcTab: 'Quick Calculation', cards: { heroTitle: 'One-Click Smart Budget', heroSubTitle: 'Accelerate standards adoption', heroDesc: 'Cost consulting fee calculator for transport construction projects', projectBudget: 'Project Budget', projectBudgetDesc: 'For full project-level calculation across multiple contracts with import/export support', quickCalc: 'Quick Calc', quickCalcDesc: 'Suitable for single service trial, select industry, consultation type, engineering specialty, input base number and get results in seconds', importData: 'Import Data', importDataDesc: 'Import a ".zw" package and create a new project automatically to restore the data without overriding existing projects', enter: 'Enter', pickFile: 'Choose File', pickExisting: 'Choose Existing' }, dialog: { newProject: 'New Project', chooseIndustryDesc: 'Choose an industry and enter project calculation directly.', industry: 'Industry', selectIndustry: 'Select industry', entering: 'Entering...', enterProjectCalc: 'Enter Project Calculation', confirmImport: 'Confirm Import', confirmImportDesc: 'Import "{file}"', confirmImportAction: 'Import and Create Project', chooseExistingProject: 'Choose Existing Project', chooseExistingProjectDesc: 'Select a project from the list and enter workspace directly.', noProjectYet: 'No project available. Create a new project first.' } }, tab: { toolbar: { light: 'Light', dark: 'Dark', language: 'Lang', importExport: 'Import/Export', importData: 'Import', exportData: 'Export', exportReport: 'Export Report', userGuide: 'Guide', reset: 'Reset', resetting: 'Resetting...', projectList: 'Projects', projectCount: 'Projects: {count}', createProject: 'New Project', backHome: 'Back Home', resetAll: 'Reset All', opened: '(Opened)', lastEdited: 'Last edited: {time}' }, menu: { closeAll: 'Close All', closeLeft: 'Close Left', closeRight: 'Close Right', closeOther: 'Close Others' }, dialog: { resetTitle: 'Confirm Reset', resetDesc: 'All project data will be cleared and the default page will be restored. Continue?', confirmReset: 'Confirm Reset', importOverrideTitle: 'Confirm Override Import', importOverrideDesc: 'Use "{file}" to override all local data for current project. Continue?', confirmOverride: 'Confirm Override', newProjectTitle: 'New Project', newProjectDesc: 'Choose an industry, then open the new project calculation page in a new tab.', createAndOpen: 'Create & Open', creating: 'Creating...', projectLimitTitle: 'Project Limit Reached', projectLimitDesc: 'Project count has reached {max}. Delete one project before adding a new one.', iKnow: 'OK', deleteProjectTitle: 'Confirm Delete Project', deleteCurrentProjectDesc: 'Delete current project "{name}"? Data will be cleared and you will return to home.', deleteProjectDesc: 'Delete project "{name}"? This will remove local data for that project.' }, guide: { title: 'User Guide', later: 'Later', prev: 'Prev', next: 'Next', finish: 'Finish and Disable Auto Popup', jumpToStep: 'Jump to step {index}', steps: { step1: { title: 'Project Calculation Overview', description: 'This guide only explains the main project-calculation flow: project setup -> contract segments -> service pricing -> report export.', point1: 'The entry is the "Project Card", and the left flow line guides you through the setup in order.', point2: 'Forms and grids auto-save locally, so manual save is usually unnecessary.', point3: 'Project-level data affects later segment calculation and report output, so fill it first.' }, step2: { title: 'Project-Level Setup', description: 'Project-level setup mainly includes Basic Info, Scale Info, Consult Category Factor, and Major Factor.', point1: 'Basic Info: maintain project name, industry, and other base data.', point2: 'Scale Info: fill project scale by major as input for later budget values.', point3: 'The two factor pages maintain budget values and notes used to adjust calculation.' }, step3: { title: 'Fill Basic Info First', description: 'Complete the Basic Info page first. Project name and industry are core inputs for later project calculation.', point1: 'Project name is used in the home list, tab labels, and exported reports.', point2: 'Project industry determines the scale structure, major tree, and part of the budget logic.', point3: 'If project name is left empty, the system falls back to the default project name.' }, step4: { title: 'Maintain Scale Info', description: 'The Scale Info page stores project-level scale data, which is one of the base inputs of project calculation.', point1: 'Fill scale values by major. These numbers participate in later service budget values and summary.', point2: 'The grid supports direct edit, batch paste, and undo/redo for fast multi-row input.', point3: 'Grouped rows and the pinned summary row are calculated automatically for quick checking.' }, step5: { title: 'Maintain Project Factors', description: 'Consult Category Factor and Major Factor are used to adjust project budget values and should be reviewed before segment calculation.', point1: 'Consult Category Factor page: maintain budget values and notes by consult category.', point2: 'Major Factor page: maintain budget values and notes by major tree.', point3: 'Both pages support batch paste and undo/redo for efficient maintenance.' }, step6: { title: 'Enter Segment Calculation', description: 'After project-level setup is complete, go to Contract Segment Management and calculate each segment one by one.', point1: 'Create a contract segment first, then open its detail page to continue.', point2: 'Scale data under one segment belongs only to that segment and does not affect others.', point3: 'The consulting service page generates service rows and acts as the entry for pricing methods.' }, step7: { title: 'Choose Pricing Methods', description: 'From consulting service details inside a segment, open the service pricing page and fill method data based on the service.', point1: 'Common methods include investment scale, land scale, workload, and hourly pricing.', point2: 'Different services can enable different methods, and the system summarizes them into subtotal and final amount.', point3: 'If the default calculated value needs adjustment, edit the final amount or note fields directly.' }, step8: { title: 'Review and Export', description: 'After project-level and segment-level calculation is complete, review the final summary and then export the report.', point1: 'Check project name, scale info, factors, and segment service amounts before exporting.', point2: 'Export uses the current project data and generates the final report accordingly.', point3: 'If you make large changes, export a backup first before continuing.' } } }, toast: { export: 'Export Report', success: 'Export Success', failed: 'Export Failed' }, messages: { defaultProjectLabel: 'Default Project', defaultProjectName: 'Cost Project', projectNamePrefix: 'Project-{id}', contractFallbackName: 'Contract-{index}', reportFileSuffix: 'Budget Report', reportGenerating: 'Generating report file...', reportExportDone: 'Report export completed', reportExportFailedRetry: 'Report export failed, please retry', importFailedTitle: 'Import Failed', importProjectIdMissing: 'This package does not contain project ID (legacy export). Import is blocked to avoid cross-project overwrite.', importProjectMismatch: 'This package belongs to another project and cannot override current project.', importInvalidFile: 'File is invalid, corrupted, or modified.', importCryptoUnavailable: 'This runtime does not support secure archive decryption. Please open the site over HTTPS or another secure local context and try again.', importWriteError: 'An error occurred while writing local data.', openFile: 'Open file' } }, typeLine: { copy: 'Copy', copied: 'Copied', copyFailed: 'Copy failed', brandAlt: 'Zhongwei', supportText: 'This website is supported by Zhongwei Engineering Consulting Co., Ltd.', aboutTitle: 'About Us', companyName: 'Zhongwei Engineering Consulting Co., Ltd.', openOfficialSiteAria: 'Open official website', officialSiteTitle: 'Official Website', aboutParagraph1: 'Zhongwei Engineering Consulting Co., Ltd. was founded in 2009, focusing on whole-process consulting for project cost and cost control. It is a preferred audit vendor for Guangdong government. The company serves multi-domain and diverse clients, with cumulative project investment over one trillion CNY, deep participation in major national projects such as the Hong Kong-Zhuhai-Macao Bridge and Hengqin Campus of the University of Macau, and participation in over 30 national/provincial/municipal standards.', aboutParagraph2: 'Based in the Greater Bay Area and expanding globally, the company has offices in Macau and Sri Lanka, with cross-border and overseas delivery capabilities. With 15 years of expertise and trillion-level project experience, it provides precise and reliable engineering consulting services.' }, agGrid: { resetDefault: 'Reset to default' }, ht: { title: 'Contract Segments', projectTotalBudget: 'Project Total Budget: {amount}', budgetLoading: 'Calculating...', selectedCount: '{count} selected', exportSelected: 'Export Selected', deleteSelected: 'Delete Selected', cancelSelect: 'Cancel', addContract: 'Add Segment', batchDelete: 'Batch Delete', exportContracts: 'Export Segments', importContracts: 'Import Segments', searchPlaceholder: 'Search by segment name or ID', clearFilter: 'Clear Filter', searchingHint: 'Searching ({filtered} / {total}), drag sorting is disabled', selectModeExportHint: 'Export mode: select segments and click "Export Selected"', selectModeDeleteHint: 'Delete mode: select segments and click "Delete Selected"', setupRequiredHint: 'Set project industry in "Basic Info" before adding or importing segments', listLayout: 'List', gridLayout: 'Grid', dragSort: 'Drag to Sort', dragSortSearchOff: 'Drag Sort (Disabled in Search)', edit: 'Edit', remove: 'Delete', idLabel: 'ID: {id}', contractBudget: 'Budget: {amount}', contractBudgetLine: 'Segment Budget: {amount}', createdAt: 'Created: {time}', emptyTitle: 'No Contract Segments', emptyDesc: 'Add one to get started', notFound: 'No matching contract segment', backToTop: 'Back to Top', editContract: 'Edit Segment', createContract: 'New Segment', contractTabTitle: 'Segment {name}', contractName: 'Segment Name', contractNamePlaceholder: 'Enter segment name', save: 'Save', ok: 'OK', toastSuccessTitle: 'Success', createSuccess: 'Created successfully', editSuccess: 'Updated successfully', deleteSuccess: 'Deleted successfully', sortDone: 'Sort completed', exportSuccess: 'Exported successfully ({count} segments)', importSuccess: 'Imported successfully ({count} segments)', deleteBatchSuccess: 'Deleted successfully ({count} segments)', tipTitle: 'Notice', exportFailedTitle: 'Export Failed', importFailedTitle: 'Import Failed', batchDeleteFailedTitle: 'Batch Delete Failed', retry: 'Please try again.', selectAtLeastOne: 'Please select at least one contract segment.', noContractsToDelete: 'No contract segment found to delete.', industryMissingForExport: 'Project industry is missing. Please set it in "Basic Info" first.', importIndustryMismatch: 'Industry mismatch (package: {importIndustry}, current: {currentIndustry}).', importCurrentIndustryMissing: 'Current project industry is not set. Please set it in "Basic Info" first.', importPackageIndustryMissing: 'Import package missing industry info. Re-export with latest version and try again.', importFileInvalid: 'Invalid or corrupted file, or not a contract-segment package.', importCryptoUnavailable: 'This runtime does not support secure archive decryption. Please open the site over HTTPS or another secure local context and try again.', deleteSingleTitle: 'Confirm Delete Segment', deleteSingleDesc: 'Delete "{name}" and all related service/pricing data. Continue?', deleteBatchTitle: 'Confirm Batch Delete', deleteBatchDesc: 'Delete {count} segments and related service/pricing data. Continue?' }, htCard: { title: 'Segment: {name}', subtitle: 'Segment ID: {id}', metaBudget: 'Segment Budget: {amount}', currencySuffix: 'CNY', categories: { baseInfo: 'Basic Info', scaleInfo: 'Scale Info', services: 'Consulting Services', consultFactor: 'Consult Category Factor', majorFactor: 'Major Factor', additionalFee: 'Additional Fee', reserveFee: 'Reserve Fee', summary: 'Summary' } }, htBaseInfo: { title: 'Basic Info', defaultQuality: 'The comprehensive evaluation of cost consulting services should reach "Good" or a score of 90.', qualityLabel: 'Quality Requirement', qualityPlaceholder: 'Enter quality requirement', durationLabel: 'Duration Requirement', durationPlaceholder: 'Enter duration requirement' }, htFactors: { consultCategoryTitle: 'Consult Category Factor Details', majorTitle: 'Major Factor Details' }, htFee: { additionalTitle: 'Additional Work Fee', reserveTitle: 'Reserve Fee' }, htInfo: { scaleDetailTitle: 'Contract Scale Details', scaleDetailHint: 'When the scale data in this table differs from the project scale data, pricing will use this table.', scaleDetailHintAria: 'Contract scale details hint' }, htFeeRate: { baseLabel: 'Base (total budget of all service fees)', reserveBaseLabel: 'Base (consulting services total + additional work fee total)', rateLabel: 'Rate (%)', ratePlaceholder: 'Enter rate, suggested 1 ~ 5', budgetFeeLabel: 'Budget Fee (Auto)', remarkLabel: 'Remark', remarkPlaceholder: 'Enter remark' }, htZxFw: { title: 'Consulting Service Details', warning: 'Please review and adjust recommended limits/special values in the specification, then update final fee if needed.', editTabTitle: 'Service Edit-{name}', subtotal: 'Total', edit: 'Edit', resetDefault: 'Reset', delete: 'Remove', processDraft: 'Draft', processReview: 'Review', columns: { code: 'Code', name: 'Name', process: 'Process', investScale: 'Investment Scale', landScale: 'Land Scale', workload: 'Workload', hourly: 'Hourly', subtotal: 'Subtotal', finalFee: 'Final Fee ✎', finalFeeTooltip: 'This column supports manual edits and will auto-sync to the fixed subtotal row.', remark: 'Remark', actions: 'Actions' }, dialog: { resetTitle: 'Confirm Reset to Default', resetDesc: 'This will recalculate default data from latest scale/factor values and overwrite current data for "{name}". Continue?', confirmReset: 'Confirm Reset', deleteTitle: 'Confirm Delete Service', deleteDesc: 'This will logically remove "{name}". Existing entered data is kept and will restore if re-selected. Continue?' } }, htSummary: { title: 'Contract Summary', total: 'Total', remark: 'Remark', placeholder: 'Fill consulting services / additional work fee / reserve fee first', additionalPrefix: 'Additional Work Fee', reservePrefix: 'Reserve Fee', explainByRate: 'By rate {rate}%, calculated {fee} CNY', explainByHourly: 'By hourly method, calculated {fee} CNY', explainByQuantity: 'By quantity-unit-price method, calculated {fee} CNY', columns: { code: 'Code', name: 'Name', investScale: 'Investment Scale', landScale: 'Land Scale', workload: 'Workload', hourly: 'Hourly', subtotal: 'Subtotal', finalFee: 'Final Fee' } }, htFeeGrid: { subtotal: 'Total', currentRow: 'Current Row', unnamed: 'Unnamed', edit: 'Edit', clear: 'Clear', add: 'Add', editTabTitle: 'Fee Edit-{name}', columns: { name: 'Name', rateFee: 'Rate Fee', hourlyFee: 'Hourly', quantityUnitPriceFee: 'Quantity Unit Price', subtotal: 'Subtotal', actions: 'Actions' }, dialog: { clearTitle: 'Confirm Clear', clearDesc: 'This will clear editable and auto-calculated data for "{name}" and its edit page. Continue?', confirmClear: 'Confirm Clear' } }, xmFactorGrid: { clickToInput: 'Click to input', columns: { standardFactor: 'Standard Factor', budgetValue: 'Budget Value', remark: 'Remark', groupName: 'Major Code and Major Name' } }, serviceSelector: { title: 'Select Services', titleHint: 'Some selectable services have been added beyond those listed in the specification. These additions do not conflict with the specification and are only included to support fee calculation under the specification.', titleHintAria: 'Select services hint', clear: 'Clear', empty: 'No services' }, zxFwView: { contractPrefix: 'Contract: {name}', calcSuffix: ' Calculation', contractId: 'Contract ID: {id}', workContentTitle: 'Work Content', categories: { investmentScale: 'Investment Scale', investmentScaleFormula: 'Investment Scale Formula', landScale: 'Land Scale', landScaleFormula: 'Land Scale Formula', workload: 'Workload', hourly: 'Hourly', workContent: 'Work Content' }, formulaColumns: { subtitle: 'Shows the latest detail rows from the current pricing-method store and stays in sync with store updates.', amount: 'Amount (CNY)', basicFormula: 'Basic Work Formula', optionalFormula: 'Optional Work Formula' }, unavailable: { investmentScaleTitle: 'Investment Scale Not Applicable', investmentScaleMessage: 'Scale method is not enabled for this service, so Investment Scale is not editable.', landScaleTitle: 'Land Scale Not Applicable', landScaleMessage: 'This service only supports Investment Scale, so Land Scale is not editable.', workloadTitle: 'Workload Not Applicable', workloadMessage: 'Workload method is not enabled for this service, so Workload is not editable.', hourlyTitle: 'Hourly Not Applicable', hourlyMessage: 'Hourly method is not enabled for this service, so Hourly is not editable.' } }, htFeeDetail: { subtotal: 'Total', currentRow: 'Current Row', clickToInput: 'Click to input', addRow: 'Add Row', columns: { no: 'No.', feeItem: 'Fee Item', unit: 'Unit', quantity: 'Quantity', unitPrice: 'Unit Price (CNY)', budgetFee: 'Budget Fee (CNY)', remark: 'Remark', actions: 'Actions' }, dialog: { deleteTitle: 'Confirm Delete Row', deleteDesc: 'Delete row "{name}"?' } }, workContent: { title: 'Work Content', addCustom: 'Add Custom Content', clickToInput: 'Click to input', clickToInputContent: 'Click to input work content', currentRow: 'Current Row', unnamed: 'Unnamed', ungrouped: 'Ungrouped', type: { basic: 'Basic Work', optional: 'Optional Work', daily: 'Daily Advisory', special: 'Special Advisory', additional: 'Additional Work', custom: 'Custom' }, columns: { no: 'No.', content: 'Content', type: 'Type', remark: 'Remark', actions: 'Actions' }, dialog: { deleteTitle: 'Confirm Delete Row', deleteDesc: 'Delete row "{name}"?' } }, quickCalc: { projectName: 'Quick Calculation', industryLabel: 'Industry {name}', selectIndustry: 'Select industry', saving: 'Saving...', synced: 'Industry synced', notSelectedIndustry: 'Industry not selected', notSelected: 'Not selected', consultCategory: 'Consult Category', majorCategory: 'Major', types: { consult: { label: 'Consult Category (Common)', hint: 'Select consult category first, then complete scale and budget parameters.' }, general: { label: 'General Major', hint: 'Cross-industry common compensation and other expense majors.' }, road: { label: 'Highway Major', hint: 'Shown by default when industry is Highway Engineering.' }, railway: { label: 'Railway Major', hint: 'Shown by default when industry is Railway Engineering.' }, waterway: { label: 'Waterway Major', hint: 'Shown by default when industry is Waterway Engineering.' } }, fields: { industry: 'Industry', code: 'Code', investScale: 'Investment Scale (10k CNY)', landScale: 'Land Scale (mu)', formula: 'Formula', amount: 'Amount (CNY)', consultFactor: 'Consult Category Factor', majorFactor: 'Major Factor', workEnvCoefficient: 'Work environment coefficient', workEnvCoefficientPlaceholder: 'Default 1', budgetAmount: 'Budget Amount (CNY)' }, sections: { currentSelection: 'Current Selection', basicInfo: 'Basic Info', scaleBase: 'Scale Base', benchmarkBudget: 'Benchmark Budget', serviceBudget: 'Service Budget', }, empty: { selectIndustry: 'Select an industry first. Then choose consult category and matched majors will appear.', selectConsult: 'Select a consult category first. Matched general and major categories will then appear.', scaleUnavailable: 'The selected consult category does not support scale method, so major categories are hidden.', consultCostOnly: 'The selected consult category is priced by industry summary. Major factor is auto-applied by industry.' }, placeholder: { selectConsultFirst: 'Select consult category first', scaleUnavailable: 'Current category does not support scale method', selectMajorFirst: 'Select major first', preferLandScale: 'Current major is priced by land scale', investUnavailable: 'Current major does not support investment scale', consultCostOnly: 'Current category supports investment scale only', landUnavailable: 'Current major does not support land scale', input: 'Please input', selectScaleFirst: 'Select and input a scale value first' } }, methodUnavailable: { defaultTitle: 'This Service Is Not Applicable to Current Pricing Method' }, xmCard: { categories: { info: 'Basic Info', scaleInfo: 'Scale Info', consultCategoryFactor: 'Consult Category Factor', majorFactor: 'Major Factor', contract: 'Contract Segment Management' } }, htFeeMethodTypeLine: { feeDetail: 'Fee Details', unnamed: 'Unnamed', title: 'Segment: {contractName} · {rowName}', contractId: 'Contract ID: {id}', quantityUnitPrice: 'Quantity Unit Price' }, pricingScale: { totalInvestmentByIndustry: '{industryName} Total Investment', totalInvestment: 'Total Investment', clickToInput: 'Click to input', projectLabel: 'Project {index}', columns: { investAmount: 'Cost Amount (10k CNY)', landArea: 'Land Area (mu)', benchmarkBudget: 'Benchmark Budget (CNY)', basicWork: 'Basic Work', optionalWork: 'Optional Work', subtotal: 'Subtotal', budgetFee: 'Budget Fee', consultCategoryFactor: 'Consult Category Factor', majorFactor: 'Major Factor', workStageFactor: 'Work Stage Factor (Draft/Review)', workRatio: 'Service Budget Composition Ratio and Quantity Ratio', total: 'Total', remark: 'Remark', majorGroup: 'Major Code and Major Name' }, tooltip: { resetInvestAmount: 'Click ↻ to restore default cost amount for this column', resetLandArea: 'Click ↻ to restore default land area for this column', resetConsultCategoryFactor: 'Click ↻ to restore default consult category factor for this column', resetMajorFactor: 'Click ↻ to restore default major factor for this column', workRatio: 'This coefficient applies in two cases: service budget composition ratio, for cases where only part of the entrusted work in Appendix D Tables D.2 to D.7 of the specification is included; and quantity ratio, for cases where the calculation base uses the scale of each deliverable, batched task, single project, or unit project rather than the total amount, with quantity representing multiple items, copies, or units.' } }, pricingPane: { projectCount: 'Project Count', clearTitle: 'Confirm Clear Current Details', confirmClear: 'Confirm Clear', useDefault: 'Use Default Data', overrideTitle: 'Confirm Override Current Details', confirmOverride: 'Confirm Override', investment: { title: 'Investment Scale Details', titleHint: 'Budget amount values in this pane follow whichever was operated later between the contract scale table and this pane.', titleHintAria: 'Investment scale details hint', clearDesc: 'This will clear current investment scale details. Continue?', overrideDesc: 'Use contract default data to override current investment scale details. Continue?' }, land: { title: 'Land Scale Details', clearDesc: 'This will clear current land scale details. Continue?', overrideDesc: 'Use contract default data to override current land scale details. Continue?' } }, workloadPricing: { title: 'Workload Details', unavailableTitle: 'Workload Method Not Applicable', unavailableMessage: 'No workload tasks are associated with this service. No input is needed.', clickToInput: 'Click to input', none: 'N/A', total: 'Grand Total', columns: { code: 'Code', name: 'Name', budgetBase: 'Budget Base', budgetReferenceUnitPrice: 'Budget Reference Unit Price', budgetAdoptedUnitPrice: 'Budget Adopted Unit Price', workload: 'Workload', consultCategoryFactor: 'Consult Category Factor', serviceFee: 'Service Fee (CNY)', remark: 'Remark' } }, hourlyFeeGrid: { title: 'Hourly Method Details', clickToInput: 'Click to input', total: 'Grand Total', columns: { code: 'Code', name: 'Personnel Name', referenceUnitPrice: 'Budget Reference Unit Price', laborBudgetUnitPrice: 'Labor Budget Unit Price (CNY/workday)', compositeBudgetUnitPrice: 'Composite Budget Unit Price (CNY/workday)', adoptedBudgetUnitPrice: 'Adopted Budget Unit Price (CNY/workday)', personnelCount: 'Personnel Count', workdayCount: 'Workday Count', serviceBudget: 'Service Budget (CNY)', remark: 'Remark' } }, xmScaleGrid: { syncToastTitle: 'Consulting Services Synced', syncToastDesc: 'Scale info synced to consulting services ({serviceCount} services, {methodCount} pricing pages, {rowCount} rows)' }, xmInfo: { defaultProjectName: 'xxx Cost Consulting Service', defaultDesc: 'When providing cost consulting services, penalties should be graded by service quality. For scores >=85 and <90, penalty is 10% of budget fee; >=80 and <85: 20%; >=75 and <80: 30%; >=70 and <75: 40%; <70: 50% or above.', industryHint: 'Changing industry requires reset and re-selection', industryHintAria: 'Industry hint', reportContentHint: 'This field is optional and is only used to auto-generate report content.', reportContentHintAria: 'Report content hint', otherDescHint: 'This field is optional. The current content is only a sample. The preparer may fill it in according to actual needs or leave it blank.', otherDescHintAria: 'Other notes hint', createFromHomeFirst: 'Please create a project from Home before entering this page.', fields: { projectName: 'Project Name', projectIndustry: 'Industry', overview: 'Project Overview', preparedBy: 'Prepared By', reviewedBy: 'Reviewed By', preparedCompany: 'Prepared Company', preparedDate: 'Prepared Date', desc: 'Other Notes' }, placeholders: { overview: 'Enter project overview', desc: 'Other Notes', preparedBy: 'XXX', reviewedBy: 'XXX', preparedCompany: 'XXX' } } } as const