{"id":56661,"date":"2026-04-16T08:12:19","date_gmt":"2026-04-16T06:12:19","guid":{"rendered":"https:\/\/engeg.com\/b\/2026\/04\/16\/%d9%85%d8%b3%d9%88%d8%af%d8%a9-%d8%aa%d9%84%d9%82%d8%a7%d8%a6%d9%8a%d8%a9\/"},"modified":"2026-04-16T10:06:04","modified_gmt":"2026-04-16T08:06:04","slug":"%d8%a7%d8%ad%d8%b3%d8%a8-%d8%aa%d9%83%d9%84%d9%81%d8%a9-%d8%a8%d9%8a%d8%aa%d9%83-%d8%a7%d9%88%d9%86%d9%84%d8%a7%d9%8a%d9%86-%d9%81%d9%8a-%d8%a8%d9%8a%d8%aa-%d8%a7%d9%84%d9%88%d8%b7%d9%86-2026","status":"publish","type":"post","link":"https:\/\/engeg.com\/b\/2026\/04\/16\/%d8%a7%d8%ad%d8%b3%d8%a8-%d8%aa%d9%83%d9%84%d9%81%d8%a9-%d8%a8%d9%8a%d8%aa%d9%83-%d8%a7%d9%88%d9%86%d9%84%d8%a7%d9%8a%d9%86-%d9%81%d9%8a-%d8%a8%d9%8a%d8%aa-%d8%a7%d9%84%d9%88%d8%b7%d9%86-2026\/","title":{"rendered":"\u0627\u062d\u0633\u0628 \u062a\u0643\u0644\u0641\u0629 \u0628\u064a\u062a\u0643.. \u0627\u0648\u0646\u0644\u0627\u064a\u0646 \u0641\u064a \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 2026"},"content":{"rendered":"<\/p>\n<div class=\"calculator-output\"><!DOCTYPE html>\n<html lang=\"ar\" dir=\"rtl\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>\u0645\u0647\u0646\u062f\u0633\u064a\u0646 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 | \u0646\u0638\u0627\u0645 \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 \u0627\u0644\u0645\u062a\u0643\u0627\u0645\u0644 Pro+<\/title>\n<script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/xlsx\/0.18.5\/xlsx.full.min.js\"><\/script>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cairo:wght@300;400;500;600;700;800;900&display=swap\" rel=\"stylesheet\">\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.0\/css\/all.min.css\">\n<style>\n:root{--bg:#F5F0EA;--card:#FFF;--pr:#C75B39;--pd:#A34830;--ac:#2A9D8F;--tx:#2D3436;--mu:#8395A7;--bd:#DDD5CB;--ok:#27AE60;--wr:#F39C12;--er:#E74C3C;--gd:#D4A017;--dark-bg:#1a1a2e;--dark-card:#16213e;--dark-text:#eaeaea}\n*{font-family:'Cairo',sans-serif;box-sizing:border-box;margin:0;padding:0}\nbody{background:var(--bg);color:var(--tx);min-height:100vh;padding-bottom:80px;transition:background .3s,color .3s}\nbody.dark{background:var(--dark-bg);color:var(--dark-text)}\nbody.dark .crd{background:var(--dark-card);border-color:#3a3a5a}\nbody.dark .inp{background:#2a2a4a;border-color:#4a4a6a;color:var(--dark-text)}\nbody.dark .tab-b{color:#aaa}\nbody.dark .tab-b:hover{color:var(--pr);background:rgba(199,91,57,.1)}\nbody.dark .tab-b.on{background:var(--dark-card);color:var(--pr)}\n.inp{background:var(--bg);border:1.5px solid var(--bd);border-radius:8px;padding:6px 8px;font-size:13px;transition:all .2s;width:100%;color:var(--tx);text-align:center}\n.inp:focus{outline:none;border-color:var(--pr);box-shadow:0 0 0 2px rgba(199,91,57,.1)}\n.inp-sm{min-width:75px;padding:4px 6px;font-size:12px}\n.tab-b{padding:9px 14px;border-radius:10px 10px 0 0;font-weight:700;font-size:11px;transition:all .2s;white-space:nowrap;cursor:pointer;border:2px solid transparent;border-bottom:none;background:transparent;color:var(--mu);position:relative;bottom:-2px}\n.tab-b:hover{color:var(--pr);background:rgba(199,91,57,.04)}\n.tab-b.on{background:var(--card);color:var(--pr);border-color:var(--bd)}\n.tab-b.on::after{content:'';position:absolute;bottom:-2px;left:0;right:0;height:3px;background:var(--card)}\n.crd{background:var(--card);border-radius:16px;box-shadow:0 2px 16px rgba(0,0,0,.04);border:1px solid var(--bd);padding:20px;margin-bottom:16px;transition:all .3s}\n.btn-p{background:var(--pr);color:#fff;padding:8px 18px;border-radius:8px;font-weight:700;border:none;cursor:pointer;transition:all .2s;font-size:13px;display:inline-flex;align-items:center;gap:6px}\n.btn-p:hover{background:var(--pd);transform:translateY(-1px)}\n.btn-s{background:var(--ac);color:#fff;padding:6px 14px;border-radius:8px;font-weight:600;border:none;cursor:pointer;transition:all .2s;font-size:12px;display:inline-flex;align-items:center;gap:4px}\n.btn-s:hover{background:#21867a;transform:translateY(-1px)}\n.btn-outline{background:transparent;border:2px solid var(--pr);color:var(--pr);padding:6px 14px;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s;font-size:12px}\n.btn-outline:hover{background:var(--pr);color:#fff}\n.sx{overflow-x:auto}\n.ws{display:none}.ws.show{display:block}\n.step-dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.3);transition:all .3s}\n.step-dot.active{width:25px;border-radius:4px;background:#fff}\n.notify{position:fixed;bottom:20px;right:20px;padding:12px 20px;border-radius:8px;color:#fff;z-index:1000;animation:slideIn 0.3s ease;box-shadow:0 4px 12px rgba(0,0,0,.15);display:flex;align-items:center;gap:8px}\n@keyframes slideIn{from{transform:translateX(100%) scale(.9);opacity:0}to{transform:translateX(0) scale(1);opacity:1}}\n.notify-success{background:var(--ok)}.notify-error{background:var(--er)}.notify-info{background:var(--ac)}.notify-warning{background:var(--wr)}\n.bdg{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:16px;font-size:10px;font-weight:700}\n.lock-ov{position:absolute;inset:0;background:rgba(255,255,255,.95);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;border-radius:16px;z-index:10;flex-direction:column;gap:12px}\nbody.dark .lock-ov{background:rgba(22,33,62,.95)}\n.mdl-bg{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(3px);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px}\n.mdl-box{background:var(--card);border-radius:20px;padding:28px;max-width:420px;width:100%;box-shadow:0 24px 64px rgba(0,0,0,.15)}\nbody.dark .mdl-box{background:var(--dark-card)}\n.gantt-bar{height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:10px;font-weight:bold;position:relative;transition:transform .2s}\n.gantt-bar:hover{transform:scale(1.02);z-index:5}\n.stat-card{transition:transform .2s,box-shadow .2s;cursor:pointer;border:1px solid transparent}\n.stat-card:hover{transform:translateY(-3px);box-shadow:0 8px 25px rgba(0,0,0,.1);border-color:var(--pr)}\n.fab-wrap{position:fixed;bottom:20px;left:20px;z-index:50}\n.fab-btn{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--pr),var(--ac));color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;box-shadow:0 4px 20px rgba(199,91,57,.3);transition:all .3s;font-size:20px}\n.fab-btn:hover{transform:scale(1.08)}\n.fab-btn.open{transform:rotate(45deg)}\n.fab-opts{display:flex;flex-direction:column;gap:10px;position:absolute;bottom:64px;right:0;opacity:0;transform:translateY(12px) scale(.8);transition:all .3s;pointer-events:none}\n.fab-opts.open{opacity:1;transform:translateY(0) scale(1);pointer-events:all}\n.fab-o{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;border:none;box-shadow:0 3px 10px rgba(0,0,0,.2);transition:transform .2s;text-decoration:none;font-size:18px;position:relative}\n.fab-o:hover{transform:scale(1.12)}\n.fab-lbl{position:absolute;left:52px;white-space:nowrap;background:var(--tx);color:#fff;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600;opacity:0;transition:opacity .2s;pointer-events:none;z-index:10}\n.fab-o:hover .fab-lbl{opacity:1}\n.tooltip{position:relative;display:inline-block}\n.tooltip .tooltip-text{visibility:hidden;width:200px;background:var(--tx);color:#fff;text-align:center;border-radius:6px;padding:8px;position:absolute;z-index:1;bottom:125%;left:50%;transform:translateX(-50%);opacity:0;transition:opacity .3s;font-size:11px;font-weight:400}\n.tooltip:hover .tooltip-text{visibility:visible;opacity:1}\n.search-box{position:relative}\n.search-box i{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--mu)}\n.search-box input{padding-right:30px}\n.table-sort{cursor:pointer;user-select:none}\n.table-sort:hover{color:var(--pr)}\n.table-sort::after{content:'\u2195';margin-right:4px;font-size:10px}\n.table-sort.asc::after{content:'\u2191';color:var(--ok)}\n.table-sort.desc::after{content:'\u2193';color:var(--er)}\n.progress-bar{height:6px;background:var(--bd);border-radius:3px;overflow:hidden}\n.progress-fill{height:100%;background:var(--ac);transition:width .3s}\n.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:12px;font-size:10px;font-weight:600}\n.badge-primary{background:rgba(199,91,57,.15);color:var(--pr)}\n.badge-success{background:rgba(39,174,96,.15);color:var(--ok)}\n.badge-warning{background:rgba(243,156,18,.15);color:var(--wr)}\n.badge-danger{background:rgba(231,76,60,.15);color:var(--er)}\n.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);z-index:200;display:flex;align-items:center;justify-content:center;padding:16px;opacity:0;pointer-events:none;transition:all .3s}\n.modal.show{opacity:1;pointer-events:all}\n.modal-content{background:var(--card);border-radius:20px;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 24px 64px rgba(0,0,0,.2);animation:modalSlide .3s ease}\nbody.dark .modal-content{background:var(--dark-card)}\n@keyframes modalSlide{from{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}\n.confirm-btns{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}\n@media(max-width:768px){.crd{padding:14px;border-radius:12px}.tab-b{padding:7px 9px;font-size:10px}.inp{font-size:12px;padding:4px 6px}.fab-lbl{display:none}}\n@media print{.fab-wrap,.no-print{display:none!important}body{background:#fff;color:#000}.crd{box-shadow:none;border:1px solid #ddd}}\n<\/style>\n<\/head>\n<body>\n\n<!-- \u0634\u0627\u0634\u0629 \u0627\u0644\u062a\u0631\u062d\u064a\u0628 \u0627\u0644\u0645\u062d\u0633\u0651\u0646\u0629 -->\n<div id=\"welcomeScreen\" style=\"min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a5632,#0d3320);padding:10px;position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000\">\n<div style=\"background:#fff;border-radius:24px;max-width:520px;width:100%;overflow:hidden;box-shadow:0 25px 50px rgba(0,0,0,.3)\">\n<div style=\"background:linear-gradient(135deg,#1a5632,#2a9d8f);padding:24px;color:#fff;text-align:center;position:relative\">\n<button onclick=\"toggleDarkMode()\" style=\"position:absolute;left:16px;top:16px;background:rgba(255,255,255,.2);border:none;color:#fff;width:36px;height:36px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px\" title=\"\u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0644\u064a\u0644\u064a\"><i class=\"fas fa-moon\"><\/i><\/button>\n<div id=\"stepDots\" style=\"display:flex;justify-content:center;gap:8px;margin-bottom:12px\"><\/div>\n<h2 id=\"stepTitle\" style=\"font-size:1.3rem;font-weight:900;margin-bottom:4px\">\u0645\u0631\u062d\u0628\u0627\u064b \u0628\u0643<\/h2>\n<p style=\"font-size:.75rem;opacity:.9\">\u0646\u0638\u0627\u0645 \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 \u0627\u0644\u0645\u062a\u0643\u0627\u0645\u0644 Pro+<\/p>\n<\/div>\n<div style=\"padding:24px\">\n<div id=\"step0\" class=\"ws show\">\n<div style=\"text-align:center;margin-bottom:20px\">\n<div style=\"width:60px;height:60px;background:rgba(42,157,143,.15);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 12px\">\n<i class=\"fas fa-draw-polygon\" style=\"font-size:1.8rem;color:#1a5632\"><\/i>\n<\/div>\n<p style=\"color:#666;font-size:.85rem;line-height:1.5\">\u0623\u062f\u062e\u0644 \u0623\u0628\u0639\u0627\u062f \u0642\u0637\u0639\u0629 \u0627\u0644\u0623\u0631\u0636 \u0644\u0644\u0645\u0648\u0642\u0639<\/p>\n<\/div>\n<div style=\"display:grid;grid-template-columns:1fr 1fr;gap:12px\">\n<div>\n<label class=\"text-sm font-semibold block mb-1\">\u0627\u0644\u0637\u0648\u0644 (\u0645\u062a\u0631)<\/label>\n<input type=\"number\" id=\"inputLength\" class=\"inp\" value=\"30\" min=\"5\" max=\"200\">\n<\/div>\n<div>\n<label class=\"text-sm font-semibold block mb-1\">\u0627\u0644\u0639\u0631\u0636 (\u0645\u062a\u0631)<\/label>\n<input type=\"number\" id=\"inputWidth\" class=\"inp\" value=\"20\" min=\"5\" max=\"200\">\n<\/div>\n<\/div>\n<div class=\"mt-4 p-3 bg-blue-50 rounded-lg border border-blue-100\">\n<div class=\"flex items-center gap-2 text-blue-700 text-sm\">\n<i class=\"fas fa-info-circle\"><\/i>\n<span>\u0645\u0633\u0627\u062d\u0629 \u0627\u0644\u0623\u0631\u0636 \u0627\u0644\u062d\u0627\u0644\u064a\u0629: <strong id=\"previewArea\">600<\/strong> \u0645\u00b2<\/span>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"step1\" class=\"ws\">\n<div style=\"text-align:center;margin-bottom:20px\">\n<div style=\"width:60px;height:60px;background:rgba(42,157,143,.15);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 12px\">\n<i class=\"fas fa-layer-group\" style=\"font-size:1.8rem;color:#1a5632\"><\/i>\n<\/div>\n<p style=\"color:#666;font-size:.85rem;line-height:1.5\">\u062d\u062f\u062f \u0646\u0633\u0628 \u0627\u0644\u0628\u0646\u0627\u0621 \u0644\u0643\u0644 \u062f\u0648\u0631<\/p>\n<\/div>\n<div style=\"display:grid;grid-template-columns:1fr 1fr;gap:10px\">\n<div><label class=\"text-sm font-semibold block mb-1\">\u0627\u0644\u0628\u062f\u0631\u0648\u0645 %<\/label><input type=\"number\" id=\"inputBasement\" class=\"inp\" value=\"100\" min=\"0\" max=\"100\"><\/div>\n<div><label class=\"text-sm font-semibold block mb-1\">\u0627\u0644\u0623\u0631\u0636\u064a %<\/label><input type=\"number\" id=\"inputGround\" class=\"inp\" value=\"50\" min=\"0\" max=\"100\"><\/div>\n<div><label class=\"text-sm font-semibold block mb-1\">\u0627\u0644\u0645\u062a\u0643\u0631\u0631 %<\/label><input type=\"number\" id=\"inputRepeated\" class=\"inp\" value=\"55\" min=\"0\" max=\"100\"><\/div>\n<div><label class=\"text-sm font-semibold block mb-1\">\u0627\u0644\u0633\u0637\u062d %<\/label><input type=\"number\" id=\"inputRoof\" class=\"inp\" value=\"25\" min=\"0\" max=\"100\"><\/div>\n<div class=\"col-span-2\"><label class=\"text-sm font-semibold block mb-1\">\u0639\u062f\u062f \u0627\u0644\u0623\u062f\u0648\u0627\u0631 \u0627\u0644\u0645\u062a\u0643\u0631\u0631\u0629<\/label><input type=\"number\" id=\"inputFloors\" class=\"inp\" value=\"3\" min=\"0\" max=\"20\"><\/div>\n<\/div>\n<div class=\"mt-4 p-3 bg-green-50 rounded-lg border border-green-100\">\n<div class=\"flex items-center gap-2 text-green-700 text-sm\">\n<i class=\"fas fa-calculator\"><\/i>\n<span>\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0628\u0646\u0627\u0626\u064a \u0627\u0644\u0645\u062a\u0648\u0642\u0639: <strong id=\"previewBuilt\">1,860<\/strong> \u0645\u00b2<\/span>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"step2\" class=\"ws\">\n<div style=\"text-align:center;margin-bottom:20px\">\n<div style=\"width:60px;height:60px;background:rgba(42,157,143,.15);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 12px\">\n<i class=\"fas fa-check-double\" style=\"font-size:1.8rem;color:#1a5632\"><\/i>\n<\/div>\n<p style=\"color:#666;font-size:.85rem;line-height:1.5\">\u0627\u062e\u062a\u0631 \u0627\u0644\u0628\u0646\u0648\u062f \u0627\u0644\u0645\u0631\u0627\u062f \u062d\u0633\u0627\u0628 \u062a\u0643\u0627\u0644\u064a\u0641\u0647\u0627<\/p>\n<\/div>\n<div id=\"sectionsList\" style=\"display:flex;flex-direction:column;gap:10px;max-height:280px;overflow-y:auto;padding-right:4px\"><\/div>\n<div class=\"mt-4 flex items-center gap-2 text-xs text-gray-500\">\n<input type=\"checkbox\" id=\"selectAllSections\" checked onchange=\"toggleAllSections(this.checked)\">\n<label for=\"selectAllSections\" class=\"cursor-pointer\">\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644 \/ \u0625\u0644\u063a\u0627\u0621 \u0627\u0644\u062a\u062d\u062f\u064a\u062f<\/label>\n<\/div>\n<\/div>\n<div style=\"display:flex;justify-content:space-between;margin-top:24px;gap:10px\">\n<button id=\"prevBtn\" class=\"btn-p\" style=\"background:#ccc;color:#666;display:none\" onclick=\"changeStep(-1)\"><i class=\"fas fa-arrow-right\"><\/i> \u0627\u0644\u0633\u0627\u0628\u0642<\/button>\n<button id=\"nextBtn\" class=\"btn-p\" style=\"flex:1;justify-content:center\" onclick=\"changeStep(1)\">\u0627\u0644\u062a\u0627\u0644\u064a <i class=\"fas fa-arrow-left\"><\/i><\/button>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<!-- \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0631\u0626\u064a\u0633\u064a -->\n<header class=\"relative z-10 border-b border-[var(--bd)] bg-[var(--card)] sticky top-0\" style=\"box-shadow:0 2px 16px rgba(0,0,0,.04)\">\n<div class=\"max-w-7xl mx-auto px-3 py-2.5 flex items-center justify-between flex-wrap gap-2\">\n<div class=\"flex items-center gap-2\">\n<div class=\"w-10 h-10 rounded-xl flex items-center justify-center text-white font-black text-base shadow-lg\" style=\"background:linear-gradient(135deg,var(--pr),var(--ac))\">B<\/div>\n<div>\n<h1 class=\"text-sm font-black leading-tight\" style=\"color:var(--pr)\">\u0645\u0647\u0646\u062f\u0633\u064a\u0646 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646<\/h1>\n<p class=\"text-[9px]\" style=\"color:var(--mu)\">\u0646\u0638\u0627\u0645 \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639 \u0627\u0644\u0647\u0646\u062f\u0633\u064a\u0629 Pro+<\/p>\n<\/div>\n<\/div>\n<div class=\"flex items-center gap-2 flex-wrap\">\n<div class=\"bdg bg-[var(--ac)] text-white tooltip\">\n<i class=\"fas fa-users\"><\/i> <span id=\"vc\">1<\/span>\n<span class=\"tooltip-text\">\u0639\u062f\u062f \u0632\u0648\u0627\u0631 \u0627\u0644\u0635\u0641\u062d\u0629<\/span>\n<\/div>\n<button onclick=\"toggleDarkMode()\" class=\"btn-outline\" title=\"\u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0644\u064a\u0644\u064a\"><i class=\"fas fa-moon\"><\/i><\/button>\n<button onclick=\"exportPDF()\" class=\"btn-s\" style=\"padding:5px 10px;font-size:11px\"><i class=\"fas fa-file-pdf\"><\/i> PDF<\/button>\n<button onclick=\"exportExcel()\" class=\"btn-s\" style=\"padding:5px 10px;font-size:11px;background:#217346\"><i class=\"fas fa-file-excel\"><\/i> Excel<\/button>\n<button onclick=\"showAdmin()\" class=\"btn-p\" style=\"padding:5px 12px;font-size:11px\"><i class=\"fas fa-lock\"><\/i> \u0623\u062f\u0645\u0646<\/button>\n<\/div>\n<\/div>\n<\/header>\n\n<nav class=\"relative z-10 max-w-7xl mx-auto px-3 pt-3 sticky top-14 bg-[var(--bg)] z-20\">\n<div class=\"sx flex gap-0.5 pb-1\" id=\"tn\"><\/div>\n<\/nav>\n\n<main class=\"relative z-10 max-w-7xl mx-auto px-3 pb-12\">\n<div class=\"border-2 border-[var(--bd)] border-t-0 rounded-b-2xl bg-[var(--card)] min-h-[400px] p-3 md:p-5\" id=\"tc\"><\/div>\n<\/main>\n\n<!-- FAB Menu \u0645\u062d\u0633\u0651\u0646 -->\n<div class=\"fab-wrap\" id=\"fw\">\n<div class=\"fab-opts\" id=\"fo\">\n<a class=\"fab-o\" style=\"background:#25D366\" id=\"fwa\"><i class=\"fab fa-whatsapp\"><\/i><span class=\"fab-lbl\">\u0648\u0627\u062a\u0633\u0627\u0628<\/span><\/a>\n<div class=\"fab-o\" style=\"background:var(--pr)\" onclick=\"doCopy()\"><i class=\"fas fa-copy\"><\/i><span class=\"fab-lbl\">\u0646\u0633\u062e \u0627\u0644\u062a\u0642\u0631\u064a\u0631<\/span><\/div>\n<div class=\"fab-o\" style=\"background:var(--ac)\" onclick=\"scrollToTop()\"><i class=\"fas fa-arrow-up\"><\/i><span class=\"fab-lbl\">\u0627\u0644\u0639\u0648\u062f\u0629 \u0644\u0644\u0623\u0639\u0644\u0649<\/span><\/div>\n<div class=\"fab-o\" style=\"background:var(--gd)\" onclick=\"showBackupModal()\"><i class=\"fas fa-database\"><\/i><span class=\"fab-lbl\">\u0646\u0633\u062e \u0627\u062d\u062a\u064a\u0627\u0637\u064a<\/span><\/div>\n<div class=\"fab-o\" style=\"background:var(--er)\" onclick=\"resetProject()\"><i class=\"fas fa-redo\"><\/i><span class=\"fab-lbl\">\u0625\u0639\u0627\u062f\u0629 \u0636\u0628\u0637<\/span><\/div>\n<\/div>\n<button class=\"fab-btn\" id=\"fb\" onclick=\"toggleFab()\" title=\"\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629\"><i class=\"fas fa-share-nodes\"><\/i><\/button>\n<\/div>\n\n<!-- Modal \u0627\u0644\u0623\u062f\u0645\u0646 -->\n<div id=\"m-admin\" class=\"mdl-bg\" style=\"display:none\">\n<div class=\"mdl-box text-center\">\n<div class=\"w-16 h-16 rounded-full mx-auto mb-4 flex items-center justify-center text-2xl\" style=\"background:rgba(199,91,57,.1);color:var(--pr)\">\n<i class=\"fas fa-shield-halved\"><\/i>\n<\/div>\n<h3 class=\"text-lg font-black mb-2\">\u062f\u062e\u0648\u0644 \u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645<\/h3>\n<p class=\"text-xs text-gray-500 mb-3\">\u0623\u062f\u062e\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0644\u0644\u062a\u062d\u0643\u0645 \u0641\u064a \u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0648\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a<\/p>\n<input type=\"password\" id=\"admIn\" class=\"inp mb-3\" placeholder=\"\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631\" onkeydown=\"if(event.key==='Enter')checkAdmin()\">\n<div id=\"admErr\" class=\"text-xs font-bold mb-2\" style=\"color:var(--er);display:none\"><i class=\"fas fa-exclamation-triangle\"><\/i> \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d\u0629<\/div>\n<div class=\"flex gap-2 justify-center\">\n<button onclick=\"checkAdmin()\" class=\"btn-p\"><i class=\"fas fa-check\"><\/i> \u062f\u062e\u0648\u0644<\/button>\n<button onclick=\"document.getElementById('m-admin').style.display='none'\" class=\"btn-p\" style=\"background:var(--bd);color:var(--mu)\">\u0625\u0644\u063a\u0627\u0621<\/button>\n<\/div>\n<p class=\"text-[10px] mt-3\" style=\"color:var(--mu)\">\u0627\u0644\u0628\u0627\u0633\u0648\u0631\u062f \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a: <strong>admin123<\/strong><\/p>\n<\/div>\n<\/div>\n\n<!-- Modal \u0627\u0644\u062a\u0623\u0643\u064a\u062f -->\n<div id=\"confirmModal\" class=\"modal\">\n<div class=\"modal-content p-6\">\n<h3 class=\"font-bold text-lg mb-3\" id=\"confirmTitle\">\u062a\u0623\u0643\u064a\u062f \u0627\u0644\u0625\u062c\u0631\u0627\u0621<\/h3>\n<p class=\"text-sm text-gray-600 mb-4\" id=\"confirmMessage\">\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0645\u0646 \u062a\u0646\u0641\u064a\u0630 \u0647\u0630\u0627 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u061f<\/p>\n<div class=\"confirm-btns\">\n<button onclick=\"closeConfirmModal()\" class=\"btn-outline\">\u0625\u0644\u063a\u0627\u0621<\/button>\n<button onclick=\"executeConfirmAction()\" class=\"btn-p\" id=\"confirmActionBtn\">\u062a\u0623\u0643\u064a\u062f<\/button>\n<\/div>\n<\/div>\n<\/div>\n\n<!-- Modal \u0627\u0644\u0646\u0633\u062e \u0627\u0644\u0627\u062d\u062a\u064a\u0627\u0637\u064a -->\n<div id=\"backupModal\" class=\"modal\">\n<div class=\"modal-content p-6\">\n<h3 class=\"font-bold text-lg mb-4\"><i class=\"fas fa-database ml-2\"><\/i> \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0646\u0633\u062e \u0627\u0644\u0627\u062d\u062a\u064a\u0627\u0637\u064a<\/h3>\n<div class=\"space-y-4\">\n<div class=\"p-4 bg-green-50 rounded-lg border border-green-200\">\n<h4 class=\"font-semibold text-green-800 mb-2\"><i class=\"fas fa-download ml-1\"><\/i> \u062a\u0635\u062f\u064a\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a<\/h4>\n<p class=\"text-xs text-gray-600 mb-3\">\u0627\u062d\u0641\u0638 \u0646\u0633\u062e\u0629 \u0645\u0646 \u0645\u0634\u0631\u0648\u0639\u0643 \u0627\u0644\u062d\u0627\u0644\u064a \u0644\u0627\u0633\u062a\u0639\u0627\u062f\u062a\u0647\u0627 \u0644\u0627\u062d\u0642\u0627\u064b<\/p>\n<button onclick=\"exportBackup()\" class=\"btn-s w-full justify-center\"><i class=\"fas fa-file-export\"><\/i> \u062a\u062d\u0645\u064a\u0644 \u0646\u0633\u062e\u0629 \u0627\u062d\u062a\u064a\u0627\u0637\u064a\u0629 (JSON)<\/button>\n<\/div>\n<div class=\"p-4 bg-blue-50 rounded-lg border border-blue-200\">\n<h4 class=\"font-semibold text-blue-800 mb-2\"><i class=\"fas fa-upload ml-1\"><\/i> \u0627\u0633\u062a\u064a\u0631\u0627\u062f \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a<\/h4>\n<p class=\"text-xs text-gray-600 mb-3\">\u0627\u0633\u062a\u0639\u062f \u0645\u0634\u0631\u0648\u0639\u0627\u064b \u0645\u062d\u0641\u0648\u0638\u0627\u064b \u0633\u0627\u0628\u0642\u0627\u064b \u0645\u0646 \u0645\u0644\u0641 JSON<\/p>\n<input type=\"file\" id=\"importFile\" accept=\".json\" class=\"hidden\" onchange=\"importBackup(this)\">\n<button onclick=\"document.getElementById('importFile').click()\" class=\"btn-outline w-full\"><i class=\"fas fa-file-import\"><\/i> \u0627\u062e\u062a\u064a\u0627\u0631 \u0645\u0644\u0641 \u0644\u0644\u0627\u0633\u062a\u064a\u0631\u0627\u062f<\/button>\n<\/div>\n<div class=\"p-4 bg-yellow-50 rounded-lg border border-yellow-200\">\n<h4 class=\"font-semibold text-yellow-800 mb-2\"><i class=\"fas fa-info-circle ml-1\"><\/i> \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/h4>\n<p class=\"text-xs text-gray-600\">\u0622\u062e\u0631 \u062a\u062d\u062f\u064a\u062b: <span id=\"lastUpdate\">-<\/span><\/p>\n<p class=\"text-xs text-gray-600 mt-1\">\u0639\u062f\u062f \u0627\u0644\u0628\u0646\u0648\u062f: <span id=\"totalItems\">-<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"mt-6 text-center\">\n<button onclick=\"document.getElementById('backupModal').classList.remove('show')\" class=\"btn-outline\">\u0625\u063a\u0644\u0627\u0642<\/button>\n<\/div>\n<\/div>\n<\/div>\n\n<script>\n\/\/ ==================== \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0627\u0644\u0645\u062d\u0633\u0651\u0646\u0629 ====================\nlet project = { \n    name: '\u0645\u0634\u0631\u0648\u0639 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646',\n    length: 30, width: 20, floors: 3, \n    basementPct: 100, groundPct: 50, repeatedPct: 55, roofPct: 25, \n    isAdmin: false, adminPassword: 'admin123',\n    currency: 'EGP', currencySymbol: '\u062c.\u0645',\n    contingency: 5, \/\/ \u0646\u0633\u0628\u0629 \u0637\u0648\u0627\u0631\u0626\n    profitMargin: 15, \/\/ \u0647\u0627\u0645\u0634 \u0631\u0628\u062d\n    inflationFactor: 1, \/\/ \u0639\u0627\u0645\u0644 \u062a\u0636\u062e\u0645\n    createdAt: new Date().toISOString(),\n    lastUpdated: new Date().toISOString()\n};\n\nlet activeSections = { \n    excavation: true, insulation: true, backfill: true, structure: true, \n    masonry: true, plaster: true, facade: true, finishes: true \n};\n\n\/\/ \u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0645\u0639 \u062f\u0639\u0645 \u0627\u0644\u0639\u0645\u0644\u0627\u062a\nlet prices = {\n    iron: 20000, conc: 1150, cement: 1700, cementFin: 1700, sand: 1000, water: 800,\n    loader: 500, labor: 200, dakka: 200, hiras: 2000, factoryExc: 25,\n    insNorm: 1200, insOx: 1400, fireM: 300,\n    brickD: 1780, brickS: 1100, gypsum: 35,\n    paint: 65, paintF: 35, graf: 35, grafF: 15, stone: 850, stoneF: 0,\n    psSmall: 2000, kr16x8L: 1000, kr16x8F: 1500, galF: 270, galF2: 400, silvF2: 350, karaT: 1200, doorC: 4000,\n    mussia: 20, mussiaF: 15, tartBod: 20, tartBodF: 20, motor: 150, vibrator: 100, biskot: 200, wire: 500, zamj: 250, electric: 1100, atab: 90, ceramic: 180, marble: 350, aluminum: 1200,\n    messiah: 20, graffito: 35, tartsha: 20, paints: 65, paintsCornice: 15, stoneCladding: 850\n};\n\n\/\/ \u0627\u0644\u0628\u0646\u0648\u062f \u0627\u0644\u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0639\u062f\u064a\u0644 \u0645\u0639 \u062f\u0639\u0645 \u0627\u0644\u0648\u062d\u062f\u0627\u062a \u0648\u0627\u0644\u0648\u0635\u0641\nlet editableItems = {\n    excavation: [\n        { name: '\u0645\u0635\u0646\u0639\u064a\u0627\u062a \u062d\u0641\u0631', qty: 2880, unit: '\u0645\u00b3', priceKey: 'factoryExc', price: prices.factoryExc, desc: '\u062a\u0643\u0644\u0641\u0629 \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062d\u0641\u0631 \u0628\u0627\u0644\u0645\u0635\u0646\u0639' },\n        { name: '\u0645\u064a\u0627\u0647', qty: 12, unit: '\u0646\u0642\u0644\u0629', priceKey: 'water', price: prices.water, desc: '\u0645\u064a\u0627\u0647 \u0644\u0644\u062d\u0641\u0631 \u0648\u0627\u0644\u0631\u062f\u0645' },\n        { name: '\u0639\u0645\u0627\u0644\u0629', qty: 4, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'labor', price: prices.labor, desc: '\u0623\u062c\u0648\u0631 \u0627\u0644\u0639\u0645\u0627\u0644\u0629 \u0627\u0644\u064a\u0648\u0645\u064a\u0629' },\n        { name: '\u0644\u0648\u062f\u0631', qty: 5, unit: '\u0633\u0627\u0639\u0629', priceKey: 'loader', price: prices.loader, desc: '\u0625\u064a\u062c\u0627\u0631 \u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0644\u0648\u062f\u0631' },\n        { name: '\u062f\u0643\u0627\u0643', qty: 3, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'dakka', price: prices.dakka, desc: '\u0639\u0645\u0627\u0644\u0629 \u0627\u0644\u062f\u0643 \u0648\u0627\u0644\u0636\u063a\u0637' },\n        { name: '\u0647\u0631\u0627\u0633', qty: 1, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'hiras', price: prices.hiras, desc: '\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0647\u0631\u0633 \u0648\u0627\u0644\u062a\u0633\u0648\u064a\u0629' }\n    ],\n    insulation: [\n        { name: '\u0645\u0635\u0646\u0639\u064a\u0627\u062a \u0639\u0632\u0644', qty: 720, unit: '\u0645\u00b2', priceKey: 'factoryExc', price: prices.factoryExc, desc: '\u062a\u0643\u0644\u0641\u0629 \u0639\u0632\u0644 \u0627\u0644\u0623\u0633\u0627\u0633\u0627\u062a' },\n        { name: '\u0639\u0632\u0644 \u0639\u0627\u062f\u064a', qty: 14, unit: '\u0628\u0631\u0645\u064a\u0644', priceKey: 'insNorm', price: prices.insNorm, desc: '\u0645\u0648\u0627\u062f \u0627\u0644\u0639\u0632\u0644 \u0627\u0644\u0642\u064a\u0627\u0633\u064a\u0629' },\n        { name: '\u0639\u0632\u0644 \u0645\u0624\u0643\u0633\u062f', qty: 5, unit: '\u0628\u0631\u0645\u064a\u0644', priceKey: 'insOx', price: prices.insOx, desc: '\u0639\u0632\u0644 \u0645\u0624\u0643\u0633\u062f \u0639\u0627\u0644\u064a \u0627\u0644\u062c\u0648\u062f\u0629' },\n        { name: '\u0645\u0648\u0627\u062f \u062d\u0631\u064a\u0642', qty: 2, unit: '\u0628\u0631\u0645\u064a\u0644', priceKey: 'fireM', price: prices.fireM, desc: '\u0645\u0648\u0627\u062f \u0645\u0642\u0627\u0648\u0645\u0629 \u0627\u0644\u062d\u0631\u064a\u0642' },\n        { name: '\u0639\u0645\u0627\u0644\u0629', qty: 5, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'labor', price: prices.labor, desc: '\u0639\u0645\u0627\u0644\u0629 \u062a\u0631\u0643\u064a\u0628 \u0627\u0644\u0639\u0632\u0644' }\n    ],\n    backfill: [\n        { name: '\u0631\u0645\u0644', qty: 25, unit: '\u0646\u0642\u0644\u0629', priceKey: 'sand', price: prices.sand, desc: '\u0631\u0645\u0644 \u0644\u0644\u0631\u062f\u0645' },\n        { name: '\u0645\u064a\u0627\u0647', qty: 8, unit: '\u0646\u0642\u0644\u0629', priceKey: 'water', price: prices.water, desc: '\u0645\u064a\u0627\u0647 \u0644\u0644\u0631\u062f\u0645' },\n        { name: '\u0639\u0645\u0627\u0644\u0629', qty: 15, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'labor', price: prices.labor, desc: '\u0639\u0645\u0627\u0644\u0629 \u0627\u0644\u0631\u062f\u0645' },\n        { name: '\u0644\u0648\u062f\u0631', qty: 10, unit: '\u0633\u0627\u0639\u0629', priceKey: 'loader', price: prices.loader, desc: '\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0631\u062f\u0645' },\n        { name: '\u062f\u0643\u0627\u0643', qty: 3, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'dakka', price: prices.dakka, desc: '\u062f\u0643 \u0627\u0644\u062a\u0631\u0628\u0629' }\n    ],\n    structure: [\n        { name: '\u062e\u0631\u0633\u0627\u0646\u0629 \u0623\u0633\u0627\u0633\u0627\u062a', qty: 120, unit: '\u0645\u00b3', priceKey: 'conc', price: prices.conc, desc: '\u062e\u0631\u0633\u0627\u0646\u0629 \u0627\u0644\u0642\u0648\u0627\u0639\u062f' },\n        { name: '\u062e\u0631\u0633\u0627\u0646\u0629 \u0623\u0639\u0645\u062f\u0629', qty: 60, unit: '\u0645\u00b3', priceKey: 'conc', price: prices.conc, desc: '\u062e\u0631\u0633\u0627\u0646\u0629 \u0627\u0644\u0623\u0639\u0645\u062f\u0629' },\n        { name: '\u062e\u0631\u0633\u0627\u0646\u0629 \u0643\u0645\u0631\u0627\u062a', qty: 90, unit: '\u0645\u00b3', priceKey: 'conc', price: prices.conc, desc: '\u062e\u0631\u0633\u0627\u0646\u0629 \u0627\u0644\u0643\u0645\u0631\u0627\u062a' },\n        { name: '\u062e\u0631\u0633\u0627\u0646\u0629 \u0628\u0644\u0627\u0637\u0627\u062a', qty: 150, unit: '\u0645\u00b3', priceKey: 'conc', price: prices.conc, desc: '\u062e\u0631\u0633\u0627\u0646\u0629 \u0627\u0644\u0628\u0644\u0627\u0637\u0627\u062a' },\n        { name: '\u062d\u062f\u064a\u062f \u062a\u0633\u0644\u064a\u062d \u0631\u0626\u064a\u0633\u064a', qty: 55, unit: '\u0637\u0646', priceKey: 'iron', price: prices.iron, desc: '\u062d\u062f\u064a\u062f \u0627\u0644\u062a\u0633\u0644\u064a\u062d \u0627\u0644\u0623\u0633\u0627\u0633\u064a' },\n        { name: '\u062d\u062f\u064a\u062f \u062a\u0633\u0644\u064a\u062d \u062b\u0627\u0646\u0648\u064a', qty: 20, unit: '\u0637\u0646', priceKey: 'iron', price: prices.iron, desc: '\u062d\u062f\u064a\u062f \u0627\u0644\u062a\u0633\u0644\u064a\u062d \u0627\u0644\u0625\u0636\u0627\u0641\u064a' },\n        { name: '\u0642\u0648\u0627\u0644\u0628 \u062e\u0634\u0628\u064a\u0629', qty: 2000, unit: '\u0645\u00b2', priceKey: 'factoryExc', price: prices.factoryExc, desc: '\u0642\u0648\u0627\u0644\u0628 \u0627\u0644\u0635\u0628' },\n        { name: '\u0634\u0646\u0634\u0648\u0646\u0629', qty: 8, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'loader', price: prices.loader, desc: '\u0645\u0639\u062f\u0627\u062a \u0627\u0644\u0631\u0641\u0639' },\n        { name: '\u0639\u0645\u0627\u0644\u0629 \u0647\u064a\u0643\u0644', qty: 150, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'labor', price: prices.labor, desc: '\u0639\u0645\u0627\u0644\u0629 \u0627\u0644\u0647\u064a\u0643\u0644 \u0627\u0644\u062e\u0631\u0633\u0627\u0646\u064a' }\n    ],\n    masonry: [\n        { name: '\u0637\u0648\u0628 \u062f\u0648\u0628\u0644', qty: 59, unit: '\u0623\u0644\u0641', priceKey: 'brickD', price: prices.brickD, desc: '\u0637\u0648\u0628 \u0623\u062d\u0645\u0631 \u062f\u0648\u0628\u0644' },\n        { name: '\u0637\u0648\u0628 \u0645\u0635\u0645\u062a', qty: 88, unit: '\u0623\u0644\u0641', priceKey: 'brickS', price: prices.brickS, desc: '\u0637\u0648\u0628 \u0645\u0635\u0645\u062a \u0644\u0644\u062c\u062f\u0631\u0627\u0646' },\n        { name: '\u0623\u0633\u0645\u0646\u062a \u062a\u0634\u0637\u064a\u0628\u0627\u062a', qty: 89, unit: '\u0637\u0646', priceKey: 'cementFin', price: prices.cementFin, desc: '\u0623\u0633\u0645\u0646\u062a \u0623\u0628\u064a\u0636 \u0644\u0644\u062a\u0634\u0637\u064a\u0628' },\n        { name: '\u0631\u0645\u0644', qty: 36, unit: '\u0646\u0642\u0644\u0629', priceKey: 'sand', price: prices.sand, desc: '\u0631\u0645\u0644 \u0646\u0627\u0639\u0645' },\n        { name: '\u0645\u064a\u0627\u0647', qty: 38, unit: '\u0646\u0642\u0644\u0629', priceKey: 'water', price: prices.water, desc: '\u0645\u064a\u0627\u0647 \u0644\u0644\u0645\u0628\u0627\u0646\u064a' },\n        { name: '\u0639\u0645\u0627\u0644\u0629', qty: 16, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'labor', price: prices.labor, desc: '\u0639\u0645\u0627\u0644\u0629 \u0627\u0644\u0628\u0646\u0627\u0621' },\n        { name: '\u0639\u062a\u0628', qty: 15, unit: '\u0639\u062f\u062f', priceKey: 'atab', price: prices.atab, desc: '\u0639\u062a\u0628 \u062c\u0627\u0647\u0632' }\n    ],\n    plaster: [\n        { name: '\u0623\u0633\u0645\u0646\u062a \u062a\u0634\u0637\u064a\u0628\u0627\u062a', qty: 89, unit: '\u0637\u0646', priceKey: 'cementFin', price: prices.cementFin },\n        { name: '\u0631\u0645\u0644', qty: 36, unit: '\u0646\u0642\u0644\u0629', priceKey: 'sand', price: prices.sand },\n        { name: '\u0645\u064a\u0627\u0647', qty: 38, unit: '\u0646\u0642\u0644\u0629', priceKey: 'water', price: prices.water },\n        { name: '\u062c\u0628\u0633', qty: 45, unit: '\u0637\u0646', priceKey: 'gypsum', price: prices.gypsum },\n        { name: '\u0639\u0645\u0627\u0644\u0629 \u0628\u064a\u0627\u0636', qty: 85, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'labor', price: prices.labor },\n        { name: '\u0645\u0635\u064a\u0635 (\u062e\u0627\u0645\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'messiah', price: prices.messiah },\n        { name: '\u0645\u0635\u064a\u0635 (\u0645\u0635\u0646\u0639\u064a\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'labor', price: 15 },\n        { name: '\u062c\u0631\u0627\u0641\u064a\u0627\u062a\u0648 (\u062e\u0627\u0645\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'graffito', price: prices.graffito },\n        { name: '\u062c\u0631\u0627\u0641\u064a\u0627\u062a\u0648 (\u0645\u0635\u0646\u0639\u064a\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'labor', price: 15 },\n        { name: '\u0637\u0631\u0637\u0634\u0629 \u0628\u0648\u062f\u0631\u0629 (\u062e\u0627\u0645\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'tartsha', price: prices.tartsha },\n        { name: '\u0637\u0631\u0637\u0634\u0629 \u0628\u0648\u062f\u0631\u0629 (\u0645\u0635\u0646\u0639\u064a\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'labor', price: 20 },\n        { name: '\u062f\u0647\u0627\u0646\u0627\u062a (\u062e\u0627\u0645\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'paints', price: prices.paints },\n        { name: '\u062f\u0647\u0627\u0646\u0627\u062a (\u0645\u0635\u0646\u0639\u064a\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'labor', price: 35 },\n        { name: '\u062f\u0647\u0627\u0646\u0627\u062a \u0639\u0631\u0627\u0645\u064a\u0633 (\u062e\u0627\u0645\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'paintsCornice', price: prices.paintsCornice },\n        { name: '\u062f\u0647\u0627\u0646\u0627\u062a \u0639\u0631\u0627\u0645\u064a\u0633 (\u0645\u0635\u0646\u0639\u064a\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'labor', price: 3 },\n        { name: '\u062d\u062c\u0631 \u0648\u0627\u062c\u0647\u0627\u062a (\u062e\u0627\u0645\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'stoneCladding', price: prices.stoneCladding },\n        { name: '\u062d\u062c\u0631 \u0648\u0627\u062c\u0647\u0627\u062a (\u0645\u0635\u0646\u0639\u064a\u0627\u062a)', qty: 0, unit: '\u0645\u00b2', priceKey: 'labor', price: 0 }\n    ],\n    facade: [\n        { name: '\u062d\u062c\u0631 \u0648\u0627\u062c\u0647\u0627\u062a', qty: 252, unit: '\u0645\u00b2', priceKey: 'stone', price: prices.stone },\n        { name: '\u062f\u0647\u0627\u0646\u0627\u062a \u062e\u0627\u0631\u062c\u064a\u0629', qty: 1216, unit: '\u0645\u00b2', priceKey: 'paintF', price: prices.paintF },\n        { name: '\u062c\u0631\u0627\u0641\u064a\u0627\u062a\u0648', qty: 432, unit: '\u043c\u00b2', priceKey: 'grafF', price: prices.grafF },\n        { name: '\u0637\u0631\u0637\u0634\u0629 \u0628\u0648\u062f\u0631\u0629', qty: 247, unit: '\u043c\u00b2', priceKey: 'tartBodF', price: prices.tartBodF },\n        { name: '\u0639\u0645\u0627\u0644\u0629 \u0648\u0627\u062c\u0647\u0627\u062a', qty: 25, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'labor', price: prices.labor }\n    ],\n    finishes: [\n        { name: '\u0643\u0647\u0631\u0628\u0627\u0621', qty: 1, unit: '\u0625\u062c\u0645\u0627\u0644\u064a', priceKey: 'electric', price: prices.electric },\n        { name: '\u0633\u0628\u0627\u0643\u0629', qty: 1, unit: '\u0625\u062c\u0645\u0627\u0644\u064a', priceKey: 'electric', price: prices.electric },\n        { name: 'PS \u0635\u063a\u064a\u0631 - \u0623\u0644\u0645\u0648\u0646\u064a\u0648\u0645', qty: 0, unit: '\u043c\u00b2', priceKey: 'psSmall', price: prices.psSmall },\n        { name: '\u0639\u0631\u0648\u0642 16\u00d78 \u0645\u0645 \u0628\u0644\u0643\u0648\u0646\u0627\u062a - \u0643\u0631\u064a\u062a\u0627\u0644', qty: 0, unit: '\u0645\u062a\u0631 \u0637\u0648\u0644\u064a', priceKey: 'kr16x8L', price: prices.kr16x8L },\n        { name: '\u0639\u0631\u0648\u0642 16\u00d716 \u0645\u0645 \u0628\u0648\u0627\u0628\u0627\u062a - \u0643\u0631\u064a\u062a\u0627\u0644', qty: 0, unit: '\u0645\u062a\u0631 \u0637\u0648\u0644\u064a', priceKey: 'kr16x8F', price: prices.kr16x8F },\n        { name: '\u062c\u0644\u0627\u0644\u0629 \u0641\u0635 - \u0631\u062e\u0627\u0645 \u062f\u0631\u062c (\u0645\u062a\u0631 \u0637\u0648\u0644\u064a)', qty: 0, unit: '\u0645\u062a\u0631 \u0637\u0648\u0644\u064a', priceKey: 'galF', price: prices.galF },\n        { name: '\u062c\u0644\u0627\u0644\u0629 \u0641\u0635 - \u0631\u062e\u0627\u0645 \u0645\u0633\u0637\u062d\u0627\u062a (\u043c\u00b2)', qty: 0, unit: '\u043c\u00b2', priceKey: 'galF2', price: prices.galF2 },\n        { name: '\u0633\u064a\u0644\u0641\u064a\u0627 - \u0631\u062e\u0627\u0645 \u0645\u0633\u0637\u062d\u0627\u062a', qty: 0, unit: '\u043c\u00b2', priceKey: 'silvF2', price: prices.silvF2 },\n        { name: '\u0643\u0631\u0627\u0631\u0629 \u062a\u0631\u0643\u064a - \u0631\u062e\u0627\u0645 \u0645\u0633\u0637\u062d\u0627\u062a', qty: 0, unit: '\u043c\u00b2', priceKey: 'karaT', price: prices.karaT },\n        { name: '\u0628\u0627\u0628 \u0645\u0635\u0641\u062d \u0635\u064a\u0646\u064a - \u0623\u0628\u0648\u0627\u0628 \u0627\u0644\u0634\u0642\u0642', qty: 0, unit: '\u0639\u062f\u062f', priceKey: 'doorC', price: prices.doorC },\n        { name: '\u0639\u0645\u0627\u0644\u0629 \u062a\u0634\u0637\u064a\u0628\u0627\u062a', qty: 120, unit: '\u064a\u0648\u0645\u064a\u0629', priceKey: 'labor', price: prices.labor }\n    ]\n};\n\n\/\/ \u0627\u0644\u062c\u062f\u0627\u0648\u0644 \u0627\u0644\u062a\u0641\u0635\u064a\u0644\u064a\u0629\nlet detailTables = {\n    excavation: [{ name: '\u062d\u0641\u0631 \u0627\u0644\u0642\u0637\u0639\u0629', vol: 2880, water: 12, laborers: 4, loaderH: 5, dakkaD: 3, hirasD: 1, total: 87500 }],\n    insulation: [{ name: '\u0639\u0632\u0644 \u0627\u0644\u0623\u0633\u0627\u0633\u0627\u062a', area: 720, normB: 14, oxB: 5, fire: 2, labor: 5, total: 29536 }],\n    backfill: [{ name: '\u0631\u062f\u0645 \u0627\u0644\u0623\u0633\u0627\u0633\u0627\u062a', vol: 200, sand: 25, water: 8, labor: 15, loader: 10, dakka: 3, total: 40000 }],\n    structureDetails: [\n        { name: '\u0635\u0628 \u0627\u0644\u0644\u0628\u0634\u0629 \u0627\u0644\u0639\u0627\u062f\u064a\u0629', vol: 180, iron: 0, cost: 230100 }, { name: '\u0635\u0628 \u0627\u0644\u0642\u0648\u0627\u0639\u062f \u0627\u0644\u0645\u0633\u0644\u062d\u0629', vol: 150, iron: 15, cost: 539000 },\n        { name: '\u0635\u0628 \u0623\u0639\u0645\u062f\u0629 \u0627\u0644\u0628\u062f\u0631\u0648\u0645', vol: 19, iron: 3.3, cost: 88200 }, { name: '\u0635\u0628 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u0633\u0627\u0646\u062f', vol: 23, iron: 2.25, cost: 70875 },\n        { name: '\u0635\u0628 \u0623\u0639\u0645\u062f\u0629 \u0627\u0644\u062d\u0637\u0629 \u0627\u0644\u0623\u0648\u0644\u0649 \u0644\u0644\u0633\u0648\u0631', vol: 5, iron: 0.82, cost: 22371 }, { name: '\u0635\u0628 \u0637\u0628\u0627\u0646\u0627\u062a \u0627\u0644\u062d\u0637\u0629 \u0627\u0644\u0623\u0648\u0644\u0649 \u0644\u0644\u0633\u0648\u0631', vol: 5, iron: 0.5, cost: 15750 },\n        { name: '\u0635\u0628 \u0633\u0642\u0641 \u0627\u0644\u0645\u0634\u0627\u064a\u0629', vol: 41, iron: 5.16, cost: 150563 }, { name: '\u0635\u0628 \u0633\u0642\u0641 \u0627\u0644\u0628\u062f\u0631\u0648\u0645', vol: 79, iron: 9.9, cost: 289080 },\n        { name: '\u0635\u0628 \u0623\u0639\u0645\u062f\u0629 \u0627\u0644\u0623\u0631\u0636\u064a', vol: 17, iron: 2.82, cost: 75600 }, { name: '\u0635\u0628 \u0623\u0639\u0645\u062f\u0629 \u0627\u0644\u0623\u0648\u0644', vol: 17, iron: 2.82, cost: 75600 },\n        { name: '\u0635\u0628 \u0623\u0639\u0645\u062f\u0629 \u0627\u0644\u062b\u0627\u0646\u064a', vol: 17, iron: 2.82, cost: 75600 }, { name: '\u0635\u0628 \u0623\u0639\u0645\u062f\u0629 \u0627\u0644\u062b\u0627\u0644\u062b', vol: 17, iron: 2.82, cost: 75600 },\n        { name: '\u0635\u0628 \u0623\u0639\u0645\u062f\u0629 \u0627\u0644\u0631\u0648\u0648\u0641 \u0648\u0627\u0644\u062f\u0631\u0648\u0629', vol: 17, iron: 2.82, cost: 75600 }, { name: '\u0635\u0628 \u0633\u0642\u0641 \u0627\u0644\u0623\u0631\u0636\u064a', vol: 79, iron: 9.9, cost: 289080 },\n        { name: '\u0635\u0628 \u0633\u0642\u0641 \u0627\u0644\u0623\u0648\u0644', vol: 79, iron: 9.9, cost: 289080 }, { name: '\u0635\u0628 \u0633\u0642\u0641 \u0627\u0644\u062b\u0627\u0646\u064a', vol: 79, iron: 9.9, cost: 289080 },\n        { name: '\u0635\u0628 \u0633\u0642\u0641 \u0627\u0644\u062b\u0627\u0644\u062b', vol: 79, iron: 9.9, cost: 289080 }, { name: '\u0635\u0628 \u0633\u0642\u0641 \u0627\u0644\u0631\u0648\u0648\u0641', vol: 79, iron: 9.9, cost: 289080 },\n        { name: '\u0635\u0628 \u062f\u0643\u0629 \u0627\u0644\u0628\u062f\u0631\u0648\u0645', vol: 60, iron: 0, cost: 73200 }\n    ],\n    masonryDetails: [\n        { name: '\u0645\u0628\u0627\u0646\u064a \u0627\u0644\u0628\u062f\u0631\u0648\u0645', brickD: 21, brickS: 9, cost: 72910 }, { name: '\u0645\u0628\u0627\u0646\u064a \u0627\u0644\u0623\u0631\u0636\u064a', brickD: 10.5, brickS: 4.5, cost: 36655 },\n        { name: '\u0645\u0628\u0627\u0646\u064a \u0627\u0644\u0623\u0648\u0644', brickD: 11.5, brickS: 5, cost: 40281 }, { name: '\u0645\u0628\u0627\u0646\u064a \u0627\u0644\u062b\u0627\u0646\u064a', brickD: 11.5, brickS: 5, cost: 40281 },\n        { name: '\u0645\u0628\u0627\u0646\u064a \u0627\u0644\u062b\u0627\u0644\u062b', brickD: 11.5, brickS: 5, cost: 40281 }, { name: '\u0645\u0628\u0627\u0646\u064a \u0627\u0644\u0631\u0648\u0648\u0641', brickD: 10.5, brickS: 4.5, cost: 36655 }\n    ],\n    plasterDetails: [\n        { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0628\u062f\u0631\u0648\u0645', area: 1200, cost: 92740 }, { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0623\u0631\u0636\u064a', area: 795, cost: 61575 },\n        { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0623\u0648\u0644', area: 868, cost: 67193 }, { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u062b\u0627\u0646\u064a', area: 868, cost: 67193 },\n        { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u062b\u0627\u0644\u062b', area: 868, cost: 67193 }, { name: '\u0628\u064a\u0627\u0636 \u063a\u0631\u0641 \u0627\u0644\u0633\u0637\u062d', area: 225, cost: 17714 },\n        { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0633\u0644\u0645', area: 480, cost: 37336 }, { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0631\u0648\u0648\u0641', area: 308, cost: 24062 },\n        { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0623\u0633\u0648\u0627\u0631', area: 350, cost: 27333 }, { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0645\u0646\u0648\u0631', area: 247, cost: 19407 },\n        { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0623\u0645\u0627\u0645\u064a\u0629', area: 252, cost: 19791 }, { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u062e\u0644\u0641\u064a\u0629', area: 252, cost: 19791 },\n        { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u064a\u0645\u0646\u0649', area: 432, cost: 33642 }, { name: '\u0628\u064a\u0627\u0636 \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u064a\u0633\u0631\u0649', area: 432, cost: 33642 },\n        { name: '\u0639\u0631\u0627\u0645\u064a\u0633 \u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a', area: 1216, cost: 93971 }\n    ],\n    facadeDetails: [\n        { name: '\u062a\u0634\u0637\u064a\u0628 \u0627\u0633\u0642\u0641 \u0627\u0644\u0628\u062f\u0631\u0648\u0645', area: 450, type: '\u062f\u0647\u0627\u0646\u0627\u062a', cost: 45000 }, { name: '\u062a\u0634\u0637\u064a\u0628 \u062d\u0648\u0627\u0626\u0637 \u0627\u0644\u0628\u062f\u0631\u0648\u0645', area: 690, type: '\u062c\u0631\u0627\u0641\u064a\u0627\u062a\u0648', cost: 34500 },\n        { name: '\u062a\u0634\u0637\u064a\u0628 \u0627\u0633\u0642\u0641 \u0627\u0644\u0633\u0644\u0645', area: 168, type: '\u0645\u0635\u064a\u0635', cost: 5880 }, { name: '\u062a\u0634\u0637\u064a\u0628 \u062d\u0648\u0627\u0626\u0637 \u0627\u0644\u0633\u0644\u0645', area: 312, type: '\u062f\u0647\u0627\u0646\u0627\u062a', cost: 31200 },\n        { name: '\u062a\u0634\u0637\u064a\u0628 \u0627\u0644\u0631\u0648\u0648\u0641', area: 308, type: '\u062c\u0631\u0627\u0641\u064a\u0627\u062a\u0648', cost: 15375 }, { name: '\u062a\u0634\u0637\u064a\u0628 \u0627\u0644\u0623\u0633\u0648\u0627\u0631', area: 350, type: '\u062c\u0631\u0627\u0641\u064a\u0627\u062a\u0648', cost: 17500 },\n        { name: '\u062a\u0634\u0637\u064a\u0628 \u0627\u0644\u0645\u0646\u0648\u0631', area: 247, type: '\u0637\u0631\u0637\u0634\u0629 \u0628\u0648\u062f\u0631\u0647', cost: 9880 }, { name: '\u062a\u0634\u0637\u064a\u0628 \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0623\u0645\u0627\u0645\u064a\u0629', area: 252, type: '\u062d\u062c\u0631', cost: 214200 },\n        { name: '\u062a\u0634\u0637\u064a\u0628 \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u062e\u0644\u0641\u064a\u0629', area: 252, type: '\u062c\u0631\u0627\u0641\u064a\u0627\u062a\u0648', cost: 12600 }, { name: '\u062a\u0634\u0637\u064a\u0628 \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u064a\u0645\u0646\u0649', area: 432, type: '\u062c\u0631\u0627\u0641\u064a\u0627\u062a\u0648', cost: 21600 },\n        { name: '\u062a\u0634\u0637\u064a\u0628 \u0627\u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u064a\u0633\u0631\u0649', area: 432, type: '\u062c\u0631\u0627\u0641\u064a\u0627\u062a\u0648', cost: 21600 }, { name: '\u0639\u0631\u0627\u0645\u064a\u0633 \u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a', area: 1216, type: '\u062f\u0647\u0627\u0646\u0627\u062a', cost: 121600 },\n        { name: '\u062a\u0634\u0637\u064a\u0628 \u0627\u0644\u0633\u0648\u0631 \u0627\u0644\u0623\u0645\u0627\u0645\u064a', area: 44, type: '\u062d\u062c\u0631', cost: 37400 }\n    ],\n    finishesDetails: [\n        { name: '\u062a\u0623\u0633\u064a\u0633 \u0643\u0647\u0631\u0628\u0627\u0621', cost: 100000 }, { name: '\u062a\u0623\u0633\u064a\u0633 \u0633\u0628\u0627\u0643\u0629', cost: 250000 }, { name: '\u062a\u0631\u0643\u064a\u0628 \u062d\u0644\u0648\u0642 \u0623\u0628\u0648\u0627\u0628', cost: 48960 },\n        { name: '\u062a\u0631\u0643\u064a\u0628 \u0623\u0644\u0645\u0648\u0646\u064a\u0648\u0645 \u0634\u0628\u0627\u0628\u064a\u0643', cost: 96000 }, { name: '\u062a\u0631\u0643\u064a\u0628 \u0643\u0631\u064a\u062a\u0627\u0644 \u0628\u0644\u0643\u0648\u0646\u0627\u062a', cost: 48000 }, { name: '\u062a\u0631\u0643\u064a\u0628 \u0643\u0631\u064a\u062a\u0627\u0644 \u0628\u0648\u0627\u0628\u0627\u062a', cost: 72000 },\n        { name: '\u062a\u0631\u0643\u064a\u0628 \u0631\u062e\u0627\u0645 \u0627\u0644\u0633\u0644\u0645 \u062f\u0631\u062c', cost: 32400 }, { name: '\u062a\u0631\u0643\u064a\u0628 \u0631\u062e\u0627\u0645 \u0627\u0644\u0633\u0644\u0645 \u0628\u0633\u0637', cost: 14000 }, { name: '\u062a\u0631\u0643\u064a\u0628 \u0631\u062e\u0627\u0645 \u0627\u0644\u0645\u062f\u062e\u0644 1', cost: 21000 },\n        { name: '\u062a\u0631\u0643\u064a\u0628 \u0631\u062e\u0627\u0645 \u0627\u0644\u0645\u062f\u062e\u0644 2', cost: 24000 }, { name: '\u062a\u0631\u0643\u064a\u0628 \u0623\u0628\u0648\u0627\u0628 \u0627\u0644\u0634\u0642\u0642', cost: 32000 }, { name: '\u0639\u0632\u0644 \u0627\u0644\u0633\u0637\u062d', cost: 50000 },\n        { name: '\u0628\u0644\u0627\u0637 \u0627\u0644\u0633\u0637\u062d', cost: 80000 }, { name: '\u062a\u0634\u0637\u064a\u0628 \u0623\u0631\u0636\u064a\u0629 \u0627\u0644\u0628\u062f\u0631\u0648\u0645 \u0647\u0644\u064a\u0643\u0648\u0628\u062a\u0631', cost: 72000 }, { name: '\u062a\u0631\u0643\u064a\u0628 \u0645\u0635\u0639\u062f', cost: 300000 }\n    ]\n};\n\n\/\/ ==================== \u062f\u0648\u0627\u0644 \u0645\u0633\u0627\u0639\u062f\u0629 \u0645\u062d\u0633\u0651\u0646\u0629 ====================\nfunction formatNumber(n) { \n    return new Intl.NumberFormat('ar-EG').format(Math.round(n)); \n}\n\nfunction formatCurrency(amount) {\n    return `${formatNumber(amount)} ${project.currencySymbol}`;\n}\n\nfunction showMessage(msg, type='success', duration=2500) { \n    let icons = {success:'fa-check-circle', error:'fa-exclamation-circle', info:'fa-info-circle', warning:'fa-exclamation-triangle'};\n    let d=document.createElement('div'); \n    d.className=`notify notify-${type}`; \n    d.innerHTML=`<i class=\"fas ${icons[type]}\"><\/i> <span>${msg}<\/span>`; \n    document.body.appendChild(d); \n    setTimeout(()=>{d.style.opacity='0';d.style.transform='translateX(100%)';setTimeout(()=>d.remove(),300)},duration); \n}\n\nfunction saveData() { \n    try { \n        project.lastUpdated = new Date().toISOString();\n        localStorage.setItem('project', JSON.stringify(project)); \n        localStorage.setItem('sections', JSON.stringify(activeSections)); \n        localStorage.setItem('prices', JSON.stringify(prices)); \n        localStorage.setItem('editableItems', JSON.stringify(editableItems)); \n        showMessage('\u062a\u0645 \u062d\u0641\u0638 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u2713', 'success', 1500);\n    } catch(e){ showMessage('\u0641\u0634\u0644 \u0627\u0644\u062d\u0641\u0638 \u2717', 'error'); }\n}\n\nfunction loadData() { \n    try { \n        let p=localStorage.getItem('project'); if(p) project=JSON.parse(p); \n        let s=localStorage.getItem('sections'); if(s) activeSections=JSON.parse(s); \n        let pr=localStorage.getItem('prices'); if(pr) prices=JSON.parse(pr); \n        let ei=localStorage.getItem('editableItems'); if(ei) editableItems=JSON.parse(ei); \n        updatePreviewValues();\n    } catch(e){ console.log('Error loading data:', e); }\n}\n\nfunction scrollToTop() { window.scrollTo({ top: 0, behavior: 'smooth' }); }\n\n\/\/ \u062d\u0633\u0627\u0628 \u0627\u0644\u0645\u0633\u0627\u062d\u0627\u062a \u0648\u0645\u0639\u0627\u0645\u0644 S\nfunction getArea() { return project.length * project.width; }\nfunction getBasementBuilt() { return getArea() * project.basementPct \/ 100; }\nfunction getGroundBuilt() { return getArea() * project.groundPct \/ 100; }\nfunction getRepeatBuilt() { return getArea() * project.repeatedPct \/ 100; }\nfunction getRoofBuilt() { return getArea() * project.roofPct \/ 100; }\nfunction getTotalBuilt() { return getBasementBuilt() + getGroundBuilt() + (getRepeatBuilt() * project.floors) + getRoofBuilt(); }\nfunction getFactor() { return Math.max(0.5, Math.min(3, getTotalBuilt() \/ 2040)); }\n\n\/\/ \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0639\u0627\u064a\u0646\u0629 \u0641\u064a \u0634\u0627\u0634\u0629 \u0627\u0644\u062a\u0631\u062d\u064a\u0628\nfunction updatePreviewValues() {\n    const areaEl = document.getElementById('previewArea');\n    const builtEl = document.getElementById('previewBuilt');\n    if(areaEl) areaEl.textContent = formatNumber(getArea());\n    if(builtEl) builtEl.textContent = formatNumber(getTotalBuilt());\n    \n    \/\/ \u062a\u062d\u062f\u064a\u062b \u062d\u0642\u0648\u0644 \u0627\u0644\u0625\u062f\u062e\u0627\u0644 \u0628\u0627\u0644\u0642\u064a\u0645 \u0627\u0644\u0645\u062d\u0641\u0648\u0638\u0629\n    document.getElementById('inputLength').value = project.length;\n    document.getElementById('inputWidth').value = project.width;\n    document.getElementById('inputBasement').value = project.basementPct;\n    document.getElementById('inputGround').value = project.groundPct;\n    document.getElementById('inputRepeated').value = project.repeatedPct;\n    document.getElementById('inputRoof').value = project.roofPct;\n    document.getElementById('inputFloors').value = project.floors;\n}\n\n\/\/ \u062d\u0633\u0627\u0628 \u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641 \u0645\u0639 \u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062a\u0639\u062f\u064a\u0644\nfunction getEditableCost(section) { \n    if(!activeSections[section]) return 0; \n    if(!editableItems[section] || editableItems[section].length === 0) return 0;\n    let factor = getFactor(); \n    let total = 0; \n    for(let it of editableItems[section]) {\n        let price = prices[it.priceKey] || it.price || 0;\n        total += (it.qty * factor) * price * project.inflationFactor;\n    }\n    return total * (1 + project.contingency\/100);\n}\n\nfunction getDetailCost(section) { \n    if(!activeSections[section]) return 0; \n    let factor=getFactor(); \n    let total=0; \n    if(section==='excavation') for(let it of detailTables.excavation) total += it.total * factor;\n    else if(section==='insulation') for(let it of detailTables.insulation) total += it.total * factor;\n    else if(section==='backfill') for(let it of detailTables.backfill) total += it.total * factor;\n    else if(section==='structure') for(let it of detailTables.structureDetails) total += it.cost * factor;\n    else if(section==='masonry') for(let it of detailTables.masonryDetails) total += it.cost * factor;\n    else if(section==='plaster') for(let it of detailTables.plasterDetails) total += it.cost * factor;\n    else if(section==='facade') for(let it of detailTables.facadeDetails) total += it.cost * factor;\n    else if(section==='finishes') for(let it of detailTables.finishesDetails) total += it.cost * factor;\n    return total * project.inflationFactor * (1 + project.contingency\/100);\n}\n\nfunction getSectionCost(section) { return getEditableCost(section) + getDetailCost(section); }\nfunction getTotalCost() { \n    return getSectionCost('excavation')+getSectionCost('insulation')+getSectionCost('backfill')+\n           getSectionCost('structure')+getSectionCost('masonry')+getSectionCost('plaster')+\n           getSectionCost('facade')+getSectionCost('finishes'); \n}\n\nfunction getNetCost() {\n    return getTotalCost() - getSectionCost('facade');\n}\n\nfunction getCostPerMeter() {\n    const built = getTotalBuilt();\n    return built > 0 ? getNetCost() \/ built : 0;\n}\n\n\/\/ ==================== \u0627\u0644\u062a\u0628\u0648\u064a\u0628\u0627\u062a ====================\nlet currentTab = 'dashboard';\nlet tabs = [\n    {id:'dashboard', name:'\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629', icon:'fa-chart-pie'},\n    {id:'excavation', name:'\u0627\u0644\u062d\u0641\u0631', icon:'fa-truck-monster'},\n    {id:'insulation', name:'\u0627\u0644\u0639\u0632\u0644', icon:'fa-shield-halved'},\n    {id:'backfill', name:'\u0627\u0644\u0631\u062f\u0645', icon:'fa-fill-drip'},\n    {id:'structure', name:'\u0627\u0644\u0647\u064a\u0643\u0644', icon:'fa-helmet-safety'},\n    {id:'masonry', name:'\u0627\u0644\u0645\u0628\u0627\u0646\u064a', icon:'fa-cubes'},\n    {id:'plaster', name:'\u0627\u0644\u0628\u064a\u0627\u0636', icon:'fa-brush'},\n    {id:'facade', name:'\u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a', icon:'fa-building'},\n    {id:'finishes', name:'\u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a', icon:'fa-paint-roller'},\n    {id:'prices', name:'\u0627\u0644\u0623\u0633\u0639\u0627\u0631', icon:'fa-tags'},\n    {id:'stats', name:'\u0627\u0644\u0625\u062d\u0635\u0627\u0626\u064a\u0627\u062a', icon:'fa-chart-line'},\n    {id:'settings', name:'\u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a', icon:'fa-cog'}\n];\n\nfunction renderTabs() { \n    let html=''; \n    for(let t of tabs) {\n        const isActive = currentTab===t.id;\n        html+=`<button class=\"tab-b ${isActive?'on':''}\" onclick=\"switchTab('${t.id}')\" title=\"${t.name}\">\n            <i class=\"fas ${t.icon} ml-1\"><\/i>${t.name}\n        <\/button>`;\n    } \n    document.getElementById('tn').innerHTML=html; \n}\n\nfunction switchTab(id) { \n    currentTab=id; \n    renderTabs(); \n    renderContent(); \n    saveData();\n}\n\nfunction renderContent() { \n    let c=document.getElementById('tc'); \n    if(currentTab==='dashboard') renderDashboard(c); \n    else if(currentTab==='prices') renderPrices(c); \n    else if(currentTab==='stats') renderStats(c); \n    else if(currentTab==='settings') renderSettings(c);\n    else renderSection(c,currentTab); \n}\n\n\/\/ ==================== \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0644\u064a\u0644\u064a ====================\nfunction toggleDarkMode() {\n    document.body.classList.toggle('dark');\n    const isDark = document.body.classList.contains('dark');\n    localStorage.setItem('darkMode', isDark);\n    const btn = document.querySelector('[onclick=\"toggleDarkMode()\"] i');\n    if(btn) btn.className = isDark ? 'fas fa-sun' : 'fas fa-moon';\n    showMessage(isDark ? '\u062a\u0645 \u062a\u0641\u0639\u064a\u0644 \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0644\u064a\u0644\u064a \ud83c\udf19' : '\u062a\u0645 \u062a\u0641\u0639\u064a\u0644 \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0646\u0647\u0627\u0631\u064a \u2600\ufe0f', 'info');\n}\n\n\/\/ \u062a\u062d\u0645\u064a\u0644 \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0644\u064a\u0644\u064a\nfunction loadDarkMode() {\n    const saved = localStorage.getItem('darkMode');\n    if(saved === 'true') {\n        document.body.classList.add('dark');\n        const btn = document.querySelector('[onclick=\"toggleDarkMode()\"] i');\n        if(btn) btn.className = 'fas fa-sun';\n    }\n}\n\n\/\/ ==================== \u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645 \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629 \u0627\u0644\u0645\u062d\u0633\u0651\u0646\u0629 ====================\nfunction renderDashboard(container) {\n    let sections = [\n        {name:'\u0627\u0644\u062d\u0641\u0631', key:'excavation', color:'#8B6914', cost:getSectionCost('excavation')},\n        {name:'\u0627\u0644\u0639\u0632\u0644', key:'insulation', color:'#6C3483', cost:getSectionCost('insulation')},\n        {name:'\u0627\u0644\u0631\u062f\u0645', key:'backfill', color:'#7D6608', cost:getSectionCost('backfill')},\n        {name:'\u0627\u0644\u0647\u064a\u0643\u0644', key:'structure', color:'#C75B39', cost:getSectionCost('structure')},\n        {name:'\u0627\u0644\u0645\u0628\u0627\u0646\u064a', key:'masonry', color:'#2A9D8F', cost:getSectionCost('masonry')},\n        {name:'\u0627\u0644\u0628\u064a\u0627\u0636', key:'plaster', color:'#D4A017', cost:getSectionCost('plaster')},\n        {name:'\u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a', key:'facade', color:'#884EA0', cost:getSectionCost('facade')},\n        {name:'\u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a', key:'finishes', color:'#E67E22', cost:getSectionCost('finishes')}\n    ];\n    \n    const total = getTotalCost();\n    const net = getNetCost();\n    const costPerMeter = getCostPerMeter();\n    const factor = getFactor();\n    \n    let html = `<div><div class=\"grid grid-cols-2 md:grid-cols-4 gap-4 mb-6\">`;\n    \n    \/\/ \u0628\u0637\u0627\u0642\u0627\u062a \u0627\u0644\u0625\u062d\u0635\u0627\u0626\u064a\u0627\u062a \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629\n    html += `<div class=\"crd stat-card text-center p-4\">\n        <div class=\"text-2xl font-black\" style=\"color:var(--pr)\">${formatNumber(getArea())}<\/div>\n        <div class=\"text-xs text-gray-500\">\u0645\u0633\u0627\u062d\u0629 \u0627\u0644\u0623\u0631\u0636 (\u0645\u00b2)<\/div>\n        <div class=\"progress-bar mt-2\"><div class=\"progress-fill\" style=\"width:${Math.min(100, getArea()\/10)}%\"><\/div><\/div>\n    <\/div>`;\n    \n    html += `<div class=\"crd stat-card text-center p-4\">\n        <div class=\"text-2xl font-black\" style=\"color:var(--ac)\">${formatNumber(getTotalBuilt())}<\/div>\n        <div class=\"text-xs text-gray-500\">\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0628\u0646\u0627\u0626\u064a (\u0645\u00b2)<\/div>\n        <div class=\"badge badge-primary mt-2\">${project.floors} \u0623\u062f\u0648\u0627\u0631<\/div>\n    <\/div>`;\n    \n    html += `<div class=\"crd stat-card text-center p-4\">\n        <div class=\"text-2xl font-black\" style=\"color:var(--gd)\">${factor.toFixed(2)}<\/div>\n        <div class=\"text-xs text-gray-500\">\u0645\u0639\u0627\u0645\u0644 S<\/div>\n        <div class=\"badge ${factor>1.5?'badge-warning':'badge-success'} mt-2\">${factor>1.5?'\u0645\u0631\u062a\u0641\u0639':'\u0637\u0628\u064a\u0639\u064a'}<\/div>\n    <\/div>`;\n    \n    html += `<div class=\"crd stat-card text-center p-4\">\n        <div class=\"text-2xl font-black\" style=\"color:var(--ok)\">${formatCurrency(net)}<\/div>\n        <div class=\"text-xs text-gray-500\">\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0646\u0647\u0627\u0626\u064a<\/div>\n        <div class=\"text-xs text-gray-400 mt-1\">${formatCurrency(costPerMeter)}\/\u0645\u00b2<\/div>\n    <\/div>`;\n    \n    html += `<\/div><div class=\"grid md:grid-cols-2 gap-6\">`;\n    \n    \/\/ \u0645\u062e\u0637\u0637 \u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641\n    html += `<div class=\"crd\"><h3 class=\"font-bold mb-4 flex items-center gap-2\" style=\"color:var(--pr)\">\n        <i class=\"fas fa-chart-pie\"><\/i> \u062a\u0648\u0632\u064a\u0639 \u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641\n    <\/h3><canvas id=\"costChart\" height=\"220\"><\/canvas><\/div>`;\n    \n    \/\/ \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641 \u0627\u0644\u062a\u0641\u0635\u064a\u0644\u064a\u0629\n    html += `<div class=\"crd\"><h3 class=\"font-bold mb-4 flex items-center gap-2\" style=\"color:var(--pr)\">\n        <i class=\"fas fa-list\"><\/i> \u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0628\u0646\u0648\u062f\n    <\/h3><div class=\"space-y-2 max-h-64 overflow-y-auto pr-2\">`;\n    \n    for(let s of sections) { \n        let pct=total>0?(s.cost\/total*100).toFixed(1):0; \n        html+=`<div class=\"flex items-center gap-3 p-2 hover:bg-gray-50 rounded-lg transition-colors\">\n            <div class=\"w-20 text-sm font-bold truncate\" style=\"color:${s.color}\">${s.name}<\/div>\n            <div class=\"flex-1 bg-gray-100 rounded-full h-3 overflow-hidden\">\n                <div class=\"h-full rounded-full transition-all duration-500\" style=\"width:${pct}%;background:${s.color}\"><\/div>\n            <\/div>\n            <div class=\"w-12 text-sm font-bold text-left\">${pct}%<\/div>\n            <div class=\"w-24 text-left font-bold text-sm\">${formatCurrency(s.cost)}<\/div>\n        <\/div>`; \n    }\n    \n    html+=`<\/div><div class=\"border-t pt-3 mt-3\"><div class=\"flex justify-between font-bold text-base\">\n        <span>\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0643\u0644\u064a<\/span><span style=\"color:var(--pr)\">${formatCurrency(total)}<\/span>\n    <\/div><\/div><\/div><\/div>`;\n    \n    \/\/ \u0642\u0633\u0645 \u0627\u0644\u0647\u0648\u0627\u0645\u0634 \u0648\u0627\u0644\u0639\u0648\u0627\u0645\u0644\n    html+=`<div class=\"grid md:grid-cols-2 gap-6 mt-6\">\n    <div class=\"crd\"><h3 class=\"font-bold mb-4 flex items-center gap-2\" style=\"color:var(--pr)\">\n        <i class=\"fas fa-calculator\"><\/i> \u0627\u0644\u062a\u062d\u0644\u064a\u0644 \u0627\u0644\u0645\u0627\u0644\u064a\n    <\/h3>`;\n    \n    html+=`<div class=\"space-y-3\">\n        <div class=\"flex justify-between items-center py-2 border-b border-dashed\">\n            <span class=\"text-sm\">\u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641 \u0627\u0644\u0645\u0628\u0627\u0634\u0631\u0629<\/span>\n            <span class=\"font-bold\">${formatCurrency(total)}<\/span>\n        <\/div>\n        <div class=\"flex justify-between items-center py-2 border-b border-dashed\">\n            <span class=\"text-sm\">\u0646\u0633\u0628\u0629 \u0627\u0644\u0637\u0648\u0627\u0631\u0626 (${project.contingency}%)<\/span>\n            <span class=\"font-bold text-amber-600\">+${formatCurrency(total * project.contingency\/100)}<\/span>\n        <\/div>\n        <div class=\"flex justify-between items-center py-2 border-b border-dashed\">\n            <span class=\"text-sm\">\u0639\u0627\u0645\u0644 \u0627\u0644\u062a\u0636\u062e\u0645 (${(project.inflationFactor*100).toFixed(0)}%)<\/span>\n            <span class=\"font-bold text-blue-600\">\u00d7${project.inflationFactor.toFixed(2)}<\/span>\n        <\/div>\n        <div class=\"flex justify-between items-center py-2\">\n            <span class=\"text-sm\">\u0647\u0627\u0645\u0634 \u0627\u0644\u0631\u0628\u062d \u0627\u0644\u0645\u0642\u062a\u0631\u062d (${project.profitMargin}%)<\/span>\n            <span class=\"font-bold text-green-600\">+${formatCurrency(net * project.profitMargin\/100)}<\/span>\n        <\/div>\n        <div class=\"flex justify-between items-center py-3 bg-green-50 rounded-lg px-3\">\n            <span class=\"font-bold text-lg\">\u0633\u0639\u0631 \u0627\u0644\u0628\u064a\u0639 \u0627\u0644\u0645\u0642\u062a\u0631\u062d<\/span>\n            <span class=\"font-bold text-xl\" style=\"color:var(--ok)\">${formatCurrency(net * (1+project.profitMargin\/100))}<\/span>\n        <\/div>\n    <\/div><\/div>`;\n    \n    \/\/ \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0632\u0645\u0646\u064a\n    html+=`<div class=\"crd\"><h3 class=\"font-bold mb-4 flex items-center gap-2\" style=\"color:var(--pr)\">\n        <i class=\"fas fa-calendar-alt\"><\/i> \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0632\u0645\u0646\u064a\n    <\/h3><div id=\"ganttChart\" class=\"space-y-3\"><\/div>\n    <div class=\"text-xs text-gray-400 mt-3 flex items-center gap-1\">\n        <i class=\"fas fa-info-circle\"><\/i> \u0627\u0644\u0645\u062f\u0629 \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a\u0629 \u0627\u0644\u0645\u062a\u0648\u0642\u0639\u0629: <strong>17 \u0634\u0647\u0631<\/strong>\n    <\/div><\/div><\/div><\/div>`;\n    \n    container.innerHTML=html;\n    \n    \/\/ \u0631\u0633\u0645 \u0627\u0644\u0645\u062e\u0637\u0637\u0627\u062a \u0628\u0639\u062f \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u062d\u062a\u0648\u0649\n    setTimeout(()=>{\n        \/\/ \u0645\u062e\u0637\u0637 \u0627\u0644\u062f\u0648\u0646\u062a\n        let ctx=document.getElementById('costChart'); \n        if(ctx){\n            let labels=sections.map(s=>s.name); \n            let data=sections.map(s=>s.cost); \n            let colors=sections.map(s=>s.color);\n            new Chart(ctx,{\n                type:'doughnut',\n                data:{\n                    labels:labels,\n                    datasets:[{\n                        data:data,\n                        backgroundColor:colors,\n                        borderWidth:2,\n                        borderColor:document.body.classList.contains('dark') ? '#1a1a2e' : '#fff'\n                    }]\n                },\n                options:{\n                    responsive:true,\n                    maintainAspectRatio:true,\n                    plugins:{\n                        legend:{\n                            position:'bottom',\n                            labels:{\n                                font:{size:10, family:'Cairo'},\n                                padding:15,\n                                usePointStyle:true\n                            }\n                        },\n                        tooltip:{\n                            callbacks:{\n                                label:function(ctx){\n                                    const value = ctx.parsed;\n                                    const total = ctx.dataset.data.reduce((a,b)=>a+b,0);\n                                    const pct = ((value\/total)*100).toFixed(1);\n                                    return `${ctx.label}: ${formatCurrency(value)} (${pct}%)`;\n                                }\n                            }\n                        }\n                    },\n                    cutout:'65%'\n                }\n            });\n        }\n        \n        \/\/ \u0645\u062e\u0637\u0637 \u062c\u0627\u0646\u062a\n        let gantt='<div class=\"space-y-2\">';\n        let months=[\n            {name:'\u0627\u0644\u062d\u0641\u0631',days:1,color:'#8B6914',desc:'\u0623\u0639\u0645\u0627\u0644 \u0627\u0644\u062d\u0641\u0631 \u0648\u0627\u0644\u062a\u0633\u0648\u064a\u0629'},\n            {name:'\u0627\u0644\u0639\u0632\u0644',days:1,color:'#6C3483',desc:'\u0639\u0632\u0644 \u0627\u0644\u0623\u0633\u0627\u0633\u0627\u062a'},\n            {name:'\u0627\u0644\u0631\u062f\u0645',days:1,color:'#7D6608',desc:'\u0631\u062f\u0645 \u062d\u0648\u0644 \u0627\u0644\u0623\u0633\u0627\u0633\u0627\u062a'},\n            {name:'\u0627\u0644\u0647\u064a\u0643\u0644',days:4,color:'#C75B39',desc:'\u0627\u0644\u062e\u0631\u0633\u0627\u0646\u0629 \u0648\u0627\u0644\u062a\u0633\u0644\u064a\u062d'},\n            {name:'\u0627\u0644\u0645\u0628\u0627\u0646\u064a',days:3,color:'#2A9D8F',desc:'\u0623\u0639\u0645\u0627\u0644 \u0627\u0644\u0637\u0648\u0628'},\n            {name:'\u0627\u0644\u0628\u064a\u0627\u0636',days:2,color:'#D4A017',desc:'\u0627\u0644\u062a\u0628\u0644\u064a\u0637 \u0648\u0627\u0644\u062c\u0628\u0633'},\n            {name:'\u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a',days:2,color:'#884EA0',desc:'\u062a\u0634\u0637\u064a\u0628 \u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a'},\n            {name:'\u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a',days:3,color:'#E67E22',desc:'\u0627\u0644\u0643\u0647\u0631\u0628\u0627\u0621 \u0648\u0627\u0644\u0633\u0628\u0627\u0643\u0629'}\n        ];\n        let start=0;\n        for(let m of months){ \n            let width=m.days*55; \n            gantt+=`<div class=\"group\">\n                <div class=\"flex items-center gap-2 mb-1\">\n                    <div class=\"w-2 h-2 rounded-full\" style=\"background:${m.color}\"><\/div>\n                    <div class=\"text-xs font-bold\">${m.name}<\/div>\n                    <div class=\"text-[10px] text-gray-400\">(${m.days} \u0634\u0647\u0631)<\/div>\n                <\/div>\n                <div class=\"relative\">\n                    <div class=\"gantt-bar\" style=\"width:${width}px;background:${m.color};margin-right:${start*55}px;cursor:pointer\" \n                         title=\"${m.desc}\">${m.days}\u0634<\/div>\n                <\/div>\n            <\/div>`; \n            start+=m.days; \n        }\n        gantt+=`<\/div>`;\n        const ganttEl = document.getElementById('ganttChart');\n        if(ganttEl) ganttEl.innerHTML=gantt;\n        \n        \/\/ \u0625\u0636\u0627\u0641\u0629 \u062a\u0641\u0627\u0639\u0644 \u0644\u0644\u0639\u0646\u0627\u0635\u0631\n        document.querySelectorAll('.gantt-bar').forEach(bar => {\n            bar.addEventListener('mouseenter', function() {\n                this.style.transform = 'scale(1.03)';\n                this.style.zIndex = '10';\n            });\n            bar.addEventListener('mouseleave', function() {\n                this.style.transform = 'scale(1)';\n            });\n        });\n        \n    },150);\n}\n\n\/\/ ==================== \u0639\u0631\u0636 \u0642\u0633\u0645 \u0645\u0639 \u062c\u062f\u0648\u0644\u064a\u0646 \u0645\u062d\u0633\u0651\u0646 ====================\nfunction renderSection(container, section) {\n    let title='', color='', icon='', detailData=[], detailHeaders=[], factor=getFactor();\n    let titles={excavation:'\u0623\u0639\u0645\u0627\u0644 \u0627\u0644\u062d\u0641\u0631', insulation:'\u0627\u0644\u0639\u0632\u0644 \u0627\u0644\u062d\u0631\u0627\u0631\u064a', backfill:'\u0627\u0644\u0631\u062f\u0645 \u0648\u0627\u0644\u062a\u0633\u0648\u064a\u0629', structure:'\u0627\u0644\u0647\u064a\u0643\u0644 \u0627\u0644\u062e\u0631\u0633\u0627\u0646\u064a', masonry:'\u0623\u0639\u0645\u0627\u0644 \u0627\u0644\u0645\u0628\u0627\u0646\u064a', plaster:'\u0623\u0639\u0645\u0627\u0644 \u0627\u0644\u0628\u064a\u0627\u0636', facade:'\u062a\u0634\u0637\u064a\u0628 \u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a', finishes:'\u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a \u0627\u0644\u0646\u0647\u0627\u0626\u064a\u0629'};\n    let colors={excavation:'#8B6914', insulation:'#6C3483', backfill:'#7D6608', structure:'#C75B39', masonry:'#2A9D8F', plaster:'#D4A017', facade:'#884EA0', finishes:'#E67E22'};\n    let icons={excavation:'fa-truck-monster', insulation:'fa-shield-halved', backfill:'fa-fill-drip', structure:'fa-helmet-safety', masonry:'fa-cubes', plaster:'fa-brush', facade:'fa-building', finishes:'fa-paint-roller'};\n    \n    \/\/ \u062a\u062d\u062f\u064a\u062f \u0631\u0624\u0648\u0633 \u0627\u0644\u062c\u062f\u0627\u0648\u0644 \u0627\u0644\u062a\u0641\u0635\u064a\u0644\u064a\u0629\n    if(section==='excavation'){ detailData=detailTables.excavation; detailHeaders=['\u0627\u0644\u0628\u0646\u062f','\u0627\u0644\u062d\u062c\u0645 (\u0645\u00b3)','\u0645\u064a\u0627\u0647','\u0639\u0645\u0627\u0644\u0629','\u0644\u0648\u062f\u0631','\u062f\u0643\u0627\u0643','\u0647\u0631\u0627\u0633','\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a']; }\n    else if(section==='insulation'){ detailData=detailTables.insulation; detailHeaders=['\u0627\u0644\u0628\u0646\u062f','\u0627\u0644\u0645\u0633\u0627\u062d\u0629 (\u0645\u00b2)','\u0639\u0632\u0644 \u0639\u0627\u062f\u064a','\u0639\u0632\u0644 \u0645\u0624\u0643\u0633\u062f','\u0645\u0648\u0627\u062f \u062d\u0631\u064a\u0642','\u0639\u0645\u0627\u0644\u0629','\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a']; }\n    else if(section==='backfill'){ detailData=detailTables.backfill; detailHeaders=['\u0627\u0644\u0628\u0646\u062f','\u0627\u0644\u062d\u062c\u0645 (\u0645\u00b3)','\u0631\u0645\u0644','\u0645\u064a\u0627\u0647','\u0639\u0645\u0627\u0644\u0629','\u0644\u0648\u062f\u0631','\u062f\u0643\u0627\u0643','\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a']; }\n    else if(section==='structure'){ detailData=detailTables.structureDetails; detailHeaders=['\u0627\u0644\u0628\u0646\u062f','\u062e\u0631\u0633\u0627\u0646\u0629 (\u0645\u00b3)','\u062d\u062f\u064a\u062f (\u0637\u0646)','\u0627\u0644\u062a\u0643\u0644\u0641\u0629']; }\n    else if(section==='masonry'){ detailData=detailTables.masonryDetails; detailHeaders=['\u0627\u0644\u0628\u0646\u062f','\u0637\u0648\u0628 \u062f\u0648\u0628\u0644 (\u0623\u0644\u0641)','\u0637\u0648\u0628 \u0645\u0635\u0645\u062a (\u0623\u0644\u0641)','\u0627\u0644\u062a\u0643\u0644\u0641\u0629']; }\n    else if(section==='plaster'){ detailData=detailTables.plasterDetails; detailHeaders=['\u0627\u0644\u0628\u0646\u062f','\u0627\u0644\u0645\u0633\u0627\u062d\u0629 (\u0645\u00b2)','\u0627\u0644\u062a\u0643\u0644\u0641\u0629']; }\n    else if(section==='facade'){ detailData=detailTables.facadeDetails; detailHeaders=['\u0627\u0644\u0628\u0646\u062f','\u0627\u0644\u0645\u0633\u0627\u062d\u0629 (\u0645\u00b2)','\u0646\u0648\u0639 \u0627\u0644\u062a\u0634\u0637\u064a\u0628','\u0627\u0644\u062a\u0643\u0644\u0641\u0629']; }\n    else if(section==='finishes'){ detailData=detailTables.finishesDetails; detailHeaders=['\u0627\u0644\u0628\u0646\u062f','\u0627\u0644\u062a\u0643\u0644\u0641\u0629']; }\n    \n    \/\/ \u062d\u0633\u0627\u0628 \u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0628\u0646\u0648\u062f \u0627\u0644\u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0639\u062f\u064a\u0644\n    let editableTotal = 0;\n    if(editableItems[section] && editableItems[section].length > 0) {\n        for(let it of editableItems[section]) {\n            let price = prices[it.priceKey] || it.price || 0;\n            editableTotal += (it.qty * factor) * price * project.inflationFactor;\n        }\n        editableTotal *= (1 + project.contingency\/100);\n    }\n    \n    let detailTotal=0; \n    for(let it of detailData) detailTotal += (it.total||it.cost) * factor * project.inflationFactor;\n    detailTotal *= (1 + project.contingency\/100);\n    \n    let total = editableTotal + detailTotal;\n    \n    let html=`<div><div class=\"crd\"><div class=\"flex flex-wrap justify-between items-center gap-3 mb-4\">\n        <h3 class=\"font-bold text-lg flex items-center gap-2\" style=\"color:${colors[section]}\">\n            <i class=\"fas ${icons[section]}\"><\/i> ${titles[section]}\n        <\/h3>\n        <div class=\"flex items-center gap-3 flex-wrap\">\n            <span class=\"badge badge-primary\">S = ${factor.toFixed(2)}<\/span>\n            <span class=\"text-sm\">${formatCurrency(total)}<\/span>\n            <button onclick=\"addItem('${section}')\" class=\"btn-p\" style=\"padding:4px 12px;font-size:11px\">\n                <i class=\"fas fa-plus\"><\/i> \u0625\u0636\u0627\u0641\u0629 \u0628\u0646\u062f\n            <\/button>\n        <\/div>\n    <\/div>`;\n    \n    \/\/ \u062c\u062f\u0648\u0644 \u0627\u0644\u0628\u0646\u0648\u062f \u0627\u0644\u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0639\u062f\u064a\u0644\n    if(editableItems[section] && editableItems[section].length > 0) {\n        html+=`<div class=\"sx mb-4\">\n            <div class=\"flex items-center gap-2 mb-3\">\n                <div class=\"search-box flex-1 max-w-xs\">\n                    <i class=\"fas fa-search\"><\/i>\n                    <input type=\"text\" class=\"inp\" placeholder=\"\u0628\u062d\u062b \u0641\u064a \u0627\u0644\u0628\u0646\u0648\u062f...\" onkeyup=\"filterTable(this,'editable-${section}')\">\n                <\/div>\n                <span class=\"text-xs text-gray-500\">${editableItems[section].length} \u0628\u0646\u062f<\/span>\n            <\/div>\n            <table id=\"editable-${section}\" class=\"w-full text-sm\">\n                <thead>\n                    <tr class=\"border-b-2\" style=\"border-color:${colors[section]}\">\n                        <th class=\"p-2 text-center w-8\">#<\/th>\n                        <th class=\"p-2 text-right\">\u0627\u0644\u0628\u0646\u062f<\/th>\n                        <th class=\"p-2 text-center w-20 table-sort\" onclick=\"sortTable('editable-${section}',1)\">\u0627\u0644\u0643\u0645\u064a\u0629<\/th>\n                        <th class=\"p-2 text-center w-16\">\u0627\u0644\u0648\u062d\u062f\u0629<\/th>\n                        <th class=\"p-2 text-center w-24 table-sort\" onclick=\"sortTable('editable-${section}',4)\">\u0633\u0639\u0631 \u0627\u0644\u0648\u062d\u062f\u0629<\/th>\n                        <th class=\"p-2 text-center w-24\">\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a<\/th>\n                        <th class=\"p-2 text-center w-12\"><\/th>\n                    <\/tr>\n                <\/thead>\n                <tbody>`;\n                \n        for(let i=0;i<editableItems[section].length;i++){ \n            let it=editableItems[section][i]; \n            let qty=it.qty*factor; \n            let price=prices[it.priceKey]||it.price||0; \n            let cost=qty*price*project.inflationFactor*(1+project.contingency\/100);\n            \n            html+=`<tr class=\"border-b hover:bg-gray-50 transition-colors group\">\n                <td class=\"py-2 text-center\">${i+1}<\/td>\n                <td class=\"py-2\">\n                    <div class=\"tooltip\">\n                        <input type=\"text\" class=\"inp inp-sm font-medium\" value=\"${it.name}\" onchange=\"updateItem('${section}',${i},'name',this.value)\">\n                        ${it.desc ? `<span class=\"tooltip-text\">${it.desc}<\/span>` : ''}\n                    <\/div>\n                <\/td>\n                <td class=\"py-2 text-center\">\n                    <input type=\"number\" class=\"inp inp-sm\" value=\"${qty.toFixed(2)}\" step=\"0.01\" onchange=\"updateQty('${section}',${i},this.value)\">\n                <\/td>\n                <td class=\"py-2 text-center text-xs\">${it.unit}<\/td>\n                <td class=\"py-2 text-center\">\n                    <input type=\"number\" class=\"inp inp-sm\" value=\"${price}\" step=\"1\" onchange=\"updatePriceItem('${section}',${i},this.value)\">\n                    ${it.priceKey ? `<div class=\"text-[9px] text-ac mt-0.5\">${it.priceKey}<\/div>` : ''}\n                <\/td>\n                <td class=\"py-2 text-center font-bold\" style=\"color:${colors[section]}\">${formatCurrency(cost)}<\/td>\n                <td class=\"py-2 text-center\">\n                    <button onclick=\"confirmDeleteItem('${section}',${i})\" class=\"text-gray-400 hover:text-red-500 transition-colors\" title=\"\u062d\u0630\u0641\">\n                        <i class=\"fas fa-trash\"><\/i>\n                    <\/button>\n                <\/td>\n            <\/tr>`;\n        }\n        \n        html+=`<tr class=\"bg-gradient-to-l from-gray-50 to-transparent font-bold\">\n            <td colspan=\"5\" class=\"py-3 text-left pr-4\">\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0628\u0646\u0648\u062f \u0627\u0644\u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0639\u062f\u064a\u0644<\/td>\n            <td class=\"py-3 text-center\" style=\"color:${colors[section]}\">${formatCurrency(editableTotal)}<\/td>\n            <td><\/td>\n        <\/tr>`;\n        html+=`<\/tbody><\/table><\/div>`;\n    } else {\n        html+=`<div class=\"text-center py-6 text-gray-400 bg-gray-50 rounded-lg\">\n            <i class=\"fas fa-inbox text-3xl mb-2\"><\/i>\n            <p>\u0644\u0627 \u062a\u0648\u062c\u062f \u0628\u0646\u0648\u062f \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0639\u062f\u064a\u0644 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0642\u0633\u0645<\/p>\n            <button onclick=\"addItem('${section}')\" class=\"btn-outline mt-2\">\u0625\u0636\u0627\u0641\u0629 \u0623\u0648\u0644 \u0628\u0646\u062f<\/button>\n        <\/div>`;\n    }\n    \n    \/\/ \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639\n    html+=`<div class=\"crd mt-2\" style=\"padding:12px 16px;background:linear-gradient(135deg,rgba(199,91,57,.03),transparent)\">\n        <div class=\"flex flex-wrap gap-4 text-xs\">\n            <span><b class=\"text-gray-500\">\u0627\u0644\u0623\u0628\u0639\u0627\u062f:<\/b> ${project.length}\u00d7${project.width} \u0645<\/span>\n            <span><b class=\"text-gray-500\">\u0627\u0644\u0645\u0633\u0627\u062d\u0629:<\/b> ${formatNumber(getArea())} \u0645\u00b2<\/span>\n            <span><b class=\"text-gray-500\">\u0627\u0644\u0628\u0646\u0627\u0626\u064a:<\/b> ${formatNumber(getTotalBuilt())} \u0645\u00b2<\/span>\n            <span><b class=\"text-gray-500\">\u0627\u0644\u0623\u062f\u0648\u0627\u0631:<\/b> ${project.floors}<\/span>\n            <span class=\"badge badge-success\">${project.currencySymbol}<\/span>\n        <\/div>\n    <\/div>`;\n    \n    \/\/ \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u062a\u0641\u0635\u064a\u0644\u064a\n    html+=`<div class=\"crd mt-4\">\n        <h3 class=\"font-bold mb-3 flex items-center gap-2\" style=\"color:${colors[section]}\">\n            <i class=\"fas fa-table\"><\/i> \u0627\u0644\u0628\u0646\u0648\u062f \u0627\u0644\u062a\u0641\u0635\u064a\u0644\u064a\u0629\n        <\/h3>\n        <div class=\"sx\">\n            <table class=\"w-full text-sm\">\n                <thead>\n                    <tr class=\"border-b-2\" style=\"border-color:${colors[section]}\">`;\n    for(let h of detailHeaders) html+=`<th class=\"p-2 text-center font-medium\">${h}<\/th>`;\n    html+=`<\/tr><\/thead><tbody>`;\n    \n    for(let it of detailData){\n        html+=`<tr class=\"border-b hover:bg-gray-50 transition-colors\">`;\n        if(section==='excavation'){ \n            html+=`<td class=\"p-2\">${it.name}<\/td><td class=\"p-2 text-center\">${formatNumber(it.vol)}<\/td>\n            <td class=\"p-2 text-center\">${it.water}<\/td><td class=\"p-2 text-center\">${it.laborers}<\/td>\n            <td class=\"p-2 text-center\">${it.loaderH}<\/td><td class=\"p-2 text-center\">${it.dakkaD}<\/td>\n            <td class=\"p-2 text-center\">${it.hirasD}<\/td>\n            <td class=\"p-2 text-center font-bold\" style=\"color:${colors[section]}\">${formatCurrency(it.total*factor*project.inflationFactor*(1+project.contingency\/100))}<\/td>`; \n        }\n        else if(section==='insulation'){ \n            html+=`<td class=\"p-2\">${it.name}<\/td><td class=\"p-2 text-center\">${formatNumber(it.area)}<\/td>\n            <td class=\"p-2 text-center\">${it.normB}<\/td><td class=\"p-2 text-center\">${it.oxB}<\/td>\n            <td class=\"p-2 text-center\">${it.fire}<\/td><td class=\"p-2 text-center\">${it.labor}<\/td>\n            <td class=\"p-2 text-center font-bold\" style=\"color:${colors[section]}\">${formatCurrency(it.total*factor*project.inflationFactor*(1+project.contingency\/100))}<\/td>`; \n        }\n        else if(section==='backfill'){ \n            html+=`<td class=\"p-2\">${it.name}<\/td><td class=\"p-2 text-center\">${formatNumber(it.vol)}<\/td>\n            <td class=\"p-2 text-center\">${it.sand}<\/td><td class=\"p-2 text-center\">${it.water}<\/td>\n            <td class=\"p-2 text-center\">${it.labor}<\/td><td class=\"p-2 text-center\">${it.loader}<\/td>\n            <td class=\"p-2 text-center\">${it.dakka}<\/td>\n            <td class=\"p-2 text-center font-bold\" style=\"color:${colors[section]}\">${formatCurrency(it.total*factor*project.inflationFactor*(1+project.contingency\/100))}<\/td>`; \n        }\n        else if(section==='structure'){ \n            html+=`<td class=\"p-2\">${it.name}<\/td><td class=\"p-2 text-center\">${formatNumber(it.vol)}<\/td>\n            <td class=\"p-2 text-center\">${it.iron.toFixed(2)}<\/td>\n            <td class=\"p-2 text-center font-bold\" style=\"color:${colors[section]}\">${formatCurrency(it.cost*factor*project.inflationFactor*(1+project.contingency\/100))}<\/td>`; \n        }\n        else if(section==='masonry'){ \n            html+=`<td class=\"p-2\">${it.name}<\/td><td class=\"p-2 text-center\">${it.brickD}<\/td>\n            <td class=\"p-2 text-center\">${it.brickS}<\/td>\n            <td class=\"p-2 text-center font-bold\" style=\"color:${colors[section]}\">${formatCurrency(it.cost*factor*project.inflationFactor*(1+project.contingency\/100))}<\/td>`; \n        }\n        else if(section==='plaster'){ \n            html+=`<td class=\"p-2\">${it.name}<\/td><td class=\"p-2 text-center\">${formatNumber(it.area)}<\/td>\n            <td class=\"p-2 text-center font-bold\" style=\"color:${colors[section]}\">${formatCurrency(it.cost*factor*project.inflationFactor*(1+project.contingency\/100))}<\/td>`; \n        }\n        else if(section==='facade'){ \n            html+=`<td class=\"p-2\">${it.name}<\/td><td class=\"p-2 text-center\">${formatNumber(it.area)}<\/td>\n            <td class=\"p-2 text-center\"><span class=\"badge badge-primary\">${it.type}<\/span><\/td>\n            <td class=\"p-2 text-center font-bold\" style=\"color:${colors[section]}\">${formatCurrency(it.cost*factor*project.inflationFactor*(1+project.contingency\/100))}<\/td>`; \n        }\n        else if(section==='finishes'){ \n            html+=`<td class=\"p-2\">${it.name}<\/td>\n            <td class=\"p-2 text-center font-bold\" style=\"color:${colors[section]}\">${formatCurrency(it.cost*factor*project.inflationFactor*(1+project.contingency\/100))}<\/td>`; \n        }\n        html+=`<\/tr>`;\n    }\n    \n    html+=`<tr class=\"bg-gradient-to-l from-gray-100 to-transparent font-bold\">\n        <td colspan=\"${detailHeaders.length-1}\" class=\"p-3 text-left pr-4\">\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0628\u0646\u0648\u062f \u0627\u0644\u062a\u0641\u0635\u064a\u0644\u064a\u0629<\/td>\n        <td class=\"p-3 text-center\" style=\"color:${colors[section]}\">${formatCurrency(detailTotal)}<\/td>\n    <\/tr>`;\n    html+=`<\/tbody><\/table><\/div>`;\n    \n    \/\/ \u0645\u0644\u062e\u0635 \u0627\u0644\u0642\u0633\u0645\n    html+=`<div class=\"mt-4 p-4 bg-gradient-to-r from-${colors[section].replace('#','')}-50 to-transparent rounded-lg border border-${colors[section].replace('#','')}-200\">\n        <div class=\"flex justify-between items-center\">\n            <div>\n                <div class=\"text-xs text-gray-500\">\u0625\u062c\u0645\u0627\u0644\u064a \u0642\u0633\u0645 ${titles[section]}<\/div>\n                <div class=\"text-xl font-bold\" style=\"color:${colors[section]}\">${formatCurrency(total)}<\/div>\n            <\/div>\n            <div class=\"text-right\">\n                <div class=\"text-xs text-gray-500\">\u0646\u0633\u0628\u0629 \u0645\u0646 \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a<\/div>\n                <div class=\"font-bold\">${((total\/getTotalCost())*100).toFixed(1)}%<\/div>\n            <\/div>\n        <\/div>\n    <\/div><\/div><\/div>`;\n    \n    container.innerHTML=html;\n}\n\n\/\/ ==================== \u062f\u0648\u0627\u0644 \u0627\u0644\u062c\u062f\u0648\u0644 ====================\nfunction filterTable(input, tableId) {\n    const filter = input.value.toLowerCase();\n    const table = document.getElementById(tableId);\n    if(!table) return;\n    const rows = table.getElementsByTagName('tr');\n    \n    for(let i=1; i<rows.length; i++) {\n        const cells = rows[i].getElementsByTagName('td');\n        let found = false;\n        for(let cell of cells) {\n            if(cell && cell.textContent.toLowerCase().includes(filter)) {\n                found = true;\n                break;\n            }\n        }\n        rows[i].style.display = found ? '' : 'none';\n    }\n}\n\nfunction sortTable(tableId, colIndex) {\n    const table = document.getElementById(tableId);\n    if(!table) return;\n    \n    const tbody = table.querySelector('tbody');\n    const rows = Array.from(tbody.querySelectorAll('tr:not(.bg-gradient-to-l)'));\n    const header = table.querySelector(`th:nth-child(${colIndex+1})`);\n    \n    \/\/ \u062a\u0628\u062f\u064a\u0644 \u0627\u062a\u062c\u0627\u0647 \u0627\u0644\u0641\u0631\u0632\n    const isAsc = !header.classList.contains('asc');\n    table.querySelectorAll('.table-sort').forEach(th => th.classList.remove('asc','desc'));\n    header.classList.add(isAsc ? 'asc' : 'desc');\n    \n    \/\/ \u0641\u0631\u0632 \u0627\u0644\u0635\u0641\u0648\u0641\n    rows.sort((a, b) => {\n        const aText = a.children[colIndex]?.textContent || '';\n        const bText = b.children[colIndex]?.textContent || '';\n        const aNum = parseFloat(aText.replace(\/[^0-9.-]\/g, ''));\n        const bNum = parseFloat(bText.replace(\/[^0-9.-]\/g, ''));\n        \n        if(!isNaN(aNum) && !isNaN(bNum)) {\n            return isAsc ? aNum - bNum : bNum - aNum;\n        }\n        return isAsc ? aText.localeCompare(bText, 'ar') : bText.localeCompare(aText, 'ar');\n    });\n    \n    \/\/ \u0625\u0639\u0627\u062f\u0629 \u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0645\u0631\u062a\u0628\u0629\n    rows.forEach(row => tbody.appendChild(row));\n}\n\n\/\/ ==================== \u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0648\u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a ====================\nfunction renderPrices(container) {\n    let isLocked=!project.isAdmin;\n    let keys=Object.keys(prices).sort();\n    \n    let html=`<div class=\"relative\" style=\"min-height:300px\">`;\n    if(isLocked) html+=`<div class=\"lock-ov rounded-2xl\">\n        <i class=\"fas fa-lock text-4xl mb-3\" style=\"color:var(--pr)\"><\/i>\n        <p class=\"font-bold text-lg\">\u0645\u0646\u0637\u0642\u0629 \u0645\u062d\u0645\u064a\u0629<\/p>\n        <p class=\"text-sm text-gray-500 mb-4\">\u062a\u062a\u0637\u0644\u0628 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0623\u062f\u0645\u0646 \u0644\u0644\u062a\u0639\u062f\u064a\u0644<\/p>\n        <button onclick=\"showAdmin()\" class=\"btn-p\">\n            <i class=\"fas fa-unlock\"><\/i> \u0641\u062a\u062d \u0644\u0644\u062a\u0639\u062f\u064a\u0644\n        <\/button>\n    <\/div>`;\n    \n    html+=`<div class=\"crd\">\n        <div class=\"flex flex-wrap justify-between items-center gap-3 mb-4\">\n            <h3 class=\"font-bold text-lg flex items-center gap-2\" style=\"color:var(--gd)\">\n                <i class=\"fas fa-tags\"><\/i> \u062c\u062f\u0648\u0644 \u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0627\u0644\u0645\u0631\u062c\u0639\u064a\n            <\/h3>\n            <div class=\"flex items-center gap-2\">\n                ${project.isAdmin ? `\n                    <button onclick=\"project.isAdmin=false; saveData(); renderContent()\" class=\"btn-outline\">\n                        <i class=\"fas fa-lock\"><\/i> \u0642\u0641\u0644 \u0627\u0644\u062a\u0639\u062f\u064a\u0644\n                    <\/button>\n                ` : ''}\n                <button onclick=\"resetPrices()\" class=\"btn-outline\" style=\"border-color:var(--er);color:var(--er)\">\n                    <i class=\"fas fa-undo\"><\/i> \u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\n                <\/button>\n            <\/div>\n        <\/div>\n        \n        <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2 max-h-96 overflow-y-auto pr-2\">`;\n    \n    for(let k of keys) {\n        const isEditable = project.isAdmin;\n        html+=`<div class=\"flex justify-between items-center p-3 border rounded-lg hover:border-${isEditable?'pr':'gray-200'} transition-colors ${isEditable?'cursor-pointer':''}\" \n                ${isEditable?'onclick=\"document.querySelector(\\'#price-'+k+'\\').focus()\"':''}>\n            <div>\n                <span class=\"text-sm font-medium\">${k}<\/span>\n                <div class=\"text-[10px] text-gray-400\">${getPriceDesc(k)}<\/div>\n            <\/div>\n            ${isEditable ? \n                `<input type=\"number\" id=\"price-${k}\" class=\"inp inp-sm w-24 text-left font-bold\" \n                    value=\"${prices[k]}\" step=\"1\" onchange=\"updatePrice('${k}',this.value)\"\n                    onfocus=\"this.select()\">` : \n                `<span class=\"font-bold\">${formatCurrency(prices[k])}<\/span>`\n            }\n        <\/div>`;\n    }\n    \n    html+=`<\/div><\/div>\n    \n    ${project.isAdmin ? `\n    <div class=\"crd mt-4\">\n        <h4 class=\"font-bold mb-3 flex items-center gap-2\">\n            <i class=\"fas fa-sliders-h\"><\/i> \u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u0639\u0627\u0645\u0629\n        <\/h4>\n        <div class=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n            <div>\n                <label class=\"text-xs font-semibold block mb-1\">\u0646\u0633\u0628\u0629 \u0627\u0644\u0637\u0648\u0627\u0631\u0626 (%)<\/label>\n                <input type=\"number\" class=\"inp\" value=\"${project.contingency}\" min=\"0\" max=\"50\" \n                    onchange=\"project.contingency=parseFloat(this.value)||0; saveData(); renderContent()\">\n            <\/div>\n            <div>\n                <label class=\"text-xs font-semibold block mb-1\">\u0639\u0627\u0645\u0644 \u0627\u0644\u062a\u0636\u062e\u0645<\/label>\n                <input type=\"number\" class=\"inp\" value=\"${project.inflationFactor}\" min=\"0.5\" max=\"3\" step=\"0.01\" \n                    onchange=\"project.inflationFactor=parseFloat(this.value)||1; saveData(); renderContent()\">\n            <\/div>\n            <div>\n                <label class=\"text-xs font-semibold block mb-1\">\u0647\u0627\u0645\u0634 \u0627\u0644\u0631\u0628\u062d (%)<\/label>\n                <input type=\"number\" class=\"inp\" value=\"${project.profitMargin}\" min=\"0\" max=\"100\" \n                    onchange=\"project.profitMargin=parseFloat(this.value)||0; saveData(); renderContent()\">\n            <\/div>\n        <\/div>\n    <\/div>` : ''}\n    \n    <\/div>`; \n    \n    container.innerHTML=html;\n}\n\nfunction getPriceDesc(key) {\n    const desc = {\n        'iron': '\u0633\u0639\u0631 \u0637\u0646 \u0627\u0644\u062d\u062f\u064a\u062f',\n        'conc': '\u0633\u0639\u0631 \u0645\u062a\u0631 \u0627\u0644\u062e\u0631\u0633\u0627\u0646\u0629',\n        'cement': '\u0633\u0639\u0631 \u0637\u0646 \u0627\u0644\u0623\u0633\u0645\u0646\u062a',\n        'labor': '\u0633\u0639\u0631 \u0627\u0644\u064a\u0648\u0645\u064a\u0629',\n        'loader': '\u0633\u0639\u0631 \u0633\u0627\u0639\u0629 \u0627\u0644\u0644\u0648\u062f\u0631',\n        'brickD': '\u0633\u0639\u0631 \u0623\u0644\u0641 \u0637\u0648\u0628 \u062f\u0648\u0628\u0644',\n        'electric': '\u062a\u0643\u0644\u0641\u0629 \u0627\u0644\u0643\u0647\u0631\u0628\u0627\u0621 \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a\u0629'\n    };\n    return desc[key] || '';\n}\n\nfunction renderSettings(container) {\n    let html = `<div class=\"crd\">\n        <h3 class=\"font-bold mb-4 flex items-center gap-2\">\n            <i class=\"fas fa-cog\"><\/i> \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639\n        <\/h3>\n        \n        <div class=\"space-y-4\">\n            <div>\n                <label class=\"text-sm font-semibold block mb-1\">\u0627\u0633\u0645 \u0627\u0644\u0645\u0634\u0631\u0648\u0639<\/label>\n                <input type=\"text\" class=\"inp\" value=\"${project.name}\" onchange=\"project.name=this.value; saveData()\">\n            <\/div>\n            \n            <div class=\"grid grid-cols-2 gap-4\">\n                <div>\n                    <label class=\"text-sm font-semibold block mb-1\">\u0627\u0644\u0639\u0645\u0644\u0629<\/label>\n                    <select class=\"inp\" onchange=\"updateCurrency(this.value)\">\n                        <option value=\"EGP\" ${project.currency==='EGP'?'selected':''}>\u062c\u0646\u064a\u0647 \u0645\u0635\u0631\u064a (\u062c.\u0645)<\/option>\n                        <option value=\"USD\" ${project.currency==='USD'?'selected':''}>\u062f\u0648\u0644\u0627\u0631 \u0623\u0645\u0631\u064a\u0643\u064a ($)<\/option>\n                        <option value=\"SAR\" ${project.currency==='SAR'?'selected':''}>\u0631\u064a\u0627\u0644 \u0633\u0639\u0648\u062f\u064a (\u0631.\u0633)<\/option>\n                    <\/select>\n                <\/div>\n                <div>\n                    <label class=\"text-sm font-semibold block mb-1\">\u0631\u0645\u0632 \u0627\u0644\u0639\u0645\u0644\u0629<\/label>\n                    <input type=\"text\" class=\"inp\" value=\"${project.currencySymbol}\" maxlength=\"5\" \n                        onchange=\"project.currencySymbol=this.value; saveData(); renderContent()\">\n                <\/div>\n            <\/div>\n            \n            <div class=\"p-4 bg-blue-50 rounded-lg border border-blue-200\">\n                <h4 class=\"font-semibold text-blue-800 mb-2 flex items-center gap-2\">\n                    <i class=\"fas fa-info-circle\"><\/i> \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0646\u0638\u0627\u0645\n                <\/h4>\n                <div class=\"text-xs space-y-1 text-gray-600\">\n                    <p>\ud83d\udcc5 \u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0625\u0646\u0634\u0627\u0621: ${new Date(project.createdAt).toLocaleDateString('ar-EG')}<\/p>\n                    <p>\ud83d\udd04 \u0622\u062e\u0631 \u062a\u062d\u062f\u064a\u062b: ${new Date(project.lastUpdated).toLocaleDateString('ar-EG')}<\/p>\n                    <p>\ud83d\udcbe \u062d\u0627\u0644\u0629 \u0627\u0644\u062d\u0641\u0638: <span class=\"text-green-600\">\u0645\u062d\u0641\u0648\u0638 \u0645\u062d\u0644\u064a\u0627\u064b<\/span><\/p>\n                    <p>\ud83c\udf19 \u0627\u0644\u0648\u0636\u0639: <span id=\"themeStatus\">${document.body.classList.contains('dark')?'\u0644\u064a\u0644\u064a \u263e':'\u0646\u0647\u0627\u0631\u064a \u263c'}<\/span><\/p>\n                <\/div>\n            <\/div>\n            \n            <div class=\"flex flex-wrap gap-2 pt-2\">\n                <button onclick=\"saveData()\" class=\"btn-p\">\n                    <i class=\"fas fa-save\"><\/i> \u062d\u0641\u0638 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a\n                <\/button>\n                <button onclick=\"showBackupModal()\" class=\"btn-outline\">\n                    <i class=\"fas fa-database\"><\/i> \u0627\u0644\u0646\u0633\u062e \u0627\u0644\u0627\u062d\u062a\u064a\u0627\u0637\u064a\n                <\/button>\n                <button onclick=\"confirmReset()\" class=\"btn-outline\" style=\"border-color:var(--er);color:var(--er)\">\n                    <i class=\"fas fa-trash\"><\/i> \u0625\u0639\u0627\u062f\u0629 \u0636\u0628\u0637 \u0627\u0644\u0645\u0634\u0631\u0648\u0639\n                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>`;\n    \n    container.innerHTML = html;\n}\n\nfunction updateCurrency(code) {\n    const currencies = {\n        'EGP': {symbol: '\u062c.\u0645', rate: 1},\n        'USD': {symbol: '$', rate: 0.02},\n        'SAR': {symbol: '\u0631.\u0633', rate: 0.075}\n    };\n    project.currency = code;\n    project.currencySymbol = currencies[code].symbol;\n    \/\/ \u0645\u0644\u0627\u062d\u0638\u0629: \u0647\u0646\u0627 \u064a\u0645\u0643\u0646 \u0625\u0636\u0627\u0641\u0629 \u062a\u062d\u0648\u064a\u0644 \u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0641\u0639\u0644\u064a\u0627\u064b \u0625\u0630\u0627 \u0644\u0632\u0645\n    saveData();\n    renderContent();\n    showMessage(`\u062a\u0645 \u062a\u063a\u064a\u064a\u0631 \u0627\u0644\u0639\u0645\u0644\u0629 \u0625\u0644\u0649 ${currencies[code].symbol}`, 'success');\n}\n\n\/\/ ==================== \u0627\u0644\u0625\u062d\u0635\u0627\u0626\u064a\u0627\u062a ====================\nfunction renderStats(container) {\n    const total=getTotalCost(); \n    const net=getNetCost(); \n    const costPerMeter=getCostPerMeter();\n    const sections=['excavation','insulation','backfill','structure','masonry','plaster','facade','finishes'];\n    const names={excavation:'\u0627\u0644\u062d\u0641\u0631', insulation:'\u0627\u0644\u0639\u0632\u0644', backfill:'\u0627\u0644\u0631\u062f\u0645', structure:'\u0627\u0644\u0647\u064a\u0643\u0644', masonry:'\u0627\u0644\u0645\u0628\u0627\u0646\u064a', plaster:'\u0627\u0644\u0628\u064a\u0627\u0636', facade:'\u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a', finishes:'\u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a'};\n    const colors={excavation:'#8B6914', insulation:'#6C3483', backfill:'#7D6608', structure:'#C75B39', masonry:'#2A9D8F', plaster:'#D4A017', facade:'#884EA0', finishes:'#E67E22'};\n    const costs=sections.map(s=>getSectionCost(s));\n    \n    \/\/ \u062d\u0633\u0627\u0628 \u0627\u0644\u0646\u0633\u0628\n    const structurePct = (getSectionCost('structure')\/total*100).toFixed(1);\n    const finishesPct = (getSectionCost('finishes')\/total*100).toFixed(1);\n    const facadePct = (getSectionCost('facade')\/total*100).toFixed(1);\n    \n    let html=`<div><div class=\"crd\">\n        <h3 class=\"font-bold mb-4 flex items-center gap-2\" style=\"color:var(--pr)\">\n            <i class=\"fas fa-chart-line\"><\/i> \u0627\u0644\u062a\u062d\u0644\u064a\u0644 \u0648\u0627\u0644\u0625\u062d\u0635\u0627\u0626\u064a\u0627\u062a \u0627\u0644\u0645\u062a\u0642\u062f\u0645\u0629\n        <\/h3>`;\n    \n    \/\/ \u0628\u0637\u0627\u0642\u0627\u062a \u0627\u0644\u0625\u062d\u0635\u0627\u0626\u064a\u0627\u062a \u0627\u0644\u0633\u0631\u064a\u0639\u0629\n    html+=`<div class=\"grid grid-cols-2 md:grid-cols-4 gap-4 mb-6\">\n        <div class=\"stat-card text-center p-4 bg-gradient-to-br from-green-50 to-green-100 rounded-xl border border-green-200\">\n            <div class=\"text-2xl font-bold text-green-700\">${formatNumber(costPerMeter)}<\/div>\n            <div class=\"text-xs text-green-600\">\u062a\u0643\u0644\u0641\u0629 \u0627\u0644\u0645\u062a\u0631 (\u062c.\u0645\/\u0645\u00b2)<\/div>\n            <div class=\"text-[10px] text-gray-400 mt-1\">\u0628\u062f\u0648\u0646 \u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a<\/div>\n        <\/div>\n        <div class=\"stat-card text-center p-4 bg-gradient-to-br from-blue-50 to-blue-100 rounded-xl border border-blue-200\">\n            <div class=\"text-2xl font-bold text-blue-700\">${structurePct}%<\/div>\n            <div class=\"text-xs text-blue-600\">\u0646\u0633\u0628\u0629 \u0627\u0644\u0647\u064a\u0643\u0644<\/div>\n            <div class=\"text-[10px] text-gray-400 mt-1\">\u0645\u0646 \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a<\/div>\n        <\/div>\n        <div class=\"stat-card text-center p-4 bg-gradient-to-br from-orange-50 to-orange-100 rounded-xl border border-orange-200\">\n            <div class=\"text-2xl font-bold text-orange-700\">${finishesPct}%<\/div>\n            <div class=\"text-xs text-orange-600\">\u0646\u0633\u0628\u0629 \u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a<\/div>\n            <div class=\"text-[10px] text-gray-400 mt-1\">\u0645\u0646 \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a<\/div>\n        <\/div>\n        <div class=\"stat-card text-center p-4 bg-gradient-to-br from-purple-50 to-purple-100 rounded-xl border border-purple-200\">\n            <div class=\"text-2xl font-bold text-purple-700\">${facadePct}%<\/div>\n            <div class=\"text-xs text-purple-600\">\u0646\u0633\u0628\u0629 \u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a<\/div>\n            <div class=\"text-[10px] text-gray-400 mt-1\">\u0645\u0646 \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a<\/div>\n        <\/div>\n    <\/div>`;\n    \n    \/\/ \u0627\u0644\u0645\u062e\u0637\u0637 \u0627\u0644\u0634\u0631\u064a\u0637\u064a\n    html+=`<canvas id=\"statsChart\" height=\"250\" class=\"mb-6\"><\/canvas>`;\n    \n    \/\/ \u0627\u0644\u062a\u0648\u0635\u064a\u0627\u062a \u0627\u0644\u0630\u0643\u064a\u0629\n    html+=`<div>\n        <h4 class=\"font-bold mb-3 flex items-center gap-2\">\n            <i class=\"fas fa-lightbulb\"><\/i> \u0627\u0644\u062a\u0648\u0635\u064a\u0627\u062a \u0627\u0644\u0630\u0643\u064a\u0629\n        <\/h4>\n        <ul class=\"space-y-2\">`;\n    \n    if(structurePct > 50) {\n        html+=`<li class=\"flex items-start gap-2 p-3 bg-amber-50 rounded-lg border border-amber-200\">\n            <i class=\"fas fa-exclamation-triangle text-amber-500 mt-0.5\"><\/i>\n            <div>\n                <strong class=\"text-amber-800\">\u0646\u0633\u0628\u0629 \u0627\u0644\u0647\u064a\u0643\u0644 \u0645\u0631\u062a\u0641\u0639\u0629<\/strong>\n                <p class=\"text-xs text-amber-700 mt-1\">\u064a\u064f\u0646\u0635\u062d \u0628\u0645\u0631\u0627\u062c\u0639\u0629 \u0643\u0645\u064a\u0627\u062a \u0627\u0644\u062d\u062f\u064a\u062f \u0648\u0627\u0644\u062e\u0631\u0633\u0627\u0646\u0629\u060c \u0623\u0648 \u0627\u0633\u062a\u0634\u0627\u0631\u0629 \u0645\u0647\u0646\u062f\u0633 \u0625\u0646\u0634\u0627\u0626\u064a \u0644\u062a\u062d\u0633\u064a\u0646 \u0627\u0644\u062a\u0635\u0645\u064a\u0645<\/p>\n            <\/div>\n        <\/li>`;\n    }\n    \n    if(finishesPct > 35) {\n        html+=`<li class=\"flex items-start gap-2 p-3 bg-blue-50 rounded-lg border border-blue-200\">\n            <i class=\"fas fa-check-circle text-blue-500 mt-0.5\"><\/i>\n            <div>\n                <strong class=\"text-blue-800\">\u0646\u0633\u0628\u0629 \u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a \u0645\u062a\u0648\u0627\u0632\u0646\u0629<\/strong>\n                <p class=\"text-xs text-blue-700 mt-1\">\u0627\u0644\u062a\u0648\u0632\u064a\u0639 \u062c\u064a\u062f \u0628\u064a\u0646 \u0627\u0644\u0647\u064a\u0643\u0644 \u0648\u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a\u060c \u0627\u0633\u062a\u0645\u0631 \u0641\u064a \u0627\u0644\u0645\u062a\u0627\u0628\u0639\u0629 \u0627\u0644\u062f\u0642\u064a\u0642\u0629 \u0644\u0644\u062c\u062f\u0648\u0644<\/p>\n            <\/div>\n        <\/li>`;\n    }\n    \n    if(getTotalBuilt() > 3000) {\n        html+=`<li class=\"flex items-start gap-2 p-3 bg-green-50 rounded-lg border border-green-200\">\n            <i class=\"fas fa-building text-green-500 mt-0.5\"><\/i>\n            <div>\n                <strong class=\"text-green-800\">\u0645\u0634\u0631\u0648\u0639 \u0643\u0628\u064a\u0631 \u0627\u0644\u062d\u062c\u0645<\/strong>\n                <p class=\"text-xs text-green-700 mt-1\">\u064a\u064f\u0646\u0635\u062d \u0628\u062a\u0642\u0633\u064a\u0645 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0644\u0645\u0631\u0627\u062d\u0644 \u0648\u062a\u0623\u0645\u064a\u0646 \u062a\u0645\u0648\u064a\u0644 \u0645\u0631\u062d\u0644\u064a \u0644\u062a\u0642\u0644\u064a\u0644 \u0627\u0644\u0645\u062e\u0627\u0637\u0631 \u0627\u0644\u0645\u0627\u0644\u064a\u0629<\/p>\n            <\/div>\n        <\/li>`;\n    }\n    \n    html+=`<li class=\"flex items-start gap-2 p-3 bg-gray-50 rounded-lg border border-gray-200\">\n        <i class=\"fas fa-info-circle text-gray-500 mt-0.5\"><\/i>\n        <div>\n            <strong>\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0639\u0627\u0645\u0629<\/strong>\n            <p class=\"text-xs text-gray-600 mt-1\">\n                \u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0645\u0633\u0627\u062d\u0629 \u0627\u0644\u0628\u0646\u0627\u0626\u064a\u0629: <strong>${formatNumber(getTotalBuilt())} \u0645\u00b2<\/strong> \u2022 \n                \u0639\u062f\u062f \u0627\u0644\u0628\u0646\u0648\u062f \u0627\u0644\u062a\u0641\u0635\u064a\u0644\u064a\u0629: <strong>${Object.values(detailTables).reduce((sum, arr) => sum + arr.length, 0)} \u0628\u0646\u062f<\/strong>\n            <\/p>\n        <\/div>\n    <\/li>`;\n    \n    html+=`<\/ul><\/div><\/div><\/div>`;\n    \n    container.innerHTML=html;\n    \n    \/\/ \u0631\u0633\u0645 \u0627\u0644\u0645\u062e\u0637\u0637 \u0628\u0639\u062f \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u062d\u062a\u0648\u0649\n    setTimeout(()=>{ \n        let ctx=document.getElementById('statsChart'); \n        if(ctx){ \n            new Chart(ctx,{\n                type:'bar',\n                data:{\n                    labels:sections.map(s=>names[s]),\n                    datasets:[{\n                        label:'\u0627\u0644\u062a\u0643\u0644\u0641\u0629 (\u062c.\u0645)',\n                        data:costs,\n                        backgroundColor:Object.values(colors).map(c=>c+'99'),\n                        borderColor:Object.values(colors),\n                        borderWidth:2,\n                        borderRadius:6\n                    }]\n                },\n                options:{\n                    responsive:true,\n                    maintainAspectRatio:true,\n                    plugins:{\n                        legend:{display:false},\n                        tooltip:{\n                            callbacks:{\n                                label:function(ctx){\n                                    return `${ctx.dataset.label}: ${formatCurrency(ctx.parsed.y)}`;\n                                }\n                            }\n                        }\n                    },\n                    scales:{\n                        y:{\n                            beginAtZero:true,\n                            ticks:{\n                                callback:function(value){\n                                    return formatNumber(value\/1000) + '\u0623\u0644\u0641';\n                                }\n                            }\n                        }\n                    }\n                }\n            }); \n        } \n    },100);\n}\n\n\/\/ ==================== \u062f\u0648\u0627\u0644 \u0627\u0644\u062a\u0639\u062f\u064a\u0644 ====================\nfunction updatePrice(key,val) { \n    prices[key]=parseFloat(val)||0; \n    saveData(); \n    renderContent(); \n    showMessage('\u2705 \u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0633\u0639\u0631', 'success'); \n}\n\nfunction updateItem(section,idx,field,val) { \n    if(editableItems[section] && editableItems[section][idx]) { \n        editableItems[section][idx][field]=val; \n        saveData(); \n        \/\/ \u0644\u0627 \u0646\u0639\u064a\u062f \u0627\u0644\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0643\u0627\u0645\u0644 \u0644\u062a\u062d\u0633\u064a\u0646 \u0627\u0644\u0623\u062f\u0627\u0621\n        showMessage('\u2713 \u062a\u0645 \u0627\u0644\u062a\u062d\u062f\u064a\u062b', 'success', 1000); \n    } \n}\n\nfunction updateQty(section,idx,val) { \n    if(editableItems[section] && editableItems[section][idx]) { \n        let factor=getFactor(); \n        let newQty=parseFloat(val)||0; \n        if(factor>0.001) editableItems[section][idx].qty=newQty\/factor; \n        else editableItems[section][idx].qty=newQty; \n        saveData(); \n        renderContent(); \n        showMessage('\u2713 \u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0643\u0645\u064a\u0629', 'success'); \n    } \n}\n\nfunction updatePriceItem(section,idx,val) { \n    if(editableItems[section] && editableItems[section][idx]) { \n        let it=editableItems[section][idx]; \n        let newPrice=parseFloat(val)||0; \n        if(it.priceKey) {\n            prices[it.priceKey]=newPrice;\n            showMessage(`\u2713 \u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0633\u0639\u0631 ${it.priceKey}`, 'success');\n        } else {\n            it.price=newPrice; \n            showMessage('\u2713 \u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0633\u0639\u0631', 'success');\n        }\n        saveData(); \n        renderContent();\n    } \n}\n\nfunction confirmDeleteItem(section,idx) {\n    const item = editableItems[section]?.[idx];\n    if(!item) return;\n    \n    showConfirmModal(\n        '\u062d\u0630\u0641 \u0627\u0644\u0628\u0646\u062f',\n        `\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0645\u0646 \u062d\u0630\u0641 \u0627\u0644\u0628\u0646\u062f \"<strong>${item.name}<\/strong>\"\u061f<br><small class=\"text-gray-500\">\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u062a\u0631\u0627\u062c\u0639 \u0639\u0646 \u0647\u0630\u0627 \u0627\u0644\u0625\u062c\u0631\u0627\u0621<\/small>`,\n        () => deleteItem(section, idx)\n    );\n}\n\nfunction deleteItem(section,idx) { \n    if(editableItems[section] && editableItems[section][idx]) { \n        const deleted = editableItems[section].splice(idx,1)[0];\n        saveData(); \n        renderContent(); \n        showMessage(`\u2713 \u062a\u0645 \u062d\u0630\u0641 \"${deleted.name}\"`, 'success'); \n    } \n}\n\nfunction addItem(section) { \n    if(!editableItems[section]) editableItems[section] = []; \n    editableItems[section].push({ \n        name:'\u0628\u0646\u062f \u062c\u062f\u064a\u062f', \n        qty:10, \n        unit:'\u0645\u00b2', \n        priceKey:'labor', \n        price:prices.labor,\n        desc:''\n    }); \n    saveData(); \n    renderContent(); \n    showMessage('\u2713 \u062a\u0645\u062a \u0627\u0644\u0625\u0636\u0627\u0641\u0629 - \u0642\u0645 \u0628\u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a', 'success'); \n}\n\n\/\/ ==================== \u0627\u0644\u062a\u0635\u062f\u064a\u0631 ====================\nfunction exportPDF() { \n    showMessage('\ud83d\udcc4 \u062c\u0627\u0631\u064a \u062a\u062c\u0647\u064a\u0632 \u0627\u0644\u062a\u0642\u0631\u064a\u0631...', 'info', 2000); \n    \n    \/\/ \u0645\u0644\u0627\u062d\u0638\u0629: \u0644\u0644\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0641\u0639\u0644\u064a\u060c \u0627\u0633\u062a\u062e\u062f\u0645 jsPDF \u0645\u0639 html2canvas\n    \/\/ \u0647\u0646\u0627 \u0646\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0637\u0628\u0627\u0639\u0629 \u0643\u0628\u062f\u064a\u0644 \u0628\u0633\u064a\u0637\n    setTimeout(() => { \n        window.print(); \n        showMessage('\u2713 \u062a\u0645 \u0641\u062a\u062d \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0637\u0628\u0627\u0639\u0629', 'success');\n    }, 800); \n}\n\nfunction exportExcel() {\n    showMessage('\ud83d\udcca \u062c\u0627\u0631\u064a \u062a\u062c\u0647\u064a\u0632 \u0645\u0644\u0641 Excel...', 'info', 2000);\n    \n    setTimeout(() => {\n        try {\n            \/\/ \u062a\u062c\u0647\u064a\u0632 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a\n            const data = [];\n            \n            \/\/ \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639\n            data.push(['\u0645\u0634\u0631\u0648\u0639:', project.name]);\n            data.push(['\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u062a\u0642\u0631\u064a\u0631:', new Date().toLocaleDateString('ar-EG')]);\n            data.push(['\u0627\u0644\u0623\u0628\u0639\u0627\u062f:', `${project.length}\u0645 \u00d7 ${project.width}\u0645`]);\n            data.push(['\u0627\u0644\u0645\u0633\u0627\u062d\u0629 \u0627\u0644\u0628\u0646\u0627\u0626\u064a\u0629:', `${formatNumber(getTotalBuilt())} \u0645\u00b2`]);\n            data.push(['', '']);\n            \n            \/\/ \u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641 \u062d\u0633\u0628 \u0627\u0644\u0623\u0642\u0633\u0627\u0645\n            data.push(['\u0627\u0644\u0642\u0633\u0645', '\u0627\u0644\u062a\u0643\u0644\u0641\u0629', '\u0627\u0644\u0646\u0633\u0628\u0629']);\n            const sections = ['excavation','insulation','backfill','structure','masonry','plaster','facade','finishes'];\n            const names = {excavation:'\u0627\u0644\u062d\u0641\u0631', insulation:'\u0627\u0644\u0639\u0632\u0644', backfill:'\u0627\u0644\u0631\u062f\u0645', structure:'\u0627\u0644\u0647\u064a\u0643\u0644', masonry:'\u0627\u0644\u0645\u0628\u0627\u0646\u064a', plaster:'\u0627\u0644\u0628\u064a\u0627\u0636', facade:'\u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a', finishes:'\u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a'};\n            const total = getTotalCost();\n            \n            for(let s of sections) {\n                const cost = getSectionCost(s);\n                const pct = total > 0 ? ((cost\/total)*100).toFixed(1) + '%' : '0%';\n                data.push([names[s], formatNumber(cost), pct]);\n            }\n            \n            data.push(['', '', '']);\n            data.push(['\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0643\u0644\u064a', formatNumber(total), '100%']);\n            data.push(['\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a (\u0628\u062f\u0648\u0646 \u0648\u0627\u062c\u0647\u0627\u062a)', formatNumber(getNetCost()), '-']);\n            data.push(['\u062a\u0643\u0644\u0641\u0629 \u0627\u0644\u0645\u062a\u0631', formatNumber(getCostPerMeter()) + ' \u062c.\u0645\/\u0645\u00b2', '-']);\n            \n            \/\/ \u0625\u0646\u0634\u0627\u0621 \u0648\u0631\u0642\u0629 \u0627\u0644\u0639\u0645\u0644\n            const ws = XLSX.utils.aoa_to_sheet(data);\n            const wb = XLSX.utils.book_new();\n            XLSX.utils.book_append_sheet(wb, ws, '\u062a\u0642\u0631\u064a\u0631 \u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641');\n            \n            \/\/ \u062a\u0639\u064a\u064a\u0646 \u0627\u062a\u062c\u0627\u0647 \u0627\u0644\u0646\u0635 \u0644\u0644\u0639\u0631\u0628\u064a\u0629\n            ws['!cols'] = [{wch:25}, {wch:15}, {wch:10}];\n            \n            \/\/ \u0627\u0644\u062a\u0635\u062f\u064a\u0631\n            XLSX.writeFile(wb, `\u062a\u0642\u0631\u064a\u0631_\u0628\u064a\u062a_\u0627\u0644\u0648\u0637\u0646_${new Date().toISOString().slice(0,10)}.xlsx`);\n            showMessage('\u2713 \u062a\u0645 \u062a\u062d\u0645\u064a\u0644 \u0645\u0644\u0641 Excel', 'success');\n        } catch(e) {\n            showMessage('\u2717 \u0641\u0634\u0644 \u0627\u0644\u062a\u0635\u062f\u064a\u0631: ' + e.message, 'error');\n            console.error('Export error:', e);\n        }\n    }, 1000);\n}\n\n\/\/ ==================== \u0627\u0644\u0646\u0633\u062e \u0627\u0644\u0627\u062d\u062a\u064a\u0627\u0637\u064a ====================\nfunction showBackupModal() {\n    document.getElementById('backupModal').classList.add('show');\n    \n    \/\/ \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a\n    document.getElementById('lastUpdate').textContent = new Date(project.lastUpdated).toLocaleDateString('ar-EG') + ' ' + new Date(project.lastUpdated).toLocaleTimeString('ar-EG');\n    \n    let totalItems = 0;\n    for(let section in editableItems) {\n        totalItems += editableItems[section]?.length || 0;\n    }\n    for(let table in detailTables) {\n        totalItems += detailTables[table]?.length || 0;\n    }\n    document.getElementById('totalItems').textContent = formatNumber(totalItems);\n}\n\nfunction exportBackup() {\n    try {\n        const backup = {\n            version: '2.0',\n            exportedAt: new Date().toISOString(),\n            project,\n            activeSections,\n            prices,\n            editableItems,\n            detailTables\n        };\n        \n        const blob = new Blob([JSON.stringify(backup, null, 2)], {type: 'application\/json'});\n        const url = URL.createObjectURL(blob);\n        const a = document.createElement('a');\n        a.href = url;\n        a.download = `backup_\u0628\u064a\u062a_\u0627\u0644\u0648\u0637\u0646_${new Date().toISOString().slice(0,10)}.json`;\n        document.body.appendChild(a);\n        a.click();\n        document.body.removeChild(a);\n        URL.revokeObjectURL(url);\n        \n        showMessage('\u2713 \u062a\u0645 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0646\u0633\u062e\u0629 \u0627\u0644\u0627\u062d\u062a\u064a\u0627\u0637\u064a\u0629', 'success');\n        document.getElementById('backupModal').classList.remove('show');\n    } catch(e) {\n        showMessage('\u2717 \u0641\u0634\u0644 \u0627\u0644\u062a\u0635\u062f\u064a\u0631: ' + e.message, 'error');\n    }\n}\n\nfunction importBackup(input) {\n    const file = input.files[0];\n    if(!file) return;\n    \n    const reader = new FileReader();\n    reader.onload = function(e) {\n        try {\n            const data = JSON.parse(e.target.result);\n            \n            if(!data.version) {\n                throw new Error('\u0645\u0644\u0641 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d');\n            }\n            \n            \/\/ \u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a\n            if(data.project) project = {...project, ...data.project};\n            if(data.activeSections) activeSections = {...activeSections, ...data.activeSections};\n            if(data.prices) prices = {...prices, ...data.prices};\n            if(data.editableItems) editableItems = {...editableItems, ...data.editableItems};\n            if(data.detailTables) detailTables = {...detailTables, ...data.detailTables};\n            \n            saveData();\n            renderContent();\n            showMessage('\u2713 \u062a\u0645 \u0627\u0633\u062a\u064a\u0631\u0627\u062f \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0628\u0646\u062c\u0627\u062d', 'success');\n            document.getElementById('backupModal').classList.remove('show');\n            input.value = ''; \/\/ \u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 \u0627\u0644\u0645\u062f\u062e\u0644\n        } catch(err) {\n            showMessage('\u2717 \u0641\u0634\u0644 \u0627\u0644\u0627\u0633\u062a\u064a\u0631\u0627\u062f: ' + err.message, 'error');\n            console.error('Import error:', err);\n        }\n    };\n    reader.readAsText(file);\n}\n\n\/\/ ==================== \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0636\u0628\u0637 ====================\nfunction confirmReset() {\n    showConfirmModal(\n        '\u26a0\ufe0f \u0625\u0639\u0627\u062f\u0629 \u0636\u0628\u0637 \u0627\u0644\u0645\u0634\u0631\u0648\u0639',\n        '\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0645\u0646 \u0625\u0639\u0627\u062f\u0629 \u0636\u0628\u0637 \u062c\u0645\u064a\u0639 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a\u061f<br><small class=\"text-red-500\">\u0633\u064a\u062a\u0645 \u0641\u0642\u062f\u0627\u0646 \u062c\u0645\u064a\u0639 \u0627\u0644\u062a\u0639\u062f\u064a\u0644\u0627\u062a \u063a\u064a\u0631 \u0627\u0644\u0645\u062d\u0641\u0648\u0638\u0629<\/small>',\n        resetProject\n    );\n}\n\nfunction resetProject() {\n    if(confirm('\u062a\u0623\u0643\u064a\u062f \u0646\u0647\u0627\u0626\u064a: \u0647\u0644 \u062a\u0631\u064a\u062f \u0641\u0639\u0644\u0627\u064b \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0636\u0628\u0637\u061f')) {\n        localStorage.removeItem('project');\n        localStorage.removeItem('sections');\n        localStorage.removeItem('prices');\n        localStorage.removeItem('editableItems');\n        location.reload();\n    }\n}\n\n\/\/ ==================== \u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u0623\u0643\u064a\u062f ====================\nlet confirmCallback = null;\n\nfunction showConfirmModal(title, message, callback) {\n    document.getElementById('confirmTitle').innerHTML = title;\n    document.getElementById('confirmMessage').innerHTML = message;\n    confirmCallback = callback;\n    document.getElementById('confirmModal').classList.add('show');\n}\n\nfunction closeConfirmModal() {\n    document.getElementById('confirmModal').classList.remove('show');\n    confirmCallback = null;\n}\n\nfunction executeConfirmAction() {\n    if(confirmCallback) {\n        confirmCallback();\n    }\n    closeConfirmModal();\n}\n\n\/\/ \u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u0645\u0648\u062f\u0627\u0644 \u0639\u0646\u062f \u0627\u0644\u0646\u0642\u0631 \u062e\u0627\u0631\u062c\u0647\ndocument.getElementById('confirmModal').addEventListener('click', function(e) {\n    if(e.target === this) closeConfirmModal();\n});\ndocument.getElementById('backupModal').addEventListener('click', function(e) {\n    if(e.target === this) document.getElementById('backupModal').classList.remove('show');\n});\n\n\/\/ ==================== \u0645\u0634\u0627\u0631\u0643\u0629 \u0648\u0627\u062a\u0633\u0627\u0628 ====================\nfunction buildShareText() { \n    const total=getTotalCost(); \n    const net=getNetCost(); \n    const costPerMeter=getCostPerMeter();\n    \n    return `*\ud83c\udfd7\ufe0f \u062a\u0642\u0631\u064a\u0631 \u062a\u0643\u0627\u0644\u064a\u0641 \u0627\u0644\u0628\u0646\u0627\u0621 - \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646*\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udccb *\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639*\n\u2022 \u0627\u0644\u0627\u0633\u0645: ${project.name}\n\u2022 \u0627\u0644\u0623\u0628\u0639\u0627\u062f: ${project.length}\u0645 \u00d7 ${project.width}\u0645\n\u2022 \u0627\u0644\u0645\u0633\u0627\u062d\u0629: ${formatNumber(getArea())} \u0645\u00b2\n\u2022 \u0627\u0644\u0623\u062f\u0648\u0627\u0631: ${project.floors} + \u0628\u062f\u0631\u0648\u0645 + \u0633\u0637\u062d\n\u2022 \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0628\u0646\u0627\u0626\u064a: ${formatNumber(getTotalBuilt())} \u0645\u00b2\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udcb0 *\u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641 \u0627\u0644\u0645\u0627\u0644\u064a\u0629*\n\u2022 \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0643\u0644\u064a: ${formatCurrency(total)}\n\u2022 \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a (\u0628\u062f\u0648\u0646 \u0648\u0627\u062c\u0647\u0627\u062a): ${formatCurrency(net)}\n\u2022 \u062a\u0643\u0644\u0641\u0629 \u0627\u0644\u0645\u062a\u0631 \u0627\u0644\u0628\u0646\u0627\u0626\u064a: ${formatCurrency(costPerMeter)}\/\u0645\u00b2\n\u2022 \u0647\u0627\u0645\u0634 \u0627\u0644\u0631\u0628\u062d \u0627\u0644\u0645\u0642\u062a\u0631\u062d (${project.profitMargin}%): ${formatCurrency(net * project.profitMargin\/100)}\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udcca *\u062a\u0648\u0632\u064a\u0639 \u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641*\n\u2022 \u0627\u0644\u0647\u064a\u0643\u0644: ${((getSectionCost('structure')\/total)*100).toFixed(1)}%\n\u2022 \u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a: ${((getSectionCost('finishes')\/total)*100).toFixed(1)}%\n\u2022 \u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a: ${((getSectionCost('facade')\/total)*100).toFixed(1)}%\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udd27 *\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062d\u0633\u0627\u0628*\n\u2022 \u0645\u0639\u0627\u0645\u0644 S: ${getFactor().toFixed(2)}\n\u2022 \u0646\u0633\u0628\u0629 \u0627\u0644\u0637\u0648\u0627\u0631\u0626: ${project.contingency}%\n\u2022 \u0639\u0627\u0645\u0644 \u0627\u0644\u062a\u0636\u062e\u0645: ${(project.inflationFactor*100).toFixed(0)}%\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udcf1 *\u0645\u0647\u0646\u062f\u0633\u064a\u0646 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646*\n\ud83c\udf10 B.EngEg.com\n\ud83d\udcc5 ${new Date().toLocaleDateString('ar-EG')}`; \n}\n\nfunction doCopy() { \n    navigator.clipboard.writeText(buildShareText())\n        .then(()=>showMessage('\u2713 \u062a\u0645 \u0646\u0633\u062e \u0627\u0644\u062a\u0642\u0631\u064a\u0631 \u0644\u0644\u062d\u0627\u0641\u0638\u0629', 'success'))\n        .catch(()=>showMessage('\u2717 \u0641\u0634\u0644 \u0627\u0644\u0646\u0633\u062e', 'error')); \n}\n\n\/\/ ==================== \u0648\u0627\u062a\u0633\u0627\u0628 \u0644\u064a\u062f\u0632 ====================\nlet WhatsAppLeads = {\n    ajaxUrl: '\/wp-admin\/admin-ajax.php',\n    nonce: '',\n    postId: 0,\n    init: function() { \n        let postIdElem = document.querySelector('[data-post-id]'); \n        if(postIdElem) this.postId = postIdElem.dataset.postId; \n        if(typeof wlp_ajax !== 'undefined') { \n            this.nonce = wlp_ajax.nonce; \n            this.ajaxUrl = wlp_ajax.ajax_url; \n        } \n    },\n    saveLead: async function(phone) { \n        try { \n            let formData = new FormData(); \n            formData.append('action', 'wlp_save_lead'); \n            formData.append('phone', phone); \n            formData.append('post_id', this.postId); \n            formData.append('nonce', this.nonce); \n            let response = await fetch(this.ajaxUrl, { method: 'POST', body: formData }); \n            return await response.json(); \n        } catch(e) { \n            console.log('Save lead error:', e); \n            return null; \n        } \n    },\n    share: async function() { \n        let phone = prompt('\ud83d\udcf1 \u0623\u062f\u062e\u0644 \u0631\u0642\u0645 \u0648\u0627\u062a\u0633\u0627\u0628 (\u0645\u0639 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u062f\u0648\u0644\u0629):', '201'); \n        if(!phone || phone.replace(\/[^0-9]\/g,'').length < 10) { \n            showMessage('\u26a0\ufe0f \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062f\u062e\u0627\u0644 \u0631\u0642\u0645 \u0635\u062d\u064a\u062d', 'warning'); \n            return false; \n        } \n        let cleanPhone = phone.replace(\/[^0-9]\/g, ''); \n        if(cleanPhone.startsWith('0') && cleanPhone.length === 11) {\n            cleanPhone = '20' + cleanPhone.substring(1); \n        }\n        \n        showMessage('\ud83d\udce4 \u062c\u0627\u0631\u064a \u0627\u0644\u062a\u0648\u062c\u064a\u0647 \u0644\u0648\u0627\u062a\u0633\u0627\u0628...', 'info'); \n        await this.saveLead(cleanPhone); \n        let result = buildShareText(); \n        window.open('https:\/\/wa.me\/' + cleanPhone + '?text=' + encodeURIComponent(result), '_blank'); \n        return true; \n    } \n};\n\n\/\/ ==================== \u0634\u0627\u0634\u0629 \u0627\u0644\u062a\u0631\u062d\u064a\u0628 ====================\nlet currentStep=0;\nfunction changeStep(delta) {\n    if(delta===1 && currentStep===2) {\n        \/\/ \u062d\u0641\u0638 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0634\u0631\u0648\u0639\n        project.length=parseInt(document.getElementById('inputLength').value)||30; \n        project.width=parseInt(document.getElementById('inputWidth').value)||20;\n        project.basementPct=parseInt(document.getElementById('inputBasement').value)||100; \n        project.groundPct=parseInt(document.getElementById('inputGround').value)||50;\n        project.repeatedPct=parseInt(document.getElementById('inputRepeated').value)||55; \n        project.roofPct=parseInt(document.getElementById('inputRoof').value)||25;\n        project.floors=parseInt(document.getElementById('inputFloors').value)||3;\n        \n        \/\/ \u062d\u0641\u0638 \u0627\u062e\u062a\u064a\u0627\u0631 \u0627\u0644\u0623\u0642\u0633\u0627\u0645\n        activeSections.excavation=document.getElementById('sec_excavation')?.checked ?? true; \n        activeSections.insulation=document.getElementById('sec_insulation')?.checked ?? true;\n        activeSections.backfill=document.getElementById('sec_backfill')?.checked ?? true; \n        activeSections.structure=document.getElementById('sec_structure')?.checked ?? true;\n        activeSections.masonry=document.getElementById('sec_masonry')?.checked ?? true; \n        activeSections.plaster=document.getElementById('sec_plaster')?.checked ?? true;\n        activeSections.facade=document.getElementById('sec_facade')?.checked ?? true; \n        activeSections.finishes=document.getElementById('sec_finishes')?.checked ?? true;\n        \n        saveData(); \n        document.getElementById('welcomeScreen').style.display='none'; \n        renderTabs(); \n        renderContent(); \n        showMessage('\ud83c\udf89 \u062a\u0645 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u0628\u0646\u062c\u0627\u062d', 'success');\n        \n        \/\/ \u062a\u0647\u064a\u0626\u0629 \u0648\u0627\u062a\u0633\u0627\u0628\n        WhatsAppLeads.init();\n        let waBtn = document.getElementById('fwa');\n        if(waBtn) { \n            waBtn.removeAttribute('href'); \n            waBtn.onclick = function(e) { \n                e.preventDefault(); \n                WhatsAppLeads.share(); \n                return false; \n            }; \n        }\n        return;\n    }\n    currentStep=Math.max(0,Math.min(2,currentStep+delta)); \n    updateWizard();\n}\n\nfunction updateWizard() {\n    \/\/ \u0625\u0638\u0647\u0627\u0631\/\u0625\u062e\u0641\u0627\u0621 \u0627\u0644\u062e\u0637\u0648\u0627\u062a\n    let steps=['step0','step1','step2']; \n    for(let i=0;i<steps.length;i++){ \n        let el=document.getElementById(steps[i]); \n        if(el){ \n            if(i===currentStep) el.classList.add('show'); \n            else el.classList.remove('show'); \n        } \n    }\n    \n    \/\/ \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0623\u0632\u0631\u0627\u0631\n    document.getElementById('prevBtn').style.display=currentStep>0?'inline-flex':'none';\n    document.getElementById('nextBtn').innerHTML=currentStep===2 ? \n        '\ud83d\ude80 \u0627\u0628\u062f\u0623 \u0627\u0644\u062d\u0633\u0627\u0628 <i class=\"fas fa-calculator\"><\/i>' : \n        '\u0627\u0644\u062a\u0627\u0644\u064a <i class=\"fas fa-arrow-left\"><\/i>';\n    \n    \/\/ \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646\n    let titles=['\ud83d\udcd0 \u0623\u0628\u0639\u0627\u062f \u0627\u0644\u0623\u0631\u0636', '\ud83c\udfd7\ufe0f \u0646\u0633\u0628 \u0627\u0644\u0623\u062f\u0648\u0627\u0631', '\u2705 \u0627\u062e\u062a\u064a\u0627\u0631 \u0627\u0644\u0628\u0646\u0648\u062f']; \n    document.getElementById('stepTitle').innerHTML=titles[currentStep];\n    \n    \/\/ \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0646\u0642\u0627\u0637\n    let dots=''; \n    for(let i=0;i<3;i++) dots+=`<div class=\"step-dot ${i===currentStep?'active':''}\"><\/div>`; \n    document.getElementById('stepDots').innerHTML=dots;\n    \n    \/\/ \u062a\u062d\u062f\u064a\u062b \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0623\u0642\u0633\u0627\u0645 \u0641\u064a \u0627\u0644\u062e\u0637\u0648\u0629 3\n    if(currentStep===2){\n        let list=[\n            {id:'excavation',name:'\ud83d\udd28 \u0627\u0644\u062d\u0641\u0631',desc:'\u062d\u0641\u0631 \u0627\u0644\u0642\u0637\u0639\u0629 \u0648\u0627\u0644\u0623\u0633\u0627\u0633\u0627\u062a'},\n            {id:'insulation',name:'\ud83d\udee1\ufe0f \u0627\u0644\u0639\u0632\u0644',desc:'\u0639\u0632\u0644 \u0627\u0644\u0623\u0633\u0627\u0633\u0627\u062a \u0648\u0627\u0644\u062d\u0631\u0627\u0631\u064a'},\n            {id:'backfill',name:'\ud83c\udfd7\ufe0f \u0627\u0644\u0631\u062f\u0645',desc:'\u0631\u062f\u0645 \u0648\u062a\u0633\u0648\u064a\u0629 \u062d\u0648\u0644 \u0627\u0644\u0623\u0633\u0627\u0633\u0627\u062a'},\n            {id:'structure',name:'\ud83c\udfe2 \u0627\u0644\u0647\u064a\u0643\u0644 \u0627\u0644\u062e\u0631\u0633\u0627\u0646\u064a',desc:'\u0627\u0644\u0642\u0648\u0627\u0639\u062f\u060c \u0627\u0644\u0623\u0639\u0645\u062f\u0629\u060c \u0627\u0644\u0643\u0645\u0631\u0627\u062a\u060c \u0627\u0644\u0628\u0644\u0627\u0637\u0627\u062a (19 \u0628\u0646\u062f)'},\n            {id:'masonry',name:'\ud83e\uddf1 \u0627\u0644\u0645\u0628\u0627\u0646\u064a',desc:'\u0623\u0639\u0645\u0627\u0644 \u0627\u0644\u0637\u0648\u0628 \u0648\u0627\u0644\u0639\u062a\u0628 (7 \u0628\u0646\u0648\u062f)'},\n            {id:'plaster',name:'\ud83c\udfa8 \u0627\u0644\u0628\u064a\u0627\u0636',desc:'\u0628\u064a\u0627\u0636 \u062f\u0627\u062e\u0644\u064a + \u062a\u0634\u0637\u064a\u0628\u0627\u062a (15+ \u0628\u0646\u062f)'},\n            {id:'facade',name:'\ud83c\udfdb\ufe0f \u0627\u0644\u0648\u0627\u062c\u0647\u0627\u062a',desc:'\u062d\u062c\u0631\u060c \u062c\u0631\u0627\u0641\u064a\u0627\u062a\u0648\u060c \u062f\u0647\u0627\u0646\u0627\u062a \u062e\u0627\u0631\u062c\u064a\u0629 (13 \u0628\u0646\u062f)'},\n            {id:'finishes',name:'\u2728 \u0627\u0644\u062a\u0634\u0637\u064a\u0628\u0627\u062a',desc:'\u0643\u0647\u0631\u0628\u0627\u0621\u060c \u0633\u0628\u0627\u0643\u0629\u060c \u0623\u0644\u0645\u0648\u0646\u064a\u0648\u0645\u060c \u0631\u062e\u0627\u0645 (15 \u0628\u0646\u062f)'}\n        ];\n        document.getElementById('sectionsList').innerHTML=list.map(s=>`\n            <label style=\"display:flex;align-items:center;gap:12px;padding:12px;background:#f8f6f3;border-radius:10px;cursor:pointer;transition:all .2s\" \n                   onmouseover=\"this.style.background='#f0ede8'\" onmouseout=\"this.style.background='#f8f6f3'\">\n                <input type=\"checkbox\" id=\"sec_${s.id}\" ${activeSections[s.id]?'checked':''} \n                       style=\"width:18px;height:18px;accent-color:var(--pr)\">\n                <div>\n                    <div style=\"font-weight:bold;color:var(--tx)\">${s.name}<\/div>\n                    <div style=\"font-size:11px;color:#666\">${s.desc}<\/div>\n                <\/div>\n            <\/label>\n        `).join('');\n    }\n    \n    \/\/ \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0639\u0627\u064a\u0646\u0629\n    updatePreviewValues();\n}\n\nfunction toggleAllSections(checked) {\n    for(let key in activeSections) {\n        activeSections[key] = checked;\n        const checkbox = document.getElementById(`sec_${key}`);\n        if(checkbox) checkbox.checked = checked;\n    }\n}\n\n\/\/ ==================== \u0627\u0644\u0623\u062f\u0645\u0646 ====================\nfunction showAdmin() { \n    if(project.isAdmin){ \n        switchTab('prices'); \n        return; \n    } \n    document.getElementById('m-admin').style.display='flex'; \n    document.getElementById('admIn').value=''; \n    document.getElementById('admErr').style.display='none';\n    setTimeout(()=>document.getElementById('admIn').focus(), 100);\n}\n\nfunction checkAdmin() { \n    let p=document.getElementById('admIn').value; \n    if(p===project.adminPassword){ \n        project.isAdmin=true; \n        saveData(); \n        document.getElementById('m-admin').style.display='none'; \n        switchTab('prices'); \n        showMessage('\ud83d\udd13 \u062a\u0645 \u0627\u0644\u062f\u062e\u0648\u0644 \u0644\u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645', 'success'); \n    } else { \n        document.getElementById('admErr').style.display='block';\n        document.getElementById('admIn').value='';\n        document.getElementById('admIn').focus();\n    } \n}\n\nfunction resetPrices() {\n    showConfirmModal(\n        '\u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0627\u0644\u0623\u0633\u0639\u0627\u0631',\n        '\u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629\u061f<br><small class=\"text-gray-500\">\u0633\u064a\u062a\u0645 \u0641\u0642\u062f\u0627\u0646 \u0623\u064a \u062a\u0639\u062f\u064a\u0644\u0627\u062a \u0642\u0645\u062a \u0628\u0647\u0627<\/small>',\n        () => {\n            \/\/ \u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 (\u064a\u0645\u0643\u0646 \u062a\u0648\u0633\u064a\u0639\u0647\u0627)\n            prices.iron = 20000;\n            prices.conc = 1150;\n            prices.cement = 1700;\n            prices.labor = 200;\n            prices.brickD = 1780;\n            \/\/ ... \u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0628\u0627\u0642\u064a \u0627\u0644\u0623\u0633\u0639\u0627\u0631\n            saveData();\n            renderContent();\n            showMessage('\u2713 \u062a\u0645 \u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0627\u0644\u0623\u0633\u0639\u0627\u0631 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629', 'success');\n        }\n    );\n}\n\n\/\/ ==================== \u0639\u062f\u0627\u062f \u0627\u0644\u0632\u0648\u0627\u0631 \u0648\u062a\u062d\u062f\u064a\u062b\u0627\u062a ====================\nfunction cntV() { \n    try { \n        let c=parseInt(localStorage.getItem('vc')||'0')+1; \n        localStorage.setItem('vc',''+c); \n        document.getElementById('vc').textContent=c; \n    } catch(e){} \n}\n\n\/\/ ==================== FAB Menu ====================\nlet fabOpen=false; \nfunction toggleFab() { \n    fabOpen=!fabOpen; \n    let b=document.getElementById('fb'),o=document.getElementById('fo'); \n    if(fabOpen){ \n        o.classList.add('open'); \n        b.classList.add('open'); \n    } else { \n        o.classList.remove('open'); \n        b.classList.remove('open'); \n    } \n}\n\n\/\/ \u0625\u063a\u0644\u0627\u0642 FAB \u0639\u0646\u062f \u0627\u0644\u0646\u0642\u0631 \u062e\u0627\u0631\u062c\u0647\ndocument.addEventListener('click',function(e){ \n    if(fabOpen && !document.getElementById('fw').contains(e.target)) toggleFab(); \n});\n\n\/\/ ==================== \u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d ====================\ndocument.addEventListener('keydown', function(e) {\n    \/\/ Ctrl+S \u0644\u0644\u062d\u0641\u0638\n    if(e.ctrlKey && e.key === 's') {\n        e.preventDefault();\n        saveData();\n    }\n    \/\/ Escape \u0644\u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u0645\u0648\u062f\u0627\u0644\n    if(e.key === 'Escape') {\n        closeConfirmModal();\n        document.getElementById('backupModal').classList.remove('show');\n        document.getElementById('m-admin').style.display='none';\n    }\n    \/\/ Ctrl+P \u0644\u0644\u0637\u0628\u0627\u0639\u0629\n    if(e.ctrlKey && e.key === 'p') {\n        e.preventDefault();\n        exportPDF();\n    }\n});\n\n\/\/ ==================== \u0627\u0644\u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0623\u0648\u0644\u064a ====================\ndocument.addEventListener('DOMContentLoaded', function() {\n    loadData(); \n    loadDarkMode();\n    cntV(); \n    updateWizard();\n    \n    \/\/ \u062a\u062d\u062f\u064a\u062b \u0645\u0639\u0627\u064a\u0646\u0629 \u0627\u0644\u0642\u064a\u0645 \u0639\u0646\u062f \u062a\u063a\u064a\u064a\u0631 \u0627\u0644\u0625\u062f\u062e\u0627\u0644\n    ['inputLength','inputWidth','inputBasement','inputGround','inputRepeated','inputRoof','inputFloors'].forEach(id => {\n        const el = document.getElementById(id);\n        if(el) {\n            el.addEventListener('input', updatePreviewValues);\n            el.addEventListener('change', updatePreviewValues);\n        }\n    });\n    \n    \/\/ \u062a\u062d\u0633\u064a\u0646 \u062a\u062c\u0631\u0628\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\n    document.querySelectorAll('input[type=\"number\"]').forEach(input => {\n        input.addEventListener('focus', function() { this.select(); });\n    });\n    \n    \/\/ \u0625\u0636\u0627\u0641\u0629 \u062a\u0623\u062b\u064a\u0631\u0627\u062a \u062a\u062d\u0645\u064a\u0644\n    document.querySelectorAll('.btn-p, .btn-s, .btn-outline').forEach(btn => {\n        btn.addEventListener('click', function() {\n            this.style.transform = 'scale(0.98)';\n            setTimeout(() => { this.style.transform = ''; }, 100);\n        });\n    });\n});\n<\/script>\n<\/body>\n<\/html><\/div>\n<h3>\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645<\/h3><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[5,228],"class_list":["post-56661","post","type-post","status-publish","format-standard","hentry","category-1","tag-5","tag-228"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":12472,"url":"https:\/\/engeg.com\/b\/2018\/11\/20\/%d8%a7%d9%84%d8%a7%d8%b3%d8%aa%d8%b4%d8%a7%d8%b1%d9%89-%d8%a7%d9%84%d8%b9%d9%82%d8%a7%d8%b1%d9%8a-%d9%85-%d9%8a%d8%a7%d8%b3%d8%b1-%d8%b9%d8%a8%d8%af%d8%a7%d9%84%d9%84%d9%87-%d9%83%d9%8a%d9%81%d9%8a-3\/","url_meta":{"origin":56661,"position":0},"title":"\u0627\u0644\u0627\u0633\u062a\u0634\u0627\u0631\u0649 \u0627\u0644\u0639\u0642\u0627\u0631\u064a \u0645. \u064a\u0627\u0633\u0631 \u0639\u0628\u062f\u0627\u0644\u0644\u0647 | \u0643\u064a\u0641\u064a\u0629 \u062a\u0642\u062f\u064a\u0631 \u0627\u0644\u0623\u0631\u0636 \u0642\u0628\u0644 \u0627\u062e\u062a\u064a\u0627\u0631\u0647\u0627\u061f\u061f   u_","author":"\u0627\u0644\u0627\u0633\u062a\u0634\u0627\u0631\u0649 \u0627\u0644\u0639\u0642\u0627\u0631\u064a \u0645. \u064a\u0627\u0633\u0631 \u0639\u0628\u062f\u0627\u0644\u0644\u0647","date":"\u0646\u0648\u0641\u0645\u0628\u0631 20, 2018","format":false,"excerpt":"\u0643\u064a\u0641\u064a\u0629 \u062a\u0642\u062f\u064a\u0631 \u0627\u0644\u0623\u0631\u0636 \u0642\u0628\u0644 \u0627\u062e\u062a\u064a\u0627\u0631\u0647\u0627\u061f\u061f \u0634\u064a\u062a \u0627\u0643\u0633\u064a\u0644 \u0645\u0647\u0645 \u062c\u062f\u0627 \u062c\u062f\u0627 \u0627\u0644\u0645\u0631\u062d\u0644\u0629 \u0627\u0644\u0633\u0627\u062f\u0633\u0629 \u0644\u0623\u0631\u0627\u0636\u0649 \u0627\u0644\u0645\u063a\u062a\u0631\u0628\u064a\u0646 \u0623\u0645\u062a\u062f\u0627\u062f \u0627\u0644\u0646\u0631\u062c\u0633 ... \u0627\u0644\u0642\u0627\u0647\u0631\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 #\u064a\u0627\u0633\u0631_\u0639\u0628\u062f\u0627\u0644\u0644\u0647 #\u0628\u064a\u062a_\u0627\u0644\u0648\u0637\u0646 #\u0627\u0645\u062a\u062f\u0627\u062f_\u0627\u0644\u0646\u0631\u062c\u0633 #\u0627\u0644\u0642\u0627\u0647\u0631\u0629_\u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0627\u0639\u0645\u0644 \u0627\u0634\u062a\u0631\u0627\u0643 \u0648\u0634\u064a\u0631 \u0644\u0644\u0642\u0646\u0627\u0629 \u0627\u0644\u0648\u062d\u064a\u062f\u0629 \u0644\u0646\u0627 \u0639\u0644\u0649 \u0627\u0644\u064a\u0648\u062a\u064a\u0648\u0628 \u0648\u0643\u0646 \u0627\u0648\u0644 \u0645\u0646 \u064a\u0634\u0627\u0647\u062f \u0627\u0644\u0641\u064a\u062f\u064a\u0648 . . . \u0648\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0641\u064a\u062f\u064a\u0648\u0647\u0627\u062a \u0639\u0644\u0649 \u062a\u0627\u0628\u0639\u0648\u0646\u0627 \u0639\u0644\u0649 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0639\u0627\u0645\u0629 \u0639\u0644\u0649 \u0627\u0644\u0641\u064a\u0633 \u0628\u0648\u0643\u2026","rel":"","context":"\u0641\u064a &quot;\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646&quot;","block_context":{"text":"\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646","link":"https:\/\/engeg.com\/b\/category\/%d9%81%d9%8a%d8%af%d9%8a%d9%88-%d8%a8%d9%8a%d8%aa-%d8%a7%d9%84%d9%88%d8%b7%d9%86\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12494,"url":"https:\/\/engeg.com\/b\/2018\/11\/04\/%d8%a7%d9%84%d8%a7%d8%b3%d8%aa%d8%b4%d8%a7%d8%b1%d9%89-%d8%a7%d9%84%d8%b9%d9%82%d8%a7%d8%b1%d9%8a-%d9%85-%d9%8a%d8%a7%d8%b3%d8%b1-%d8%b9%d8%a8%d8%af%d8%a7%d9%84%d9%84%d9%87-%d8%b7%d8%b1%d8%ad\/","url_meta":{"origin":56661,"position":1},"title":"\u0627\u0644\u0627\u0633\u062a\u0634\u0627\u0631\u0649 \u0627\u0644\u0639\u0642\u0627\u0631\u064a \u0645. \u064a\u0627\u0633\u0631 \u0639\u0628\u062f\u0627\u0644\u0644\u0647 | \u0637\u0631\u062d \u0623\u0631\u0627\u0636\u0649 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0644\u0644\u0639\u0627\u0645\u0644\u064a\u0646 \u0628\u0627\u0644\u062e\u0627\u0631\u062c \u0627\u0644\u0645\u0631\u062d\u0644\u0629 \u0627\u0644\u0633\u0627\u062f\u0633\u0629   u_","author":"\u0627\u0644\u0627\u0633\u062a\u0634\u0627\u0631\u0649 \u0627\u0644\u0639\u0642\u0627\u0631\u064a \u0645. \u064a\u0627\u0633\u0631 \u0639\u0628\u062f\u0627\u0644\u0644\u0647","date":"\u0646\u0648\u0641\u0645\u0628\u0631 4, 2018","format":false,"excerpt":"\u0627\u0644\u0627\u0633\u062a\u0634\u0627\u0631\u0649 \u0627\u0644\u0639\u0642\u0627\u0631\u064a \u0645. \u064a\u0627\u0633\u0631 \u0639\u0628\u062f\u0627\u0644\u0644\u0647 | \u0637\u0631\u062d \u0623\u0631\u0627\u0636\u0649 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0644\u0644\u0639\u0627\u0645\u0644\u064a\u0646 \u0628\u0627\u0644\u062e\u0627\u0631\u062c - \u0627\u0644\u0645\u0631\u062d\u0644\u0629 \u0627\u0644\u0633\u0627\u062f\u0633\u0629 \u0627\u0644\u063a\u0627\u0628\u0629 \u0627\u0644\u0645\u062a\u062d\u062c\u0631\u0629 ...\u0632\u064a\u0627\u0631\u0629 \u0644\u0644\u0645\u0648\u0642\u0639 \u0637\u0631\u062d \u0623\u0631\u0627\u0636\u0649 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0644\u0644\u0639\u0627\u0645\u0644\u064a\u0646 \u0628\u0627\u0644\u062e\u0627\u0631\u062c .... \u0627\u0644\u0645\u0631\u062d\u0644\u0629 \u0627\u0644\u0633\u0627\u062f\u0633\u0629 #\u064a\u0627\u0633\u0631_\u0639\u0628\u062f\u0627\u0644\u0644\u0647 #\u0628\u064a\u062a_\u0627\u0644\u0648\u0637\u0646 #\u0627\u0644\u063a\u0627\u0628\u0629_\u0627\u0644\u0645\u062a\u062d\u062c\u0631\u0629 #\u0627\u0644\u0645\u0631\u062d\u0644\u0629_\u0627\u0644\u0633\u0627\u062f\u0633\u0629 #\u0627\u0644\u0646\u0631\u062c\u0633_\u0639\u0645\u0627\u0631\u0627\u062a #\u0627\u0644\u062c\u0627\u0645\u0639\u0629_\u0627\u0644\u0623\u0644\u0645\u0627\u0646\u064a\u0629 \u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0641\u064a\u062f\u064a\u0648\u0647\u0627\u062a \u0639\u0644\u0649 \u062a\u0627\u0628\u0639\u0648\u0646\u0627 \u0639\u0644\u0649 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0639\u0627\u0645\u0629 \u0639\u0644\u0649 \u0627\u0644\u0641\u064a\u0633 \u0628\u0648\u0643 \u0639\u0644\u0634\u0627\u0646 \u062a\u0639\u0631\u0641\u0648\u0627 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0623\u0643\u062a\u0631 \u0648\u0623\u062e\u0628\u0627\u0631\u2026","rel":"","context":"\u0641\u064a &quot;\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646&quot;","block_context":{"text":"\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646","link":"https:\/\/engeg.com\/b\/category\/%d9%81%d9%8a%d8%af%d9%8a%d9%88-%d8%a8%d9%8a%d8%aa-%d8%a7%d9%84%d9%88%d8%b7%d9%86\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":29468,"url":"https:\/\/engeg.com\/b\/2018\/11\/04\/%d8%a7%d9%84%d8%a7%d8%b3%d8%aa%d8%b4%d8%a7%d8%b1%d9%89-%d8%a7%d9%84%d8%b9%d9%82%d8%a7%d8%b1%d9%8a-%d9%85-%d9%8a%d8%a7%d8%b3%d8%b1-%d8%b9%d8%a8%d8%af%d8%a7%d9%84%d9%84%d9%87-%d8%b7%d8%b1%d8%ad-3\/","url_meta":{"origin":56661,"position":2},"title":"\u0627\u0644\u0627\u0633\u062a\u0634\u0627\u0631\u0649 \u0627\u0644\u0639\u0642\u0627\u0631\u064a \u0645. \u064a\u0627\u0633\u0631 \u0639\u0628\u062f\u0627\u0644\u0644\u0647 | \u0637\u0631\u062d \u0623\u0631\u0627\u0636\u0649 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0644\u0644\u0639\u0627\u0645\u0644\u064a\u0646 \u0628\u0627\u0644\u062e\u0627\u0631\u062c \u0627\u0644\u0645\u0631\u062d\u0644\u0629 \u0627\u0644\u0633\u0627\u062f\u0633\u0629   u_","author":"\u0627\u0644\u0627\u0633\u062a\u0634\u0627\u0631\u0649 \u0627\u0644\u0639\u0642\u0627\u0631\u064a \u0645. \u064a\u0627\u0633\u0631 \u0639\u0628\u062f\u0627\u0644\u0644\u0647","date":"\u0646\u0648\u0641\u0645\u0628\u0631 4, 2018","format":false,"excerpt":"\u0627\u0644\u0627\u0633\u062a\u0634\u0627\u0631\u0649 \u0627\u0644\u0639\u0642\u0627\u0631\u064a \u0645. \u064a\u0627\u0633\u0631 \u0639\u0628\u062f\u0627\u0644\u0644\u0647 | \u0637\u0631\u062d \u0623\u0631\u0627\u0636\u0649 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0644\u0644\u0639\u0627\u0645\u0644\u064a\u0646 \u0628\u0627\u0644\u062e\u0627\u0631\u062c - \u0627\u0644\u0645\u0631\u062d\u0644\u0629 \u0627\u0644\u0633\u0627\u062f\u0633\u0629 \u0627\u0644\u063a\u0627\u0628\u0629 \u0627\u0644\u0645\u062a\u062d\u062c\u0631\u0629 ...\u0632\u064a\u0627\u0631\u0629 \u0644\u0644\u0645\u0648\u0642\u0639 \u0637\u0631\u062d \u0623\u0631\u0627\u0636\u0649 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0644\u0644\u0639\u0627\u0645\u0644\u064a\u0646 \u0628\u0627\u0644\u062e\u0627\u0631\u062c .... \u0627\u0644\u0645\u0631\u062d\u0644\u0629 \u0627\u0644\u0633\u0627\u062f\u0633\u0629 #\u064a\u0627\u0633\u0631_\u0639\u0628\u062f\u0627\u0644\u0644\u0647 #\u0628\u064a\u062a_\u0627\u0644\u0648\u0637\u0646 #\u0627\u0644\u063a\u0627\u0628\u0629_\u0627\u0644\u0645\u062a\u062d\u062c\u0631\u0629 #\u0627\u0644\u0645\u0631\u062d\u0644\u0629_\u0627\u0644\u0633\u0627\u062f\u0633\u0629 #\u0627\u0644\u0646\u0631\u062c\u0633_\u0639\u0645\u0627\u0631\u0627\u062a #\u0627\u0644\u062c\u0627\u0645\u0639\u0629_\u0627\u0644\u0623\u0644\u0645\u0627\u0646\u064a\u0629 \u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0641\u064a\u062f\u064a\u0648\u0647\u0627\u062a \u0639\u0644\u0649 \u062a\u0627\u0628\u0639\u0648\u0646\u0627 \u0639\u0644\u0649 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0639\u0627\u0645\u0629 \u0639\u0644\u0649 \u0627\u0644\u0641\u064a\u0633 \u0628\u0648\u0643 \u0639\u0644\u0634\u0627\u0646 \u062a\u0639\u0631\u0641\u0648\u0627 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0623\u0643\u062a\u0631 \u0648\u0623\u062e\u0628\u0627\u0631\u2026","rel":"","context":"\u0641\u064a &quot;\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646&quot;","block_context":{"text":"\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646","link":"https:\/\/engeg.com\/b\/category\/%d9%81%d9%8a%d8%af%d9%8a%d9%88-%d8%a8%d9%8a%d8%aa-%d8%a7%d9%84%d9%88%d8%b7%d9%86\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12490,"url":"https:\/\/engeg.com\/b\/2018\/11\/05\/%d8%a7%d9%84%d8%a7%d8%b3%d8%aa%d8%b4%d8%a7%d8%b1%d9%89-%d8%a7%d9%84%d8%b9%d9%82%d8%a7%d8%b1%d9%8a-%d9%85-%d9%8a%d8%a7%d8%b3%d8%b1-%d8%b9%d8%a8%d8%af%d8%a7%d9%84%d9%84%d9%87-%d9%83%d9%84-%d8%ad-4\/","url_meta":{"origin":56661,"position":3},"title":"\u0627\u0644\u0627\u0633\u062a\u0634\u0627\u0631\u0649 \u0627\u0644\u0639\u0642\u0627\u0631\u064a \u0645. \u064a\u0627\u0633\u0631 \u0639\u0628\u062f\u0627\u0644\u0644\u0647 | \u0643\u0644 \u062d\u0627\u062c\u0629 \u0639\u0646 \u0627\u0644\u0637\u0631\u062d \u0627\u0644\u062d\u0627\u0644\u0649 \u0644\u0623\u0631\u0627\u0636\u0649 \u0627\u0645\u062a\u062f\u0627\u062f \u0627\u0644\u0646\u0631\u062c\u0633&#8230;\u0627\u0644\u0642\u0627\u0647\u0631\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629   u_","author":"\u0627\u0644\u0627\u0633\u062a\u0634\u0627\u0631\u0649 \u0627\u0644\u0639\u0642\u0627\u0631\u064a \u0645. \u064a\u0627\u0633\u0631 \u0639\u0628\u062f\u0627\u0644\u0644\u0647","date":"\u0646\u0648\u0641\u0645\u0628\u0631 5, 2018","format":false,"excerpt":"\u0643\u0644 \u062d\u0627\u062c\u0629 \u0639\u0646 \u0627\u0644\u0637\u0631\u062d \u0627\u0644\u062d\u0627\u0644\u0649 \u0644\u0623\u0631\u0627\u0636\u0649 \u0627\u0645\u062a\u062f\u0627\u062f \u0627\u0644\u0646\u0631\u062c\u0633...\u0627\u0644\u0642\u0627\u0647\u0631\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 ?\u0627\u0644\u0627\u0634\u062a\u0631\u0627\u0637\u0627\u062a ?\u0627\u0644\u062c\u062f\u0648\u0649 \u0627\u0644\u0627\u0633\u062a\u062b\u0645\u0627\u0631\u064a\u0629 ?\u0648\u062c\u0647\u0629 \u0646\u0638\u0631\u0646\u0627 #\u0628\u064a\u062a_\u0627\u0644\u0648\u0637\u0646 #\u0627\u0631\u0627\u0636\u0649_\u0627\u0644\u0645\u063a\u062a\u0631\u0628\u064a\u0646 #\u064a\u0627\u0633\u0631_\u0639\u0628\u062f\u0627\u0644\u0644\u0647 #\u0627\u0645\u062a\u062f\u0627\u062f_\u0627\u0644\u0646\u0631\u062c\u0633 #\u0627\u0644\u0645\u0631\u062d\u0644\u0629_\u0627\u0644\u0633\u0627\u062f\u0633\u0629 \u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0641\u064a\u062f\u064a\u0648\u0647\u0627\u062a \u0639\u0644\u0649 \u062a\u0627\u0628\u0639\u0648\u0646\u0627 \u0639\u0644\u0649 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0639\u0627\u0645\u0629 \u0639\u0644\u0649 \u0627\u0644\u0641\u064a\u0633 \u0628\u0648\u0643 \u0639\u0644\u0634\u0627\u0646 \u062a\u0639\u0631\u0641\u0648\u0627 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0623\u0643\u062a\u0631 \u0648\u0623\u062e\u0628\u0627\u0631 \u0623\u062c\u062f\u062f \u0641\u064a \u0645\u062c\u0627\u0644 \u0627\u0644\u0647\u0646\u062f\u0633\u0629 \u0648\u0627\u0644\u0639\u0642\u0627\u0631\u0627\u062a \u0648\u0627\u0644\u0627\u0633\u0643\u0627\u0646 \u0639\u0644\u0649 \u0648\u062a\u0627\u0628\u0639\u0648\u0627 \u0627\u062d\u062f\u062b \u0645\u0634\u0627\u0631\u064a\u0639\u0646\u0627 \u0627\u062a\u062d\u0627\u062f \u0645\u0644\u0627\u0643 \u0639\u0644\u0649 \u0627\u0644\u0641\u064a\u0633 \u0628\u0648\u0643\u2026","rel":"","context":"\u0641\u064a &quot;\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646&quot;","block_context":{"text":"\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646","link":"https:\/\/engeg.com\/b\/category\/%d9%81%d9%8a%d8%af%d9%8a%d9%88-%d8%a8%d9%8a%d8%aa-%d8%a7%d9%84%d9%88%d8%b7%d9%86\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":32444,"url":"https:\/\/engeg.com\/b\/2022\/11\/11\/%d8%a7%d8%b3%d8%aa%d9%83%d8%b4%d8%a7%d9%81-%d8%a8%d9%8a%d8%aa-%d8%a7%d9%84%d9%88%d8%b7%d9%86-%d8%b1%d8%a8%d9%88%d8%a9-%d8%a7%d9%84%d8%aa%d8%ac%d9%85%d8%b9%f0%9f%94%a5-u_\/","url_meta":{"origin":56661,"position":4},"title":"\u0627\u0633\u062a\u0643\u0634\u0627\u0641 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 (\u0631\u0628\u0648\u0629 \u0627\u0644\u062a\u062c\u0645\u0639)?   u_","author":"\u0627\u0633\u062a\u0643\u0634\u0627\u0641 Nada Ibrahim","date":"\u0646\u0648\u0641\u0645\u0628\u0631 11, 2022","format":false,"excerpt":"\u0631\u0648\u062d\u0646\u0627 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0648\u0634\u0648\u0641\u0646\u0627 \u0627\u0632\u0627\u064a \u0646\u0642\u062f\u0631 \u0646\u0648\u0635\u0644\u0647 \u0648\u0627\u0633\u062a\u0643\u0634\u0641\u0646\u0627 \u0643\u0644 \u0627\u0644\u0627\u062d\u064a\u0627\u0621 \u0644\u0648 \u0645\u062d\u062a\u0627\u062c \u062a\u0639\u0631\u0641 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0643\u062b\u0631 \u0627\u0648 \u0639\u0627\u0648\u0632 \u062a\u0633\u062a\u062b\u0645\u0631 \u0641\u064a \u0627\u0644\u0642\u0627\u0647\u0631\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u062f\u0627 \u0631\u0642\u0645\u064a 01155887030 \u0647\u0630\u0627 \u0627\u0644\u0641\u064a\u062f\u064a\u0648 \u064a\u062a\u062d\u062f\u062b \u0639\u0646 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646\u060c \u0648\u0647\u0648 \u0645\u0634\u0631\u0648\u0639 \u0633\u0643\u0646\u064a \u064a\u0642\u0639 \u0641\u064a \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u062a\u062c\u0645\u0639 \u0627\u0644\u062e\u0627\u0645\u0633 \u0641\u064a \u0627\u0644\u0642\u0627\u0647\u0631\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629. \u064a\u062a\u0645 \u0639\u0631\u0636 \u0645\u0645\u064a\u0632\u0627\u062a \u0648\u0639\u064a\u0648\u0628 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0627\u0644\u062a\u062c\u0645\u0639 \u0627\u0644\u062e\u0627\u0645\u0633\u060c \u0628\u0627\u0644\u0625\u0636\u0627\u0641\u0629\u2026","rel":"","context":"\u0641\u064a &quot;\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646&quot;","block_context":{"text":"\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646","link":"https:\/\/engeg.com\/b\/category\/%d9%81%d9%8a%d8%af%d9%8a%d9%88-%d8%a8%d9%8a%d8%aa-%d8%a7%d9%84%d9%88%d8%b7%d9%86\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11167,"url":"https:\/\/engeg.com\/b\/2022\/08\/15\/%d8%b8%d8%a7%d9%87%d9%85-%d8%aa%d9%81%d8%a7%d8%b5%d9%8a%d9%84-%d9%88-%d8%a7%d8%b3%d8%b9%d8%a7%d8%b1-%d8%a8%d9%8a%d8%aa-%d8%a7%d9%84%d9%88%d8%b7%d9%86-%d8%a7%d9%84%d8%aa%d8%ac%d9%85%d8%b9-%d8%a7%d9%84\/","url_meta":{"origin":56661,"position":5},"title":"\u0627\u0647\u0645 \u062a\u0641\u0627\u0635\u064a\u0644 \u0648 \u0627\u0633\u0639\u0627\u0631 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0627\u0644\u062a\u062c\u0645\u0639 \u0627\u0644\u062e\u0627\u0645\u0633   u_","author":"Mostafa Ghazy","date":"\u0623\u063a\u0633\u0637\u0633 15, 2022","format":false,"excerpt":"\u0644\u0644\u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u0648\u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0639\u0644\u0649 \u0627\u0644\u0631\u0642\u0645 \u0627\u0644\u062a\u0627\u0644\u064a 01096110889 \u0623\u0648 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0644\u064a\u0646\u0643 \u0627\u0644\u0648\u0627\u062a\u0633\u0627\u0628 \u0648\u064a\u0645\u0643\u0646\u0643\u0645 \u0645\u062a\u0627\u0628\u0639\u062a\u064a \u0639\u0644\u0649 \u0627\u0644\u0641\u064a\u0633 \u0628\u0648\u0643: \u0643\u0644 \u062a\u0641\u0627\u0635\u064a\u0644 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0627\u0644\u062a\u062c\u0645\u0639 \u0627\u0644\u062e\u0627\u0645\u0633 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646 \u0627\u0644\u062a\u062c\u0645\u0639 \u0627\u0644\u062e\u0627\u0645\u0633 \u0647\u0648 \u0625\u062d\u062f\u0649 \u0627\u0644\u0645\u0646\u0627\u0637\u0642 \u0627\u0644\u062a\u064a \u062a\u0642\u062f\u0645\u0647\u0627 \u0647\u064a\u0626\u0629 \u0627\u0644\u0645\u062c\u062a\u0645\u0639\u0627\u062a \u0627\u0644\u0639\u0645\u0631\u0627\u0646\u064a\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0627\u0644\u062a\u0627\u0628\u0639\u0629 \u0644\u0648\u0632\u0627\u0631\u0629 \u0627\u0644\u0625\u0633\u0643\u0627\u0646 \u0648\u0627\u0644\u0642\u0627\u0647\u0631\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629. \u0648\u0647\u0648 \u0627\u0645\u062a\u062f\u0627\u062f \u0639\u0645\u0631\u0627\u0646\u064a \u0644\u0644\u0642\u0627\u0647\u0631\u0629 \u0627\u0644\u0643\u0628\u0631\u0649 \u0645\u0646 \u0627\u0644\u0646\u0627\u062d\u064a\u0629 \u0627\u0644\u0634\u0631\u0642\u064a\u0629\u060c \u0648\u0647\u0648 \u062a\u0627\u0628\u0639\u2026","rel":"","context":"\u0641\u064a &quot;\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646&quot;","block_context":{"text":"\u0641\u064a\u062f\u064a\u0648 \u0628\u064a\u062a \u0627\u0644\u0648\u0637\u0646","link":"https:\/\/engeg.com\/b\/category\/%d9%81%d9%8a%d8%af%d9%8a%d9%88-%d8%a8%d9%8a%d8%aa-%d8%a7%d9%84%d9%88%d8%b7%d9%86\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/engeg.com\/b\/wp-json\/wp\/v2\/posts\/56661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/engeg.com\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/engeg.com\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/engeg.com\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/engeg.com\/b\/wp-json\/wp\/v2\/comments?post=56661"}],"version-history":[{"count":1,"href":"https:\/\/engeg.com\/b\/wp-json\/wp\/v2\/posts\/56661\/revisions"}],"predecessor-version":[{"id":56665,"href":"https:\/\/engeg.com\/b\/wp-json\/wp\/v2\/posts\/56661\/revisions\/56665"}],"wp:attachment":[{"href":"https:\/\/engeg.com\/b\/wp-json\/wp\/v2\/media?parent=56661"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/engeg.com\/b\/wp-json\/wp\/v2\/categories?post=56661"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/engeg.com\/b\/wp-json\/wp\/v2\/tags?post=56661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}