{"id":3428,"date":"2026-09-01T21:22:26","date_gmt":"2026-09-01T21:22:26","guid":{"rendered":"https:\/\/bfta.com.tr\/3b-koyu-2\/"},"modified":"2026-09-15T12:40:30","modified_gmt":"2026-09-15T12:40:30","slug":"kadikoy-kentsel-donusumu","status":"publish","type":"page","link":"https:\/\/bfta.com.tr\/en\/kadikoy-kentsel-donusumu\/","title":{"rendered":"Kad\u0131k\u00f6y&#8217;de Kentsel D\u00f6n\u00fc\u015f\u00fcm"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3428\" class=\"elementor elementor-3428 elementor-bc-flex-widget\" id=\"content\" role=\"main\" tabindex=\"-1\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-kdk1001 e-con-full e-flex e-con e-parent\" data-id=\"kdk1001\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-kdk4400 elementor-widget elementor-widget-html\" data-id=\"kdk4400\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.kd3b{\n  --kara:#F2F1EE; --deniz:#D6E4EC; --govde:#3A3733; --kunye:#8E8B87;\n  --dis:#E3E2DE; --isaret:#A9584A; --kirik:#F6F5F3;\n  --unica:\"neue-haas-unica\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;\n  --serif:\"Newsreader Motto\",Georgia,\"Times New Roman\",serif;\n  position:relative; overflow:hidden; background:var(--kara);\n  font-family:var(--unica); color:var(--govde); -webkit-font-smoothing:antialiased;\n  line-height:1.4;\n}\n\n\n.kd3b .yazi{position:absolute;z-index:4;left:28px;top:70px;width:470px;\n  max-width:calc(100% - 56px);max-height:calc(100% - 195px);\n  overflow-y:auto;overscroll-behavior:contain;\n  \n  background:rgba(246,245,243,.10);\n  -webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);\n  border:0;padding:24px 26px 26px}\n.kd3b .yazi h1{font-family:var(--serif);font-weight:500;font-size:26px;line-height:1.16;\n  letter-spacing:-0.012em;margin:0 0 18px;color:var(--govde);font-synthesis:none}\n.kd3b .yazi h2{font-family:var(--serif);font-weight:500;font-size:18px;line-height:1.27;\n  letter-spacing:-0.007em;margin:26px 0 9px;color:var(--govde);font-synthesis:none}\n.kd3b .yazi p{font-family:var(--unica);font-weight:400;font-size:13.5px;line-height:1.62;\n  margin:0 0 12px;color:#4A4744}\n.kd3b .yazi p:last-child{margin-bottom:0}\n\n.kd3b .yazi a{font-family:var(--unica);color:var(--govde);\n  text-decoration:underline;text-decoration-thickness:1px;\n  text-underline-offset:2px;text-decoration-color:rgba(58,55,51,.35);\n  transition:color .15s,text-decoration-color .15s}\n.kd3b .yazi a:hover{color:var(--isaret);text-decoration-color:var(--isaret)}\n.kd3b .yazi::-webkit-scrollbar{width:9px}\n.kd3b .yazi::-webkit-scrollbar-thumb{background:#DCD8D4;border-radius:5px}\n.kd3b .harita{position:absolute;top:0;left:0;width:100%;height:100%}\n.kd3b *{box-sizing:border-box}\n\n.kd3b .sahne{position:absolute;top:0;left:0;width:100%;height:100%;display:block;\n  cursor:grab;touch-action:none}\n.kd3b .sahne.tut{cursor:grabbing}\n\n\n\n.kd3b .kumanda{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:20px 28px 28px;\n  background:linear-gradient(to top,var(--bant,rgba(242,241,238,.95)) 0%,var(--bant,rgba(242,241,238,.95)) 62%,rgba(242,241,238,0) 100%)}\n.kd3b .mahaller{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:0}\n\n.kd3b .atif{position:absolute;right:16px;bottom:6px;z-index:4;text-align:right;\n  font-family:var(--unica);font-size:11px;letter-spacing:.04em;line-height:1.4;\n  color:var(--kunye);opacity:.75;pointer-events:none}\n.kd3b button{font-family:inherit;font-size:12px;letter-spacing:.05em;color:var(--govde);\n  background:#fff;border:1px solid var(--dis);border-radius:2px;padding:7px 13px;\n  cursor:pointer;line-height:1.2;\n  transition:border-color .18s,color .18s,background .18s}\n.kd3b button:hover{border-color:var(--kunye)}\n.kd3b button.acik{border-color:var(--isaret);color:var(--isaret)}\n.kd3b button.secili{background:var(--isaret);border-color:var(--isaret);color:#fff}\n\n.kd3b .mahaller button{font-family:var(--unica);font-weight:400;\n  font-size:13px;letter-spacing:.03em;padding:6px 11px}\n.kd3b .mahaller button .adet{opacity:.55;margin-left:5px;font-variant-numeric:tabular-nums}\n\n.kd3b .mahaller button .leke{display:inline-block;width:8px;height:8px;border-radius:2px;\n  margin-right:6px;vertical-align:baseline;opacity:.85}\n.kd3b .mahaller button.secili .leke{opacity:1;box-shadow:0 0 0 1.5px rgba(255,255,255,.9)}\n.kd3b .zamanKap{display:flex;align-items:center;gap:10px;flex:1;min-width:190px}\n.kd3b .zaman{flex:1;-webkit-appearance:none;appearance:none;height:1px;\n  background:var(--kunye);outline:none;opacity:.6;padding:0;margin:0}\n.kd3b .zaman::-webkit-slider-thumb{-webkit-appearance:none;width:11px;height:11px;\n  border-radius:50%;background:var(--isaret);cursor:pointer}\n.kd3b .zaman::-moz-range-thumb{width:11px;height:11px;border:0;border-radius:50%;\n  background:var(--isaret);cursor:pointer}\n.kd3b .etiket{font-size:11px;color:var(--kunye);letter-spacing:.08em;\n  text-transform:uppercase;white-space:nowrap}\n\n\n.kd3b .balon{position:absolute;z-index:9;width:268px;max-width:calc(100% - 24px);\n  background:#E4E0DC;\n  border:1px solid rgba(0,0,0,.06);padding:0;pointer-events:none;opacity:0;\n  transform:translateY(6px);font-size:12px;line-height:1.45;overflow:hidden;\n  transition:opacity .22s ease-out,transform .28s cubic-bezier(.22,1,.36,1);\n  box-shadow:0 4px 22px rgba(58,55,51,.13)}\n.kd3b .balon.gel{transform:translateY(0)}\n\n.kd3b .balon .gor{display:block;width:100%;height:auto;background:#dcd8d4;margin:0;\n  opacity:0;transition:opacity .16s ease-out}\n\n.kd3b .balon .pmetin{padding:22px 16px 12px;display:flex;flex-direction:column;gap:4px}\n.kd3b .balon .ad{\n  font-family:\"Newsreader Motto\",Georgia,\"Times New Roman\",serif;\n  font-weight:500;font-size:21px;line-height:1.27;letter-spacing:-0.007em;\n  color:var(--govde);font-synthesis:none;word-spacing:normal}\n.kd3b .balon .isv{\n  font-family:var(--unica);font-weight:400;font-size:13px;line-height:19.5px;\n  letter-spacing:normal;color:var(--kunye);font-style:normal;display:block}\n.kd3b .balon .mh{display:none}\n\n\n.kd3b .yazi details.devam{margin:-12px 0 0}\n.kd3b .yazi details.devam summary{list-style:none;cursor:pointer;\n  display:inline-flex;align-items:center;gap:8px;font-family:var(--unica);\n  font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;\n  color:var(--kunye);padding:0;min-height:40px;\n  -webkit-tap-highlight-color:transparent}\n.kd3b .yazi details.devam summary::-webkit-details-marker{display:none}\n.kd3b .yazi .art{display:inline-block;width:11px;height:11px;position:relative;\n  opacity:.7;flex:none}\n.kd3b .yazi .art:before,.kd3b .yazi .art:after{content:\"\";position:absolute;\n  background:currentColor}\n.kd3b .yazi .art:before{left:0;right:0;top:5px;height:1px}\n.kd3b .yazi .art:after{top:0;bottom:0;left:5px;width:1px}\n.kd3b .yazi details.devam[open] summary .art:after{display:none}\n.kd3b .yazi details.devam[open] summary .kapali,\n.kd3b .yazi details.devam:not([open]) summary .acikm{display:none}\n.kd3b .yazi details.devam .metin{padding-top:6px}\n@media(min-width:1025px){.kd3b .yazi details.devam>summary{display:none}}\n\n.kd3b .balon .detay{pointer-events:auto;display:inline-block;margin-top:8px;\n  font-family:var(--unica);font-size:12px;letter-spacing:.04em;\n  color:var(--isaret);text-decoration:none;\n  border-bottom:1px solid currentColor;padding-bottom:1px}\n.kd3b .balon .detay[hidden]{display:none}\n\n\n.kd3b .arac{position:absolute;z-index:6;right:16px;top:calc(var(--hdrAlt,0px) + 16px);\n  display:flex;flex-direction:column;align-items:flex-end;gap:8px}\n.kd3b .arac button{display:inline-flex;align-items:center;justify-content:center;\n  height:44px;min-width:44px;padding:0 15px;border-radius:22px;margin:0;\n  font-family:var(--unica);font-weight:400;font-size:12px;letter-spacing:.08em;\n  text-transform:uppercase;line-height:1;cursor:pointer;\n  background:rgba(246,245,243,.88);color:var(--govde);border:1px solid rgba(0,0,0,.12);\n  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}\n.kd3b .arac .kuzey{width:44px;padding:0}\n.kd3b .arac .kuzey svg{display:block;will-change:transform}\n.kd3b .arac button:hover{border-color:var(--isaret);color:var(--isaret)}\n.kd3b .arac button.acik{background:var(--isaret);border-color:var(--isaret);color:#fff}\n@media(max-width:900px){\n  .kd3b .arac{top:auto;right:12px;bottom:calc(78px + env(safe-area-inset-bottom,0px))}\n  .kd3b .arac button{height:40px;min-width:40px;font-size:11px}\n  .kd3b .arac .kuzey{width:40px}\n}\n.kd3b .olcum{position:absolute;right:13px;top:13px;z-index:3;font-size:10px;\n  color:var(--kunye);opacity:.45;letter-spacing:.05em;text-align:right;\n  line-height:1.6;font-variant-numeric:tabular-nums;pointer-events:none}\n\n\n@media(max-width:900px){\n  .kd3b .yazi{left:16px;top:34px;width:auto;right:16px;\n    max-width:none;max-height:42%;padding:18px 18px 20px}\n  .kd3b .yazi h1{font-size:22px;margin-bottom:14px}\n  .kd3b .yazi p{font-size:13px;line-height:1.58}\n}\n@media(max-width:700px){\n  .kd3b .kumanda{padding:15px 15px 22px}\n  .kd3b .mahaller button{font-size:10px;padding:5px 9px}\n  .kd3b .olcum{display:none}\n}\n\n\n.kd3b .listeyeDon svg{display:block}\n\n\n.kd3b .balon .ad a.adbag{color:inherit;pointer-events:auto;cursor:pointer;\n  text-decoration:underline;text-decoration-thickness:1px;\n  text-underline-offset:3px;text-decoration-color:rgba(242,241,238,.45);\n  padding:8px 0}\n.kd3b .balon .ad a.adbag:hover{text-decoration-color:currentColor}\n\n\n@media(min-width:1025px) and (max-height:945px){\n  .kd3b .yazi{width:515px}\n}\n@media(min-width:1025px) and (max-height:905px){\n  .kd3b .yazi{width:550px}\n}\n\n\n.kd3b{\n  --kara:#22242A; --deniz:#171B22; --govde:#E7E5E1; --kunye:#9A9691;\n  --dis:#343841; --isaret:#C9704F; --kirik:#1B1D22;\n  color:var(--govde);\n}\n\n.kd3b .yazi{background:rgba(27,29,34,.42);border-right-color:var(--dis)}\n.kd3b .yazi h1,.kd3b .yazi h2{color:#F2F1EE}\n.kd3b .yazi p{color:#C3BFBA}\n.kd3b .yazi::-webkit-scrollbar-thumb{background:#3A3E45}\n\n\n.kd3b .baslik{background:linear-gradient(to bottom,rgba(34,36,42,.94),rgba(34,36,42,0))}\n.kd3b .kumanda{background:linear-gradient(to top,\n  var(--bant,rgba(34,36,42,.95)) 0%,\n  var(--bant,rgba(34,36,42,.95)) 62%,\n  rgba(34,36,42,0) 100%)}\n.kd3b .baslik h2{color:#F2F1EE}\n\n.kd3b button{background:#2A2D34;border-color:var(--dis);color:#D8D4CF}\n.kd3b button:hover{border-color:#6B7079}\n.kd3b button.acik{border-color:var(--isaret);color:var(--isaret)}\n.kd3b button.secili{background:var(--isaret);border-color:var(--isaret);color:#1B1D22}\n\n\n\n.kd3b .arac button{background:rgba(27,29,34,.88);color:#F2F1EE;border-color:rgba(255,255,255,.16)}\n.kd3b .arac button:hover{border-color:var(--isaret);color:var(--isaret)}\n.kd3b .arac button.acik{background:var(--isaret);border-color:var(--isaret);color:#1B1D22}\n.kd3b .balon{background:#2A2D34;border-color:rgba(255,255,255,.08);\n  box-shadow:0 6px 28px rgba(0,0,0,.45)}\n.kd3b .balon .gor{background:#33373F}\n.kd3b .balon .ad{color:#F2F1EE}\n.kd3b .balon .isv{color:var(--kunye)}\n.kd3b .olcum{color:#6B7079}\n\n\nbody.kd-tam .elementor-location-header{\n  position:absolute;top:0;left:0;right:0;z-index:20;background:transparent}\n\nbody.kd-tam .elementor-location-header a,\nbody.kd-tam .elementor-location-header .elementor-item{color:#F2F1EE}\nbody.kd-tam .elementor-location-header a:hover,\nbody.kd-tam .elementor-location-header .elementor-item:hover{color:#C9704F}\nbody.kd-tam .elementor-location-header img[src*=\"bfta-logo\"]{\n  filter:brightness(0) invert(1)}\nbody.kd-tam .elementor-location-header svg{fill:currentColor}\n\nbody.kd-tam .elementor-location-header .elementor-menu-toggle{color:#F2F1EE}\n\n\nbody.kd-tam .kd3b .yazi{top:calc(var(--hdr,150px) + 22px);\n  max-height:calc(100% - var(--hdr,150px) - 120px)}\n@media(max-width:900px){\n  body.kd-tam .kd3b .yazi{top:calc(var(--hdr,110px) + 14px);\n    max-height:calc(100% - var(--hdr,110px) - 90px)}\n}\n\n\nbody.kd-tam .elementor-location-header .e-n-menu-icon,\nbody.kd-tam .elementor-location-header .e-n-menu-title,\nbody.kd-tam .elementor-location-header .e-n-menu-toggle{color:#F2F1EE}\nbody.kd-tam .elementor-location-header .e-n-menu-icon svg,\nbody.kd-tam .elementor-location-header .e-n-menu-icon svg *,\nbody.kd-tam .elementor-location-header .e-n-menu-toggle svg,\nbody.kd-tam .elementor-location-header .e-n-menu-toggle svg *{\n  fill:#F2F1EE !important;stroke:#F2F1EE}\nbody.kd-tam .elementor-location-header .e-n-menu-icon svg:hover *{fill:#C9704F}\n\n\nbody.kd-tam.admin-bar .elementor-location-header{top:32px}\n@media(max-width:782px){\n  body.kd-tam.admin-bar .elementor-location-header{top:46px}\n}\n\n\n\nbody.kd-tam .elementor-location-header .elementor-element,\nbody.kd-tam .elementor-location-header .e-con,\nbody.kd-tam .elementor-location-header .e-con-inner{\n  background-color:transparent !important;background-image:none !important}\n@media(max-width:900px){\n  body.kd-tam .kd3b .yazi{top:calc(var(--hdr,110px) + 12px);max-height:44%}\n}\n\n\n@media(max-width:900px){\n  body.kd-tam .kd3b .mahaller{flex-wrap:nowrap;overflow-x:auto;\n    -webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}\n  body.kd-tam .kd3b .mahaller::-webkit-scrollbar{display:none}\n  body.kd-tam .kd3b .mahaller button{flex:0 0 auto}\n}\n\n\n\n\nbody.kd-tam .elementor-location-header .e-n-menu-content{\n  background-color:#1B1D22 !important;\n  border-top:1px solid rgba(255,255,255,.10)}\nbody.kd-tam .elementor-location-header .e-n-menu-content a{color:#F2F1EE}\nbody.kd-tam .elementor-location-header .e-n-menu-content a:hover{color:#C9704F}\n\n\nbody.kd-tam .elementor-location-header .menu-item-link,\nbody.kd-tam .elementor-location-header .trp-language-switcher-container a{\n  background-color:rgba(255,255,255,.12) !important;color:#F2F1EE !important;\n  border-radius:2px}\nbody.kd-tam .elementor-location-header .menu-item-link:hover{\n  background-color:rgba(201,112,79,.85) !important}\n\n\n.kd3b .listeyeDon{position:absolute;z-index:6;left:16px;\n  top:calc(var(--hdr,150px) + 14px);\n  display:inline-flex;align-items:center;gap:9px;\n  font-family:var(--unica);font-size:15.5px;line-height:1;letter-spacing:.01em;\n  padding:13px 19px;border-radius:3px;text-decoration:none;\n  background:rgba(27,29,34,.92);color:#F2F1EE;\n  border:1px solid rgba(255,255,255,.16);\n  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}\n.kd3b .listeyeDon:hover{background:rgba(201,112,79,.92);border-color:transparent}\n@media(max-width:900px){\n  .kd3b .listeyeDon{left:12px;top:calc(var(--hdr,110px) + 10px);font-size:15px;\n    padding:12px 17px}\n}\n\n\/* ---------- MOBIL HAMBURGER: JetMenu, Elementor degil ----------\n   Olculdu (2 Eyl): mobilde tetikleyici `.jet-nav__mobile-trigger`, ikon ise\n   SATIR ICI SVG ve rengini SVG'nin KENDI <style> blogundan aliyor\n   (`.st0{fill:#0...}`). Benim onceki kurallarim `.e-n-menu-icon` (Elementor\n   Nested Menu) hedefliyordu \u2014 masaustunde calisti, mobilde HIC dokunmadi;\n   ikon #333 kalip antrasitte kayboldu.\n   SVG ici <style> yazar stili oldugu icin disaridan yalniz !important yener. *\/\nbody.kd-tam .elementor-location-header .jet-nav__mobile-trigger,\nbody.kd-tam .elementor-location-header .jet-nav__mobile-trigger svg,\nbody.kd-tam .elementor-location-header .jet-nav__mobile-trigger svg *{\n  color:#F2F1EE !important;fill:#F2F1EE !important}\nbody.kd-tam .elementor-location-header .jet-nav__mobile-trigger:hover svg *{\n  fill:#C9704F !important}\n\n\nbody.kd-tam .jet-mobile-menu-cont,\nbody.kd-tam .jet-nav--mobile,\nbody.kd-tam .jet-nav__mobile-container,\nbody.kd-tam .elementor-location-header .jet-nav-wrap.jet-mobile-menu ul{\n  background-color:#1B1D22 !important}\nbody.kd-tam .jet-nav--mobile a,\nbody.kd-tam .jet-nav__mobile-container a{color:#F2F1EE !important}\n\n\nbody.kd-tam .jet-nav-wrap.jet-mobile-menu .jet-nav{\n  background-color:#1B1D22 !important;\n  border-top:1px solid rgba(255,255,255,.12);\n  box-shadow:0 14px 34px rgba(0,0,0,.5)}\nbody.kd-tam .jet-nav-wrap.jet-mobile-menu .jet-nav .menu-item-link,\nbody.kd-tam .jet-nav-wrap.jet-mobile-menu .jet-nav a{\n  background-color:transparent !important;color:#F2F1EE !important}\nbody.kd-tam .jet-nav-wrap.jet-mobile-menu .jet-nav a:hover,\nbody.kd-tam .jet-nav-wrap.jet-mobile-menu .jet-nav .menu-item-link:hover{\n  color:#C9704F !important}\n\nbody.kd-tam .jet-nav-wrap.jet-mobile-menu .jet-nav .jet-nav__item + .jet-nav__item,\nbody.kd-tam .jet-nav-wrap.jet-mobile-menu .jet-nav .menu-item + .menu-item{\n  border-top:1px solid rgba(255,255,255,.07)}\n\n\nbody.kd-tam, html:has(body.kd-tam){background-color:#22242A !important}\nbody.kd-tam .kd3b{\n  padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0)}\n\n\nbody.kd-tam .jet-nav-wrap.jet-mobile-menu .jet-nav{\n  position:fixed !important;top:var(--hdrAlt,160px) !important;\n  left:0 !important;right:0 !important;width:100vw !important;max-width:100vw !important}\n\n\n.kd3b .listeyeDon{top:auto;bottom:14px;left:16px}\nbody.kd-tam .kd3b .kumanda{padding-bottom:76px}\n@media(max-width:900px){\n  .kd3b .listeyeDon{top:auto;bottom:12px;left:12px}\n  body.kd-tam .kd3b .kumanda{padding-bottom:70px}\n}\n\n\nbody.kd-tam .kd3b .kumanda{\n  padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}\n.kd3b .listeyeDon{bottom:calc(14px + env(safe-area-inset-bottom,0px))}\n@media(max-width:900px){\n  body.kd-tam .kd3b .kumanda{\n    padding-bottom:calc(70px + env(safe-area-inset-bottom,0px))}\n  .kd3b .listeyeDon{bottom:calc(12px + env(safe-area-inset-bottom,0px))}\n}\n\n\n.kd3b .listeyeDon{\n  top:calc(var(--hdrAlt,160px) + 10px);bottom:auto;left:16px;\n  width:44px;height:44px;padding:0;gap:0;\n  display:inline-flex;align-items:center;justify-content:center;\n  font-size:20px;line-height:1;border-radius:50%}\n@media(max-width:900px){\n  .kd3b .listeyeDon{\n    top:calc(var(--hdrAlt,120px) + 8px);bottom:auto;left:12px;\n    width:40px;height:40px;font-size:19px;padding:0}\n  \n  body.kd-listeden .kd3b .kumanda{display:none}\n}\n\nbody.kd-tam .kd3b .kumanda{padding-bottom:calc(28px + env(safe-area-inset-bottom,0px))}\n@media(max-width:900px){\n  body.kd-tam .kd3b .kumanda{padding-bottom:calc(22px + env(safe-area-inset-bottom,0px))}\n}\n\n\n@media(max-width:900px){\n  body.kd-tam .jet-nav-wrap.jet-mobile-menu .jet-nav .menu-item.kd-en-satir{\n    display:flex;align-items:center;justify-content:space-between;gap:14px}\n  body.kd-tam .jet-nav-wrap.jet-mobile-menu .kd-en-satir\n    .trp-language-switcher-container{margin-left:auto;flex:0 0 auto}\n  \n  body.kd-tam .jet-nav-wrap.jet-mobile-menu .kd-en-satir\n    .trp-language-switcher-container{align-self:center !important}\n  body.kd-tam .jet-nav-wrap.jet-mobile-menu .kd-en-satir\n    .trp-language-switcher-container .menu-item-link{\n      background-color:transparent !important;\n      color:#B9B5B0 !important;\n      border:1px solid rgba(255,255,255,.22) !important;\n      border-radius:3px !important;\n      padding:6px 12px !important;\n      font-size:12.5px !important;\n      line-height:1 !important;\n      letter-spacing:.06em !important;\n      min-height:0 !important;height:auto !important;\n      align-self:center !important}\n  body.kd-tam .jet-nav-wrap.jet-mobile-menu .kd-en-satir\n    .trp-language-switcher-container .menu-item-link:hover{\n      color:#F2F1EE !important;border-color:#C9704F !important}\n  \n  body.kd-tam .elementor-location-header .menu-mobile-lang-container:empty,\n  body.kd-tam .elementor-location-header\n    .jet-nav-wrap.m-layout-mobile:not(:has(.trp-language-switcher-container)){\n      display:none}\n}\n\n@media(max-width:1024px){\n  \n  .kd3b .mahaller button{min-height:44px;display:inline-flex;\n    align-items:center;padding:0 13px}\n}\n@media(max-width:900px){\n  \n  .kd3b .arac{display:none}\n  \n  .kd3b .yazi>p:first-of-type{display:-webkit-box;-webkit-line-clamp:4;\n    -webkit-box-orient:vertical;overflow:hidden;margin-bottom:0}\n  .kd3b .yazi:has(details.devam[open])>p:first-of-type{display:block;\n    -webkit-line-clamp:unset;overflow:visible;margin-bottom:12px}\n  \n  .kd3b .yazi details.devam{margin-top:10px}\n  .kd3b .yazi:has(details.devam[open]) details.devam{margin-top:2px}\n}\n\n\n@media(max-width:900px){\n  .kd3b .yazi{transition:opacity .18s ease-out}\n}\n\n\n@media(max-width:900px){\n  body.kd-tam .jet-nav-wrap.jet-mobile-menu .kd-en-satir\n    .trp-language-switcher-container .menu-item-link{\n      width:auto !important;min-width:44px;\n      justify-content:center;text-align:center}\n}\n\n\n@media(max-width:900px){\n  \n  body.kd-kart-gorulmus .kd3b .yazi{display:none}\n}\n\n\n@media(max-width:900px) and (orientation:landscape){\n  body.kd-kart-gorulmus .kd3b .yazi{right:auto;width:auto;max-width:56%}\n}\n\n\n@media(max-width:900px){\n  .kd3b .mahaller{display:none}\n  .kd3b .kumanda{padding:0 15px 24px}\n  body.kd-kart-gorulmus .kd3b .yazi{padding:10px 16px 11px}\n}\n\n\n@media(max-width:900px){\n  .kd3b .kumanda{background:none;padding:0}\n  .kd3b .atif{right:12px;bottom:8px;opacity:.9;\n    text-shadow:0 1px 2px rgba(0,0,0,.9),0 0 3px rgba(0,0,0,.75)}\n}\n\n\n@media(max-width:900px) and (orientation:landscape){\n  .kd3b{min-height:0}\n}\n\n\n\n@media(max-width:900px){\n  .kd3b .balon .pmetin{position:absolute;left:0;right:0;bottom:0;\n    flex-direction:row;align-items:flex-end;justify-content:space-between;\n    padding:32px 13px 11px;gap:10px;\n    background:linear-gradient(to top,rgba(18,20,24,.94) 0%,\n      rgba(18,20,24,.78) 42%,rgba(18,20,24,0) 100%)}\n  .kd3b .balon .isv{display:none}\n  .kd3b .balon .ad{font-size:17px;line-height:1.22;min-width:0;\n    text-shadow:0 1px 3px rgba(0,0,0,.7)}\n  .kd3b .balon .detay{margin-top:0;flex:0 0 auto;white-space:nowrap;\n    color:#E8E5E1;text-shadow:0 1px 3px rgba(0,0,0,.7);padding-bottom:2px}\n}\n@media(max-width:900px) and (orientation:portrait){\n  .kd3b .balon .ad{font-size:19px}\n}\n\n\n\n.kd3b .mahaller .plan-cip{margin-left:auto;background:transparent;\n  border-color:var(--isaret);color:var(--isaret);\n  text-transform:uppercase;letter-spacing:.12em;font-size:11px;padding:6px 14px}\n.kd3b .mahaller .plan-cip:hover{box-shadow:inset 0 0 0 1px var(--isaret)}\n.kd3b .mahaller .plan-cip.acik{background:var(--isaret);\n  border-color:var(--isaret);color:#1B1D22}\n.kd3b{height:100vh;min-height:520px}.kd3b{height:100dvh}body.page-id-3428 header.elementor-location-header{position:absolute;top:0;left:0;right:0;z-index:100;pointer-events:none}body.page-id-3428 header.elementor-location-header a,body.page-id-3428 header.elementor-location-header button,body.page-id-3428 header.elementor-location-header .e-n-menu,body.page-id-3428 header.elementor-location-header .jet-nav-wrap{pointer-events:auto}body.page-id-3428 .elementor-element-kdk1001{padding:0}body.page-id-3428 footer.elementor-location-footer{display:none}<\/style><div class=\"kd3b\" id=\"kd3b\">\n\n  \n  <aside class=\"yazi\" id=\"yazi\"><h1>Kad\u0131k\u00f6y'de Kentsel D\u00f6n\u00fc\u015f\u00fcm<\/h1>\n<p>Kad\u0131k\u00f6y'de, \u00f6zellikle Ba\u011fdat Caddesi hatt\u0131nda, kentsel d\u00f6n\u00fc\u015f\u00fcm tek parselde ba\u015fl\u0131yor: emsal, \u00e7ekme mesafesi ve belediyenin de\u011fi\u015fen proje tasdik yakla\u015f\u0131m\u0131 bir arsan\u0131n ka\u00e7 daire \u00fcretebilece\u011fini daha ilk g\u00fcn sabitliyor. Projenin ba\u015far\u0131s\u0131 bu sabit hacmin, ortak alanlar\u0131 en aza indirerek, y\u00f6netmeliklerin izin verdi\u011fi en verimli \u015fekilde kullan\u0131lmas\u0131na ba\u011fl\u0131. Ofisimiz Suadiye'de, buradaki apartmanlar\u0131n \u00e7o\u011fu y\u00fcr\u00fcyerek gidilecek mesafede. T\u00fcm T\u00fcrkiye'de konut yerle\u015fimlerinden tek parsele kadar tasarlad\u0131\u011f\u0131m\u0131z alan 1.200.000m\u00b2'yi a\u015ft\u0131.<\/p>\n\n<details class=\"devam\"><summary><span class=\"art\" aria-hidden=\"true\"><\/span><span class=\"kapali\">Devam\u0131n\u0131 oku<\/span><span class=\"acikm\">K\u0131salt<\/span><\/summary><div class=\"metin\">\n<p>Riskli yap\u0131 karar\u0131ndan ruhsata giden takvimde mimari proje sonda de\u011fil t\u00fcm s\u00fcre\u00e7te canl\u0131 olarak durur. T\u00fcm s\u00fcrecin ba\u015f\u0131nda kat maliklerinin \u00f6n\u00fcne konan payla\u015f\u0131m tablosu en b\u00fcy\u00fck proje karar\u0131d\u0131r; kimin hangi kata, hangi cepheye ge\u00e7ece\u011fi ruhsatlanacak mimari projenin belkemi\u011fini olu\u015fturur.<\/p>\n<p>Kad\u0131k\u00f6y'de hak sahipleri ile yap\u0131lan g\u00f6r\u00fc\u015fmeler de ba\u015fka yerlerdekine benzemiyor. Apartman sakinleri \u00e7o\u011fu zaman binalar\u0131n\u0131n hangi y\u0131l ve kimin taraf\u0131ndan yap\u0131ld\u0131\u011f\u0131n\u0131 biliyorlar; giri\u015f hol\u00fcndeki mozai\u011fi ya da cephedeki \u00e7i\u00e7ekli\u011fi savunuyor, kendi prestijini \u00fcreten cephe karakteri ar\u0131yor, daire say\u0131s\u0131ndan \u00f6nce yap\u0131n\u0131n sokakta nas\u0131l duraca\u011f\u0131n\u0131 soruyorlar.<\/p>\n<p>Ada ve yerle\u015fim \u00f6l\u00e7e\u011findeki i\u015fler <a href=\"https:\/\/bfta.com.tr\/projeler\/\">projeler sayfas\u0131nda<\/a>; kentsel d\u00f6n\u00fc\u015f\u00fcm s\u00fcrecinin mevzuat taraf\u0131 ve devam\u0131 <a href=\"https:\/\/bfta.com.tr\/2026\/07\/29\/kadikoy-kentsel-donusum-bagdat-caddesi-mimari-ruhsat-sureci\/\">blogda<\/a>.<\/p><p>Haritada i\u015faretli yap\u0131lardan bir b\u00f6l\u00fcm\u00fcn\u00fcn proje sayfalar\u0131: <a href=\"https:\/\/bfta.com.tr\/proje\/huzur-apartmani\/\">Huzur Apt.<\/a>, <a href=\"https:\/\/bfta.com.tr\/proje\/metro-home\/\">Metro Home<\/a>, <a href=\"https:\/\/bfta.com.tr\/proje\/intaya-kiziltoprak-apartmani\/\">K\u0131z\u0131ltoprak Apt.<\/a>, <a href=\"https:\/\/bfta.com.tr\/proje\/yuksel-begum-apartmani\/\">Beg\u00fcm Apt.<\/a>, <a href=\"https:\/\/bfta.com.tr\/proje\/atike-hanim-apartmani\/\">Atike Han\u0131m Apt.<\/a>, <a href=\"https:\/\/bfta.com.tr\/proje\/mutlus-apartmani\/\">Mutlu\u015f Apt.<\/a>, <a href=\"https:\/\/bfta.com.tr\/proje\/sadikoglu-kaya-apt\/\">Kaya Apt.<\/a>, <a href=\"https:\/\/bfta.com.tr\/proje\/sadiye-hanim-apartmani\/\">Sadiye Han\u0131m Apt.<\/a>, <a href=\"https:\/\/bfta.com.tr\/proje\/deniz-apartmani\/\">Deniz Apt.<\/a>, <a href=\"https:\/\/bfta.com.tr\/proje\/hakki-bey-apartmani\/\">Hakk\u0131 Bey Apt.<\/a><\/p>\n<\/div><\/details>\n<\/aside>\n\n  \n  <div class=\"harita\" id=\"harita\">\n    <canvas class=\"sahne\" id=\"sahne\"><\/canvas>\n\n    <div class=\"kumanda\">\n      <div class=\"mahaller\" id=\"mahaller\"><\/div>\n      \n      <div class=\"atif\">\u00a9 OpenStreetMap katk\u0131da bulunanlar \u2014 ODbL<\/div>\n    <\/div>\n\n    <div class=\"balon\" id=\"balon\"><img class=\"gor\" alt=\"\" loading=\"lazy\" decoding=\"async\">\n      <div class=\"pmetin\"><div class=\"ad\"><\/div><div class=\"isv\"><\/div><div class=\"mh\"><\/div>\n      \n      <a class=\"detay\" hidden><\/a><\/div><\/div>\n    <div class=\"olcum\" id=\"olcum\"><\/div>\n    \n    <div class=\"arac\" id=\"arac\">\n      <button type=\"button\" class=\"kuzey\" id=\"kuzeyDugme\" title=\"Kuzey yukar\u0131\" aria-label=\"Haritay\u0131 kuzeye \u00e7evir\"><svg viewBox=\"0 0 24 24\" width=\"22\" height=\"22\" aria-hidden=\"true\"><path d=\"M12 2.5 15.6 13 12 11.2 8.4 13Z\" fill=\"currentColor\"\/><path d=\"M12 21.5 8.4 11 12 12.8 15.6 11Z\" fill=\"currentColor\" opacity=\".32\"\/><\/svg><\/button>\n      <button type=\"button\" class=\"plan\" id=\"planDugme\" title=\"Plana d\u00f6n\" aria-pressed=\"false\">Plan<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n<script src=\"https:\/\/bfta.com.tr\/wp-content\/uploads\/kd\/kd-veri-a-58ee38fc5a.js\"><\/script><script>\n(function () {\n'use strict';\n\nfunction cozCok(s, olcek) {\n  olcek = olcek || 1e5;\n  var out = [], hatlar = s.split(';'), i, j;\n  for (i = 0; i < hatlar.length; i++) {\n    if (!hatlar[i]) continue;\n    var par = hatlar[i].split(','), pts = [], ox = null, oy = null;\n    for (j = 0; j < par.length; j++) {\n      var ab = par[j].split(' '), x = +ab[0], y = +ab[1];\n      if (ox === null) { ox = x; oy = y; } else { ox += x; oy += y; }\n      pts.push([29 + ox \/ olcek, 40 + oy \/ olcek]);\n    }\n    if (pts.length > 1) out.push(pts);\n  }\n  return out;\n}\n\nvar lon0 = D.mrk[0], lat0 = D.mrk[1];\nvar MLAT = 111320, MLON = 111320 * Math.cos(lat0 * Math.PI \/ 180);\nfunction mx(lon) { return (lon - lon0) * MLON; }\nfunction my(lat) { return (lat - lat0) * MLAT; }\nfunction metrele(hat) {\n  var o = [], i;\n  for (i = 0; i < hat.length; i++) o.push([mx(hat[i][0]), my(hat[i][1])]);\n  return o;\n}\nfunction kutu(pts) {\n  var a = 1e12, b = 1e12, c = -1e12, d = -1e12, i;\n  for (i = 0; i < pts.length; i++) {\n    if (pts[i][0] < a) a = pts[i][0];\n    if (pts[i][1] < b) b = pts[i][1];\n    if (pts[i][0] > c) c = pts[i][0];\n    if (pts[i][1] > d) d = pts[i][1];\n  }\n  return [a, b, c, d];\n}\n\nvar KAT_M = 3.1;\nvar OLCULEN = D.olc || 0;\nvar GORUS = 30;\nvar TAN = Math.tan(GORUS * Math.PI \/ 360);\n\nvar yollar = cozCok(D.yol).map(metrele);\nvar caddeler = cozCok(D.cadde || '').map(metrele);\nvar bagdatHat = cozCok(D.bagdat || '').map(metrele);\n\nvar veriSurum = 0;\nfunction disDokuKur() {\n\n  var h = cozCok(D.disbina || '', D.disbinaolcek || 1e4).map(metrele), o = [], i, j;\n  for (i = 0; i < h.length; i++) {\n    var g = h[i], sx = 0, sy = 0;\n    for (j = 0; j < g.length; j++) { sx += g[j][0]; sy += g[j][1]; }\n    sx \/= g.length; sy \/= g.length;\n    var r = 0;\n    for (j = 0; j < g.length; j++) {\n      var d = Math.hypot(g[j][0] - sx, g[j][1] - sy);\n      if (d > r) r = d;\n    }\n    o.push({ g: g, x: sx, y: sy, r: r });\n  }\n  return o;\n}\nvar disDoku = disDokuKur();\nwindow.kdVeriGeldi = function (k) {\n  if (k === 'disbina') { disDoku = disDokuKur(); veriSurum++; kipirdat(); }\n};\nvar sokaklar = cozCok(D.sokak).map(metrele);\nvar kiyi = cozCok(D.deniz).map(metrele);\nvar ilceHat = cozCok(D.ilce || '').map(metrele);\nvar parklar = cozCok(D.park || '').map(metrele);\nvar raylar = cozCok(D.ray || '').map(metrele);\n\nfunction capaCoz(ham) {\n  var t = (ham || '').split('|');\n  if (t.length < 5) return null;\n  var X = mx(29 + (+t[1]) \/ 1e5), Y = my(40 + (+t[2]) \/ 1e5);\n  var dx = mx(29 + ((+t[1]) + (+t[3])) \/ 1e5) - X;\n  var dy = my(40 + ((+t[2]) + (+t[4])) \/ 1e5) - Y;\n  var n = Math.hypot(dx, dy) || 1;\n  return { ad: t[0], X: X, Y: Y, UX: dx \/ n, UY: dy \/ n };\n}\nvar resmiPark = cozCok(D.rpark || '').map(metrele);\n\nvar PARK_ADI_GOSTER = false;\nvar parkAdlari = PARK_ADI_GOSTER\n  ? (D.parkad || '').split(';').filter(Boolean).map(capaCoz).filter(Boolean)\n  : [];\nvar minibusHat = cozCok(D.minibus || '').map(metrele);\nvar minibusAdi = capaCoz(D.minibus ? D.minibusad : '');\nvar rayAdi = (function () {\n  var t = (D.rayad || '').split('|');\n  if (t.length < 5) return null;\n  var X = mx(29 + (+t[1]) \/ 1e5), Y = my(40 + (+t[2]) \/ 1e5);\n  var dx = mx(29 + ((+t[1]) + (+t[3])) \/ 1e5) - X;\n  var dy = my(40 + ((+t[2]) + (+t[4])) \/ 1e5) - Y;\n  var n = Math.hypot(dx, dy) || 1;\n  return { ad: t[0], X: X, Y: Y, UX: dx \/ n, UY: dy \/ n };\n})();\n\nvar MAHALLE_RENK = [\n  '#7A5570',\n  '#8A6A3F',\n  '#C4A9C6',\n  '#C8912B',\n  '#A9B2BC',\n  '#A8567A',\n  '#D9C79A',\n  '#B8654C',\n  '#5C6E8C',\n  '#7E9AA8',\n  '#B99A86',\n];\n\nvar mahalleler = D.mah.map(function (m, i) {\n  var s = metrele(cozCok(m.s)[0]);\n  var k = kutu(s);\n  var cx = (k[0] + k[2]) \/ 2, cy = (k[1] + k[3]) \/ 2;\n\n  var d = Math.max((k[2] - k[0]) \/ (TAN * 2 * (16 \/ 9)),\n                   (k[3] - k[1]) * 0.62 \/ (TAN * 2)) * 1.15;\n  return { ad: m.a, sinir: s, cx: cx, cy: cy, d: Math.max(500, d), proje: m.p,\n           renk: MAHALLE_RENK[i % MAHALLE_RENK.length] };\n});\n\nvar binalar = (function () {\n  var par = D.bina.split(';'), out = [], i;\n  for (i = 0; i < par.length; i++) {\n    if (!par[i]) continue;\n    var t = par[i].split('|'), bas = t[0].split(',');\n    var h = metrele(cozCok(t[1])[0]);\n    if (h.length > 1 && Math.abs(h[0][0] - h[h.length - 1][0]) < 0.5 &&\n        Math.abs(h[0][1] - h[h.length - 1][1]) < 0.5) h.pop();\n    if (h.length < 3) continue;\n\n    var a = 0, j;\n    for (j = 0; j < h.length; j++) {\n      var p = h[j], q = h[(j + 1) % h.length];\n      a += p[0] * q[1] - q[0] * p[1];\n    }\n    if (a < 0) h.reverse();\n    var cx = 0, cy = 0;\n    for (j = 0; j < h.length; j++) { cx += h[j][0]; cy += h[j][1]; }\n    cx \/= h.length; cy \/= h.length;\n    var r = 0;\n    for (j = 0; j < h.length; j++)\n      r = Math.max(r, Math.hypot(h[j][0] - cx, h[j][1] - cy));\n    var k10 = +bas[1];\n    out.push({ h: h, z: Math.abs(k10) \/ 10 * KAT_M, m: +bas[0],\n               olc: k10 > 0, cx: cx, cy: cy, r: r, biz: false });\n  }\n  return out;\n})();\n\nvar projeler = D.proje;\nprojeler.forEach(function (p) {\n  p.X = mx(p.lon); p.Y = my(p.lat);\n  if (p.b != null && binalar[p.b]) { binalar[p.b].biz = true; binalar[p.b].pr = p; }\n});\n\nvar tumSinir = [];\nmahalleler.forEach(function (m) { tumSinir = tumSinir.concat(m.sinir); });\nvar GK = kutu(tumSinir);\nvar GENEL = {\n  cx: (GK[0] + GK[2]) \/ 2, cy: (GK[1] + GK[3]) \/ 2,\n  d: Math.max((GK[2] - GK[0]) \/ (TAN * 2 * (16 \/ 9)),\n              (GK[3] - GK[1]) * 0.62 \/ (TAN * 2)) * 1.05\n};\n\nvar ILCEK = [GK[0] - 250, GK[1] - 250, GK[2] + 250, GK[3] + 250];\nvar MAKS_D = Math.max((ILCEK[2] - ILCEK[0]) \/ (TAN * 2 * (16 \/ 9)),\n                      (ILCEK[3] - ILCEK[1]) * 0.62 \/ (TAN * 2)) * 1.06;\n\nvar MIN_D = 1000;\nvar MIN_PIT = 20, MAKS_PIT = 88;\n\nvar YON_MIN = 171, YON_MAKS = 270;\nfunction yonSar(a) { a = a % 360; return a < 0 ? a + 360 : a; }\nfunction kamSinirla() {\n  kam.dist = Math.max(MIN_D, Math.min(MAKS_D, kam.dist));\n  kam.pit = Math.max(MIN_PIT, Math.min(MAKS_PIT, kam.pit));\n  kam.head = Math.max(YON_MIN, Math.min(YON_MAKS, yonSar(kam.head)));\n  if (ILCEK) {\n    kam.tx = Math.max(ILCEK[0], Math.min(ILCEK[2], kam.tx));\n    kam.ty = Math.max(ILCEK[1], Math.min(ILCEK[3], kam.ty));\n  }\n}\n\nvar denizPoli = (function () {\n  if (!kiyi.length) return null;\n  var en = kiyi[0], i;\n  for (i = 1; i < kiyi.length; i++) if (kiyi[i].length > en.length) en = kiyi[i];\n  return en.length > 2 ? en : null;\n})();\n\nvar kam = { tx: GENEL.cx, ty: GENEL.cy, dist: GENEL.d, pit: 88, head: 180 };\nvar cv = document.getElementById('sahne'), ctx = cv.getContext('2d');\nvar W = 0, H = 0, DPR = 1, odak = 0;\n\nfunction boyutla() {\n\n  DPR = Math.min(window.devicePixelRatio || 1, 1.25);\n  W = cv.clientWidth; H = cv.clientHeight;\n  sAnahtar = '';\n  cv.width = Math.round(W * DPR); cv.height = Math.round(H * DPR);\n  ctx.setTransform(DPR, 0, 0, DPR, 0, 0);\n  odak = (H \/ 2) \/ TAN;\n}\n\nvar ex, ey, ez, rx, ry, rz, ux, uy, uz, fx, fy, fz;\nfunction kamKur() {\n  var p = kam.pit * Math.PI \/ 180, h = kam.head * Math.PI \/ 180;\n  var dx = Math.cos(p) * Math.sin(h), dy = Math.cos(p) * Math.cos(h), dz = Math.sin(p);\n  ex = kam.tx + kam.dist * dx; ey = kam.ty + kam.dist * dy; ez = kam.dist * dz;\n  fx = -dx; fy = -dy; fz = -dz;\n  rx = fy; ry = -fx; rz = 0;\n  var n = Math.hypot(rx, ry) || 1; rx \/= n; ry \/= n;\n  ux = ry * fz - rz * fy; uy = rz * fx - rx * fz; uz = rx * fy - ry * fx;\n}\nvar NEAR = 14;\nvar _p = [0, 0, 0];\nfunction yansit(X, Y, Z) {\n  var vx = X - ex, vy = Y - ey, vz = Z - ez;\n  var cz = vx * fx + vy * fy + vz * fz;\n  if (cz < NEAR) return null;\n  _p[0] = W \/ 2 + odak * (vx * rx + vy * ry + vz * rz) \/ cz;\n  _p[1] = H \/ 2 - odak * (vx * ux + vy * uy + vz * uz) \/ cz;\n  _p[2] = cz;\n  return _p;\n}\n\nfunction kamUzay(X, Y, Z) {\n  var vx = X - ex, vy = Y - ey, vz = (Z || 0) - ez;\n  return [vx * rx + vy * ry + vz * rz,\n          vx * ux + vy * uy + vz * uz,\n          vx * fx + vy * fy + vz * fz];\n}\nfunction ekranaAl(c) {\n  return [W \/ 2 + odak * c[0] \/ c[2], H \/ 2 - odak * c[1] \/ c[2]];\n}\nfunction yakinKirp(c, kapali) {\n  var out = [], n = c.length, son = kapali ? n : n - 1, i;\n  for (i = 0; i < son; i++) {\n    var A = c[i], B = c[(i + 1) % n];\n    var ai = A[2] >= NEAR, bi = B[2] >= NEAR;\n    if (ai) out.push(A);\n    if (ai !== bi) {\n      var t = (NEAR - A[2]) \/ (B[2] - A[2]);\n      out.push([A[0] + (B[0] - A[0]) * t, A[1] + (B[1] - A[1]) * t, NEAR]);\n    }\n  }\n  if (!kapali && c[n - 1][2] >= NEAR) out.push(c[n - 1]);\n  return out;\n}\nfunction poliDoldur(pts, renk) {\n  var c = [], i;\n  for (i = 0; i < pts.length; i++) c.push(kamUzay(pts[i][0], pts[i][1], 0));\n  var k = yakinKirp(c, true);\n  if (k.length < 3) return;\n  ctx.fillStyle = renk; ctx.beginPath();\n  var s = ekranaAl(k[0]); ctx.moveTo(s[0], s[1]);\n  for (i = 1; i < k.length; i++) { s = ekranaAl(k[i]); ctx.lineTo(s[0], s[1]); }\n  ctx.closePath(); ctx.fill();\n}\n\nfunction taraYol(pts) {\n  var c = [], i;\n  for (i = 0; i < pts.length; i++) c.push(kamUzay(pts[i][0], pts[i][1], 0));\n  var k = yakinKirp(c, true);\n  if (k.length < 3) return null;\n  var s0 = ekranaAl(k[0]);\n  var x0 = s0[0], y0 = s0[1], x1 = s0[0], y1 = s0[1];\n  ctx.beginPath(); ctx.moveTo(s0[0], s0[1]);\n  for (i = 1; i < k.length; i++) {\n    var s1 = ekranaAl(k[i]); ctx.lineTo(s1[0], s1[1]);\n    if (s1[0] < x0) x0 = s1[0]; if (s1[0] > x1) x1 = s1[0];\n    if (s1[1] < y0) y0 = s1[1]; if (s1[1] > y1) y1 = s1[1];\n  }\n  ctx.closePath();\n  return [x0, y0, x1, y1];\n}\n\nfunction taraCizgi(ax, ay, bx, by) {\n  var A = kamUzay(ax, ay, 0), B = kamUzay(bx, by, 0);\n  var ai = A[2] >= NEAR, bi = B[2] >= NEAR;\n  if (!ai && !bi) return false;\n  if (ai !== bi) {\n    var t = (NEAR - A[2]) \/ (B[2] - A[2]);\n    var K = [A[0] + (B[0] - A[0]) * t, A[1] + (B[1] - A[1]) * t, NEAR];\n    if (ai) B = K; else A = K;\n  }\n  var p = ekranaAl(A), q = ekranaAl(B);\n  if ((p[1] < -60 && q[1] < -60) || (p[1] > H + 60 && q[1] > H + 60)) return false;\n  if ((p[0] < -60 && q[0] < -60) || (p[0] > W + 60 && q[0] > W + 60)) return false;\n  ctx.moveTo(p[0], p[1]); ctx.lineTo(q[0], q[1]);\n  return true;\n}\n\nvar TARA_ARALIK = 9;\nvar TARA_ESIK = 46;\n\nfunction parkTara(pts) {\n  var n = pts.length, i;\n  if (n < 3) return;\n  var wx0 = 1e9, wy0 = 1e9, wx1 = -1e9, wy1 = -1e9;\n  for (i = 0; i < n; i++) {\n    var px = pts[i][0], py = pts[i][1];\n    if (px < wx0) wx0 = px; if (px > wx1) wx1 = px;\n    if (py < wy0) wy0 = py; if (py > wy1) wy1 = py;\n  }\n  ctx.save();\n  var kb = taraYol(pts);\n  if (!kb) { ctx.restore(); return; }\n  if (kb[2] - kb[0] < TARA_ESIK || kb[3] - kb[1] < TARA_ESIK) { ctx.restore(); return; }\n  if (kb[2] < 0 || kb[0] > W || kb[3] < 0 || kb[1] > H) { ctx.restore(); return; }\n  ctx.clip();\n\n  var adim = TARA_ARALIK * 1.41421356;\n  var c0 = Math.ceil((wx0 + wy0) \/ adim) * adim, c1 = wx1 + wy1;\n  ctx.strokeStyle = T.parkTara; ctx.lineWidth = 0.9;\n  ctx.beginPath();\n  for (var c = c0; c <= c1; c += adim) {\n    var ax = 0, ay = 0, bx = 0, by = 0, bul = 0, t;\n    t = c - wx0; if (t >= wy0 && t <= wy1) { ax = wx0; ay = t; bul = 1; }\n    t = c - wx1; if (t >= wy0 && t <= wy1) {\n      if (bul) { bx = wx1; by = t; bul = 2; } else { ax = wx1; ay = t; bul = 1; } }\n    if (bul < 2) { t = c - wy0; if (t >= wx0 && t <= wx1) {\n      if (bul) { bx = t; by = wy0; bul = 2; } else { ax = t; ay = wy0; bul = 1; } } }\n    if (bul < 2) { t = c - wy1; if (t >= wx0 && t <= wx1) {\n      if (bul) { bx = t; by = wy1; bul = 2; } } }\n    if (bul < 2) continue;\n    if (taraCizgi(ax, ay, bx, by)) tarananCizgi++;\n  }\n  ctx.stroke();\n  ctx.restore();\n  tarananPark++;\n}\nvar tarananPark = 0, tarananCizgi = 0;\n\nvar DTARA_ARALIK = 30;\nvar DTARA_MIN_PX = 5.5;\n\nvar denizCizgi = 0;\n\nfunction denizTara(pts) {\n  denizCizgi = 0;\n  if (!pts || pts.length < 3) return;\n\n  var mpp = kam.dist * 2 * TAN \/ Math.max(1, H);\n  if (DTARA_ARALIK \/ mpp < DTARA_MIN_PX) return;\n\n  var n = pts.length, i;\n  var wx0 = 1e9, wy0 = 1e9, wx1 = -1e9, wy1 = -1e9;\n  for (i = 0; i < n; i++) {\n    var px = pts[i][0], py = pts[i][1];\n    if (px < wx0) wx0 = px; if (px > wx1) wx1 = px;\n    if (py < wy0) wy0 = py; if (py > wy1) wy1 = py;\n  }\n  ctx.save();\n  var kb = taraYol(pts);\n  if (!kb) { ctx.restore(); return; }\n  if (kb[2] < 0 || kb[0] > W || kb[3] < 0 || kb[1] > H) { ctx.restore(); return; }\n  ctx.clip();\n\n  ctx.strokeStyle = T.denizTara; ctx.lineWidth = 0.9;\n  ctx.beginPath();\n  var y0 = Math.ceil(wy0 \/ DTARA_ARALIK) * DTARA_ARALIK;\n  for (var y = y0; y <= wy1; y += DTARA_ARALIK) {\n    if (taraCizgi(wx0, y, wx1, y)) denizCizgi++;\n  }\n  ctx.stroke();\n  ctx.restore();\n}\n\nvar KF = [\n  { u: 0.00, dk: 1.14, p: 34, h: 282, yuk: 0, sol: 0 },\n  { u: 0.20, dk: 1.10, p: 31, h: 276, yuk: 1, sol: 0 },\n  { u: 0.62, dk: 0.98, p: 34, h: 220, yuk: 1, sol: 0 },\n  { u: 1.00, dk: 0.82, p: 36, h: 162, yuk: 1, sol: 1 }\n];\nfunction yumusat(t) { return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) \/ 2; }\nvar durum = { yuk: 1, sol: 1 };\n\nfunction zamanUygula(u, kameraDa) {\n  var i = 0;\n  while (i < KF.length - 2 && u > KF[i + 1].u) i++;\n  var a = KF[i], b = KF[i + 1];\n  var f = yumusat(Math.max(0, Math.min(1, (u - a.u) \/ (b.u - a.u))));\n  function L(k) { return a[k] + (b[k] - a[k]) * f; }\n  durum.yuk = L('yuk'); durum.sol = L('sol');\n  if (kameraDa) {\n    kam.tx = GENEL.cx; kam.ty = GENEL.cy;\n    kam.dist = GENEL.d * L('dk'); kam.pit = L('p'); kam.head = L('h');\n  }\n}\n\nvar ucus = null;\nfunction ucur(hedef, sure) {\n  zoomHedef = null;\n  ucus = { a: { tx: kam.tx, ty: kam.ty, dist: kam.dist, pit: kam.pit, head: kam.head },\n           b: hedef, t0: performance.now(), sure: sure || 950 };\n  UI.oynuyor = false; UI.elde = true;\n}\nfunction ucusIsle(an) {\n  if (!ucus) return;\n  var f = Math.min(1, (an - ucus.t0) \/ ucus.sure), e = yumusat(f);\n  for (var k in ucus.b) kam[k] = ucus.a[k] + (ucus.b[k] - ucus.a[k]) * e;\n  if (f >= 1) ucus = null;\n}\n\nvar C = {\n  kara:   '#F2F1EE',\n  zemin:  '#DCE6CB',\n  park:   '#C2D3AA',\n\n  deniz:  '#AFD1E6',\n  yol:    '#F7F6F4',\n\n  ilceKontur: '#D2D1CC',\n  ray: '#8E8B87',\n  rayBant: '#6E6B67',\n\n  minibus: '#98948F',\n  minibusBant: '#57534F',\n  sinir:  '#C9C5BF',\n  isaret: '#A9584A',\n  sokakBant: '#B0604E'\n};\n\nvar T = {\n  cati: '#F4F2EE', catiSoluk: '#F8F7F4',\n  duvar: '#D2CEC7', duvarSoluk: '#E9E7E3',\n  bizCati: '#B4614F', bizDuvar: '#8E4539', bizKontur: '#7A3B31',\n  doku: '#D2CDC4', mahTint: 0.45, govde: '#3A3733',\n  bagdatKilif: 'rgba(58,55,51,.30)', bagdatCekirdek: '#FBFAF8',\n\n  parkTara: 'rgba(108,132,84,.34)', denizTara: 'rgba(88,140,174,.40)'\n};\nif (D.tema === 'koyu') {\n  C.kara = '#22242A';\n  C.deniz = '#171B22';\n\n  C.park = '#282D2B';\n  C.yol = '#4A4E55';\n  C.ilceKontur = '#3A3E45';  C.sinir = '#3A3E45';\n  C.ray = '#6B7079';         C.rayBant = '#4A4E55';\n  C.minibus = '#71767F';     C.minibusBant = '#3A3E45';\n  C.sokakBant = '#8E4539';\n  C.isaret = '#C9704F';\n  T.cati = '#C9C7C2';  T.catiSoluk = '#B4B2AE';\n  T.duvar = '#8E8B87'; T.duvarSoluk = '#7C7975';\n  T.bizCati = '#C9704F'; T.bizDuvar = '#8E4539'; T.bizKontur = '#E5A184';\n  T.doku = '#2C3036';\n  T.mahTint = 0;\n  T.govde = '#E7E5E1';\n\n  T.bagdatKilif = 'rgba(232,230,226,.16)';\n  T.bagdatCekirdek = '#9AA0A8';\n\n  T.parkTara = 'rgba(152,176,142,.22)';\n  T.denizTara = 'rgba(108,148,180,.15)';\n}\n\nfunction _lum(r, g, b) {\n  function f(c) { c \/= 255; return c <= 0.03928 ? c \/ 12.92 : Math.pow((c + 0.055) \/ 1.055, 2.4); }\n  return 0.2126 * f(r) + 0.7152 * f(g) + 0.0722 * f(b);\n}\nfunction kontrastaKaldir(renk, zemin, hedef) {\n  var v = parseInt(renk.slice(1), 16), r = v >> 16, g = (v >> 8) & 255, b = v & 255;\n  var z = parseInt(zemin.slice(1), 16), lz = _lum(z >> 16, (z >> 8) & 255, z & 255);\n  for (var t = 0; t <= 0.9; t += 0.02) {\n    var R = Math.round(r + (255 - r) * t), G = Math.round(g + (255 - g) * t), B = Math.round(b + (255 - b) * t);\n    var l = _lum(R, G, B);\n    if ((Math.max(l, lz) + 0.05) \/ (Math.min(l, lz) + 0.05) >= hedef) return 'rgb(' + R + ',' + G + ',' + B + ')';\n  }\n  return '#fff';\n}\nvar _km = {};\nfunction karisim(a, b, t) {\n  var anah = a + b + (t * 100 | 0);\n  if (_km[anah]) return _km[anah];\n  var A = parseInt(a.slice(1), 16), B = parseInt(b.slice(1), 16);\n  var o = 'rgb(' + Math.round((A >> 16) + (((B >> 16) - (A >> 16)) * t)) + ',' +\n    Math.round(((A >> 8) & 255) + ((((B >> 8) & 255) - ((A >> 8) & 255)) * t)) + ',' +\n    Math.round((A & 255) + (((B & 255) - (A & 255)) * t)) + ')';\n  _km[anah] = o; return o;\n}\nvar _g = {};\nfunction golge(renk, k) {\n  var anah = renk + '|' + (k * 100 | 0);\n  if (_g[anah]) return _g[anah];\n  var m = \/rgb\\((\\d+),(\\d+),(\\d+)\\)\/.exec(renk), r, g, b;\n  if (m) { r = +m[1]; g = +m[2]; b = +m[3]; }\n  else { var v = parseInt(renk.slice(1), 16); r = v >> 16; g = (v >> 8) & 255; b = v & 255; }\n  var o = 'rgb(' + Math.round(r * k) + ',' + Math.round(g * k) + ',' + Math.round(b * k) + ')';\n  _g[anah] = o; return o;\n}\n\nvar cizilen = 0, dusen = 0, gorunen = 0;\nvar CAP = 9000;\n\nfunction hatCiz(hatlar, renk, kalinlik, alfa, kapali) {\n  ctx.strokeStyle = renk; ctx.lineWidth = kalinlik;\n  ctx.globalAlpha = alfa == null ? 1 : alfa;\n  ctx.lineJoin = 'round'; ctx.lineCap = 'round';\n  ctx.beginPath();\n  for (var i = 0; i < hatlar.length; i++) {\n    var h = hatlar[i], c = [], j;\n    for (j = 0; j < h.length; j++) c.push(kamUzay(h[j][0], h[j][1], 0));\n    var k = yakinKirp(c, !!kapali);\n    if (k.length < 2) continue;\n    var s = ekranaAl(k[0]); ctx.moveTo(s[0], s[1]);\n    for (j = 1; j < k.length; j++) { s = ekranaAl(k[j]); ctx.lineTo(s[0], s[1]); }\n    if (kapali) ctx.closePath();\n  }\n  ctx.stroke(); ctx.globalAlpha = 1;\n}\n\nvar liste = [];\n\nvar KABA_KUYRUK = 180;\nvar hareketSon = -1e9;\nfunction kipirdat() { hareketSon = performance.now(); }\n\nvar sTuval = document.createElement('canvas');\nvar sCtx = sTuval.getContext('2d');\nvar sAnahtar = '';\n\nfunction sahneAnahtari() {\n  return Math.round(kam.tx) + ',' + Math.round(kam.ty) + ',' +\n    Math.round(kam.dist) + ',' + kam.pit.toFixed(2) + ',' + kam.head.toFixed(2) +\n    ',' + W + ',' + H + ',' + DPR +\n    ',' + UI.secili + ',' + durum.yuk.toFixed(4) + ',' + durum.sol.toFixed(4) +\n    ',' + (UI.guven ? 1 : 0) + ',' + (UI.soluk ? 1 : 0) + ',' + (UI.sokak ? 1 : 0) +\n    ',' + (UI.kaba ? 1 : 0) + ',' + (UI.kabaZemin ? 1 : 0) + ',' + veriSurum;\n}\n\nfunction* sahneCizAsamali() {\n  ctx.fillStyle = C.kara; ctx.fillRect(0, 0, W, H);\n\n  var i;\n\n  if (denizPoli) { poliDoldur(denizPoli, C.deniz); denizTara(denizPoli); }\n  for (i = 0; i < ilceHat.length; i++) poliDoldur(ilceHat[i], C.kara);\n  hatCiz(ilceHat, C.ilceKontur, 1.1, 1, true);\n  yield;\n\n  for (i = 0; i < mahalleler.length; i++) {\n\n    var t = T.mahTint;\n    poliDoldur(mahalleler[i].sinir, karisim(C.kara, mahalleler[i].renk, t));\n  }\n  if (D.tema === 'koyu') {\n    for (i = 0; i < mahalleler.length; i++) {\n      if (!mahalleler[i].kontur) mahalleler[i].kontur = kontrastaKaldir(mahalleler[i].renk, C.kara, 4.5);\n      if (i !== UI.secili) hatCiz([mahalleler[i].sinir], mahalleler[i].kontur, 2.0, .85, true);\n    }\n  } else {\n    hatCiz(mahalleler.map(function (m) { return m.sinir; }), '#fff', 1.6, 1, true);\n  }\n\n  for (i = 0; i < parklar.length; i++) poliDoldur(parklar[i], C.park);\n\n  for (i = 0; i < resmiPark.length; i++) poliDoldur(resmiPark[i], C.park);\n\n  tarananPark = 0; tarananCizgi = 0;\n  for (i = 0; i < parklar.length; i++) parkTara(parklar[i]);\n  for (i = 0; i < resmiPark.length; i++) parkTara(resmiPark[i]);\n  yield;\n\n  if (UI.secili >= 0)\n    hatCiz([mahalleler[UI.secili].sinir],\n           D.tema === 'koyu' ? mahalleler[UI.secili].kontur : mahalleler[UI.secili].renk,\n           D.tema === 'koyu' ? 3.5 : 2.2, D.tema === 'koyu' ? 1 : .9, true);\n\n  hatCiz(yollar, C.yol, 3.2, 1);\n  if (caddeler.length) hatCiz(caddeler, C.yol, 6.0, 1);\n  yield;\n\n  if (bagdatHat.length) {\n    hatCiz(bagdatHat, T.bagdatKilif, 11.0, 1);\n    hatCiz(bagdatHat, T.bagdatCekirdek, 7.6, 1);\n  }\n\n  if (minibusHat.length) hatCiz(minibusHat, C.minibus, 6.0, .9);\n\n  if (raylar.length) {\n    hatCiz(raylar, C.ray, 4.2, .85);\n    ctx.setLineDash([5, 5]);\n    hatCiz(raylar, '#FFFFFF', 1.6, .9);\n    ctx.setLineDash([]);\n  }\n  yield* disDokuCizAsamali();\n  yield;\n\n  if (UI.sokak) {\n\n    var par = 0.25 + 0.75 * durum.sol;\n    var kal = kam.dist < 3200 ? 7.5 : 3.2;\n    hatCiz(sokaklar, C.sokakBant, kal + 5, .10 * par);\n    hatCiz(sokaklar, C.sokakBant, kal, .95 * par);\n  }\n\n  liste.length = 0;\n  var n = binalar.length, M = 140;\n  for (i = 0; i < n; i++) {\n    if ((i & 2047) === 2047) yield;\n    var b = binalar[i];\n    var vx = b.cx - ex, vy = b.cy - ey;\n    var d = vx * fx + vy * fy - ez * fz;\n    if (d < 20) continue;\n    var s2 = yansit(b.cx, b.cy, 0);\n    if (!s2) continue;\n    if (s2[0] < -M || s2[0] > W + M || s2[1] < -M || s2[1] > H + M) continue;\n    var boy = odak * b.r * 2 \/ d;\n    if (boy < 1.2 && !b.biz) continue;\n    b._d = d;\n\n    b._duz = (odak * b.z * durum.yuk \/ d) < 2.2 && !b.biz;\n    liste.push(b);\n  }\n  liste.sort(function (a, b) { return b._d - a._d; });\n  dusen = 0;\n  if (liste.length > CAP) { dusen = liste.length - CAP; liste = liste.slice(dusen); }\n  gorunen = liste.length;\n\n  sokakAdCiz();\n\n  cizilen = 0;\n  for (i = 0; i < liste.length; i++) { binaCiz(liste[i]); if ((i & 511) === 511) yield; }\n\n}\n\nvar sTuvalArka = document.createElement('canvas');\nvar sCtxArka   = sTuvalArka.getContext('2d');\nvar tazeleme   = null, tazeAnahtar = '', tazeKam = null;\nvar TASMA = 1.2, sTasma = 1, tazeTasma = 1;\nvar KARE_BUTCE_MS = 12;\nvar onbellekKam = null;\n\nfunction tazelemeIsle(anahtar, tam) {\n  if (tazeleme === null) {\n    tazeTasma = tam ? 1 : TASMA;\n    var gw = Math.round(cv.width * tazeTasma), gh = Math.round(cv.height * tazeTasma);\n    if (sTuvalArka.width !== gw || sTuvalArka.height !== gh) { sTuvalArka.width = gw; sTuvalArka.height = gh; }\n    tazeKam = { tx: kam.tx, ty: kam.ty, dist: kam.dist, pit: kam.pit, head: kam.head };\n    tazeAnahtar = anahtar;\n    tazeleme = sahneCizAsamali();\n  }\n\n  var kayit = { tx: kam.tx, ty: kam.ty, dist: kam.dist, pit: kam.pit, head: kam.head };\n  kam.tx = tazeKam.tx; kam.ty = tazeKam.ty; kam.dist = tazeKam.dist; kam.pit = tazeKam.pit; kam.head = tazeKam.head;\n  kamKur();\n  var son = tam ? Infinity : performance.now() + KARE_BUTCE_MS, ana = ctx, bitti = false;\n  var W0 = W, H0 = H; W = W0 * tazeTasma; H = H0 * tazeTasma;\n  ctx = sCtxArka;\n  ctx.setTransform(DPR, 0, 0, DPR, 0, 0);\n  try {\n    while (performance.now() < son) {\n      if (tazeleme.next().done) { bitti = true; break; }\n    }\n  } finally { W = W0; H = H0; ctx = ana; }\n  kam.tx = kayit.tx; kam.ty = kayit.ty; kam.dist = kayit.dist; kam.pit = kayit.pit; kam.head = kayit.head;\n  kamKur();\n  if (bitti) {\n    tazeleme = null;\n    if (sTuvalArka.width !== Math.round(cv.width * tazeTasma) || sTuvalArka.height !== Math.round(cv.height * tazeTasma)) return false;\n    var tt = sTuval, tc = sCtx;\n    sTuval = sTuvalArka; sCtx = sCtxArka;\n    sTuvalArka = tt;     sCtxArka = tc;\n    sAnahtar = tazeAnahtar;\n    onbellekKam = tazeKam; sTasma = tazeTasma;\n    return true;\n  }\n  return false;\n}\n\nfunction blitParam() {\n  if (!onbellekKam) return null;\n  if (Math.abs(kam.head - onbellekKam.head) > 0.5) return null;\n  if (Math.abs(kam.pit  - onbellekKam.pit)  > 0.5) return null;\n  var o = onbellekKam.dist \/ kam.dist;\n  if (Math.abs(o - 1) > 0.002) return null;\n  var h = kam.head * Math.PI \/ 180, p = kam.pit * Math.PI \/ 180;\n  var c = Math.cos(h), s = Math.sin(h);\n  var dx = kam.tx - onbellekKam.tx, dy = kam.ty - onbellekKam.ty;\n  var px = odak * (-dx * c + dy * s) \/ kam.dist;\n  var py = odak * Math.sin(p) * (dx * s + dy * c) \/ kam.dist;\n  return { o: o, px: px, py: py };\n}\nfunction onbellekBas() {\n  var m = sTasma;\n  ctx.drawImage(sTuval, 0, 0, sTuval.width, sTuval.height, -W * (m - 1) \/ 2, -H * (m - 1) \/ 2, W * m, H * m);\n}\n\nvar BANT = 40;\nfunction yaklasikHazirla() {\n  var ok = onbellekKam, p = kam.pit * Math.PI \/ 180;\n  var dd = kam.dist - ok.dist;\n\n  var Ex = (kam.tx - ok.tx) - dd * fx, Ey = (kam.ty - ok.ty) - dd * fy, Ez = -dd * fz;\n  return { Ef: Ex * fx + Ey * fy + Ez * fz, Er: Ex * rx + Ey * ry,\n           Eu: Ex * ux + Ey * uy + Ez * uz, ez: ok.dist * Math.sin(p) };\n}\n\nfunction satirDonusum(y, a) {\n  var b = (H \/ 2 - y) \/ odak, payda = fz + b * uz;\n  var cz = (payda < -1e-6) ? (-a.ez \/ payda) : 1e7;\n  var cz2 = cz - a.Ef;\n  if (cz2 < NEAR) cz2 = NEAR;\n  return { s: cz \/ cz2, tX: -odak * a.Er \/ cz2, tY: odak * a.Eu \/ cz2 };\n}\nvar KIRILMA_ESIK = 16;\nfunction kirilma() {\n  if (!onbellekKam) return 1e9;\n  var a = yaklasikHazirla(), m = sTasma;\n  var u = satirDonusum(-H * (m - 1) \/ 2, a), l = satirDonusum(H + H * (m - 1) \/ 2, a);\n  return Math.abs(u.tX - l.tX) + Math.abs(u.tY - l.tY) + Math.abs(u.s - l.s) * W \/ 2;\n}\nfunction yaklasikBlit(q) {\n  if (!q || !sTuval.width || !onbellekKam) return false;\n  var a = yaklasikHazirla(), m = sTasma;\n\n  if (Math.abs(a.Ef) < 0.05 && Math.abs(a.Er) < 0.05 && Math.abs(a.Eu) < 0.05) { onbellekBas(); return true; }\n  var yA = -H * (m - 1) \/ 2, yB = H + H * (m - 1) \/ 2, adim = (yB - yA) \/ BANT;\n  ctx.fillStyle = C.kara; ctx.fillRect(0, 0, W, H);\n  var ust = satirDonusum(yA, a), dyUst = H \/ 2 + (yA - H \/ 2) * ust.s + ust.tY;\n  for (var i = 0; i < BANT; i++) {\n    var ya = yA + i * adim, yb = ya + adim;\n    var alt = satirDonusum(yb, a), dyAlt = H \/ 2 + (yb - H \/ 2) * alt.s + alt.tY;\n    var orta = satirDonusum(ya + adim \/ 2, a);\n    var dh = dyAlt - dyUst;\n    if (dh > 0.01 && dyAlt > 0 && dyUst < H) {\n      var dw = W * m * orta.s, dx = W \/ 2 - (W * m \/ 2) * orta.s + orta.tX;\n\n      var sy = (ya - yA) * DPR, sh = adim * DPR, ek = sh \/ dh;\n      ctx.drawImage(sTuval, 0, sy, sTuval.width, Math.min(sh + ek, sTuval.height - sy), dx, dyUst, dw, dh + 1);\n    }\n    ust = alt; dyUst = dyAlt;\n  }\n  return true;\n}\n\nvar elOlcum = null, elZaman = null, olcumSon = 0;\nfunction olcumYaz(ms, isabet, tazeliyor) {\n  if (!elOlcum) elOlcum = document.getElementById('olcum');\n  if (!elOlcum) return;\n  var an = performance.now();\n  if (an - olcumSon < 250) return;\n  olcumSon = an;\n  elOlcum.textContent =\n    binalar.length + ' bina \u00b7 ' + gorunen + ' kadrajda' +\n    (dusen ? ' \u00b7 ' + dusen + ' ELENDI' : '') +\n    ' \u00b7 ' + cizilen + ' y\u00fczey \u00b7 ' + ms.toFixed(1) + ' ms\/kare' +\n    ' \u00b7 tarama ' + tarananPark + '\/' + tarananCizgi + ' \u00b7 deniz ' + denizCizgi +\n    (isabet ? ' \u00b7 ONBELLEK' : tazeliyor ? ' \u00b7 TAZELENIYOR' : '') +\n    (UI.kaba ? ' \u00b7 KABA' : UI.kabaZemin ? ' \u00b7 kaba zemin' : '');\n}\n\nfunction ciz(dt) {\n  var t0 = performance.now();\n  kamKur();\n  var anahtar = sahneAnahtari(), q = null;\n  if (anahtar !== sAnahtar) {\n    q = ucus ? null : blitParam();\n    if (q && kirilma() > KIRILMA_ESIK) q = null;\n    if (!q) {\n\n      tazeleme = null;\n      tazelemeIsle(anahtar, true);\n    } else {\n      tazelemeIsle(anahtar);\n      if (anahtar === sAnahtar) q = null;\n    }\n  }\n  if (q) {\n    yaklasikBlit(q);\n    isaretCiz(dt);\n  } else {\n    if (sTuval.width) onbellekBas();\n    isaretCiz(dt);\n  }\n  if (planDugme) {\n    var _pl = kam.pit > 80;\n    if (_pl !== planSon) { planDugme.classList.toggle('acik', _pl); planDugme.setAttribute('aria-pressed', _pl ? 'true' : 'false'); planSon = _pl; }\n  }\n  olcumYaz(performance.now() - t0, anahtar === sAnahtar, tazeleme !== null);\n}\n\nfunction* disDokuCizAsamali() {\n  if (!disDoku.length) return;\n\n  var esik = UI.kabaZemin ? 1.1 : 0.3;\n  ctx.fillStyle = T.doku;\n  var n = 0;\n  for (var i = 0; i < disDoku.length; i++) {\n    if ((i & 1023) === 1023) yield;\n    var b = disDoku[i];\n    var vx = b.x - ex, vy = b.y - ey;\n    var d = vx * fx + vy * fy;\n    if (d < b.r + 40) continue;\n    var s0 = yansit(b.x, b.y, 0);\n    if (!s0) continue;\n    var yari = odak * b.r \/ d;\n    if (s0[0] < -yari - 20 || s0[0] > W + yari + 20 ||\n        s0[1] < -yari - 20 || s0[1] > H + yari + 20) continue;\n\n    if (yari < esik) continue;\n    var g = b.g, a0 = yansit(g[0][0], g[0][1], 0);\n    if (!a0) continue;\n    ctx.beginPath(); ctx.moveTo(a0[0], a0[1]);\n    var iyi = true;\n    for (var j = 1; j < g.length; j++) {\n      var c = yansit(g[j][0], g[j][1], 0);\n      if (!c) { iyi = false; break; }\n      ctx.lineTo(c[0], c[1]);\n    }\n    if (!iyi) continue;\n    ctx.closePath(); ctx.fill(); n++;\n  }\n  cizilen += n;\n}\n\nvar tepe = [], taban = [];\nfunction binaCiz(b) {\n  var h = b.h, n = h.length, i;\n  var z = b.z * durum.yuk;\n  var solukluk = (b.biz || !UI.soluk) ? 0 : durum.sol;\n\n  var duz = b._duz;\n\n  var catiR, duvarR;\n  if (b.biz) {\n    catiR = T.bizCati; duvarR = T.bizDuvar;\n  } else if (UI.guven && !b.olc) {\n\n    catiR = karisim('#EEF2F5', '#F5F7F8', solukluk);\n    duvarR = karisim('#C3CCD3', '#DEE3E7', solukluk);\n  } else {\n\n    catiR = karisim(T.cati, T.catiSoluk, solukluk);\n    duvarR = karisim(T.duvar, T.duvarSoluk, solukluk);\n  }\n\n  taban.length = 0; tepe.length = 0;\n  for (i = 0; i < n; i++) {\n    var a = yansit(h[i][0], h[i][1], 0);\n    if (!a) return;\n    taban.push(a[0], a[1]);\n    if (!duz) {\n      var c = yansit(h[i][0], h[i][1], z);\n      if (!c) return;\n      tepe.push(c[0], c[1]);\n    }\n  }\n\n  if (duz) {\n    ctx.fillStyle = catiR;\n    ctx.beginPath(); ctx.moveTo(taban[0], taban[1]);\n    for (i = 1; i < n; i++) ctx.lineTo(taban[i * 2], taban[i * 2 + 1]);\n    ctx.closePath(); ctx.fill(); cizilen++;\n    return;\n  }\n\n  if (z > 0.5) {\n\n    var gen = 0.28 * (1 - 0.55 * solukluk);\n    for (i = 0; i < n; i++) {\n      var j = (i + 1) % n;\n      var px = h[i][0], py = h[i][1];\n      var dx = h[j][0] - px, dy = h[j][1] - py;\n      var nx = dy, ny = -dx;\n      if (nx * (ex - px) + ny * (ey - py) <= 0) continue;\n      var uz2 = Math.hypot(nx, ny) || 1;\n      ctx.fillStyle = golge(duvarR,\n        (1 - gen) + gen * ((nx \/ uz2) * -0.55 + (ny \/ uz2) * 0.83));\n      ctx.beginPath();\n      ctx.moveTo(taban[i * 2], taban[i * 2 + 1]);\n      ctx.lineTo(taban[j * 2], taban[j * 2 + 1]);\n      ctx.lineTo(tepe[j * 2], tepe[j * 2 + 1]);\n      ctx.lineTo(tepe[i * 2], tepe[i * 2 + 1]);\n      ctx.closePath(); ctx.fill();\n      cizilen++;\n    }\n  }\n\n  ctx.fillStyle = catiR;\n  ctx.beginPath(); ctx.moveTo(tepe[0], tepe[1]);\n  for (i = 1; i < n; i++) ctx.lineTo(tepe[i * 2], tepe[i * 2 + 1]);\n  ctx.closePath(); ctx.fill(); cizilen++;\n  if (b.biz) { ctx.strokeStyle = T.bizKontur; ctx.lineWidth = 1; ctx.stroke(); }\n\n}\n\nvar KUNYE_FONT = '\"neue-haas-unica\",\"Helvetica Neue\",Helvetica,Arial,sans-serif';\n\nvar sokakAdlari = (function () {\n  var out = [], par = (D.sokakad || '').split(';'), i;\n  for (i = 0; i < par.length; i++) {\n    var t = par[i].split('|');\n    if (t.length < 5) continue;\n    var lon = 29 + (+t[1]) \/ 1e5, lat = 40 + (+t[2]) \/ 1e5;\n    var lon2 = 29 + ((+t[1]) + (+t[3])) \/ 1e5, lat2 = 40 + ((+t[2]) + (+t[4])) \/ 1e5;\n    var X = mx(lon), Y = my(lat), dx = mx(lon2) - X, dy = my(lat2) - Y;\n    var n = Math.hypot(dx, dy) || 1;\n    out.push({ ad: t[0], X: X, Y: Y, UX: dx \/ n, UY: dy \/ n });\n  }\n  return out;\n})();\n\nvar YAZI_M = 13;\nfunction sokakAdCiz() {\n  var liste = sokakAdlari.slice();\n  if (rayAdi) liste.push(rayAdi);\n  if (minibusAdi) liste.push(minibusAdi);\n  liste = liste.concat(parkAdlari);\n  if (!liste.length || kam.dist > 3400 || durum.sol < 0.5) return;\n  var gorunur = Math.min(1, (3400 - kam.dist) \/ 900) * Math.min(1, (durum.sol - 0.5) \/ 0.2);\n  if (gorunur <= 0.02) return;\n  var k = YAZI_M \/ 10;\n  ctx.save();\n  ctx.font = '700 10px ' + KUNYE_FONT;\n  ctx.textAlign = 'center'; ctx.textBaseline = 'middle';\n  var alan = [], i, j;\n  for (i = 0; i < liste.length; i++) {\n    var s = liste[i];\n    var o = yansit(s.X, s.Y, 0); if (!o) continue;\n    var ox = o[0], oy = o[1];\n    if (ox < -80 || ox > W + 80 || oy < -80 || oy > H + 80) continue;\n\n    var ux = s.UX, uy = s.UY;\n    var a1 = yansit(s.X + ux * k, s.Y + uy * k, 0); if (!a1) continue;\n    var ax = a1[0] - ox, ay = a1[1] - oy;\n    if (ax < 0) {\n      ux = -ux; uy = -uy;\n      a1 = yansit(s.X + ux * k, s.Y + uy * k, 0); if (!a1) continue;\n      ax = a1[0] - ox; ay = a1[1] - oy;\n    }\n    var b1 = yansit(s.X - uy * k, s.Y + ux * k, 0); if (!b1) continue;\n    var bx = b1[0] - ox, by = b1[1] - oy;\n    if (ax * by - ay * bx < 0) { bx = -bx; by = -by; }\n\n    var pxYuk = Math.hypot(bx, by) * 10;\n    if (pxYuk < 9) continue;\n\n    var g = ctx.measureText(s.ad).width;\n    var yariEn = g \/ 2 * Math.hypot(ax, ay);\n    var carpti = false;\n    for (j = 0; j < alan.length; j++) {\n      if (Math.hypot(alan[j][0] - ox, alan[j][1] - oy) < (alan[j][2] + yariEn) * 0.8) {\n        carpti = true; break;\n      }\n    }\n    if (carpti) continue;\n    alan.push([ox, oy, yariEn]);\n\n    ctx.save();\n    ctx.transform(ax, ay, bx, by, ox, oy);\n    ctx.globalAlpha = gorunur * 0.94;\n    var park_mi = parkAdlari.indexOf(s) >= 0;\n    if (park_mi) {\n\n      ctx.fillStyle = 'rgba(255,255,255,0)';\n    } else {\n      ctx.fillStyle = (s === rayAdi) ? C.rayBant\n                    : (s === minibusAdi) ? C.minibusBant : C.sokakBant;\n    }\n    ctx.beginPath();\n    if (ctx.roundRect) ctx.roundRect(-g \/ 2 - 4, -7.5, g + 8, 15, 7.5);\n    else ctx.rect(-g \/ 2 - 4, -7.5, g + 8, 15);\n    ctx.fill();\n    ctx.globalAlpha = gorunur * (park_mi ? 0.92 : 1);\n    if (park_mi) {\n      ctx.strokeStyle = 'rgba(90,110,70,.55)'; ctx.lineWidth = 2.4;\n      ctx.lineJoin = 'round'; ctx.strokeText(s.ad, 0, 0.5);\n    }\n    ctx.fillStyle = '#fff';\n    ctx.fillText(s.ad, 0, 0.5);\n    ctx.restore();\n  }\n  ctx.restore();\n  ctx.globalAlpha = 1;\n}\n\nvar ekranProje = [];\n\nfunction isabetBul(px, py) {\n  var en = null, ed = 1e9;\n  for (var i = 0; i < ekranProje.length; i++) {\n    var k = ekranProje[i];\n    var dUc = Math.hypot(k.tx - px, k.ty - py);\n    var dBina = Math.hypot(k.x - px, k.y - py);\n    var d = Math.min(dUc \/ 44, dBina \/ Math.max(26, k.r + 8));\n    if (d < 1 && d < ed) { ed = d; en = k; }\n  }\n  return en;\n}\n\nfunction isaretCiz(dt) {\n  ekranProje.length = 0;\n  if (durum.sol < 0.15) return;\n  var alfa = Math.min(1, (durum.sol - 0.15) \/ 0.5), i;\n\n  var yaklas = 1 - Math.exp(-dt \/ 55);\n\n  for (i = 0; i < projeler.length; i++) {\n    var p = projeler[i];\n\n    var disMah = (UI.secili >= 0 && p.m !== UI.secili);\n    var b = (p.b != null) ? binalar[p.b] : null;\n\n    var X = b ? b.cx : p.X, Y = b ? b.cy : p.Y;\n    var bz = b ? b.z * durum.yuk : 20;\n    var s = yansit(X, Y, bz + 4);\n    if (!s) { p._u = 0; continue; }\n    var sx = s[0], sy = s[1], derinlik = s[2];\n    if (sx < -60 || sx > W + 60 || sy < -60 || sy > H + 60) { p._u = 0; continue; }\n\n    var yaricap = b ? Math.max(16, odak * b.r \/ derinlik) : 16;\n\n    var hedef = (UI.hover === p || UI.acik === p) ? 1 : 0;\n    if (p._u == null) p._u = 0;\n    p._u += (hedef - p._u) * yaklas;\n    if (p._u < 0.002) p._u = 0;\n\n    var boy = 19 + 46 * p._u;\n    var tx = sx, ty = sy - boy;\n    ekranProje.push({ x: sx, y: sy, tx: tx, ty: ty, r: yaricap, p: p, dis: disMah });\n\n    ctx.globalAlpha = alfa * (disMah ? 0.34 : 1);\n\n    if (p._u > 0.02) {\n      ctx.strokeStyle = C.isaret; ctx.lineWidth = 1.4;\n      ctx.globalAlpha = alfa * 0.55 * p._u;\n      ctx.beginPath(); ctx.arc(sx, sy, yaricap + 5, 0, 6.2832); ctx.stroke();\n      ctx.globalAlpha = alfa * (disMah ? 0.34 : 1);\n    }\n\n    ctx.strokeStyle = C.isaret; ctx.lineWidth = 2.0 + 1.2 * p._u;\n    ctx.beginPath(); ctx.moveTo(sx, sy); ctx.lineTo(tx, ty + 3); ctx.stroke();\n    ctx.fillStyle = C.isaret;\n    ctx.beginPath(); ctx.arc(tx, ty, 5.4 + 3.0 * p._u, 0, 6.2832); ctx.fill();\n    ctx.strokeStyle = '#fff'; ctx.lineWidth = 1.6; ctx.stroke();\n  }\n\n  ctx.font = '500 12px ' + KUNYE_FONT;\n  ctx.textAlign = 'left'; ctx.textBaseline = 'middle';\n  for (i = 0; i < ekranProje.length; i++) {\n    var e = ekranProje[i];\n    if (e.p._u < 0.45) continue;\n    ctx.globalAlpha = alfa * Math.min(1, (e.p._u - 0.45) \/ 0.25);\n    var m = ctx.measureText(e.p.a).width;\n    var ax = e.tx + 12;\n    if (ax + m + 6 > W) ax = e.tx - 12 - m;\n    ctx.fillStyle = 'rgba(255,255,255,.88)';\n    ctx.fillRect(ax - 5, e.ty - 9, m + 10, 18);\n    ctx.fillStyle = C.isaret;\n    ctx.fillText(e.p.a, ax, e.ty + 0.5);\n  }\n  ctx.textAlign = 'start'; ctx.textBaseline = 'alphabetic';\n  ctx.globalAlpha = 1;\n  kartYerlestir();\n}\n\nvar PROJE_SAYFA = {\n  'Huzur Apt.|3S Kale': '\/proje\/huzur-apartmani\/',\n  'Metro Home|Helis': '\/proje\/metro-home\/',\n  'K\u0131z\u0131ltoprak Apt.|Intaya Yap\u0131': '\/proje\/intaya-kiziltoprak-apartmani\/',\n  'Beg\u00fcm Apt.|Y\u00fcksel': '\/proje\/yuksel-begum-apartmani\/',\n  'Atike Han\u0131m Apt.|Y\u00fcksel': '\/proje\/atike-hanim-apartmani\/',\n  'Mutlu\u015f Apt.|Y\u0131lta\u015f': '\/proje\/mutlus-apartmani\/',\n  'Kaya Apt.|Sad\u0131ko\u011flu': '\/proje\/sadikoglu-kaya-apt\/',\n  'Sadiye Han\u0131m Apt.|Helis': '\/proje\/sadiye-hanim-apartmani\/',\n  'Deniz Apt.|Helis': '\/proje\/deniz-apartmani\/',\n  'Hakk\u0131 Bey Apt.|A\u011fao\u011flu Cadde': '\/proje\/hakki-bey-apartmani\/'\n};\n\nfunction kd3bKartSinifi(acik) {\n  var k = document.getElementById('kd3b');\n  if (k) { k.classList.toggle('kart-acik', !!acik); }\n\n  if (acik && window.matchMedia('(max-width:900px)').matches) {\n    document.body.classList.add('kd-kart-gorulmus');\n  }\n}\n\nfunction kartYerlestir() {\n  var b = document.getElementById('balon'), i, en = null;\n  for (i = 0; i < ekranProje.length; i++)\n    if (ekranProje[i].p === UI.acik) { en = ekranProje[i]; break; }\n  if (!en || en.p._u < 0.45) { b.style.opacity = 0; b.classList.remove('gel');\n    kd3bKartSinifi(false); return; }\n  var p = en.p, bn = (p.b != null) ? binalar[p.b] : null;\n  if (b._pr !== p) {\n    b._pr = p;\n\n    var im = b.querySelector('.gor');\n    if (p.g) {\n\n      im.style.removeProperty('aspect-ratio');\n      im.style.objectPosition = p.poz || '';\n\n      im.style.opacity = '0';\n      im.onload = function () { im.style.opacity = '1'; };\n      im.onerror = function () { im.style.opacity = '1'; };\n\n      im.alt = p.a + (((document.documentElement.lang || '').slice(0, 2) === 'en')\n        ? ' project image' : ' proje g\u00f6rseli');\n      im.src = p.g; im.style.display = '';\n    } else {\n      im.alt = ''; im.removeAttribute('src'); im.style.display = 'none';\n    }\n\n      var adEl = b.querySelector('.ad'), d = b.querySelector('.detay');\n      b.querySelector('.isv').textContent = p.i || '';\n      b.querySelector('.mh').textContent = '';\n      var yol = PROJE_SAYFA[p.a + '|' + (p.i || '')];\n      adEl.textContent = '';\n      if (yol) {\n        var ing = (document.documentElement.lang || '').slice(0, 2) === 'en';\n        var ab = document.createElement('a');\n        ab.className = 'adbag';\n        ab.setAttribute('href', (ing ? '\/en' : '') + yol);\n        ab.textContent = p.a;\n        adEl.appendChild(ab);\n      } else {\n        adEl.textContent = p.a;\n      }\n      if (d) { d.hidden = true; d.removeAttribute('href'); }\n  }\n  var op = Math.min(1, (en.p._u - 0.45) \/ 0.3);\n  b.style.opacity = op;\n  b.classList.toggle('gel', op > 0.5);\n  kd3bKartSinifi(op > 0.5);\n\n  var METIN_Y = 74;\n\n  var ALT_PAY = window.matchMedia('(max-width:900px)').matches ? 30 : 112;\n  var ust = 26, yaziAlt = 0, yaziGenis = 0;\n  var yz = document.getElementById('yazi');\n  if (yz) {\n    var cr = cv.getBoundingClientRect(), yr = yz.getBoundingClientRect();\n    ust = Math.round(yr.top - cr.top);\n    yaziAlt = Math.round(yr.bottom - cr.top);\n    yaziGenis = yr.width;\n  }\n\n  if (yaziGenis > W * 0.8) ust = yaziAlt + 12;\n\n  var ORAN_W = 4, ORAN_H = 5;\n  var dikey = H > W;\n\n  var TABAN = 300;\n  var TAVAN = Math.max(460, Math.min(819, Math.round(H * 0.42)));\n  var pm = b.querySelector('.pmetin');\n\n  var darEkran = window.matchMedia('(max-width:900px)').matches;\n  var metinY = darEkran ? 0 : ((pm && pm.offsetHeight) ? pm.offsetHeight : METIN_Y);\n\n  var _ar = document.getElementById('arac');\n  if (_ar && !dikey) { var _ab = _ar.offsetTop + _ar.offsetHeight + 12; if (_ab > ust) ust = _ab; }\n\n  var dikeyUst = Math.max(150, yaziAlt + 12);\n  var kalan = H - (dikey ? dikeyUst : ust) - ALT_PAY;\n\n  var gen = Math.floor((kalan - metinY) * ORAN_W \/ ORAN_H);\n  gen = Math.max(TABAN, Math.min(TAVAN, gen));\n  if (dikey) gen = Math.min(gen, W - 32);\n  var gorYuk = Math.round(gen * ORAN_H \/ ORAN_W);\n\n  if (gorYuk + metinY > kalan) {\n    gorYuk = Math.max(120, kalan - metinY);\n    gen = Math.round(gorYuk * ORAN_W \/ ORAN_H);\n  }\n  b.style.width = gen + 'px';\n\n  var im2 = b.querySelector('.gor');\n  if (im2) {\n    im2.style.width = gen + 'px';\n    im2.style.height = gorYuk + 'px';\n    im2.style.objectFit = 'contain';\n    im2.style.marginLeft = '0';\n    im2.style.marginRight = '0';\n  }\n\n  var yuk = b.offsetHeight || (gorYuk + METIN_Y);\n  if (dikey) {\n\n    b.style.left = Math.round(Math.max(6, (W - gen) \/ 2)) + 'px';\n    b.style.top = Math.round(Math.max(6, H - yuk - ALT_PAY)) + 'px';\n  } else {\n\n    var SAG_PAY = window.matchMedia('(max-width:900px)').matches ? 92 : 28;\n    b.style.left = Math.max(6, W - gen - SAG_PAY) + 'px';\n    b.style.top = Math.max(6, Math.min(H - yuk - 6, ust)) + 'px';\n  }\n}\n\nvar UI = { sokak: true, soluk: true, guven: false, u: 1, oynuyor: false,\n           bas: 0, elde: false, secili: -1, hover: null, mod: 'kaydir',\n           kaba: false, kabaZemin: false, acik: null };\nvar SURE = 6600;\n\nfunction basligiKur() {\n  var k = document.getElementById('kapsam'), s = document.getElementById('sayilar');\n  if (!k || !s) return;\n  if (UI.secili < 0) {\n    k.textContent = 'Kad\u0131k\u00f6y';\n    s.innerHTML = '<b>' + projeler.length + '<\/b> yap\u0131 \u00b7 <b>' + mahalleler.length +\n      '<\/b> mahalle \u00b7 <b>' + binalar.length.toLocaleString('tr-TR') + '<\/b> bina k\u00fctlesi' +\n      ' \u00b7 y\u00fckseklik <b>%' + Math.round(100 * OLCULEN \/ binalar.length) + '<\/b> \u00f6l\u00e7\u00fcl\u00fc';\n  } else {\n    var m = mahalleler[UI.secili];\n    var bs = 0;\n    for (var i = 0; i < binalar.length; i++) if (binalar[i].m === UI.secili) bs++;\n    k.textContent = m.ad;\n    s.innerHTML = '<b>' + m.proje + '<\/b> yap\u0131 \u00b7 <b>' + bs.toLocaleString('tr-TR') +\n      '<\/b> bina k\u00fctlesi \u00b7 y\u00fckseklik <b>%' +\n      Math.round(100 * D.mah[UI.secili].o \/ Math.max(1, D.mah[UI.secili].n)) +\n      '<\/b> \u00f6l\u00e7\u00fcl\u00fc';\n  }\n}\n\nvar ACILIS = { tx: -853, ty: 834, dist: 4809, pit: 30, head: 255 };\n\nvar mahalleOdak = (function () {\n  var o = [], i, j;\n  for (i = 0; i < mahalleler.length; i++) {\n    var m = mahalleler[i], pts = [];\n    for (j = 0; j < projeler.length; j++)\n      if (projeler[j].m === i) pts.push([projeler[j].X, projeler[j].Y]);\n    if (!pts.length) { o.push({ cx: m.cx, cy: m.cy, d: m.d }); continue; }\n    var k = kutu(pts);\n    var d = Math.max((k[2] - k[0]) \/ (TAN * 2 * (16 \/ 9)),\n                     (k[3] - k[1]) * 0.62 \/ (TAN * 2)) * 1.05;\n    o.push({ cx: (k[0] + k[2]) \/ 2, cy: (k[1] + k[3]) \/ 2,\n             d: Math.max(m.d * 0.55, Math.min(m.d, d * 1.6)) });\n  }\n  return o;\n})();\n\nfunction bandiBoya(i) {\n  var kok = document.querySelector('.kd3b');\n  if (!kok) return;\n  if (i < 0 || !mahalleler[i]) { kok.style.removeProperty('--bant'); return; }\n  var t = (D.tema === 'koyu') ? 0.28 : 0.38;\n  var kar = karisim(C.kara, mahalleler[i].renk, t);\n  var m = \/rgb\\((\\d+),(\\d+),(\\d+)\\)\/.exec(kar);\n  var r, g, b;\n  if (m) { r = +m[1]; g = +m[2]; b = +m[3]; }\n  else { var v = parseInt(kar.slice(1), 16); r = v >> 16; g = (v >> 8) & 255; b = v & 255; }\n  kok.style.setProperty('--bant', 'rgba(' + r + ',' + g + ',' + b + ',.96)');\n}\n\nfunction mahalleSec(i) {\n  UI.secili = i;\n  bandiBoya(i);\n  var dug = document.querySelectorAll('#mahaller button');\n  for (var k = 0; k < dug.length; k++) dug[k].classList.toggle('secili', (+dug[k].dataset.i) === i);\n\n  if (i < 0) {\n    ucur({ tx: ACILIS.tx, ty: ACILIS.ty, dist: ACILIS.dist,\n           pit: ACILIS.pit, head: ACILIS.head }, 2400);\n  } else {\n    var o = mahalleOdak[i];\n    ucur({ tx: o.cx, ty: o.cy, dist: o.d,\n           pit: ACILIS.pit, head: ACILIS.head }, 2400);\n  }\n  if (UI.u < 1) { UI.u = 1; var _z2 = document.getElementById('zaman'); if (_z2) _z2.value = 1000; }\n  zamanUygula(1, false);\n  basligiKur();\n}\n\n(function dugmeleriKur() {\n  var kap = document.getElementById('mahaller');\n  var t = document.createElement('button');\n\n  t.textContent = (document.documentElement.lang || '').slice(0, 2) === 'en' ? 'All' : 'T\u00fcm\u00fc';\n  t.dataset.i = -1; t.classList.add('secili');\n  t.addEventListener('click', function () { mahalleSec(-1); });\n  kap.appendChild(t);\n  mahalleler.forEach(function (m, i) {\n    var d = document.createElement('button');\n    d.innerHTML = '<i class=\"leke\" style=\"background:' + m.renk + '\"><\/i>' + m.ad +\n                  (m.proje ? '<span class=\"adet\">' + m.proje + '<\/span>' : '');\n    d.dataset.i = i;\n    d.addEventListener('click', function () { mahalleSec(i); });\n    kap.appendChild(d);\n  });\n})();\n\n(function aracKur() {\n\n  var kz = document.getElementById('kuzeyDugme'), pl = document.getElementById('planDugme');\n  if (kz && kz.parentNode) kz.parentNode.removeChild(kz);\n  if (!pl) return;\n  var kapM = document.getElementById('mahaller');\n  if (kapM) { pl.classList.add('plan-cip'); kapM.appendChild(pl); }\n  var aracKutu = document.getElementById('arac');\n  if (aracKutu && aracKutu.parentNode) aracKutu.parentNode.removeChild(aracKutu);\n  pl.addEventListener('click', function () {\n    kipirdat();\n    if (kam.pit > 80) ucur({ pit: ACILIS.pit, head: ACILIS.head }, 2000);\n    else ucur({ pit: MAKS_PIT, head: 180 }, 2000);\n  });\n})();\nvar planDugme = document.getElementById('planDugme');\nvar pusulaSon = null, planSon = null;\n\nvar oncekiAn = 0;\nfunction dongu(an) {\n  var dt = oncekiAn ? Math.min(64, an - oncekiAn) : 16; oncekiAn = an;\n  if (cv.clientWidth !== W || cv.clientHeight !== H) boyutla();\n  ucusIsle(an);\n  if (zoomHedef !== null) {\n    var zf = zoomHedef - kam.dist;\n    if (Math.abs(zf) < 0.5) { kam.dist = zoomHedef; zoomHedef = null; }\n    else { kam.dist += zf * (1 - Math.exp(-dt \/ ZOOM_TAU)); kipirdat(); }\n  }\n  if (UI.oynuyor) {\n    var u = (an - UI.bas) \/ SURE;\n    if (u >= 1) { u = 1; UI.oynuyor = false; }\n    UI.u = u;\n    if (!elZaman) elZaman = document.getElementById('zaman'); if (elZaman) elZaman.value = Math.round(u * 1000);\n    zamanUygula(u, true);\n  } else {\n    zamanUygula(UI.u, false);\n  }\n  kamSinirla();\n  UI.kaba = !!ucus || (an - hareketSon < KABA_KUYRUK);\n  UI.kabaZemin = UI.kaba || UI.oynuyor;\n  ciz(dt);\n  requestAnimationFrame(dongu);\n}\n\nfunction oynat() {\n  UI.oynuyor = true; UI.bas = performance.now(); UI.elde = false; ucus = null;\n  mahalleSec(-1); UI.secili = -1;\n  var dug = document.querySelectorAll('#mahaller button');\n  for (var k = 0; k < dug.length; k++) dug[k].classList.toggle('secili', dug[k].dataset.i === '-1');\n  ucus = null; basligiKur();\n}\n\nfunction enTasi() {\n  if (window.innerWidth > 900) return;\n  var panel = document.querySelector('.jet-nav-wrap.jet-mobile-menu .jet-nav');\n  if (!panel) return;\n  var satir = panel.querySelector('.menu-item');\n  if (!satir || satir.querySelector('.trp-language-switcher-container')) return;\n  var en = document.querySelector(\n    '.jet-nav-wrap.m-layout-mobile .trp-language-switcher-container');\n  if (!en || en === satir) return;\n  satir.appendChild(en);\n  satir.classList.add('kd-en-satir');\n}\n\nfunction headerOlc() {\n  var h = document.querySelector('.elementor-location-header')\n       || document.querySelector('header');\n\n  var y = h ? Math.round(h.getBoundingClientRect().height) : 0;\n  document.documentElement.style.setProperty('--hdr', y + 'px');\n\n  var alt = h ? Math.round(h.getBoundingClientRect().bottom) : 0;\n  document.documentElement.style.setProperty('--hdrAlt', alt + 'px');\n}\n\nif (\/(^|[?&])yazi=0(&|$)\/.test(location.search)) {\n  var _y = document.querySelector('.kd3b .yazi');\n  if (_y) _y.style.display = 'none';\n\n  document.body.classList.add('kd-listeden');\n  var _k = document.querySelector('.kd3b');\n  if (_k && !_k.querySelector('.listeyeDon')) {\n\n    var _a = document.createElement('a');\n    _a.className = 'listeyeDon';\n\n    var _ing = (document.documentElement.lang || '').slice(0, 2) === 'en';\n    _a.href = (_ing ? '\/en' : '') + '\/kadikoy-kentsel-donusum-projeleri\/';\n    _a.setAttribute('aria-label', _ing ? 'Back to list' : 'Listeye d\u00f6n');\n    _a.setAttribute('title', _ing ? 'Back to list' : 'Listeye d\u00f6n');\n\n    _a.innerHTML = '<svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19 12H5m0 0 6-6m-6 6 6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\n    _k.appendChild(_a);\n  }\n}\n\nif (D.tema === 'koyu') {\n  document.body.classList.add('kd-tam');\n\n  var _mv = document.querySelector('meta[name=viewport]');\n  if (_mv && _mv.content.indexOf('viewport-fit') < 0) {\n    _mv.content += ', viewport-fit=cover';\n  }\n  headerOlc();\n  enTasi();\n  window.addEventListener('load', function () { headerOlc(); enTasi(); });\n  window.addEventListener('resize', function () { headerOlc(); enTasi(); });\n\n  var _t = document.querySelector('.jet-nav__mobile-trigger');\n  if (_t) _t.addEventListener('click', function () { setTimeout(enTasi, 60); });\n}\n\nwindow.addEventListener('resize', boyutla);\n\nfunction bagla(id, olay, islev) {\n  var e = document.getElementById(id);\n  if (e) e.addEventListener(olay, islev);\n  return e;\n}\nbagla('oynat', 'click', oynat);\nbagla('zaman', 'input', function () {\n  UI.oynuyor = false; ucus = null; UI.u = this.value \/ 1000;\n  zamanUygula(UI.u, !UI.elde);\n});\nbagla('solukDug', 'click', function () {\n  UI.soluk = !UI.soluk; this.classList.toggle('acik', UI.soluk);\n  this.textContent = UI.soluk ? 'Ba\u011flam s\u00f6n\u00fck' : 'Ba\u011flam a\u00e7\u0131k';\n});\nbagla('sokakDug', 'click', function () {\n  UI.sokak = !UI.sokak; this.classList.toggle('acik', UI.sokak);\n});\nbagla('guvenDug', 'click', function () {\n  UI.guven = !UI.guven; this.classList.toggle('acik', UI.guven);\n});\n\nvar parmak = {}, iki = null;\nfunction ikiParmakDurum() {\n  var k = Object.keys(parmak);\n  if (k.length < 2) return null;\n  var a = parmak[k[0]], b = parmak[k[1]];\n  var dx = b.x - a.x, dy = b.y - a.y;\n  return { uz: Math.hypot(dx, dy) || 1, aci: Math.atan2(dy, dx) };\n}\n\nvar tut = false, sx0 = 0, sy0 = 0;\n\nvar bx0 = 0, by0 = 0, tasidi = false;\ncv.addEventListener('contextmenu', function (e) { e.preventDefault(); });\ncv.addEventListener('pointerdown', function (e) {\n  parmak[e.pointerId] = { x: e.clientX, y: e.clientY };\n  var d2 = ikiParmakDurum();\n  if (d2) {\n\n    iki = { uz: d2.uz, aci: d2.aci, dist: kam.dist, head: kam.head };\n    tut = false; tasidi = true; cv.classList.remove('tut');\n    UI.elde = true; UI.oynuyor = false; ucus = null;\n    return;\n  }\n  tut = true; UI.elde = true; UI.oynuyor = false; ucus = null; kipirdat();\n  bx0 = e.clientX; by0 = e.clientY; tasidi = false;\n\n  UI.mod = (e.button === 2 || e.shiftKey) ? 'yorunge' : 'kaydir';\n  sx0 = e.clientX; sy0 = e.clientY; cv.classList.add('tut');\n\n  try { cv.setPointerCapture(e.pointerId); } catch (hata) {}\n});\ncv.addEventListener('pointermove', function (e) {\n  if (parmak[e.pointerId]) { parmak[e.pointerId].x = e.clientX; parmak[e.pointerId].y = e.clientY; }\n  if (iki) {\n    var d2 = ikiParmakDurum();\n    if (d2) {\n      zoomHedef = null;\n      kam.dist = Math.max(MIN_D, Math.min(MAKS_D, iki.dist * (iki.uz \/ d2.uz)));\n      var fark = (d2.aci - iki.aci) * 180 \/ Math.PI;\n      while (fark > 180) fark -= 360;\n      while (fark < -180) fark += 360;\n      kam.head = iki.head - fark;\n      kamSinirla(); kipirdat();\n    }\n    return;\n  }\n  if (tut && e.buttons === 0) { tut = false; cv.classList.remove('tut'); }\n  if (tut) {\n    var dxs = e.clientX - sx0, dys = e.clientY - sy0;\n    if (UI.mod === 'yorunge') {\n      kam.head -= dxs * 0.28;\n      kam.pit = kam.pit + dys * 0.22;\n    } else {\n\n      var mpp = kam.dist * 2 * TAN \/ Math.max(1, H);\n      var fn = Math.hypot(fx, fy) || 1;\n      var sp = Math.max(0.25, Math.sin(kam.pit * Math.PI \/ 180));\n      kam.tx += (-rx * dxs + (fx \/ fn) * dys \/ sp) * mpp;\n      kam.ty += (-ry * dxs + (fy \/ fn) * dys \/ sp) * mpp;\n    }\n    sx0 = e.clientX; sy0 = e.clientY;\n    if (Math.abs(e.clientX - bx0) + Math.abs(e.clientY - by0) > 5) tasidi = true;\n    kipirdat();\n    return;\n  }\n\n  var r = cv.getBoundingClientRect();\n  var px = e.clientX - r.left, py = e.clientY - r.top;\n  var en = isabetBul(px, py);\n  UI.hover = en ? en.p : null;\n  cv.style.cursor = en ? 'pointer' : '';\n});\nfunction parmakBirak(e) {\n  delete parmak[e.pointerId];\n  if (Object.keys(parmak).length < 2) iki = null;\n}\nwindow.addEventListener('pointercancel', parmakBirak);\nwindow.addEventListener('pointerup', function (e) {\n  parmakBirak(e);\n  var basiliydi = tut;\n  tut = false; cv.classList.remove('tut');\n\n  if (!basiliydi || tasidi) return;\n  var r = cv.getBoundingClientRect();\n  var px = e.clientX - r.left, py = e.clientY - r.top;\n  if (px < 0 || py < 0 || px > r.width || py > r.height) return;\n  var en = isabetBul(px, py);\n  UI.acik = en ? en.p : null;\n});\n\nvar zoomHedef = null, ZOOM_TAU = 94;\ncv.addEventListener('wheel', function (e) {\n  e.preventDefault(); UI.elde = true; UI.oynuyor = false; ucus = null; kipirdat();\n  var k = Math.max(-1, Math.min(1, e.deltaY \/ 100));\n  var temel = (zoomHedef !== null) ? zoomHedef : kam.dist;\n  zoomHedef = Math.max(MIN_D, Math.min(MAKS_D, temel * Math.exp(k * Math.log(1.069))));\n}, { passive: false });\n\nboyutla();\nbasligiKur();\n\nzamanUygula(1, false);\n\nkam.tx = ACILIS.tx; kam.ty = ACILIS.ty;\nkam.dist = ACILIS.dist; kam.pit = ACILIS.pit; kam.head = ACILIS.head;\nkamSinirla();\nrequestAnimationFrame(dongu);\n\n})();\n\n(function () {\n  var d = document.querySelector('.kd3b .yazi details.devam');\n  if (d && window.matchMedia('(min-width:1025px)').matches) { d.open = true; }\n})();\n<\/script><script async src=\"https:\/\/bfta.com.tr\/wp-content\/uploads\/kd\/kd-veri-c-88e01e05ae.js\"><\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3428","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/bfta.com.tr\/en\/wp-json\/wp\/v2\/pages\/3428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bfta.com.tr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bfta.com.tr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bfta.com.tr\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bfta.com.tr\/en\/wp-json\/wp\/v2\/comments?post=3428"}],"version-history":[{"count":2,"href":"https:\/\/bfta.com.tr\/en\/wp-json\/wp\/v2\/pages\/3428\/revisions"}],"predecessor-version":[{"id":3501,"href":"https:\/\/bfta.com.tr\/en\/wp-json\/wp\/v2\/pages\/3428\/revisions\/3501"}],"wp:attachment":[{"href":"https:\/\/bfta.com.tr\/en\/wp-json\/wp\/v2\/media?parent=3428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}