/* =========================================================
   ANTARES — Schermate 5-8
   Margini · Riclassificato · Tesoreria · Scadenze
   ========================================================= */

const { useState: useState2, useMemo: useMemo2 } = React;
const { fmt: fmt2, fmtNum: fmtNum2, fmtPct: fmtPct2, MESI: MESI2, MESI_FULL: MESI_FULL2,
  MARGINI, TESORERIA, TESORERIA_CONSUNTIVO, SCADENZE_FISCALI: SCAD_FIS, SCADENZE_INCASSI } = window.AntaresData;
const Icon2 = window.AntaresScreens1.Icon;

/* ============================================================
   5. MARGINI PROGETTO
   ============================================================ */
function Margini() {
  const [filtroLinea, setFiltroLinea] = useState2("tutte");

  const rows = MARGINI.filter(m => filtroLinea === "tutte" || m.linea === filtroLinea);
  const totRicavi = rows.reduce((s, r) => s + r.ricavi, 0);
  const totCosti = rows.reduce((s, r) => s + r.costi, 0);
  const totMargine = totRicavi - totCosti;
  const totPct = totRicavi > 0 ? (totMargine / totRicavi) * 100 : 0;

  const rowClass = (pct) => {
    if (pct < 0) return "row-danger";
    if (pct < 10) return "row-warn";
    return "";
  };

  return (
    <div className="stack">
      <div className="page-head">
        <div className="page-title-block">
          <span className="eyebrow">Controllo commesse · 2026</span>
          <h1 className="h1">Margini progetto</h1>
        </div>
        <div className="page-actions">
          <div className="segmented compact">
            <button className={filtroLinea === "tutte" ? "active" : ""} onClick={() => setFiltroLinea("tutte")}>Tutte</button>
            {(window.AntaresData.LINEE_BUSINESS || []).map(L => (
              <button key={L} className={filtroLinea === L ? "active" : ""} onClick={() => setFiltroLinea(L)}>{L}</button>
            ))}
          </div>
          <button className="btn ghost"><Icon2 name="download" /> CSV</button>
        </div>
      </div>

      <div className="kpi-grid">
        <div className="kpi">
          <div className="kpi-label">Ricavi commesse</div>
          <div className="kpi-value">{fmt2(totRicavi)}</div>
          <div className="kpi-sub">{rows.length} progetti</div>
        </div>
        <div className="kpi coral">
          <div className="kpi-label">Costi diretti</div>
          <div className="kpi-value">{fmt2(totCosti)}</div>
          <div className="kpi-sub">{totRicavi > 0 ? fmtPct2((totCosti/totRicavi)*100) : "—"} dei ricavi</div>
        </div>
        <div className="kpi blue">
          <div className="kpi-label">Margine totale</div>
          <div className="kpi-value">{fmt2(totMargine)}</div>
          <div className="kpi-sub pos">▲ contributo lordo</div>
        </div>
        <div className="kpi yellow">
          <div className="kpi-label">Margine medio</div>
          <div className="kpi-value">{fmtPct2(totPct)}</div>
          <div className="kpi-sub">target {fmtPct2(20)}</div>
        </div>
      </div>

      <div className="card">
        <div className="card-bar yellow" />
        <div className="card-head" style={{ flexWrap: "wrap" }}>
          <div>
            <h3 className="h3">Margine per commessa</h3>
            <div className="muted" style={{ fontSize: 12 }}>Righe gialle = margine sotto 10% · rosse = negativo</div>
          </div>
          <div className="legend">
            <span className="legend-item"><span className="legend-swatch warn" /> attenzione</span>
            <span className="legend-item"><span className="legend-swatch danger" /> negativo</span>
          </div>
        </div>
        <div className="table-wrap">
          <table className="table">
            <thead>
              <tr>
                <th>Commessa</th>
                <th>Linea</th>
                <th className="num">Ricavi</th>
                <th className="num">Costi</th>
                <th className="num">Margine €</th>
                <th className="num">Margine %</th>
                <th style={{ width: 220 }}>Andamento</th>
              </tr>
            </thead>
            <tbody>
              {rows.map(r => (
                <tr key={r.id} className={rowClass(r.pct)}>
                  <td><strong>{r.progetto}</strong></td>
                  <td>
                    {r.linea === "Service"
                      ? <span className="pill blue">{r.linea}</span>
                      : <span className="pill teal">{r.linea}</span>}
                  </td>
                  <td className="num">{fmt2(r.ricavi)}</td>
                  <td className="num">{fmt2(r.costi)}</td>
                  <td className="num">
                    <strong className={r.margine < 0 ? "neg" : (r.pct < 10 ? "warn" : "pos")}>
                      {fmt2(r.margine, { sign: true })}
                    </strong>
                  </td>
                  <td className="num">
                    <strong className={r.pct < 0 ? "neg" : (r.pct < 10 ? "warn" : "pos")}>
                      {fmtPct2(r.pct)}
                    </strong>
                  </td>
                  <td>
                    <div className="minibar">
                      <div
                        className={"minibar-fill " + (r.pct < 0 ? "coral" : (r.pct < 10 ? "yellow" : ""))}
                        style={{ width: Math.max(2, Math.min(100, Math.abs(r.pct) * 3)) + "%" }}
                      />
                    </div>
                  </td>
                </tr>
              ))}
              <tr className="row-total">
                <td>Totale</td>
                <td></td>
                <td className="num">{fmt2(totRicavi)}</td>
                <td className="num">{fmt2(totCosti)}</td>
                <td className="num"><strong className="pos">{fmt2(totMargine, { sign: true })}</strong></td>
                <td className="num"><strong className="pos">{fmtPct2(totPct)}</strong></td>
                <td></td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>

      {/* Drill */}
      <div className="two-col">
        <div className="card">
          <div className="card-bar coral" />
          <div className="card-head">
            <h3 className="h3">Da tenere d'occhio</h3>
            {(() => {
              const critiche = rows.filter(r => r.pct < 10).length;
              return <span className={"pill " + (critiche > 0 ? "coral" : "teal")}>{critiche} {critiche === 1 ? "commessa" : "commesse"}</span>;
            })()}
          </div>
          <div className="card-body stack">
            {(() => {
              const critiche = [...rows].filter(r => r.pct < 10).sort((a,b) => a.pct - b.pct);
              if (critiche.length === 0) return <div className="muted" style={{ fontSize: 13 }}>Tutte le commesse sono sopra il margine minimo (10%). 🎉</div>;
              return critiche.slice(0, 5).map((r, i) => (
                <React.Fragment key={r.id}>
                  {i > 0 && <div className="divider" style={{ margin: 0 }} />}
                  <div>
                    <div className="row" style={{ justifyContent: "space-between" }}>
                      <strong style={{ fontFamily: "var(--serif)", fontSize: 16 }}>{r.progetto}</strong>
                      <span className={r.pct < 0 ? "neg mono" : "warn mono"}>
                        {fmt2(r.margine, { sign: true })} · {fmtPct2(r.pct)}
                      </span>
                    </div>
                    <div className="muted" style={{ fontSize: 12, marginTop: 4 }}>
                      {r.pct < 0 ? "Margine negativo: costi > ricavi" : "Margine sotto soglia 10%"}
                    </div>
                  </div>
                </React.Fragment>
              ));
            })()}
          </div>
        </div>

        <div className="card">
          <div className="card-bar" />
          <div className="card-head">
            <h3 className="h3">Best performer</h3>
            <span className="pill teal">margine sano</span>
          </div>
          <div className="card-body stack">
            {(() => {
              const top = [...rows].filter(r => r.margine > 0).sort((a, b) => b.margine - a.margine).slice(0, 3);
              if (top.length === 0) return <div className="muted" style={{ fontSize: 13 }}>Nessuna commessa con margine positivo al momento.</div>;
              return top.map((r, i) => (
                <React.Fragment key={r.id}>
                  {i > 0 && <div className="divider" style={{ margin: 0 }} />}
                  <div>
                    <div className="row" style={{ justifyContent: "space-between" }}>
                      <strong style={{ fontFamily: "var(--serif)", fontSize: 16 }}>{r.progetto}</strong>
                      <span className="pos mono">{fmt2(r.margine, { sign: true })} · {fmtPct2(r.pct)}</span>
                    </div>
                    <div className="muted" style={{ fontSize: 12, marginTop: 4 }}>
                      {r.pct >= 30 ? "Margine eccellente" : r.pct >= 15 ? "Margine solido" : "Margine positivo"}
                    </div>
                  </div>
                </React.Fragment>
              ));
            })()}
          </div>
        </div>
      </div>
    </div>
  );
}

/* ============================================================
   6. RICLASSIFICATO + INDICATORI
   ============================================================ */
