<section id="fleet-templates" aria-labelledby="fleet-templates-title" data-tab-panel data-tab-id="mando-plantillas" data-tab-label="Plantillas">
  <p class="eyebrow">COMPOSICIONES REUTILIZABLES</p><h2 id="fleet-templates-title" class="section-title">Plantillas de flota</h2>
  <p>Una plantilla solo rellena formularios y alimenta cálculos. Siempre tendrás que confirmar el lanzamiento.</p>
  <div class="dashboard-grid">
    <section class="panel" aria-labelledby="saved-templates-title"><h3 id="saved-templates-title">Plantillas guardadas</h3>
      {% if fleet_templates %}<ul class="template-list">{% for template in fleet_templates %}{% set template_ships = template.ships_json|from_json %}{% set template_cargo = template.cargo_json|from_json %}<li><article><h4>{{ template.name }}</h4><p>{{ MISSIONS[template.mission] }} · velocidad preferida {{ template.preferred_speed }} %</p><dl class="compact-definition-list"><div><dt>Naves</dt><dd>{% for key, amount in template_ships.items() %}{{ amount }} {{ SHIPS[key].name }}{% if not loop.last %}, {% endif %}{% endfor %}</dd></div><div><dt>Carga</dt><dd>{% if template_cargo %}{% for key, amount in template_cargo.items() %}{{ key }} {{ amount|number }}{% if not loop.last %}, {% endif %}{% endfor %}{% else %}Sin carga predeterminada{% endif %}</dd></div></dl><form method="post" action="{{ url_for('fleet_template_delete_action') }}"><input type="hidden" name="csrf_token" value="{{ csrf_token() }}"><input type="hidden" name="template_id" value="{{ template.id }}"><button class="button button-danger" type="submit">Eliminar {{ template.name }}</button></form></article></li>{% endfor %}</ul>{% else %}<p class="empty-state">Aún no hay plantillas.</p>{% endif %}
      <form method="post" action="{{ url_for('fleet_template_recommended_action') }}"><input type="hidden" name="csrf_token" value="{{ csrf_token() }}"><button class="button" type="submit">Añadir cinco plantillas recomendadas</button></form>
    </section>
    <section class="panel" aria-labelledby="create-template-title"><h3 id="create-template-title">Crear una plantilla personalizada</h3>
      <form method="post" action="{{ url_for('fleet_template_save_action') }}" class="stacked-form"><input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
        <label>Nombre<input name="name" maxlength="48" required placeholder="Ejemplo: Convoy de cristal"></label>
        <label>Misión predeterminada<select name="mission">{% for key, label in MISSIONS.items() %}<option value="{{ key }}">{{ label }}</option>{% endfor %}</select></label>
        <label>Velocidad preferida<select name="preferred_speed">{% for speed in range(100,0,-10) %}<option value="{{ speed }}">{{ speed }} %</option>{% endfor %}</select></label>
        <details><summary>Definir las {{ SHIPS|length }} cantidades de naves</summary><div class="form-grid template-ship-grid">{% for key, definition in SHIPS.items() %}<label>{{ definition.name }}<input type="number" name="template_ship_{{ key }}" min="0" max="999999" value="0" inputmode="numeric"></label>{% endfor %}</div></details>
        <fieldset><legend>Carga predeterminada opcional</legend><div class="form-grid"><label>Metal<input name="template_cargo_metal" type="number" min="0" value="0"></label><label>Cristal<input name="template_cargo_crystal" type="number" min="0" value="0"></label><label>Deuterio<input name="template_cargo_deuterium" type="number" min="0" value="0"></label><label>Alimento<input name="template_cargo_food" type="number" min="0" value="0"></label></div></fieldset>
        <button class="button button-primary" type="submit">Guardar plantilla</button>
      </form>
    </section>
  </div>
</section>

