{"id":240,"date":"2026-02-26T14:30:51","date_gmt":"2026-02-26T14:30:51","guid":{"rendered":"https:\/\/www.piattaformafcr.it\/app\/?page_id=240"},"modified":"2026-02-26T15:50:45","modified_gmt":"2026-02-26T15:50:45","slug":"analisi-finanziaria","status":"publish","type":"page","link":"https:\/\/www.piattaformafcr.it\/app\/analisi-finanziaria\/","title":{"rendered":"Analisi finanziaria"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"240\" class=\"elementor elementor-240\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7e792ed e-flex e-con-boxed e-con e-parent\" data-id=\"7e792ed\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-976bb40 elementor-widget elementor-widget-button\" data-id=\"976bb40\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.piattaformafcr.it\/app\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Torna alla Home<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-65524e8 e-con-full e-flex e-con e-parent\" data-id=\"65524e8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-38733c2 elementor-widget elementor-widget-html\" data-id=\"38733c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"it\">\r\n<head>\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2pdf.js\/0.10.1\/html2pdf.bundle.min.js\"><\/script>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>FCR Engineering v13.9.1 - Enterprise Edition<\/title>\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\r\n    <style>\r\n        :root { \r\n            --fcr-blue: #4169E1; \r\n            --fcr-gold: #c5a059; \r\n            --fcr-bg: #f1f5f9; \r\n            --fcr-text: #1e293b; \r\n            --fcr-green: #10b981; \r\n            --fcr-red: #ef4444; \r\n        }\r\n\r\n        body { \r\n            font-family: 'Inter', sans-serif; \r\n            background: var(--fcr-bg); \r\n            margin: 0; \r\n            padding: 0; \r\n            font-size: 13px; \r\n            color: var(--fcr-text); \r\n            line-height: 1.5;\r\n        }\r\n        \r\n        \/* Header responsive *\/\r\n        .header { \r\n            background: var(--fcr-blue); \r\n            color: white; \r\n            padding: 10px 15px; \r\n            display: flex; \r\n            flex-direction: column; \r\n            gap: 10px;\r\n            box-shadow: 0 2px 10px rgba(0,0,0,0.2); \r\n        }\r\n        \r\n        @media (min-width: 768px) {\r\n            .header { flex-direction: row; justify-content: space-between; align-items: center; padding: 10px 30px; }\r\n        }\r\n\r\n        .header-logo-container { display: flex; align-items: center; gap: 15px; }\r\n        .company-logo { height: 20px; width: 100px; max-width: 150px; border-radius: 4px; background: white; padding: 2px; }\r\n        .header h2 { font-size: 1.2rem; margin: 0; }\r\n        \r\n        \/* Navigation tabs *\/\r\n        .nav-tabs { \r\n            background: #fff; \r\n            border-bottom: 1px solid #e2e8f0; \r\n            display: flex; \r\n            overflow-x: auto; \r\n            white-space: nowrap;\r\n            position: sticky; \r\n            top: 0; \r\n            z-index: 100; \r\n            scrollbar-width: none;\r\n        }\r\n        .nav-tabs::-webkit-scrollbar { display: none; }\r\n        \r\n        .tab-btn { \r\n            padding: 15px 20px; \r\n            border: none; \r\n            background: none; \r\n            cursor: pointer; \r\n            font-weight: 700; \r\n            color: #64748b; \r\n            border-bottom: 3px solid transparent; \r\n            transition: 0.3s; \r\n            flex: 1;\r\n            min-width: 160px;\r\n            font-size: 11px;\r\n        }\r\n        .tab-btn.active { color: var(--fcr-blue); border-bottom-color: var(--fcr-gold); }\r\n\r\n        \/* Main Wrapper *\/\r\n        .wrapper { \r\n            max-width: 1800px; \r\n            margin: 10px auto; \r\n            display: flex; \r\n            flex-direction: column; \r\n            gap: 20px; \r\n            padding: 0 10px; \r\n        }\r\n\r\n        @media (min-width: 1024px) {\r\n            .wrapper { display: grid; grid-template-columns: 350px 1fr; padding: 0 20px; margin: 20px auto; }\r\n        }\r\n\r\n        \/* Containers *\/\r\n        .sidebar { \r\n            padding: 20px; \r\n            background: white; \r\n            border-radius: 12px; \r\n            box-shadow: 0 4px 20px rgba(0,0,0,0.05); \r\n            border-top: 5px solid var(--fcr-blue); \r\n            height: fit-content; \r\n        }\r\n        .main-content { \r\n            background: white; \r\n            border-radius: 12px; \r\n            padding: 15px; \r\n            box-shadow: 0 4px 20px rgba(0,0,0,0.05); \r\n            min-height: 60vh; \r\n        }\r\n        @media (min-width: 768px) {\r\n            .main-content { padding: 25px; }\r\n        }\r\n\r\n        \/* UI Elements *\/\r\n        .section { background: #f8fafc; padding: 15px; border-radius: 8px; margin-bottom: 15px; border: 1px solid #e2e8f0; }\r\n        .section h3 { margin: 0 0 12px 0; font-size: 0.75rem; color: var(--fcr-blue); text-transform: uppercase; border-bottom: 2px solid var(--fcr-gold); padding-bottom: 5px; letter-spacing: 1px; }\r\n        \r\n        .row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; margin-bottom: 10px; gap: 10px; }\r\n        label { font-weight: 600; font-size: 0.8rem; flex: 1; min-width: 120px; color: #475569; }\r\n        input, select { flex: 1; min-width: 100px; padding: 8px; border: 1px solid #cbd5e1; border-radius: 4px; text-align: right; font-weight: bold; }\r\n        \r\n        .hint { font-size: 0.7rem; color: #64748b; font-style: italic; display: block; margin-top: -5px; margin-bottom: 10px; }\r\n        \r\n        .surface-badge { background: #e0f2fe; color: #0369a1; padding: 10px; border-radius: 6px; margin-top: 5px; border: 1px solid #bae6fd; font-weight: bold; }\r\n        .surface-error { background: #fee2e2 !important; color: #b91c1c !important; border-color: #fecaca !important; }\r\n\r\n        \/* KPI Responsive Grid *\/\r\n        .kpi-grid { \r\n            display: grid; \r\n            grid-template-columns: repeat(2, 1fr); \r\n            gap: 10px; \r\n            margin-bottom: 25px; \r\n        }\r\n        @media (min-width: 640px) { .kpi-grid { grid-template-columns: repeat(3, 1fr); } }\r\n        @media (min-width: 1200px) { .kpi-grid { grid-template-columns: repeat(5, 1fr); } }\r\n\r\n        .kpi { background: white; border: 1px solid #e2e8f0; padding: 12px; border-radius: 10px; border-left: 5px solid var(--fcr-blue); transition: 0.3s; }\r\n        .kpi.gold { border-left-color: var(--fcr-gold); }\r\n        .kpi small { font-size: 0.6rem; text-transform: uppercase; color: #64748b; display: block; margin-bottom: 3px; font-weight: 800; }\r\n        .kpi b { font-size: 1.1rem; color: var(--fcr-blue); display: block; word-break: break-all; }\r\n\r\n        \/* Buttons *\/\r\n        .btn { padding: 14px; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; text-transform: uppercase; width: 100%; transition: 0.3s; margin-bottom: 10px; font-size: 12px; }\r\n        .btn-loc { background: var(--fcr-green); color: white; }\r\n        .btn-calc { background: var(--fcr-blue); color: white; }\r\n\r\n        \/* Tables & Lists *\/\r\n        .results-table { width: 100%; border-collapse: collapse; margin-top: 10px; }\r\n        .results-table td { padding: 10px 5px; border-bottom: 1px solid #f1f5f9; font-size: 12px; }\r\n        .results-table tr td:last-child { text-align: right; font-weight: 700; color: var(--fcr-blue); }\r\n        \r\n        .area-card { \r\n            background: white; \r\n            border: 1px solid #e2e8f0; \r\n            padding: 10px; \r\n            border-radius: 8px; \r\n            margin-bottom: 10px; \r\n            display: grid; \r\n            grid-template-columns: 1fr 1fr 1fr; \r\n            gap: 8px; \r\n            align-items: center; \r\n        }\r\n        .area-card .id-badge { grid-column: 1 \/ -1; font-weight: bold; color: var(--fcr-blue); font-size: 11px; margin-bottom: 2px; }\r\n        .area-card input { width: 100%; box-sizing: border-box; text-align: center; }\r\n        \r\n        \/* Pages *\/\r\n        #page_finance, #page_layout { display: none; }\r\n        .active-page { display: block !important; }\r\n\r\n        \/* Grid per contenuti interni *\/\r\n        .inner-grid { display: flex; flex-direction: column; gap: 20px; }\r\n        @media (min-width: 1200px) {\r\n            .inner-grid { display: grid; grid-template-columns: 1.5fr 1fr; }\r\n            .inner-grid.layout { grid-template-columns: 350px 1fr; }\r\n        }\r\n\r\n        .chart-container { position: relative; width: 100%; height: 250px; margin-bottom: 20px; }\r\n\r\n        .toast { position: fixed; top: 20px; left: 50%; transform: translateX(-50%); width: 90%; max-width: 400px; padding: 12px 20px; border-radius: 8px; color: white; z-index: 1000; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.1); text-align: center; }\r\n        \r\n        .wiring-box { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; margin-top: 15px; }\r\n        .wiring-item { background: #f8fafc; padding: 10px; border-radius: 6px; border: 1px solid #e2e8f0; }\r\n        .wiring-item label { display: block; font-size: 0.7rem; color: #64748b; margin-bottom: 4px; }\r\n        .wiring-item b { font-size: 1rem; color: var(--fcr-blue); }\r\n        \r\n        .impact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }\r\n        .impact-card { padding: 12px; border-radius: 8px; border: 1px solid #e2e8f0; display: flex; flex-direction: column; gap: 3px; }\r\n        .impact-card small { font-size: 10px; opacity: 0.8; font-weight: bold; }\r\n\r\n        .canvas-wrapper { \r\n            background: #f8fafc; \r\n            padding: 10px; \r\n            border-radius: 10px; \r\n            border: 1px solid #e2e8f0; \r\n            overflow: auto; \r\n            max-width: 100%; \r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div id=\"toast\" class=\"toast\"><\/div>\r\n\r\n<div class=\"header\">\r\n    <div class=\"header-logo-container\">\r\n        <img decoding=\"async\" src=\"https:\/\/www.greenriverenergy.it\/wp-content\/uploads\/2026\/01\/loghi-energy-scaled.jpg\" alt=\"Green River Energy Logo\" class=\"company-logo\">\r\n        <div>\r\n            <h2>FCR Engineering<\/h2>\r\n            <div style=\"color:var(--fcr-gold); font-size:11px; font-weight: bold;\">V13.9.1 ENTERPRISE<\/div>\r\n        <\/div>\r\n    <\/div>\r\n    <div id=\"status_info\" style=\"font-size:11px; opacity:0.8;\">Integrated Industrial Strategy Tool<\/div>\r\n<\/div>\r\n\r\n<div class=\"nav-tabs\">\r\n    <button class=\"tab-btn active\" id=\"tab_finance\" onclick=\"showPage('finance')\">1. ANALISI FINANZIARIA<\/button>\r\n    <button class=\"tab-btn\" id=\"tab_layout\" onclick=\"showPage('layout')\">2. LAYOUT TECNICO<\/button>\r\n<\/div>\r\n\r\n<div class=\"wrapper\">\r\n    <!-- Sidebar -->\r\n    <div class=\"sidebar\">\r\n        <button id=\"btn_gps\" class=\"btn btn-loc\" onclick=\"autoLocate()\">\ud83d\udccd RILEVA POSIZIONE<\/button>\r\n        \r\n        <div class=\"section\">\r\n            <h3>Geometria & Target<\/h3>\r\n            <div class=\"row\"><label>Latitudine (\u00b0)<\/label><input type=\"number\" id=\"lat\" value=\"44.50\" step=\"0.01\" oninput=\"updateOptimalTilt()\"><\/div>\r\n            <span class=\"hint\">Tilt Ottimale: <span id=\"hint_tilt\">36<\/span>\u00b0<\/span>\r\n            <div class=\"row\"><label>Tilt Reale (\u00b0)<\/label><input type=\"number\" id=\"tilt_r\" value=\"20\"><\/div>\r\n            \r\n            <div class=\"row\"><label>Target (kWp)<\/label><input type=\"number\" id=\"p_target\" value=\"980\" oninput=\"runGlobalSync()\"><\/div>\r\n            <div class=\"row\"><label>Watt Modulo<\/label><input type=\"number\" id=\"p_watt\" value=\"550\" oninput=\"runGlobalSync()\"><\/div>\r\n            <div class=\"row\"><label>Dim. L (mm)<\/label><input type=\"number\" id=\"p_l\" value=\"2278\" oninput=\"runGlobalSync()\"><\/div>\r\n            <div class=\"row\"><label>Dim. W (mm)<\/label><input type=\"number\" id=\"p_w\" value=\"1134\" oninput=\"runGlobalSync()\"><\/div>\r\n            <div class=\"row\"><label>Deperimento %<\/label><input type=\"number\" id=\"loss_y\" value=\"0.5\" step=\"0.1\" oninput=\"runGlobalSync()\"><\/div>\r\n\r\n            <div id=\"surface_calc\" class=\"surface-badge\">\r\n                <div style=\"font-size:10px; font-weight:normal\">Superficie Netta \/ Lorda:<\/div>\r\n                <span id=\"s_min\">0<\/span> m\u00b2 \/ <span id=\"s_gross\">0<\/span> m\u00b2\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"section\">\r\n            <h3>Business & CER<\/h3>\r\n            <div class=\"row\"><label>Autoconsumo %<\/label><input type=\"number\" id=\"auto_p\" value=\"40\"><\/div>\r\n            <div class=\"row\"><label>Costo \u20ac\/kWh<\/label><input type=\"number\" id=\"e_cost\" value=\"0.22\" step=\"0.01\"><\/div>\r\n            <div class=\"row\"><label>Manut. \u20ac\/kWp<\/label><input type=\"number\" id=\"maint_kw\" value=\"12\" oninput=\"runGlobalSync()\"><\/div>\r\n            <div class=\"row\"><label>Vendita RID \u20ac<\/label><input type=\"number\" id=\"e_sell\" value=\"0.08\" step=\"0.01\"><\/div>\r\n            <div class=\"row\"><label>Incentivo CER?<\/label><select id=\"cer_on\" onchange=\"runGlobalSync()\"><option value=\"si\">S\u00cc<\/option><option value=\"no\">NO<\/option><\/select><\/div>\r\n            <div id=\"cer_box\">\r\n                <div class=\"row\"><label>Inc. \u20ac\/MWh<\/label><input type=\"number\" id=\"cer_val\" value=\"110\"><\/div>\r\n                <div class=\"row\"><label>Condiv. %<\/label><input type=\"number\" id=\"cer_share\" value=\"45\"><\/div>\r\n                <div class=\"row\"><label>% Invest.<\/label><input type=\"number\" id=\"cer_inv_perc\" value=\"60\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"section\">\r\n            <h3>Fisco & Finanza<\/h3>\r\n            <div class=\"row\"><label>CAPEX (\u20ac)<\/label><input type=\"number\" id=\"capex\" value=\"850000\"><\/div>\r\n            <div class=\"row\"><label>Vantaggio Fisc?<\/label><select id=\"tax_on\" onchange=\"runGlobalSync()\"><option value=\"si\" selected>S\u00cc<\/option><option value=\"no\">NO<\/option><\/select><\/div>\r\n            <div id=\"tax_box\">\r\n                <div class=\"row\"><label>Aliquota %<\/label><input type=\"number\" id=\"tax_rate\" value=\"27.9\" step=\"0.1\"><\/div>\r\n                <div class=\"row\"><label>Ammort. %<\/label><input type=\"number\" id=\"tax_amm\" value=\"9\"><\/div>\r\n            <\/div>\r\n            <div class=\"row\"><label>Finanziamento?<\/label><select id=\"fin_on\" onchange=\"toggleFin()\"><option value=\"si\" selected>S\u00cc<\/option><option value=\"no\">NO<\/option><\/select><\/div>\r\n            <div id=\"fin_box\">\r\n                <div class=\"row\"><label>Capitale (\u20ac)<\/label><input type=\"number\" id=\"fin_amt\" value=\"750000\"><\/div>\r\n                <div class=\"row\"><label>Tasso (%)<\/label><input type=\"number\" id=\"fin_rate\" value=\"4.5\" step=\"0.1\"><\/div>\r\n                <div class=\"row\"><label>Anni<\/label><input type=\"number\" id=\"fin_y\" value=\"8\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <button class=\"btn btn-calc\" onclick=\"runGlobalSync()\">RICALCOLA TUTTO<\/button>\r\n        <button class=\"btn\" style=\"background:var(--fcr-text); color:white; margin-top: 10px;\" onclick=\"generatePDF()\">\r\n    \ud83d\udcbe SCARICA REPORT FINALE\r\n<\/button>\r\n    <\/div>\r\n\r\n    <!-- Main Content -->\r\n    <div class=\"main-content\">\r\n        <!-- Page 1: Finance -->\r\n        <div id=\"page_finance\" class=\"active-page\">\r\n            <div class=\"kpi-grid\">\r\n                <div class=\"kpi\"><small>IRR (TIR)<\/small><b id=\"k_irr\">\u2014<\/b><\/div>\r\n                <div class=\"kpi\"><small>VAN (NPV)<\/small><b id=\"k_npv\">\u2014<\/b><\/div>\r\n                <div class=\"kpi\"><small>BREAK-EVEN<\/small><b id=\"k_bep\">\u2014<\/b><\/div>\r\n                <div class=\"kpi gold\"><small>DSCR MEDIO<\/small><b id=\"k_dscr\">\u2014<\/b><\/div>\r\n                <div class=\"kpi\"><small>PROD. SPEC.<\/small><b id=\"k_spec\">\u2014<\/b><\/div>\r\n            <\/div>\r\n\r\n            <div class=\"inner-grid\">\r\n                <div class=\"section\" style=\"background:white\">\r\n                    <h3>Cash Flow & Sostenibilit\u00e0<\/h3>\r\n                    <div class=\"chart-container\"><canvas id=\"ch_main\"><\/canvas><\/div>\r\n                    <div class=\"chart-container\" style=\"height:150px\"><canvas id=\"ch_dscr\"><\/canvas><\/div>\r\n                <\/div>\r\n                <div class=\"section\" style=\"background:white\">\r\n                    <h3>Bilancio & Report ESG<\/h3>\r\n                    <table class=\"results-table\" id=\"res_table\"><\/table>\r\n                    \r\n                    <h4 style=\"font-size:10px; text-transform:uppercase; color:var(--fcr-blue); margin:25px 0 10px 0;\">Impatto Ambientale (20 Anni)<\/h4>\r\n                    <div id=\"impact_box\" class=\"impact-grid\"><\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Page 2: Layout -->\r\n        <div id=\"page_layout\">\r\n            <div class=\"inner-grid layout\">\r\n                <div>\r\n                    <div class=\"section\" style=\"background:white\">\r\n                        <h3>Distanze & Cablaggio<\/h3>\r\n                        <div class=\"row\"><label>Dist. Ritiro (m)<\/label><input type=\"number\" id=\"dist_ritiro\" value=\"50\" oninput=\"runGlobalSync()\"><\/div>\r\n                        <span class=\"hint\">Dalla prima area (A1) alla cabina\/POD<\/span>\r\n                        <div class=\"row\"><label>Cavo (\u20ac\/m)<\/label><input type=\"number\" id=\"cost_cable_m\" value=\"12\" oninput=\"runGlobalSync()\"><\/div>\r\n                        <div class=\"row\"><label>Modulo (\u20ac\/cad)<\/label><input type=\"number\" id=\"cost_panel_unit\" value=\"110\" oninput=\"runGlobalSync()\"><\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"section\" style=\"background:white\">\r\n                        <h3>Aree & Dorsali<\/h3>\r\n                        <div id=\"area_list\"><\/div>\r\n                        <button class=\"btn\" style=\"background:var(--fcr-gold); color:white; font-size:11px;\" onclick=\"addArea()\">+ AGGIUNGI AREA<\/button>\r\n                    <\/div>\r\n\r\n                    <div class=\"section\" style=\"background:white\">\r\n                        <h3>Dettaglio Tecnico<\/h3>\r\n                        <div class=\"wiring-box\">\r\n                            <div class=\"wiring-item\"><label>Moduli<\/label><b id=\"w_mods\">\u2014<\/b><\/div>\r\n                            <div class=\"wiring-item\"><label>Potenza<\/label><b id=\"w_kwp\">\u2014<\/b><\/div>\r\n                            <div class=\"wiring-item\"><label>Stringhe<\/label><b id=\"w_str\">\u2014<\/b><\/div>\r\n                            <div class=\"wiring-item\"><label>Cavo (m)<\/label><b id=\"w_cable\">\u2014<\/b><\/div>\r\n                        <\/div>\r\n                        <div style=\"margin-top:15px; border-top:1px solid #eee; padding-top:10px;\">\r\n                            <div class=\"row\" style=\"font-size:11px;\"><label>Stima Moduli:<\/label><span id=\"est_panels_cost\">0 \u20ac<\/span><\/div>\r\n                            <div class=\"row\" style=\"font-size:11px;\"><label>Stima Cablaggio:<\/label><span id=\"est_wiring_cost\">0 \u20ac<\/span><\/div>\r\n                            <div class=\"row\" style=\"font-weight:bold; color:var(--fcr-gold);\"><label>Totale Mat.:<\/label><span id=\"est_tech_total\">0 \u20ac<\/span><\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <div class=\"section\" style=\"background:white; min-height: 400px;\">\r\n                    <h3>Mappa Preliminare<\/h3>\r\n                    <div class=\"canvas-wrapper\">\r\n                        <canvas id=\"cv_layout\"><\/canvas>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\n\/\/ Logic remains unchanged as per requirements, only UI\/UX improvements applied\r\nlet areas = [{ id: 1, w: 100, h: 60, dist: 0 }];\r\nlet chMain = null, chDscr = null;\r\nlet lastResult = null;\r\n\r\nfunction showToast(msg, color = '#003366') {\r\n    const t = document.getElementById('toast');\r\n    if(!t) return;\r\n    t.innerText = msg; t.style.backgroundColor = color;\r\n    t.style.display = 'block';\r\n    setTimeout(() => t.style.display = 'none', 3000);\r\n}\r\n\r\nfunction toggleFin() {\r\n    const box = document.getElementById('fin_box');\r\n    if(box) box.style.display = document.getElementById('fin_on').value === 'si' ? 'block' : 'none';\r\n    runGlobalSync();\r\n}\r\n\r\nfunction showPage(p) {\r\n    document.getElementById('page_finance').className = p === 'finance' ? 'active-page' : '';\r\n    document.getElementById('page_layout').className = p === 'layout' ? 'active-page' : '';\r\n    document.getElementById('tab_finance').className = 'tab-btn' + (p === 'finance' ? ' active' : '');\r\n    document.getElementById('tab_layout').className = 'tab-btn' + (p === 'layout' ? ' active' : '');\r\n    if(p === 'layout') { \r\n        runGlobalSync(); \r\n        setTimeout(renderLayout, 100);\r\n    }\r\n}\r\n\r\nfunction updateOptimalTilt() {\r\n    const latElem = document.getElementById('lat');\r\n    const hintElem = document.getElementById('hint_tilt');\r\n    if(latElem && hintElem) {\r\n        const lat = parseFloat(latElem.value) || 0;\r\n        hintElem.innerText = Math.round(lat * 0.76 + 3.1);\r\n    }\r\n}\r\n\r\nfunction addArea() {\r\n    areas.push({ id: areas.length + 1, w: 50, h: 50, dist: 15 });\r\n    renderAreaUI();\r\n    runGlobalSync();\r\n}\r\n\r\nfunction renderAreaUI() {\r\n    const cont = document.getElementById('area_list');\r\n    if(!cont) return;\r\n    cont.innerHTML = '';\r\n    areas.forEach(a => {\r\n        const div = document.createElement('div');\r\n        div.className = 'area-card';\r\n        div.innerHTML = `\r\n            <div class=\"id-badge\">AREA ${a.id}<\/div>\r\n            <div><small style=\"display:block; font-size:9px\">L (m)<\/small><input type=\"number\" value=\"${a.w}\" oninput=\"updateA(${a.id},'w',this.value)\"><\/div>\r\n            <div><small style=\"display:block; font-size:9px\">H (m)<\/small><input type=\"number\" value=\"${a.h}\" oninput=\"updateA(${a.id},'h',this.value)\"><\/div>\r\n            <div><small style=\"display:block; font-size:9px\">Dist (m)<\/small><input type=\"number\" value=\"${a.dist}\" oninput=\"updateA(${a.id},'dist',this.value)\" ${a.id === 1 ? 'disabled style=\"opacity:0.5\"' : ''}><\/div>\r\n        `;\r\n        cont.appendChild(div);\r\n    });\r\n}\r\n\r\nfunction updateA(id, f, v) {\r\n    const a = areas.find(x => x.id === id);\r\n    if(a) a[f] = parseFloat(v) || 0;\r\n    runGlobalSync();\r\n}\r\n\r\nfunction calculateIRR(flows) {\r\n    let irr = 0.1;\r\n    for (let i = 0; i < 500; i++) {\r\n        let npv = 0, dNpv = 0;\r\n        for (let t = 0; t < flows.length; t++) {\r\n            npv += flows[t] \/ Math.pow(1 + irr, t);\r\n            if (t > 0) dNpv -= t * flows[t] \/ Math.pow(1 + irr, t + 1);\r\n        }\r\n        if (Math.abs(dNpv) < 1e-10) break;\r\n        irr -= npv \/ dNpv;\r\n    }\r\n    return isNaN(irr) ? \"N\/D\" : (irr * 100).toFixed(2) + \"%\";\r\n}\r\n\r\nasync function autoLocate() {\r\n    showToast(\"Ricerca posizione...\");\r\n    if (navigator.geolocation) {\r\n        navigator.geolocation.getCurrentPosition(\r\n            pos => {\r\n                const latElem = document.getElementById('lat');\r\n                if(latElem) {\r\n                    latElem.value = pos.coords.latitude.toFixed(2);\r\n                    updateOptimalTilt();\r\n                    showToast(\"GPS: Localizzato!\", \"#10b981\");\r\n                    runGlobalSync();\r\n                }\r\n            },\r\n            err => fetchIpLocation(),\r\n            { timeout: 3000 }\r\n        );\r\n    } else {\r\n        fetchIpLocation();\r\n    }\r\n}\r\n\r\nasync function fetchIpLocation() {\r\n    try {\r\n        const response = await fetch('https:\/\/ipapi.co\/json\/');\r\n        const data = await response.json();\r\n        if(data && data.latitude) {\r\n            const latElem = document.getElementById('lat');\r\n            if(latElem) {\r\n                latElem.value = data.latitude.toFixed(2);\r\n                updateOptimalTilt();\r\n                showToast(`IP: ${data.city || 'Successo'}`, \"#c5a059\");\r\n                runGlobalSync();\r\n            }\r\n        } else {\r\n            showToast(\"Localizzazione non riuscita.\", \"#ef4444\");\r\n        }\r\n    } catch (e) {\r\n        showToast(\"Errore di rete localizzazione.\", \"#ef4444\");\r\n    }\r\n}\r\n\r\nfunction runGlobalSync() {\r\n    const ids = ['p_target', 'p_watt', 'p_l', 'p_w', 'capex', 'e_cost', 'e_sell', 'auto_p', 'lat', 'tilt_r', 'maint_kw', 'loss_y'];\r\n    for(let id of ids) { if(!document.getElementById(id)) return; }\r\n\r\n    const pT = parseFloat(document.getElementById('p_target').value) || 0;\r\n    const pW = parseFloat(document.getElementById('p_watt').value) || 1;\r\n    const modL = (parseFloat(document.getElementById('p_l').value) || 2278)\/1000;\r\n    const modW = (parseFloat(document.getElementById('p_w').value) || 1134)\/1000;\r\n    \r\n    const nModTarget = Math.ceil((pT * 1000) \/ pW);\r\n    const sNet = nModTarget * modL * modW;\r\n    const sGross = sNet * 1.45;\r\n    \r\n    const sMinElem = document.getElementById('s_min');\r\n    const sGrossElem = document.getElementById('s_gross');\r\n    if(sMinElem) sMinElem.innerText = Math.round(sNet).toLocaleString();\r\n    if(sGrossElem) sGrossElem.innerText = Math.round(sGross).toLocaleString();\r\n\r\n    let totalAreaAvailable = areas.reduce((sum, a) => sum + (a.w * a.h), 0);\r\n    const badge = document.getElementById('surface_calc');\r\n    if(badge) {\r\n        if (totalAreaAvailable < sGross) badge.classList.add('surface-error');\r\n        else badge.classList.remove('surface-error');\r\n    }\r\n\r\n    const walker = 0.8;\r\n    const blockW = (modW * 3) + walker;\r\n    const blockH = (modL * 2) + walker;\r\n    let nBlocksTarget = Math.ceil(nModTarget \/ 6);\r\n    let left = nBlocksTarget;\r\n    let placedBlocks = 0;\r\n    let areaResults = [];\r\n    \r\n    const distRitiro = parseFloat(document.getElementById('dist_ritiro').value) || 0;\r\n    let totalCableDist = distRitiro;\r\n\r\n    areas.forEach(a => {\r\n        let c = Math.floor(a.w \/ blockW);\r\n        let r = Math.floor(a.h \/ blockH);\r\n        let cap = c * r;\r\n        let ass = Math.min(left, cap);\r\n        areaResults.push({ id: a.id, w: a.w, h: a.h, cols: c, rows: r, assigned: ass, dist: a.dist });\r\n        if (ass > 0) totalCableDist += a.dist;\r\n        left -= ass; placedBlocks += ass;\r\n    });\r\n\r\n    const finalKWp = (placedBlocks * 6 * pW) \/ 1000;\r\n    const totalMods = placedBlocks * 6;\r\n    \r\n    document.getElementById('w_mods').innerText = totalMods;\r\n    document.getElementById('w_kwp').innerText = finalKWp.toFixed(1) + \" kWp\";\r\n    document.getElementById('w_str').innerText = Math.ceil(totalMods \/ 22);\r\n    \r\n    const cableEstimate = (totalMods * 5.2) + (totalCableDist * 10);\r\n    document.getElementById('w_cable').innerText = Math.round(cableEstimate).toLocaleString();\r\n\r\n    const cPanel = parseFloat(document.getElementById('cost_panel_unit').value) || 0;\r\n    const cCable = parseFloat(document.getElementById('cost_cable_m').value) || 0;\r\n    const estPanels = totalMods * cPanel;\r\n    const estWiring = cableEstimate * cCable;\r\n    document.getElementById('est_panels_cost').innerText = Math.round(estPanels).toLocaleString() + \" \u20ac\";\r\n    document.getElementById('est_wiring_cost').innerText = Math.round(estWiring).toLocaleString() + \" \u20ac\";\r\n    document.getElementById('est_tech_total').innerText = Math.round(estPanels + estWiring).toLocaleString() + \" \u20ac\";\r\n\r\n    const capex = parseFloat(document.getElementById('capex').value) || 0;\r\n    const eCost = parseFloat(document.getElementById('e_cost').value) || 0;\r\n    const eSell = parseFloat(document.getElementById('e_sell').value) || 0;\r\n    const autoP = (parseFloat(document.getElementById('auto_p').value) || 0) \/ 100;\r\n    const lat = parseFloat(document.getElementById('lat').value) || 45;\r\n    const tiltR = parseFloat(document.getElementById('tilt_r').value) || 30;\r\n    const maintKW = parseFloat(document.getElementById('maint_kw').value) || 0;\r\n    const lossY = (parseFloat(document.getElementById('loss_y').value) || 0) \/ 100;\r\n    \r\n    let baseSpec = 1350;\r\n    if(lat > 44) baseSpec = 1220; else if(lat < 40) baseSpec = 1580;\r\n    const optTilt = lat * 0.76 + 3.1;\r\n    const finalSpec = Math.round(baseSpec * (1 - Math.abs(optTilt - tiltR) * 0.006));\r\n    document.getElementById('k_spec').innerText = finalSpec + \" kWh\/kWp\";\r\n\r\n    const isCer = document.getElementById('cer_on').value === 'si';\r\n    const cerVal = (parseFloat(document.getElementById('cer_val').value) || 0) \/ 1000;\r\n    const cerShare = (parseFloat(document.getElementById('cer_share').value) || 0) \/ 100;\r\n    const cerInvPerc = (parseFloat(document.getElementById('cer_inv_perc').value) || 0) \/ 100;\r\n\r\n    const isFin = document.getElementById('fin_on').value === 'si';\r\n    const fAmt = isFin ? parseFloat(document.getElementById('fin_amt').value) : 0;\r\n    const fR = isFin ? (parseFloat(document.getElementById('fin_rate').value)\/100) : 0;\r\n    const fY = isFin ? parseInt(document.getElementById('fin_y').value) : 0;\r\n    let rata = (fR > 0 && fY > 0) ? (fAmt * fR) \/ (1 - Math.pow(1+fR, -fY)) : (fY > 0 ? fAmt\/fY : 0);\r\n\r\n    const isTaxOn = document.getElementById('tax_on').value === 'si';\r\n    const tRate = isTaxOn ? (parseFloat(document.getElementById('tax_rate').value) \/ 100) : 0;\r\n    const tAmm = isTaxOn ? (parseFloat(document.getElementById('tax_amm').value) \/ 100) : 0;\r\n\r\n    let labels = [], cum = [], dscrData = [], irrFlows = [-capex];\r\n    let currentCassa = -capex + fAmt;\r\n    let totalTEE = 0, totalCO2 = 0, sumDscr = 0, npv = -capex;\r\n\r\n    for(let t=1; t<=20; t++) {\r\n        labels.push(\"A\"+t);\r\n        let prodT = finalKWp * finalSpec * Math.pow(1 - lossY, t-1);\r\n        let immessa = prodT * (1 - autoP);\r\n        let opCost = finalKWp * maintKW;\r\n        \r\n        let ebitda = (prodT * autoP * eCost) + (immessa * eSell) - opCost;\r\n        if(isCer) ebitda += (immessa * cerShare * cerVal * cerInvPerc);\r\n        \r\n        let taxBen = (isTaxOn && t <= Math.ceil(1\/tAmm)) ? (capex * tAmm * tRate) : 0;\r\n        let flowY = ebitda + taxBen - (t <= fY ? rata : 0);\r\n        \r\n        currentCassa += flowY;\r\n        cum.push(Math.round(currentCassa));\r\n        irrFlows.push(ebitda + taxBen);\r\n        npv += (ebitda + taxBen) \/ Math.pow(1.04, t);\r\n        \r\n        if(t <= fY && rata > 0) {\r\n            let d = ebitda \/ rata;\r\n            dscrData.push(d.toFixed(2));\r\n            sumDscr += d;\r\n        } else { dscrData.push(null); }\r\n        if(t <= 10) totalTEE += (prodT \/ 1000) * 0.052;\r\n        totalCO2 += (prodT * 0.45) \/ 1000;\r\n    }\r\n\r\n    document.getElementById('k_irr').innerText = calculateIRR(irrFlows);\r\n    document.getElementById('k_npv').innerText = Math.round(npv).toLocaleString() + \" \u20ac\";\r\n    document.getElementById('k_bep').innerText = (cum.findIndex(v => v >= 0) + 1) || \">20\";\r\n    document.getElementById('k_dscr').innerText = (isFin && fY > 0) ? (sumDscr \/ fY).toFixed(2) : \"N\/D\";\r\n\r\n    document.getElementById('impact_box').innerHTML = `\r\n        <div class=\"impact-card\" style=\"background:#f0fdf4; border-color:#dcfce7\"><small>CO2 EVITATA<\/small><b>${Math.round(totalCO2)} t<\/b><\/div>\r\n        <div class=\"impact-card\" style=\"background:#ecfdf5; border-color:#d1fae5\"><small>ALBERI EQUIV.<\/small><b>${Math.round(totalCO2\/0.02).toLocaleString()}<\/b><\/div>\r\n        <div class=\"impact-card\" style=\"background:#f0f9ff; border-color:#e0f2fe\"><small>TEE CUMULATI<\/small><b>${Math.round(totalTEE)}<\/b><\/div>\r\n        <div class=\"impact-card\" style=\"background:#fefce8; border-color:#fef08a\"><small>INC. CER (A1)<\/small><b>${isCer ? Math.round(finalKWp * finalSpec * (1-autoP) * cerShare * cerVal * cerInvPerc).toLocaleString() : 0} \u20ac<\/b><\/div>\r\n    `;\r\n\r\n    document.getElementById('res_table').innerHTML = `\r\n        <tr><td>Potenza Finale Layout<\/td><td>${finalKWp.toFixed(1)} kWp<\/td><\/tr>\r\n        <tr><td>Risparmio Diretto (A1)<\/td><td>${Math.round(finalKWp * finalSpec * autoP * eCost).toLocaleString()} \u20ac<\/td><\/tr>\r\n        <tr><td>Costo O&M Annuo<\/td><td style=\"color:var(--fcr-red)\">-${Math.round(finalKWp * maintKW).toLocaleString()} \u20ac<\/td><\/tr>\r\n        <tr><td>Credito Fiscale Totale<\/td><td style=\"color:var(--fcr-green)\">${isTaxOn ? Math.round(capex * tRate).toLocaleString() : 0} \u20ac<\/td><\/tr>\r\n        <tr><td>Moduli Layout<\/td><td>${totalMods} pz<\/td><\/tr>\r\n    `;\r\n\r\n    \/\/ Charts update with responsiveness\r\n    if(chMain) chMain.destroy();\r\n    const ctxMain = document.getElementById('ch_main');\r\n    if(ctxMain) {\r\n        chMain = new Chart(ctxMain, {\r\n            type: 'line',\r\n            data: { labels, datasets: [{ label: 'Cash Flow Cumulato (\u20ac)', data: cum, borderColor: '#003366', fill: true, backgroundColor: 'rgba(0,51,102,0.05)', tension: 0.3, pointRadius: 2 }] },\r\n            options: { maintainAspectRatio: false, plugins: { legend: { labels: { boxWidth: 10, font: { size: 10 } } } } }\r\n        });\r\n    }\r\n\r\n    if(chDscr) chDscr.destroy();\r\n    const ctxDscr = document.getElementById('ch_dscr');\r\n    if(ctxDscr) {\r\n        chDscr = new Chart(ctxDscr, {\r\n            type: 'bar',\r\n            data: { labels: labels.slice(0, fY), datasets: [{ label: 'DSCR', data: dscrData.slice(0, fY), backgroundColor: '#c5a059' }] },\r\n            options: { maintainAspectRatio: false, scales: { y: { min: 0, max: 4 } }, plugins: { legend: { display: false } } }\r\n        });\r\n    }\r\n    lastResult = { areaResults, blockW, blockH, modL, modW, walker };\r\n}\r\n\r\nfunction renderLayout() {\r\n    if(!lastResult) return;\r\n    const canvas = document.getElementById('cv_layout');\r\n    if(!canvas) return;\r\n    const ctx = canvas.getContext('2d');\r\n    const { areaResults, blockW, blockH, modL, modW, walker } = lastResult;\r\n    \r\n    \/\/ Auto scale for mobile visibility\r\n    const baseWidth = 800;\r\n    canvas.width = baseWidth; \r\n    canvas.height = Math.max(500, areaResults.length * 300);\r\n    \r\n    ctx.clearRect(0,0,canvas.width,canvas.height);\r\n    let offset = 40; const sc = 3.0;\r\n    \r\n    areaResults.forEach(res => {\r\n        ctx.strokeStyle = \"#cbd5e1\"; ctx.setLineDash([5, 5]);\r\n        ctx.strokeRect(40, offset, res.w * sc, res.h * sc); ctx.setLineDash([]);\r\n        \r\n        ctx.fillStyle = \"#64748b\"; ctx.font = \"bold 12px Inter\";\r\n        ctx.fillText(`AREA ${res.id}: ${res.w}m x ${res.h}m - Blocchi: ${res.assigned}`, 40, offset - 10);\r\n        \r\n        let p = 0;\r\n        for(let r=0; r<res.rows; r++) {\r\n            for(let c=0; c<res.cols; c++) {\r\n                if(p >= res.assigned) break;\r\n                const bx = 40 + (c * blockW * sc) + (walker\/2 * sc);\r\n                const by = offset + (r * blockH * sc) + (walker\/2 * sc);\r\n                ctx.fillStyle = \"#003366\";\r\n                for(let my=0; my<2; my++) {\r\n                    for(let mx=0; mx<3; mx++) {\r\n                        ctx.fillRect(bx + (mx*modW*sc), by + (my*modL*sc), (modW*sc)-1, (modL*sc)-1);\r\n                    }\r\n                }\r\n                p++;\r\n            }\r\n        }\r\n        offset += (res.h * sc) + 80;\r\n    });\r\n}\r\n\r\nwindow.onload = () => {\r\n    renderAreaUI();\r\n    updateOptimalTilt();\r\n    runGlobalSync();\r\n};\r\n\r\nwindow.onresize = () => {\r\n    if(lastResult) renderLayout();\r\n};\r\nasync function generatePDF() {\r\n    const element = document.querySelector('.main-content'); \/\/ Cattura l'area dei risultati [cite: 260]\r\n    const btn = event.target;\r\n    \r\n    \/\/ Feedback visivo\r\n    btn.innerText = \"GENERAZIONE IN CORSO...\";\r\n    btn.style.opacity = \"0.5\";\r\n\r\n    \/\/ 1. Preparazione: rendiamo visibili entrambe le pagine per il PDF [cite: 147, 148]\r\n    const pageFinance = document.getElementById('page_finance');\r\n    const pageLayout = document.getElementById('page_layout');\r\n    const originalFinanceClass = pageFinance.className;\r\n    const originalLayoutClass = pageLayout.className;\r\n\r\n    pageFinance.classList.add('active-page');\r\n    pageLayout.classList.add('active-page');\r\n\r\n    \/\/ Opzioni di configurazione del PDF\r\n    const opt = {\r\n        margin: [10, 10],\r\n        filename: 'Report_FCR_Engineering.pdf',\r\n        image: { type: 'jpeg', quality: 0.98 },\r\n        html2canvas: { \r\n            scale: 2, \r\n            useCORS: true, \r\n            letterRendering: true,\r\n            scrollX: 0,\r\n            scrollY: 0\r\n        },\r\n        jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }\r\n    };\r\n\r\n    \/\/ 2. Generazione effettiva\r\n    try {\r\n        await html2pdf().set(opt).from(element).save();\r\n        showToast(\"PDF Generato con successo!\", \"#10b981\"); \/\/ [cite: 14, 339]\r\n    } catch (error) {\r\n        console.error(\"Errore PDF:\", error);\r\n        showToast(\"Errore nella generazione del PDF\", \"#ef4444\"); \/\/ [cite: 15, 339]\r\n    } finally {\r\n        \/\/ 3. Ripristino dell'interfaccia originale [cite: 147, 350, 351]\r\n        pageFinance.className = originalFinanceClass;\r\n        pageLayout.className = originalLayoutClass;\r\n        btn.innerText = \"\ud83d\udcbe SCARICA REPORT FINALE\";\r\n        btn.style.opacity = \"1\";\r\n    }\r\n}\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Torna alla Home FCR Engineering v13.9.1 &#8211; Enterprise Edition FCR Engineering V13.9.1 ENTERPRISE Integrated Industrial Strategy Tool 1. ANALISI FINANZIARIA [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-240","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.piattaformafcr.it\/app\/wp-json\/wp\/v2\/pages\/240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.piattaformafcr.it\/app\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.piattaformafcr.it\/app\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.piattaformafcr.it\/app\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.piattaformafcr.it\/app\/wp-json\/wp\/v2\/comments?post=240"}],"version-history":[{"count":7,"href":"https:\/\/www.piattaformafcr.it\/app\/wp-json\/wp\/v2\/pages\/240\/revisions"}],"predecessor-version":[{"id":256,"href":"https:\/\/www.piattaformafcr.it\/app\/wp-json\/wp\/v2\/pages\/240\/revisions\/256"}],"wp:attachment":[{"href":"https:\/\/www.piattaformafcr.it\/app\/wp-json\/wp\/v2\/media?parent=240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}