function Riclassificato() {
  // Dati LIVE calcolati dai dati reali
  const year = new Date().getFullYear();
  const inYear = (f) => {
    const parts = (f.data || "").split("/");
    return parts.length === 3 && parseInt(parts[2], 10) === year;
  };
  const FATT = window.AntaresData.FATTURE || [];
  const COLL = window.AntaresData.COLLABORATORI || [];
  const CESP = window.AntaresData.CESPITI || [];

  const ricavi = FATT.filter(f => f.tipo === "attiva"  && inYear(f)).reduce((s,f) => s + f.imponibile, 0);
  const ricaviPrev = FATT.filter(f => f.tipo === "attiva" && parseInt((f.data || "").split("/")[2], 10) === year - 1).reduce((s,f) => s + f.imponibile, 0);
  const yoyRicavi = ricaviPrev > 0 ? ((ricavi - ricaviPrev) / ricaviPrev) * 100 : null;
  const variazRimanenze = 0;
  const altriRicavi = 0;
  const valoreProduzione = ricavi + variazRimanenze + altriRicavi;

  // Costi esterni: fatture passive (aggregate). Split per categoria CE futuro.
  // Per ora: distinguo "Goditerzi" = noleggio attrezzature/auto. Resto in Servizi.
  const passive = FATT.filter(f => f.tipo === "passiva" && inYear(f));
  const goditerzi = passive.filter(f => /noleggio/i.test(f.categoria || "")).reduce((s,f) => s + f.imponibile, 0);
  const altreCosti = passive.filter(f => !/noleggio/i.test(f.categoria || "")).reduce((s,f) => s + f.imponibile, 0);
  const acquisti = 0;          // categoria "materie" se in futuro la introduciamo
  const servizi = altreCosti;
  const consumi = acquisti + servizi + goditerzi;
  const valoreAggiunto = valoreProduzione - consumi;

  const personale = COLL.filter(c => c.anno == null || Number(c.anno) === year).reduce((s,c) => s + (c.costoReale || 0), 0);
  const ebitda = valoreAggiunto - personale;

  const ammortamenti = CESP.reduce((s,c) => s + (c.quotaAnnua || 0), 0);
  const ebit = ebitda - ammortamenti;

  // Oneri finanziari: per ora 0 (in futuro da scadenze rata_fin × stima interessi)
  const oneriFin = 0;
  const risultatoAnte = ebit - oneriFin;
  const imposte = risultatoAnte > 0 ? risultatoAnte * 0.28 : 0;
  const risultato = risultatoAnte - imposte;

  // BEP semplificato: costi fissi / (margine di contribuzione medio)
  const costiFissi = personale + ammortamenti;
  const mdcMedio = valoreProduzione > 0 ? (valoreProduzione - consumi) / valoreProduzione : 0;
  const bep = mdcMedio > 0 ? costiFissi / mdcMedio : 0;
  const safePct2 = (n, d) => d > 0 ? (n / d) * 100 : 0;

  const Row = ({ label, val, pct, total, final, indent = 0 }) => {
    const showPct = pct != null && isFinite(pct);
    return (
      <div className={"cascade-row" + (indent ? ` indent-${indent}`: "") + (total ? " total" : "") + (final ? " final" : "")}>
        <div className="label-cell">{label}</div>
        <div className="val mono">{fmt2(val)}</div>
        <div className="pct">{showPct ? fmtPct2(pct) : ""}</div>
      </div>
    );
  };

  return (
    <div className="stack">
      <div className="page-head">
        <div className="page-title-block">
          <span className="eyebrow">Conto economico riclassificato · 2026 YTD</span>
          <h1 className="h1">Riclassificato &amp; indicatori</h1>
        </div>
        <div className="page-actions">
          <button className="btn ghost"><Icon2 name="pdf" /> PDF bilancio</button>
        </div>
      </div>

      {/* KPI */}
      <div className="kpi-grid">
        <div className="kpi">
          <div className="kpi-label">Ricavi</div>
          <div className="kpi-value">{fmt2(ricavi)}</div>
          <div className={"kpi-sub " + (yoyRicavi == null ? "" : yoyRicavi >= 0 ? "pos" : "neg")}>
            {yoyRicavi == null ? `nessun dato ${year - 1}` : `${yoyRicavi >= 0 ? "▲" : "▼"} ${fmtPct2(Math.abs(yoyRicavi))} YoY`}
          </div>
        </div>
        <div className="kpi blue">
          <div className="kpi-label">EBITDA · MOL</div>
          <div className="kpi-value">{fmt2(ebitda)}</div>
          <div className="kpi-sub">
            <span className="pos delta">{fmtPct2(safePct2(ebitda, ricavi))}</span> sui ricavi
          </div>
        </div>
        <div className="kpi yellow">
          <div className="kpi-label">EBIT · ROS</div>
          <div className="kpi-value">{fmt2(ebit)}</div>
          <div className="kpi-sub">
            <span className="warn delta">{fmtPct2(safePct2(ebit, ricavi))}</span> sui ricavi
          </div>
        </div>
        <div className="kpi coral">
          <div className="kpi-label">Valore aggiunto</div>
          <div className="kpi-value">{fmt2(valoreAggiunto)}</div>
          <div className="kpi-sub">per addetto ≈ {fmt2(COLL.length > 0 ? valoreAggiunto / COLL.length : 0)}</div>
        </div>
      </div>

      {/* Linee di business (live) */}
      <div className="two-col">
        {(() => {
          const STAT = window.AntaresData.STATISTICHE?.margineLinea || {};
          const linee = Object.entries(STAT);
          if (linee.length === 0) {
            return <div className="card"><div className="card-body" style={{ padding: 20, color: "var(--muted)" }}>
              Nessun ricavo per linea — registra qualche fattura attiva.
            </div></div>;
          }
          return linee.map(([nome, dati], i) => {
            const pct = ricavi > 0 ? (dati.ricavi / ricavi) * 100 : 0;
            return (
              <div className="line-card" key={nome}>
                <div className={"card-bar" + (i % 2 ? " blue" : "")} style={{ position: "absolute", top: 0, left: 0, right: 0 }} />
                <div className="line-name">{nome}</div>
                <div className="row" style={{ justifyContent: "space-between" }}>
                  <div className="line-value">{fmt2(dati.ricavi)}</div>
                  <div className={"pill " + (i % 2 ? "blue" : "teal")}>{fmtPct2(pct, 0)} dei ricavi</div>
                </div>
                <div className="line-bar"><div className="line-bar-fill" style={{ width: pct + "%", background: i % 2 ? "var(--blue)" : undefined }} /></div>
                <div className="muted" style={{ fontSize: 12, marginTop: 10 }}>
                  Margine medio <strong className={dati.pct < 10 ? "warn" : "pos"}>{fmtPct2(dati.pct)}</strong>
                </div>
              </div>
            );
          });
        })()}
      </div>

      {/* Cascade */}
      <div className="card">
        <div className="card-bar" />
        <div className="card-head">
          <h3 className="h3">Conto economico a cascata</h3>
          <span className="muted" style={{ fontSize: 12 }}>Schema CEE riclassificato a valore aggiunto</span>
        </div>
        <div className="cascade">
          <Row label="Ricavi delle vendite" val={ricavi} pct={(ricavi/valoreProduzione)*100} />
          <Row label="Altri ricavi e proventi" val={altriRicavi} indent={1} />
          <Row label="Variazione rimanenze" val={variazRimanenze} indent={1} />
          <Row label="VALORE DELLA PRODUZIONE" val={valoreProduzione} pct={100} total />

          <Row label="Acquisti di materie" val={-acquisti} indent={1} />
          <Row label="Servizi (noleggi, trasferte, consulenze)" val={-servizi} indent={1} />
          <Row label="Godimento beni di terzi" val={-goditerzi} indent={1} />
          <Row label="Consumi e servizi esterni" val={-consumi} pct={-(consumi/valoreProduzione)*100} total />

          <Row label="VALORE AGGIUNTO" val={valoreAggiunto} pct={(valoreAggiunto/valoreProduzione)*100} total />

          <Row label="Costo del personale" val={-personale} pct={-(personale/valoreProduzione)*100} indent={1} />
          <Row label="MARGINE OPERATIVO LORDO · EBITDA" val={ebitda} pct={(ebitda/valoreProduzione)*100} total />

          <Row label="Ammortamenti e svalutazioni" val={-ammortamenti} indent={1} />
          <Row label="RISULTATO OPERATIVO · EBIT" val={ebit} pct={(ebit/valoreProduzione)*100} total />

          <Row label="Oneri finanziari netti" val={-oneriFin} indent={1} />
          <Row label="RISULTATO ANTE IMPOSTE" val={risultatoAnte} total />

          <Row label="Imposte stimate (IRES + IRAP)" val={-imposte} indent={1} />
          <Row label="RISULTATO D'ESERCIZIO" val={risultato} pct={(risultato/valoreProduzione)*100} final />
        </div>
      </div>

      {/* BEP */}
      <div className="two-col-asym">
        <div className="card">
          <div className="card-bar yellow" />
          <div className="card-head">
            <h3 className="h3">Punto di pareggio · BEP</h3>
            <span className="pill yellow">aggiornato</span>
          </div>
          <div className="card-body">
            <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 18 }}>
              <div>
                <div className="kpi-label">Fatturato di pareggio</div>
                <div style={{ fontFamily: "var(--serif)", fontSize: 28, fontWeight: 600, marginTop: 4 }}>{fmt2(bep)}</div>
                <div className="muted" style={{ fontSize: 12, marginTop: 4 }}>copertura costi fissi + struttura</div>
              </div>
              <div>
                <div className="kpi-label">Margine di sicurezza</div>
                <div style={{ fontFamily: "var(--serif)", fontSize: 28, fontWeight: 600, marginTop: 4 }} className="pos">{fmtPct2(safePct2(ricavi - bep, ricavi))}</div>
                <div className="muted" style={{ fontSize: 12, marginTop: 4 }}>distanza dal punto critico</div>
              </div>
            </div>

            <div className="divider" />

            <div className="row" style={{ justifyContent: "space-between", marginBottom: 8 }}>
              <span className="muted">Costi fissi annui</span>
              <span className="mono">{fmt2(costiFissi)}</span>
            </div>
            <div className="row" style={{ justifyContent: "space-between", marginBottom: 8 }}>
              <span className="muted">Margine di contribuzione %</span>
              <span className="mono">{fmtPct2(mdcMedio*100)}</span>
            </div>

            {/* Visual */}
            <div style={{ marginTop: 14, position: "relative", height: 30, background: "var(--surface-2)", borderRadius: 999, overflow: "hidden" }}>
              <div style={{ position: "absolute", left: 0, top: 0, bottom: 0, width: `${Math.min(100, safePct2(bep, ricavi))}%`, background: "var(--yellow-dim)" }} />
              <div style={{ position: "absolute", left: `${Math.min(100, safePct2(bep, ricavi))}%`, top: -4, bottom: -4, width: 2, background: "var(--yellow)" }} />
              <div style={{ position: "absolute", right: 8, top: "50%", transform: "translateY(-50%)", fontSize: 11, color: "var(--muted)" }}>
                {fmt2(ricavi)} attuali
              </div>
            </div>
            <div className="muted" style={{ fontSize: 11, marginTop: 6 }}>
              Pareggio raggiunto al {fmtPct2((bep/ricavi)*100)} dei ricavi attuali
            </div>
          </div>
        </div>

        <div className="card">
          <div className="card-bar blue" />
          <div className="card-head">
            <h3 className="h3">Indicatori</h3>
          </div>
          <div className="card-body stack">
            <div className="row" style={{ justifyContent: "space-between" }}>
              <span className="muted">EBITDA margin</span>
              <span className="mono" style={{ fontSize: 16 }}><strong className="pos">{fmtPct2(safePct2(ebitda, ricavi))}</strong></span>
            </div>
            <div className="row" style={{ justifyContent: "space-between" }}>
              <span className="muted">ROS · EBIT margin</span>
              <span className="mono" style={{ fontSize: 16 }}><strong className="warn">{fmtPct2(safePct2(ebit, ricavi))}</strong></span>
            </div>
            <div className="row" style={{ justifyContent: "space-between" }}>
              <span className="muted">Incidenza personale</span>
              <span className="mono" style={{ fontSize: 16 }}>{fmtPct2((personale/ricavi)*100)}</span>
            </div>
            <div className="row" style={{ justifyContent: "space-between" }}>
              <span className="muted">Incidenza servizi esterni</span>
              <span className="mono" style={{ fontSize: 16 }}>{fmtPct2((servizi/ricavi)*100)}</span>
            </div>
            <div className="row" style={{ justifyContent: "space-between" }}>
              <span className="muted">Cost / income ratio</span>
              <span className="mono" style={{ fontSize: 16 }}>{fmtPct2(((consumi+personale)/ricavi)*100)}</span>
            </div>
          </div>
        </div>
      </div>
    </div>
  );
}

