{% extends 'mastery/base.html' %} {% load i18n %} {% load humanize %} {% load evelinks %} {% load l10n %} {% translate "Copied!" as copied_label %} {% block details %}

{{ fitting.ship_type.name }} {{ fitting.name }} {% include 'mastery/partials/_priority_badge.html' with priority=fitting_priority %}

{{ fitting.ship_type.name }}{% if doctrine %} · {% translate "Doctrine" %}: {{ doctrine.name }}{% endif %} {% if doctrine %}{% include 'mastery/partials/_priority_badge.html' with priority=doctrine_priority %}{% endif %}
{% translate "Back to Skill Mastery" %} {% translate "View fitting" %} {% if doctrine %} {% translate "View doctrine" %} {% endif %} {% if perms.mastery.manage_fittings %} {% translate "Edit skill plan" %} {% endif %}
{% translate "Character readiness" %} {% blocktranslate with visible=filtered_character_rows|length total=character_rows|length %}{{ visible }}/{{ total }} visible{% endblocktranslate %}
{% if selected_character %}{% endif %} {% if summary_group_id %}{% endif %} {% if summary_group_id and include_inactive %}{% endif %}
{% if summary_group_id %}
{% endif %}
{% for row in filtered_character_rows %} {% empty %} {% endfor %}
{% translate "Character" %} {% translate "Required" %} {% translate "Recommended" %} {% translate "Gap" %} {% translate "Details" %}
{{ row.character.eve_character.character_name }} {{ row.character.eve_character.character_name }}
{{ row.progress.required_pct }}%
{{ row.progress.recommended_pct }}%
{{ row.progress.status_label }}
{{ row.progress.missing_recommended_count }} skill{{ row.progress.missing_recommended_count|pluralize }} {% if row.progress.total_missing_sp %} · {{ row.progress.total_missing_sp|intcomma }} SP {% endif %}
{% if row.is_selected %} {% translate "Selected" %} {% else %} {% translate "Select" %} {% endif %}
{% translate "No characters match the current filter." %}
{% if selected_character and selected_progress %}
{% translate "Export mode (affects the whole view)" %}
{% translate "Active mode:" %} {{ export_mode_label }}
{% for value, label in export_mode_choices %} {{ label }} {% endfor %}
{% if summary_group_id %}{% endif %} {% if summary_group_id %}{% endif %} {% if summary_group_id and include_inactive %}{% endif %}
{% translate "Selected pilot" %}
{{ selected_character.eve_character.character_name }}
{{ selected_character.eve_character.character_name }}
{{ selected_progress.status_label }}
{% translate "Coverage" %}
{% if selected_mode_stats %}{{ selected_mode_stats.coverage_pct }}%{% else %}0%{% endif %}
{% translate "Missing SP" %}
{% if selected_mode_stats %}{{ selected_mode_stats.total_missing_sp|intcomma }}{% else %}0{% endif %}
{% translate "Estimated training" %}
{% if selected_mode_stats and selected_mode_stats.total_missing_time is not None %}{{ selected_mode_stats.total_missing_time }}{% else %}{% translate "Unknown" %}{% endif %}
{% if skill_plan_summary %}
{% translate "Plan advisory" %}
{% blocktranslate with label=export_mode_label %}{{ label }} training plan overview{% endblocktranslate %}
{% translate "Quick read on remap efficiency, injector fallback and the overall scope of the current plan." %}
{% blocktranslate count count=skill_plan_summary.line_count %}{{ count }} step{% plural %}{{ count }} steps{% endblocktranslate %} {% blocktranslate count count=skill_plan_summary.unique_skill_count %}{{ count }} skill{% plural %}{{ count }} skills{% endblocktranslate %} {{ skill_plan_summary.total_missing_sp|intcomma }} SP
{% translate "Neural remap advisory" %}
{% translate "Best attribute focus for this plan" %}
{% if skill_plan_summary.optimal_remap %} {{ skill_plan_summary.optimal_remap.primary_label }} / {{ skill_plan_summary.optimal_remap.secondary_label }} {% endif %}
{% if skill_plan_summary.optimal_remap %}
{% translate "Recommended focus" %}
{{ skill_plan_summary.optimal_remap.primary_label }} / {{ skill_plan_summary.optimal_remap.secondary_label }}
{% translate "This is the remap pairing that minimizes training time across the current exported plan." %}
{% translate "Training time comparison" %}
{% if skill_plan_summary.optimal_remap.has_implant_bonus %}
{% translate "Implant bonuses are included in both current and recommended simulations." %}
{% endif %}
{% translate "Best-case with suggested remap" %} {{ skill_plan_summary.optimal_remap.estimated_time }}
{% if skill_plan_summary.optimal_remap.current_time is not None %}
{% translate "With current attributes" %} {{ skill_plan_summary.optimal_remap.current_time }}
{% translate "Potential time saved" %} {{ skill_plan_summary.optimal_remap.time_saved }}
{% else %}
{% translate "Current attribute data is unavailable, so only the optimal remap estimate can be shown." %}
{% endif %}
{% translate "Suggested remap values" %}
{% for attribute in skill_plan_summary.optimal_remap.attributes %} {{ attribute.label }} {% translate "Base" %} {{ attribute.base_value }} {% if skill_plan_summary.optimal_remap.has_implant_bonus %} · {% translate "With implants" %} {{ attribute.effective_value }} {% endif %} {% endfor %}
{% if skill_plan_summary.optimal_remap.current_attributes_rows %}
{% translate "Current character attributes" %}
{% for attribute in skill_plan_summary.optimal_remap.current_attributes_rows %} {{ attribute.label }} {% translate "Base" %} {{ attribute.base_value }} {% if skill_plan_summary.optimal_remap.has_implant_bonus %} · {% translate "With implants" %} {{ attribute.effective_value }} {% endif %} {% endfor %}
{% endif %} {% if skill_plan_summary.optimal_remap.implant_bonus_rows %}
{% translate "Detected implant bonuses" %}
{% for attribute in skill_plan_summary.optimal_remap.implant_bonus_rows %} {{ attribute.label }} +{{ attribute.value }} {% endfor %}
{% endif %} {% else %}
{% translate "Unable to determine an optimal remap for this plan." %}
{% endif %}
{% translate "Injector fallback" %}
{% translate "Large Skill Injectors" %}
{% if skill_plan_summary.injector_estimate.known %} {% translate "Estimated" %} {% else %} {% translate "Unavailable" %} {% endif %}
Large Skill Injector
{% blocktranslate with mode=export_mode_label|lower %}Estimated injectors for this {{ mode }} plan{% endblocktranslate %}
{% if skill_plan_summary.injector_estimate.known %} {{ skill_plan_summary.injector_estimate.count }} {% else %} ? {% endif %}
{% if skill_plan_summary.injector_estimate.known %} {% translate "Approximate fallback if you finish the plan with injectors only." %} {% else %} {% translate "Character total SP is missing, so the injector estimate cannot be derived." %} {% endif %}
{% translate "Plan SP to cover" %} {{ skill_plan_summary.total_missing_sp|intcomma }} SP
{% translate "Unallocated SP available" %} {% if skill_plan_summary.current_unallocated_sp is not None %}{{ skill_plan_summary.current_unallocated_sp|intcomma }} SP{% else %}—{% endif %}
{% translate "Remaining after unallocated SP" %} {{ skill_plan_summary.remaining_sp_after_unallocated|intcomma }} SP
{% translate "Current character total SP" %} {% if skill_plan_summary.current_total_sp is not None %}{{ skill_plan_summary.current_total_sp|intcomma }} SP{% else %}—{% endif %}
{% if skill_plan_summary.injector_estimate.known %}
{% translate "Current yield per injector" %} {{ skill_plan_summary.injector_estimate.current_gain_per_injector|intcomma }} SP
{% translate "Injector SP applied" %} {{ skill_plan_summary.injector_estimate.gained_sp|intcomma }} SP
{% translate "Projected total SP after injectors" %} {{ skill_plan_summary.injector_estimate.final_total_sp|intcomma }} SP
{% if skill_plan_summary.injector_estimate.overage_sp %}
{% translate "Injector overage" %} {{ skill_plan_summary.injector_estimate.overage_sp|intcomma }} SP
{% endif %} {% endif %}
{% translate "LSI yield bands" %}
< 5M SP → 500k SP
5M–50M SP → 400k SP
50M–80M SP → 300k SP
80M+ SP → 150k SP
{% endif %}
{% blocktranslate with name=selected_character.eve_character.character_name %}Missing skills · {{ name }}{% endblocktranslate %}
Req {{ selected_progress.missing_required_count }} Rec {{ selected_progress.missing_recommended_count }}
{% translate "Required" %}
{{ selected_progress.missing_required_count }}
{% if selected_progress.missing_required %}
{% for skill in selected_progress.missing_required %}
{{ skill.skill_name }}
{{ skill.skill_name }}
{{ skill.current_level }} {{ skill.target_level }} {% if skill.missing_sp %} {{ skill.missing_sp|intcomma }} SP {% endif %}
{% endfor %}
{% else %}
{% translate "All required skills met." %}
{% endif %}
{% translate "Recommended" %}
{{ selected_progress.missing_recommended_count }}
{% if selected_progress.missing_recommended %}
{% for skill in selected_progress.missing_recommended %}
{{ skill.skill_name }}
{{ skill.skill_name }}
{{ skill.current_level }} {{ skill.target_level }} {% if skill.missing_sp %} {{ skill.missing_sp|intcomma }} SP {% endif %}
{% endfor %}
{% else %}
{% translate "All recommended skills met." %}
{% endif %}
{% blocktranslate with label=export_mode_label %}{{ label }} gap and plan export{% endblocktranslate %}
{% translate "Missing SP:" %} {% if selected_mode_stats %}{{ selected_mode_stats.total_missing_sp|intcomma }}{% else %}0{% endif %} {% if selected_mode_stats and selected_mode_stats.total_missing_time is not None %} · {% translate "Estimated training:" %} {{ selected_mode_stats.total_missing_time }} {% else %} · {% translate "Estimated training:" %} {% translate "Unknown (missing attribute data)" %} {% endif %}
{% translate "Download .txt" %}
{% endif %}
{% include 'mastery/partials/_fitting_preview_modal.html' %} {% endblock %}