(() => {
  "use strict";
  const $ = (s, r = document) => r.querySelector(s);
  const $$ = (s, r = document) => [...r.querySelectorAll(s)];
  const cards = $$("[data-drill]");
  if (!cards.length) return;
  const key = "война-учения-восстановления-3-5-0";
  const output = $("#drill-output");
  const saved = $("#drill-saved");

  function collect() {
    return cards.map((card) => {
      const fields={};
      $$('[data-drill-field]',card).forEach((field)=>{fields[field.dataset.drillField]=field.value.trim();});
      return {сценарий:card.querySelector("h2").textContent.trim(),ключ:card.dataset.drill,...fields};
    });
  }
  function report() {
    const rows=collect();
    const lines=["ЖУРНАЛ УЧЕНИЙ ПО ВОССТАНОВЛЕНИЮ","","РЕЗЕРВ БЕЗ УЧЕНИЯ — ГИПОТЕЗА.",""];
    rows.forEach((row,index)=>{
      lines.push(`${index+1}. ${row.сценарий}`,`Статус: ${row.статус || "не задан"}`,`Дата: ${row.дата || "не задана"}`,`Время восстановления: ${row.минуты || "не измерено"} минут`,`Ответственный: ${row.ответственный || "не назначен"}`,`Доказательство: ${row.доказательство || "не приложено"}`,`Пробел и следующее действие: ${row.пробел || "не записано"}`,"");
    });
    output.value=lines.join("\n");
    return output.value;
  }
  function apply(rows) {
    if (!Array.isArray(rows)) return;
    rows.forEach((row)=>{
      const card=cards.find((node)=>node.dataset.drill===row.ключ);
      if (!card) return;
      $$('[data-drill-field]',card).forEach((field)=>{field.value=row[field.dataset.drillField] || "";});
    });
    report();
  }
  function load() {
    try { const raw=localStorage.getItem(key); if (raw) { apply(JSON.parse(raw)); saved.textContent="Локальный журнал восстановлен из этого браузера."; } else report(); } catch { saved.textContent="Локальное хранилище недоступно; используйте скачивание текста."; report(); }
  }
  cards.forEach((card)=>card.addEventListener("input",report));
  $("#drill-save").addEventListener("click",()=>{ try {localStorage.setItem(key,JSON.stringify(collect())); saved.textContent=`Сохранено локально: ${new Date().toLocaleString("ru")}.`; } catch {saved.textContent="Сохранить локально не удалось; скачайте текстовый журнал.";} report(); });
  $("#drill-download").addEventListener("click",()=>{ const blob=new Blob([report()],{type:"text/plain;charset=utf-8"}); const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="журнал-учений-восстановления.txt"; a.click(); URL.revokeObjectURL(a.href); });
  $("#drill-print").addEventListener("click",()=>window.print());
  $("#drill-reset").addEventListener("click",()=>{ if (!confirm("Удалить локальный журнал учений из этого браузера?")) return;try{localStorage.removeItem(key);}catch{saved.textContent="Очистка не выполнена: хранилище недоступно. Текущий журнал сохранён во вкладке.";return;}cards.forEach((card)=>$$('[data-drill-field]',card).forEach((field)=>{field.value=field.tagName==="SELECT"?"не проводилось":"";})); saved.textContent="Локальный журнал очищен."; report(); });
  load();
})();