/* ============================================================
   7. TESORERIA
   ============================================================ */
function Tesoreria() {
  const [view, setView] = useState2("mensile");
  const [anno, setAnno] = useState2(new Date().getFullYear());
  const [showSaldoModal, setShowSaldoModal] = useState2(false);
  const [showImportModal, setShowImportModal] = useState2(false);
  const [editingCell, setEditingCell] = useState2(null); // { mIdx, uiKey, value }

  // calcolo saldi progressivi
  let saldo = TESORERIA.saldoIniziale;
  const dati = TESORERIA.mesi.map(m => {
    const totE = m.entrate.incassiClienti + m.entrate.apportiSoci + m.entrate.finanziamenti + m.entrate.altre;
    const totU = m.uscite.stipendi + m.uscite.fornitori + m.uscite.f24 + m.uscite.rateFin + (m.uscite.rateFiscali || 0) + m.uscite.altreSpese;
    const variazione = totE - totU;
    const inizio = saldo;
    saldo += variazione;
    return { ...m, totE, totU, variazione, inizio, fine: saldo };
  });

  const minSaldo = Math.min(...dati.map(d => d.fine));
  const meseCritico = dati.find(d => d.fine === minSaldo);

  const startEdit = (mIdx, uiKey) => {
    const m = dati[mIdx];
    const sez = ["incassiClienti","apportiSoci","finanziamenti","altre"].includes(uiKey) ? "entrate" : "uscite";
    setEditingCell({ mIdx, uiKey, value: String(m[sez][uiKey] || "") });
  };
  const commitEdit = async () => {
    if (!editingCell) return;
    const { mIdx, uiKey, value } = editingCell;
    setEditingCell(null);
    const num = parseFloat(String(value).replace(",", ".")) || 0;
    const res = await window.AntaresStore.saveTesoreriaCella(anno, mIdx + 1, uiKey, num);
    if (res.error) { alert("Errore: " + res.error.message); return; }
    await window.AntaresStore.refresh("tesoreria");
  };
  const cancelEdit = () => setEditingCell(null);

  const saveSaldo = async (val) => {
    const res = await window.AntaresStore.saveTesoreriaSaldo(anno, val);
    if (res.error) { alert("Errore: " + res.error.message); return; }
    await window.AntaresStore.refresh("tesoreria");
    setShowSaldoModal(false);
  };

  const cellClass = (val, kind = "saldo") => {
    if (kind === "saldo") {
      if (val < 0) return "cell-danger";
      if (val < 10000) return "cell-warn";
      return "cell-ok";
    }
    return "";
  };

  const Row = ({ label, values, kind = "default", indent = false, editable = null }) => (
    <tr className={kind === "saldo" ? "row-saldo" : ""}>
      <td style={{ paddingLeft: indent ? 26 : 12 }} className={kind === "header" ? "muted" : ""}>{label}</td>
      {values.map((v, i) => {
        const isEditing = editable && editingCell && editingCell.mIdx === i && editingCell.uiKey === editable;
        if (isEditing) {
          return (
            <td key={i} style={{ padding: 0 }}>
              <input
                type="text"
                autoFocus
                value={editingCell.value}
                onChange={e => setEditingCell({ ...editingCell, value: e.target.value })}
                onBlur={commitEdit}
                onKeyDown={e => {
                  if (e.key === "Enter") commitEdit();
                  if (e.key === "Escape") cancelEdit();
                }}
                style={{ width: "100%", border: "2px solid var(--teal)", padding: "4px 6px", fontFamily: "var(--mono)", fontSize: 12, textAlign: "right", background: "var(--surface-1)" }}
              />
            </td>
          );
        }
        return (
          <td
            key={i}
            className={kind === "saldo" ? cellClass(v) : ""}
            onClick={editable ? () => startEdit(i, editable) : undefined}
            style={editable ? { cursor: "pointer" } : {}}
            title={editable ? "Clicca per modificare" : undefined}
          >
            {v === 0 ? (editable ? <span style={{ color: "var(--dim)" }}>—</span> : "—") : fmt2(v)}
          </td>
        );
      })}
      <td style={{ background: "var(--surface-2)", fontWeight: 700 }}>
        {fmt2(values.reduce((s, v) => s + v, 0))}
      </td>
    </tr>
  );

  // consuntivo live (da fatture pagate + scadenze pagate + personale, vista v_tesoreria_consuntivo_mese)
  // solo confronto: non editabile, non scrive nulla, serve a vedere quando il dato manuale si è disallineato.
  const consuntivoAnno = (TESORERIA_CONSUNTIVO || []).filter(r => Number(r.anno) === anno);
  const sommaVoceReale = (mese, voci) => consuntivoAnno
    .filter(r => r.mese === mese && voci.includes(r.voce))
    .reduce((s, r) => s + Number(r.importo || 0), 0);
  const incassiClientiReale = dati.map((d, i) => sommaVoceReale(i + 1, ["incassi_clienti"]));
  const fornitoriReale      = dati.map((d, i) => sommaVoceReale(i + 1, ["fornitori"]));
  const stipendiReale       = dati.map((d, i) => sommaVoceReale(i + 1, ["stipendi"]));
  const f24Reale            = dati.map((d, i) => sommaVoceReale(i + 1, ["f24_dipendenti", "f24_iva", "f24_altro"]));
  const hasConsuntivoLive = consuntivoAnno.length > 0;

  const RowReale = ({ label, values }) => (
    <tr className="row-reale">
      <td style={{ paddingLeft: 40, fontSize: 11, color: "var(--muted)", fontStyle: "italic" }}>{label}</td>
      {values.map((v, i) => (
        <td key={i} style={{ fontSize: 11, color: "var(--muted)" }}>
          {dati[i].tipo !== "consuntivo" ? "" : (v === 0 ? "—" : fmt2(v))}
        </td>
      ))}
      <td style={{ background: "var(--surface-2)" }} />
    </tr>
  );

  // group sums
  const incassiClienti = dati.map(d => d.entrate.incassiClienti);
  const apporti = dati.map(d => d.entrate.apportiSoci);
  const finanz = dati.map(d => d.entrate.finanziamenti);
  const altreEnt = dati.map(d => d.entrate.altre);
  const stipendi = dati.map(d => d.uscite.stipendi);
  const fornitori = dati.map(d => d.uscite.fornitori);
  const f24 = dati.map(d => d.uscite.f24);
  const rate = dati.map(d => d.uscite.rateFin);
  const rateFiscali = dati.map(d => d.uscite.rateFiscali || 0);
  const altreUsc = dati.map(d => d.uscite.altreSpese);
  const totEntrate = dati.map(d => d.totE);
  const totUscite = dati.map(d => d.totU);
  const saldiFine = dati.map(d => d.fine);
  const variazioni = dati.map(d => d.variazione);
  const saldiInizio = dati.map(d => d.inizio);

  return (
    <div className="stack">
      <div className="page-head">
        <div className="page-title-block">
          <span className="eyebrow">Cash flow · 12 mesi 2026</span>
          <h1 className="h1">Tesoreria</h1>
        </div>
        <div className="page-actions">
          <div className="segmented compact">
            <button className={view === "mensile" ? "active" : ""} onClick={() => setView("mensile")}>Mensile</button>
            <button className={view === "trim" ? "active" : ""} onClick={() => setView("trim")}>Trimestrale</button>
          </div>
          <button className="btn ghost" onClick={() => setShowImportModal(true)}><Icon2 name="file" /> Importa rate</button>
        </div>
      </div>

      {/* KPI cassa */}
      <div className="kpi-grid">
        <div className="kpi" onClick={() => setShowSaldoModal(true)} style={{ cursor: "pointer" }} title="Clicca per modificare">
          <div className="kpi-label">Saldo iniziale</div>
          <div className="kpi-value">{fmt2(TESORERIA.saldoIniziale)}</div>
          <div className="kpi-sub">01/01/{anno} · clicca per modificare</div>
        </div>
        <div className="kpi blue">
          <div className="kpi-label">Saldo attuale</div>
          <div className="kpi-value">{fmt2(dati[Math.min(new Date().getMonth(), 11)]?.fine || 0)}</div>
          <div className="kpi-sub">fine {(MESI_FULL2[new Date().getMonth()] || "").toLowerCase()} · consuntivo</div>
        </div>
        <div className={"kpi " + (minSaldo < 10000 ? "yellow" : "")}>
          <div className="kpi-label">Saldo minimo previsto</div>
          <div className="kpi-value" style={{ color: minSaldo < 0 ? "var(--coral)" : (minSaldo < 10000 ? "var(--yellow)" : "var(--text)") }}>
            {fmt2(minSaldo)}
          </div>
          <div className="kpi-sub warn">⚠ {meseCritico.mese} · da monitorare</div>
        </div>
        <div className="kpi coral">
          <div className="kpi-label">Saldo a fine anno</div>
          <div className="kpi-value">{fmt2(dati[11].fine)}</div>
          <div className="kpi-sub pos">▲ {fmt2(dati[11].fine - TESORERIA.saldoIniziale, { sign: true })} sull'anno</div>
        </div>
      </div>

      {/* Semaforo */}
      <div className="card">
        <div className="card-bar yellow" />
        <div className="card-head" style={{ flexWrap: "wrap" }}>
          <div>
            <h3 className="h3">Semaforo liquidità</h3>
            <div className="muted" style={{ fontSize: 12 }}>Saldo banca progressivo a fine mese</div>
          </div>
          <div className="legend">
            <span className="legend-item"><span className="legend-swatch ok" /> ≥ € 10k · sereno</span>
            <span className="legend-item"><span className="legend-swatch warn" /> {'<'} € 10k · tensione</span>
            <span className="legend-item"><span className="legend-swatch danger" /> negativo · scoperto</span>
          </div>
        </div>
        <div style={{ display: "grid", gridTemplateColumns: "repeat(12, 1fr)", gap: 0, borderTop: "1px solid var(--border)" }}>
          {dati.map((d, i) => {
            const cls = d.fine < 0 ? "cell-danger" : (d.fine < 10000 ? "cell-warn" : "cell-ok");
            const bg = d.fine < 0 ? "rgba(255,107,107,0.18)" : (d.fine < 10000 ? "rgba(255,230,109,0.15)" : "var(--surface-1)");
            return (
              <div key={i} style={{
                padding: "14px 6px",
                textAlign: "center",
                background: bg,
                borderRight: i < 11 ? "1px solid var(--border)" : "none",
                position: "relative"
              }}>
                <div style={{ fontSize: 10, letterSpacing: "0.1em", textTransform: "uppercase", color: "var(--muted)", fontWeight: 600 }}>{d.mese}</div>
                <div className={cls} style={{ fontFamily: "var(--serif)", fontSize: 16, fontWeight: 600, marginTop: 6 }}>
                  {fmtNum2(d.fine/1000, 1)}k
                </div>
                {d.tipo === "previsione" && (
                  <div style={{ fontSize: 9, color: "var(--dim)", marginTop: 2 }}>prev.</div>
                )}
              </div>
            );
          })}
        </div>
      </div>

      {/* Tabella mensile */}
      <div className="card">
        <div className="card-bar" />
        <div className="card-head">
          <h3 className="h3">Flussi mensili</h3>
          <div className="scroll-hint"><Icon2 name="arrow" size={12} /> scorri ←→ per vedere tutti i mesi</div>
        </div>
        <div className="tesoreria-wrap">
          <table className="tesoreria">
            <thead>
              <tr>
                <th>Voce</th>
                {MESI2.map(m => <th key={m}>{m}</th>)}
                <th style={{ background: "var(--surface-3)" }}>Anno</th>
              </tr>
            </thead>
            <tbody>
              <Row label="Saldo banca iniziale" values={saldiInizio} kind="saldo" />

              <tr className="group-head"><td colSpan="14">Entrate</td></tr>
              <Row label="Incassi clienti" values={incassiClienti} indent editable="incassiClienti" />
              {hasConsuntivoLive && <RowReale label="↳ da fatture incassate" values={incassiClientiReale} />}
              <Row label="Apporti soci"   values={apporti}         indent editable="apportiSoci" />
              <Row label="Finanziamenti"  values={finanz}          indent editable="finanziamenti" />
              <Row label="Altre entrate"  values={altreEnt}        indent editable="altre" />
              <Row label="Totale entrate" values={totEntrate} kind="saldo" />

              <tr className="group-head"><td colSpan="14">Uscite</td></tr>
              <Row label="Stipendi / emolumenti"               values={stipendi}    indent editable="stipendi" />
              {hasConsuntivoLive && <RowReale label="↳ da costo personale (stima /12)" values={stipendiReale} />}
              <Row label="Fornitori"                            values={fornitori}   indent editable="fornitori" />
              {hasConsuntivoLive && <RowReale label="↳ da fatture pagate" values={fornitoriReale} />}
              <Row label="F24 imposte / IVA / ritenute"         values={f24}         indent editable="f24" />
              {hasConsuntivoLive && <RowReale label="↳ da scadenze F24 pagate" values={f24Reale} />}
              <Row label="Rate finanziamenti"                   values={rate}        indent editable="rateFin" />
              <Row label="Rate fiscali (piani di rateazione)"   values={rateFiscali} indent editable="rateFiscali" />
              <Row label="Altre spese"                          values={altreUsc}    indent editable="altreSpese" />
              <Row label="Totale uscite" values={totUscite} kind="saldo" />

              <tr className="group-head"><td colSpan="14">Saldo</td></tr>
              <Row label="Variazione del mese" values={variazioni} kind="saldo" />
              <Row label="Saldo banca a fine mese" values={saldiFine} kind="saldo" />
            </tbody>
          </table>
        </div>
      </div>

      {showSaldoModal && <SaldoIniModal anno={anno} current={TESORERIA.saldoIniziale} onSave={saveSaldo} onClose={() => setShowSaldoModal(false)} />}
      {showImportModal && <ImportRateModal anno={anno} onClose={() => setShowImportModal(false)} onSaved={() => window.AntaresStore.refresh("tesoreria")} />}
    </div>
  );
}

