{
  "config": {
    "step": {
      "user": {
        "title": "Maintenance Supporter",
        "description": "Set up your maintenance management system.",
        "menu_options": {
          "create_object": "Create Maintenance Object",
          "create_from_template": "Create from Template",
          "global_setup": "Global Settings"
        }
      },
      "create_from_template": {
        "title": "Select Template Category",
        "description": "Choose a category to browse predefined maintenance templates.",
        "data": {
          "template_category": "Category",
          "go_back": "Go back"
        },
        "data_description": {
          "go_back": "Return to the main menu without saving."
        }
      },
      "template_select": {
        "title": "Select Template",
        "description": "Choose a maintenance template to use as a starting point.",
        "data": {
          "template_id": "Template",
          "go_back": "Go back"
        },
        "data_description": {
          "go_back": "Return to category selection without saving."
        }
      },
      "template_customize": {
        "title": "Customize Template",
        "description": "Customize the {template_name} template. It includes {task_count} tasks: {task_list}.",
        "data": {
          "name": "Object name",
          "area_id": "Area",
          "manufacturer": "Manufacturer",
          "model": "Model",
          "serial_number": "Serial number",
          "documentation_url": "Manual / documentation URL",
          "notes": "Notes",
          "go_back": "Go back"
        },
        "data_description": {
          "name": "A name for this maintenance object.",
          "area_id": "The area where this object is located.",
          "manufacturer": "The manufacturer of the object.",
          "model": "The model name or number.",
          "serial_number": "The serial number of the object.",
          "documentation_url": "Optional link to a PDF manual, vendor page, or any URL with reference info for this object.",
          "notes": "Free-form notes about the object — part numbers, procedures, settings reminders, etc.",
          "go_back": "Return to template selection without saving."
        }
      },
      "global_setup": {
        "title": "Global Settings",
        "description": "Configure global maintenance settings.",
        "data": {
          "default_warning_days": "Default warning days before due",
          "notifications_enabled": "Enable notifications",
          "notify_service": "Notification service"
        },
        "data_description": {
          "default_warning_days": "Number of days before a maintenance task is due to show a warning.",
          "notifications_enabled": "Send notifications when maintenance tasks become due.",
          "notify_service": "The notification service to use (e.g., notify.mobile_app_phone)."
        }
      },
      "create_object": {
        "title": "Create Maintenance Object",
        "description": "Define a device or asset to manage maintenance for.",
        "data": {
          "name": "Object name",
          "area_id": "Area",
          "manufacturer": "Manufacturer",
          "model": "Model",
          "serial_number": "Serial number",
          "documentation_url": "Manual / documentation URL",
          "notes": "Notes",
          "installation_date": "Installation date",
          "warranty_expiry": "Warranty expiry",
          "go_back": "Go back"
        },
        "data_description": {
          "name": "A unique name for this maintenance object (e.g., 'Pool Pump', 'Car').",
          "area_id": "The area in your home where this object is located.",
          "manufacturer": "The manufacturer of the object.",
          "model": "The model name or number.",
          "serial_number": "The serial number of the object.",
          "documentation_url": "Optional link to a PDF manual, vendor page, or any URL with reference info for this object.",
          "notes": "Free-form notes about the object — part numbers, procedures, settings reminders, etc.",
          "installation_date": "When this object was installed or purchased.",
          "warranty_expiry": "When the manufacturer warranty for this object expires.",
          "go_back": "Return to the main menu without saving."
        }
      },
      "task_menu": {
        "title": "Maintenance Tasks",
        "description": "Add maintenance tasks for {object_name}. Currently {task_count} task(s) defined.",
        "menu_options": {
          "add_task": "Add Maintenance Task",
          "finish": "Finish Setup"
        }
      },
      "add_task": {
        "title": "Add Maintenance Task",
        "description": "Define a maintenance task for {object_name}.",
        "data": {
          "name": "Task name",
          "type": "Maintenance type",
          "schedule_type": "Schedule type",
          "custom_icon": "Task icon",
          "go_back": "Go back"
        },
        "data_description": {
          "name": "A descriptive name for this task (e.g., 'Filter Cleaning', 'Oil Change').",
          "type": "The category of maintenance work.",
          "schedule_type": "How this task should be scheduled.",
          "custom_icon": "Optional custom icon for this task (e.g., mdi:oil, mdi:filter-variant).",
          "go_back": "Return to the task menu without saving."
        }
      },
      "time_based": {
        "title": "Time-based Schedule",
        "description": "Configure the time interval for this maintenance task.",
        "data": {
          "interval_days": "Interval",
          "interval_unit": "Interval unit",
          "last_performed": "Last performed",
          "warning_days": "Warning days before due",
          "go_back": "Go back",
          "interval_anchor": "Interval anchor"
        },
        "data_description": {
          "interval_days": "How often this maintenance repeats, combined with the interval unit.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "last_performed": "When this maintenance was last performed. Leave empty if never done.",
          "warning_days": "Number of days before due date to show a warning.",
          "go_back": "Return to task creation without saving.",
          "interval_anchor": "How the next due date is calculated after completion. 'Planned' prevents schedule drift by anchoring to the original due date."
        }
      },
      "one_time": {
        "title": "One-time Task",
        "description": "Configure a single, non-recurring maintenance task. It is archived once completed.",
        "data": {
          "due_date": "Due date",
          "warning_days": "Warning days before due",
          "go_back": "Go back"
        },
        "data_description": {
          "due_date": "The date this one-time task is due.",
          "warning_days": "Number of days before the due date to show a warning.",
          "go_back": "Return to task creation without saving."
        }
      },
      "calendar": {
        "title": "Calendar Schedule",
        "description": "Configure a calendar-based recurrence (weekdays, nth weekday of the month, or a day of the month).",
        "data": {
          "weekdays": "On these weekdays",
          "nth": "Which occurrence",
          "weekday": "Weekday",
          "day": "Day of month",
          "warning_days": "Warning days before due",
          "go_back": "Go back",
          "last_day": "Last day of the month",
          "business": "Business days only",
          "offset": "Offset (days)"
        },
        "data_description": {
          "weekdays": "The task repeats on each selected weekday.",
          "nth": "Which occurrence in the month (e.g. 1st, or Last).",
          "weekday": "The weekday for the nth-weekday rule (e.g. Saturday).",
          "day": "Day of the month (1-31; clamped to the month's length).",
          "warning_days": "Number of days before the due date to show a warning.",
          "go_back": "Return to task creation without saving.",
          "last_day": "Overrides the day number: the task is due on the month's last day.",
          "business": "Roll a weekend date back to the preceding Friday (e.g. last business day).",
          "offset": "Shift the computed date by ±N days (e.g. -2 = two days before)."
        }
      },
      "sensor_select": {
        "title": "Select Trigger Sensor",
        "description": "Choose a Home Assistant entity to monitor for this maintenance task.",
        "data": {
          "trigger_entity": "Entity to monitor",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_entity": "Select the sensor entity that should trigger this maintenance task.",
          "go_back": "Return to task creation without saving."
        }
      },
      "sensor_attribute": {
        "title": "Select Attribute",
        "description": "Choose which value to monitor from {entity_id}. Current state: {current_state} {unit}",
        "data": {
          "trigger_attribute": "Value to monitor",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_attribute": "Select the entity state or a specific attribute to monitor.",
          "go_back": "Return to entity selection without saving."
        }
      },
      "trigger_type": {
        "title": "Trigger Type",
        "description": "How should the sensor value trigger maintenance?",
        "data": {
          "trigger_type": "Trigger type",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_type": "Threshold: triggers when value exceeds limits. Counter: triggers after accumulating a target value. State Change: triggers after a number of state transitions.",
          "go_back": "Return to attribute selection without saving."
        }
      },
      "trigger_threshold": {
        "title": "Threshold Configuration",
        "description": "Set threshold values for **{entity_id}** ({attribute}).\nCurrent: **{current_value} {unit}** | Avg: {average} | Range: {minimum}–{maximum} ({data_period}d)\nSuggested above: {suggested_above} | Suggested below: {suggested_below}",
        "data": {
          "trigger_above": "Trigger when above",
          "trigger_below": "Trigger when below",
          "trigger_for_minutes": "For at least (minutes)",
          "interval_days": "Safety interval",
          "interval_unit": "Interval unit",
          "warning_days": "Warning days before due",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_above": "Trigger maintenance when value exceeds this threshold.",
          "trigger_below": "Trigger maintenance when value falls below this threshold.",
          "trigger_for_minutes": "Value must exceed threshold for this many minutes before triggering.",
          "interval_days": "Optional time-based safety interval in addition to the sensor trigger.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "warning_days": "Number of days before due date to show a warning.",
          "go_back": "Return to trigger type selection without saving."
        }
      },
      "trigger_counter": {
        "title": "Counter Configuration",
        "description": "Set counter target for {entity_id} ({attribute}). Current: {current_value} {unit}.",
        "data": {
          "trigger_target_value": "Target value",
          "trigger_delta_mode": "Delta mode (count changes, not absolute)",
          "interval_days": "Safety interval",
          "interval_unit": "Interval unit",
          "warning_days": "Warning days before due",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_target_value": "Trigger maintenance when this accumulated value is reached.",
          "trigger_delta_mode": "If enabled, counts the difference from a baseline instead of the absolute value.",
          "interval_days": "Optional time-based safety interval in addition to the counter trigger.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "warning_days": "Number of days before due date to show a warning.",
          "go_back": "Return to trigger type selection without saving."
        }
      },
      "trigger_state_change": {
        "title": "State Change Configuration",
        "description": "Count state transitions of {entity_id}.",
        "data": {
          "trigger_from_state": "From state (optional)",
          "trigger_to_state": "To state (optional)",
          "trigger_target_changes": "Number of changes to trigger",
          "interval_days": "Safety interval",
          "interval_unit": "Interval unit",
          "warning_days": "Warning days before due",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_from_state": "Only count transitions from this state. Leave empty for any.",
          "trigger_to_state": "Only count transitions to this state. Leave empty for any.",
          "trigger_target_changes": "Number of matching state changes before triggering maintenance.",
          "interval_days": "Optional time-based safety interval in addition to the state change trigger.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "warning_days": "Number of days before due date to show a warning.",
          "go_back": "Return to trigger type selection without saving."
        }
      },
      "trigger_runtime": {
        "title": "Runtime Configuration",
        "description": "Track accumulated runtime of {entity_id}. Maintenance triggers when total on-time reaches the target hours.",
        "data": {
          "trigger_runtime_hours": "Target runtime (hours)",
          "trigger_on_states": "Active states (comma-separated)",
          "interval_days": "Safety interval",
          "interval_unit": "Interval unit",
          "warning_days": "Warning days before due",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_runtime_hours": "Trigger maintenance after this many hours of accumulated runtime.",
          "trigger_on_states": "Which sensor states count as 'active'. Leave empty for default: on, 1, true. Example: in_use, running",
          "interval_days": "Optional time-based safety interval in addition to the runtime trigger.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "warning_days": "Number of days before due date to show a warning.",
          "go_back": "Return to trigger type selection without saving."
        }
      },
      "compound_logic": {
        "title": "Compound Trigger",
        "description": "Choose how multiple conditions should be combined.",
        "data": {
          "compound_logic": "Logic",
          "go_back": "Go back"
        },
        "data_description": {
          "compound_logic": "AND = all conditions must trigger. OR = any condition triggers.",
          "go_back": "Return to trigger type selection without saving."
        }
      },
      "compound_condition_entity": {
        "title": "Condition #{condition_num} — Entity",
        "description": "Select the entity for this condition.",
        "data": {
          "trigger_entity": "Entity",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_entity": "The sensor entity to monitor for this condition.",
          "go_back": "Return to previous step without saving."
        }
      },
      "compound_condition_type": {
        "title": "Condition #{condition_num} — Type",
        "description": "How should this condition evaluate the sensor?",
        "data": {
          "trigger_type": "Trigger type",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_type": "The method used to determine when this condition triggers.",
          "go_back": "Return to entity selection without saving."
        }
      },
      "compound_condition_threshold": {
        "title": "Condition — Threshold",
        "data": {
          "trigger_above": "Trigger above",
          "trigger_below": "Trigger below",
          "trigger_for_minutes": "Duration (minutes)",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_above": "Trigger when value exceeds this threshold.",
          "trigger_below": "Trigger when value drops below this threshold.",
          "trigger_for_minutes": "Value must remain beyond threshold for this duration.",
          "go_back": "Return to condition type selection without saving."
        }
      },
      "compound_condition_counter": {
        "title": "Condition — Counter",
        "data": {
          "trigger_target_value": "Target value",
          "trigger_delta_mode": "Delta mode",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_target_value": "Trigger when accumulated value reaches this target.",
          "trigger_delta_mode": "Count changes from a baseline instead of the absolute value.",
          "go_back": "Return to condition type selection without saving."
        }
      },
      "compound_condition_state_change": {
        "title": "Condition — State Change",
        "data": {
          "trigger_from_state": "From state",
          "trigger_to_state": "To state",
          "trigger_target_changes": "Number of changes",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_from_state": "Only count transitions from this state. Leave empty for any.",
          "trigger_to_state": "Only count transitions to this state. Leave empty for any.",
          "trigger_target_changes": "Number of matching state changes before triggering.",
          "go_back": "Return to condition type selection without saving."
        }
      },
      "compound_condition_runtime": {
        "title": "Condition — Runtime",
        "data": {
          "trigger_runtime_hours": "Target runtime (hours)",
          "trigger_on_states": "Active states",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_runtime_hours": "Trigger after this many hours of accumulated runtime.",
          "trigger_on_states": "Sensor states counted as 'active'. Leave empty for default.",
          "go_back": "Return to condition type selection without saving."
        }
      },
      "compound_review": {
        "title": "Compound Trigger Review",
        "description": "{condition_count} condition(s) configured with {compound_logic} logic.",
        "data": {
          "compound_action": "Action",
          "go_back": "Go back"
        },
        "data_description": {
          "go_back": "Return to logic selection without saving."
        }
      },
      "manual": {
        "title": "Manual Schedule",
        "description": "This task has no automatic schedule. You can mark it as due manually.",
        "data": {
          "warning_days": "Warning days before due",
          "notes": "Notes",
          "go_back": "Go back"
        },
        "data_description": {
          "warning_days": "Number of days before due date to show a warning.",
          "notes": "Additional notes or instructions for this task.",
          "go_back": "Return to task creation without saving."
        }
      },
      "reconfigure": {
        "title": "Reconfigure {name}",
        "description": "Update the settings for this maintenance object.",
        "data": {
          "name": "Object name",
          "area_id": "Area",
          "manufacturer": "Manufacturer",
          "model": "Model",
          "serial_number": "Serial number",
          "documentation_url": "Manual / documentation URL",
          "notes": "Notes",
          "installation_date": "Installation date",
          "warranty_expiry": "Warranty expiry"
        },
        "data_description": {
          "name": "The name of this maintenance object.",
          "area_id": "The area where this object is located.",
          "manufacturer": "The manufacturer of this object.",
          "model": "The model of this object.",
          "serial_number": "The serial number of this object.",
          "documentation_url": "Optional link to a PDF manual, vendor page, or any URL with reference info for this object.",
          "notes": "Free-form notes about the object — part numbers, procedures, settings reminders, etc.",
          "installation_date": "When this object was installed.",
          "warranty_expiry": "When the manufacturer warranty for this object expires."
        }
      }
    },
    "error": {
      "name_exists": "A maintenance object with this name already exists.",
      "no_tasks": "At least one maintenance task is required.",
      "invalid_entity": "The selected entity does not exist or has no numeric data.",
      "invalid_attribute": "The selected attribute is not available on this entity.",
      "invalid_threshold": "At least one threshold (above or below) must be set.",
      "invalid_due_date": "A due date is required for one-time tasks.",
      "invalid_interval": "Interval must be a positive number.",
      "min_exceeds_max": "Minimum interval must not exceed maximum interval.",
      "invalid_notify_service": "Invalid notification service format. Use 'notify.service_name' (e.g., notify.mobile_app_phone).",
      "notify_service_not_found": "This notification service was not found in Home Assistant. Please verify the service name.",
      "nfc_tag_duplicate": "This NFC tag is already linked to another task."
    },
    "abort": {
      "already_configured": "This maintenance object is already configured.",
      "global_already_exists": "Global settings already configured.",
      "template_not_found": "The selected template was not found.",
      "missing_data": "Required data was not provided.",
      "reconfigure_successful": "Configuration updated successfully.",
      "reconfigure_cancelled": "Reconfiguration cancelled."
    }
  },
  "options": {
    "step": {
      "init": {
        "title": "Maintenance Options",
        "description": "{object_info}",
        "menu_options": {
          "manage_tasks": "Manage Tasks",
          "add_task": "Add New Task",
          "object_settings": "Object Settings",
          "done": "Done"
        }
      },
      "global_init": {
        "title": "Global Settings",
        "description": "Configure global maintenance settings.",
        "menu_options": {
          "general_settings": "General Settings",
          "advanced_features": "Advanced Features",
          "panel_access": "Panel Access",
          "budget_settings": "Budget Settings",
          "manage_groups": "Manage Groups",
          "notification_settings": "Notification Settings",
          "notification_actions": "Interactive Actions",
          "test_notification": "Send Test Notification",
          "done": "Done"
        }
      },
      "advanced_features": {
        "title": "Advanced Features",
        "description": "Choose which advanced features to show in the UI. Disabling a feature hides it from the interface but does not delete any data.",
        "data": {
          "advanced_adaptive_visible": "Adaptive Scheduling",
          "advanced_predictions_visible": "Sensor Predictions",
          "advanced_seasonal_visible": "Seasonal Adjustments",
          "advanced_environmental_visible": "Environmental Correlation",
          "advanced_budget_visible": "Budget Tracking",
          "advanced_groups_visible": "Groups",
          "advanced_checklists_visible": "Checklists",
          "advanced_schedule_time_visible": "Time-of-day scheduling"
        },
        "data_description": {
          "advanced_adaptive_visible": "Show EWA, Weibull analysis, and interval suggestions for tasks.",
          "advanced_predictions_visible": "Show sensor degradation analysis and threshold prediction charts.",
          "advanced_seasonal_visible": "Show seasonal factor charts and monthly adjustment data.",
          "advanced_environmental_visible": "Show environmental correlation (temperature, humidity) adjustments.",
          "advanced_budget_visible": "Show monthly/yearly budget tracking and alerts.",
          "advanced_groups_visible": "Show maintenance group management.",
          "advanced_checklists_visible": "Show task checklists for step-by-step completion.",
          "advanced_schedule_time_visible": "Allow tasks to become overdue at a specific time of day instead of midnight."
        }
      },
      "panel_access": {
        "title": "Panel Access",
        "description": "Admins always have full access. To delegate create, edit and delete to specific non-admins, turn on the option below and select them — everyone else sees only Complete and Skip. Found {user_count} non-admin user(s).",
        "data": {
          "operator_write_enabled": "Allow selected users to create, edit and delete",
          "admin_panel_user_ids": "Users with full panel access"
        },
        "data_description": {
          "operator_write_enabled": "Off (default): only admins can modify content. On: the users selected below also get full create/edit/delete access.",
          "admin_panel_user_ids": "Listed users see the full panel; everyone else sees only Complete and Skip on each task."
        }
      },
      "general_settings": {
        "title": "General Settings",
        "description": "Configure basic settings for Maintenance Supporter.",
        "data": {
          "default_warning_days": "Default warning days before due",
          "notifications_enabled": "Enable notifications",
          "notify_service": "Notification service",
          "panel_enabled": "Show sidebar panel",
          "panel_title": "Sidebar panel title"
        },
        "data_description": {
          "default_warning_days": "Number of days before a maintenance task is due to show a warning.",
          "notifications_enabled": "Send notifications when maintenance tasks become due or are overdue.",
          "notify_service": "The notification service to use (e.g., notify.mobile_app_phone).",
          "panel_enabled": "Show a Maintenance Supporter panel in the sidebar.",
          "panel_title": "Custom name for the sidebar entry. Leave blank to use \"Maintenance\". Useful to avoid clashing with Home Assistant's built-in Maintenance dashboard."
        }
      },
      "notification_settings": {
        "title": "Notification Settings",
        "description": "Configure when and how often notifications are sent for each status.",
        "data": {
          "notify_due_soon_enabled": "Notify when due soon",
          "notify_due_soon_interval_hours": "Due soon reminder interval (hours)",
          "notify_overdue_enabled": "Notify when overdue",
          "notify_overdue_interval_hours": "Overdue reminder interval (hours)",
          "notify_triggered_enabled": "Notify when triggered",
          "notify_triggered_interval_hours": "Triggered reminder interval (hours)",
          "quiet_hours_enabled": "Enable quiet hours",
          "quiet_hours_start": "Quiet hours start",
          "quiet_hours_end": "Quiet hours end",
          "max_notifications_per_day": "Max notifications per day",
          "notification_bundling_enabled": "Bundle notifications",
          "notification_bundle_threshold": "Bundle threshold",
          "notification_title_style": "Notification title style"
        },
        "data_description": {
          "notify_due_soon_interval_hours": "How often to repeat the due-soon reminder. Set to 0 for a single notification.",
          "notify_overdue_interval_hours": "How often to repeat the overdue reminder. Set to 0 for a single notification.",
          "notify_triggered_interval_hours": "How often to repeat the triggered notification. Set to 0 for a single notification.",
          "quiet_hours_enabled": "Suppress notifications during quiet hours.",
          "max_notifications_per_day": "Maximum number of notifications per day. Set to 0 for unlimited.",
          "notification_bundling_enabled": "Send a single summary notification when multiple tasks need attention.",
          "notification_bundle_threshold": "Minimum number of tasks to trigger a bundled notification.",
          "notification_title_style": "What appears as the notification's TITLE. Default keeps the per-status text (e.g. 'Maintenance overdue!'). Object name / Task name help when phone notifications stack."
        }
      },
      "notification_actions": {
        "title": "Interactive Actions",
        "description": "Configure action buttons shown on mobile notifications (requires Companion App).",
        "data": {
          "action_complete_enabled": "Show 'Complete' button",
          "action_skip_enabled": "Show 'Skip' button",
          "action_snooze_enabled": "Show 'Snooze' button",
          "snooze_duration_hours": "Snooze duration (hours)"
        },
        "data_description": {
          "action_complete_enabled": "Adds a button to mark the task as completed directly from the notification.",
          "action_skip_enabled": "Adds a button to skip the current maintenance cycle from the notification.",
          "action_snooze_enabled": "Adds a button to postpone the notification reminder.",
          "snooze_duration_hours": "How long to postpone notifications when snooze is pressed."
        }
      },
      "budget_settings": {
        "title": "Budget Settings",
        "description": "Set monthly and yearly maintenance budgets to track spending.",
        "data": {
          "budget_currency": "Currency",
          "budget_monthly": "Monthly budget",
          "budget_yearly": "Yearly budget",
          "budget_alerts_enabled": "Enable budget alerts",
          "budget_alert_threshold": "Alert threshold (%)"
        },
        "data_description": {
          "budget_currency": "Currency used for budget display and notifications.",
          "budget_monthly": "Maximum monthly maintenance spending. Set to 0 to disable.",
          "budget_yearly": "Maximum yearly maintenance spending. Set to 0 to disable.",
          "budget_alerts_enabled": "Send a notification when spending exceeds the alert threshold.",
          "budget_alert_threshold": "Percentage of budget at which to send an alert."
        }
      },
      "test_notification": {
        "title": "Test Notification",
        "description": "{result}"
      },
      "manage_groups": {
        "title": "Manage Groups",
        "description": "Select a group to manage or create a new one.",
        "data": {
          "selected_group": "Select group"
        }
      },
      "add_group": {
        "title": "Add Group",
        "description": "Create a new maintenance group to organize related tasks.",
        "data": {
          "group_name": "Group name",
          "group_description": "Description"
        },
        "data_description": {
          "group_name": "A name for this group (e.g., 'Spring Maintenance').",
          "group_description": "Optional description for this group."
        }
      },
      "manage_tasks": {
        "title": "Manage Tasks",
        "description": "Select a task to edit or remove.",
        "data": {
          "selected_task": "Select task",
          "go_back": "Go back"
        }
      },
      "task_action": {
        "title": "Task Actions",
        "description": "Task: {task_name} — Choose an action.\n\nNext due dates: {next_dates}",
        "menu_options": {
          "edit_task": "Edit Task",
          "edit_trigger": "Edit Trigger",
          "remove_trigger": "Remove Trigger",
          "edit_checklist": "Edit Checklist",
          "adaptive_scheduling": "Adaptive Scheduling",
          "delete_task": "Delete Task",
          "manage_tasks": "Back"
        }
      },
      "edit_task": {
        "title": "Edit Task",
        "description": "Edit settings for **{task_name}**.",
        "data": {
          "name": "Task name",
          "type": "Maintenance type",
          "interval_days": "Interval",
          "interval_unit": "Interval unit",
          "warning_days": "Warning days before due",
          "due_date": "Due date",
          "enabled": "Enabled",
          "notes": "Notes",
          "documentation_url": "Documentation URL",
          "last_performed": "Last performed",
          "responsible_user_id": "Responsible user",
          "custom_icon": "Task icon",
          "nfc_tag_id": "NFC tag ID",
          "go_back": "Go back",
          "interval_anchor": "Interval anchor",
          "reading_unit": "Reading unit (for reading tasks, e.g. kWh)",
          "season_months": "Seasonal window (months)",
          "ends_count": "Ends after (number of times)",
          "ends_until": "Ends on date"
        },
        "data_description": {
          "name": "A descriptive name for this task (e.g., 'Filter Cleaning', 'Oil Change').",
          "type": "The category of maintenance work.",
          "interval_days": "How often this maintenance repeats, combined with the interval unit.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "warning_days": "Number of days before due date to show a warning.",
          "due_date": "The date this one-time task is due.",
          "enabled": "When disabled, scheduling and triggers are paused. The task is not deleted.",
          "notes": "Additional notes or instructions for this task.",
          "documentation_url": "Link to external documentation or manual for this task.",
          "last_performed": "When this maintenance was last performed. Leave empty if never done.",
          "responsible_user_id": "The Home Assistant user responsible for this task.",
          "custom_icon": "Optional custom icon for this task (e.g., mdi:oil, mdi:filter-variant).",
          "nfc_tag_id": "Link an NFC tag to this task. Scanning the tag will automatically mark the task as completed.",
          "go_back": "Return to task actions without saving.",
          "interval_anchor": "How the next due date is calculated after completion. 'Planned' prevents schedule drift by anchoring to the original due date.",
          "season_months": "Only due in the selected months; off-season dates roll to the next active month. Leave empty for all year.",
          "ends_count": "Stop repeating after this many completions (a finite series). Leave empty for no limit.",
          "ends_until": "Stop repeating once the next occurrence would fall after this date. Ignored when 'Ends after' is set."
        }
      },
      "edit_checklist": {
        "title": "Edit Checklist",
        "description": "Define checklist steps for {task_name}. Enter one step per line.",
        "data": {
          "checklist_text": "Checklist steps",
          "go_back": "Go back"
        },
        "data_description": {
          "checklist_text": "Enter each checklist step on a separate line. These steps will be shown when completing the task.",
          "go_back": "Return to task actions without saving."
        }
      },
      "compound_logic": {
        "title": "Compound Trigger",
        "description": "Choose how multiple conditions should be combined.",
        "data": {
          "compound_logic": "Logic",
          "go_back": "Go back"
        },
        "data_description": {
          "compound_logic": "AND = all conditions must trigger. OR = any condition triggers."
        }
      },
      "compound_condition_entity": {
        "title": "Condition #{condition_num} — Entity",
        "description": "Select the entity for this condition.",
        "data": {
          "trigger_entity": "Entity",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_entity": "The sensor entity to monitor for this condition."
        }
      },
      "compound_condition_type": {
        "title": "Condition #{condition_num} — Type",
        "description": "How should this condition evaluate the sensor?",
        "data": {
          "trigger_type": "Trigger type",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_type": "The method used to determine when this condition triggers."
        }
      },
      "compound_condition_threshold": {
        "title": "Condition — Threshold",
        "data": {
          "trigger_above": "Trigger above",
          "trigger_below": "Trigger below",
          "trigger_for_minutes": "Duration (minutes)",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_above": "Trigger when value exceeds this threshold.",
          "trigger_below": "Trigger when value drops below this threshold.",
          "trigger_for_minutes": "Value must remain beyond threshold for this duration."
        }
      },
      "compound_condition_counter": {
        "title": "Condition — Counter",
        "data": {
          "trigger_target_value": "Target value",
          "trigger_delta_mode": "Delta mode",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_target_value": "Trigger when accumulated value reaches this target.",
          "trigger_delta_mode": "Count changes from a baseline instead of the absolute value."
        }
      },
      "compound_condition_state_change": {
        "title": "Condition — State Change",
        "data": {
          "trigger_from_state": "From state",
          "trigger_to_state": "To state",
          "trigger_target_changes": "Number of changes",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_from_state": "Only count transitions from this state. Leave empty for any.",
          "trigger_to_state": "Only count transitions to this state. Leave empty for any.",
          "trigger_target_changes": "Number of matching state changes before triggering."
        }
      },
      "compound_condition_runtime": {
        "title": "Condition — Runtime",
        "data": {
          "trigger_runtime_hours": "Target runtime (hours)",
          "trigger_on_states": "Active states",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_runtime_hours": "Trigger after this many hours of accumulated runtime.",
          "trigger_on_states": "Sensor states counted as 'active'. Leave empty for default."
        }
      },
      "compound_review": {
        "title": "Compound Trigger Review",
        "description": "{condition_count} condition(s) configured with {compound_logic} logic.",
        "data": {
          "compound_action": "Action",
          "go_back": "Go back"
        }
      },
      "adaptive_scheduling": {
        "title": "Adaptive Scheduling",
        "description": "Configure smart interval adaptation for {task_name}. The system learns from your completion feedback to suggest better intervals.",
        "data": {
          "adaptive_enabled": "Enable adaptive scheduling",
          "ewa_alpha": "Learning rate (alpha)",
          "min_interval_days": "Minimum interval (days)",
          "max_interval_days": "Maximum interval (days)",
          "seasonal_enabled": "Enable seasonal awareness",
          "sensor_prediction_enabled": "Enable sensor-driven predictions",
          "environmental_entity": "Environmental sensor (optional)",
          "go_back": "Go back"
        },
        "data_description": {
          "adaptive_enabled": "When enabled, the system will learn from your feedback and suggest optimal maintenance intervals.",
          "ewa_alpha": "How quickly the algorithm adapts to new data. Higher = more responsive, lower = more stable.",
          "min_interval_days": "The shortest interval the system will ever recommend.",
          "max_interval_days": "The longest interval the system will ever recommend.",
          "seasonal_enabled": "Adjust recommendations based on seasonal patterns learned from your maintenance history.",
          "sensor_prediction_enabled": "Analyze sensor trends to predict when thresholds will be reached and suggest earlier maintenance if needed.",
          "environmental_entity": "Link a temperature, humidity or pressure sensor to correlate environmental conditions with maintenance intervals.",
          "go_back": "Return to task actions without saving."
        }
      },
      "delete_task": {
        "title": "Delete Task",
        "description": "Are you sure you want to delete the task {task_name}? This cannot be undone.",
        "data": {
          "confirm": "Confirm deletion",
          "go_back": "Go back"
        }
      },
      "remove_trigger": {
        "title": "Remove Trigger",
        "description": "Remove trigger from **{task_name}**?\n\n**Entity:** {entity_ids}\n**Type:** {trigger_type}\n**Config:** {config_details}\n\nIf all entities are removed, the schedule will revert to time-based.",
        "data": {
          "entities_to_remove": "Entities to remove",
          "confirm": "Confirm removal",
          "go_back": "Go back"
        },
        "data_description": {
          "entities_to_remove": "Select which entities to remove from this trigger. If all are removed, the entire trigger is deleted.",
          "go_back": "Return to task actions without saving."
        }
      },
      "trigger_summary": {
        "title": "Current Trigger",
        "description": "Trigger for **{task_name}**:\n\n**Entity:** {entity_ids}\n**Current state:** {current_states}\n**Type:** {trigger_type} (attribute: {attribute})\n**Config:** {config_details}",
        "menu_options": {
          "edit_trigger_proceed": "Edit Trigger",
          "task_action": "Back"
        }
      },
      "add_task": {
        "title": "Add Maintenance Task",
        "description": "Define a new maintenance task for this object.",
        "data": {
          "name": "Task name",
          "type": "Maintenance type",
          "schedule_type": "Schedule type",
          "custom_icon": "Task icon",
          "go_back": "Go back",
          "reading_unit": "Reading unit (for reading tasks, e.g. kWh)"
        },
        "data_description": {
          "name": "A descriptive name for this task (e.g., 'Filter Cleaning', 'Oil Change').",
          "type": "The category of maintenance work.",
          "schedule_type": "How this task should be scheduled.",
          "custom_icon": "Optional custom icon for this task (e.g., mdi:oil, mdi:filter-variant).",
          "go_back": "Return to the main menu without saving."
        }
      },
      "opt_time_based": {
        "title": "Time-based Schedule",
        "description": "Configure the time interval for this task.",
        "data": {
          "interval_days": "Interval",
          "interval_unit": "Interval unit",
          "last_performed": "Last performed",
          "warning_days": "Warning days before due",
          "go_back": "Go back",
          "interval_anchor": "Interval anchor"
        },
        "data_description": {
          "interval_days": "How often this maintenance repeats, combined with the interval unit.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "last_performed": "When this maintenance was last performed. Leave empty if never done.",
          "warning_days": "Number of days before due date to show a warning.",
          "go_back": "Return to the main menu without saving.",
          "interval_anchor": "How the next due date is calculated after completion. 'Planned' prevents schedule drift by anchoring to the original due date."
        }
      },
      "opt_one_time": {
        "title": "One-time Task",
        "description": "Configure a single, non-recurring maintenance task. It is archived once completed.",
        "data": {
          "due_date": "Due date",
          "warning_days": "Warning days before due",
          "go_back": "Go back"
        },
        "data_description": {
          "due_date": "The date this one-time task is due.",
          "warning_days": "Number of days before the due date to show a warning.",
          "go_back": "Return to the main menu without saving."
        }
      },
      "opt_calendar": {
        "title": "Calendar Schedule",
        "description": "Configure a calendar-based recurrence (weekdays, nth weekday of the month, or a day of the month).",
        "data": {
          "weekdays": "On these weekdays",
          "nth": "Which occurrence",
          "weekday": "Weekday",
          "day": "Day of month",
          "last_performed": "Last performed",
          "warning_days": "Warning days before due",
          "go_back": "Go back",
          "last_day": "Last day of the month",
          "business": "Business days only",
          "offset": "Offset (days)"
        },
        "data_description": {
          "weekdays": "The task repeats on each selected weekday.",
          "nth": "Which occurrence in the month (e.g. 1st, or Last).",
          "weekday": "The weekday for the nth-weekday rule (e.g. Saturday).",
          "day": "Day of the month (1-31; clamped to the month's length).",
          "last_performed": "When this maintenance was last performed. Leave empty if never done.",
          "warning_days": "Number of days before the due date to show a warning.",
          "go_back": "Return to the main menu without saving.",
          "last_day": "Overrides the day number: the task is due on the month's last day.",
          "business": "Roll a weekend date back to the preceding Friday (e.g. last business day).",
          "offset": "Shift the computed date by ±N days (e.g. -2 = two days before)."
        }
      },
      "opt_manual": {
        "title": "Manual Schedule",
        "description": "This task has no automatic schedule. You can mark it as due manually.",
        "data": {
          "warning_days": "Warning days before due",
          "notes": "Notes",
          "go_back": "Go back"
        },
        "data_description": {
          "warning_days": "Number of days before due date to show a warning.",
          "notes": "Additional notes or instructions for this task.",
          "go_back": "Return to the main menu without saving."
        }
      },
      "opt_sensor_select": {
        "title": "Select Trigger Sensor",
        "description": "Choose a Home Assistant entity to monitor.",
        "data": {
          "trigger_entity": "Entity to monitor",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_entity": "Select the sensor entity that should trigger this maintenance task."
        }
      },
      "opt_sensor_attribute": {
        "title": "Select Attribute",
        "description": "Choose which value to monitor from {entity_id}. Current state: {current_state} {unit}",
        "data": {
          "trigger_attribute": "Value to monitor",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_attribute": "Select the entity state or a specific attribute to monitor."
        }
      },
      "opt_trigger_type": {
        "title": "Trigger Type",
        "description": "How should the sensor value trigger maintenance?",
        "data": {
          "trigger_type": "Trigger type",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_type": "Threshold: triggers when value exceeds limits. Counter: triggers after accumulating a target value. State Change: triggers after a number of state transitions."
        }
      },
      "opt_trigger_threshold": {
        "title": "Threshold Configuration",
        "description": "Set threshold values for **{entity_id}** ({attribute}).\nCurrent: **{current_value} {unit}** | Avg: {average} | Range: {minimum}–{maximum} ({data_period}d)\nSuggested above: {suggested_above} | Suggested below: {suggested_below}",
        "data": {
          "trigger_above": "Trigger when above",
          "trigger_below": "Trigger when below",
          "trigger_for_minutes": "For at least (minutes)",
          "interval_days": "Safety interval",
          "interval_unit": "Interval unit",
          "warning_days": "Warning days before due",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_above": "Trigger maintenance when value exceeds this threshold.",
          "trigger_below": "Trigger maintenance when value falls below this threshold.",
          "trigger_for_minutes": "Value must exceed threshold for this many minutes before triggering.",
          "interval_days": "Optional time-based safety interval in addition to the sensor trigger.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "warning_days": "Number of days before due date to show a warning."
        }
      },
      "opt_trigger_counter": {
        "title": "Counter Configuration",
        "description": "Set counter target for {entity_id} ({attribute}). Current: {current_value} {unit}.",
        "data": {
          "trigger_target_value": "Target value",
          "trigger_delta_mode": "Delta mode (count changes, not absolute)",
          "interval_days": "Safety interval",
          "interval_unit": "Interval unit",
          "warning_days": "Warning days before due",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_target_value": "Trigger maintenance when this accumulated value is reached.",
          "trigger_delta_mode": "If enabled, counts the difference from a baseline instead of the absolute value.",
          "interval_days": "Optional time-based safety interval in addition to the counter trigger.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "warning_days": "Number of days before due date to show a warning."
        }
      },
      "opt_trigger_state_change": {
        "title": "State Change Configuration",
        "description": "Count state transitions of {entity_id}.",
        "data": {
          "trigger_from_state": "From state (optional)",
          "trigger_to_state": "To state (optional)",
          "trigger_target_changes": "Number of changes to trigger",
          "interval_days": "Safety interval",
          "interval_unit": "Interval unit",
          "warning_days": "Warning days before due",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_from_state": "Only count transitions from this state. Leave empty for any.",
          "trigger_to_state": "Only count transitions to this state. Leave empty for any.",
          "trigger_target_changes": "Number of matching state changes before triggering maintenance.",
          "interval_days": "Optional time-based safety interval in addition to the state change trigger.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "warning_days": "Number of days before due date to show a warning."
        }
      },
      "opt_trigger_runtime": {
        "title": "Runtime Configuration",
        "description": "Track accumulated runtime of {entity_id}.",
        "data": {
          "trigger_runtime_hours": "Target runtime (hours)",
          "trigger_on_states": "Active states (comma-separated)",
          "interval_days": "Safety interval",
          "interval_unit": "Interval unit",
          "warning_days": "Warning days before due",
          "go_back": "Go back"
        },
        "data_description": {
          "trigger_runtime_hours": "Trigger maintenance after this many hours of accumulated runtime.",
          "trigger_on_states": "Which sensor states count as 'active'. Leave empty for default: on, 1, true. Example: in_use, running",
          "interval_days": "Optional time-based safety interval in addition to the runtime trigger.",
          "interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
          "warning_days": "Number of days before due date to show a warning."
        }
      },
      "object_settings": {
        "title": "Object Settings",
        "description": "Edit object details.",
        "data": {
          "name": "Object name",
          "manufacturer": "Manufacturer",
          "model": "Model",
          "serial_number": "Serial number",
          "documentation_url": "Manual / documentation URL",
          "notes": "Notes",
          "area_id": "Area",
          "installation_date": "Installation date",
          "warranty_expiry": "Warranty expiry",
          "go_back": "Go back"
        },
        "data_description": {
          "name": "A unique name for this maintenance object (e.g., 'Pool Pump', 'Car').",
          "manufacturer": "The manufacturer of the object.",
          "model": "The model name or number.",
          "serial_number": "The serial number of the object.",
          "documentation_url": "Optional link to a PDF manual, vendor page, or any URL with reference info for this object.",
          "notes": "Free-form notes about the object — part numbers, procedures, settings reminders, etc.",
          "area_id": "The area in your home where this object is located.",
          "installation_date": "When this object was installed or purchased.",
          "warranty_expiry": "When the manufacturer warranty for this object expires.",
          "go_back": "Return to the main menu without saving."
        }
      }
    }
  },
  "entity": {
    "button": {
      "button_complete": {
        "name": "{task_name} Complete"
      },
      "button_skip": {
        "name": "{task_name} Skip"
      },
      "button_reset": {
        "name": "{task_name} Reset"
      }
    },
    "sensor": {
      "maintenance_task": {
        "name": "{task_name}",
        "state": {
          "ok": "OK",
          "due_soon": "Due Soon",
          "overdue": "Overdue",
          "triggered": "Triggered",
          "archived": "Archived",
          "paused": "Paused"
        },
        "state_attributes": {
          "maintenance_type": {
            "name": "Maintenance type",
            "state": {
              "cleaning": "Cleaning",
              "inspection": "Inspection",
              "replacement": "Replacement",
              "calibration": "Calibration",
              "service": "Service",
              "reading": "Reading",
              "custom": "Custom"
            }
          },
          "schedule_type": {
            "name": "Schedule type",
            "state": {
              "time_based": "Time-based",
              "sensor_based": "Sensor-based",
              "one_time": "One-time",
              "manual": "Manual"
            }
          },
          "interval_days": {
            "name": "Interval"
          },
          "interval_unit": {
            "name": "Interval unit"
          },
          "warning_days": {
            "name": "Warning days"
          },
          "last_performed": {
            "name": "Last performed"
          },
          "next_due": {
            "name": "Next due"
          },
          "days_until_due": {
            "name": "Days until due"
          },
          "parent_object": {
            "name": "Parent object"
          },
          "times_performed": {
            "name": "Times performed"
          },
          "total_cost": {
            "name": "Total cost"
          },
          "average_duration": {
            "name": "Average duration (min)"
          },
          "notes": {
            "name": "Notes"
          },
          "documentation_url": {
            "name": "Documentation URL"
          },
          "trigger_entity": {
            "name": "Trigger entity"
          },
          "trigger_attribute": {
            "name": "Trigger attribute"
          },
          "trigger_type": {
            "name": "Trigger type",
            "state": {
              "threshold": "Threshold",
              "counter": "Counter",
              "state_change": "State change",
              "runtime": "Runtime",
              "compound": "Compound"
            }
          },
          "trigger_active": {
            "name": "Trigger active"
          },
          "trigger_current_value": {
            "name": "Trigger current value"
          },
          "trigger_entity_state": {
            "name": "Trigger entity state",
            "state": {
              "available": "Available",
              "unavailable": "Unavailable",
              "missing": "Missing",
              "startup": "Startup"
            }
          },
          "trigger_above": {
            "name": "Trigger above"
          },
          "trigger_below": {
            "name": "Trigger below"
          },
          "trigger_for_minutes": {
            "name": "Trigger for (minutes)"
          },
          "trigger_target_value": {
            "name": "Trigger target value"
          },
          "trigger_delta_mode": {
            "name": "Trigger delta mode"
          },
          "trigger_baseline_value": {
            "name": "Trigger baseline value"
          },
          "trigger_current_delta": {
            "name": "Trigger current delta"
          },
          "trigger_from_state": {
            "name": "Trigger from state"
          },
          "trigger_to_state": {
            "name": "Trigger to state"
          },
          "trigger_target_changes": {
            "name": "Trigger target changes"
          },
          "trigger_change_count": {
            "name": "Trigger change count"
          },
          "trigger_runtime_hours": {
            "name": "Target runtime (hours)"
          },
          "trigger_accumulated_hours": {
            "name": "Accumulated runtime (hours)"
          },
          "trigger_remaining_hours": {
            "name": "Remaining runtime (hours)"
          },
          "last_entry": {
            "name": "Last entry"
          },
          "suggested_interval": {
            "name": "Suggested interval"
          },
          "interval_confidence": {
            "name": "Interval confidence",
            "state": {
              "low": "Low",
              "medium": "Medium",
              "high": "High"
            }
          },
          "adaptive_scheduling_enabled": {
            "name": "Adaptive scheduling enabled"
          },
          "seasonal_factor": {
            "name": "Seasonal factor"
          },
          "seasonal_reason": {
            "name": "Seasonal reason",
            "state": {
              "learned": "Learned",
              "manual": "Manual"
            }
          },
          "degradation_rate": {
            "name": "Degradation rate"
          },
          "degradation_trend": {
            "name": "Degradation trend",
            "state": {
              "rising": "Rising",
              "falling": "Falling",
              "stable": "Stable",
              "insufficient_data": "Insufficient data"
            }
          },
          "days_until_threshold": {
            "name": "Days until threshold"
          },
          "threshold_prediction_confidence": {
            "name": "Prediction confidence",
            "state": {
              "low": "Low",
              "medium": "Medium",
              "high": "High"
            }
          },
          "environmental_factor": {
            "name": "Environmental factor"
          },
          "environmental_entity": {
            "name": "Environmental entity"
          },
          "weibull_beta": {
            "name": "Weibull shape (β)"
          },
          "weibull_eta": {
            "name": "Weibull scale (η)"
          },
          "weibull_r_squared": {
            "name": "Weibull R²"
          },
          "weibull_beta_interpretation": {
            "name": "Failure pattern",
            "state": {
              "early_failures": "Early failures",
              "random_failures": "Random failures",
              "wear_out": "Wear-out",
              "highly_predictable": "Highly predictable"
            }
          },
          "confidence_interval_low": {
            "name": "Confidence interval (low)"
          },
          "confidence_interval_high": {
            "name": "Confidence interval (high)"
          },
          "interval_anchor": {
            "name": "Interval anchor",
            "state": {
              "completion": "From completion",
              "planned": "From planned date"
            }
          },
          "due_date": {
            "name": "Due date"
          }
        }
      },
      "summary_overdue": {
        "name": "Overdue"
      },
      "summary_due_soon": {
        "name": "Due soon"
      },
      "summary_triggered": {
        "name": "Triggered"
      },
      "summary_needs_attention": {
        "name": "Needs attention"
      },
      "summary_ok": {
        "name": "OK"
      },
      "document_storage": {
        "name": "Document storage"
      },
      "summary_total_tasks": {
        "name": "Total tasks"
      },
      "next_due": {
        "name": "{task_name} Next due"
      },
      "days_until_due": {
        "name": "{task_name} Days until due"
      },
      "parts_to_reorder": {
        "name": "Parts to reorder"
      },
      "batteries_to_replace": {
        "name": "Batteries to replace"
      }
    },
    "calendar": {
      "maintenance_schedule": {
        "name": "Maintenance Schedule"
      }
    },
    "binary_sensor": {
      "maintenance_task_due": {
        "name": "{task_name} overdue",
        "state_attributes": {
          "maintenance_status": {
            "name": "Maintenance status",
            "state": {
              "ok": "OK",
              "due_soon": "Due Soon",
              "overdue": "Overdue",
              "triggered": "Triggered",
              "archived": "Archived"
            }
          },
          "days_until_due": {
            "name": "Days until due"
          },
          "next_due": {
            "name": "Next due"
          },
          "parent_object": {
            "name": "Parent object"
          }
        }
      }
    },
    "todo": {
      "maintenance_todo": {
        "name": "Maintenance"
      }
    }
  },
  "selector": {
    "maintenance_type": {
      "options": {
        "cleaning": "Cleaning",
        "inspection": "Inspection",
        "replacement": "Replacement",
        "calibration": "Calibration",
        "service": "Service",
        "reading": "Reading",
        "custom": "Custom"
      }
    },
    "schedule_type": {
      "options": {
        "time_based": "Time-based",
        "weekdays": "Weekdays",
        "nth_weekday": "Nth weekday of month",
        "day_of_month": "Day of month",
        "sensor_based": "Sensor-based",
        "one_time": "One-time",
        "manual": "Manual"
      }
    },
    "interval_unit": {
      "options": {
        "days": "Days",
        "weeks": "Weeks",
        "months": "Months",
        "years": "Years"
      }
    },
    "trigger_type": {
      "options": {
        "threshold": "Threshold",
        "counter": "Counter",
        "state_change": "State Change",
        "runtime": "Runtime",
        "compound": "Compound (Multiple Conditions)"
      }
    },
    "compound_logic": {
      "options": {
        "and": "AND (all conditions must trigger)",
        "or": "OR (any condition triggers)"
      }
    },
    "entity_logic": {
      "options": {
        "any": "Any entity triggers",
        "all": "All entities must trigger"
      }
    },
    "notification_title_style": {
      "options": {
        "default": "Default (per-status title)",
        "object_name": "Object name as title",
        "task_name": "Task name as title"
      }
    }
  },
  "services": {
    "complete": {
      "name": "Complete Maintenance",
      "description": "Mark a maintenance task as completed.",
      "fields": {
        "entity_id": {
          "name": "Entity",
          "description": "The maintenance sensor entity to complete."
        },
        "notes": {
          "name": "Notes",
          "description": "Optional notes about the maintenance performed."
        },
        "cost": {
          "name": "Cost",
          "description": "Cost of the maintenance performed."
        },
        "duration": {
          "name": "Duration",
          "description": "Duration of the maintenance in minutes."
        },
        "reading_value": {
          "name": "Reading value",
          "description": "Recorded value for reading-type tasks (meter reading, level check)."
        }
      }
    },
    "reset": {
      "name": "Reset Maintenance",
      "description": "Reset the last performed date of a maintenance task.",
      "fields": {
        "entity_id": {
          "name": "Entity",
          "description": "The maintenance sensor entity to reset."
        },
        "date": {
          "name": "Date",
          "description": "The date to set as last performed. Defaults to today."
        }
      }
    },
    "skip": {
      "name": "Skip Maintenance",
      "description": "Skip the current maintenance cycle.",
      "fields": {
        "entity_id": {
          "name": "Entity",
          "description": "The maintenance sensor entity to skip."
        },
        "reason": {
          "name": "Reason",
          "description": "Optional reason for skipping the maintenance."
        }
      }
    },
    "export_data": {
      "name": "Export Data",
      "description": "Export all maintenance data as JSON or YAML.",
      "fields": {
        "format": {
          "name": "Format",
          "description": "Output format for the exported data (json or yaml)."
        },
        "include_history": {
          "name": "Include History",
          "description": "Whether to include task history entries in the export."
        }
      }
    },
    "add_object": {
      "name": "Add Object",
      "description": "Create a new maintenance object (device). Returns the new entry_id.",
      "fields": {
        "name": {
          "name": "Name",
          "description": "Name of the object/device."
        },
        "area_id": {
          "name": "Area",
          "description": "Area to assign the device to."
        },
        "manufacturer": {
          "name": "Manufacturer"
        },
        "model": {
          "name": "Model"
        },
        "serial_number": {
          "name": "Serial number"
        },
        "installation_date": {
          "name": "Installation date"
        },
        "warranty_expiry": {
          "name": "Warranty expiry",
          "description": "Warranty expiry date (used for asset tracking and reminders)."
        },
        "documentation_url": {
          "name": "Documentation URL",
          "description": "Link to a manual or vendor page (http/https only)."
        },
        "notes": {
          "name": "Notes"
        }
      }
    },
    "add_task": {
      "name": "Add Task",
      "description": "Add a maintenance task to an existing object. Returns the new task_id.",
      "fields": {
        "entry_id": {
          "name": "Object",
          "description": "The maintenance object to add the task to."
        },
        "name": {
          "name": "Name",
          "description": "Name of the task."
        },
        "task_type": {
          "name": "Task type",
          "description": "Free-form category (e.g. inspection, service, custom)."
        },
        "schedule_type": {
          "name": "Schedule type",
          "description": "time_based (interval) or sensor_based. Default: time_based."
        },
        "interval_days": {
          "name": "Interval",
          "description": "Interval length between occurrences (for time-based tasks), combined with interval_unit."
        },
        "interval_unit": {
          "name": "Interval unit",
          "description": "Unit for the interval: days, weeks, months or years. Default: days."
        },
        "due_date": {
          "name": "Due date",
          "description": "Due date (YYYY-MM-DD) for a one-time task (schedule_type one_time)."
        },
        "schedule": {
          "name": "Calendar schedule",
          "description": "Nested recurrence for the calendar kinds, e.g. kind=nth_weekday, nth=1, weekday=5 for the 1st Saturday (weekday 0=Mon ... 6=Sun), kind=weekdays, weekdays=[0, 3] for Mon & Thu, or kind=day_of_month, day=15. Takes precedence over interval_days / schedule_type."
        },
        "warning_days": {
          "name": "Warning (days)",
          "description": "Days before due to enter the due-soon window."
        },
        "enabled": {
          "name": "Enabled"
        },
        "notes": {
          "name": "Notes"
        }
      }
    },
    "update_task": {
      "name": "Update Task",
      "description": "Update the common fields of an existing maintenance task. Only the provided fields change.",
      "fields": {
        "entry_id": {
          "name": "Object",
          "description": "The maintenance object the task belongs to."
        },
        "task_id": {
          "name": "Task ID",
          "description": "The id of the task to update (see list_tasks)."
        },
        "name": {
          "name": "Name",
          "description": "New name of the task."
        },
        "task_type": {
          "name": "Task type",
          "description": "Category (cleaning, inspection, replacement, calibration, service, reading, custom)."
        },
        "schedule_type": {
          "name": "Schedule type",
          "description": "time_based (interval), sensor_based, one_time or manual."
        },
        "interval_days": {
          "name": "Interval",
          "description": "Interval length between occurrences, combined with interval_unit."
        },
        "interval_unit": {
          "name": "Interval unit",
          "description": "days, weeks, months or years."
        },
        "due_date": {
          "name": "Due date",
          "description": "Due date for one-time tasks (YYYY-MM-DD)."
        },
        "schedule": {
          "name": "Schedule (calendar recurrence)",
          "description": "Nested recurrence object for the calendar kinds, e.g. kind=day_of_month, day=-1, business=true. Takes precedence over the flat fields."
        },
        "warning_days": {
          "name": "Warning days",
          "description": "Days before due when the task turns due-soon."
        },
        "enabled": {
          "name": "Enabled",
          "description": "Whether the task is active."
        },
        "notes": {
          "name": "Notes",
          "description": "Free-form notes on the task."
        },
        "priority": {
          "name": "Priority",
          "description": "low, normal or high."
        },
        "labels": {
          "name": "Labels",
          "description": "List of tags for filtering and reporting."
        }
      }
    },
    "delete_task": {
      "name": "Delete Task",
      "description": "Delete a maintenance task including its history. This cannot be undone - consider archiving via the panel instead.",
      "fields": {
        "entry_id": {
          "name": "Object",
          "description": "The maintenance object the task belongs to."
        },
        "task_id": {
          "name": "Task ID",
          "description": "The id of the task to delete (see list_tasks)."
        }
      }
    },
    "list_tasks": {
      "name": "List Tasks",
      "description": "Return a snapshot of active maintenance tasks (id, name, status, next due) for automations, scripts and voice. Supports filtering by object and status.",
      "fields": {
        "entry_id": {
          "name": "Object",
          "description": "Only return tasks of this maintenance object."
        },
        "status": {
          "name": "Status",
          "description": "Only return tasks with this status."
        }
      }
    }
  },
  "issues": {
    "document_storage_issues": {
      "title": "Document storage needs cleanup",
      "fix_flow": {
        "step": {
          "init": {
            "title": "Reclaim document storage",
            "description": "Maintenance Supporter found unreferenced files and/or dead records in document storage — usually the aftermath of a crash, an external file deletion, or a partial restore.\n\nClick **Submit** to reclaim the space: unreferenced and stale files are deleted and dead document records are removed. Files still referenced by a document are never touched.\n\n(To dismiss without cleaning up, use Home Assistant's **Ignore** button on the Repairs page.)"
          }
        }
      }
    },
    "missing_trigger_entity": {
      "title": "Trigger sensor not found: {task_name}",
      "fix_flow": {
        "step": {
          "init": {
            "title": "Missing trigger entity",
            "description": "The sensor entity `{entity_id}` configured as trigger for task \"{task_name}\" on object \"{object_name}\" is no longer available.\n\nChoose how to resolve this issue:",
            "menu_options": {
              "replace_entity": "Replace with a different entity",
              "remove_trigger": "Remove the sensor trigger",
              "dismiss": "Dismiss (will reappear)"
            }
          },
          "replace_entity": {
            "title": "Replace trigger entity",
            "description": "Select a new entity to replace `{entity_id}` as trigger for task \"{task_name}\" on \"{object_name}\".",
            "data": {
              "new_entity_id": "New trigger entity"
            },
            "data_description": {
              "new_entity_id": "Select the new sensor entity to use as trigger."
            }
          },
          "remove_trigger": {
            "title": "Remove sensor trigger",
            "description": "This will remove the sensor trigger from task \"{task_name}\" on \"{object_name}\" and convert the schedule to time-based or manual. The maintenance history will be preserved.\n\nPrevious trigger entity: `{entity_id}`"
          }
        }
      }
    },
    "orphan_admin_panel_user": {
      "title": "Panel-access user no longer exists",
      "fix_flow": {
        "step": {
          "init": {
            "title": "Orphaned user in panel-access list",
            "description": "User `{user_id}…` is in the Maintenance Supporter panel-access list but no longer exists in Home Assistant. Probably the user was deleted.\n\nClick **Submit** to remove this user from the list. (To leave the issue alone, use Home Assistant's **Ignore** button on the Repairs page instead.)"
          }
        }
      }
    },
    "stale_action_entity": {
      "title": "Completion action references a deleted entity",
      "fix_flow": {
        "step": {
          "init": {
            "title": "Completion action: {stale_entity} no longer exists",
            "description": "The task **{task_name}** has an `on_complete_action` configured to call a service on `{stale_entity}`, but that entity is no longer registered in Home Assistant.\n\nChoose how to repair:",
            "menu_options": {
              "replace_entity": "Replace with a different entity",
              "remove_action": "Remove the completion action"
            }
          },
          "replace_entity": {
            "title": "Replace target entity",
            "description": "Pick the entity to use instead of `{stale_entity}` for task **{task_name}**.",
            "data": {
              "new_entity": "New target entity"
            }
          },
          "remove_action": {
            "title": "Remove completion action",
            "description": "Clear the `on_complete_action` from task **{task_name}** entirely. The task itself is unaffected — only the on-complete service-call is removed."
          }
        }
      }
    },
    "notify_service_missing": {
      "title": "Notification service `{service}` not found",
      "description": "Maintenance Supporter is configured to send notifications via `{service}`, but that service does not currently exist in Home Assistant, so reminders fail silently.\n\nThis usually means the service was renamed, or the integration behind it (a mobile app, a notify group, …) was removed. To fix it: restore that service, or open **Settings → Devices & Services → Maintenance Supporter → Configure → General settings** and pick a valid `notify.*` service.\n\nNote: this only checks the configured service itself. If notifications reach some devices but not others, a member *inside* your notify group is likely misconfigured — that is not visible here; check Home Assistant's **system log** (Settings → System → Logs)."
    },
    "missing_global_entry": {
      "title": "Maintenance Supporter global configuration is missing",
      "fix_flow": {
        "step": {
          "init": {
            "title": "Restore the global configuration",
            "description": "Your maintenance objects still exist, but the global \"Maintenance Supporter\" entry was deleted — so the summary sensors, the sidebar panel and the dashboard counts are gone, and the KPI chips read \"unknown\".\n\nClick **Submit** to recreate the global configuration with default settings. Your objects and tasks are left untouched. You can adjust notifications and defaults afterwards under Settings → Devices & Services.\n\n(To leave things as they are, use Home Assistant's **Ignore** button.)"
          }
        }
      }
    }
  },
  "exceptions": {
    "no_coordinator_for_entity": {
      "message": "No maintenance coordinator found for entity {entity_id}."
    },
    "no_task_for_entity": {
      "message": "No maintenance task found for entity {entity_id}."
    }
  },
  "triggers": {
    "task_became_overdue": {
      "name": "A maintenance task became overdue",
      "description": "Triggers when a maintenance task's status changes to overdue.",
      "fields": {
        "behavior": {
          "name": "Behavior"
        },
        "for": {
          "name": "For"
        }
      }
    },
    "task_became_due_soon": {
      "name": "A maintenance task became due soon",
      "description": "Triggers when a maintenance task enters its warning window.",
      "fields": {
        "behavior": {
          "name": "Behavior"
        },
        "for": {
          "name": "For"
        }
      }
    },
    "sensor_trigger_activated": {
      "name": "A sensor trigger activated",
      "description": "Triggers when a sensor-based maintenance task activates.",
      "fields": {
        "behavior": {
          "name": "Behavior"
        },
        "for": {
          "name": "For"
        }
      }
    },
    "task_became_ok": {
      "name": "A maintenance task returned to OK",
      "description": "Triggers when a maintenance task no longer needs attention.",
      "fields": {
        "behavior": {
          "name": "Behavior"
        },
        "for": {
          "name": "For"
        }
      }
    }
  },
  "conditions": {
    "task_is_overdue": {
      "name": "A maintenance task is overdue",
      "description": "Tests if a maintenance task is overdue.",
      "fields": {
        "behavior": {
          "name": "Behavior"
        },
        "for": {
          "name": "For"
        }
      }
    },
    "task_is_due_soon": {
      "name": "A maintenance task is due soon",
      "description": "Tests if a maintenance task is in its warning window.",
      "fields": {
        "behavior": {
          "name": "Behavior"
        },
        "for": {
          "name": "For"
        }
      }
    },
    "task_is_triggered": {
      "name": "A sensor trigger is active",
      "description": "Tests if a sensor-based maintenance task is triggered.",
      "fields": {
        "behavior": {
          "name": "Behavior"
        },
        "for": {
          "name": "For"
        }
      }
    },
    "task_needs_attention": {
      "name": "A maintenance task needs attention",
      "description": "Tests if a maintenance task is overdue or triggered.",
      "fields": {
        "behavior": {
          "name": "Behavior"
        },
        "for": {
          "name": "For"
        }
      }
    }
  }
}
