{"id":2125,"date":"2026-05-05T13:26:02","date_gmt":"2026-05-05T10:26:02","guid":{"rendered":"https:\/\/www.alpsunenergy.com\/?page_id=2125"},"modified":"2026-05-05T17:55:22","modified_gmt":"2026-05-05T14:55:22","slug":"ges-analiz-araci","status":"publish","type":"page","link":"https:\/\/www.alpsunenergy.com\/en\/ges-analiz-araci\/","title":{"rendered":"GES Analiz Arac\u0131"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2125\" class=\"elementor elementor-2125\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-19b8c8c e-flex e-con-boxed e-con e-parent\" data-id=\"19b8c8c\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-372848a e-con-full e-flex e-con e-child\" data-id=\"372848a\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0ccf104 elementor-widget elementor-widget-heading\" data-id=\"0ccf104\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">GES Analiz Arac\u0131<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\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-31586c0 e-flex e-con-boxed e-con e-parent\" data-id=\"31586c0\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fa2f527 elementor-widget elementor-widget-heading\" data-id=\"fa2f527\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">G\u00fcne\u015f Enerjisi Potansiyelinizi \u00d6\u011frenin<\/h2>\t\t\t\t<\/div>\n\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-271e6c6 e-flex e-con-boxed e-con e-parent\" data-id=\"271e6c6\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2e06b71 elementor-widget elementor-widget-html\" data-id=\"2e06b71\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"ges-app\">\n  <style>\n    #ges-app *{box-sizing:border-box}\n    #ges-app{max-width:980px;margin:0 auto;font-family:Inter,Arial,sans-serif;color:#172033}\n    .ges-card{background:#fff;border-radius:24px;box-shadow:0 18px 50px rgba(10,44,99,.14);overflow:hidden;border:1px solid #e7edf5}\n    .ges-header{background:linear-gradient(135deg,#0A2C63,#1157a5);color:#fff;padding:34px}\n    .ges-header h2{margin:0 0 10px;font-size:32px;line-height:1.15;color:#fff}\n    .ges-header p{margin:0;color:#dbeafe;font-size:16px;max-width:720px}\n    .ges-body{padding:32px;background:#f8fafc}\n    .ges-progress{height:8px;background:#dbe6f3;border-radius:99px;overflow:hidden;margin-bottom:26px}\n    .ges-progress span{display:block;height:100%;width:20%;background:#20B26B;border-radius:99px;transition:.3s}\n    .ges-step{display:none;animation:fade .25s ease}\n    .ges-step.active{display:block}\n    @keyframes fade{from{opacity:.3;transform:translateY(8px)}to{opacity:1;transform:none}}\n    .ges-step h3{font-size:24px;margin:0 0 8px;color:#0A2C63}\n    .ges-step-desc{margin:0 0 24px;color:#667085}\n    .ges-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}\n    .ges-field{margin-bottom:18px}\n    .ges-field label{display:block;font-weight:700;margin-bottom:8px;color:#25324b}\n    .ges-field input,.ges-field select{width:100%;padding:15px 16px;border:1px solid #d8e0ea;border-radius:14px;background:#fff;font-size:15px;outline:none}\n    .ges-field input:focus,.ges-field select:focus{border-color:#0A2C63;box-shadow:0 0 0 3px rgba(10,44,99,.12)}\n    .ges-actions{display:flex;gap:12px;margin-top:22px}\n    .ges-btn{border:none;border-radius:14px;padding:15px 22px;font-weight:800;font-size:15px;cursor:pointer;text-decoration:none;text-align:center;display:inline-block}\n    .ges-btn-primary{background:#0A2C63;color:#fff;flex:1}\n    .ges-btn-green{background:#20B26B;color:#fff;flex:1}\n    .ges-btn-secondary{background:#e7edf5;color:#0A2C63}\n    .ges-btn-whatsapp{background:#25D366;color:#fff;flex:1}\n    .ges-note{background:#fff7e6;border:1px solid #ffd98a;color:#7a5200;border-radius:14px;padding:14px;margin-top:16px;font-size:14px}\n    .ges-info{background:#eef6ff;border:1px solid #bfdbfe;color:#0A2C63;border-radius:14px;padding:14px;margin-top:16px;font-size:14px}\n    .ges-results{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:22px}\n    .ges-result-card{background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:20px}\n    .ges-result-card small{display:block;color:#667085;margin-bottom:8px}\n    .ges-result-card strong{display:block;font-size:24px;color:#0A2C63}\n    .ges-badge{display:inline-block;padding:8px 12px;border-radius:999px;background:#dcfce7;color:#166534;font-weight:800;margin-right:8px;margin-bottom:8px}\n    .ges-summary{background:#fff;border-radius:18px;padding:22px;margin-top:18px;border:1px solid #e2e8f0;line-height:1.7}\n    .ges-cta{background:linear-gradient(135deg,#0A2C63,#1157a5);color:#fff;border-radius:18px;padding:22px;margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}\n    .ges-cta strong{font-size:20px;display:block;margin-bottom:6px;color:#fff}\n    .ges-cta p{margin:0;color:#dbeafe}\n    .ges-disclaimer{font-size:13px;color:#667085;margin-top:16px;line-height:1.6}\n    @media(max-width:768px){\n      .ges-header{padding:26px}\n      .ges-header h2{font-size:25px}\n      .ges-body{padding:22px}\n      .ges-grid,.ges-results{grid-template-columns:1fr}\n      .ges-actions{flex-direction:column}\n      .ges-cta{display:block}\n      .ges-cta .ges-actions{margin-top:16px}\n    }\n    .ges-roof-box{\n  background:#ffffff;\n  border:1px solid #e2e8f0;\n  border-radius:18px;\n  padding:22px;\n  margin-top:18px;\n}\n.ges-roof-layout{\n  display:grid;\n  grid-template-columns:1.1fr .9fr;\n  gap:20px;\n  align-items:center;\n}\n.ges-roof{\n  position:relative;\n  height:250px;\n  background:linear-gradient(135deg,#d9e4f2,#f8fafc);\n  border-radius:22px;\n  overflow:hidden;\n  border:1px solid #dbe6f3;\n}\n.ges-roof:before{\n  content:\"\";\n  position:absolute;\n  left:50%;\n  top:35px;\n  width:72%;\n  height:150px;\n  background:linear-gradient(135deg,#475569,#1e293b);\n  transform:translateX(-50%) skewY(-8deg);\n  border-radius:12px;\n  box-shadow:0 18px 35px rgba(15,23,42,.22);\n}\n.ges-panel-grid{\n  position:absolute;\n  left:50%;\n  top:62px;\n  width:60%;\n  transform:translateX(-50%) skewY(-8deg);\n  display:grid;\n  grid-template-columns:repeat(5,1fr);\n  gap:6px;\n}\n.ges-panel{\n  height:28px;\n  background:linear-gradient(135deg,#0f3b73,#1d75c2);\n  border:1px solid rgba(255,255,255,.55);\n  border-radius:4px;\n  opacity:0;\n  transform:translateY(12px) scale(.92);\n  animation:panelIn .45s ease forwards;\n}\n@keyframes panelIn{\n  to{opacity:1;transform:translateY(0) scale(1);}\n}\n.ges-roof-stats{\n  display:grid;\n  grid-template-columns:1fr 1fr;\n  gap:12px;\n}\n.ges-mini-card{\n  background:#f8fafc;\n  border:1px solid #e2e8f0;\n  border-radius:14px;\n  padding:14px;\n}\n.ges-mini-card small{\n  display:block;\n  color:#667085;\n  margin-bottom:5px;\n}\n.ges-mini-card strong{\n  color:#0A2C63;\n  font-size:20px;\n}\n@media(max-width:768px){\n  .ges-roof-layout{grid-template-columns:1fr}\n  .ges-panel-grid{grid-template-columns:repeat(4,1fr)}\n}\n  <\/style>\n\n  <div class=\"ges-card\">\n    <div class=\"ges-header\">\n      <h2>Bursa GES \u00d6n Analiz Arac\u0131<\/h2>\n      <p>Adres, t\u00fcketim, tesis tipi ve \u00e7at\u0131 bilgilerinize g\u00f6re tahmini sistem g\u00fcc\u00fc, y\u0131ll\u0131k \u00fcretim ve uygunluk \u00f6n de\u011ferlendirmesini hesaplay\u0131n.<\/p>\n    <\/div>\n\n    <div class=\"ges-body\">\n      <div class=\"ges-progress\"><span id=\"gesProgress\"><\/span><\/div>\n\n      <div class=\"ges-step active\" data-step=\"1\">\n        <h3>1. Konum Bilgisi<\/h3>\n        <p class=\"ges-step-desc\">\u0130l\u00e7e ve mahalle bilgisiyle b\u00f6lgesel g\u00fcne\u015flenme verisini hesaplamaya dahil ediyoruz.<\/p>\n\n        <div class=\"ges-grid\">\n          <div class=\"ges-field\">\n            <label>\u0130l\u00e7e<\/label>\n            <select id=\"ilce\" onchange=\"gesMahalleleriGuncelle()\">\n              <option value=\"1353\" data-ilce=\"Nil\u00fcfer\">Nil\u00fcfer<\/option>\n              <option value=\"1345\" data-ilce=\"Osmangazi\">Osmangazi<\/option>\n              <option value=\"1340\" data-ilce=\"Y\u0131ld\u0131r\u0131m\">Y\u0131ld\u0131r\u0131m<\/option>\n              <option value=\"1325\" data-ilce=\"Mudanya\">Mudanya<\/option>\n              <option value=\"1330\" data-ilce=\"Gemlik\">Gemlik<\/option>\n              <option value=\"1360\" data-ilce=\"Karacabey\">Karacabey<\/option>\n              <option value=\"1370\" data-ilce=\"\u0130neg\u00f6l\">\u0130neg\u00f6l<\/option>\n              <option value=\"1380\" data-ilce=\"Mustafakemalpa\u015fa\">Mustafakemalpa\u015fa<\/option>\n              <option value=\"1350\" data-ilce=\"Di\u011fer\">Di\u011fer Bursa \u0130l\u00e7esi<\/option>\n            <\/select>\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>Mahalle \/ B\u00f6lge<\/label>\n            <select id=\"mahalle\">\n              <option value=\"\">Mahalle se\u00e7in<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"ges-field\">\n          <label>A\u00e7\u0131k Adres<\/label>\n          <input id=\"adres\" type=\"text\" placeholder=\"Cadde, sokak, bina no gibi bilgileri yaz\u0131n\">\n        <\/div>\n\n        <div class=\"ges-actions\">\n          <button class=\"ges-btn ges-btn-primary\" onclick=\"gesNext()\">Devam Et<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"ges-step\" data-step=\"2\">\n        <h3>2. Elektrik T\u00fcketimi<\/h3>\n        <p class=\"ges-step-desc\">Fatura tutar\u0131na g\u00f6re y\u0131ll\u0131k t\u00fcketim ihtiyac\u0131n\u0131z\u0131 tahmin ediyoruz.<\/p>\n\n        <div class=\"ges-grid\">\n          <div class=\"ges-field\">\n            <label>Ayl\u0131k Elektrik Faturas\u0131<\/label>\n            <input id=\"fatura\" type=\"number\" placeholder=\"\u00d6rn: 3000\">\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>Tesis Tipi<\/label>\n            <select id=\"tesisTipi\" onchange=\"gesTesisTipiKontrol()\">\n              <option value=\"mesken\">Mesken \/ 25 kW Alt\u0131 Konut<\/option>\n              <option value=\"mesken\">Villa \/ M\u00fcstakil Konut<\/option>\n              <option value=\"ticari\">Ticari \u0130\u015fletme<\/option>\n              <option value=\"ticari\">Sanayi Tesisi<\/option>\n              <option value=\"ticari\">Tar\u0131msal Sulama<\/option>\n              <option value=\"ticari\">Arazi GES \/ Ticari Proje<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"ges-field\" id=\"profilWrap\" style=\"display:none;\">\n          <label>G\u00fcnd\u00fcz T\u00fcketim Yo\u011funlu\u011fu<\/label>\n          <select id=\"profil\">\n            <option value=\"0.40\">D\u00fc\u015f\u00fck - g\u00fcnd\u00fcz t\u00fcketimi s\u0131n\u0131rl\u0131<\/option>\n            <option value=\"0.60\">Orta - g\u00fcnd\u00fcz t\u00fcketimi var<\/option>\n            <option value=\"0.80\">Y\u00fcksek - g\u00fcnd\u00fcz yo\u011fun t\u00fcketim<\/option>\n            <option value=\"0.95\">\u00c7ok y\u00fcksek - \u00fcretim\/so\u011futma\/sulama a\u011f\u0131rl\u0131kl\u0131<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"ges-note\">\n          Hesaplamada elektrik birim fiyat\u0131 \u00f6n kabul olarak 3,89 TL\/kWh al\u0131nm\u0131\u015ft\u0131r. Ticari\/sanayi senaryosunda saatlik mahsupla\u015fma etkisi ayr\u0131ca de\u011ferlendirilir.\n        <\/div>\n\n        <div class=\"ges-actions\">\n          <button class=\"ges-btn ges-btn-secondary\" onclick=\"gesPrev()\">Geri<\/button>\n          <button class=\"ges-btn ges-btn-primary\" onclick=\"gesNext()\">Devam Et<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"ges-step\" data-step=\"3\">\n        <h3>3. \u00c7at\u0131 Bilgileri<\/h3>\n        <p class=\"ges-step-desc\">\u00c7at\u0131 y\u00f6n\u00fc, e\u011fim ve g\u00f6lgeleme \u00fcretim performans\u0131n\u0131 do\u011frudan etkiler.<\/p>\n\n        <div class=\"ges-grid\">\n          <div class=\"ges-field\">\n            <label>\u00c7at\u0131 Tipi<\/label>\n            <select id=\"cati\">\n              <option>M\u00fcstakil Ev \u00c7at\u0131s\u0131<\/option>\n              <option>Villa \u00c7at\u0131s\u0131<\/option>\n              <option>Ticari \u00c7at\u0131<\/option>\n              <option>D\u00fcz Teras \u00c7at\u0131<\/option>\n              <option>Arsa \/ Arazi<\/option>\n            <\/select>\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>\u00c7at\u0131 Y\u00f6n\u00fc<\/label>\n            <select id=\"yon\">\n              <option value=\"1\">G\u00fcney<\/option>\n              <option value=\"0.95\">G\u00fcneydo\u011fu<\/option>\n              <option value=\"0.95\">G\u00fcneybat\u0131<\/option>\n              <option value=\"0.85\">Do\u011fu<\/option>\n              <option value=\"0.85\">Bat\u0131<\/option>\n              <option value=\"0.70\">Kuzeydo\u011fu<\/option>\n              <option value=\"0.70\">Kuzeybat\u0131<\/option>\n              <option value=\"0.55\">Kuzey<\/option>\n              <option value=\"1\">Bilmiyorum<\/option>\n            <\/select>\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>\u00c7at\u0131 E\u011fimi<\/label>\n            <select id=\"egim\">\n              <option value=\"0.96\">D\u00fcz \u00e7at\u0131<\/option>\n              <option value=\"0.98\">10\u00b0 - 20\u00b0<\/option>\n              <option value=\"1\">20\u00b0 - 30\u00b0<\/option>\n              <option value=\"0.97\">30\u00b0 - 40\u00b0<\/option>\n              <option value=\"0.92\">40\u00b0 \u00fczeri<\/option>\n              <option value=\"1\">Bilmiyorum<\/option>\n            <\/select>\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>G\u00f6lgeleme Durumu<\/label>\n            <select id=\"golge\">\n              <option value=\"1\">G\u00f6lgeleme yok \/ az<\/option>\n              <option value=\"0.92\">Orta seviye g\u00f6lge<\/option>\n              <option value=\"0.80\">Yo\u011fun g\u00f6lge olabilir<\/option>\n              <option value=\"0.95\">Bilmiyorum<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"ges-actions\">\n          <button class=\"ges-btn ges-btn-secondary\" onclick=\"gesPrev()\">Geri<\/button>\n          <button class=\"ges-btn ges-btn-primary\" onclick=\"gesNext()\">Devam Et<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"ges-step\" data-step=\"4\">\n        <h3>4. Analiz Raporu \u0130\u00e7in Bilgileriniz<\/h3>\n        <p class=\"ges-step-desc\">\u00d6n analiz sonucunuzu g\u00f6r\u00fcnt\u00fclemek ve detayl\u0131 de\u011ferlendirme almak i\u00e7in bilgilerinizi girin.<\/p>\n\n        <div class=\"ges-grid\">\n          <div class=\"ges-field\">\n            <label>Ad Soyad<\/label>\n            <input id=\"adsoyad\" type=\"text\" placeholder=\"Ad\u0131n\u0131z Soyad\u0131n\u0131z\">\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>Telefon<\/label>\n            <input id=\"telefon\" type=\"tel\" placeholder=\"05xx xxx xx xx\">\n          <\/div>\n        <\/div>\n\n        <div class=\"ges-field\">\n          <label>E-posta<\/label>\n          <input id=\"email\" type=\"email\" placeholder=\"ornek@mail.com\">\n        <\/div>\n\n        <div class=\"ges-actions\">\n          <button class=\"ges-btn ges-btn-secondary\" onclick=\"gesPrev()\">Geri<\/button>\n          <button class=\"ges-btn ges-btn-green\" onclick=\"gesCalculate()\">Analiz Sonucumu G\u00f6ster<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"ges-step\" data-step=\"5\">\n        <h3>\u00d6n Analiz Sonucunuz<\/h3>\n        <p class=\"ges-step-desc\">Bu sonu\u00e7, girilen bilgilerle olu\u015fturulmu\u015f tahmini bir \u00f6n de\u011ferlendirmedir.<\/p>\n        <div id=\"gesResultArea\"><\/div>\n        <div class=\"ges-actions\">\n          <button class=\"ges-btn ges-btn-secondary\" onclick=\"gesRestart()\">Yeni Analiz Yap<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    window.gesStep = 1;\n\n    const gesMahalleler = {\n      \"Nil\u00fcfer\": [\"19 May\u0131s\",\"23 Nisan\",\"29 Ekim\",\"30 A\u011fustos Zafer\",\"Ahmet Yesevi\",\"Ak\u00e7alar\",\"Alaaddinbey\",\"Alt\u0131n\u015fehir\",\"Ataevler\",\"Balat\",\"Bar\u0131\u015f\",\"Ba\u015fk\u00f6y\",\"Be\u015fevler\",\"Bursa OSB\",\"Cumhuriyet\",\"\u00c7al\u0131\",\"Demirci\",\"Ertu\u011frul\",\"Fethiye\",\"G\u00f6r\u00fckle\",\"Hasana\u011fa\",\"\u0130hsaniye\",\"Karaman\",\"Kayapa\",\"Konak\",\"K\u00fclt\u00fcr\",\"Minareli\u00e7avu\u015f\",\"Odunluk\",\"\u00d6zl\u00fcce\",\"\u00dc\u00e7evler\",\"Yol\u00e7at\u0131\"],\n      \"Osmangazi\": [\"Alt\u0131parmak\",\"Ba\u011flarba\u015f\u0131\",\"\u00c7ekirge\",\"Demirta\u015f\",\"Dikkald\u0131r\u0131m\",\"Doburca\",\"Do\u011fanbey\",\"Emek\",\"Hamitler\",\"H\u00fcdavendigar\",\"K\u00fck\u00fcrtl\u00fc\",\"Maksem\",\"Muradiye\",\"Nal\u0131nc\u0131lar\",\"Panay\u0131r\",\"Reyhan\",\"Santral Garaj\",\"So\u011fanl\u0131\",\"Yunuseli\"],\n      \"Y\u0131ld\u0131r\u0131m\": [\"Arabayata\u011f\u0131\",\"Ba\u011flaralt\u0131\",\"Cumal\u0131k\u0131z\u0131k\",\"De\u011firmenlik\u0131z\u0131k\",\"Davutkad\u0131\",\"Dua\u00e7\u0131nar\u0131\",\"E\u011fitim\",\"Erikli\",\"Esenevler\",\"Hacivat\",\"Kapl\u0131kaya\",\"Mimar Sinan\",\"Millet\",\"Mollaarap\",\"Ortaba\u011flar\",\"Samanl\u0131\",\"Setba\u015f\u0131\",\"Teferr\u00fc\u00e7\",\"Vak\u0131f\",\"Ye\u015fil\"],\n      \"Mudanya\": [\"Alt\u0131nta\u015f\",\"Bademli\",\"Burgaz\",\"\u00c7a\u011fr\u0131\u015fan\",\"G\u00fczelyal\u0131 E\u011fitim\",\"G\u00fczelyal\u0131 Siteler\",\"Halitpa\u015fa\",\"Hasanbey\",\"I\u015f\u0131kl\u0131\",\"M\u00fcrsel\",\"\u00d6merbey\",\"Tirilye\",\"Yal\u0131\u00e7iftlik\",\"Yeni\"],\n      \"Gemlik\": [\"Ata\",\"Bal\u0131kpazar\u0131\",\"Cumhuriyet\",\"Demirsuba\u015f\u0131\",\"Eng\u00fcr\u00fcc\u00fck\",\"E\u015fref Din\u00e7er\",\"Feyziye\",\"Hamidiye\",\"Hisar\",\"Kumla\",\"K\u00fc\u00e7\u00fckkumla\",\"Narl\u0131\",\"Orhaniye\",\"Osmaniye\",\"Umurbey\"],\n      \"Karacabey\": [\"Canbal\u0131\",\"Emirsultan\",\"Hamidiye\",\"H\u00fcdavendigar\",\"Mecidiye\",\"Nasrettin\",\"Rungu\u00e7pa\u015fa\",\"Saadet\",\"S\u0131rabademler\",\"Tabaklar\",\"Tav\u015fanl\u0131\",\"Yenice\"],\n      \"\u0130neg\u00f6l\": [\"Akhisar\",\"Alanyurt\",\"Burhaniye\",\"Cerrah\",\"Cuma\",\"Ertu\u011frulgazi\",\"Hamidiye\",\"Kemalpa\u015fa\",\"Mesudiye\",\"Mahmudiye\",\"Orhaniye\",\"Osmaniye\",\"Sinanbey\",\"S\u00fcleymaniye\",\"Turgutalp\",\"Yenice\"],\n      \"Mustafakemalpa\u015fa\": [\"Atariye\",\"Bar\u0131\u015f\",\"Cumhuriyet\",\"Hamidiye\",\"Lala\u015fahin\",\"Orta\",\"\u015eevketiye\",\"Tatkavakl\u0131\",\"V\u0131raca\",\"Yal\u0131nta\u015f\",\"Yunusemre\"],\n      \"Di\u011fer\": [\"Di\u011fer \/ Listede yok\"]\n    };\n\n    function gesQ(id){ return document.getElementById(id); }\n\n    function gesIlceAdiAl(){\n      const ilceSelect = gesQ(\"ilce\");\n      if(!ilceSelect) return \"Di\u011fer\";\n      const selected = ilceSelect.options[ilceSelect.selectedIndex];\n      return (selected.getAttribute(\"data-ilce\") || selected.textContent || \"Di\u011fer\").trim();\n    }\n\n    window.gesMahalleleriGuncelle = function(){\n      const ilceAdi = gesIlceAdiAl();\n      const mahalleSelect = gesQ(\"mahalle\");\n      if(!mahalleSelect) return;\n      const liste = gesMahalleler[ilceAdi] || gesMahalleler[\"Di\u011fer\"];\n      mahalleSelect.innerHTML = '<option value=\"\">Mahalle se\u00e7in<\/option>';\n      liste.forEach(function(mahalle){\n        const opt = document.createElement(\"option\");\n        opt.value = mahalle;\n        opt.textContent = mahalle;\n        mahalleSelect.appendChild(opt);\n      });\n    };\n\n    window.gesTesisTipiKontrol = function(){\n      const tesisTipi = gesQ(\"tesisTipi\") ? gesQ(\"tesisTipi\").value : \"mesken\";\n      const profilWrap = gesQ(\"profilWrap\");\n      if(profilWrap) profilWrap.style.display = tesisTipi === \"ticari\" ? \"block\" : \"none\";\n    };\n\n    window.gesUpdate = function(){\n      document.querySelectorAll(\"#ges-app .ges-step\").forEach(function(s){ s.classList.remove(\"active\"); });\n      const active = document.querySelector('#ges-app .ges-step[data-step=\"'+window.gesStep+'\"]');\n      if(active) active.classList.add(\"active\");\n      if(gesQ(\"gesProgress\")) gesQ(\"gesProgress\").style.width = (window.gesStep * 20) + \"%\";\n    };\n\n    window.gesNext = function(){\n      if(window.gesStep === 1){\n        if(!gesQ(\"mahalle\").value){ alert(\"L\u00fctfen mahalle se\u00e7in.\"); return; }\n        if(!gesQ(\"adres\").value.trim()){ alert(\"L\u00fctfen adres bilginizi girin.\"); return; }\n      }\n      if(window.gesStep === 2){\n        const fatura = parseFloat(gesQ(\"fatura\").value);\n        if(!fatura || fatura <= 0){ alert(\"L\u00fctfen ge\u00e7erli bir fatura tutar\u0131 girin.\"); return; }\n      }\n      if(window.gesStep < 5){ window.gesStep++; window.gesUpdate(); }\n    };\n\n    window.gesPrev = function(){\n      if(window.gesStep > 1){ window.gesStep--; window.gesUpdate(); }\n    };\n\n    window.gesRestart = function(){\n      window.gesStep = 1;\n      window.gesUpdate();\n      if(gesQ(\"gesResultArea\")) gesQ(\"gesResultArea\").innerHTML = \"\";\n    };\n\n    function gesLeadSkoruHesapla(data){\n      let puan = 0;\n      if(data.fatura >= 7500) puan += 25;\n      else if(data.fatura >= 4000) puan += 20;\n      else if(data.fatura >= 2000) puan += 12;\n      else puan += 5;\n      if(data.tesisTipi === \"ticari\") puan += 20; else puan += 10;\n      if(data.yonKatsayi >= 0.95) puan += 20;\n      else if(data.yonKatsayi >= 0.85) puan += 12;\n      else if(data.yonKatsayi >= 0.70) puan += 5;\n      if(data.golgeKatsayi >= 0.95) puan += 20;\n      else if(data.golgeKatsayi >= 0.90) puan += 12;\n      else if(data.golgeKatsayi >= 0.80) puan += 5;\n      if(data.tel) puan += 10;\n      if(data.email) puan += 5;\n      if(puan >= 75) return {harf:\"A\", puan:puan, metin:\"Hemen aranmal\u0131\", renk:\"background:#dcfce7;color:#166534;\"};\n      if(puan >= 55) return {harf:\"B\", puan:puan, metin:\"Uygun, ke\u015fif planlanabilir\", renk:\"background:#fef3c7;color:#92400e;\"};\n      return {harf:\"C\", puan:puan, metin:\"D\u00fc\u015f\u00fck \u00f6ncelik \/ detayl\u0131 inceleme gerekli\", renk:\"background:#fee2e2;color:#991b1b;\"};\n    }\n\n    window.gesCalculate = function(){\n      const ad = gesQ(\"adsoyad\").value.trim();\n      const tel = gesQ(\"telefon\").value.trim();\n      const email = gesQ(\"email\").value.trim();\n      if(!ad || !tel){ alert(\"L\u00fctfen ad soyad ve telefon bilgilerinizi girin.\"); return; }\n\n      const fatura = parseFloat(gesQ(\"fatura\").value);\n      const birimFiyat = 3.89;\n      const ticariSebekeSatisFiyati = 1.50;\n      const tesisTipiSelect = gesQ(\"tesisTipi\");\n      const tesisTipi = tesisTipiSelect.value;\n      const tesisTipiAdi = tesisTipiSelect.options[tesisTipiSelect.selectedIndex].text;\n      const ilceSelect = gesQ(\"ilce\");\n      const ilceAdi = ilceSelect.options[ilceSelect.selectedIndex].text;\n      const mahalleAdi = gesQ(\"mahalle\").value;\n      const adres = gesQ(\"adres\").value.trim();\n      const baseKatsayi = parseFloat(ilceSelect.value);\n      const yonSelect = gesQ(\"yon\");\n      const yonAdi = yonSelect.options[yonSelect.selectedIndex].text;\n      const yonKatsayi = parseFloat(yonSelect.value);\n      const egimSelect = gesQ(\"egim\");\n      const egimAdi = egimSelect.options[egimSelect.selectedIndex].text;\n      const egimKatsayi = parseFloat(egimSelect.value);\n      const golgeSelect = gesQ(\"golge\");\n      const golgeAdi = golgeSelect.options[golgeSelect.selectedIndex].text;\n      const golgeKatsayi = parseFloat(golgeSelect.value);\n      const yillikTuketim = (fatura \/ birimFiyat) * 12;\n      const netKatsayi = baseKatsayi * yonKatsayi * egimKatsayi * golgeKatsayi;\n      const onerilenKwp = yillikTuketim \/ netKatsayi;\n      const minKwp = onerilenKwp * 0.90;\n      const maxKwp = onerilenKwp * 1.10;\n      const uretimMin = minKwp * netKatsayi;\n      const uretimMax = maxKwp * netKatsayi;\n      const panelGucuKwp = 0.60;\nconst panelEn = 1.134;\nconst panelBoy = 2.278;\nconst panelAlan = panelEn * panelBoy;\nconst panelAgirlik = 32;\n\nconst ortalamaKwp = (minKwp + maxKwp) \/ 2;\nconst panelSayisi = Math.ceil(ortalamaKwp \/ panelGucuKwp);\nconst toplamPanelAlani = panelSayisi * panelAlan;\nconst toplamPanelAgirligi = panelSayisi * panelAgirlik;\n\nlet panelKutulari = \"\";\nfor(let i = 0; i < Math.min(panelSayisi, 30); i++){\n  panelKutulari += `<div class=\"ges-panel\" style=\"animation-delay:${i * 0.06}s\"><\/div>`;\n}\n\nconst panelAnimasyonHtml = `\n  <div class=\"ges-roof-box\">\n    <h3 style=\"margin:0 0 8px;color:#0A2C63;\">Tahmini Panel Yerle\u015fimi<\/h3>\n    <p style=\"margin:0 0 18px;color:#667085;\">\n      Hesaplama 600 W glass-to-glass, 144 h\u00fccreli panel \u00f6l\u00e7\u00fcleri dikkate al\u0131narak haz\u0131rlanm\u0131\u015ft\u0131r.\n    <\/p>\n\n    <div class=\"ges-roof-layout\">\n      <div class=\"ges-roof\">\n        <div class=\"ges-panel-grid\">\n          ${panelKutulari}\n        <\/div>\n      <\/div>\n\n      <div class=\"ges-roof-stats\">\n        <div class=\"ges-mini-card\">\n          <small>Tahmini Panel Say\u0131s\u0131<\/small>\n          <strong>${panelSayisi} adet<\/strong>\n        <\/div>\n        <div class=\"ges-mini-card\">\n          <small>Panel G\u00fcc\u00fc<\/small>\n          <strong>600 W<\/strong>\n        <\/div>\n        <div class=\"ges-mini-card\">\n          <small>Yakla\u015f\u0131k Panel Alan\u0131<\/small>\n          <strong>${toplamPanelAlani.toFixed(1)} m\u00b2<\/strong>\n        <\/div>\n        <div class=\"ges-mini-card\">\n          <small>Toplam Panel A\u011f\u0131rl\u0131\u011f\u0131<\/small>\n          <strong>${toplamPanelAgirligi.toFixed(0)} kg<\/strong>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"ges-info\">\n      <strong>Panel Bilgisi:<\/strong> 2278 x 1134 x 30 mm \u00f6l\u00e7\u00fclerinde, yakla\u015f\u0131k 32 kg a\u011f\u0131rl\u0131\u011f\u0131nda, 600 W glass-to-glass 144 h\u00fccreli panel \u00f6n kabul olarak kullan\u0131lm\u0131\u015ft\u0131r.\n    <\/div>\n  <\/div>\n`;\n      let yillikTasarrufMin = 0;\n      let yillikTasarrufMax = 0;\n      let mahsuplasmaHtml = \"\";\n      let sonucAciklama = \"\";\n\n      if(tesisTipi === \"mesken\"){\n        yillikTasarrufMin = uretimMin * birimFiyat;\n        yillikTasarrufMax = uretimMax * birimFiyat;\n        mahsuplasmaHtml = `<div class=\"ges-info\"><strong>Konut Tipi \u00d6n De\u011ferlendirme:<\/strong> Bu rapor, konut \u00f6l\u00e7e\u011findeki t\u00fcketim yap\u0131s\u0131 ve girilen \u00e7at\u0131 bilgileri dikkate al\u0131narak haz\u0131rlanm\u0131\u015ft\u0131r. Sonu\u00e7lar, sistem g\u00fcc\u00fc ve y\u0131ll\u0131k \u00fcretim potansiyeli i\u00e7in ilk karar deste\u011fi sa\u011flar.<\/div>`;\n        sonucAciklama = `Bu de\u011ferlendirme konut tipi kullan\u0131m profiline g\u00f6re haz\u0131rlanm\u0131\u015ft\u0131r. Nihai sistem tasar\u0131m\u0131, \u00e7at\u0131 \u00f6l\u00e7\u00fcs\u00fc, ba\u011flant\u0131 ko\u015fullar\u0131 ve ke\u015fif sonu\u00e7lar\u0131na g\u00f6re netle\u015ftirilmelidir.`;\n      } else {\n        const profilSelect = gesQ(\"profil\");\n        const profil = parseFloat(profilSelect.value);\n        const profilAdi = profilSelect.options[profilSelect.selectedIndex].text;\n        const ozTuketimMin = uretimMin * profil;\n        const ozTuketimMax = uretimMax * profil;\n        const sebekeMin = uretimMin - ozTuketimMin;\n        const sebekeMax = uretimMax - ozTuketimMax;\n        yillikTasarrufMin = (ozTuketimMin * birimFiyat) + (sebekeMin * ticariSebekeSatisFiyati);\n        yillikTasarrufMax = (ozTuketimMax * birimFiyat) + (sebekeMax * ticariSebekeSatisFiyati);\n        mahsuplasmaHtml = `\n          <div class=\"ges-results\">\n            <div class=\"ges-result-card\"><small>\u00d6z T\u00fcketim Tahmini<\/small><strong>${ozTuketimMin.toFixed(0)} - ${ozTuketimMax.toFixed(0)} kWh<\/strong><\/div>\n            <div class=\"ges-result-card\"><small>\u015eebekeye Verilen Enerji<\/small><strong>${sebekeMin.toFixed(0)} - ${sebekeMax.toFixed(0)} kWh<\/strong><\/div>\n            <div class=\"ges-result-card\"><small>G\u00fcnd\u00fcz T\u00fcketim Profili<\/small><strong>%${(profil * 100).toFixed(0)}<\/strong><\/div>\n          <\/div>\n          <div class=\"ges-info\"><strong>Ticari\/Sanayi \u00d6n De\u011ferlendirme:<\/strong> Bu rapor, i\u015fletmenin g\u00fcnd\u00fcz t\u00fcketim yo\u011funlu\u011fu ve \u00fcretim-t\u00fcketim e\u015fle\u015fmesi dikkate al\u0131narak haz\u0131rlanm\u0131\u015ft\u0131r. G\u00fcnd\u00fcz t\u00fcketim yo\u011funlu\u011fu <strong>${profilAdi}<\/strong> olarak al\u0131nm\u0131\u015ft\u0131r.<\/div>`;\n        sonucAciklama = `Bu de\u011ferlendirme ticari\/sanayi\/arazi tipi kullan\u0131m profiline g\u00f6re haz\u0131rlanm\u0131\u015ft\u0131r. \u00dcretimin i\u015fletme t\u00fcketimiyle ayn\u0131 zaman diliminde de\u011ferlendirilmesi, yat\u0131r\u0131m geri d\u00f6n\u00fc\u015f performans\u0131n\u0131 do\u011frudan etkileyen ana unsurlardan biridir.`;\n      }\n\n      let uygunluk = \"Y\u00fcksek\";\n      let badgeColor = \"background:#dcfce7;color:#166534;\";\n      if(yonKatsayi < 0.75 || golgeKatsayi < 0.85){ uygunluk = \"Detayl\u0131 ke\u015fif gerekli\"; badgeColor = \"background:#fee2e2;color:#991b1b;\"; }\n      else if(yonKatsayi < 0.90 || golgeKatsayi < 0.95){ uygunluk = \"Orta\"; badgeColor = \"background:#fef3c7;color:#92400e;\"; }\n\n      const leadSkor = gesLeadSkoruHesapla({fatura, tesisTipi, yonKatsayi, golgeKatsayi, tel, email});\n      const whatsappText = `Merhaba, Alpsun GES \u00f6n analiz arac\u0131ndan geldim.%0A%0AAd Soyad: ${encodeURIComponent(ad)}%0ATelefon: ${encodeURIComponent(tel)}%0A\u0130l\u00e7e\/Mahalle: ${encodeURIComponent(ilceAdi + \" \/ \" + mahalleAdi)}%0AAdres: ${encodeURIComponent(adres)}%0ATesis Tipi: ${encodeURIComponent(tesisTipiAdi)}%0A\u00d6nerilen Sistem: ${encodeURIComponent(minKwp.toFixed(1) + \" - \" + maxKwp.toFixed(1) + \" kWp\")}%0AY\u0131ll\u0131k \u00dcretim: ${encodeURIComponent(uretimMin.toFixed(0) + \" - \" + uretimMax.toFixed(0) + \" kWh\")}%0ATahmini Y\u0131ll\u0131k Fayda: ${encodeURIComponent(yillikTasarrufMin.toFixed(0) + \" - \" + yillikTasarrufMax.toFixed(0) + \" TL\")}%0ALead Skoru: ${encodeURIComponent(leadSkor.harf + \" - \" + leadSkor.metin)}`;\n      const whatsappUrl = `https:\/\/wa.me\/905448793979?text=${whatsappText}`;\n      window.gesWhatsappUrl = whatsappUrl;\n\n      let uyari = \"\";\n      if(yonAdi === \"Bilmiyorum\" || egimAdi === \"Bilmiyorum\"){\n        uyari = `<div class=\"ges-note\"><strong>Not:<\/strong> \u00c7at\u0131 y\u00f6n\u00fc veya e\u011fimi bilinmedi\u011fi i\u00e7in hesaplama \u00f6n kabul ile yap\u0131lm\u0131\u015ft\u0131r. Net sonu\u00e7 teknik ke\u015fif sonras\u0131 belirlenir.<\/div>`;\n      }\n\n      gesQ(\"gesResultArea\").innerHTML = `\n        <span class=\"ges-badge\" style=\"${badgeColor}\">\u00d6n Uygunluk: ${uygunluk}<\/span>\n        <span class=\"ges-badge\" style=\"${leadSkor.renk}\">Lead Skoru: ${leadSkor.harf} \/ ${leadSkor.puan} - ${leadSkor.metin}<\/span>\n\n        <div class=\"ges-results\">\n          <div class=\"ges-result-card\"><small>\u00d6nerilen Sistem G\u00fcc\u00fc<\/small><strong>${minKwp.toFixed(1)} - ${maxKwp.toFixed(1)} kWp<\/strong><\/div>\n          <div class=\"ges-result-card\"><small>Tahmini Y\u0131ll\u0131k \u00dcretim<\/small><strong>${uretimMin.toFixed(0)} - ${uretimMax.toFixed(0)} kWh<\/strong><\/div>\n          <div class=\"ges-result-card\"><small>Tahmini Y\u0131ll\u0131k Fayda<\/small><strong>${yillikTasarrufMin.toFixed(0)} - ${yillikTasarrufMax.toFixed(0)} TL<\/strong><\/div>\n          <div class=\"ges-result-card\"><small>Y\u0131ll\u0131k T\u00fcketim Tahmini<\/small><strong>${yillikTuketim.toFixed(0)} kWh<\/strong><\/div>\n          <div class=\"ges-result-card\"><small>\u00dcretim Katsay\u0131s\u0131<\/small><strong>${netKatsayi.toFixed(0)} kWh\/kWp<\/strong><\/div>\n          <div class=\"ges-result-card\"><small>Analiz B\u00f6lgesi<\/small><strong>${ilceAdi} \/ ${mahalleAdi}<\/strong><\/div>\n       <\/div>\n\n${panelAnimasyonHtml}\n\n${mahsuplasmaHtml}\n\n<div class=\"ges-summary\">\n        <div class=\"ges-summary\">\n          <strong>De\u011ferlendirme \u00d6zeti<\/strong><br>\n          Girilen bilgilere g\u00f6re <strong>${ilceAdi} \/ ${mahalleAdi}<\/strong> b\u00f6lgesindeki yap\u0131n\u0131z i\u00e7in yakla\u015f\u0131k <strong>${minKwp.toFixed(1)} - ${maxKwp.toFixed(1)} kWp<\/strong> aral\u0131\u011f\u0131nda bir g\u00fcne\u015f enerjisi sistemi de\u011ferlendirilebilir.\n          \u00c7at\u0131 y\u00f6n\u00fc <strong>${yonAdi}<\/strong>, e\u011fim durumu <strong>${egimAdi}<\/strong>, g\u00f6lgeleme durumu ise <strong>${golgeAdi}<\/strong> olarak al\u0131nm\u0131\u015ft\u0131r.\n          <br><br>${sonucAciklama}\n          <br><br>Nihai sistem g\u00fcc\u00fc, panel yerle\u015fimi, inverter se\u00e7imi, ba\u011flant\u0131 ko\u015fullar\u0131, yat\u0131r\u0131m bedeli ve geri d\u00f6n\u00fc\u015f s\u00fcresi teknik ke\u015fif sonras\u0131 netle\u015ftirilmelidir.\n        <\/div>\n\n        <div class=\"ges-cta\">\n          <div>\n            <strong>\u00dccretsiz ke\u015fif i\u00e7in uzmanla g\u00f6r\u00fc\u015f\u00fcn<\/strong>\n            <p>Bu \u00f6n analiz sonucu WhatsApp mesaj\u0131na otomatik eklenecek.<\/p>\n          <\/div>\n          <div class=\"ges-actions\" style=\"margin-top:0;\">\n            <button class=\"ges-btn ges-btn-whatsapp\" onclick=\"gesWhatsappAc()\">WhatsApp ile Ke\u015fif Talebi Olu\u015ftur<\/button>\n            <button class=\"ges-btn ges-btn-secondary\" onclick=\"gesPdfOlustur()\">PDF Olarak Kaydet<\/button>\n          <\/div>\n        <\/div>\n\n        ${uyari}\n\n        <p class=\"ges-disclaimer\">Bu rapor, ilk de\u011ferlendirme amac\u0131yla haz\u0131rlanm\u0131\u015ft\u0131r. Kesin proje, yat\u0131r\u0131m bedeli ve geri d\u00f6n\u00fc\u015f s\u00fcresi; yerinde ke\u015fif, \u00e7at\u0131 \u00f6l\u00e7\u00fcm\u00fc, ba\u011flant\u0131 \u015fartlar\u0131 ve ekipman se\u00e7imi sonras\u0131nda netle\u015ftirilir.<\/p>\n      `;\n\n      window.gesStep = 5;\n      window.gesUpdate();\n    };\n\n\n    window.gesWhatsappAc = function(){\n      if(!window.gesWhatsappUrl){\n        alert(\"WhatsApp mesaj\u0131 hen\u00fcz haz\u0131rlanmad\u0131. L\u00fctfen \u00f6nce analizi tamamlay\u0131n.\");\n        return;\n      }\n      window.open(window.gesWhatsappUrl, \"_blank\");\n    };\n\n    window.gesPdfOlustur = function(){\n      const raporEl = document.getElementById(\"gesResultArea\");\n      if(!raporEl || !raporEl.innerHTML.trim()){\n        alert(\"PDF olu\u015fturmak i\u00e7in \u00f6nce analiz sonucunu g\u00f6r\u00fcnt\u00fcleyin.\");\n        return;\n      }\n\n      const rapor = raporEl.innerHTML;\n      const tarih = new Date().toLocaleDateString(\"tr-TR\");\n      const logoEl = document.querySelector('img.custom-logo, .site-logo img, .custom-logo-link img, header img');\n      const logoUrl = logoEl ? logoEl.src : \"\";\n      const pdfWindow = window.open(\"\", \"_blank\", \"width=900,height=1200\");\n\n      pdfWindow.document.open();\n      pdfWindow.document.write(`\n        <!doctype html>\n        <html lang=\"tr\">\n        <head>\n          <meta charset=\"UTF-8\">\n          <title>Alpsun GES \u00d6n Analiz Raporu<\/title>\n          <style>\n            @page { size: A4; margin: 16mm; }\n            * { box-sizing: border-box; }\n            body {\n              font-family: Arial, sans-serif;\n              color: #172033;\n              background: #ffffff;\n              margin: 0;\n              padding: 0;\n              font-size: 12px;\n              line-height: 1.45;\n            }\n            .pdf-header {\n              display: flex;\n              justify-content: space-between;\n              gap: 20px;\n              align-items: flex-start;\n              border-bottom: 3px solid #0A2C63;\n              padding-bottom: 14px;\n              margin-bottom: 18px;\n            }\n            .pdf-brand {\n              display: flex;\n              align-items: center;\n              gap: 14px;\n            }\n            .pdf-logo {\n              max-width: 135px;\n              max-height: 58px;\n              object-fit: contain;\n              display: block;\n            }\n            .pdf-logo-fallback {\n              width: 120px;\n              height: 46px;\n              border: 2px solid #0A2C63;\n              color: #0A2C63;\n              display: flex;\n              align-items: center;\n              justify-content: center;\n              font-weight: 800;\n              letter-spacing: .5px;\n              border-radius: 8px;\n            }\n            .pdf-brand h1 {\n              margin: 0;\n              color: #0A2C63;\n              font-size: 23px;\n              line-height: 1.15;\n            }\n            .pdf-brand p {\n              margin: 6px 0 0;\n              color: #667085;\n              font-size: 12px;\n            }\n            .pdf-meta {\n              text-align: right;\n              font-size: 11px;\n              color: #667085;\n              min-width: 160px;\n            }\n            .ges-badge {\n              display: inline-block;\n              padding: 7px 10px;\n              border-radius: 999px;\n              font-weight: bold;\n              margin: 0 6px 10px 0;\n              font-size: 11px;\n            }\n            .ges-results {\n              display: grid;\n              grid-template-columns: repeat(2, 1fr);\n              gap: 10px;\n              margin: 12px 0;\n            }\n            .ges-result-card,\n            .ges-summary,\n            .ges-info,\n            .ges-note {\n              border: 1px solid #dbe6f3;\n              border-radius: 12px;\n              padding: 12px;\n              background: #ffffff;\n              page-break-inside: avoid;\n              break-inside: avoid;\n            }\n            .ges-result-card small {\n              display: block;\n              color: #667085;\n              margin-bottom: 5px;\n              font-size: 10px;\n            }\n            .ges-result-card strong {\n              color: #0A2C63;\n              font-size: 17px;\n              line-height: 1.2;\n            }\n            .ges-summary {\n              margin-top: 12px;\n              line-height: 1.55;\n            }\n            .ges-info {\n              background: #eef6ff;\n              color: #0A2C63;\n              margin-top: 12px;\n            }\n            .ges-note {\n              background: #fff7e6;\n              color: #7a5200;\n              margin-top: 12px;\n            }\n            .ges-cta,\n            .ges-actions,\n            button,\n            a.ges-btn {\n              display: none !important;\n            }\n            .ges-disclaimer {\n              margin-top: 16px;\n              font-size: 10px;\n              color: #667085;\n              line-height: 1.45;\n              border-top: 1px solid #e5e7eb;\n              padding-top: 10px;\n            }\n            .pdf-footer {\n              margin-top: 18px;\n              padding-top: 10px;\n              border-top: 1px solid #e5e7eb;\n              display: flex;\n              justify-content: space-between;\n              gap: 16px;\n              color: #667085;\n              font-size: 10px;\n            }\n            @media print {\n              body { -webkit-print-color-adjust: exact; print-color-adjust: exact; }\n            }\n          <\/style>\n        <\/head>\n        <body>\n          <div class=\"pdf-header\">\n            <div class=\"pdf-brand\">\n              ${logoUrl ? `<img decoding=\"async\" class=\"pdf-logo\" src=\"${logoUrl}\" alt=\"Alpsun Energy Logo\">` : `<div class=\"pdf-logo-fallback\">ALPSUN<\/div>`}\n              <div>\n                <h1>GES \u00d6n De\u011ferlendirme Raporu<\/h1>\n                <p>Adres, t\u00fcketim ve \u00e7at\u0131 bilgilerine g\u00f6re haz\u0131rlanm\u0131\u015f ilk analiz \u00e7\u0131kt\u0131s\u0131d\u0131r.<\/p>\n              <\/div>\n            <\/div>\n            <div class=\"pdf-meta\">\n              <strong>Rapor Tarihi<\/strong><br>${tarih}<br><br>\n              <strong>Alpsun Energy<\/strong><br>G\u00fcne\u015f Enerjisi Sistemleri\n            <\/div>\n          <\/div>\n\n          ${rapor}\n\n          <div class=\"pdf-footer\">\n            <span>Alpsun Energy<\/span>\n            <span>Teknik ke\u015fif ve proje tasar\u0131m\u0131 sonras\u0131 kesin de\u011ferler haz\u0131rlan\u0131r.<\/span>\n          <\/div>\n        <\/body>\n        <\/html>\n      `);\n      pdfWindow.document.close();\n\n      setTimeout(function(){\n        pdfWindow.focus();\n        pdfWindow.print();\n      }, 600);\n    };\n\n    function gesInit(){\n      window.gesMahalleleriGuncelle();\n      window.gesTesisTipiKontrol();\n    }\n    document.addEventListener(\"DOMContentLoaded\", gesInit);\n    window.addEventListener(\"load\", gesInit);\n    setTimeout(gesInit, 300);\n  <\/script>\n<\/div>\n\t\t\t\t<\/div>\n\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-eb4adc4 e-flex e-con-boxed e-con e-parent\" data-id=\"eb4adc4\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e6cc014 elementor-widget elementor-widget-html\" data-id=\"e6cc014\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"ges-app\">\n  <style>\n    #ges-app *{box-sizing:border-box}\n    #ges-app{max-width:980px;margin:0 auto;font-family:Inter,Arial,sans-serif;color:#172033}\n    .ges-card{background:#fff;border-radius:24px;box-shadow:0 18px 50px rgba(10,44,99,.14);overflow:hidden;border:1px solid #e7edf5}\n    .ges-header{background:linear-gradient(135deg,#0A2C63,#1157a5);color:#fff;padding:34px}\n    .ges-header h2{margin:0 0 10px;font-size:32px;line-height:1.15;color:#fff}\n    .ges-header p{margin:0;color:#dbeafe;font-size:16px;max-width:720px}\n    .ges-body{padding:32px;background:#f8fafc}\n    .ges-progress{height:8px;background:#dbe6f3;border-radius:99px;overflow:hidden;margin-bottom:26px}\n    .ges-progress span{display:block;height:100%;width:20%;background:#20B26B;border-radius:99px;transition:.3s}\n    .ges-step{display:none;animation:fade .25s ease}\n    .ges-step.active{display:block}\n    @keyframes fade{from{opacity:.3;transform:translateY(8px)}to{opacity:1;transform:none}}\n    .ges-step h3{font-size:24px;margin:0 0 8px;color:#0A2C63}\n    .ges-step-desc{margin:0 0 24px;color:#667085}\n    .ges-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}\n    .ges-field{margin-bottom:18px}\n    .ges-field label{display:block;font-weight:700;margin-bottom:8px;color:#25324b}\n    .ges-field input,.ges-field select{width:100%;padding:15px 16px;border:1px solid #d8e0ea;border-radius:14px;background:#fff;font-size:15px;outline:none}\n    .ges-field input:focus,.ges-field select:focus{border-color:#0A2C63;box-shadow:0 0 0 3px rgba(10,44,99,.12)}\n    .ges-actions{display:flex;gap:12px;margin-top:22px}\n    .ges-btn{border:none;border-radius:14px;padding:15px 22px;font-weight:800;font-size:15px;cursor:pointer;text-decoration:none;text-align:center;display:inline-block}\n    .ges-btn-primary{background:#0A2C63;color:#fff;flex:1}\n    .ges-btn-green{background:#20B26B;color:#fff;flex:1}\n    .ges-btn-secondary{background:#e7edf5;color:#0A2C63}\n    .ges-btn-whatsapp{background:#25D366;color:#fff;flex:1}\n    .ges-note{background:#fff7e6;border:1px solid #ffd98a;color:#7a5200;border-radius:14px;padding:14px;margin-top:16px;font-size:14px}\n    .ges-info{background:#eef6ff;border:1px solid #bfdbfe;color:#0A2C63;border-radius:14px;padding:14px;margin-top:16px;font-size:14px}\n    .ges-results{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:22px}\n    .ges-result-card{background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:20px}\n    .ges-result-card small{display:block;color:#667085;margin-bottom:8px}\n    .ges-result-card strong{display:block;font-size:24px;color:#0A2C63}\n    .ges-badge{display:inline-block;padding:8px 12px;border-radius:999px;background:#dcfce7;color:#166534;font-weight:800;margin-right:8px;margin-bottom:8px}\n    .ges-summary{background:#fff;border-radius:18px;padding:22px;margin-top:18px;border:1px solid #e2e8f0;line-height:1.7}\n    .ges-cta{background:linear-gradient(135deg,#0A2C63,#1157a5);color:#fff;border-radius:18px;padding:22px;margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}\n    .ges-cta strong{font-size:20px;display:block;margin-bottom:6px;color:#fff}\n    .ges-cta p{margin:0;color:#dbeafe}\n    .ges-disclaimer{font-size:13px;color:#667085;margin-top:16px;line-height:1.6}\n\n    .ges-analysis-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:22px}\n    .ges-analysis-card{background:#fff;border:1px solid #e2e8f0;border-radius:22px;padding:24px;cursor:pointer;transition:.22s ease;box-shadow:0 12px 30px rgba(15,23,42,.08)}\n    .ges-analysis-card:hover{transform:translateY(-4px);border-color:#0A2C63;box-shadow:0 18px 42px rgba(10,44,99,.16)}\n    .ges-analysis-icon{width:52px;height:52px;border-radius:16px;background:#eef6ff;color:#0A2C63;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:900;margin-bottom:16px}\n    .ges-analysis-card h4{margin:0 0 10px;color:#0A2C63;font-size:21px}\n    .ges-analysis-card p{color:#667085;line-height:1.6;margin:0 0 18px}\n    .ges-roof-capacity{background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:22px;margin-top:18px}\n    @media(max-width:768px){.ges-analysis-cards{grid-template-columns:1fr}}\n    @media(max-width:768px){\n      .ges-header{padding:26px}\n      .ges-header h2{font-size:25px}\n      .ges-body{padding:22px}\n      .ges-grid,.ges-results{grid-template-columns:1fr}\n      .ges-actions{flex-direction:column}\n      .ges-cta{display:block}\n      .ges-cta .ges-actions{margin-top:16px}\n    }\n  <\/style>\n\n  <div class=\"ges-card\">\n    <div class=\"ges-header\">\n      <h2>Bursa GES \u00d6n Analiz Arac\u0131<\/h2>\n      <p>Adres, t\u00fcketim, tesis tipi ve \u00e7at\u0131 bilgilerinize g\u00f6re tahmini sistem g\u00fcc\u00fc, y\u0131ll\u0131k \u00fcretim ve uygunluk \u00f6n de\u011ferlendirmesini hesaplay\u0131n.<\/p>\n    <\/div>\n\n    <div class=\"ges-body\">\n      <div class=\"ges-progress\"><span id=\"gesProgress\"><\/span><\/div>\n\n\n      <div class=\"ges-step active\" data-step=\"0\">\n        <h3>Analiz Y\u00f6ntemini Se\u00e7in<\/h3>\n        <p class=\"ges-step-desc\">\u0130htiyac\u0131n\u0131za g\u00f6re h\u0131zl\u0131 \u00f6n analiz veya uydu \u00fczerinden detayl\u0131 \u00e7at\u0131 yerle\u015fimi ile devam edebilirsiniz.<\/p>\n\n        <div class=\"ges-analysis-cards\">\n          <div class=\"ges-analysis-card\" data-ges-mode=\"quick\" onclick=\"gesAnalizTipiSec('quick')\">\n            <div class=\"ges-analysis-icon\">\u26a1<\/div>\n            <h4>H\u0131zl\u0131 GES \u00d6n Analizi<\/h4>\n            <p>Adres, t\u00fcketim ve \u00e7at\u0131 bilgilerinize g\u00f6re tahmini sistem g\u00fcc\u00fc, y\u0131ll\u0131k \u00fcretim ve yat\u0131r\u0131m uygunlu\u011fu i\u00e7in h\u0131zl\u0131 bir \u00f6n de\u011ferlendirme olu\u015fturur.<\/p>\n            <button type=\"button\" class=\"ges-btn ges-btn-primary\" onclick=\"event.stopPropagation(); gesAnalizTipiSec('quick')\">H\u0131zl\u0131 Analize Ba\u015fla<\/button>\n          <\/div>\n\n          <div class=\"ges-analysis-card\" data-ges-mode=\"map\" onclick=\"gesAnalizTipiSec('map')\">\n            <div class=\"ges-analysis-icon\">\u25a6<\/div>\n            <h4>Uydu \u00dczerinden \u00c7at\u0131 Yerle\u015fim Analizi<\/h4>\n            <p>\u00c7at\u0131n\u0131z\u0131 uydu g\u00f6r\u00fcnt\u00fcs\u00fc \u00fczerinden i\u015faretleyerek panel yerle\u015fimi, kullan\u0131labilir alan, kurulu g\u00fc\u00e7 ve \u00e7at\u0131 kapasitesini daha detayl\u0131 de\u011ferlendirin.<\/p>\n            <button type=\"button\" class=\"ges-btn ges-btn-green\" onclick=\"event.stopPropagation(); gesAnalizTipiSec('map')\">Harita ile Analiz Yap<\/button>\n          <\/div>\n        <\/div>\n\n        <div class=\"ges-note\">\n          Bu ara\u00e7 kesin m\u00fchendislik projesi yerine \u00f6n de\u011ferlendirme amac\u0131yla haz\u0131rlanm\u0131\u015ft\u0131r. Nihai sistem g\u00fcc\u00fc, yat\u0131r\u0131m bedeli ve ba\u011flant\u0131 ko\u015fullar\u0131 teknik ke\u015fif sonras\u0131 netle\u015ftirilir.\n        <\/div>\n      <\/div>\n\n      <div class=\"ges-step\" data-step=\"1\">\n        <h3>1. Konum Bilgisi<\/h3>\n        <p class=\"ges-step-desc\">\u0130l\u00e7e ve mahalle bilgisiyle b\u00f6lgesel g\u00fcne\u015flenme verisini hesaplamaya dahil ediyoruz.<\/p>\n\n        <div class=\"ges-grid\">\n          <div class=\"ges-field\">\n            <label>\u0130l\u00e7e<\/label>\n            <select id=\"ilce\" onchange=\"gesMahalleleriGuncelle()\">\n              <option value=\"1353\" data-ilce=\"Nil\u00fcfer\">Nil\u00fcfer<\/option>\n              <option value=\"1345\" data-ilce=\"Osmangazi\">Osmangazi<\/option>\n              <option value=\"1340\" data-ilce=\"Y\u0131ld\u0131r\u0131m\">Y\u0131ld\u0131r\u0131m<\/option>\n              <option value=\"1325\" data-ilce=\"Mudanya\">Mudanya<\/option>\n              <option value=\"1330\" data-ilce=\"Gemlik\">Gemlik<\/option>\n              <option value=\"1360\" data-ilce=\"Karacabey\">Karacabey<\/option>\n              <option value=\"1370\" data-ilce=\"\u0130neg\u00f6l\">\u0130neg\u00f6l<\/option>\n              <option value=\"1380\" data-ilce=\"Mustafakemalpa\u015fa\">Mustafakemalpa\u015fa<\/option>\n              <option value=\"1350\" data-ilce=\"Di\u011fer\">Di\u011fer Bursa \u0130l\u00e7esi<\/option>\n            <\/select>\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>Mahalle \/ B\u00f6lge<\/label>\n            <select id=\"mahalle\">\n              <option value=\"\">Mahalle se\u00e7in<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"ges-field\">\n          <label>A\u00e7\u0131k Adres<\/label>\n          <input id=\"adres\" type=\"text\" placeholder=\"Cadde, sokak, bina no gibi bilgileri yaz\u0131n\">\n        <\/div>\n\n        <div class=\"ges-actions\">\n          <button class=\"ges-btn ges-btn-primary\" onclick=\"gesNext()\">Devam Et<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"ges-step\" data-step=\"2\">\n        <h3>2. Elektrik T\u00fcketimi<\/h3>\n        <p class=\"ges-step-desc\">Fatura tutar\u0131na g\u00f6re y\u0131ll\u0131k t\u00fcketim ihtiyac\u0131n\u0131z\u0131 tahmin ediyoruz.<\/p>\n\n        <div class=\"ges-grid\">\n          <div class=\"ges-field\">\n            <label>Ayl\u0131k Elektrik Faturas\u0131<\/label>\n            <input id=\"fatura\" type=\"number\" placeholder=\"\u00d6rn: 3000\">\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>Tesis Tipi<\/label>\n            <select id=\"tesisTipi\" onchange=\"gesTesisTipiKontrol()\">\n              <option value=\"mesken\">Mesken \/ 25 kW Alt\u0131 Konut<\/option>\n              <option value=\"mesken\">Villa \/ M\u00fcstakil Konut<\/option>\n              <option value=\"ticari\">Ticari \u0130\u015fletme<\/option>\n              <option value=\"ticari\">Sanayi Tesisi<\/option>\n              <option value=\"ticari\">Tar\u0131msal Sulama<\/option>\n              <option value=\"ticari\">Arazi GES \/ Ticari Proje<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"ges-field\" id=\"profilWrap\" style=\"display:none;\">\n          <label>G\u00fcnd\u00fcz T\u00fcketim Yo\u011funlu\u011fu<\/label>\n          <select id=\"profil\">\n            <option value=\"0.40\">D\u00fc\u015f\u00fck - g\u00fcnd\u00fcz t\u00fcketimi s\u0131n\u0131rl\u0131<\/option>\n            <option value=\"0.60\">Orta - g\u00fcnd\u00fcz t\u00fcketimi var<\/option>\n            <option value=\"0.80\">Y\u00fcksek - g\u00fcnd\u00fcz yo\u011fun t\u00fcketim<\/option>\n            <option value=\"0.95\">\u00c7ok y\u00fcksek - \u00fcretim\/so\u011futma\/sulama a\u011f\u0131rl\u0131kl\u0131<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"ges-note\">\n          Hesaplamada elektrik birim fiyat\u0131 \u00f6n kabul olarak 3,89 TL\/kWh al\u0131nm\u0131\u015ft\u0131r. Ticari\/sanayi senaryosunda saatlik mahsupla\u015fma etkisi ayr\u0131ca de\u011ferlendirilir.\n        <\/div>\n\n        <div class=\"ges-actions\">\n          <button class=\"ges-btn ges-btn-secondary\" onclick=\"gesPrev()\">Geri<\/button>\n          <button class=\"ges-btn ges-btn-primary\" onclick=\"gesNext()\">Devam Et<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"ges-step\" data-step=\"3\">\n        <h3>3. \u00c7at\u0131 Bilgileri<\/h3>\n        <p class=\"ges-step-desc\">\u00c7at\u0131 y\u00f6n\u00fc, e\u011fim ve g\u00f6lgeleme \u00fcretim performans\u0131n\u0131 do\u011frudan etkiler.<\/p>\n\n        <div class=\"ges-grid\">\n          <div class=\"ges-field\">\n            <label>\u00c7at\u0131 Tipi<\/label>\n            <select id=\"cati\">\n              <option>M\u00fcstakil Ev \u00c7at\u0131s\u0131<\/option>\n              <option>Villa \u00c7at\u0131s\u0131<\/option>\n              <option>Ticari \u00c7at\u0131<\/option>\n              <option>D\u00fcz Teras \u00c7at\u0131<\/option>\n              <option>Arsa \/ Arazi<\/option>\n            <\/select>\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>\u00c7at\u0131 Y\u00f6n\u00fc<\/label>\n            <select id=\"yon\">\n              <option value=\"1\">G\u00fcney<\/option>\n              <option value=\"0.95\">G\u00fcneydo\u011fu<\/option>\n              <option value=\"0.95\">G\u00fcneybat\u0131<\/option>\n              <option value=\"0.85\">Do\u011fu<\/option>\n              <option value=\"0.85\">Bat\u0131<\/option>\n              <option value=\"0.70\">Kuzeydo\u011fu<\/option>\n              <option value=\"0.70\">Kuzeybat\u0131<\/option>\n              <option value=\"0.55\">Kuzey<\/option>\n              <option value=\"1\">Bilmiyorum<\/option>\n            <\/select>\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>\u00c7at\u0131 E\u011fimi<\/label>\n            <select id=\"egim\">\n              <option value=\"0.96\">D\u00fcz \u00e7at\u0131<\/option>\n              <option value=\"0.98\">10\u00b0 - 20\u00b0<\/option>\n              <option value=\"1\">20\u00b0 - 30\u00b0<\/option>\n              <option value=\"0.97\">30\u00b0 - 40\u00b0<\/option>\n              <option value=\"0.92\">40\u00b0 \u00fczeri<\/option>\n              <option value=\"1\">Bilmiyorum<\/option>\n            <\/select>\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>G\u00f6lgeleme Durumu<\/label>\n            <select id=\"golge\">\n              <option value=\"1\">G\u00f6lgeleme yok \/ az<\/option>\n              <option value=\"0.92\">Orta seviye g\u00f6lge<\/option>\n              <option value=\"0.80\">Yo\u011fun g\u00f6lge olabilir<\/option>\n              <option value=\"0.95\">Bilmiyorum<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"ges-actions\">\n          <button class=\"ges-btn ges-btn-secondary\" onclick=\"gesPrev()\">Geri<\/button>\n          <button class=\"ges-btn ges-btn-primary\" onclick=\"gesNext()\">Devam Et<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"ges-step\" data-step=\"4\">\n        <h3>4. Analiz Raporu \u0130\u00e7in Bilgileriniz<\/h3>\n        <p class=\"ges-step-desc\">\u00d6n analiz sonucunuzu g\u00f6r\u00fcnt\u00fclemek ve detayl\u0131 de\u011ferlendirme almak i\u00e7in bilgilerinizi girin.<\/p>\n\n        <div class=\"ges-grid\">\n          <div class=\"ges-field\">\n            <label>Ad Soyad<\/label>\n            <input id=\"adsoyad\" type=\"text\" placeholder=\"Ad\u0131n\u0131z Soyad\u0131n\u0131z\">\n          <\/div>\n\n          <div class=\"ges-field\">\n            <label>Telefon<\/label>\n            <input id=\"telefon\" type=\"tel\" placeholder=\"05xx xxx xx xx\">\n          <\/div>\n        <\/div>\n\n        <div class=\"ges-field\">\n          <label>E-posta<\/label>\n          <input id=\"email\" type=\"email\" placeholder=\"ornek@mail.com\">\n        <\/div>\n\n        <div class=\"ges-actions\">\n          <button class=\"ges-btn ges-btn-secondary\" onclick=\"gesPrev()\">Geri<\/button>\n          <button class=\"ges-btn ges-btn-green\" onclick=\"gesCalculate()\">Analiz Sonucumu G\u00f6ster<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"ges-step\" data-step=\"5\">\n        <h3>\u00d6n Analiz Sonucunuz<\/h3>\n        <p class=\"ges-step-desc\">Bu sonu\u00e7, girilen bilgilerle olu\u015fturulmu\u015f tahmini bir \u00f6n de\u011ferlendirmedir.<\/p>\n        <div id=\"gesResultArea\"><\/div>\n        <div class=\"ges-actions\">\n          <button class=\"ges-btn ges-btn-secondary\" onclick=\"gesRestart()\">Yeni Analiz Yap<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    window.gesStep = 0;\n    window.gesAnalysisMode = \"quick\";\n\n    const gesMahalleler = {\n      \"Nil\u00fcfer\": [\"19 May\u0131s\",\"23 Nisan\",\"29 Ekim\",\"30 A\u011fustos Zafer\",\"Ahmet Yesevi\",\"Ak\u00e7alar\",\"Alaaddinbey\",\"Alt\u0131n\u015fehir\",\"Ataevler\",\"Balat\",\"Bar\u0131\u015f\",\"Ba\u015fk\u00f6y\",\"Be\u015fevler\",\"Bursa OSB\",\"Cumhuriyet\",\"\u00c7al\u0131\",\"Demirci\",\"Ertu\u011frul\",\"Fethiye\",\"G\u00f6r\u00fckle\",\"Hasana\u011fa\",\"\u0130hsaniye\",\"Karaman\",\"Kayapa\",\"Konak\",\"K\u00fclt\u00fcr\",\"Minareli\u00e7avu\u015f\",\"Odunluk\",\"\u00d6zl\u00fcce\",\"\u00dc\u00e7evler\",\"Yol\u00e7at\u0131\"],\n      \"Osmangazi\": [\"Alt\u0131parmak\",\"Ba\u011flarba\u015f\u0131\",\"\u00c7ekirge\",\"Demirta\u015f\",\"Dikkald\u0131r\u0131m\",\"Doburca\",\"Do\u011fanbey\",\"Emek\",\"Hamitler\",\"H\u00fcdavendigar\",\"K\u00fck\u00fcrtl\u00fc\",\"Maksem\",\"Muradiye\",\"Nal\u0131nc\u0131lar\",\"Panay\u0131r\",\"Reyhan\",\"Santral Garaj\",\"So\u011fanl\u0131\",\"Yunuseli\"],\n      \"Y\u0131ld\u0131r\u0131m\": [\"Arabayata\u011f\u0131\",\"Ba\u011flaralt\u0131\",\"Cumal\u0131k\u0131z\u0131k\",\"De\u011firmenlik\u0131z\u0131k\",\"Davutkad\u0131\",\"Dua\u00e7\u0131nar\u0131\",\"E\u011fitim\",\"Erikli\",\"Esenevler\",\"Hacivat\",\"Kapl\u0131kaya\",\"Mimar Sinan\",\"Millet\",\"Mollaarap\",\"Ortaba\u011flar\",\"Samanl\u0131\",\"Setba\u015f\u0131\",\"Teferr\u00fc\u00e7\",\"Vak\u0131f\",\"Ye\u015fil\"],\n      \"Mudanya\": [\"Alt\u0131nta\u015f\",\"Bademli\",\"Burgaz\",\"\u00c7a\u011fr\u0131\u015fan\",\"G\u00fczelyal\u0131 E\u011fitim\",\"G\u00fczelyal\u0131 Siteler\",\"Halitpa\u015fa\",\"Hasanbey\",\"I\u015f\u0131kl\u0131\",\"M\u00fcrsel\",\"\u00d6merbey\",\"Tirilye\",\"Yal\u0131\u00e7iftlik\",\"Yeni\"],\n      \"Gemlik\": [\"Ata\",\"Bal\u0131kpazar\u0131\",\"Cumhuriyet\",\"Demirsuba\u015f\u0131\",\"Eng\u00fcr\u00fcc\u00fck\",\"E\u015fref Din\u00e7er\",\"Feyziye\",\"Hamidiye\",\"Hisar\",\"Kumla\",\"K\u00fc\u00e7\u00fckkumla\",\"Narl\u0131\",\"Orhaniye\",\"Osmaniye\",\"Umurbey\"],\n      \"Karacabey\": [\"Canbal\u0131\",\"Emirsultan\",\"Hamidiye\",\"H\u00fcdavendigar\",\"Mecidiye\",\"Nasrettin\",\"Rungu\u00e7pa\u015fa\",\"Saadet\",\"S\u0131rabademler\",\"Tabaklar\",\"Tav\u015fanl\u0131\",\"Yenice\"],\n      \"\u0130neg\u00f6l\": [\"Akhisar\",\"Alanyurt\",\"Burhaniye\",\"Cerrah\",\"Cuma\",\"Ertu\u011frulgazi\",\"Hamidiye\",\"Kemalpa\u015fa\",\"Mesudiye\",\"Mahmudiye\",\"Orhaniye\",\"Osmaniye\",\"Sinanbey\",\"S\u00fcleymaniye\",\"Turgutalp\",\"Yenice\"],\n      \"Mustafakemalpa\u015fa\": [\"Atariye\",\"Bar\u0131\u015f\",\"Cumhuriyet\",\"Hamidiye\",\"Lala\u015fahin\",\"Orta\",\"\u015eevketiye\",\"Tatkavakl\u0131\",\"V\u0131raca\",\"Yal\u0131nta\u015f\",\"Yunusemre\"],\n      \"Di\u011fer\": [\"Di\u011fer \/ Listede yok\"]\n    };\n\n    function gesQ(id){ return document.getElementById(id); }\n\n    function gesIlceAdiAl(){\n      const ilceSelect = gesQ(\"ilce\");\n      if(!ilceSelect) return \"Di\u011fer\";\n      const selected = ilceSelect.options[ilceSelect.selectedIndex];\n      return (selected.getAttribute(\"data-ilce\") || selected.textContent || \"Di\u011fer\").trim();\n    }\n\n    window.gesMahalleleriGuncelle = function(){\n      const ilceAdi = gesIlceAdiAl();\n      const mahalleSelect = gesQ(\"mahalle\");\n      if(!mahalleSelect) return;\n      const liste = gesMahalleler[ilceAdi] || gesMahalleler[\"Di\u011fer\"];\n      mahalleSelect.innerHTML = '<option value=\"\">Mahalle se\u00e7in<\/option>';\n      liste.forEach(function(mahalle){\n        const opt = document.createElement(\"option\");\n        opt.value = mahalle;\n        opt.textContent = mahalle;\n        mahalleSelect.appendChild(opt);\n      });\n    };\n\n    window.gesTesisTipiKontrol = function(){\n      const tesisTipi = gesQ(\"tesisTipi\") ? gesQ(\"tesisTipi\").value : \"mesken\";\n      const profilWrap = gesQ(\"profilWrap\");\n      if(profilWrap) profilWrap.style.display = tesisTipi === \"ticari\" ? \"block\" : \"none\";\n    };\n\n\n\n    function gesAnalizTipiSec(type){\n      window.gesAnalysisMode = type;\n\n      const roofApp = document.getElementById(\"roof-pro-app\");\n      if(type === \"map\"){\n        if(roofApp){\n          roofApp.style.display = \"block\";\n          setTimeout(function(){\n            if(window.roofMap && window.roofMap.invalidateSize){ window.roofMap.invalidateSize(); }\n          }, 350);\n        }\n      } else {\n        if(roofApp){ roofApp.style.display = \"none\"; }\n      }\n\n      window.gesStep = 1;\n      if(typeof window.gesUpdate === \"function\"){ window.gesUpdate(); }\n\n      const gesApp = document.getElementById(\"ges-app\");\n      if(gesApp){\n        setTimeout(function(){\n          gesApp.scrollIntoView({behavior:\"smooth\", block:\"start\"});\n        }, 100);\n      }\n    }\n    window.gesAnalizTipiSec = gesAnalizTipiSec;\n\n    document.addEventListener(\"click\", function(e){\n      const quickCard = e.target.closest('[data-ges-mode=\"quick\"]');\n      const mapCard = e.target.closest('[data-ges-mode=\"map\"]');\n      if(quickCard){ gesAnalizTipiSec(\"quick\"); }\n      if(mapCard){ gesAnalizTipiSec(\"map\"); }\n    });\n\n    window.gesUpdate = function(){\n      document.querySelectorAll(\"#ges-app .ges-step\").forEach(function(s){ s.classList.remove(\"active\"); });\n      const active = document.querySelector('#ges-app .ges-step[data-step=\"'+window.gesStep+'\"]');\n      if(active) active.classList.add(\"active\");\n      if(gesQ(\"gesProgress\")){\n        const progressValue = window.gesStep === 0 ? 8 : (window.gesStep * 20);\n        gesQ(\"gesProgress\").style.width = progressValue + \"%\";\n      }\n    };\n\n    window.gesNext = function(){\n      if(window.gesStep === 1){\n        if(!gesQ(\"mahalle\").value){ alert(\"L\u00fctfen mahalle se\u00e7in.\"); return; }\n        if(!gesQ(\"adres\").value.trim()){ alert(\"L\u00fctfen adres bilginizi girin.\"); return; }\n      }\n      if(window.gesStep === 2){\n        const fatura = parseFloat(gesQ(\"fatura\").value);\n        if(!fatura || fatura <= 0){ alert(\"L\u00fctfen ge\u00e7erli bir fatura tutar\u0131 girin.\"); return; }\n      }\n      if(window.gesStep < 5){ window.gesStep++; window.gesUpdate(); }\n    };\n\n    window.gesPrev = function(){\n      if(window.gesStep > 1){ window.gesStep--; window.gesUpdate(); }\n    };\n\n    window.gesRestart = function(){\n      window.gesStep = 0;\n      window.gesAnalysisMode = \"quick\";\n      const roofApp = document.getElementById(\"roof-pro-app\");\n      if(roofApp){ roofApp.style.display = \"none\"; }\n      window.gesUpdate();\n      if(gesQ(\"gesResultArea\")) gesQ(\"gesResultArea\").innerHTML = \"\";\n    };\n\n    function gesLeadSkoruHesapla(data){\n      let puan = 0;\n      if(data.fatura >= 7500) puan += 25;\n      else if(data.fatura >= 4000) puan += 20;\n      else if(data.fatura >= 2000) puan += 12;\n      else puan += 5;\n      if(data.tesisTipi === \"ticari\") puan += 20; else puan += 10;\n      if(data.yonKatsayi >= 0.95) puan += 20;\n      else if(data.yonKatsayi >= 0.85) puan += 12;\n      else if(data.yonKatsayi >= 0.70) puan += 5;\n      if(data.golgeKatsayi >= 0.95) puan += 20;\n      else if(data.golgeKatsayi >= 0.90) puan += 12;\n      else if(data.golgeKatsayi >= 0.80) puan += 5;\n      if(data.tel) puan += 10;\n      if(data.email) puan += 5;\n      if(puan >= 75) return {harf:\"A\", puan:puan, metin:\"Hemen aranmal\u0131\", renk:\"background:#dcfce7;color:#166534;\"};\n      if(puan >= 55) return {harf:\"B\", puan:puan, metin:\"Uygun, ke\u015fif planlanabilir\", renk:\"background:#fef3c7;color:#92400e;\"};\n      return {harf:\"C\", puan:puan, metin:\"D\u00fc\u015f\u00fck \u00f6ncelik \/ detayl\u0131 inceleme gerekli\", renk:\"background:#fee2e2;color:#991b1b;\"};\n    }\n\n    window.gesCalculate = function(){\n      const ad = gesQ(\"adsoyad\").value.trim();\n      const tel = gesQ(\"telefon\").value.trim();\n      const email = gesQ(\"email\").value.trim();\n      if(!ad || !tel){ alert(\"L\u00fctfen ad soyad ve telefon bilgilerinizi girin.\"); return; }\n\n      const fatura = parseFloat(gesQ(\"fatura\").value);\n      const birimFiyat = 3.89;\n      const ticariSebekeSatisFiyati = 1.50;\n      const tesisTipiSelect = gesQ(\"tesisTipi\");\n      const tesisTipi = tesisTipiSelect.value;\n      const tesisTipiAdi = tesisTipiSelect.options[tesisTipiSelect.selectedIndex].text;\n      const ilceSelect = gesQ(\"ilce\");\n      const ilceAdi = ilceSelect.options[ilceSelect.selectedIndex].text;\n      const mahalleAdi = gesQ(\"mahalle\").value;\n      const adres = gesQ(\"adres\").value.trim();\n      const baseKatsayi = parseFloat(ilceSelect.value);\n      const yonSelect = gesQ(\"yon\");\n      const yonAdi = yonSelect.options[yonSelect.selectedIndex].text;\n      const yonKatsayi = parseFloat(yonSelect.value);\n      const egimSelect = gesQ(\"egim\");\n      const egimAdi = egimSelect.options[egimSelect.selectedIndex].text;\n      const egimKatsayi = parseFloat(egimSelect.value);\n      const golgeSelect = gesQ(\"golge\");\n      const golgeAdi = golgeSelect.options[golgeSelect.selectedIndex].text;\n      const golgeKatsayi = parseFloat(golgeSelect.value);\n      const yillikTuketim = (fatura \/ birimFiyat) * 12;\n      const netKatsayi = baseKatsayi * yonKatsayi * egimKatsayi * golgeKatsayi;\n      const onerilenKwp = yillikTuketim \/ netKatsayi;\n      const minKwp = onerilenKwp * 0.90;\n      const maxKwp = onerilenKwp * 1.10;\n      const uretimMin = minKwp * netKatsayi;\n      const uretimMax = maxKwp * netKatsayi;\n      let yillikTasarrufMin = 0;\n      let yillikTasarrufMax = 0;\n      let mahsuplasmaHtml = \"\";\n      let sonucAciklama = \"\";\n\n      if(tesisTipi === \"mesken\"){\n        yillikTasarrufMin = uretimMin * birimFiyat;\n        yillikTasarrufMax = uretimMax * birimFiyat;\n        mahsuplasmaHtml = `<div class=\"ges-info\"><strong>Konut Tipi \u00d6n De\u011ferlendirme:<\/strong> Bu rapor, konut \u00f6l\u00e7e\u011findeki t\u00fcketim yap\u0131s\u0131 ve girilen \u00e7at\u0131 bilgileri dikkate al\u0131narak haz\u0131rlanm\u0131\u015ft\u0131r. Sonu\u00e7lar, sistem g\u00fcc\u00fc ve y\u0131ll\u0131k \u00fcretim potansiyeli i\u00e7in ilk karar deste\u011fi sa\u011flar.<\/div>`;\n        sonucAciklama = `Bu de\u011ferlendirme konut tipi kullan\u0131m profiline g\u00f6re haz\u0131rlanm\u0131\u015ft\u0131r. Nihai sistem tasar\u0131m\u0131, \u00e7at\u0131 \u00f6l\u00e7\u00fcs\u00fc, ba\u011flant\u0131 ko\u015fullar\u0131 ve ke\u015fif sonu\u00e7lar\u0131na g\u00f6re netle\u015ftirilmelidir.`;\n      } else {\n        const profilSelect = gesQ(\"profil\");\n        const profil = parseFloat(profilSelect.value);\n        const profilAdi = profilSelect.options[profilSelect.selectedIndex].text;\n        const ozTuketimMin = uretimMin * profil;\n        const ozTuketimMax = uretimMax * profil;\n        const sebekeMin = uretimMin - ozTuketimMin;\n        const sebekeMax = uretimMax - ozTuketimMax;\n        yillikTasarrufMin = (ozTuketimMin * birimFiyat) + (sebekeMin * ticariSebekeSatisFiyati);\n        yillikTasarrufMax = (ozTuketimMax * birimFiyat) + (sebekeMax * ticariSebekeSatisFiyati);\n        mahsuplasmaHtml = `\n          <div class=\"ges-results\">\n            <div class=\"ges-result-card\"><small>\u00d6z T\u00fcketim Tahmini<\/small><strong>${ozTuketimMin.toFixed(0)} - ${ozTuketimMax.toFixed(0)} kWh<\/strong><\/div>\n            <div class=\"ges-result-card\"><small>\u015eebekeye Verilen Enerji<\/small><strong>${sebekeMin.toFixed(0)} - ${sebekeMax.toFixed(0)} kWh<\/strong><\/div>\n            <div class=\"ges-result-card\"><small>G\u00fcnd\u00fcz T\u00fcketim Profili<\/small><strong>%${(profil * 100).toFixed(0)}<\/strong><\/div>\n          <\/div>\n          <div class=\"ges-info\"><strong>Ticari\/Sanayi \u00d6n De\u011ferlendirme:<\/strong> Bu rapor, i\u015fletmenin g\u00fcnd\u00fcz t\u00fcketim yo\u011funlu\u011fu ve \u00fcretim-t\u00fcketim e\u015fle\u015fmesi dikkate al\u0131narak haz\u0131rlanm\u0131\u015ft\u0131r. G\u00fcnd\u00fcz t\u00fcketim yo\u011funlu\u011fu <strong>${profilAdi}<\/strong> olarak al\u0131nm\u0131\u015ft\u0131r.<\/div>`;\n        sonucAciklama = `Bu de\u011ferlendirme ticari\/sanayi\/arazi tipi kullan\u0131m profiline g\u00f6re haz\u0131rlanm\u0131\u015ft\u0131r. \u00dcretimin i\u015fletme t\u00fcketimiyle ayn\u0131 zaman diliminde de\u011ferlendirilmesi, yat\u0131r\u0131m geri d\u00f6n\u00fc\u015f performans\u0131n\u0131 do\u011frudan etkileyen ana unsurlardan biridir.`;\n      }\n\n      let uygunluk = \"Y\u00fcksek\";\n      let badgeColor = \"background:#dcfce7;color:#166534;\";\n      if(yonKatsayi < 0.75 || golgeKatsayi < 0.85){ uygunluk = \"Detayl\u0131 ke\u015fif gerekli\"; badgeColor = \"background:#fee2e2;color:#991b1b;\"; }\n      else if(yonKatsayi < 0.90 || golgeKatsayi < 0.95){ uygunluk = \"Orta\"; badgeColor = \"background:#fef3c7;color:#92400e;\"; }\n\n      const leadSkor = gesLeadSkoruHesapla({fatura, tesisTipi, yonKatsayi, golgeKatsayi, tel, email});\n      const whatsappText = `Merhaba, Alpsun GES \u00f6n analiz arac\u0131ndan geldim.%0A%0AAd Soyad: ${encodeURIComponent(ad)}%0ATelefon: ${encodeURIComponent(tel)}%0A\u0130l\u00e7e\/Mahalle: ${encodeURIComponent(ilceAdi + \" \/ \" + mahalleAdi)}%0AAdres: ${encodeURIComponent(adres)}%0ATesis Tipi: ${encodeURIComponent(tesisTipiAdi)}%0A\u00d6nerilen Sistem: ${encodeURIComponent(minKwp.toFixed(1) + \" - \" + maxKwp.toFixed(1) + \" kWp\")}%0AY\u0131ll\u0131k \u00dcretim: ${encodeURIComponent(uretimMin.toFixed(0) + \" - \" + uretimMax.toFixed(0) + \" kWh\")}%0ATahmini Y\u0131ll\u0131k Fayda: ${encodeURIComponent(yillikTasarrufMin.toFixed(0) + \" - \" + yillikTasarrufMax.toFixed(0) + \" TL\")}%0ALead Skoru: ${encodeURIComponent(leadSkor.harf + \" - \" + leadSkor.metin)}${window.gesAnalysisMode === \"map\" && window.roofAnalysisData ? `%0A%0AHarita Yerle\u015fimi:%0APanel: ${encodeURIComponent(window.roofAnalysisData.totalPanels + \" adet\")}%0AKurulu G\u00fc\u00e7: ${encodeURIComponent(window.roofAnalysisData.totalKwp.toFixed(1) + \" kWp\")}%0A\u00c7at\u0131 Alan\u0131: ${encodeURIComponent(window.roofAnalysisData.totalArea.toFixed(1) + \" m\u00b2\")}` : \"\"}`;\n      const whatsappUrl = `https:\/\/wa.me\/905448793979?text=${whatsappText}`;\n      window.gesWhatsappUrl = whatsappUrl;\n\n      let uyari = \"\";\n      if(yonAdi === \"Bilmiyorum\" || egimAdi === \"Bilmiyorum\"){\n        uyari = `<div class=\"ges-note\"><strong>Not:<\/strong> \u00c7at\u0131 y\u00f6n\u00fc veya e\u011fimi bilinmedi\u011fi i\u00e7in hesaplama \u00f6n kabul ile yap\u0131lm\u0131\u015ft\u0131r. Net sonu\u00e7 teknik ke\u015fif sonras\u0131 belirlenir.<\/div>`;\n      }\n\n      const roofData = window.roofAnalysisData || null;\n      let roofHaritaHtml = \"\";\n\n      if(window.gesAnalysisMode === \"map\" && roofData && roofData.totalPanels > 0){\n        const ihtiyacKwp = (minKwp + maxKwp) \/ 2;\n        const catiKwp = roofData.totalKwp;\n        const karsilamaOrani = ihtiyacKwp > 0 ? (catiKwp \/ ihtiyacKwp) * 100 : 0;\n        const kapasiteYorumu = catiKwp >= ihtiyacKwp\n          ? \"Uydu yerle\u015fimine g\u00f6re \u00e7at\u0131 kapasiteniz, t\u00fcketim ihtiyac\u0131n\u0131za g\u00f6re hesaplanan sistem g\u00fcc\u00fcn\u00fc kar\u015f\u0131layabilecek seviyededir.\"\n          : \"Uydu yerle\u015fimine g\u00f6re \u00e7at\u0131 kapasiteniz, t\u00fcketim ihtiyac\u0131n\u0131z\u0131n tamam\u0131n\u0131 kar\u015f\u0131lamak i\u00e7in s\u0131n\u0131rl\u0131 kalabilir. Net \u00e7\u00f6z\u00fcm teknik ke\u015fif sonras\u0131 belirlenmelidir.\";\n\n        roofHaritaHtml = `\n          <div class=\"ges-roof-capacity\">\n            <h3 style=\"margin:0 0 8px;color:#0A2C63;\">Uydu Yerle\u015fimine G\u00f6re \u00c7at\u0131 Kapasitesi<\/h3>\n            <p style=\"margin:0 0 18px;color:#667085;\">Bu b\u00f6l\u00fcm, uydu \u00fczerinden \u00e7izilen \u00e7at\u0131 cepheleri ve yerle\u015ftirilen panel say\u0131s\u0131na g\u00f6re olu\u015fturulmu\u015ftur.<\/p>\n            <div class=\"ges-results\">\n              <div class=\"ges-result-card\"><small>Haritada Yerle\u015fen Panel<\/small><strong>${roofData.totalPanels} adet<\/strong><\/div>\n              <div class=\"ges-result-card\"><small>\u00c7at\u0131ya S\u0131\u011fan G\u00fc\u00e7<\/small><strong>${roofData.totalKwp.toFixed(1)} kWp<\/strong><\/div>\n              <div class=\"ges-result-card\"><small>\u0130\u015faretlenen \u00c7at\u0131 Alan\u0131<\/small><strong>${roofData.totalArea.toFixed(1)} m\u00b2<\/strong><\/div>\n              <div class=\"ges-result-card\"><small>Panel A\u011f\u0131rl\u0131\u011f\u0131<\/small><strong>${roofData.totalWeight.toFixed(0)} kg<\/strong><\/div>\n              <div class=\"ges-result-card\"><small>\u00c7izilen Cephe Say\u0131s\u0131<\/small><strong>${roofData.faceCount} adet<\/strong><\/div>\n              <div class=\"ges-result-card\"><small>\u0130htiyac\u0131 Kar\u015f\u0131lama<\/small><strong>%${Math.min(karsilamaOrani,100).toFixed(0)}<\/strong><\/div>\n            <\/div>\n            <div class=\"ges-info\"><strong>\u00c7at\u0131 Kapasite Yorumu:<\/strong> T\u00fcketime g\u00f6re ihtiya\u00e7 duyulan yakla\u015f\u0131k sistem g\u00fcc\u00fc ${ihtiyacKwp.toFixed(1)} kWp seviyesindedir. Uydu yerle\u015fimine g\u00f6re uygulanabilir g\u00fc\u00e7 ${catiKwp.toFixed(1)} kWp olarak g\u00f6r\u00fcnmektedir. ${kapasiteYorumu}<\/div>\n          <\/div>`;\n      } else if(window.gesAnalysisMode === \"map\"){\n        roofHaritaHtml = `<div class=\"ges-note\"><strong>Harita Analizi Notu:<\/strong> Uydu yerle\u015fimi se\u00e7ildi ancak sonu\u00e7 olu\u015fturulmadan \u00f6nce \u00e7at\u0131ya panel yerle\u015fimi yap\u0131lmam\u0131\u015f g\u00f6r\u00fcn\u00fcyor. Harita mod\u00fcl\u00fcnde cepheleri \u00e7izip panel yerle\u015fimi yapt\u0131ktan sonra raporu tekrar olu\u015fturabilirsiniz.<\/div>`;\n      }\n\n      gesQ(\"gesResultArea\").innerHTML = `\n        <span class=\"ges-badge\" style=\"${badgeColor}\">\u00d6n Uygunluk: ${uygunluk}<\/span>\n        <span class=\"ges-badge\" style=\"${leadSkor.renk}\">Lead Skoru: ${leadSkor.harf} \/ ${leadSkor.puan} - ${leadSkor.metin}<\/span>\n\n        <div class=\"ges-results\">\n          <div class=\"ges-result-card\"><small>\u00d6nerilen Sistem G\u00fcc\u00fc<\/small><strong>${minKwp.toFixed(1)} - ${maxKwp.toFixed(1)} kWp<\/strong><\/div>\n          <div class=\"ges-result-card\"><small>Tahmini Y\u0131ll\u0131k \u00dcretim<\/small><strong>${uretimMin.toFixed(0)} - ${uretimMax.toFixed(0)} kWh<\/strong><\/div>\n          <div class=\"ges-result-card\"><small>Tahmini Y\u0131ll\u0131k Fayda<\/small><strong>${yillikTasarrufMin.toFixed(0)} - ${yillikTasarrufMax.toFixed(0)} TL<\/strong><\/div>\n          <div class=\"ges-result-card\"><small>Y\u0131ll\u0131k T\u00fcketim Tahmini<\/small><strong>${yillikTuketim.toFixed(0)} kWh<\/strong><\/div>\n          <div class=\"ges-result-card\"><small>\u00dcretim Katsay\u0131s\u0131<\/small><strong>${netKatsayi.toFixed(0)} kWh\/kWp<\/strong><\/div>\n          <div class=\"ges-result-card\"><small>Analiz B\u00f6lgesi<\/small><strong>${ilceAdi} \/ ${mahalleAdi}<\/strong><\/div>\n        <\/div>\n\n        ${roofHaritaHtml}\n\n        ${mahsuplasmaHtml}\n\n        <div class=\"ges-summary\">\n          <strong>De\u011ferlendirme \u00d6zeti<\/strong><br>\n          Girilen bilgilere g\u00f6re <strong>${ilceAdi} \/ ${mahalleAdi}<\/strong> b\u00f6lgesindeki yap\u0131n\u0131z i\u00e7in yakla\u015f\u0131k <strong>${minKwp.toFixed(1)} - ${maxKwp.toFixed(1)} kWp<\/strong> aral\u0131\u011f\u0131nda bir g\u00fcne\u015f enerjisi sistemi de\u011ferlendirilebilir.\n          \u00c7at\u0131 y\u00f6n\u00fc <strong>${yonAdi}<\/strong>, e\u011fim durumu <strong>${egimAdi}<\/strong>, g\u00f6lgeleme durumu ise <strong>${golgeAdi}<\/strong> olarak al\u0131nm\u0131\u015ft\u0131r.\n          <br><br>${sonucAciklama}\n          <br><br>Nihai sistem g\u00fcc\u00fc, panel yerle\u015fimi, inverter se\u00e7imi, ba\u011flant\u0131 ko\u015fullar\u0131, yat\u0131r\u0131m bedeli ve geri d\u00f6n\u00fc\u015f s\u00fcresi teknik ke\u015fif sonras\u0131 netle\u015ftirilmelidir.\n        <\/div>\n\n        <div class=\"ges-cta\">\n          <div>\n            <strong>\u00dccretsiz ke\u015fif i\u00e7in uzmanla g\u00f6r\u00fc\u015f\u00fcn<\/strong>\n            <p>Bu \u00f6n analiz sonucu WhatsApp mesaj\u0131na otomatik eklenecek.<\/p>\n          <\/div>\n          <div class=\"ges-actions\" style=\"margin-top:0;\">\n            <button class=\"ges-btn ges-btn-whatsapp\" onclick=\"gesWhatsappAc()\">WhatsApp ile Ke\u015fif Talebi Olu\u015ftur<\/button>\n            <button class=\"ges-btn ges-btn-secondary\" onclick=\"gesPdfOlustur()\">PDF Olarak Kaydet<\/button>\n          <\/div>\n        <\/div>\n\n        ${uyari}\n\n        <p class=\"ges-disclaimer\">Bu rapor, ilk de\u011ferlendirme amac\u0131yla haz\u0131rlanm\u0131\u015ft\u0131r. Kesin proje, yat\u0131r\u0131m bedeli ve geri d\u00f6n\u00fc\u015f s\u00fcresi; yerinde ke\u015fif, \u00e7at\u0131 \u00f6l\u00e7\u00fcm\u00fc, ba\u011flant\u0131 \u015fartlar\u0131 ve ekipman se\u00e7imi sonras\u0131nda netle\u015ftirilir.<\/p>\n      `;\n\n      window.gesStep = 5;\n      window.gesUpdate();\n    };\n\n\n    window.gesWhatsappAc = function(){\n      if(!window.gesWhatsappUrl){\n        alert(\"WhatsApp mesaj\u0131 hen\u00fcz haz\u0131rlanmad\u0131. L\u00fctfen \u00f6nce analizi tamamlay\u0131n.\");\n        return;\n      }\n      window.open(window.gesWhatsappUrl, \"_blank\");\n    };\n\n    window.gesPdfOlustur = function(){\n      const raporEl = document.getElementById(\"gesResultArea\");\n      if(!raporEl || !raporEl.innerHTML.trim()){\n        alert(\"PDF olu\u015fturmak i\u00e7in \u00f6nce analiz sonucunu g\u00f6r\u00fcnt\u00fcleyin.\");\n        return;\n      }\n\n      const rapor = raporEl.innerHTML;\n      const tarih = new Date().toLocaleDateString(\"tr-TR\");\n      const logoEl = document.querySelector('img.custom-logo, .site-logo img, .custom-logo-link img, header img');\n      const logoUrl = logoEl ? logoEl.src : \"\";\n      const pdfWindow = window.open(\"\", \"_blank\", \"width=900,height=1200\");\n\n      pdfWindow.document.open();\n      pdfWindow.document.write(`\n        <!doctype html>\n        <html lang=\"tr\">\n        <head>\n          <meta charset=\"UTF-8\">\n          <title>Alpsun GES \u00d6n Analiz Raporu<\/title>\n          <style>\n            @page { size: A4; margin: 16mm; }\n            * { box-sizing: border-box; }\n            body {\n              font-family: Arial, sans-serif;\n              color: #172033;\n              background: #ffffff;\n              margin: 0;\n              padding: 0;\n              font-size: 12px;\n              line-height: 1.45;\n            }\n            .pdf-header {\n              display: flex;\n              justify-content: space-between;\n              gap: 20px;\n              align-items: flex-start;\n              border-bottom: 3px solid #0A2C63;\n              padding-bottom: 14px;\n              margin-bottom: 18px;\n            }\n            .pdf-brand {\n              display: flex;\n              align-items: center;\n              gap: 14px;\n            }\n            .pdf-logo {\n              max-width: 135px;\n              max-height: 58px;\n              object-fit: contain;\n              display: block;\n            }\n            .pdf-logo-fallback {\n              width: 120px;\n              height: 46px;\n              border: 2px solid #0A2C63;\n              color: #0A2C63;\n              display: flex;\n              align-items: center;\n              justify-content: center;\n              font-weight: 800;\n              letter-spacing: .5px;\n              border-radius: 8px;\n            }\n            .pdf-brand h1 {\n              margin: 0;\n              color: #0A2C63;\n              font-size: 23px;\n              line-height: 1.15;\n            }\n            .pdf-brand p {\n              margin: 6px 0 0;\n              color: #667085;\n              font-size: 12px;\n            }\n            .pdf-meta {\n              text-align: right;\n              font-size: 11px;\n              color: #667085;\n              min-width: 160px;\n            }\n            .ges-badge {\n              display: inline-block;\n              padding: 7px 10px;\n              border-radius: 999px;\n              font-weight: bold;\n              margin: 0 6px 10px 0;\n              font-size: 11px;\n            }\n            .ges-results {\n              display: grid;\n              grid-template-columns: repeat(2, 1fr);\n              gap: 10px;\n              margin: 12px 0;\n            }\n            .ges-result-card,\n            .ges-summary,\n            .ges-info,\n            .ges-note {\n              border: 1px solid #dbe6f3;\n              border-radius: 12px;\n              padding: 12px;\n              background: #ffffff;\n              page-break-inside: avoid;\n              break-inside: avoid;\n            }\n            .ges-result-card small {\n              display: block;\n              color: #667085;\n              margin-bottom: 5px;\n              font-size: 10px;\n            }\n            .ges-result-card strong {\n              color: #0A2C63;\n              font-size: 17px;\n              line-height: 1.2;\n            }\n            .ges-summary {\n              margin-top: 12px;\n              line-height: 1.55;\n            }\n            .ges-info {\n              background: #eef6ff;\n              color: #0A2C63;\n              margin-top: 12px;\n            }\n            .ges-note {\n              background: #fff7e6;\n              color: #7a5200;\n              margin-top: 12px;\n            }\n            .ges-cta,\n            .ges-actions,\n            button,\n            a.ges-btn {\n              display: none !important;\n            }\n            .ges-disclaimer {\n              margin-top: 16px;\n              font-size: 10px;\n              color: #667085;\n              line-height: 1.45;\n              border-top: 1px solid #e5e7eb;\n              padding-top: 10px;\n            }\n            .pdf-footer {\n              margin-top: 18px;\n              padding-top: 10px;\n              border-top: 1px solid #e5e7eb;\n              display: flex;\n              justify-content: space-between;\n              gap: 16px;\n              color: #667085;\n              font-size: 10px;\n            }\n            @media print {\n              body { -webkit-print-color-adjust: exact; print-color-adjust: exact; }\n            }\n          <\/style>\n        <\/head>\n        <body>\n          <div class=\"pdf-header\">\n            <div class=\"pdf-brand\">\n              ${logoUrl ? `<img decoding=\"async\" class=\"pdf-logo\" src=\"${logoUrl}\" alt=\"Alpsun Energy Logo\">` : `<div class=\"pdf-logo-fallback\">ALPSUN<\/div>`}\n              <div>\n                <h1>GES \u00d6n De\u011ferlendirme Raporu<\/h1>\n                <p>Adres, t\u00fcketim ve \u00e7at\u0131 bilgilerine g\u00f6re haz\u0131rlanm\u0131\u015f ilk analiz \u00e7\u0131kt\u0131s\u0131d\u0131r.<\/p>\n              <\/div>\n            <\/div>\n            <div class=\"pdf-meta\">\n              <strong>Rapor Tarihi<\/strong><br>${tarih}<br><br>\n              <strong>Alpsun Energy<\/strong><br>G\u00fcne\u015f Enerjisi Sistemleri\n            <\/div>\n          <\/div>\n\n          ${rapor}\n\n          <div class=\"pdf-footer\">\n            <span>Alpsun Energy<\/span>\n            <span>Teknik ke\u015fif ve proje tasar\u0131m\u0131 sonras\u0131 kesin de\u011ferler haz\u0131rlan\u0131r.<\/span>\n          <\/div>\n        <\/body>\n        <\/html>\n      `);\n      pdfWindow.document.close();\n\n      setTimeout(function(){\n        pdfWindow.focus();\n        pdfWindow.print();\n      }, 600);\n    };\n\n    function gesInit(){\n      window.gesMahalleleriGuncelle();\n      window.gesTesisTipiKontrol();\n    }\n    document.addEventListener(\"DOMContentLoaded\", gesInit);\n    window.addEventListener(\"load\", gesInit);\n    setTimeout(gesInit, 300);\n  <\/script>\n<\/div>\n\n\n<!-- Uydu harita ve \u00e7at\u0131 yerle\u015fim mod\u00fcl\u00fc -->\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet\/dist\/leaflet.css\">\n\n<div id=\"roof-pro-app\" style=\"display:none;\">\n  <div class=\"roof-shell\">\n    <div class=\"roof-hero\">\n      <div>\n        <span class=\"roof-pill\">Uydu destekli \u00f6n yerle\u015fim<\/span>\n        <h2>\u00c7at\u0131 Cephe & Panel Yerle\u015fim Mod\u00fcl\u00fc<\/h2>\n        <p>\u00c7at\u0131 cephelerini ayr\u0131 ayr\u0131 \u00e7izin, engelleri i\u015faretleyin, 600 W panelleri otomatik veya manuel yerle\u015ftirin.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"roof-body\">\n      <div class=\"roof-search-row\">\n        <input id=\"roofAddress\" type=\"text\" placeholder=\"\u00d6rn: Odunluk Nil\u00fcfer Bursa\">\n        <button onclick=\"roofAdresBul()\" class=\"roof-action roof-primary\">Adresi Bul<\/button>\n      <\/div>\n\n      <div class=\"roof-toolbar\">\n        <button onclick=\"roofModSec('face')\" id=\"btnModeFace\" class=\"roof-action roof-mode active\">\u25b1 Cephe \u00c7iz<\/button>\n        <button onclick=\"roofModSec('obstacle')\" id=\"btnModeObstacle\" class=\"roof-action roof-mode\">\u2298 Engel \u00c7iz<\/button>\n        <button onclick=\"roofModSec('panel')\" id=\"btnModePanel\" class=\"roof-action roof-mode\">\u25a3 Panel Ekle<\/button>\n        <button onclick=\"roofCizimiKaydet()\" class=\"roof-action roof-success\">\u2713 \u00c7izimi Kaydet<\/button>\n        <button onclick=\"roofSeciliCepheyiDoldur()\" class=\"roof-action roof-dark\">\u25a6 Se\u00e7ili Cepheyi Doldur<\/button>\n        <button onclick=\"roofSonNoktayiSil()\" class=\"roof-action roof-warning\">\u21b6 Son Noktay\u0131 Sil<\/button>\n        <button onclick=\"roofAktifCizimiSifirla()\" class=\"roof-action roof-soft\">Temizle<\/button>\n        <button onclick=\"roofTumunuSifirla()\" class=\"roof-action roof-danger\">T\u00fcm\u00fcn\u00fc S\u0131f\u0131rla<\/button>\n      <\/div>\n\n      <div class=\"roof-toolbar roof-panel-toolbar\">\n        <button onclick=\"roofSeciliPaneliAcisalDondur(-5)\" class=\"roof-action roof-soft\">\u21ba -5\u00b0<\/button>\n        <button onclick=\"roofSeciliPaneliAcisalDondur(5)\" class=\"roof-action roof-soft\">\u21bb +5\u00b0<\/button>\n        <button onclick=\"roofSeciliPaneliAcisalDondur(15)\" class=\"roof-action roof-soft\">+15\u00b0<\/button>\n        <label class=\"roof-angle-box\">Panel A\u00e7\u0131s\u0131\n          <input id=\"roofAngleInput\" type=\"number\" min=\"0\" max=\"359\" step=\"1\" value=\"0\" onchange=\"roofSeciliPanelAcisiniAyarla(this.value)\">\n        <\/label>\n        <button onclick=\"roofSeciliPaneliSil()\" class=\"roof-action roof-danger\">\u2715 Se\u00e7ili Paneli Sil<\/button>\n      <\/div>\n\n      <div class=\"roof-status\" id=\"roofStatus\">\n        Aktif mod: <strong>Cephe \u00c7iz<\/strong> \u2014 Haritada \u00e7at\u0131 cephesinin k\u00f6\u015felerine t\u0131klay\u0131n, sonra \u201c\u00c7izimi Kaydet\u201d deyin.\n      <\/div>\n\n      <div id=\"roofMap\"><\/div>\n\n      <div class=\"roof-panels-area\">\n        <div class=\"roof-panel-card\">\n          <h3>\u00c7izilen Cepheler<\/h3>\n          <div id=\"roofFacesList\" class=\"roof-list\"><\/div>\n        <\/div>\n\n        <div class=\"roof-panel-card\">\n          <h3>Toplam \u00d6n Yerle\u015fim<\/h3>\n          <div class=\"roof-total-grid\">\n            <div><small>Toplam Alan<\/small><strong id=\"roofTotalArea\">0 m\u00b2<\/strong><\/div>\n            <div><small>Panel Say\u0131s\u0131<\/small><strong id=\"roofTotalPanels\">0 adet<\/strong><\/div>\n            <div><small>Kurulu G\u00fc\u00e7<\/small><strong id=\"roofTotalKwp\">0 kWp<\/strong><\/div>\n            <div><small>Panel A\u011f\u0131rl\u0131\u011f\u0131<\/small><strong id=\"roofTotalWeight\">0 kg<\/strong><\/div>\n          <\/div>\n          <div class=\"roof-note\">\n            <strong>Panel kabul\u00fc:<\/strong> 600 W, 2278 \u00d7 1134 \u00d7 30 mm, 32 kg, glass-to-glass, 144 h\u00fccre.\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"roof-help\">\n        <strong>Kullan\u0131m:<\/strong> K\u00f6\u015fe noktalar\u0131 art\u0131k daha k\u00fc\u00e7\u00fck ve \u00e7izgiler daha incedir. Cepheyi istedi\u011finiz e\u011fimli formda \u00e7izebilirsiniz. Kaydedilen cephenin ilk \u00e7izgi a\u00e7\u0131s\u0131 panel yerle\u015fim a\u00e7\u0131s\u0131 olarak al\u0131n\u0131r. Paneli se\u00e7ip -5\u00b0 \/ +5\u00b0 veya say\u0131 kutusundan 0-359\u00b0 aras\u0131nda d\u00f6nd\u00fcrebilirsiniz.\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<style>\n  #roof-pro-app{max-width:1120px;margin:30px auto;font-family:Inter,Arial,sans-serif;color:#172033}\n  #roof-pro-app *{box-sizing:border-box}\n  #roof-pro-app .roof-shell{background:#fff;border-radius:24px;box-shadow:0 18px 45px rgba(10,44,99,.14);overflow:hidden;border:1px solid #e2e8f0}\n  #roof-pro-app .roof-hero{background:radial-gradient(circle at top right,rgba(32,178,107,.25),transparent 35%),linear-gradient(135deg,#0A2C63,#1157a5);color:#fff;padding:30px}\n  #roof-pro-app .roof-pill{display:inline-block;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);padding:7px 11px;border-radius:999px;font-size:13px;margin-bottom:12px}\n  #roof-pro-app .roof-hero h2{margin:0 0 8px;color:#fff;font-size:30px}\n  #roof-pro-app .roof-hero p{margin:0;color:#dbeafe;max-width:800px}\n  #roof-pro-app .roof-body{padding:22px;background:#f8fafc}\n  #roof-pro-app .roof-search-row{display:grid;grid-template-columns:1fr auto;gap:12px;margin-bottom:14px}\n  #roof-pro-app .roof-search-row input{padding:15px;border:1px solid #d8e0ea;border-radius:14px;font-size:15px;outline:none;background:#fff}\n  #roof-pro-app .roof-search-row input:focus{border-color:#0A2C63;box-shadow:0 0 0 3px rgba(10,44,99,.12)}\n  #roof-pro-app .roof-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}\n  #roof-pro-app .roof-panel-toolbar{padding:10px;background:#fff;border:1px solid #e2e8f0;border-radius:16px}\n  #roof-pro-app .roof-action{border:none;border-radius:13px;padding:12px 15px;font-weight:850;cursor:pointer;transition:.18s ease;box-shadow:0 6px 16px rgba(15,23,42,.08)}\n  #roof-pro-app .roof-action:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(15,23,42,.14)}\n  #roof-pro-app .roof-primary{background:#0A2C63;color:#fff}\n  #roof-pro-app .roof-success{background:#20B26B;color:#fff}\n  #roof-pro-app .roof-dark{background:#111827;color:#fff}\n  #roof-pro-app .roof-warning{background:#fff7e6;color:#7a5200}\n  #roof-pro-app .roof-soft{background:#e7edf5;color:#0A2C63}\n  #roof-pro-app .roof-danger{background:#fee2e2;color:#991b1b}\n  #roof-pro-app .roof-mode{background:#fff;color:#0A2C63;border:1px solid #d8e0ea}\n  #roof-pro-app .roof-mode.active{background:#0A2C63;color:#fff;border-color:#0A2C63}\n  #roof-pro-app .roof-angle-box{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid #d8e0ea;border-radius:13px;padding:8px 10px;color:#0A2C63;font-weight:800;font-size:13px}\n  #roof-pro-app .roof-angle-box input{width:74px;border:1px solid #d8e0ea;border-radius:10px;padding:8px;font-weight:800;color:#0A2C63;background:#fff}\n  #roof-pro-app .roof-status{background:#eef6ff;border:1px solid #bfdbfe;color:#0A2C63;border-radius:14px;padding:13px 14px;margin-bottom:14px;font-size:14px}\n  #roofMap{height:590px;border-radius:20px;border:1px solid #dbe6f3;overflow:hidden;background:#dbeafe}\n  #roof-pro-app .roof-panels-area{display:grid;grid-template-columns:1.1fr .9fr;gap:16px;margin-top:18px}\n  #roof-pro-app .roof-panel-card{background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:16px}\n  #roof-pro-app .roof-panel-card h3{margin:0 0 12px;color:#0A2C63}\n  #roof-pro-app .roof-list{display:grid;gap:10px}\n  #roof-pro-app .roof-face-item{border:1px solid #e2e8f0;border-radius:15px;padding:13px;background:#f8fafc;display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;cursor:pointer}\n  #roof-pro-app .roof-face-item.active{border-color:#20B26B;box-shadow:0 0 0 3px rgba(32,178,107,.15);background:#f0fdf4}\n  #roof-pro-app .roof-face-item strong{color:#0A2C63}\n  #roof-pro-app .roof-face-item small{color:#667085;line-height:1.5}\n  #roof-pro-app .roof-total-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}\n  #roof-pro-app .roof-total-grid div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:14px}\n  #roof-pro-app .roof-total-grid small{display:block;color:#667085;margin-bottom:6px}\n  #roof-pro-app .roof-total-grid strong{color:#0A2C63;font-size:21px}\n  #roof-pro-app .roof-note{margin-top:14px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:13px;color:#25324b;font-size:14px}\n  #roof-pro-app .roof-help{margin-top:16px;background:#eef6ff;border:1px solid #bfdbfe;color:#0A2C63;border-radius:14px;padding:14px;font-size:14px}\n  .roof-obstacle-label{background:#ef4444;color:#fff;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800;box-shadow:0 5px 12px rgba(239,68,68,.25)}\n  @media(max-width:768px){#roof-pro-app .roof-search-row,#roof-pro-app .roof-panels-area{grid-template-columns:1fr}#roof-pro-app .roof-total-grid{grid-template-columns:1fr}#roofMap{height:480px}}\n<\/style>\n\n<script src=\"https:\/\/unpkg.com\/leaflet\/dist\/leaflet.js\"><\/script>\n\n<script>\nlet roofMap;\nlet roofPoints = [];\nlet roofMarkers = [];\nlet roofActivePolygon = null;\nlet roofFaces = [];\nlet roofSelectedFaceId = null;\nlet roofFaceCounter = 1;\nlet roofMode = 'face';\nlet roofAddressMarker = null;\nlet roofSelectedPanel = null;\nlet roofPanelCounter = 1;\n\nconst PANEL_POWER_KWP = 0.60;\nconst PANEL_WIDTH_M = 1.134;\nconst PANEL_HEIGHT_M = 2.278;\nconst PANEL_AREA_M2 = PANEL_WIDTH_M * PANEL_HEIGHT_M;\nconst PANEL_WEIGHT_KG = 32;\nconst PANEL_GAP_M = 0.18;\n\nfunction roofInitMap(){\n  if(roofMap) return;\n\n  roofMap = L.map('roofMap').setView([40.1885, 29.0610], 18);\n  window.roofMap = roofMap;\n\n  L.tileLayer('https:\/\/server.arcgisonline.com\/ArcGIS\/rest\/services\/World_Imagery\/MapServer\/tile\/{z}\/{y}\/{x}', {\n    maxZoom: 19,\n    attribution: 'Tiles \u00a9 Esri'\n  }).addTo(roofMap);\n\n  roofMap.on('click', function(e){\n    if(roofMode === 'panel'){\n      roofManuelPanelEkle(e.latlng);\n      return;\n    }\n\n    roofPoints.push(e.latlng);\n    const color = roofMode === 'face' ? '#20B26B' : '#ef4444';\n\n    const marker = L.circleMarker(e.latlng, {\n      radius: 3,\n      color: '#fff',\n      weight: 1,\n      fillColor: color,\n      fillOpacity: 1\n    }).addTo(roofMap);\n\n    roofMarkers.push(marker);\n    roofAktifCizimiGuncelle();\n  });\n}\n\nfunction roofModSec(mode){\n  roofMode = mode;\n  roofAktifCizimiSifirla();\n\n  document.getElementById('btnModeFace').classList.toggle('active', mode === 'face');\n  document.getElementById('btnModeObstacle').classList.toggle('active', mode === 'obstacle');\n  document.getElementById('btnModePanel').classList.toggle('active', mode === 'panel');\n\n  const status = document.getElementById('roofStatus');\n  if(mode === 'face'){\n    status.innerHTML = 'Aktif mod: <strong>Cephe \u00c7iz<\/strong> \u2014 K\u00f6\u015fe noktalar\u0131 k\u00fc\u00e7\u00fck ve \u00e7izgiler incedir. \u00c7at\u0131y\u0131 e\u011fimli\/\u00e7okgen formda serbest\u00e7e \u00e7izebilirsiniz.';\n  } else if(mode === 'obstacle') {\n    status.innerHTML = 'Aktif mod: <strong>Engel \u00c7iz<\/strong> \u2014 \u00d6nce bir cephe se\u00e7in, sonra baca\/asans\u00f6r\/bo\u015fluk gibi engelin k\u00f6\u015felerini \u00e7izin ve kaydedin.';\n  } else {\n    status.innerHTML = 'Aktif mod: <strong>Panel Ekle<\/strong> \u2014 \u00d6nce cephe se\u00e7in, sonra \u00e7at\u0131 i\u00e7ine t\u0131klayarak tek tek panel ekleyin. Paneli se\u00e7ip 0-359\u00b0 d\u00f6nd\u00fcrebilirsiniz.';\n  }\n}\n\nfunction roofAktifCizimiGuncelle(){\n  if(roofActivePolygon) roofMap.removeLayer(roofActivePolygon);\n\n  if(roofPoints.length >= 3){\n    const color = roofMode === 'face' ? '#20B26B' : '#ef4444';\n    roofActivePolygon = L.polygon(roofPoints, {\n      color: color,\n      fillColor: color,\n      fillOpacity: roofMode === 'face' ? 0.16 : 0.28,\n      weight: 1.6,\n      dashArray: roofMode === 'obstacle' ? '4,4' : null\n    }).addTo(roofMap);\n  }\n}\n\nfunction roofCizimiKaydet(){\n  if(roofMode === 'face') roofCepheKaydet();\n  else if(roofMode === 'obstacle') roofEngelKaydet();\n  else alert('Panel Ekle modunda \u00e7izim kaydedilmez. Panel eklemek i\u00e7in haritada se\u00e7ili cepheye t\u0131klay\u0131n.');\n}\n\nfunction roofCepheKaydet(){\n  if(roofPoints.length < 3){ alert('Cephe kaydetmek i\u00e7in en az 3 nokta se\u00e7melisin.'); return; }\n\n  const area = roofAlanHesapla(roofPoints);\n  const usableRatio = 0.72;\n  const usableArea = area * usableRatio;\n  const panelCount = Math.max(0, Math.floor(usableArea \/ PANEL_AREA_M2));\n  const faceColor = roofRenkSec(roofFaceCounter);\n  const autoAngle = roofCepheAcisiHesapla(roofPoints);\n\n  const polygon = L.polygon(roofPoints, {\n    color: faceColor,\n    fillColor: faceColor,\n    fillOpacity: 0.18,\n    weight: 2\n  }).addTo(roofMap);\n\n  const faceId = Date.now();\n  polygon.on('click', function(e){\n    L.DomEvent.stopPropagation(e);\n    roofCepheSec(faceId);\n  });\n\n  const face = {\n    id: faceId,\n    name: 'Cephe ' + roofFaceCounter,\n    points: [...roofPoints],\n    area,\n    usableArea,\n    panelCount,\n    panelCountReal: 0,\n    angle: autoAngle,\n    polygon,\n    panelLayers: [],\n    panelItems: [],\n    obstacles: [],\n    color: faceColor\n  };\n\n  roofFaces.push(face);\n  roofSelectedFaceId = face.id;\n  roofFaceCounter++;\n\n  document.getElementById('roofAngleInput').value = Math.round(autoAngle);\n  roofAktifCizimiSifirla();\n  roofListeGuncelle();\n  roofToplamGuncelle();\n  roofVurgulaSeciliCephe();\n}\n\nfunction roofEngelKaydet(){\n  if(!roofSelectedFaceId){ alert('Engel kaydetmek i\u00e7in \u00f6nce bir cephe se\u00e7melisin.'); return; }\n  if(roofPoints.length < 3){ alert('Engel kaydetmek i\u00e7in en az 3 nokta se\u00e7melisin.'); return; }\n\n  const face = roofFaces.find(f => f.id === roofSelectedFaceId);\n  if(!face) return;\n\n  const obstacleArea = roofAlanHesapla(roofPoints);\n  const polygon = L.polygon(roofPoints, {\n    color:'#ef4444', fillColor:'#ef4444', fillOpacity:0.34, weight:1.6, dashArray:'4,4'\n  }).addTo(roofMap);\n\n  const center = L.latLngBounds(roofPoints).getCenter();\n  const label = L.marker(center, {icon:L.divIcon({className:'', html:'<div class=\"roof-obstacle-label\">Engel<\/div>', iconSize:[60,24], iconAnchor:[30,12]})}).addTo(roofMap);\n\n  face.obstacles.push({points:[...roofPoints], area:obstacleArea, polygon, label});\n  roofFacePanelleriniTemizle(face);\n  roofAktifCizimiSifirla();\n  roofListeGuncelle();\n  roofToplamGuncelle();\n}\n\nfunction roofFacePanelleriniTemizle(face){\n  face.panelItems.forEach(item => { if(item.group) roofMap.removeLayer(item.group); });\n  face.panelItems = [];\n  face.panelLayers = [];\n  face.panelCountReal = 0;\n  if(roofSelectedPanel && roofSelectedPanel.faceId === face.id) roofSelectedPanel = null;\n}\n\nfunction roofPanelKoseOlustur(center, orientation){\n  const ref = center;\n  const theta = roofDegToRad(orientation);\n  const u = {x: Math.sin(theta), y: Math.cos(theta)};      \/\/ panel uzun ekseni\n  const v = {x: Math.cos(theta), y: -Math.sin(theta)};     \/\/ panel k\u0131sa ekseni\n  const c = {x:0, y:0};\n  const halfH = PANEL_HEIGHT_M \/ 2;\n  const halfW = PANEL_WIDTH_M \/ 2;\n\n  const pts = [\n    {x: c.x - u.x*halfH - v.x*halfW, y: c.y - u.y*halfH - v.y*halfW},\n    {x: c.x - u.x*halfH + v.x*halfW, y: c.y - u.y*halfH + v.y*halfW},\n    {x: c.x + u.x*halfH + v.x*halfW, y: c.y + u.y*halfH + v.y*halfW},\n    {x: c.x + u.x*halfH - v.x*halfW, y: c.y + u.y*halfH - v.y*halfW}\n  ];\n\n  return pts.map(p => roofXYToLatLng(p.x, p.y, ref));\n}\n\nfunction roofPanelUygunMu(corners, face){\n  const tumKoseIceride = corners.every(p => roofPointInPolygon(p, face.points));\n  if(!tumKoseIceride) return false;\n  if(roofPanelEngelleKesisiyor(corners, face)) return false;\n  return true;\n}\n\nfunction roofPanelLayerOlustur(corners, selected){\n  const outline = L.polygon(corners, {\n    color: selected ? '#20B26B' : '#f8fafc',\n    weight: selected ? 3 : 1,\n    fillColor: '#0b1220',\n    fillOpacity: 0.90\n  });\n\n  const layers = [outline];\n  const a = corners[0], b = corners[1], c = corners[2], d = corners[3];\n\n  \/\/ H\u00fccre \u00e7izgileri: 6 dikey, 4 yatay gibi g\u00f6rsel doku\n  for(let i=1;i<6;i++){\n    const t = i\/6;\n    layers.push(L.polyline([roofInterp(a,b,t), roofInterp(d,c,t)], {color:'rgba(255,255,255,.38)', weight:.55, interactive:false}));\n  }\n  for(let j=1;j<4;j++){\n    const t = j\/4;\n    layers.push(L.polyline([roofInterp(a,d,t), roofInterp(b,c,t)], {color:'rgba(255,255,255,.28)', weight:.55, interactive:false}));\n  }\n  layers.push(L.polyline([roofInterp(a,d,.5), roofInterp(b,c,.5)], {color:'rgba(255,255,255,.60)', weight:1, interactive:false}));\n\n  const group = L.layerGroup(layers).addTo(roofMap);\n  return {group, outline, layers};\n}\n\nfunction roofPanelOlustur(face, center, orientation){\n  const angle = roofNormalizeDeg(orientation);\n  const corners = roofPanelKoseOlustur(center, angle);\n  if(!roofPanelUygunMu(corners, face)) return null;\n\n  const panelId = roofPanelCounter++;\n  const visual = roofPanelLayerOlustur(corners, false);\n  const item = { id: panelId, center, orientation: angle, corners, group: visual.group, outline: visual.outline, cellLayers: visual.layers };\n\n  visual.outline.on('click', function(e){\n    L.DomEvent.stopPropagation(e);\n    roofPanelSec(face.id, panelId);\n  });\n\n  face.panelItems.push(item);\n  face.panelLayers.push(visual.group);\n  face.panelCountReal = face.panelItems.length;\n  return item;\n}\n\nfunction roofManuelPanelEkle(latlng){\n  const face = roofFaces.find(f => f.id === roofSelectedFaceId);\n  if(!face){ alert('Panel eklemek i\u00e7in \u00f6nce bir cephe se\u00e7.'); return; }\n\n  const angleInput = Number(document.getElementById('roofAngleInput').value);\n  const angle = Number.isFinite(angleInput) ? angleInput : face.angle;\n  const item = roofPanelOlustur(face, latlng, angle);\n\n  if(!item){ alert('Panel bu noktaya s\u0131\u011fm\u0131yor. Panelin tamam\u0131 se\u00e7ili cephe i\u00e7inde ve engellerden uzak olmal\u0131.'); return; }\n\n  roofPanelSec(face.id, item.id);\n  roofListeGuncelle();\n  roofToplamGuncelle();\n}\n\nfunction roofPanelSec(faceId, panelId){\n  roofSelectedPanel = {faceId, panelId};\n  roofFaces.forEach(face => {\n    face.panelItems.forEach(item => {\n      const selected = face.id === faceId && item.id === panelId;\n      item.outline.setStyle({ color: selected ? '#20B26B' : '#f8fafc', weight: selected ? 3 : 1, fillOpacity: selected ? .96 : .90 });\n      if(selected){\n        document.getElementById('roofAngleInput').value = Math.round(item.orientation);\n        item.group.eachLayer(layer => { if(layer.bringToFront) layer.bringToFront(); });\n      }\n    });\n  });\n}\n\nfunction roofSeciliPaneliSil(){\n  if(!roofSelectedPanel){ alert('\u00d6nce silmek i\u00e7in bir panel se\u00e7.'); return; }\n  const face = roofFaces.find(f => f.id === roofSelectedPanel.faceId);\n  if(!face) return;\n\n  const index = face.panelItems.findIndex(p => p.id === roofSelectedPanel.panelId);\n  if(index === -1) return;\n\n  const item = face.panelItems[index];\n  roofMap.removeLayer(item.group);\n  face.panelItems.splice(index, 1);\n  face.panelLayers = face.panelItems.map(p => p.group);\n  face.panelCountReal = face.panelItems.length;\n  roofSelectedPanel = null;\n  roofListeGuncelle();\n  roofToplamGuncelle();\n}\n\nfunction roofSeciliPaneliAcisalDondur(delta){\n  if(!roofSelectedPanel){ alert('\u00d6nce d\u00f6nd\u00fcrmek i\u00e7in bir panel se\u00e7.'); return; }\n  const face = roofFaces.find(f => f.id === roofSelectedPanel.faceId);\n  if(!face) return;\n  const item = face.panelItems.find(p => p.id === roofSelectedPanel.panelId);\n  if(!item) return;\n  roofPanelAcisiniUygula(face, item, item.orientation + delta);\n}\n\nfunction roofSeciliPanelAcisiniAyarla(value){\n  if(!roofSelectedPanel) return;\n  const face = roofFaces.find(f => f.id === roofSelectedPanel.faceId);\n  if(!face) return;\n  const item = face.panelItems.find(p => p.id === roofSelectedPanel.panelId);\n  if(!item) return;\n  roofPanelAcisiniUygula(face, item, Number(value));\n}\n\nfunction roofPanelAcisiniUygula(face, item, angle){\n  const newAngle = roofNormalizeDeg(angle);\n  const newCorners = roofPanelKoseOlustur(item.center, newAngle);\n  if(!roofPanelUygunMu(newCorners, face)){\n    alert('Panel bu a\u00e7\u0131yla cephe d\u0131\u015f\u0131na veya engele denk geliyor. Daha k\u00fc\u00e7\u00fck a\u00e7\u0131 deneyin.');\n    document.getElementById('roofAngleInput').value = Math.round(item.orientation);\n    return;\n  }\n\n  roofMap.removeLayer(item.group);\n  const visual = roofPanelLayerOlustur(newCorners, true);\n  visual.outline.on('click', function(e){ L.DomEvent.stopPropagation(e); roofPanelSec(face.id, item.id); });\n  item.orientation = newAngle;\n  item.corners = newCorners;\n  item.group = visual.group;\n  item.outline = visual.outline;\n  item.cellLayers = visual.layers;\n  document.getElementById('roofAngleInput').value = Math.round(newAngle);\n  roofPanelSec(face.id, item.id);\n}\n\nfunction roofSeciliCepheyiDoldur(){\n  const face = roofFaces.find(f => f.id === roofSelectedFaceId);\n  if(!face){ alert('\u00d6nce bir cephe se\u00e7.'); return; }\n\n  roofFacePanelleriniTemizle(face);\n\n  const ref = roofPoligonMerkezi(face.points);\n  const theta = roofDegToRad(face.angle);\n  const u = {x: Math.sin(theta), y: Math.cos(theta)};      \/\/ uzun eksen\n  const v = {x: Math.cos(theta), y: -Math.sin(theta)};     \/\/ k\u0131sa eksen\n  const polyXY = face.points.map(p => roofLatLngToXY(p, ref));\n\n  let minU = Infinity, maxU = -Infinity, minV = Infinity, maxV = -Infinity;\n  polyXY.forEach(p => {\n    const pu = p.x*u.x + p.y*u.y;\n    const pv = p.x*v.x + p.y*v.y;\n    minU = Math.min(minU, pu); maxU = Math.max(maxU, pu);\n    minV = Math.min(minV, pv); maxV = Math.max(maxV, pv);\n  });\n\n  const stepU = PANEL_HEIGHT_M + PANEL_GAP_M;\n  const stepV = PANEL_WIDTH_M + PANEL_GAP_M;\n  let placed = 0;\n  const maxPanels = Math.min(face.panelCount, 300);\n\n  for(let pu = minU + PANEL_HEIGHT_M\/2; pu <= maxU - PANEL_HEIGHT_M\/2; pu += stepU){\n    for(let pv = minV + PANEL_WIDTH_M\/2; pv <= maxV - PANEL_WIDTH_M\/2; pv += stepV){\n      if(placed >= maxPanels) break;\n      const x = pu*u.x + pv*v.x;\n      const y = pu*u.y + pv*v.y;\n      const center = roofXYToLatLng(x, y, ref);\n      const item = roofPanelOlustur(face, center, face.angle);\n      if(item) placed++;\n    }\n  }\n\n  face.panelsDrawn = true;\n  face.panelCountReal = face.panelItems.length;\n  roofListeGuncelle();\n  roofToplamGuncelle();\n\n  if(placed === 0){\n    alert('Bu cephede panel yerle\u015fimi i\u00e7in yeterli d\u00fczg\u00fcn alan bulunamad\u0131. Cepheyi biraz daha geni\u015f \u00e7izmeyi veya engelleri kontrol etmeyi dene.');\n  }\n}\n\nfunction roofListeGuncelle(){\n  const list = document.getElementById('roofFacesList');\n  if(!list) return;\n  if(roofFaces.length === 0){ list.innerHTML = '<div style=\"color:#667085;\">Hen\u00fcz cephe \u00e7izilmedi.<\/div>'; return; }\n\n  list.innerHTML = roofFaces.map(face => {\n    const active = face.id === roofSelectedFaceId ? 'active' : '';\n    const panelCountShown = face.panelItems.length || face.panelCountReal || 0;\n    const kwp = panelCountShown * PANEL_POWER_KWP;\n    const weight = panelCountShown * PANEL_WEIGHT_KG;\n    const obstacleCount = face.obstacles.length;\n    return `\n      <div class=\"roof-face-item ${active}\" onclick=\"roofCepheSec(${face.id})\">\n        <div>\n          <strong>${face.name}<\/strong><br>\n          <small>Alan: ${face.area.toFixed(1)} m\u00b2 \u00b7 A\u00e7\u0131: ${Math.round(face.angle)}\u00b0 \u00b7 Engel: ${obstacleCount} \u00b7 Yerle\u015fen panel: ${panelCountShown} adet \u00b7 G\u00fc\u00e7: ${kwp.toFixed(1)} kWp \u00b7 A\u011f\u0131rl\u0131k: ${weight} kg<\/small>\n        <\/div>\n        <button onclick=\"event.stopPropagation(); roofCepheSil(${face.id})\" class=\"roof-action roof-danger\">Sil<\/button>\n      <\/div>`;\n  }).join('');\n}\n\nfunction roofCepheSec(id){\n  roofSelectedFaceId = id;\n  const face = roofFaces.find(f => f.id === id);\n  if(face) document.getElementById('roofAngleInput').value = Math.round(face.angle);\n  roofListeGuncelle();\n  roofVurgulaSeciliCephe();\n}\n\nfunction roofVurgulaSeciliCephe(){\n  roofFaces.forEach(face => {\n    const selected = face.id === roofSelectedFaceId;\n    face.polygon.setStyle({weight:selected ? 3 : 2, fillOpacity:selected ? 0.28 : 0.18});\n    if(selected) face.polygon.bringToFront();\n  });\n}\n\nfunction roofCepheSil(id){\n  const index = roofFaces.findIndex(f => f.id === id);\n  if(index === -1) return;\n  const face = roofFaces[index];\n  if(face.polygon) roofMap.removeLayer(face.polygon);\n  face.panelItems.forEach(item => { if(item.group) roofMap.removeLayer(item.group); });\n  face.obstacles.forEach(o => { if(o.polygon) roofMap.removeLayer(o.polygon); if(o.label) roofMap.removeLayer(o.label); });\n  roofFaces.splice(index, 1);\n  roofSelectedFaceId = roofFaces.length ? roofFaces[0].id : null;\n  roofSelectedPanel = null;\n  roofListeGuncelle(); roofToplamGuncelle(); roofVurgulaSeciliCephe();\n}\n\nfunction roofToplamGuncelle(){\n  let totalArea = 0, totalPanels = 0;\n  roofFaces.forEach(face => { totalArea += face.area; totalPanels += face.panelItems.length || face.panelCountReal || 0; });\n  document.getElementById('roofTotalArea').innerText = totalArea.toFixed(1) + ' m\u00b2';\n  document.getElementById('roofTotalPanels').innerText = totalPanels + ' adet';\n  document.getElementById('roofTotalKwp').innerText = (totalPanels * PANEL_POWER_KWP).toFixed(1) + ' kWp';\n  document.getElementById('roofTotalWeight').innerText = (totalPanels * PANEL_WEIGHT_KG).toFixed(0) + ' kg';\n  window.roofAnalysisData = {\n    totalArea: totalArea,\n    totalPanels: totalPanels,\n    totalKwp: totalPanels * PANEL_POWER_KWP,\n    totalWeight: totalPanels * PANEL_WEIGHT_KG,\n    faceCount: roofFaces.length\n  };\n}\n\nfunction roofAktifCizimiSifirla(){\n  roofPoints = [];\n  roofMarkers.forEach(m => roofMap.removeLayer(m));\n  roofMarkers = [];\n  if(roofActivePolygon){ roofMap.removeLayer(roofActivePolygon); roofActivePolygon = null; }\n}\n\nfunction roofTumunuSifirla(){\n  roofAktifCizimiSifirla();\n  roofFaces.forEach(face => {\n    if(face.polygon) roofMap.removeLayer(face.polygon);\n    face.panelItems.forEach(item => { if(item.group) roofMap.removeLayer(item.group); });\n    face.obstacles.forEach(o => { if(o.polygon) roofMap.removeLayer(o.polygon); if(o.label) roofMap.removeLayer(o.label); });\n  });\n  roofFaces = []; roofSelectedFaceId = null; roofSelectedPanel = null; roofFaceCounter = 1;\n  roofListeGuncelle(); roofToplamGuncelle();\n}\n\nfunction roofSonNoktayiSil(){\n  if(roofPoints.length === 0) return;\n  roofPoints.pop();\n  const lastMarker = roofMarkers.pop();\n  if(lastMarker) roofMap.removeLayer(lastMarker);\n  if(roofActivePolygon){ roofMap.removeLayer(roofActivePolygon); roofActivePolygon = null; }\n  roofAktifCizimiGuncelle();\n}\n\nfunction roofAdresBul(){\n  const adres = document.getElementById('roofAddress').value.trim();\n  if(!adres){ alert('L\u00fctfen adres veya mahalle bilgisi girin.'); return; }\n  const query = encodeURIComponent(adres + ', Bursa, T\u00fcrkiye');\n  fetch('https:\/\/nominatim.openstreetmap.org\/search?format=json&q=' + query)\n    .then(res => res.json())\n    .then(data => {\n      if(!data || !data.length){ alert('Adres bulunamad\u0131. Daha detayl\u0131 adres yazmay\u0131 deneyin.'); return; }\n      const lat = parseFloat(data[0].lat), lon = parseFloat(data[0].lon);\n      roofMap.setView([lat, lon], 19);\n      roofAktifCizimiSifirla();\n      if(roofAddressMarker) roofMap.removeLayer(roofAddressMarker);\n      roofAddressMarker = L.marker([lat, lon]).addTo(roofMap).bindPopup('Adres konumu').openPopup();\n    })\n    .catch(() => alert('Adres arama s\u0131ras\u0131nda hata olu\u015ftu.'));\n}\n\nfunction roofAlanHesapla(points){\n  const earthRadius = 6378137;\n  const lat0 = points[0].lat * Math.PI \/ 180;\n  const coords = points.map(p => ({x:earthRadius * p.lng * Math.PI \/ 180 * Math.cos(lat0), y:earthRadius * p.lat * Math.PI \/ 180}));\n  let area = 0;\n  for(let i=0; i<coords.length; i++){ const j = (i + 1) % coords.length; area += coords[i].x * coords[j].y; area -= coords[j].x * coords[i].y; }\n  return Math.abs(area \/ 2);\n}\n\nfunction roofPointInPolygon(point, polygon){\n  const x = point.lng, y = point.lat;\n  let inside = false;\n  for(let i=0, j=polygon.length-1; i<polygon.length; j=i++){\n    const xi = polygon[i].lng, yi = polygon[i].lat;\n    const xj = polygon[j].lng, yj = polygon[j].lat;\n    const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) \/ ((yj - yi) || 0.0000001) + xi);\n    if(intersect) inside = !inside;\n  }\n  return inside;\n}\n\nfunction roofPanelEngelleKesisiyor(panelCorners, face){\n  const engeller = face.obstacles || [];\n  if(!engeller.length) return false;\n  const center = L.latLng(panelCorners.reduce((sum,p)=>sum+p.lat,0) \/ panelCorners.length, panelCorners.reduce((sum,p)=>sum+p.lng,0) \/ panelCorners.length);\n  for(const engel of engeller){\n    const engelPoints = engel.points || engel;\n    if(roofPointInPolygon(center, engelPoints)) return true;\n    for(const corner of panelCorners){ if(roofPointInPolygon(corner, engelPoints)) return true; }\n  }\n  return false;\n}\n\nfunction roofRenkSec(n){\n  const colors = ['#20B26B','#0A2C63','#f59e0b','#ef4444','#8b5cf6','#06b6d4'];\n  return colors[(n - 1) % colors.length];\n}\n\nfunction roofDegToRad(deg){ return deg * Math.PI \/ 180; }\nfunction roofNormalizeDeg(deg){ return ((Number(deg) % 360) + 360) % 360; }\nfunction roofMetreToLat(metre){ return metre \/ 111320; }\nfunction roofMetreToLng(metre, lat){ return metre \/ (111320 * Math.cos(lat * Math.PI \/ 180)); }\nfunction roofLatLngToXY(p, ref){ return {x:(p.lng - ref.lng) * 111320 * Math.cos(ref.lat * Math.PI \/ 180), y:(p.lat - ref.lat) * 111320}; }\nfunction roofXYToLatLng(x, y, ref){ return L.latLng(ref.lat + y \/ 111320, ref.lng + x \/ (111320 * Math.cos(ref.lat * Math.PI \/ 180))); }\nfunction roofInterp(a,b,t){ return L.latLng(a.lat + (b.lat-a.lat)*t, a.lng + (b.lng-a.lng)*t); }\nfunction roofPoligonMerkezi(points){\n  return L.latLng(points.reduce((s,p)=>s+p.lat,0)\/points.length, points.reduce((s,p)=>s+p.lng,0)\/points.length);\n}\nfunction roofCepheAcisiHesapla(points){\n  if(points.length < 2) return 0;\n  const ref = points[0];\n  const p1 = roofLatLngToXY(points[0], ref);\n  const p2 = roofLatLngToXY(points[1], ref);\n  const dx = p2.x - p1.x;\n  const dy = p2.y - p1.y;\n  return roofNormalizeDeg(Math.atan2(dx, dy) * 180 \/ Math.PI);\n}\n\nsetTimeout(function(){ roofInitMap(); roofListeGuncelle(); roofToplamGuncelle(); }, 500);\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\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>GES Analiz Arac\u0131 G\u00fcne\u015f Enerjisi Potansiyelinizi \u00d6\u011frenin Bursa GES \u00d6n Analiz Arac\u0131 Adres, t\u00fcketim, tesis tipi ve \u00e7at\u0131 bilgilerinize g\u00f6re tahmini sistem g\u00fcc\u00fc, y\u0131ll\u0131k \u00fcretim ve uygunluk \u00f6n de\u011ferlendirmesini hesaplay\u0131n. 1. Konum Bilgisi \u0130l\u00e7e ve mahalle bilgisiyle b\u00f6lgesel g\u00fcne\u015flenme verisini hesaplamaya dahil ediyoruz. \u0130l\u00e7e Nil\u00fcferOsmangaziY\u0131ld\u0131r\u0131mMudanyaGemlikKaracabey\u0130neg\u00f6lMustafakemalpa\u015faDi\u011fer Bursa \u0130l\u00e7esi Mahalle \/ B\u00f6lge Mahalle se\u00e7in A\u00e7\u0131k Adres Devam [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","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":"disabled","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-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":"","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-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":"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":""},"mobile":{"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":""}},"_joinchat":[],"footnotes":""},"class_list":["post-2125","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.alpsunenergy.com\/en\/wp-json\/wp\/v2\/pages\/2125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alpsunenergy.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.alpsunenergy.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.alpsunenergy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alpsunenergy.com\/en\/wp-json\/wp\/v2\/comments?post=2125"}],"version-history":[{"count":46,"href":"https:\/\/www.alpsunenergy.com\/en\/wp-json\/wp\/v2\/pages\/2125\/revisions"}],"predecessor-version":[{"id":2175,"href":"https:\/\/www.alpsunenergy.com\/en\/wp-json\/wp\/v2\/pages\/2125\/revisions\/2175"}],"wp:attachment":[{"href":"https:\/\/www.alpsunenergy.com\/en\/wp-json\/wp\/v2\/media?parent=2125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}