function ImportRateModal({ anno, onClose, onSaved }) {
  // 12 numeri editabili. L'utente può: incollare 12 numeri separati da tab/newline (paste da Excel),
  // oppure compilarli a mano. Salviamo sulla riga "rate_fiscali" della tesoreria.
  const [valori, setValori] = useState2(Array(12).fill(""));
  const [busy, setBusy]     = useState2(false);
  const [info, setInfo]     = useState2("");

  const onPaste = (e, idx) => {
    const text = e.clipboardData.getData("text").trim();
    if (!text.includes("\t") && !text.includes("\n") && !text.includes(";") && !text.includes(",")) return;
    e.preventDefault();
    // split flessibile: tab, newline, ;
    const parts = text.split(/[\t\n;]+/).map(s => s.trim()).filter(s => s !== "");
    const nuovi = [...valori];
    parts.forEach((p, i) => {
      if (idx + i < 12) {
        // accetta sia 1.234,56 (it) sia 1234.56 (en)
        const cleaned = p.replace(/[€\s]/g, "").replace(/\.(?=\d{3})/g, "").replace(",", ".");
        nuovi[idx + i] = cleaned;
      }
    });
    setValori(nuovi);
    setInfo(`Incollati ${Math.min(parts.length, 12 - idx)} valori`);
    setTimeout(() => setInfo(""), 2500);
  };

  const totale = valori.reduce((s, v) => s + (parseFloat(v) || 0), 0);

  const submit = async (e) => {
    e.preventDefault();
    setBusy(true);
    // upsert una cella per mese sulla voce rate_fiscali
    for (let i = 0; i < 12; i++) {
      const num = parseFloat(valori[i]) || 0;
      const r = await window.AntaresStore.saveTesoreriaCella(anno, i + 1, "rateFiscali", num);
      if (r.error) { setBusy(false); alert("Errore mese " + (i+1) + ": " + r.error.message); return; }
    }
    setBusy(false);
    await onSaved();
    onClose();
  };

  return (
    <div onClick={onClose} style={{ position: "fixed", inset: 0, background: "rgba(0,0,0,.4)", zIndex: 200, display: "flex", alignItems: "center", justifyContent: "center", padding: 16 }}>
      <div onClick={e => e.stopPropagation()} style={{ background: "var(--surface, #fff)", borderRadius: 14, padding: 24, width: "100%", maxWidth: 760, boxShadow: "0 20px 60px rgba(0,0,0,.25)" }}>
        <h3 style={{ margin: 0, marginBottom: 6, fontFamily: "Playfair Display, serif", fontSize: 22 }}>
          Importa carico mensile rate · {anno}
        </h3>
        <p style={{ margin: 0, marginBottom: 16, fontSize: 13, color: "var(--muted)" }}>
          Riempi i 12 mesi con il <strong>totale rate</strong> di quel mese (piani INPS, AdER, IVA, IRES, 770 ecc. dal tuo Excel CRUSCOTTO_RATE_AZIENDA, foglio "Carico mensile").
          <br /><em>Suggerimento: dall'Excel seleziona i 12 numeri in colonna, copia (⌘C), e incolla (⌘V) nel primo campo qui sotto — gli altri si popolano da soli.</em>
        </p>
        <form onSubmit={submit}>
          <div style={{ display: "grid", gridTemplateColumns: "repeat(6, 1fr)", gap: 8, marginBottom: 14 }}>
            {valori.map((v, i) => (
              <div key={i}>
                <div style={{ fontSize: 10, letterSpacing: "0.08em", color: "var(--muted)", textTransform: "uppercase", marginBottom: 2 }}>{MESI2[i]}</div>
                <input
                  className="input num"
                  type="text"
                  placeholder="0,00"
                  value={v}
                  onChange={e => { const n=[...valori]; n[i] = e.target.value.replace(",", "."); setValori(n); }}
                  onPaste={e => onPaste(e, i)}
                  style={{ width: "100%" }}
                />
              </div>
            ))}
          </div>
          {info && <div className="help" style={{ marginBottom: 8, color: "var(--teal)" }}>{info}</div>}
          <div className="row" style={{ justifyContent: "space-between", padding: "10px 0", borderTop: "1px solid var(--border)", marginBottom: 14 }}>
            <span className="muted">Totale annuo rate</span>
            <strong className="mono" style={{ fontSize: 18 }}>{fmt2(totale)}</strong>
          </div>
          <div style={{ display: "flex", gap: 8, justifyContent: "flex-end" }}>
            <button type="button" onClick={onClose} style={{ padding: "9px 14px", borderRadius: 8, border: "1px solid var(--border)", background: "none", cursor: "pointer" }}>Annulla</button>
            <button type="submit" className="login-btn" style={{ flex: "0 0 auto", width: "auto", padding: "9px 16px" }} disabled={busy}>
              {busy ? "Importo…" : "Importa nei 12 mesi (riga Rate fiscali)"}
            </button>
          </div>
        </form>
      </div>
    </div>
  );
}