<div class="tab-panel-stack" data-tab-panel data-tab-id="mando-simuladores" data-tab-label="Simuladores y cálculos">
<section id="planning-calculators" aria-labelledby="planning-calculators-title">
  <p class="eyebrow">CÁLCULOS SIN CONSECUENCIAS</p><h2 id="planning-calculators-title" class="section-title">Rentabilidad, vuelo y reciclaje</h2>
  <p>Estos cálculos usan el estado actual y las mismas fórmulas del motor. No construyen, no envían y no consumen nada.</p>
  <div class="dashboard-grid">
    <section class="panel" aria-labelledby="payback-title"><h3 id="payback-title">Rentabilidad productiva de {{ planet.name }}</h3>
      <p>Compara la siguiente mejora, incluyendo el efecto energético sobre todas las minas. El valor equivalente pondera cristal y deuterio; úsalo como orientación, no como orden automática.</p>
      <div class="table-wrap"><table><caption>Siguientes mejoras productivas ordenadas por horas estimadas para recuperar su coste.</caption><thead><tr><th scope="col">Mejora</th><th scope="col">Coste</th><th scope="col">Cambio por hora</th><th scope="col">Energía</th><th scope="col">Amortización</th></tr></thead><tbody>{% for analysis in economy_analysis %}<tr><th scope="row">{{ analysis.name }} nivel {{ analysis.next_level }}</th><td>{{ analysis.cost.metal|number }} metal<br>{{ analysis.cost.crystal|number }} cristal<br>{{ analysis.cost.deuterium|number }} deuterio</td><td>Metal {{ analysis.delta.metal|round|int }}<br>Cristal {{ analysis.delta.crystal|round|int }}<br>Deuterio {{ analysis.delta.deuterium|round|int }}</td><td>{{ (analysis.energy_ratio*100)|round|int }} %</td><td>{% if analysis.payback_hours is not none %}{{ analysis.payback_hours|round(1) }} horas{% else %}Sin retorno neto con la energía actual{% endif %}</td></tr>{% endfor %}</tbody></table></div>
    </section>
    <section class="panel" aria-labelledby="flight-planner-title"><h3 id="flight-planner-title">Planificador de vuelo</h3>
      {% if fleet_templates %}<form method="post" action="{{ url_for('flight_planner_action') }}" class="stacked-form"><input type="hidden" name="csrf_token" value="{{ csrf_token() }}"><label>Origen<select name="origin_planet_id">{% for own in planets %}<option value="{{ own.id }}" {% if own.id == planet.id %}selected{% endif %}>{{ own.name }} [{{ own.galaxy }}:{{ own.system }}:{{ own.position }}]</option>{% endfor %}</select></label><label>Plantilla<select name="template_id">{% for template in fleet_templates %}<option value="{{ template.id }}">{{ template.name }}</option>{% endfor %}</select></label><fieldset><legend>Coordenadas de destino</legend><div class="form-grid"><label>Galaxia<input name="galaxy" type="number" min="1" max="{{ config.galaxy_count|default(1) }}" value="{{ planet.galaxy }}" required></label><label>Sistema<input name="system" type="number" min="1" max="{{ game.galaxy_size }}" value="{{ planet.system }}" required></label><label>Posición<input name="position" type="number" min="1" max="15" value="{{ 1 if planet.position != 1 else 2 }}" required></label></div></fieldset><button class="button" type="submit">Calcular sin enviar</button></form>{% else %}<p class="empty-state">Crea una plantilla de flota para calcular un trayecto.</p>{% endif %}
      {% if flight_plan %}<section class="simulation-result" aria-labelledby="flight-plan-result-title" role="status"><h4 id="flight-plan-result-title">Plan: {{ flight_plan.origin }} a {{ flight_plan.destination }} {{ flight_plan.coordinates }}</h4><dl class="settings-list"><div><dt>Plantilla</dt><dd>{{ flight_plan.template }}</dd></div><div><dt>Distancia</dt><dd>{{ flight_plan.distance|number }}</dd></div><div><dt>Ida</dt><dd>{{ flight_plan.duration|duration }}</dd></div><div><dt>Ida y vuelta</dt><dd>{{ flight_plan.round_trip|duration }}</dd></div><div><dt>Combustible</dt><dd>{{ flight_plan.fuel|number }} deuterio</dd></div><div><dt>Velocidad de la flota</dt><dd>{{ flight_plan.speed|number }}</dd></div><div><dt>Capacidad</dt><dd>{{ flight_plan.cargo|number }} usada de {{ flight_plan.capacity|number }}; libre {{ flight_plan.free_capacity|number }}</dd></div><div><dt>Disponibilidad</dt><dd>{% if flight_plan.shortages %}Faltan {% for key, amount in flight_plan.shortages.items() %}{{ amount }} {{ SHIPS[key].name }}{% if not loop.last %}, {% endif %}{% endfor %}{% else %}Todas las naves están disponibles{% endif %}</dd></div><div><dt>Carga válida</dt><dd>{{ 'Sí' if flight_plan.can_carry else 'No; supera la capacidad' }}</dd></div></dl><p><strong>Revisión obligatoria:</strong> el cálculo no comprueba todavía la misión, el pacto diplomático, la ranura libre ni los recursos que existirán al lanzar.</p></section>{% endif %}
      <section class="recycler-calculator" aria-labelledby="recycler-calculator-title"><h4 id="recycler-calculator-title">Calculadora de recicladores</h4><p>Cada reciclador puede cargar {{ SHIPS.recycler.cargo|number }} unidades. Introduce el campo estimado.</p><div class="form-grid"><label>Metal en escombros<input type="number" min="0" value="0" inputmode="numeric" data-debris-metal></label><label>Cristal en escombros<input type="number" min="0" value="0" inputmode="numeric" data-debris-crystal></label><label>Deuterio en escombros<input type="number" min="0" value="0" inputmode="numeric" data-debris-deuterium></label></div><p id="recycler-result" role="status" aria-live="polite" data-recycler-result data-recycler-capacity="{{ SHIPS.recycler.cargo }}">Se necesitan 0 recicladores.</p></section>
    </section>
  </div>
