{"id":172,"date":"2025-10-19T08:49:50","date_gmt":"2025-10-19T08:49:50","guid":{"rendered":"https:\/\/aman360.org\/?page_id=172"},"modified":"2025-10-19T10:55:09","modified_gmt":"2025-10-19T10:55:09","slug":"household-checker","status":"publish","type":"page","link":"https:\/\/aman360.org\/ar\/tools\/household-checker\/","title":{"rendered":"Household Resilience Checker"},"content":{"rendered":"\n<!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\"\/>\n<title>Aman360 \u2022 Household Resilience Checker<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Tajawal:wght@400;600;800&#038;family=Inter:wght@400;600;800&#038;display=swap\" rel=\"stylesheet\">\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.1\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/html2canvas@1.4.1\/dist\/html2canvas.min.js\"><\/script>\n<style>\n:root{--bg:#0b1224;--panel:#0f1b36;--ink:#e6f0ff;--mut:#9fb3d9;--brand:#22a3ff;--line:#21335d;--chip:#0a1531;--ok:#22c55e;--mid:#f59e0b;--bad:#ef4444}\n*{box-sizing:border-box}\nbody{margin:0;background:var(--bg);color:var(--ink);font-family:Tajawal,Inter,system-ui,Segoe UI,Roboto,Arial,sans-serif}\n.container{max-width:1200px;margin:36px auto;padding:0 16px}\n.header{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:12px}\n.h-title{font-weight:800;font-size:28px}\n.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}\n.btn{background:var(--brand);color:#00162b;border:none;padding:10px 14px;border-radius:10px;font-weight:700;cursor:pointer}\n.btn.alt{background:#1b2f59;color:var(--ink)}\n.select,.input, input[type=range]{background:#0a1330;border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:8px 10px}\n.card{background:linear-gradient(180deg,#0f1b36,#0c1630);border:1px solid var(--line);border-radius:16px;padding:14px}\n.grid{display:grid;gap:14px}\n@media(min-width:1080px){.grid-2{grid-template-columns:1.05fr .95fr}}\n.label{color:var(--mut);font-size:13px;margin-bottom:6px}\n.sep{height:1px;background:var(--line);border:0;margin:10px 0}\n.small{font-size:12px;color:var(--mut)}\n.badge{display:inline-block;background:#12366a;color:#cfe4ff;border:1px solid #1f4c93;padding:3px 8px;border-radius:999px}\n.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}\n.kpi{background:#0a1531;border:1px solid var(--line);border-radius:12px;padding:10px}\n.kpi h3{margin:0;font-size:22px}\n.list{display:grid;gap:8px}\n.item{display:flex;justify-content:space-between;gap:8px;align-items:center;background:#0a1531;border:1px solid var(--line);border-radius:12px;padding:10px}\n.note{background:#0a1531;border:1px dashed var(--line);padding:10px;border-radius:12px}\n.status{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid var(--line);background:#0a1330}\n.dot{width:10px;height:10px;border-radius:50%}\n<\/style>\n<\/head>\n<body>\n<div class=\"container\" id=\"capture\">\n  <div class=\"header\">\n    <div class=\"h-title\" id=\"title\">\u0645\u062f\u0642\u0642 \u062c\u0627\u0647\u0632\u064a\u0629 \u0627\u0644\u0623\u0633\u0631\u0629<\/div>\n    <div class=\"row\">\n      <select id=\"lang\" class=\"select\">\n        <option value=\"ar\" selected>\u0627\u0644\u0639\u0631\u0628\u064a\u0629<\/option>\n        <option value=\"en\">English<\/option>\n      <\/select>\n      <button class=\"btn alt\" id=\"btnPng\">PNG<\/button>\n      <button class=\"btn alt\" id=\"btnCsv\">CSV<\/button>\n      <button class=\"btn alt\" id=\"btnPrint\">Print<\/button>\n      <button class=\"btn\" id=\"btnRun\">\u062a\u062d\u062f\u064a\u062b<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"grid grid-2\">\n    <!-- Controls -->\n    <div class=\"card\">\n      <div class=\"badge\" id=\"about\">\u0641\u062d\u0635 \u0633\u0631\u064a\u0639 \u0648\u0630\u0643\u064a \u0644\u0645\u062f\u0649 \u062c\u0627\u0647\u0632\u064a\u0629 \u0627\u0644\u0623\u0633\u0631\u0629 \u0644\u0645\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u062e\u0627\u0637\u0631 \u0627\u0644\u0645\u062e\u062a\u0644\u0641\u0629<\/div>\n      <hr class=\"sep\">\n\n      <div class=\"row\">\n        <div>\n          <div class=\"label\" data-i=\"haz\">\u0646\u0648\u0639 \u0627\u0644\u062e\u0637\u0631 \u0627\u0644\u0631\u0626\u064a\u0633\u064a<\/div>\n          <select id=\"hazard\" class=\"select\">\n            <option value=\"flood\">\u0641\u064a\u0636\u0627\u0646\u0627\u062a<\/option>\n            <option value=\"quake\">\u0632\u0644\u0632\u0627\u0644<\/option>\n            <option value=\"storm\">\u0639\u0627\u0635\u0641\u0629\/\u0631\u064a\u0627\u062d<\/option>\n            <option value=\"heat\">\u0645\u0648\u062c\u0629 \u062d\u0631<\/option>\n            <option value=\"price\">\u0635\u062f\u0645\u0629 \u0623\u0633\u0639\u0627\u0631<\/option>\n            <option value=\"conflict\">\u0646\u0632\u0627\u0639\/\u0639\u062f\u0645 \u0627\u0633\u062a\u0642\u0631\u0627\u0631<\/option>\n          <\/select>\n        <\/div>\n        <div>\n          <div class=\"label\" data-i=\"context\">\u0633\u064a\u0627\u0642 \u0627\u0644\u0633\u0643\u0646<\/div>\n          <select id=\"context\" class=\"select\">\n            <option value=\"urban\">\u062d\u0636\u0631\u064a<\/option>\n            <option value=\"rural\">\u0631\u064a\u0641\u064a<\/option>\n          <\/select>\n        <\/div>\n        <div>\n          <div class=\"label\" data-i=\"size\">\u0639\u062f\u062f \u0623\u0641\u0631\u0627\u062f \u0627\u0644\u0623\u0633\u0631\u0629<\/div>\n          <input id=\"hhsize\" type=\"number\" class=\"select\" value=\"4\" min=\"1\" style=\"width:120px\">\n        <\/div>\n      <\/div>\n\n      <hr class=\"sep\">\n      <div class=\"label\" data-i=\"dims\">\u0627\u0644\u0645\u062d\u0627\u0648\u0631 \u0627\u0644\u0633\u062a\u0629 (0\u2013100)<\/div>\n      <div class=\"row\">\n        <div>\n          <div class=\"label\" data-i=\"supplies\">\u0625\u0645\u062f\u0627\u062f\u0627\u062a (\u0645\u0627\u0621\/\u063a\u0630\u0627\u0621)<\/div>\n          <input id=\"sup\" type=\"range\" min=\"0\" max=\"100\" value=\"50\" style=\"width:260px\">\n        <\/div>\n        <div>\n          <div class=\"label\" data-i=\"power\">\u0637\u0627\u0642\u0629 \u0627\u062d\u062a\u064a\u0627\u0637\u064a\u0629<\/div>\n          <input id=\"pow\" type=\"range\" min=\"0\" max=\"100\" value=\"40\" style=\"width:260px\">\n        <\/div>\n      <\/div>\n      <div class=\"row\" style=\"margin-top:8px\">\n        <div>\n          <div class=\"label\" data-i=\"finance\">\u0645\u0631\u0648\u0646\u0629 \u0645\u0627\u0644\u064a\u0629 (\u0627\u062f\u062e\u0627\u0631\/\u062f\u062e\u0644)<\/div>\n          <input id=\"fin\" type=\"range\" min=\"0\" max=\"100\" value=\"45\" style=\"width:260px\">\n        <\/div>\n        <div>\n          <div class=\"label\" data-i=\"health\">\u0635\u062d\u0629\/\u0625\u0633\u0639\u0627\u0641 \u0623\u0648\u0644\u064a<\/div>\n          <input id=\"hlth\" type=\"range\" min=\"0\" max=\"100\" value=\"55\" style=\"width:260px\">\n        <\/div>\n      <\/div>\n      <div class=\"row\" style=\"margin-top:8px\">\n        <div>\n          <div class=\"label\" data-i=\"plan\">\u062e\u0637\u0629 \u0648\u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0637\u0648\u0627\u0631\u0626<\/div>\n          <input id=\"plan\" type=\"range\" min=\"0\" max=\"100\" value=\"35\" style=\"width:260px\">\n        <\/div>\n        <div>\n          <div class=\"label\" data-i=\"housing\">\u0633\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0633\u0643\u0646\/\u0627\u0644\u062a\u0623\u0645\u064a\u0646<\/div>\n          <input id=\"home\" type=\"range\" min=\"0\" max=\"100\" value=\"50\" style=\"width:260px\">\n        <\/div>\n      <\/div>\n\n      <hr class=\"sep\">\n      <div class=\"label\" data-i=\"weights\">\u0623\u0648\u0632\u0627\u0646 \u0627\u0644\u0645\u062d\u0627\u0648\u0631 (\u0627\u0644\u0645\u062c\u0645\u0648\u0639=1.0)<\/div>\n      <div class=\"row\">\n        <div><div class=\"label\">Sup<\/div><input id=\"w_sup\" class=\"select\" type=\"number\" step=\"0.01\" value=\"0.20\" style=\"width:90px\"><\/div>\n        <div><div class=\"label\">Power<\/div><input id=\"w_pow\" class=\"select\" type=\"number\" step=\"0.01\" value=\"0.12\" style=\"width:90px\"><\/div>\n        <div><div class=\"label\">Finance<\/div><input id=\"w_fin\" class=\"select\" type=\"number\" step=\"0.01\" value=\"0.22\" style=\"width:90px\"><\/div>\n        <div><div class=\"label\">Health<\/div><input id=\"w_hlth\" class=\"select\" type=\"number\" step=\"0.01\" value=\"0.18\" style=\"width:90px\"><\/div>\n        <div><div class=\"label\">Plan<\/div><input id=\"w_plan\" class=\"select\" type=\"number\" step=\"0.01\" value=\"0.16\" style=\"width:90px\"><\/div>\n        <div><div class=\"label\">Housing<\/div><input id=\"w_home\" class=\"select\" type=\"number\" step=\"0.01\" value=\"0.12\" style=\"width:90px\"><\/div>\n      <\/div>\n      <div class=\"small\" id=\"wNote\">Weights sum: 1.00<\/div>\n\n      <hr class=\"sep\">\n      <div class=\"note small\" id=\"tips\">\n        \u0645\u0644\u0627\u062d\u0638\u0629: \u0627\u0644\u0642\u064a\u0645 0\u2013100 \u0647\u064a \u062a\u0642\u064a\u064a\u0645\u0643 \u0644\u0643\u0644 \u0645\u062d\u0648\u0631. \u064a\u0645\u0643\u0646\u0643 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0642\u0648\u0627\u0644\u0628 \u0627\u0644\u062c\u0627\u0647\u0632\u0629 \u0623\u062f\u0646\u0627\u0647 \u0644\u0644\u0628\u062f\u0621.\n      <\/div>\n\n      <div class=\"row\" style=\"margin-top:6px\">\n        <button class=\"btn alt\" id=\"p_quake\">Quake Ready<\/button>\n        <button class=\"btn alt\" id=\"p_flood\">Flood Ready<\/button>\n        <button class=\"btn alt\" id=\"p_budget\">On a Budget<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Results -->\n    <div class=\"card\">\n      <div class=\"kpis\">\n        <div class=\"kpi\"><div class=\"label\" data-i=\"rindex\">\u0645\u0624\u0634\u0631 \u062c\u0627\u0647\u0632\u064a\u0629 \u0627\u0644\u0623\u0633\u0631\u0629<\/div><h3 id=\"kScore\">\u2014<\/h3><\/div>\n        <div class=\"kpi\"><div class=\"label\" data-i=\"band\">\u0627\u0644\u062a\u0635\u0646\u064a\u0641<\/div><h3 id=\"kBand\"><span class=\"status\"><span class=\"dot\" style=\"background:var(--ok)\"><\/span> \u2014<\/span><\/h3><\/div>\n        <div class=\"kpi\"><div class=\"label\" data-i=\"gap\">\u0623\u0643\u0628\u0631 \u0641\u062c\u0648\u0629<\/div><h3 id=\"kGap\">\u2014<\/h3><\/div>\n      <\/div>\n      <hr class=\"sep\">\n      <canvas id=\"radar\" height=\"220\"><\/canvas>\n      <hr class=\"sep\">\n      <div class=\"label\" data-i=\"recs\">\u062a\u0648\u0635\u064a\u0627\u062a \u0633\u0631\u064a\u0639\u0629 (\u062d\u0633\u0628 \u0627\u0644\u062e\u0637\u0631)<\/div>\n      <div class=\"list\" id=\"recsList\"><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n\/* ============== i18n ============== *\/\nconst I18N={\n  ar:{\n    title:\"\u0645\u062f\u0642\u0642 \u062c\u0627\u0647\u0632\u064a\u0629 \u0627\u0644\u0623\u0633\u0631\u0629\", about:\"\u0641\u062d\u0635 \u0633\u0631\u064a\u0639 \u0648\u0630\u0643\u064a \u0644\u0645\u062f\u0649 \u062c\u0627\u0647\u0632\u064a\u0629 \u0627\u0644\u0623\u0633\u0631\u0629 \u0644\u0645\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u062e\u0627\u0637\u0631 \u0627\u0644\u0645\u062e\u062a\u0644\u0641\u0629\",\n    haz:\"\u0646\u0648\u0639 \u0627\u0644\u062e\u0637\u0631 \u0627\u0644\u0631\u0626\u064a\u0633\u064a\", context:\"\u0633\u064a\u0627\u0642 \u0627\u0644\u0633\u0643\u0646\", size:\"\u0639\u062f\u062f \u0623\u0641\u0631\u0627\u062f \u0627\u0644\u0623\u0633\u0631\u0629\",\n    dims:\"\u0627\u0644\u0645\u062d\u0627\u0648\u0631 \u0627\u0644\u0633\u062a\u0629 (0\u2013100)\", supplies:\"\u0625\u0645\u062f\u0627\u062f\u0627\u062a (\u0645\u0627\u0621\/\u063a\u0630\u0627\u0621)\", power:\"\u0637\u0627\u0642\u0629 \u0627\u062d\u062a\u064a\u0627\u0637\u064a\u0629\", finance:\"\u0645\u0631\u0648\u0646\u0629 \u0645\u0627\u0644\u064a\u0629\", health:\"\u0635\u062d\u0629\/\u0625\u0633\u0639\u0627\u0641\", plan:\"\u062e\u0637\u0629 \u0648\u0627\u062a\u0635\u0627\u0644\u0627\u062a\", housing:\"\u0633\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0633\u0643\u0646\/\u0627\u0644\u062a\u0623\u0645\u064a\u0646\",\n    weights:\"\u0623\u0648\u0632\u0627\u0646 \u0627\u0644\u0645\u062d\u0627\u0648\u0631 (\u0627\u0644\u0645\u062c\u0645\u0648\u0639=1.0)\", rindex:\"\u0645\u0624\u0634\u0631 \u062c\u0627\u0647\u0632\u064a\u0629 \u0627\u0644\u0623\u0633\u0631\u0629\", band:\"\u0627\u0644\u062a\u0635\u0646\u064a\u0641\", gap:\"\u0623\u0643\u0628\u0631 \u0641\u062c\u0648\u0629\", recs:\"\u062a\u0648\u0635\u064a\u0627\u062a \u0633\u0631\u064a\u0639\u0629 (\u062d\u0633\u0628 \u0627\u0644\u062e\u0637\u0631)\",\n    tips:\"\u0645\u0644\u0627\u062d\u0638\u0629: \u0627\u0644\u0642\u064a\u0645 0\u2013100 \u0647\u064a \u062a\u0642\u064a\u064a\u0645\u0643 \u0644\u0643\u0644 \u0645\u062d\u0648\u0631. \u064a\u0645\u0643\u0646\u0643 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0642\u0648\u0627\u0644\u0628 \u0627\u0644\u062c\u0627\u0647\u0632\u0629 \u0623\u062f\u0646\u0627\u0647 \u0644\u0644\u0628\u062f\u0621.\",\n    bands:{low:\"\u0645\u0646\u062e\u0641\u0636\", mod:\"\u0645\u062a\u0648\u0633\u0637\", hi:\"\u0639\u0627\u0644\u064d\"},\n    dimsShort:{sup:\"\u0625\u0645\u062f\u0627\u062f\u0627\u062a\",pow:\"\u0637\u0627\u0642\u0629\",fin:\"\u0645\u0627\u0644\u064a\u0629\",hlth:\"\u0635\u062d\u0629\",plan:\"\u062e\u0637\u0629\",home:\"\u0645\u0633\u0643\u0646\"},\n    recText:(n)=>`\u062a\u064f\u0638\u0647\u0631 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0623\u0646 \u062a\u062d\u0633\u064a\u0646 ${n} \u0633\u064a\u0624\u062b\u0631 \u0628\u0634\u0643\u0644 \u0645\u0644\u062d\u0648\u0638 \u0639\u0644\u0649 \u062c\u0627\u0647\u0632\u064a\u062a\u0643.`\n  },\n  en:{\n    title:\"Household Resilience Checker\", about:\"Quick, smart check of a household\u2019s readiness across multiple hazards\",\n    haz:\"Primary hazard\", context:\"Living context\", size:\"Household size\",\n    dims:\"Six dimensions (0\u2013100)\", supplies:\"Supplies (Water\/Food)\", power:\"Backup Power\", finance:\"Financial Cushion\", health:\"Health\/First Aid\", plan:\"Emergency Plan\/Comms\", housing:\"Home Safety\/Insurance\",\n    weights:\"Dimension weights (sum=1.0)\", rindex:\"Household Resilience Index\", band:\"Band\", gap:\"Largest gap\", recs:\"Quick recommendations (hazard-aware)\",\n    tips:\"Note: 0\u2013100 are your self-assessments. Use the presets below to start quickly.\",\n    bands:{low:\"Low\", mod:\"Moderate\", hi:\"High\"},\n    dimsShort:{sup:\"Supplies\",pow:\"Power\",fin:\"Finance\",hlth:\"Health\",plan:\"Plan\",home:\"Housing\"},\n    recText:(n)=>`Results suggest improving ${n} would significantly increase your readiness.`\n  }\n};\n\nconst els={\n  lang:document.getElementById('lang'), title:document.getElementById('title'), about:document.getElementById('about'),\n  hazard:document.getElementById('hazard'), context:document.getElementById('context'), hhsize:document.getElementById('hhsize'),\n  sup:document.getElementById('sup'), pow:document.getElementById('pow'), fin:document.getElementById('fin'), hlth:document.getElementById('hlth'),\n  plan:document.getElementById('plan'), home:document.getElementById('home'),\n  w_sup:document.getElementById('w_sup'), w_pow:document.getElementById('w_pow'), w_fin:document.getElementById('w_fin'), w_hlth:document.getElementById('w_hlth'), w_plan:document.getElementById('w_plan'), w_home:document.getElementById('w_home'),\n  wNote:document.getElementById('wNote'),\n  kScore:document.getElementById('kScore'), kBand:document.getElementById('kBand'), kGap:document.getElementById('kGap'),\n  radar:document.getElementById('radar'), recsList:document.getElementById('recsList'),\n  btnRun:document.getElementById('btnRun'), btnPng:document.getElementById('btnPng'), btnCsv:document.getElementById('btnCsv'), btnPrint:document.getElementById('btnPrint'),\n  tips:document.getElementById('tips'),\n  p_quake:document.getElementById('p_quake'), p_flood:document.getElementById('p_flood'), p_budget:document.getElementById('p_budget')\n};\n\nlet RADAR;\n\nfunction applyLang(){\n  const t=I18N[els.lang.value];\n  document.documentElement.lang=els.lang.value;\n  document.documentElement.dir=(els.lang.value==='ar')?'rtl':'ltr';\n  document.querySelectorAll('[data-i]').forEach(e=>e.textContent=t[e.getAttribute('data-i')]);\n  els.title.textContent=t.title; els.about.textContent=t.about; els.tips.textContent=t.tips;\n  run();\n}\n\nfunction sumWeights(){\n  const s= +els.w_sup.value + +els.w_pow.value + +els.w_fin.value + +els.w_hlth.value + +els.w_plan.value + +els.w_home.value;\n  els.wNote.textContent = `Weights sum: ${s.toFixed(2)}`;\n  els.wNote.style.color = Math.abs(s-1)<1e-6? '#9fb3d9' : '#ff9a9a';\n  return s;\n}\n\nfunction band(score){\n  const t=I18N[els.lang.value].bands;\n  if(score<50) return {txt:t.low, color:'var(--bad)'}; if(score<70) return {txt:t.mod, color:'var(--mid)'}; return {txt:t.hi, color:'var(--ok)'};\n}\n\n\/\/ hazard-aware recommendations\nconst HREC={\n  flood:(ctx)=>[\n    `Store ${Math.max(3,ctx.hhsize)} days of water (4L\/person\/day) and waterproof docs.`,\n    `Elevate electrics and appliances; install backflow valves if possible.`,\n    `Plan evacuation routes to higher ground; keep a grab-bag ready.`,\n  ],\n  quake:(ctx)=>[\n    `Secure furniture and water heaters; identify safe drop-cover-hold spots.`,\n    `Keep shoes\/flashlight near beds; prepare a family meetup point.`,\n    `Review insurance\/retrofit options for masonry and non-structural hazards.`,\n  ],\n  storm:(ctx)=>[\n    `Trim trees, secure outdoor items; keep power-bank\/UPS for comms.`,\n    `Have radio\/alerts; prepare warm layers and shelter-in-place plan.`,\n    `Stock extra meds for vulnerable members (infants\/elderly).`,\n  ],\n  heat:(ctx)=>[\n    `Ensure fans\/AC or cross-ventilation; shade windows and use light curtains.`,\n    `Maintain hydration plan: 3\u20134L water\/person\/day; check neighbors.`,\n    `Schedule activities early\/late; keep ORS and cool packs.`,\n  ],\n  price:(ctx)=>[\n    `Build a pantry buffer (staples for ${Math.max(7,els.hhsize.value*2)} days); rotate FIFO.`,\n    `Create a small cash\/emergency fund; list price-stable substitutes.`,\n    `Map local aid\/safety nets and bulk-buy options with neighbors.`,\n  ],\n  conflict:(ctx)=>[\n    `Keep IDs, copies, and key contacts in a waterproof pouch.`,\n    `Agree on comms protocol (SMS first); define in\/out-of-city meetup.`,\n    `Pack go-bags with meds, hygiene, chargers, and small cash.`,\n  ]\n};\n\nfunction compute(){\n  const vals = {\n    sup:+els.sup.value, pow:+els.pow.value, fin:+els.fin.value, hlth:+els.hlth.value, plan:+els.plan.value, home:+els.home.value\n  };\n  const ws = {sup:+els.w_sup.value, pow:+els.w_pow.value, fin:+els.w_fin.value, hlth:+els.w_hlth.value, plan:+els.w_plan.value, home:+els.w_home.value};\n  const s=sumWeights(); const wn = Object.fromEntries(Object.entries(ws).map(([k,v])=>[k, v\/s])); \/\/ normalize to 1\n  const score = Math.round( Object.entries(vals).reduce((acc,[k,v])=>acc + wn[k]*v, 0) );\n  const weakKey = Object.keys(vals).reduce((w,k)=> vals[k] < vals[w]? k:w, 'sup');\n  return {vals, ws:wn, score, weakKey};\n}\n\nfunction draw(){\n  const t=I18N[els.lang.value];\n  const {vals, score, weakKey} = compute();\n  const b=band(score);\n  els.kScore.textContent=score;\n  els.kBand.innerHTML = `<span class=\"status\"><span class=\"dot\" style=\"background:${b.color}\"><\/span> ${b.txt}<\/span>`;\n  els.kGap.textContent = t.dimsShort[weakKey];\n\n  \/\/ radar\n  const labels=[t.dimsShort.sup,t.dimsShort.pow,t.dimsShort.fin,t.dimsShort.hlth,t.dimsShort.plan,t.dimsShort.home];\n  const data=[vals.sup,vals.pow,vals.fin,vals.hlth,vals.plan,vals.home];\n  if(RADAR) RADAR.destroy();\n  RADAR = new Chart(els.radar.getContext('2d'),{\n    type:'radar',\n    data:{labels, datasets:[{data, borderColor:'#22a3ff', backgroundColor:'rgba(34,163,255,0.25)', pointBackgroundColor:'#60a5fa'}]},\n    options:{plugins:{legend:{display:false}}, scales:{r:{suggestedMin:0,suggestedMax:100, angleLines:{color:'#21335d'}, grid:{color:'#1b2f59'}, pointLabels:{color:'#9fb3d9'}, ticks:{display:true, color:'#9fb3d9', stepSize:20, showLabelBackdrop:false}}}}\n  );\n\n  \/\/ recommendations\n  const hz = els.hazard.value;\n  const list = HREC[hz]({hhsize:+els.hhsize.value}) || [];\n  els.recsList.innerHTML = '';\n  const tipText = I18N[els.lang.value].recText(t.dimsShort[weakKey]);\n  [tipText, ...list].forEach(txt=>{\n    const div=document.createElement('div'); div.className='item'; div.innerHTML = `<span>${txt}<\/span>`;\n    els.recsList.appendChild(div);\n  });\n}\n\nfunction run(){ draw(); }\n\n\/* ===== Presets ===== *\/\nels.p_quake.onclick=()=>{els.hazard.value='quake'; els.sup.value=55; els.pow.value=45; els.fin.value=50; els.hlth.value=65; els.plan.value=60; els.home.value=50; run();};\nels.p_flood.onclick=()=>{els.hazard.value='flood'; els.sup.value=60; els.pow.value=50; els.fin.value=45; els.hlth.value=55; els.plan.value=40; els.home.value=45; run();};\nels.p_budget.onclick=()=>{els.sup.value=45; els.pow.value=30; els.fin.value=35; els.hlth.value=50; els.plan.value=35; els.home.value=40; run();};\n\n\/* ===== Exports ===== *\/\nels.btnPng.onclick=()=>{ html2canvas(document.getElementById('capture'),{backgroundColor:'#0b1224',scale:2}).then(c=>{const a=document.createElement('a'); a.href=c.toDataURL('image\/png'); a.download='aman360-household-checker.png'; a.click();}); };\nels.btnCsv.onclick=()=>{\n  const r=compute(); const lang=els.lang.value;\n  const rows=[['hazard','context','size','supplies','power','finance','health','plan','housing','score'],\n              [els.hazard.value, els.context.value, +els.hhsize.value, r.vals.sup, r.vals.pow, r.vals.fin, r.vals.hlth, r.vals.plan, r.vals.home, r.score]];\n  const csv=rows.map(x=>x.join(',')).join('\\n');\n  const blob=new Blob([csv],{type:'text\/csv;charset=utf-8'}); const url=URL.createObjectURL(blob);\n  const a=document.createElement('a'); a.href=url; a.download='aman360-household-checker.csv'; a.click(); URL.revokeObjectURL(url);\n};\nels.btnPrint.onclick=()=>window.print();\n\n\/* ===== Reactive ===== *\/\n['sup','pow','fin','hlth','plan','home','hazard','context','hhsize'].forEach(id=>{\n  document.getElementById(id).addEventListener('input', run);\n});\n['w_sup','w_pow','w_fin','w_hlth','w_plan','w_home'].forEach(id=>{\n  document.getElementById(id).addEventListener('input', run);\n});\nels.lang.onchange=applyLang;\nels.btnRun.onclick=run;\n\n\/* init *\/\napplyLang(); run();\n<\/script>\n<\/body>\n<\/html>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aman360 \u2022 Household Resilience Checker \u0645\u062f\u0642\u0642 \u062c\u0627\u0647\u0632\u064a\u0629 \u0627\u0644\u0623\u0633\u0631\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629English PNG CSV Print \u062a\u062d\u062f\u064a\u062b \u0641\u062d\u0635 \u0633\u0631\u064a\u0639 \u0648\u0630\u0643\u064a \u0644\u0645\u062f\u0649 \u062c\u0627\u0647\u0632\u064a\u0629 \u0627\u0644\u0623\u0633\u0631\u0629 \u0644\u0645\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u062e\u0627\u0637\u0631 \u0627\u0644\u0645\u062e\u062a\u0644\u0641\u0629 \u0646\u0648\u0639 \u0627\u0644\u062e\u0637\u0631 \u0627\u0644\u0631\u0626\u064a\u0633\u064a \u0641\u064a\u0636\u0627\u0646\u0627\u062a\u0632\u0644\u0632\u0627\u0644\u0639\u0627\u0635\u0641\u0629\/\u0631\u064a\u0627\u062d\u0645\u0648\u062c\u0629 \u062d\u0631\u0635\u062f\u0645\u0629 \u0623\u0633\u0639\u0627\u0631\u0646\u0632\u0627\u0639\/\u0639\u062f\u0645 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0633\u064a\u0627\u0642 \u0627\u0644\u0633\u0643\u0646 \u062d\u0636\u0631\u064a\u0631\u064a\u0641\u064a \u0639\u062f\u062f \u0623\u0641\u0631\u0627\u062f \u0627\u0644\u0623\u0633\u0631\u0629 \u0627\u0644\u0645\u062d\u0627\u0648\u0631 \u0627\u0644\u0633\u062a\u0629 (0\u2013100) \u0625\u0645\u062f\u0627\u062f\u0627\u062a (\u0645\u0627\u0621\/\u063a\u0630\u0627\u0621) \u0637\u0627\u0642\u0629 \u0627\u062d\u062a\u064a\u0627\u0637\u064a\u0629 \u0645\u0631\u0648\u0646\u0629 \u0645\u0627\u0644\u064a\u0629 (\u0627\u062f\u062e\u0627\u0631\/\u062f\u062e\u0644) \u0635\u062d\u0629\/\u0625\u0633\u0639\u0627\u0641 \u0623\u0648\u0644\u064a \u062e\u0637\u0629 \u0648\u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0637\u0648\u0627\u0631\u0626 \u0633\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0633\u0643\u0646\/\u0627\u0644\u062a\u0623\u0645\u064a\u0646 \u0623\u0648\u0632\u0627\u0646 \u0627\u0644\u0645\u062d\u0627\u0648\u0631 (\u0627\u0644\u0645\u062c\u0645\u0648\u0639=1.0) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":148,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-172","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/aman360.org\/ar\/wp-json\/wp\/v2\/pages\/172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aman360.org\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aman360.org\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aman360.org\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aman360.org\/ar\/wp-json\/wp\/v2\/comments?post=172"}],"version-history":[{"count":3,"href":"https:\/\/aman360.org\/ar\/wp-json\/wp\/v2\/pages\/172\/revisions"}],"predecessor-version":[{"id":182,"href":"https:\/\/aman360.org\/ar\/wp-json\/wp\/v2\/pages\/172\/revisions\/182"}],"up":[{"embeddable":true,"href":"https:\/\/aman360.org\/ar\/wp-json\/wp\/v2\/pages\/148"}],"wp:attachment":[{"href":"https:\/\/aman360.org\/ar\/wp-json\/wp\/v2\/media?parent=172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}