function SaldoIniModal({ anno, current, onSave, onClose }) {
  const [val, setVal] = useState2(String(current || ""));
  return (
    <div onClick={onClose} style={{ position: "fixed", inset: 0, background: "rgba(0,0,0,.4)", zIndex: 200, display: "flex", alignItems: "center", justifyContent: "center", padding: 16 }}>
      <div onClick={e => e.stopPropagation()} style={{ background: "var(--surface, #fff)", borderRadius: 14, padding: 24, width: "100%", maxWidth: 380, boxShadow: "0 20px 60px rgba(0,0,0,.25)" }}>
        <h3 style={{ margin: 0, marginBottom: 6, fontFamily: "Playfair Display, serif", fontSize: 22 }}>Saldo banca iniziale</h3>
        <p style={{ margin: 0, marginBottom: 16, fontSize: 13, color: "var(--muted)" }}>Saldo al 1° gennaio {anno}.</p>
        <form onSubmit={(e) => { e.preventDefault(); onSave(parseFloat(String(val).replace(",", ".")) || 0); }}>
          <div className="login-input-wrap" style={{ marginBottom: 14 }}>
            <input className="login-input num" type="text" placeholder="0,00 €" value={val} onChange={e => setVal(e.target.value)} autoFocus />
          </div>
          <div style={{ display: "flex", gap: 8, justifyContent: "flex-end" }}>
            <button type="button" onClick={onClose} style={{ padding: "9px 14px", borderRadius: 8, border: "1px solid var(--border)", background: "none", cursor: "pointer" }}>Annulla</button>
            <button type="submit" className="login-btn" style={{ flex: "0 0 auto", width: "auto", padding: "9px 16px" }}>Salva</button>
          </div>
        </form>
      </div>
    </div>
  );
}

/* ============================================================
   8. SCADENZE
   ============================================================ */