</section>

<section id="combat-simulator" class="panel" aria-labelledby="combat-simulator-title">
  <p class="eyebrow">DECIDIR ANTES DE ARRIESGAR</p><h2 id="combat-simulator-title">Simulador de combate</h2>
  <p>Ejecuta 120 escenarios con la plantilla atacante y el último espionaje seleccionado. No altera flotas, recursos ni relaciones. Los resultados pierden precisión si el informe es antiguo o no conoce las tecnologías rivales.</p>
  {% set detailed_reports = intelligence_reports|selectattr('detail_level','ge',2)|list %}
  {% if fleet_templates and detailed_reports %}<form method="post" action="{{ url_for('combat_simulator_action') }}" class="inline-form"><input type="hidden" name="csrf_token" value="{{ csrf_token() }}"><label>Plantilla atacante<select name="template_id">{% for template in fleet_templates %}<option value="{{ template.id }}">{{ template.name }}</option>{% endfor %}</select></label><label>Informe defensor<select name="report_id">{% for report in detailed_reports %}<option value="{{ report.id }}">{{ report.target_name }} [{{ report.galaxy }}:{{ report.system }}:{{ report.position }}] · hace {{ (now-report.observed_at)|duration }}</option>{% endfor %}</select></label><button class="button button-primary" type="submit">Simular 120 escenarios</button></form>{% else %}<p class="empty-state">Necesitas una plantilla y un espionaje que haya detectado unidades. Las sondas mejoran su detalle al superar la tecnología rival.</p>{% endif %}
  {% if simulation_result %}<section class="simulation-result" aria-labelledby="simulation-result-title" role="status"><h3 id="simulation-result-title">Resultado: {{ simulation_result.template }} contra {{ simulation_result.target }} {{ simulation_result.coordinates }}</h3><p><strong>Intervalo de victoria por incertidumbre del informe:</strong> entre {{ (simulation_result.win_rate_low*100)|round(1) }} % y {{ (simulation_result.win_rate_high*100)|round(1) }} %. Confianza de unidades {{ simulation_result.inventory_confidence }} %, {{ simulation_result.uncertainty_label }}.</p><dl class="settings-list"><div><dt>Victoria atacante central</dt><dd>{{ (simulation_result.win_rate*100)|round(1) }} %</dd></div><div><dt>Empate</dt><dd>{{ (simulation_result.draw_rate*100)|round(1) }} %</dd></div><div><dt>Victoria defensora</dt><dd>{{ (simulation_result.loss_rate*100)|round(1) }} %</dd></div><div><dt>Supervivientes atacantes medios</dt><dd>{{ simulation_result.attacker_survivors|number }}</dd></div><div><dt>Supervivientes defensores medios</dt><dd>{{ simulation_result.defender_survivors|number }}</dd></div><div><dt>Escombros medios según las reglas del universo</dt><dd>{{ simulation_result.debris_metal|number }} metal, {{ simulation_result.debris_crystal|number }} cristal y {{ simulation_result.debris_deuterium|number }} deuterio</dd></div><div><dt>Antigüedad del informe</dt><dd>{{ simulation_result.intel_age|duration }}</dd></div><div><dt>Tecnología rival conocida</dt><dd>{{ 'Sí' if simulation_result.tech_known else 'No; se usaron niveles base' }}</dd></div></dl></section>{% endif %}
</section>
</div>
