{"id":3159,"date":"2026-09-14T09:07:28","date_gmt":"2026-09-14T09:07:28","guid":{"rendered":"https:\/\/alromar-energie.ma\/h26\/?page_id=3159"},"modified":"2026-09-17T08:18:47","modified_gmt":"2026-09-17T08:18:47","slug":"solar-calculator","status":"publish","type":"page","link":"https:\/\/alromar-energie.ma\/h26\/solar-calculator\/","title":{"rendered":""},"content":{"rendered":"\n<script src=\"https:\/\/www.google.com\/recaptcha\/api.js\" async=\"\" defer=\"\"><\/script>\n\n<style>\n  html.alromar-gate-active,\n  body.alromar-gate-active {\n    overflow: hidden !important;\n    height: 100vh !important;\n  }\n  #alromar-captcha-gate {\n    position: fixed;\n    top: 0; left: 0; right: 0; bottom: 0;\n    width: 100vw; height: 100vh;\n    background: linear-gradient(135deg, #f8faf9 0%, #e8f5e9 100%);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    z-index: 9999999;\n    padding: 20px;\n    box-sizing: border-box;\n    font-family: 'Segoe UI', Tahoma, Arial, sans-serif;\n  }\n  .alromar-gate-card {\n    background: #fff;\n    padding: 45px 40px;\n    border-radius: 16px;\n    box-shadow: 0 8px 30px rgba(76, 175, 80, 0.25);\n    max-width: 480px;\n    width: 100%;\n    text-align: center;\n    border-top: 4px solid #4CAF50;\n    box-sizing: border-box;\n  }\n  .alromar-gate-icon {\n    width: 60px; height: 60px;\n    background: linear-gradient(135deg, #4CAF50, #8BC34A);\n    border-radius: 50%;\n    display: flex; align-items: center; justify-content: center;\n    margin: 0 auto 20px;\n    font-size: 30px; color: #fff;\n  }\n  .alromar-gate-title {\n    color: #1a1a1a; font-size: 24px; font-weight: 800;\n    margin: 0 0 10px 0; padding: 0;\n  }\n  .alromar-gate-subtitle {\n    color: #718096; font-size: 14px;\n    margin: 0 0 30px 0; padding: 0;\n    line-height: 1.6;\n  }\n  .alromar-gate-captcha {\n    display: flex; justify-content: center;\n    margin-bottom: 20px; min-height: 78px;\n  }\n  .alromar-gate-footer {\n    color: #a0aec0; font-size: 11px;\n    margin: 20px 0 0 0; padding: 0;\n    font-weight: 700; letter-spacing: 2px;\n  }\n  @media (max-width: 500px) {\n    .alromar-gate-card { padding: 35px 25px; }\n    .alromar-gate-title { font-size: 20px; }\n  }\n<\/style>\n\n<script>\n(function() {\n  var PROTECTED_PATH = '\/h26\/solar-calculator';\n  var SESSION_KEY = 'alromar_captcha_verified';\n  \n  if (window.location.pathname.indexOf(PROTECTED_PATH) === -1) return;\n  if (sessionStorage.getItem(SESSION_KEY) === '1') return;\n  \n  function showGate() {\n    document.documentElement.classList.add('alromar-gate-active');\n    document.body.classList.add('alromar-gate-active');\n    \n    var gate = document.createElement('div');\n    gate.id = 'alromar-captcha-gate';\n    gate.innerHTML = '<div class=\"alromar-gate-card\">' +\n      '<div class=\"alromar-gate-icon\">\ud83d\udee1\ufe0f<\/div>' +\n      '<h2 class=\"alromar-gate-title\">V\u00e9rification de s\u00e9curit\u00e9<\/h2>' +\n      '<p class=\"alromar-gate-subtitle\">Veuillez confirmer que vous n\\'\u00eates pas un robot pour acc\u00e9der au simulateur solaire.<\/p>' +\n      '<div class=\"alromar-gate-captcha\">' +\n        '<div class=\"g-recaptcha\" data-sitekey=\"6LcJIb8tAAAAAG0841nEfKDvml2JRYZcXPHuB3_m\" data-callback=\"onAlromarCaptchaSuccess\" data-theme=\"light\"><\/div>' +\n      '<\/div>' +\n      '<p class=\"alromar-gate-footer\">ALROMAR ENERGIE MAROC<\/p>' +\n    '<\/div>';\n    \n    document.body.appendChild(gate);\n  }\n  \n  window.onAlromarCaptchaSuccess = function() {\n    sessionStorage.setItem(SESSION_KEY, '1');\n    var gate = document.getElementById('alromar-captcha-gate');\n    if (gate) gate.parentNode.removeChild(gate);\n    document.documentElement.classList.remove('alromar-gate-active');\n    document.body.classList.remove('alromar-gate-active');\n  };\n  \n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', showGate);\n  } else {\n    showGate();\n  }\n})();\n<\/script>\n\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<style>\n  :root {\n    --green-dark: #2e7d32;\n    --green-primary: #4CAF50;\n    --green-light: #8BC34A;\n    --green-bright: #6cbd45;\n    --green-soft: #f1f8e9;\n    --black: #1a1a1a;\n    --gray-dark: #2d3748;\n    --gray-mid: #718096;\n    --gray-light: #e2e8f0;\n    --bg: #f8faf9;\n    --gradient-green: linear-gradient(135deg, #4CAF50 0%, #8BC34A 100%);\n    --gradient-green-hover: linear-gradient(135deg, #43a047 0%, #7cb342 100%);\n    --shadow: 0 8px 30px rgba(76, 175, 80, 0.15);\n  }\n  * { box-sizing: border-box; margin: 0; padding: 0; }\n  body {\n    font-family: 'Segoe UI', Tahoma, Arial, sans-serif;\n    background: var(--bg);\n    min-height: 100vh;\n    padding: 20px;\n    color: var(--gray-dark);\n  }\n  .container {\n    max-width: 820px;\n    margin: 0 auto;\n    background: #fff;\n    padding: 35px 30px;\n    border-radius: 16px;\n    box-shadow: var(--shadow);\n    border-top: 4px solid transparent;\n    border-image: var(--gradient-green) 1;\n  }\n  .lang-switch { display: flex; justify-content: flex-end; gap: 8px; margin-bottom: 20px; }\n  .lang-switch button {\n    width: auto; padding: 7px 18px; font-size: 13px; font-weight: 600;\n    background: #f0f4f2; color: var(--gray-dark); border-radius: 20px;\n    border: 1px solid var(--gray-light); cursor: pointer; transition: all 0.2s;\n  }\n  .lang-switch button:hover { background: var(--green-soft); border-color: var(--green-light); }\n  .lang-switch button.active { background: var(--gradient-green); color: #fff; border-color: transparent; }\n  h1 { color: var(--black); text-align: center; font-size: 28px; font-weight: 800; margin-bottom: 8px; letter-spacing: -0.5px; }\n  h1 span { background: var(--gradient-green); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }\n  .brand-top { text-align: center; font-size: 12px; font-weight: 700; letter-spacing: 3px; color: var(--green-bright); margin-bottom: 30px; text-transform: uppercase; }\n  label { display: block; margin-top: 18px; font-weight: 700; color: var(--gray-dark); font-size: 13px; text-transform: uppercase; letter-spacing: 0.5px; }\n  input, select {\n    width: 100%; padding: 13px 15px; margin-top: 7px;\n    border: 2px solid var(--gray-light); border-radius: 10px;\n    font-size: 15px; transition: border 0.2s, box-shadow 0.2s;\n    background: #fff; color: var(--gray-dark); font-family: inherit;\n  }\n  input:focus, select:focus { outline: none; border-color: var(--green-primary); box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.15); }\n  .hint { font-size: 12px; color: var(--gray-mid); margin-top: 5px; font-weight: normal; font-style: italic; }\n  .btn-calc {\n    width: 100%; padding: 16px; margin-top: 28px;\n    background: var(--gradient-green); color: #fff; border: none; border-radius: 10px;\n    font-size: 17px; font-weight: 700; cursor: pointer; transition: transform 0.2s, box-shadow 0.2s;\n    text-transform: uppercase; letter-spacing: 1px;\n  }\n  .btn-calc:hover { background: var(--gradient-green-hover); transform: translateY(-2px); box-shadow: 0 8px 25px rgba(76, 175, 80, 0.4); }\n  .btn-calc:disabled { opacity: 0.6; cursor: not-allowed; transform: none; }\n  .results { margin-top: 30px; background: var(--green-soft); border: 2px solid #dcedc8; padding: 22px; border-radius: 12px; display: none; }\n  .results h2 { color: var(--green-dark); font-size: 18px; margin-bottom: 18px; text-align: center; font-weight: 800; }\n  .result-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }\n  .result-item { background: #fff; padding: 14px 16px; border-radius: 10px; border: 1px solid #e8f5e9; }\n  .result-item .label { font-size: 12px; color: var(--gray-mid); margin-bottom: 5px; text-transform: uppercase; font-weight: 600; }\n  .result-item .value { font-size: 20px; font-weight: 800; color: var(--black); }\n  .result-item .value.highlight { background: var(--gradient-green); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }\n  .area-warning { margin-top: 16px; padding: 14px 16px; border-radius: 10px; font-size: 14px; display: none; font-weight: 600; }\n  .area-warning.ok { background: #def7ec; color: #03543f; border: 1px solid #84e1bc; display: block; }\n  .area-warning.ko { background: #fde8e8; color: #9b1c1c; border: 1px solid #f8b4b4; display: block; }\n  .disclaimer { margin-top: 18px; padding: 16px 18px; background: #fffaf0; border: 1px solid #f6e05e; border-left: 4px solid #ecc94b; border-radius: 10px; font-size: 13px; color: #744210; line-height: 1.7; }\n  .disclaimer strong { color: #975a16; }\n  html[dir=\"rtl\"] .disclaimer { border-left: 1px solid #f6e05e; border-right: 4px solid #ecc94b; }\n  .chart-container { margin-top: 20px; background: #fff; padding: 18px; border-radius: 10px; border: 1px solid #e8f5e9; }\n  .cta-btn { display: block; text-align: center; margin-top: 20px; background: var(--gradient-green); color: #fff; padding: 16px; border-radius: 10px; text-decoration: none; font-weight: 700; font-size: 15px; text-transform: uppercase; letter-spacing: 0.5px; }\n  .cta-btn:hover { background: var(--gradient-green-hover); }\n  .brand-bottom { font-size: 12px; font-weight: 700; letter-spacing: 3px; color: var(--gray-mid); text-align: center; margin-top: 25px; text-transform: uppercase; }\n  .step { animation: fadeIn 0.4s ease; }\n  .step-header { text-align: center; margin-bottom: 25px; }\n  .step-header h2 { color: var(--black); font-size: 22px; font-weight: 800; margin-bottom: 8px; }\n  .step-header p { color: var(--gray-mid); font-size: 14px; line-height: 1.6; max-width: 520px; margin: 0 auto; }\n  .steps-bar { display: flex; justify-content: center; gap: 40px; margin-bottom: 30px; position: relative; }\n  .steps-bar::before { content: ''; position: absolute; top: 18px; left: 20%; right: 20%; height: 2px; background: var(--gray-light); z-index: 0; }\n  .step-dot { width: 36px; height: 36px; border-radius: 50%; background: #fff; border: 2px solid var(--gray-light); display: flex; align-items: center; justify-content: center; font-weight: 700; color: var(--gray-mid); position: relative; z-index: 1; transition: all 0.3s; font-size: 14px; }\n  .step-dot.active { background: var(--gradient-green); color: #fff; border-color: transparent; box-shadow: 0 4px 15px rgba(76, 175, 80, 0.4); }\n  .step-dot.done { background: var(--green-primary); color: #fff; border-color: transparent; }\n  .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 6px; }\n  .form-row label { margin-top: 0; }\n  .form-row .field { margin-top: 14px; }\n  .checkbox-label { display: flex; align-items: flex-start; gap: 10px; margin-top: 20px; padding: 12px 14px; background: #f8faf9; border-radius: 10px; font-size: 13px; color: var(--gray-dark); line-height: 1.5; cursor: pointer; text-transform: none; letter-spacing: normal; font-weight: normal; }\n  .checkbox-label input[type=\"checkbox\"] { width: auto; margin: 2px 0 0 0; accent-color: var(--green-primary); flex-shrink: 0; }\n  .step-error { color: #e53e3e; font-size: 13px; text-align: center; margin-top: 14px; min-height: 18px; font-weight: 600; }\n  .hidden { display: none !important; }\n  @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }\n  @media (max-width: 600px) { .form-row { grid-template-columns: 1fr; gap: 0; } .form-row .field { margin-top: 14px; } }\n  @media (max-width: 500px) { .result-grid { grid-template-columns: 1fr; } .container { padding: 22px 18px; } h1 { font-size: 22px; } }\n<\/style>\n\n<div class=\"container\">\n  <div class=\"lang-switch\">\n    <button onclick=\"setLang('fr')\" id=\"btn-fr\" class=\"active\">Fran\u00e7ais<\/button>\n    <button onclick=\"setLang('ar')\" id=\"btn-ar\">\u0627\u0644\u0639\u0631\u0628\u064a\u0629<\/button>\n    <button onclick=\"setLang('en')\" id=\"btn-en\">English<\/button>\n  <\/div>\n\n  <div class=\"steps-bar\">\n    <div class=\"step-dot active\" id=\"dot-1\">1<\/div>\n    <div class=\"step-dot\" id=\"dot-2\">2<\/div>\n  <\/div>\n\n  <!-- STEP 1: FORM -->\n  <div class=\"step\" id=\"step-1\">\n    <div class=\"step-header\">\n      <h2 id=\"s1-title\">Vos informations<\/h2>\n      <p id=\"s1-subtitle\">Veuillez remplir vos informations pour lancer la simulation<\/p>\n    <\/div>\n\n    <div class=\"form-row\">\n      <div class=\"field\">\n        <label id=\"lbl-g-nom\">Nom et Pr\u00e9nom *<\/label>\n        <input type=\"text\" id=\"g-nom\" placeholder=\"Ex: Ahmed Benali\">\n      <\/div>\n      <div class=\"field\">\n        <label id=\"lbl-g-societe\">Soci\u00e9t\u00e9 (optionnel)<\/label>\n        <input type=\"text\" id=\"g-societe\" placeholder=\"Ex: SARL ABC\">\n      <\/div>\n    <\/div>\n\n    <div class=\"form-row\">\n      <div class=\"field\">\n        <label id=\"lbl-g-tel\">T\u00e9l\u00e9phone *<\/label>\n        <input type=\"tel\" id=\"g-tel\" placeholder=\"Ex: 0600000000\">\n      <\/div>\n      <div class=\"field\">\n        <label id=\"lbl-g-email\">Email *<\/label>\n        <input type=\"email\" id=\"g-email\" placeholder=\"Ex: ahmed@email.com\">\n      <\/div>\n    <\/div>\n\n    <label id=\"lbl-g-ville\">Ville *<\/label>\n    <input type=\"text\" id=\"g-ville\" placeholder=\"Ex: Casablanca\">\n\n    <label class=\"checkbox-label\" id=\"lbl-g-consent\">\n      <input type=\"checkbox\" id=\"g-consent\">\n      <span id=\"g-consent-text\">J&rsquo;accepte que mes donn\u00e9es soient utilis\u00e9es par ALROMAR ENERGIE MAROC pour \u00eatre contact\u00e9 au sujet de mon projet solaire.<\/span>\n    <\/label>\n\n    <button class=\"btn-calc\" id=\"gate-btn\" onclick=\"submitInfo()\">\n      <span id=\"gate-btn-text\">Lancer ma simulation \u2192<\/span>\n    <\/button>\n    <p class=\"step-error\" id=\"gate-error\"><\/p>\n  <\/div>\n\n  <!-- STEP 2: CALCULATOR -->\n  <div class=\"step hidden\" id=\"step-2\">\n    <h1 id=\"title\">Calculateur <span>Solaire<\/span><\/h1>\n    <p class=\"brand-top\">By ALROMAR ENERGIE MAROC<\/p>\n\n    <label id=\"lbl-city\">Ville<\/label>\n    <select id=\"city\">\n      <optgroup label=\"Tanger-T\u00e9touan-Al Hoce\u00efma\">\n        <option value=\"4.48\">Tanger (4.48 kWh\/m\u00b2\/j)<\/option>\n        <option value=\"4.66\">T\u00e9touan (4.66)<\/option>\n        <option value=\"4.55\">Ksar El K\u00e9bir (4.55)<\/option>\n        <option value=\"4.72\">Larache (4.72)<\/option>\n        <option value=\"4.85\">Chefchaouen (4.85)<\/option>\n        <option value=\"4.80\">Al Hoceima (4.80)<\/option>\n        <option value=\"4.60\">M&rsquo;diq (4.60)<\/option>\n      <\/optgroup>\n      <optgroup label=\"L'Oriental\">\n        <option value=\"5.15\">Oujda (5.15)<\/option>\n        <option value=\"4.95\">Nador (4.95)<\/option>\n        <option value=\"5.10\">Berkane (5.10)<\/option>\n        <option value=\"5.20\">Taourirt (5.20)<\/option>\n        <option value=\"5.15\">Jerada (5.15)<\/option>\n        <option value=\"5.60\">Figuig (5.60)<\/option>\n      <\/optgroup>\n      <optgroup label=\"F\u00e8s-Mekn\u00e8s\">\n        <option value=\"5.20\">F\u00e8s (5.20)<\/option>\n        <option value=\"5.15\">Mekn\u00e8s (5.15)<\/option>\n        <option value=\"5.10\">Ifrane (5.10)<\/option>\n        <option value=\"5.15\">Taza (5.15)<\/option>\n        <option value=\"5.15\">El Hajeb (5.15)<\/option>\n        <option value=\"5.20\">Sefrou (5.20)<\/option>\n      <\/optgroup>\n      <optgroup label=\"Rabat-Sal\u00e9-K\u00e9nitra\">\n        <option value=\"5.10\">Rabat (5.10)<\/option>\n        <option value=\"5.08\">Sal\u00e9 (5.08)<\/option>\n        <option value=\"4.95\">K\u00e9nitra (4.95)<\/option>\n        <option value=\"5.05\">T\u00e9mara (5.05)<\/option>\n        <option value=\"5.05\">Skhirat (5.05)<\/option>\n        <option value=\"5.05\">Sidi Slimane (5.05)<\/option>\n        <option value=\"5.10\">Sidi Kacem (5.10)<\/option>\n        <option value=\"5.10\">Kh\u00e9misset (5.10)<\/option>\n      <\/optgroup>\n      <optgroup label=\"B\u00e9ni Mellal-Kh\u00e9nifra\">\n        <option value=\"5.35\">B\u00e9ni Mellal (5.35)<\/option>\n        <option value=\"5.25\">Kh\u00e9nifra (5.25)<\/option>\n        <option value=\"5.35\">Khouribga (5.35)<\/option>\n        <option value=\"5.30\">Fquih Ben Salah (5.30)<\/option>\n        <option value=\"5.30\">Azilal (5.30)<\/option>\n      <\/optgroup>\n      <optgroup label=\"Casablanca-Settat\">\n        <option value=\"5.00\">Casablanca (5.00)<\/option>\n        <option value=\"5.00\">Mohammedia (5.00)<\/option>\n        <option value=\"5.20\">El Jadida (5.20)<\/option>\n        <option value=\"5.25\">Settat (5.25)<\/option>\n        <option value=\"5.15\">Berrechid (5.15)<\/option>\n        <option value=\"5.10\">Benslimane (5.10)<\/option>\n        <option value=\"5.20\">Sidi Bennour (5.20)<\/option>\n        <option value=\"5.05\">Nouaceur (5.05)<\/option>\n        <option value=\"5.00\">M\u00e9diouna (5.00)<\/option>\n      <\/optgroup>\n      <optgroup label=\"Marrakech-Safi\">\n        <option value=\"5.50\">Marrakech (5.50)<\/option>\n        <option value=\"5.25\">Essaouira (5.25)<\/option>\n        <option value=\"5.35\">Safi (5.35)<\/option>\n        <option value=\"5.45\">El Kelaa des Sraghna (5.45)<\/option>\n        <option value=\"5.45\">Chichaoua (5.45)<\/option>\n        <option value=\"5.30\">Youssoufia (5.30)<\/option>\n      <\/optgroup>\n      <optgroup label=\"Dr\u00e2a-Tafilalet\">\n        <option value=\"5.95\">Ouarzazate (5.95)<\/option>\n        <option value=\"5.95\">Zagora (5.95)<\/option>\n        <option value=\"5.85\">Errachidia (5.85)<\/option>\n        <option value=\"5.90\">Tinghir (5.90)<\/option>\n        <option value=\"5.60\">Midelt (5.60)<\/option>\n      <\/optgroup>\n      <optgroup label=\"Souss-Massa\">\n        <option value=\"5.50\">Agadir (5.50)<\/option>\n        <option value=\"5.55\">Taroudant (5.55)<\/option>\n        <option value=\"5.55\">Tiznit (5.55)<\/option>\n        <option value=\"5.50\">Inezgane (5.50)<\/option>\n        <option value=\"5.50\">Ait Melloul (5.50)<\/option>\n        <option value=\"5.50\">Chtouka Ait Baha (5.50)<\/option>\n        <option value=\"5.85\">Tata (5.85)<\/option>\n      <\/optgroup>\n      <optgroup label=\"Guelmim-Oued Noun\">\n        <option value=\"5.70\">Guelmim (5.70)<\/option>\n        <option value=\"5.75\">Tan-Tan (5.75)<\/option>\n        <option value=\"5.50\">Sidi Ifni (5.50)<\/option>\n        <option value=\"5.80\">Assa-Zag (5.80)<\/option>\n      <\/optgroup>\n      <optgroup label=\"La\u00e2youne-Sakia El Hamra\">\n        <option value=\"5.80\">La\u00e2youne (5.80)<\/option>\n        <option value=\"5.85\">Boujdour (5.85)<\/option>\n        <option value=\"5.85\">Es-Semara (5.85)<\/option>\n        <option value=\"5.75\">Tarfaya (5.75)<\/option>\n      <\/optgroup>\n      <optgroup label=\"Dakhla-Oued Ed-Dahab\">\n        <option value=\"5.90\">Dakhla (5.90)<\/option>\n        <option value=\"5.95\">Aousserd (5.95)<\/option>\n      <\/optgroup>\n    <\/select>\n\n    <label id=\"lbl-bill\">Facture mensuelle moyenne (DH)<\/label>\n    <input type=\"number\" id=\"bill\" value=\"600\" min=\"0\" step=\"10\">\n    <p class=\"hint\" id=\"hint-bill\">Montant total de votre facture d&rsquo;\u00e9lectricit\u00e9 par mois<\/p>\n\n    <label id=\"lbl-price\">Prix du kWh (DH\/kWh)<\/label>\n    <input type=\"number\" id=\"priceKwh\" value=\"1.20\" min=\"0.1\" step=\"0.01\">\n    <p class=\"hint\" id=\"hint-price\">Indiquez le prix que vous payez par kWh<\/p>\n\n    <label id=\"lbl-area\">Surface de toiture disponible (m\u00b2)<\/label>\n    <input type=\"number\" id=\"area\" value=\"30\" min=\"0\" step=\"5\">\n\n    <label id=\"lbl-panel\">Puissance du panneau (W)<\/label>\n    <select id=\"panelWatt\">\n      <option value=\"450\">450 W<\/option>\n      <option value=\"550\">550 W<\/option>\n      <option value=\"580\">580 W<\/option>\n      <option value=\"620\">620 W<\/option>\n      <option value=\"710\" selected=\"\">710 W (N-Type TOPCon)<\/option>\n    <\/select>\n\n    <label id=\"lbl-tilt\">Inclinaison des panneaux (\u00b0)<\/label>\n    <select id=\"tiltAngle\">\n      <option value=\"10\">10\u00b0<\/option>\n      <option value=\"15\">15\u00b0<\/option>\n      <option value=\"20\">20\u00b0<\/option>\n      <option value=\"25\" selected=\"\">25\u00b0 (optimal Maroc)<\/option>\n      <option value=\"30\">30\u00b0<\/option>\n      <option value=\"35\">35\u00b0<\/option>\n    <\/select>\n\n    <label id=\"lbl-shading\">Niveau d&rsquo;ombrage \/ obstacles<\/label>\n    <select id=\"shading\">\n      <option value=\"none\">Aucun \u2014 Toiture d\u00e9gag\u00e9e (\u00d71.00)<\/option>\n      <option value=\"light\" selected=\"\">L\u00e9ger \u2014 Petit obstacle (\u00d71.10)<\/option>\n      <option value=\"medium\">Moyen \u2014 Obstacles multiples (\u00d71.25)<\/option>\n      <option value=\"heavy\">Fort \u2014 Toiture encombr\u00e9e (\u00d71.45)<\/option>\n    <\/select>\n\n    <button class=\"btn-calc\" onclick=\"calculate()\" id=\"btn-calc\">Calculer les \u00e9conomies<\/button>\n\n    <div class=\"results\" id=\"results\">\n      <h2 id=\"results-title\">\ud83d\udcca R\u00e9sultats<\/h2>\n      <div class=\"result-grid\">\n        <div class=\"result-item\"><div class=\"label\" id=\"r-consumption-label\">Consommation mensuelle<\/div><div class=\"value\" id=\"r-consumption\">\u2014<\/div><\/div>\n        <div class=\"result-item\"><div class=\"label\" id=\"r-size-label\">Taille du syst\u00e8me<\/div><div class=\"value\" id=\"r-size\">\u2014<\/div><\/div>\n        <div class=\"result-item\"><div class=\"label\" id=\"r-panels-label\">Nombre de panneaux<\/div><div class=\"value\" id=\"r-panels\">\u2014<\/div><\/div>\n        <div class=\"result-item\"><div class=\"label\" id=\"r-area-label\">Surface requise<\/div><div class=\"value\" id=\"r-area\">\u2014<\/div><\/div>\n        <div class=\"result-item\"><div class=\"label\" id=\"r-spacing-label\">Espacement entre rang\u00e9es<\/div><div class=\"value\" id=\"r-spacing\">\u2014<\/div><\/div>\n        <div class=\"result-item\"><div class=\"label\" id=\"r-prod-label\">Production annuelle<\/div><div class=\"value\" id=\"r-prod\">\u2014<\/div><\/div>\n        <div class=\"result-item\"><div class=\"label\" id=\"r-save-label\">\u00c9conomies annuelles<\/div><div class=\"value highlight\" id=\"r-save\">\u2014<\/div><\/div>\n        <div class=\"result-item\"><div class=\"label\" id=\"r-pay-label\">Retour sur investissement<\/div><div class=\"value\" id=\"r-pay\">\u2014<\/div><\/div>\n        <div class=\"result-item\" style=\"grid-column: 1 \/ -1;\"><div class=\"label\" id=\"r-co2-label\">R\u00e9duction CO\u2082<\/div><div class=\"value\" id=\"r-co2\">\u2014<\/div><\/div>\n      <\/div>\n\n      <div class=\"area-warning\" id=\"area-warning\"><\/div>\n      <div class=\"disclaimer\" id=\"disclaimer\"><\/div>\n      <div class=\"chart-container\"><canvas id=\"savingsChart\"><\/canvas><\/div>\n      <a class=\"cta-btn\" id=\"contact-btn\" href=\"#\"><span id=\"contact-text\">\ud83d\udce7 Demander un devis par email<\/span><\/a>\n    <\/div>\n\n    <p class=\"brand-bottom\">ALROMAR ENERGIE MAROC<\/p>\n  <\/div>\n<\/div>\n\n<script>\nconst GOOGLE_SHEET_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycbwiZOP-gOgQRpeEHvVHGEnMticeWMOUUZv5senFN0RMQYFFSH-jA-TdQRU21PAuNMsv\/exec';\n\nconst SYSTEM_EFFICIENCY = 0.80;\nconst COST_PER_KWC = 10000;\nconst CO2_FACTOR = 0.72;\nconst DEGRADATION_RATE = 0.006;\nconst LATITUDE_MOROCCO = 32;\nconst SOLAR_DECLINATION_WINTER = -23.44;\nconst WINTER_ALTITUDE_ANGLE = 90 - LATITUDE_MOROCCO - Math.abs(SOLAR_DECLINATION_WINTER);\n\nconst PANEL_DIMENSIONS = {\n  450: { width: 1.96, length: 0.99, area: 1.94 },\n  550: { width: 2.28, length: 1.13, area: 2.58 },\n  580: { width: 2.28, length: 1.13, area: 2.58 },\n  620: { width: 2.38, length: 1.13, area: 2.69 },\n  710: { width: 2.384, length: 1.303, area: 3.106 }\n};\n\nconst SHADING = {\n  none: { areaFactor: 1.00, prodLoss: 0.00 },\n  light: { areaFactor: 1.10, prodLoss: 0.03 },\n  medium: { areaFactor: 1.25, prodLoss: 0.07 },\n  heavy: { areaFactor: 1.45, prodLoss: 0.12 }\n};\n\nconst translations = {\n  fr: {\n    s1Title: 'Vos informations',\n    s1Subtitle: 'Veuillez remplir vos informations pour lancer la simulation',\n    gNom: 'Nom et Pr\u00e9nom *', gSociete: 'Soci\u00e9t\u00e9 (optionnel)', gTel: 'T\u00e9l\u00e9phone *', gEmail: 'Email *', gVille: 'Ville *',\n    gConsent: 'J\\'accepte que mes donn\u00e9es soient utilis\u00e9es par ALROMAR ENERGIE MAROC pour \u00eatre contact\u00e9 au sujet de mon projet solaire.',\n    gBtn: 'Lancer ma simulation \u2192', gSending: 'Envoi en cours...',\n    errRequired: '\u26a0\ufe0f Veuillez remplir tous les champs obligatoires.',\n    errEmail: '\u26a0\ufe0f Email invalide.',\n    errConsent: '\u26a0\ufe0f Veuillez accepter les conditions.',\n    title: 'Calculateur <span>Solaire<\/span>',\n    city: 'Ville', bill: 'Facture mensuelle moyenne (DH)',\n    hintBill: 'Montant total de votre facture d\\'\u00e9lectricit\u00e9 par mois',\n    price: 'Prix du kWh (DH\/kWh)', hintPrice: 'Indiquez le prix que vous payez par kWh',\n    area: 'Surface de toiture disponible (m\u00b2)', panel: 'Puissance du panneau (W)',\n    tilt: 'Inclinaison des panneaux (\u00b0)', shading: 'Niveau d\\'ombrage \/ obstacles',\n    btn: 'Calculer les \u00e9conomies', resultsTitle: '\ud83d\udcca R\u00e9sultats',\n    consResult: 'Consommation mensuelle', size: 'Taille du syst\u00e8me', panels: 'Nombre de panneaux',\n    areaReq: 'Surface requise', spacing: 'Espacement entre rang\u00e9es', prod: 'Production annuelle',\n    save: '\u00c9conomies annuelles', pay: 'Retour sur investissement', co2: 'R\u00e9duction CO\u2082',\n    contact: '\ud83d\udce7 Demander un devis par email',\n    areaOk: '\u2705 Surface suffisante : {req} m\u00b2 requis sur {avail} m\u00b2 disponibles.',\n    areaKo: '\u26a0\ufe0f Surface insuffisante : il faut {req} m\u00b2 mais vous avez {avail} m\u00b2.',\n    disclaimer: '<strong>\u26a0\ufe0f Important :<\/strong> Ces r\u00e9sultats sont des estimations pr\u00e9liminaires et non d\u00e9finitives. Une \u00e9tude technique d\u00e9taill\u00e9e sur site est n\u00e9cessaire pour valider la conception, le dimensionnement et la rentabilit\u00e9 r\u00e9elle de votre installation solaire.',\n    unitKw: ' kWc', unitPanel: ' panneaux', unitKwh: ' kWh', unitDh: ' DH', unitYear: ' ans', unitKg: ' kg\/an', unitM2: ' m\u00b2', unitM: ' m',\n    chartLabel: '\u00c9conomies cumul\u00e9es (DH)', chartYear: 'Ann\u00e9e', chartCost: 'Co\u00fbt syst\u00e8me',\n    emailSubject: 'Demande de devis solaire \u2014 ALROMAR ENERGIE MAROC',\n    emailBody: 'Bonjour,%0D%0A%0D%0AJe souhaite un devis.%0D%0A%0D%0ANom: {nom}%0D%0ASoci\u00e9t\u00e9: {societe}%0D%0AT\u00e9l: {telephone}%0D%0AEmail: {email}%0D%0AVille: {ville}%0D%0A%0D%0AConsommation: {cons} kWh%0D%0APrix: {price} DH%0D%0ATaille: {size} kWc%0D%0APanneaux: {panels}%0D%0ASurface: {area} m\u00b2%0D%0A\u00c9conomies: {savings} DH%0D%0A%0D%0ACordialement.'\n  },\n  ar: {\n    s1Title: '\u0645\u0639\u0644\u0648\u0645\u0627\u062a\u0643\u0645',\n    s1Subtitle: '\u064a\u0631\u062c\u0649 \u0645\u0644\u0621 \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u0643\u0645 \u0644\u0628\u062f\u0621 \u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0644\u0637\u0627\u0642\u0629 \u0627\u0644\u0634\u0645\u0633\u064a\u0629',\n    gNom: '\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0643\u0627\u0645\u0644 *', gSociete: '\u0627\u0644\u0634\u0631\u0643\u0629 (\u0627\u062e\u062a\u064a\u0627\u0631\u064a)', gTel: '\u0627\u0644\u0647\u0627\u062a\u0641 *', gEmail: '\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a *', gVille: '\u0627\u0644\u0645\u062f\u064a\u0646\u0629 *',\n    gConsent: '\u0623\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0628\u064a\u0627\u0646\u0627\u062a\u064a \u0645\u0646 \u0637\u0631\u0641 ALROMAR ENERGIE MAROC \u0644\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639\u064a \u0628\u062e\u0635\u0648\u0635 \u0645\u0634\u0631\u0648\u0639\u064a \u0627\u0644\u0634\u0645\u0633\u064a.',\n    gBtn: '\u2190 \u0627\u0628\u062f\u0623 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629', gSending: '\u062c\u0627\u0631\u064a \u0627\u0644\u0625\u0631\u0633\u0627\u0644...',\n    errRequired: '\u26a0\ufe0f \u064a\u0631\u062c\u0649 \u0645\u0644\u0621 \u062c\u0645\u064a\u0639 \u0627\u0644\u062d\u0642\u0648\u0644 \u0627\u0644\u0625\u0644\u0632\u0627\u0645\u064a\u0629.',\n    errEmail: '\u26a0\ufe0f \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u063a\u064a\u0631 \u0635\u062d\u064a\u062d.',\n    errConsent: '\u26a0\ufe0f \u064a\u0631\u062c\u0649 \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u0649 \u0627\u0644\u0634\u0631\u0648\u0637.',\n    title: '\u062d\u0627\u0633\u0628\u0629 <span>\u0627\u0644\u0637\u0627\u0642\u0629 \u0627\u0644\u0634\u0645\u0633\u064a\u0629<\/span>',\n    city: '\u0627\u0644\u0645\u062f\u064a\u0646\u0629', bill: '\u0645\u062a\u0648\u0633\u0637 \u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629 \u0627\u0644\u0634\u0647\u0631\u064a\u0629 (\u062f\u0631\u0647\u0645)',\n    hintBill: '\u0627\u0644\u0645\u0628\u0644\u063a \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a \u0644\u0641\u0627\u062a\u0648\u0631\u0629 \u0627\u0644\u0643\u0647\u0631\u0628\u0627\u0621 \u0627\u0644\u0634\u0647\u0631\u064a\u0629',\n    price: '\u0633\u0639\u0631 \u0627\u0644\u0643\u064a\u0644\u0648\u0648\u0627\u0637 \u0633\u0627\u0639\u0629 (\u062f\u0631\u0647\u0645\/kWh)', hintPrice: '\u064a\u0631\u062c\u0649 \u0625\u062f\u062e\u0627\u0644 \u0633\u0639\u0631 \u0627\u0644\u0643\u064a\u0644\u0648\u0648\u0627\u0637 \u0633\u0627\u0639\u0629',\n    area: '\u0645\u0633\u0627\u062d\u0629 \u0627\u0644\u0633\u0637\u062d \u0627\u0644\u0645\u062a\u0627\u062d\u0629 (\u0645\u00b2)', panel: '\u0642\u062f\u0631\u0629 \u0627\u0644\u0644\u0648\u062d \u0627\u0644\u0634\u0645\u0633\u064a (\u0648\u0627\u0637)',\n    tilt: '\u0632\u0627\u0648\u064a\u0629 \u0627\u0644\u0645\u064a\u0644\u0627\u0646 (\u00b0)', shading: '\u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u062a\u0638\u0644\u064a\u0644 \/ \u0627\u0644\u0639\u0648\u0627\u0626\u0642',\n    btn: '\u0627\u062d\u0633\u0628 \u0627\u0644\u062a\u0648\u0641\u064a\u0631', resultsTitle: '\ud83d\udcca \u0646\u062a\u0627\u0626\u062c \u0627\u0644\u062d\u0633\u0627\u0628',\n    consResult: '\u0627\u0644\u0627\u0633\u062a\u0647\u0644\u0627\u0643 \u0627\u0644\u0634\u0647\u0631\u064a', size: '\u062d\u062c\u0645 \u0627\u0644\u0646\u0638\u0627\u0645', panels: '\u0639\u062f\u062f \u0627\u0644\u0623\u0644\u0648\u0627\u062d',\n    areaReq: '\u0627\u0644\u0645\u0633\u0627\u062d\u0629 \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629', spacing: '\u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0628\u064a\u0646 \u0627\u0644\u0635\u0641\u0648\u0641', prod: '\u0627\u0644\u0625\u0646\u062a\u0627\u062c \u0627\u0644\u0633\u0646\u0648\u064a',\n    save: '\u0627\u0644\u062a\u0648\u0641\u064a\u0631 \u0627\u0644\u0633\u0646\u0648\u064a', pay: '\u0641\u062a\u0631\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f', co2: '\u062a\u0642\u0644\u064a\u0644 \u0627\u0646\u0628\u0639\u0627\u062b\u0627\u062a CO\u2082',\n    contact: '\ud83d\udce7 \u0637\u0644\u0628 \u0639\u0631\u0636 \u0633\u0639\u0631 \u0639\u0628\u0631 \u0627\u0644\u0628\u0631\u064a\u062f',\n    areaOk: '\u2705 \u0627\u0644\u0645\u0633\u0627\u062d\u0629 \u0643\u0627\u0641\u064a\u0629: \u064a\u0644\u0632\u0645 {req} \u0645\u00b2 \u0645\u0646 \u0623\u0635\u0644 {avail} \u0645\u00b2.',\n    areaKo: '\u26a0\ufe0f \u0627\u0644\u0645\u0633\u0627\u062d\u0629 \u063a\u064a\u0631 \u0643\u0627\u0641\u064a\u0629: \u064a\u0644\u0632\u0645 {req} \u0645\u00b2 \u0648\u0644\u0643\u0646 \u0644\u062f\u064a\u0643\u0645 {avail} \u0645\u00b2 \u0641\u0642\u0637.',\n    disclaimer: '<strong>\u26a0\ufe0f \u062a\u0646\u0628\u064a\u0647 \u0645\u0647\u0645:<\/strong> \u0647\u0630\u0647 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0647\u064a \u062a\u0642\u062f\u064a\u0631\u0627\u062a \u0623\u0648\u0644\u064a\u0629 \u0648\u0644\u064a\u0633\u062a \u0646\u0647\u0627\u0626\u064a\u0629. \u064a\u062a\u0639\u064a\u0646 \u0625\u062c\u0631\u0627\u0621 \u062f\u0631\u0627\u0633\u0629 \u062a\u0642\u0646\u064a\u0629 \u0645\u0641\u0635\u0644\u0629 \u0641\u064a \u0639\u064a\u0646 \u0627\u0644\u0645\u0643\u0627\u0646 \u0644\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u062a\u0635\u0645\u064a\u0645 \u0648\u0627\u0644\u062d\u062c\u0645 \u0627\u0644\u0641\u0639\u0644\u064a \u0648\u062c\u062f\u0648\u0649 \u0627\u0644\u0631\u0628\u062d\u064a\u0629 \u0627\u0644\u062d\u0642\u064a\u0642\u064a\u0629 \u0644\u0645\u0646\u0634\u0623\u062a\u0643\u0645 \u0627\u0644\u0634\u0645\u0633\u064a\u0629.',\n    unitKw: ' \u0643\u064a\u0644\u0648\u0648\u0627\u0637 \u0630\u0631\u0648\u0629', unitPanel: ' \u0644\u0648\u062d', unitKwh: ' \u0643\u064a\u0644\u0648\u0648\u0627\u0637 \u0633\u0627\u0639\u0629', unitDh: ' \u062f\u0631\u0647\u0645', unitYear: ' \u0633\u0646\u0629', unitKg: ' \u0643\u063a\/\u0633\u0646\u0629', unitM2: ' \u0645\u00b2', unitM: ' \u0645',\n    chartLabel: '\u0627\u0644\u062a\u0648\u0641\u064a\u0631 \u0627\u0644\u062a\u0631\u0627\u0643\u0645\u064a (\u062f\u0631\u0647\u0645)', chartYear: '\u0627\u0644\u0633\u0646\u0629', chartCost: '\u062a\u0643\u0644\u0641\u0629 \u0627\u0644\u0646\u0638\u0627\u0645',\n    emailSubject: '\u0637\u0644\u0628 \u0639\u0631\u0636 \u0633\u0639\u0631 \u2014 ALROMAR ENERGIE MAROC',\n    emailBody: '\u0627\u0644\u0633\u0644\u0627\u0645 \u0639\u0644\u064a\u0643\u0645\u060c%0D%0A%0D%0A\u0627\u0644\u0627\u0633\u0645: {nom}%0D%0A\u0627\u0644\u0634\u0631\u0643\u0629: {societe}%0D%0A\u0627\u0644\u0647\u0627\u062a\u0641: {telephone}%0D%0A\u0627\u0644\u0628\u0631\u064a\u062f: {email}%0D%0A\u0627\u0644\u0645\u062f\u064a\u0646\u0629: {ville}%0D%0A%0D%0A\u0627\u0644\u0627\u0633\u062a\u0647\u0644\u0627\u0643: {cons} kWh%0D%0A\u0627\u0644\u0633\u0639\u0631: {price} \u062f\u0631\u0647\u0645%0D%0A\u0627\u0644\u062d\u062c\u0645: {size} kWc%0D%0A\u0627\u0644\u0623\u0644\u0648\u0627\u062d: {panels}%0D%0A\u0627\u0644\u0645\u0633\u0627\u062d\u0629: {area} m\u00b2%0D%0A\u0627\u0644\u062a\u0648\u0641\u064a\u0631: {savings} \u062f\u0631\u0647\u0645%0D%0A%0D%0A\u0648\u062a\u0641\u0636\u0644\u0648\u0627 \u0628\u0642\u0628\u0648\u0644 \u0641\u0627\u0626\u0642 \u0627\u0644\u0627\u062d\u062a\u0631\u0627\u0645.'\n  },\n  en: {\n    s1Title: 'Your information',\n    s1Subtitle: 'Please fill in your information to start the solar simulation',\n    gNom: 'Full Name *', gSociete: 'Company (optional)', gTel: 'Phone *', gEmail: 'Email *', gVille: 'City *',\n    gConsent: 'I agree that my data may be used by ALROMAR ENERGIE MAROC to contact me.',\n    gBtn: 'Start my simulation \u2192', gSending: 'Sending...',\n    errRequired: '\u26a0\ufe0f Please fill in all required fields.',\n    errEmail: '\u26a0\ufe0f Invalid email.',\n    errConsent: '\u26a0\ufe0f Please accept the terms.',\n    title: 'Solar <span>Calculator<\/span>',\n    city: 'City', bill: 'Average monthly bill (DH)', hintBill: 'Total monthly electricity bill',\n    price: 'Price per kWh (DH\/kWh)', hintPrice: 'Enter the price you pay per kWh',\n    area: 'Roof area (m\u00b2)', panel: 'Panel power (W)', tilt: 'Panel tilt (\u00b0)', shading: 'Shading level',\n    btn: 'Calculate savings', resultsTitle: '\ud83d\udcca Results',\n    consResult: 'Monthly consumption', size: 'System size', panels: 'Number of panels',\n    areaReq: 'Required area', spacing: 'Row spacing', prod: 'Annual production',\n    save: 'Annual savings', pay: 'Payback', co2: 'CO\u2082 reduction',\n    contact: '\ud83d\udce7 Request a quote by email',\n    areaOk: '\u2705 Sufficient area: {req} m\u00b2 required of {avail} m\u00b2.',\n    areaKo: '\u26a0\ufe0f Insufficient area: {req} m\u00b2 needed but only {avail} m\u00b2.',\n    disclaimer: '<strong>\u26a0\ufe0f Important:<\/strong> These are preliminary estimates, not final. A detailed on-site study is required to validate the design and actual profitability.',\n    unitKw: ' kWp', unitPanel: ' panels', unitKwh: ' kWh', unitDh: ' DH', unitYear: ' years', unitKg: ' kg\/year', unitM2: ' m\u00b2', unitM: ' m',\n    chartLabel: 'Cumulative savings (DH)', chartYear: 'Year', chartCost: 'System cost',\n    emailSubject: 'Solar quote request \u2014 ALROMAR ENERGIE MAROC',\n    emailBody: 'Hello,%0D%0A%0D%0AName: {nom}%0D%0ACompany: {societe}%0D%0APhone: {telephone}%0D%0AEmail: {email}%0D%0ACity: {ville}%0D%0A%0D%0AConsumption: {cons} kWh%0D%0APrice: {price} DH%0D%0ASize: {size} kWp%0D%0APanels: {panels}%0D%0AArea: {area} m\u00b2%0D%0ASavings: {savings} DH%0D%0A%0D%0ARegards.'\n  }\n};\n\nlet currentLang = 'fr';\nlet chartInstance = null;\nlet leadData = null;\n\nfunction calculateSpacing(panelWatt, tiltDeg, sunAngle) {\n  const dim = PANEL_DIMENSIONS[panelWatt] || PANEL_DIMENSIONS[710];\n  const tiltRad = tiltDeg * Math.PI \/ 180;\n  const sunRad = sunAngle * Math.PI \/ 180;\n  const H = dim.width * Math.sin(tiltRad);\n  const D = H * Math.sin(tiltRad) \/ Math.tan(sunRad);\n  return { D: D, panelWidth: dim.width, panelLength: dim.length };\n}\n\nfunction showStep(n) {\n  document.getElementById('step-1').classList.toggle('hidden', n !== 1);\n  document.getElementById('step-2').classList.toggle('hidden', n !== 2);\n  for (let i = 1; i <= 2; i++) {\n    const dot = document.getElementById('dot-' + i);\n    dot.classList.toggle('active', i === n);\n    dot.classList.toggle('done', i < n);\n  }\n  window.scrollTo({ top: 0, behavior: 'smooth' });\n}\n\nfunction submitInfo() {\n  const t = translations[currentLang];\n  const errorEl = document.getElementById('gate-error');\n  const nom = document.getElementById('g-nom').value.trim();\n  const societe = document.getElementById('g-societe').value.trim();\n  const telephone = document.getElementById('g-tel').value.trim();\n  const email = document.getElementById('g-email').value.trim();\n  const ville = document.getElementById('g-ville').value.trim();\n  const consent = document.getElementById('g-consent').checked;\n\n  if (!nom || !telephone || !email || !ville) { errorEl.textContent = t.errRequired; return; }\n  if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) { errorEl.textContent = t.errEmail; return; }\n  if (!consent) { errorEl.textContent = t.errConsent; return; }\n\n  errorEl.textContent = '';\n  leadData = { nom, societe, telephone, email, ville };\n\n  \/\/ \u26a1 \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0627\u0644\u0641\u0648\u0631\u064a \u2014 \u0642\u0628\u0644 \u0627\u0644\u0625\u0631\u0633\u0627\u0644\n  showStep(2);\n\n  \/\/ \u26a1 \u0627\u0644\u0625\u0631\u0633\u0627\u0644 \u0641\u064a \u0627\u0644\u062e\u0644\u0641\u064a\u0629 \u2014 \u0645\u0627\u0643\u064a\u0648\u0642\u0641\u0634 \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644\n  const formData = new FormData();\n  formData.append('nom', nom);\n  formData.append('societe', societe);\n  formData.append('telephone', telephone);\n  formData.append('email', email);\n  formData.append('ville', ville);\n\n  fetch(GOOGLE_SHEET_URL, {\n    method: 'POST',\n    mode: 'no-cors',\n    body: formData\n  })\n  .then(function() { console.log('\u2705 Envoy\u00e9 en arri\u00e8re-plan'); })\n  .catch(function(err) { console.error('\u274c', err); });\n}\n\nfunction calculate() {\n  const sunHours = parseFloat(document.getElementById('city').value);\n  const bill = parseFloat(document.getElementById('bill').value) || 0;\n  const priceKwh = parseFloat(document.getElementById('priceKwh').value) || 1.20;\n  const area = parseFloat(document.getElementById('area').value) || 0;\n  const panelWatt = parseFloat(document.getElementById('panelWatt').value) || 710;\n  const tiltAngle = parseFloat(document.getElementById('tiltAngle').value) || 25;\n  const sh = SHADING[document.getElementById('shading').value];\n  const t = translations[currentLang];\n\n  const monthlyKwh = bill \/ priceKwh;\n  const dailyKwh = monthlyKwh \/ 30;\n  const systemSize = dailyKwh \/ (sunHours * SYSTEM_EFFICIENCY);\n  const panels = Math.ceil((systemSize * 1000) \/ panelWatt);\n\n  const spacing = calculateSpacing(panelWatt, tiltAngle, WINTER_ALTITUDE_ANGLE);\n  const spacedArea = panels * (spacing.panelWidth + spacing.D) * spacing.panelLength;\n  const requiredArea = spacedArea * sh.areaFactor;\n\n  const annualProduction = systemSize * sunHours * 365 * SYSTEM_EFFICIENCY * (1 - sh.prodLoss);\n  const annualSavings = annualProduction * priceKwh;\n  const systemCost = systemSize * COST_PER_KWC;\n  const payback = annualSavings > 0 ? (systemCost \/ annualSavings) : 0;\n  const co2Reduction = annualProduction * CO2_FACTOR;\n\n  document.getElementById('r-consumption').textContent = Math.round(monthlyKwh).toLocaleString() + t.unitKwh;\n  document.getElementById('r-size').textContent = systemSize.toFixed(1) + t.unitKw;\n  document.getElementById('r-panels').textContent = panels + t.unitPanel;\n  document.getElementById('r-area').textContent = requiredArea.toFixed(1) + t.unitM2;\n  document.getElementById('r-spacing').textContent = spacing.D.toFixed(2) + t.unitM;\n  document.getElementById('r-prod').textContent = Math.round(annualProduction).toLocaleString() + t.unitKwh;\n  document.getElementById('r-save').textContent = Math.round(annualSavings).toLocaleString() + t.unitDh;\n  document.getElementById('r-pay').textContent = payback.toFixed(1) + t.unitYear;\n  document.getElementById('r-co2').textContent = Math.round(co2Reduction).toLocaleString() + t.unitKg;\n\n  const warningEl = document.getElementById('area-warning');\n  if (area > 0) {\n    if (area >= requiredArea) {\n      warningEl.className = 'area-warning ok';\n      warningEl.textContent = t.areaOk.replace('{req}', requiredArea.toFixed(1)).replace('{avail}', area.toFixed(1));\n    } else {\n      warningEl.className = 'area-warning ko';\n      warningEl.textContent = t.areaKo.replace('{req}', requiredArea.toFixed(1)).replace('{avail}', area.toFixed(1));\n    }\n  }\n\n  const emailBody = t.emailBody\n    .replace('{nom}', leadData ? leadData.nom : '-')\n    .replace('{societe}', leadData && leadData.societe ? leadData.societe : '-')\n    .replace('{telephone}', leadData ? leadData.telephone : '-')\n    .replace('{email}', leadData ? leadData.email : '-')\n    .replace('{ville}', leadData ? leadData.ville : '-')\n    .replace('{cons}', Math.round(monthlyKwh))\n    .replace('{price}', priceKwh.toFixed(2))\n    .replace('{size}', systemSize.toFixed(1))\n    .replace('{panels}', panels)\n    .replace('{area}', requiredArea.toFixed(1))\n    .replace('{savings}', Math.round(annualSavings));\n  document.getElementById('contact-btn').href = `mailto:contact@alromar-energie.ma?subject=${encodeURIComponent(t.emailSubject)}&body=${emailBody}`;\n\n  renderChart(annualProduction, priceKwh, systemCost, t);\n  document.getElementById('results').style.display = 'block';\n  document.getElementById('results').scrollIntoView({ behavior: 'smooth' });\n}\n\nfunction renderChart(annualProd, price, systemCost, t) {\n  const years = [], cumulative = [];\n  let total = 0;\n  for (let y = 1; y <= 25; y++) {\n    const prod = annualProd * Math.pow(1 - DEGRADATION_RATE, y - 1);\n    total += prod * price;\n    years.push(y);\n    cumulative.push(Math.round(total));\n  }\n  const ctx = document.getElementById('savingsChart').getContext('2d');\n  if (chartInstance) chartInstance.destroy();\n  chartInstance = new Chart(ctx, {\n    type: 'line',\n    data: {\n      labels: years.map(y => t.chartYear + ' ' + y),\n      datasets: [\n        { label: t.chartLabel, data: cumulative, borderColor: '#4CAF50', backgroundColor: 'rgba(76, 175, 80, 0.12)', fill: true, tension: 0.3, pointRadius: 2, borderWidth: 2 },\n        { label: '\ud83d\udcb0 ' + t.chartCost, data: years.map(() => systemCost), borderColor: '#8BC34A', borderDash: [6, 4], pointRadius: 0, borderWidth: 2, fill: false }\n      ]\n    },\n    options: {\n      responsive: true,\n      plugins: { legend: { position: 'bottom' }, tooltip: { callbacks: { label: c => c.dataset.label + ': ' + c.parsed.y.toLocaleString() + ' DH' } } },\n      scales: { y: { beginAtZero: true, ticks: { callback: v => v.toLocaleString() + ' DH' } } }\n    }\n  });\n}\n\nfunction setLang(lang) {\n  currentLang = lang;\n  const t = translations[lang];\n  const isAr = lang === 'ar';\n  document.documentElement.lang = lang;\n  document.documentElement.dir = isAr ? 'rtl' : 'ltr';\n\n  document.getElementById('s1-title').textContent = t.s1Title;\n  document.getElementById('s1-subtitle').textContent = t.s1Subtitle;\n  document.getElementById('lbl-g-nom').textContent = t.gNom;\n  document.getElementById('lbl-g-societe').textContent = t.gSociete;\n  document.getElementById('lbl-g-tel').textContent = t.gTel;\n  document.getElementById('lbl-g-email').textContent = t.gEmail;\n  document.getElementById('lbl-g-ville').textContent = t.gVille;\n  document.getElementById('g-consent-text').textContent = t.gConsent;\n  document.getElementById('gate-btn-text').textContent = t.gBtn;\n  document.getElementById('title').innerHTML = t.title;\n  document.getElementById('lbl-city').textContent = t.city;\n  document.getElementById('lbl-bill').textContent = t.bill;\n  document.getElementById('hint-bill').textContent = t.hintBill;\n  document.getElementById('lbl-price').textContent = t.price;\n  document.getElementById('hint-price').textContent = t.hintPrice;\n  document.getElementById('lbl-area').textContent = t.area;\n  document.getElementById('lbl-panel').textContent = t.panel;\n  document.getElementById('lbl-tilt').textContent = t.tilt;\n  document.getElementById('lbl-shading').textContent = t.shading;\n  document.getElementById('btn-calc').textContent = t.btn;\n  document.getElementById('results-title').textContent = t.resultsTitle;\n  document.getElementById('r-consumption-label').textContent = t.consResult;\n  document.getElementById('r-size-label').textContent = t.size;\n  document.getElementById('r-panels-label').textContent = t.panels;\n  document.getElementById('r-area-label').textContent = t.areaReq;\n  document.getElementById('r-spacing-label').textContent = t.spacing;\n  document.getElementById('r-prod-label').textContent = t.prod;\n  document.getElementById('r-save-label').textContent = t.save;\n  document.getElementById('r-pay-label').textContent = t.pay;\n  document.getElementById('r-co2-label').textContent = t.co2;\n  document.getElementById('contact-text').textContent = t.contact;\n  document.getElementById('disclaimer').innerHTML = t.disclaimer;\n\n  document.getElementById('btn-fr').classList.toggle('active', lang === 'fr');\n  document.getElementById('btn-ar').classList.toggle('active', isAr);\n  document.getElementById('btn-en').classList.toggle('active', lang === 'en');\n}\n\ndocument.addEventListener('DOMContentLoaded', function() { setLang('fr'); });\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Fran\u00e7ais \u0627\u0644\u0639\u0631\u0628\u064a\u0629 English 1 2 Vos informations Veuillez remplir vos informations pour lancer la simulation Nom et Pr\u00e9nom * Soci\u00e9t\u00e9 (optionnel) T\u00e9l\u00e9phone * Email * Ville * J&rsquo;accepte que mes donn\u00e9es soient utilis\u00e9es par ALROMAR ENERGIE MAROC pour \u00eatre contact\u00e9 au sujet de mon projet solaire. Lancer ma simulation \u2192 Calculateur Solaire By ALROMAR ENERGIE [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3159","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/alromar-energie.ma\/h26\/wp-json\/wp\/v2\/pages\/3159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alromar-energie.ma\/h26\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alromar-energie.ma\/h26\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alromar-energie.ma\/h26\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alromar-energie.ma\/h26\/wp-json\/wp\/v2\/comments?post=3159"}],"version-history":[{"count":20,"href":"https:\/\/alromar-energie.ma\/h26\/wp-json\/wp\/v2\/pages\/3159\/revisions"}],"predecessor-version":[{"id":3228,"href":"https:\/\/alromar-energie.ma\/h26\/wp-json\/wp\/v2\/pages\/3159\/revisions\/3228"}],"wp:attachment":[{"href":"https:\/\/alromar-energie.ma\/h26\/wp-json\/wp\/v2\/media?parent=3159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}