function Scadenze() {
  const [tab, setTab] = useState2("fiscali");
  const [view, setView] = useState2("lista");
  const [showModal, setShowModal] = useState2(false);
  const [editing, setEditing] = useState2(null);

  const urgentFis = SCAD_FIS.filter(s => s.urgent);
  const urgentInc = SCADENZE_INCASSI.filter(s => s.urgent);

  const openNew = () => { setEditing(null); setShowModal(true); };
  const openEdit = (s) => { setEditing(s); setShowModal(true); };
  const removeScad = async (id) => {
    if (!confirm("Eliminare questa scadenza?")) return;
    const res = await window.AntaresAPI.scadenze.remove(id);
    if (res.error) { alert(res.error.message); return; }
    await window.AntaresStore.refresh("scadenze");
  };

  const totFis = SCAD_FIS.reduce((s, x) => s + x.importo, 0);
  const totInc = SCADENZE_INCASSI.reduce((s, x) => s + x.importo, 0);

  const categoryPill = (cat) => {
    const m = {
      "F24":  "coral",
      "IVA":  "coral",
      "INPS": "blue",
      "IRES": "yellow",
      "AdER": "coral",
      "Rata": "teal",
    };
    return <span className={"pill " + (m[cat] || "")}>{cat}</span>;
  };

  // Calendario dinamico: 3 mesi consecutivi a partire dal mese corrente
  const MESI_NOME = ["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"];
  const _oggi = new Date();
  const mesiCalendario = [0, 1, 2].map(off => {
    const dt = new Date(_oggi.getFullYear(), _oggi.getMonth() + off, 1);
    const y = dt.getFullYear();
    const mIdx = dt.getMonth();
    const giorniMese = new Date(y, mIdx + 1, 0).getDate();
    // primo giorno con lunedì = 0 ... domenica = 6
    const primoGg = (new Date(y, mIdx, 1).getDay() + 6) % 7;
    return { idx: mIdx, anno: y, nome: `${MESI_NOME[mIdx]} ${y}`, giorniMese, primoGg };
  });

  // parse "gg/mm/aaaa" → { d, m (0-indexed), y }
  const parseItDate = (str) => {
    const p = (str || "").split("/");
    if (p.length !== 3) return null;
    return { d: parseInt(p[0], 10), m: parseInt(p[1], 10) - 1, y: parseInt(p[2], 10) };
  };

  const eventiPerGiorno = (anno, meseIdx) => {
    const out = {};
    [...SCAD_FIS, ...SCADENZE_INCASSI.map(i => ({ ...i, _incasso: true }))]
      .forEach(s => {
        const pd = parseItDate(s.data);
        if (!pd || pd.y !== anno || pd.m !== meseIdx) return;
        if (!out[pd.d]) out[pd.d] = [];
        out[pd.d].push(s);
      });
    return out;
  };

  return (
    <div className="stack">
      <div className="page-head">
        <div className="page-title-block">
          <span className="eyebrow">Scadenzario · 60 giorni</span>
          <h1 className="h1">Scadenze</h1>
        </div>
        <div className="page-actions">
          <div className="segmented compact">
            <button className={view === "lista" ? "active" : ""} onClick={() => setView("lista")}>
              <Icon2 name="menu" size={12} /> Lista
            </button>
            <button className={view === "calendario" ? "active" : ""} onClick={() => setView("calendario")}>
              <Icon2 name="cal" size={12} /> Calendario
            </button>
          </div>
          <button className="btn" onClick={openNew}><Icon2 name="plus" /> Nuova scadenza</button>
        </div>
      </div>

      {(urgentFis.length + urgentInc.length) > 0 && (
        <div className="alert coral">
          <div className="alert-icon">!</div>
          <div>
            <strong>{urgentFis.length + urgentInc.length} scadenze nei prossimi 15 giorni</strong>
            <div className="muted" style={{ fontSize: 12, marginTop: 2 }}>
              {urgentFis.length} fiscali per {fmt2(urgentFis.reduce((s, x) => s + x.importo, 0))} ·
              {" "}{urgentInc.length} incassi attesi per {fmt2(urgentInc.reduce((s, x) => s + x.importo, 0))}
            </div>
          </div>
        </div>
      )}

      <div className="kpi-grid" style={{ gridTemplateColumns: "repeat(3, 1fr)" }}>
        <div className="kpi coral">
          <div className="kpi-label">F24 · IVA · INPS · AdER · IRES</div>
          <div className="kpi-value">{fmt2(totFis)}</div>
          <div className="kpi-sub">{SCAD_FIS.length} scadenze · prossimi 60gg</div>
        </div>
        <div className="kpi">
          <div className="kpi-label">Incassi attesi · prossimi 60gg</div>
          <div className="kpi-value">{fmt2(totInc)}</div>
          <div className="kpi-sub">{SCADENZE_INCASSI.length} fatture aperte</div>
        </div>
        <div className="kpi blue">
          <div className="kpi-label">Saldo netto previsto</div>
          <div className="kpi-value pos">{fmt2(totInc - totFis, { sign: true })}</div>
          <div className="kpi-sub">flusso dei prossimi 60gg</div>
        </div>
      </div>

      {view === "lista" && (
        <>
          <div className="row">
            <div className="segmented teal">
              <button className={tab === "fiscali" ? "active" : ""} onClick={() => setTab("fiscali")}>Scadenze fiscali</button>
              <button className={tab === "incassi" ? "active" : ""} onClick={() => setTab("incassi")}>Incassi clienti</button>
            </div>
          </div>

          {tab === "fiscali" && (
            <div className="card">
              <div className="card-bar coral" />
              <div className="card-head">
                <h3 className="h3">Scadenzario fiscale</h3>
                <span className="muted" style={{ fontSize: 12 }}>F24, IVA, INPS, AdER, IRES, rate finanziamenti</span>
              </div>
              <div>
                {SCAD_FIS.length === 0 && (
                  <div style={{ padding: 30, textAlign: "center", color: "var(--muted)" }}>
                    Nessuna scadenza. Clicca <strong>+ Nuova scadenza</strong> per aggiungerne una.
                  </div>
                )}
                {[...SCAD_FIS].sort((a,b) => (a._raw?.data_scadenza || "").localeCompare(b._raw?.data_scadenza || "")).map(s => (
                  <div className="sched-item" key={s.id}>
                    <div className={`sched-date ${s.urgent ? "urgent" : (s.giorniAllaScadenza != null && s.giorniAllaScadenza <= 30 ? "soon" : "")}`}>
                      <div className="d">{s.giorno}</div>
                      <div className="m">{s.mese}</div>
                    </div>
                    <div>
                      <div className="sched-title">
                        {s.categoria && s.categoria !== "—" && <span style={{ marginRight: 8 }}>{categoryPill(s.categoria)}</span>}
                        {s.tipo}
                      </div>
                      <div className="sched-meta">
                        {s.data} ·{" "}
                        {s.stato === "da pagare" && <span className="pill coral" style={{ marginLeft: 4 }}>da pagare</span>}
                        {s.stato === "pagata" && <span className="pill teal" style={{ marginLeft: 4 }}>pagata</span>}
                        {s.stato === "stimato" && <span className="pill yellow" style={{ marginLeft: 4 }}>stimato</span>}
                        {s.stato === "RID attivo" && <span className="pill teal" style={{ marginLeft: 4 }}>RID attivo</span>}
                      </div>
                    </div>
                    <div className="sched-amount">{fmt2(s.importo)}</div>
                    <div style={{ display: "flex", gap: 4, marginLeft: 8 }}>
                      <button onClick={() => openEdit(s)} style={{ background: "none", border: "1px solid var(--border)", borderRadius: 6, padding: "3px 8px", cursor: "pointer", fontSize: 12 }}>Modifica</button>
                      <button onClick={() => removeScad(s.id)} style={{ background: "none", border: "1px solid var(--border)", borderRadius: 6, padding: "3px 8px", cursor: "pointer", fontSize: 12, color: "var(--danger, #c0392b)" }}>Elimina</button>
                    </div>
                  </div>
                ))}
              </div>
            </div>
          )}

          {tab === "incassi" && (
            <div className="card">
              <div className="card-bar" />
              <div className="card-head">
                <h3 className="h3">Scadenzario incassi</h3>
                <span className="muted" style={{ fontSize: 12 }}>Auto-derivato dalle fatture attive non incassate (data fattura + 30gg)</span>
              </div>
              <div>
                {SCADENZE_INCASSI.length === 0 && (
                  <div style={{ padding: 30, textAlign: "center", color: "var(--muted)" }}>
                    Nessun incasso in attesa. Si popola automaticamente quando emetti una fattura attiva non ancora incassata.
                  </div>
                )}
                {[...SCADENZE_INCASSI].sort((a,b) => (a.giorniAllaScadenza ?? 0) - (b.giorniAllaScadenza ?? 0)).map(s => (
                  <div className="sched-item" key={s.id}>
                    <div className={`sched-date ${s.urgent ? "urgent" : (s.giorno < 16 ? "soon" : "")}`}>
                      <div className="d">{s.giorno}</div>
                      <div className="m">{s.mese}</div>
                    </div>
                    <div>
                      <div className="sched-title">{s.cliente}</div>
                      <div className="sched-meta">
                        <span className="mono">{s.fattura}</span> · {s.progetto} ·{" "}
                        {s.stato === "regolare" && <span className="pill teal" style={{ marginLeft: 4 }}>regolare</span>}
                        {s.stato === "sollecitata" && <span className="pill coral" style={{ marginLeft: 4 }}>sollecitata</span>}
                        {s.stato === "in scadenza" && <span className="pill yellow" style={{ marginLeft: 4 }}>in scadenza</span>}
                      </div>
                    </div>
                    <div className="sched-amount pos">{fmt2(s.importo)}</div>
                  </div>
                ))}
              </div>
            </div>
          )}
        </>
      )}

      {view === "calendario" && (
        <div className="stack">
          <div className="legend" style={{ paddingLeft: 4 }}>
            <span className="legend-item"><span className="pill coral" style={{ padding: "2px 8px" }}>F24/IVA/AdER</span></span>
            <span className="legend-item"><span className="pill blue" style={{ padding: "2px 8px" }}>INPS</span></span>
            <span className="legend-item"><span className="pill yellow" style={{ padding: "2px 8px" }}>IRES</span></span>
            <span className="legend-item"><span className="pill teal" style={{ padding: "2px 8px" }}>Rate / incassi</span></span>
          </div>

          {mesiCalendario.map(m => {
            const events = eventiPerGiorno(m.anno, m.idx);
            const cells = [];
            // riempi celle vuote prima del primo del mese (lunedì = 0)
            for (let i = 0; i < m.primoGg; i++) cells.push({ empty: true, key: "e"+i });
            for (let d = 1; d <= m.giorniMese; d++) {
              cells.push({ giorno: d, events: events[d] || [], key: d });
            }
            const totMese = (events && Object.values(events).flat().reduce((s,e) => s + (e._incasso ? 0 : e.importo), 0)) || 0;
            const inMese = (events && Object.values(events).flat().reduce((s,e) => s + (e._incasso ? e.importo : 0), 0)) || 0;
            return (
              <div className="card" key={m.anno + "-" + m.idx}>
                <div className="card-bar" />
                <div className="card-head">
                  <h3 className="h3" style={{ fontFamily: "var(--serif)" }}>{m.nome}</h3>
                  <div className="row" style={{ gap: 12, fontSize: 12 }}>
                    <span className="muted">Uscite mese:</span> <strong className="neg">{fmt2(totMese)}</strong>
                    <span className="muted" style={{ marginLeft: 12 }}>Incassi mese:</span> <strong className="pos">{fmt2(inMese)}</strong>
                  </div>
                </div>
                <div className="cal-grid">
                  {["L","M","M","G","V","S","D"].map((d, i) => (
                    <div key={i} className="cal-dow">{d}</div>
                  ))}
                  {cells.map(c => {
                    if (c.empty) return <div key={c.key} className="cal-cell empty" />;
                    const hasUrgent = c.events.some(e => e.urgent);
                    const hasIncasso = c.events.some(e => e._incasso);
                    return (
                      <div key={c.key} className={"cal-cell" + (hasUrgent ? " urgent" : "")}>
                        <div className="cal-day">{c.giorno}</div>
                        <div className="cal-events">
                          {c.events.slice(0, 3).map(e => {
                            let cls = "cal-event";
                            if (e._incasso) cls += " incasso";
                            else if (e.categoria === "INPS") cls += " inps";
                            else if (e.categoria === "IRES") cls += " ires";
                            else if (e.categoria === "Rata") cls += " rata";
                            else cls += " fisc";
                            return (
                              <div key={e.id} className={cls} title={`${e.tipo || e.cliente} · ${fmt2(e.importo)}`}>
                                <span className="cal-event-label">{e._incasso ? e.cliente : (e.categoria || "F24")}</span>
                                <span className="cal-event-amt">{fmt2(e.importo)}</span>
                              </div>
                            );
                          })}
                          {c.events.length > 3 && (
                            <div className="cal-event more">+{c.events.length - 3} altri</div>
                          )}
                        </div>
                      </div>
                    );
                  })}
                </div>
              </div>
            );
          })}
        </div>
      )}

      {showModal && <ScadenzaModal editing={editing} onClose={() => setShowModal(false)} onSaved={() => window.AntaresStore.refresh("scadenze")} />}
    </div>
  );
}

function ScadenzaModal({ editing, onClose, onSaved }) {
  const today = new Date().toISOString().slice(0,10);
  const [tipo, setTipo]         = useState2(editing?._raw?.tipo || "f24");
  const [data, setData]         = useState2(editing?._raw?.data_scadenza || today);
  const [descrizione, setDescr] = useState2(editing?._raw?.descrizione || "");
  const [importo, setImporto]   = useState2(editing ? String(editing.importo) : "");
  const [stato, setStato]       = useState2(editing?._raw?.stato || "da pagare");
  const [busy, setBusy]         = useState2(false);
  const [err, setErr]           = useState2("");

  const submit = async (e) => {
    e.preventDefault();
    setErr("");
    if (!descrizione.trim() || !importo) { setErr("Descrizione e importo obbligatori"); return; }
    setBusy(true);
    const payload = {
      tipo, data_scadenza: data, descrizione: descrizione.trim(),
      importo: parseFloat(String(importo).replace(",", ".")) || 0,
      stato,
    };
    const res = editing
      ? await window.AntaresAPI.scadenze.update(editing.id, payload)
      : await window.AntaresAPI.scadenze.insert(payload);
    setBusy(false);
    if (res.error) { setErr(res.error.message); return; }
    await onSaved();
    onClose();
  };

  return (
    <div onClick={onClose} style={{ position: "fixed", inset: 0, background: "rgba(0,0,0,.4)", zIndex: 200, display: "flex", alignItems: "center", justifyContent: "center", padding: 16 }}>
      <div onClick={e => e.stopPropagation()} style={{ background: "var(--surface, #fff)", borderRadius: 14, padding: 24, width: "100%", maxWidth: 480, boxShadow: "0 20px 60px rgba(0,0,0,.25)" }}>
        <h3 style={{ margin: 0, marginBottom: 14, fontFamily: "Playfair Display, serif", fontSize: 22 }}>
          {editing ? "Modifica scadenza" : "Nuova scadenza"}
        </h3>
        <form onSubmit={submit}>
          {err && <div className="login-error" style={{ marginBottom: 10 }}>{err}</div>}
          <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 12, marginBottom: 12 }}>
            <div className="field">
              <label className="label">Tipo</label>
              <select className="select" value={tipo} onChange={e => setTipo(e.target.value)}>
                <option value="f24_dipendenti">F24 dipendenti (INPS/IRPEF)</option>
                <option value="f24_iva">F24 IVA</option>
                <option value="f24">F24 altro (IRES / non specificato)</option>
                <option value="ader">Rata AdER (cartella esattoriale)</option>
                <option value="rata_fin">Rata finanziamento</option>
                <option value="altra">Altra scadenza</option>
              </select>
            </div>
            <div className="field">
              <label className="label">Data scadenza</label>
              <input className="input" type="date" value={data} onChange={e => setData(e.target.value)} />
            </div>
          </div>
          <div className="field" style={{ marginBottom: 12 }}>
            <label className="label">Descrizione</label>
            <input className="input" placeholder="es. F24 IVA maggio + ritenute, Rata piano P13 INPS…" value={descrizione} onChange={e => setDescr(e.target.value)} />
          </div>
          <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: 12, marginBottom: 16 }}>
            <div className="field">
              <label className="label">Importo</label>
              <input className="input num" type="text" placeholder="0,00 €" value={importo} onChange={e => setImporto(e.target.value.replace(",", "."))} />
            </div>
            <div className="field">
              <label className="label">Stato</label>
              <select className="select" value={stato} onChange={e => setStato(e.target.value)}>
                <option value="da pagare">da pagare</option>
                <option value="pagata">pagata</option>
                <option value="stimato">stimato (importo da confermare)</option>
                <option value="RID attivo">RID attivo</option>
              </select>
            </div>
          </div>
          <div style={{ display: "flex", gap: 8, justifyContent: "flex-end" }}>
            <button type="button" onClick={onClose} style={{ padding: "9px 14px", borderRadius: 8, border: "1px solid var(--border)", background: "none", cursor: "pointer" }}>Annulla</button>
            <button type="submit" className="login-btn" style={{ flex: "0 0 auto", width: "auto", padding: "9px 16px" }} disabled={busy}>
              {busy ? "Salvo…" : (editing ? "Aggiorna" : "Salva scadenza")}
            </button>
          </div>
        </form>
      </div>
    </div>
  );
}

/* ============================================================
   9. STATO PATRIMONIALE riclassificato
   ============================================================ */
function StatoPatrimoniale() {
  const FATT = window.AntaresData.FATTURE || [];
  const CESP = window.AntaresData.CESPITI || [];
  const COLL = window.AntaresData.COLLABORATORI || [];
  const TES  = window.AntaresData.TESORERIA || { saldoIniziale: 0, mesi: [] };
  const SETT = window.AntaresData.APP_SETTINGS || {};
  const year = new Date().getFullYear();

  // ---- Saldo banca attuale (fine mese corrente da Tesoreria) ----
  let saldo = TES.saldoIniziale || 0;
  const saldiFine = (TES.mesi || []).map(m => {
    const tE = m.entrate.incassiClienti + m.entrate.apportiSoci + m.entrate.finanziamenti + m.entrate.altre;
    const tU = m.uscite.stipendi + m.uscite.fornitori + m.uscite.f24 + m.uscite.rateFin + (m.uscite.rateFiscali||0) + m.uscite.altreSpese;
    saldo += (tE - tU);
    return saldo;
  });
  const liquidita = saldiFine[Math.min(new Date().getMonth(), 11)] ?? (TES.saldoIniziale || 0);

  // ---- ATTIVO ----
  // Immobilizzazioni materiali = valore residuo cespiti
  const immobMater = CESP.reduce((s, c) => s + (c.residuo || 0), 0);

  // Crediti commerciali = fatture attive non incassate (con IVA)
  const creditiClienti = FATT
    .filter(f => f.tipo === "attiva" && f.stato !== "incassata")
    .reduce((s, f) => s + f.imponibile * (1 + (f.iva > 0 ? f.iva/100 : 0)), 0);

  const creditiDiversi = Number(SETT.crediti_diversi || 0);

  const attCirc = creditiClienti + creditiDiversi + liquidita;
  const totAttivo = immobMater + attCirc;

  // ---- PASSIVO ----
  // Debiti fornitori = fatture passive non pagate (con IVA)
  const debFornitori = FATT
    .filter(f => f.tipo === "passiva" && f.stato !== "pagata")
    .reduce((s, f) => s + f.imponibile * (1 + (f.iva > 0 ? f.iva/100 : 0)), 0);

  // Debiti tributari = scadenze F24 / AdER non pagate
  const SCAD = window.AntaresData.SCADENZE_FISCALI || [];
  const debTributari = SCAD
    .filter(s => s.stato !== "pagata" && (s.categoria === "F24" || s.categoria === "AdER" || s.categoria === "IRES" || s.categoria === "IVA"))
    .reduce((s, x) => s + x.importo, 0);

  // Debiti diversi (manuali)
  const debDiversi = Number(SETT.debiti_diversi || 0);

  // Debiti finanziari m/l termine
  const debMutui = Number(SETT.debito_mutui_residuo || 0);

  // TFR maturato = TFR iniziale + accantonamento anno (approssimato: ~7.4% RAL dipendenti)
  const ralDipendenti = COLL.filter(c => c._raw?.canale === "dipendente" && (c.anno == null || Number(c.anno) === year)).reduce((s, c) => s + (c.lordo || 0), 0);
  const tfrIniziale = Number(SETT.tfr_iniziale_anno || 0);
  const tfrAccantonamento = ralDipendenti * 0.0742;
  const tfrMaturato = tfrIniziale + tfrAccantonamento;

  const passivoCorrente = debFornitori + debTributari + debDiversi;
  const passivoMLTermine = debMutui + tfrMaturato;

  // ---- PATRIMONIO NETTO ----
  const capSociale = Number(SETT.capitale_sociale || 0);
  const riserve    = Number(SETT.riserve || 0);

  // Utile/perdita esercizio = ricalcolo Conto Economico
  const inYear = (f) => {
    const parts = (f.data || "").split("/");
    return parts.length === 3 && parseInt(parts[2], 10) === year;
  };
  const ricavi = FATT.filter(f => f.tipo === "attiva"  && inYear(f)).reduce((s,f) => s + f.imponibile, 0);
  const costiFatt = FATT.filter(f => f.tipo === "passiva" && inYear(f)).reduce((s,f) => s + f.imponibile, 0);
  const costiColl = COLL.filter(c => c.anno == null || Number(c.anno) === year).reduce((s,c) => s + (c.costoReale || 0), 0);
  const ammortamenti = CESP.reduce((s,c) => s + (c.quotaAnnua || 0), 0);
  const valAggiunto = ricavi - costiFatt;
  const ebitda = valAggiunto - costiColl;
  const ebit = ebitda - ammortamenti;
  const imposte = ebit > 0 ? ebit * 0.28 : 0;
  const utileEsercizio = ebit - imposte;

  const patNetto = capSociale + riserve + utileEsercizio;
  const totPassivo = patNetto + passivoMLTermine + passivoCorrente;

  // ---- INDICATORI ----
  const safe = (n, d) => d > 0 ? n / d : 0;
  const currentRatio = safe(attCirc, passivoCorrente);
  const quickRatio   = safe(liquidita + creditiClienti, passivoCorrente);
  const margTesoreria = liquidita + creditiClienti - passivoCorrente;
  const ccn = attCirc - passivoCorrente;
  const indebitamento = safe(passivoCorrente + passivoMLTermine, patNetto);
  const roa = safe(ebit, totAttivo) * 100;
  const roe = safe(utileEsercizio, patNetto) * 100;

  // ---- Differenza Attivo vs Passivo (squadratura) ----
  const squadratura = totAttivo - totPassivo;

  const [showParam, setShowParam] = useState2(false);

  const Riga = ({ label, val, indent = false, total = false, ipo = false }) => (
    <div style={{
      display: "grid", gridTemplateColumns: "1fr auto",
      padding: total ? "10px 12px" : "6px 12px",
      paddingLeft: indent ? 28 : 12,
      borderTop: total ? "1px solid var(--border)" : "0",
      background: total ? "var(--surface-2)" : "transparent",
      fontWeight: total ? 700 : 400,
      fontSize: total ? 14 : 13,
      color: ipo ? "var(--muted)" : "inherit",
    }}>
      <span>{label}</span>
      <span className="mono">{fmt2(val)}</span>
    </div>
  );

  return (
    <div className="stack">
      <div className="page-head">
        <div className="page-title-block">
          <span className="eyebrow">Stato Patrimoniale riclassificato · {year}</span>
          <h1 className="h1">Patrimoniale</h1>
        </div>
        <div className="page-actions">
          <button className="btn" onClick={() => setShowParam(true)}>
            <Icon2 name="edit" size={12} /> Parametri bilancio
          </button>
        </div>
      </div>

      {/* Squadratura check */}
      {Math.abs(squadratura) > 1 && (
        <div className="alert" style={{ borderColor: "var(--yellow)", background: "rgba(255,230,109,.15)" }}>
          <div className="alert-icon">ⓘ</div>
          <div>
            <strong>Squadratura: {fmt2(squadratura)}</strong>
            <div className="muted" style={{ fontSize: 12 }}>
              Differenza Attivo − Passivo. È normale se non hai inserito tutti i parametri (capitale sociale, riserve, TFR iniziale, debito mutui).
              Aggiornali da "Parametri bilancio".
            </div>
          </div>
        </div>
      )}

      {/* KPI bancari */}
      <div className="kpi-grid">
        <div className={"kpi " + (currentRatio >= 1.5 ? "" : currentRatio >= 1 ? "yellow" : "coral")}>
          <div className="kpi-label">Current ratio</div>
          <div className="kpi-value">{currentRatio.toFixed(2)}</div>
          <div className="kpi-sub">attivo corr. / passivo corr. · target ≥ 1,5</div>
        </div>
        <div className={"kpi " + (quickRatio >= 1 ? "" : quickRatio >= 0.7 ? "yellow" : "coral")}>
          <div className="kpi-label">Quick ratio</div>
          <div className="kpi-value">{quickRatio.toFixed(2)}</div>
          <div className="kpi-sub">(liquidità + crediti) / pass. corr. · target ≥ 1</div>
        </div>
        <div className={"kpi " + (margTesoreria >= 0 ? "blue" : "coral")}>
          <div className="kpi-label">Margine di tesoreria</div>
          <div className="kpi-value" style={{ color: margTesoreria < 0 ? "var(--coral)" : "var(--text)" }}>{fmt2(margTesoreria)}</div>
          <div className="kpi-sub">positivo = struttura sana</div>
        </div>
        <div className="kpi yellow">
          <div className="kpi-label">CCN · capitale circolante netto</div>
          <div className="kpi-value">{fmt2(ccn)}</div>
          <div className="kpi-sub">attivo circ. − pass. corr.</div>
        </div>
      </div>

      {/* Attivo + Passivo affiancati */}
      <div className="two-col">
        <div className="card">
          <div className="card-bar blue" />
          <div className="card-head"><h3 className="h3">Attivo</h3></div>
          <div>
            <Riga label="Immobilizzazioni materiali (cespiti)" val={immobMater} indent />
            <Riga label="Totale immobilizzazioni" val={immobMater} total />

            <Riga label="Crediti commerciali (clienti)" val={creditiClienti} indent />
            <Riga label="Altri crediti" val={creditiDiversi} indent />
            <Riga label="Liquidità (banca)" val={liquidita} indent />
            <Riga label="Totale attivo circolante" val={attCirc} total />

            <Riga label="TOTALE ATTIVO" val={totAttivo} total />
          </div>
        </div>

        <div className="card">
          <div className="card-bar coral" />
          <div className="card-head"><h3 className="h3">Passivo + Patrimonio Netto</h3></div>
          <div>
            <Riga label="Capitale sociale" val={capSociale} indent />
            <Riga label="Riserve" val={riserve} indent />
            <Riga label="Utile/perdita esercizio (stima)" val={utileEsercizio} indent />
            <Riga label="Totale Patrimonio Netto" val={patNetto} total />

            <Riga label="Debiti finanziari m/l termine" val={debMutui} indent />
            <Riga label="TFR maturato" val={tfrMaturato} indent />
            <Riga label="Totale passivo m/l termine" val={passivoMLTermine} total />

            <Riga label="Debiti commerciali (fornitori)" val={debFornitori} indent />
            <Riga label="Debiti tributari (F24/AdER/IRES)" val={debTributari} indent />
            <Riga label="Altri debiti" val={debDiversi} indent />
            <Riga label="Totale passivo corrente" val={passivoCorrente} total />

            <Riga label="TOTALE PASSIVO + PN" val={totPassivo} total />
          </div>
        </div>
      </div>

      {/* Indicatori secondari */}
      <div className="card">
        <div className="card-bar" />
        <div className="card-head">
          <h3 className="h3">Indici di redditività e indebitamento</h3>
        </div>
        <div className="table-wrap">
          <table className="table">
            <tbody>
              <tr><td>ROA · Return on Assets</td><td className="num mono"><strong>{roa.toFixed(2)}%</strong></td><td className="muted" style={{ fontSize: 12 }}>EBIT / Totale attivo · efficienza nell'uso degli asset</td></tr>
              <tr><td>ROE · Return on Equity</td><td className="num mono"><strong>{roe.toFixed(2)}%</strong></td><td className="muted" style={{ fontSize: 12 }}>Utile / Patrimonio netto · redditività per i soci</td></tr>
              <tr><td>Indice di indebitamento</td><td className="num mono"><strong>{indebitamento.toFixed(2)}</strong></td><td className="muted" style={{ fontSize: 12 }}>Debiti totali / PN · sotto 2 = struttura sana</td></tr>
            </tbody>
          </table>
        </div>
      </div>

      {showParam && <ParametriModal onClose={() => setShowParam(false)} />}
    </div>
  );
}

function ParametriModal({ onClose }) {
  const SETT = window.AntaresData.APP_SETTINGS || {};
  const [vals, setVals] = useState2({
    capitale_sociale:     SETT.capitale_sociale     || 0,
    riserve:              SETT.riserve              || 0,
    tfr_iniziale_anno:    SETT.tfr_iniziale_anno    || 0,
    debito_mutui_residuo: SETT.debito_mutui_residuo || 0,
    crediti_diversi:      SETT.crediti_diversi      || 0,
    debiti_diversi:       SETT.debiti_diversi       || 0,
    obiettivo_ricavi_anno: SETT.obiettivo_ricavi_anno || 0,
  });
  const [busy, setBusy] = useState2(false);
  const [err, setErr]   = useState2("");

  const submit = async (e) => {
    e.preventDefault();
    setBusy(true);
    const rows = Object.entries(vals).map(([key, v]) => ({
      key, value: parseFloat(String(v).replace(",", ".")) || 0,
    }));
    const { error } = await window.AntaresDB.from("app_settings").upsert(rows, { onConflict: "key" });
    setBusy(false);
    if (error) { setErr(error.message); return; }
    await window.AntaresStore.refresh("app_settings");
    onClose();
  };

  const FIELDS = [
    ["capitale_sociale",      "Capitale sociale versato",                   "es. 10.000 €"],
    ["riserve",               "Riserve (legali + altre)",                   "totale riserve"],
    ["tfr_iniziale_anno",     "TFR maturato a inizio anno",                 "se ci sono dipendenti pre-esistenti"],
    ["debito_mutui_residuo",  "Debito residuo mutui / finanziamenti",       "capitale residuo a oggi"],
    ["crediti_diversi",       "Altri crediti (caparre, depositi)",          ""],
    ["debiti_diversi",        "Altri debiti vari",                          ""],
    ["obiettivo_ricavi_anno", "Obiettivo ricavi annuali (target)",          "usato nel Cruscotto"],
  ];

  return (
    <div onClick={onClose} style={{ position: "fixed", inset: 0, background: "rgba(0,0,0,.4)", zIndex: 200, display: "flex", alignItems: "center", justifyContent: "center", padding: 16 }}>
      <div onClick={e => e.stopPropagation()} style={{ background: "var(--surface, #fff)", borderRadius: 14, padding: 24, width: "100%", maxWidth: 560, maxHeight: "90vh", overflow: "auto", boxShadow: "0 20px 60px rgba(0,0,0,.25)" }}>
        <h3 style={{ margin: 0, marginBottom: 6, fontFamily: "Playfair Display, serif", fontSize: 22 }}>Parametri bilancio</h3>
        <p style={{ margin: 0, marginBottom: 16, fontSize: 13, color: "var(--muted)" }}>
          Voci patrimoniali non derivabili automaticamente. Lasciale a 0 se non applicabili.
        </p>
        <form onSubmit={submit}>
          {err && <div className="login-error" style={{ marginBottom: 10 }}>{err}</div>}
          {FIELDS.map(([k, label, hint]) => (
            <div key={k} className="field" style={{ marginBottom: 10 }}>
              <label className="label">{label}</label>
              <input
                className="input num"
                type="text"
                value={vals[k]}
                onChange={e => setVals({ ...vals, [k]: e.target.value.replace(",", ".") })}
                placeholder="0,00 €"
              />
              {hint && <div className="help">{hint}</div>}
            </div>
          ))}
          <div style={{ display: "flex", gap: 8, justifyContent: "flex-end", marginTop: 16 }}>
            <button type="button" onClick={onClose} style={{ padding: "9px 14px", borderRadius: 8, border: "1px solid var(--border)", background: "none", cursor: "pointer" }}>Annulla</button>
            <button type="submit" className="login-btn" style={{ flex: "0 0 auto", width: "auto", padding: "9px 16px" }} disabled={busy}>
              {busy ? "Salvo…" : "Salva parametri"}
            </button>
          </div>
        </form>
      </div>
    </div>
  );
}

window.AntaresScreens2 = { Margini, Riclassificato, StatoPatrimoniale, Tesoreria, Scadenze };
