{"id":1715,"date":"2026-07-26T19:37:08","date_gmt":"2026-07-26T12:37:08","guid":{"rendered":"https:\/\/aipnemaptma.org\/?page_id=1715"},"modified":"2026-08-02T20:38:14","modified_gmt":"2026-08-02T13:38:14","slug":"institusi-anggota","status":"publish","type":"page","link":"https:\/\/aipnemaptma.org\/en\/institusi-anggota\/","title":{"rendered":"Institusi Anggota"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1715\" class=\"elementor elementor-1715\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5c16519 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5c16519\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-09b2d85\" data-id=\"09b2d85\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b4d0968 elementor-widget elementor-widget-html\" data-id=\"b4d0968\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================================================\nPAGE DINAMIS INSTITUSI ANGGOTA AIPNEMA\nData dibaca langsung dari Google Sheets.\n\nSpreadsheet ID:\n1EcAqkyAwy0oKATiEoVkYaIS9Vlqpvdh2bcwQZarEW9w\n\nKolom yang digunakan:\n- Nama Institusi\n- Logo\n- Provinsi\n- Pulau\n- Alamat\n- Website (opsional)\n\nKolom sumber alamat tidak ditampilkan.\nTidak menyertakan header dan footer.\n========================================================= -->\n<style>\n:root{\n  --aip-member-primary:#094528;\n  --aip-member-primary-2:#0C5A35;\n  --aip-member-dark:#052F1D;\n  --aip-member-deep:#032416;\n  --aip-member-gold:#D8B25C;\n  --aip-member-gold-soft:#F5E9C9;\n  --aip-member-blue:#1E6292;\n  --aip-member-purple:#6F5BD3;\n  --aip-member-orange:#E47B2B;\n  --aip-member-text:#1C2822;\n  --aip-member-muted:#647169;\n  --aip-member-border:#DCE5E0;\n  --aip-member-soft:#EAF3EE;\n  --aip-member-bg:#F7F9F8;\n  --aip-member-white:#FFFFFF;\n  --aip-member-container:1200px;\n  --aip-member-shadow:0 18px 48px rgba(5,47,29,.10);\n  --aip-member-shadow-sm:0 10px 28px rgba(5,47,29,.08);\n  --aip-member-header-offset:120px;\n}\n\n.aip-member-page,\n.aip-member-page *{\n  box-sizing:border-box;\n}\n\n.aip-member-page{\n  position:relative;\n  left:50%;\n  z-index:1;\n  width:100vw;\n  max-width:100vw;\n  margin:0 0 0 -50vw;\n  padding:0!important;\n  overflow-x:clip;\n  color:var(--aip-member-text);\n  background:var(--aip-member-white);\n  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;\n}\n\n.aip-member-page [id]{\n  scroll-margin-top:var(--aip-member-header-offset);\n}\n\n.aip-member-page img{\n  display:block;\n  max-width:100%;\n}\n\n.aip-member-page a{\n  color:inherit;\n}\n\n.aip-member-page h1,\n.aip-member-page h2,\n.aip-member-page h3,\n.aip-member-page p{\n  margin-top:0;\n}\n\n.aip-member-container{\n  width:min(var(--aip-member-container),calc(100% - 48px));\n  margin-inline:auto;\n}\n\n.aip-member-section{\n  position:relative;\n  padding:86px 0;\n}\n\n.aip-member-section-soft{\n  background:var(--aip-member-bg);\n}\n\n.aip-member-kicker{\n  display:inline-flex;\n  align-items:center;\n  gap:10px;\n  margin:0 0 15px;\n  color:var(--aip-member-primary);\n  font-size:13px;\n  font-weight:800;\n  letter-spacing:.12em;\n  text-transform:uppercase;\n}\n\n.aip-member-kicker::before{\n  content:\"\";\n  width:30px;\n  height:3px;\n  border-radius:999px;\n  background:var(--aip-member-gold);\n}\n\n.aip-member-heading{\n  max-width:930px;\n  margin:0;\n  color:var(--aip-member-text);\n  font-size:clamp(32px,4.4vw,52px);\n  font-weight:820;\n  letter-spacing:-.04em;\n  line-height:1.12;\n}\n\n.aip-member-lead{\n  max-width:800px;\n  margin:18px 0 0;\n  color:var(--aip-member-muted);\n  font-size:16px;\n  line-height:1.8;\n}\n\n\/* HERO *\/\n.aip-member-hero{\n  position:relative;\n  isolation:isolate;\n  overflow:hidden;\n  color:var(--aip-member-white);\n  background:\n    radial-gradient(circle at 85% 16%,rgba(216,178,92,.20),transparent 24%),\n    linear-gradient(125deg,var(--aip-member-deep),var(--aip-member-primary) 60%,#0A5A34);\n}\n\n.aip-member-hero::before{\n  content:\"\";\n  position:absolute;\n  inset:0;\n  z-index:-1;\n  opacity:.11;\n  background-image:\n    linear-gradient(rgba(255,255,255,.28) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(255,255,255,.28) 1px,transparent 1px);\n  background-size:54px 54px;\n  mask-image:linear-gradient(to right,#000,transparent 82%);\n}\n\n.aip-member-hero-grid{\n  display:grid;\n  grid-template-columns:minmax(0,1.08fr) minmax(330px,.92fr);\n  align-items:center;\n  gap:62px;\n  padding:82px 0 76px;\n}\n\n.aip-member-breadcrumb{\n  display:flex;\n  flex-wrap:wrap;\n  gap:8px;\n  margin-bottom:24px;\n  color:#CFE0D6;\n  font-size:13px;\n}\n\n.aip-member-breadcrumb a{\n  text-decoration:none;\n}\n\n.aip-member-breadcrumb a:hover{\n  color:#F0D99F;\n}\n\n.aip-member-hero-badge{\n  display:inline-flex;\n  align-items:center;\n  gap:9px;\n  margin-bottom:22px;\n  padding:8px 13px;\n  border:1px solid rgba(255,255,255,.20);\n  border-radius:999px;\n  color:#F7EBCB;\n  background:rgba(255,255,255,.08);\n  font-size:13px;\n  font-weight:760;\n}\n\n.aip-member-hero-badge::before{\n  content:\"\";\n  width:8px;\n  height:8px;\n  border-radius:50%;\n  background:var(--aip-member-gold);\n}\n\n.aip-member-hero h1{\n  max-width:820px;\n  margin:0;\n  color:var(--aip-member-white);\n  font-size:clamp(42px,5.2vw,66px);\n  font-weight:830;\n  letter-spacing:-.05em;\n  line-height:1.04;\n}\n\n.aip-member-hero h1 span{\n  color:#F1D99D;\n}\n\n.aip-member-hero-text{\n  max-width:740px;\n  margin:24px 0 0;\n  color:#DCEBE2;\n  font-size:17px;\n  line-height:1.78;\n}\n\n.aip-member-hero-panel{\n  padding:30px;\n  border:1px solid rgba(255,255,255,.16);\n  border-radius:24px;\n  background:rgba(255,255,255,.08);\n  box-shadow:0 28px 64px rgba(0,0,0,.17);\n  backdrop-filter:blur(8px);\n}\n\n.aip-member-logo-wrap{\n  display:inline-flex;\n  padding:13px 15px;\n  border-radius:14px;\n  background:var(--aip-member-white);\n  box-shadow:0 12px 30px rgba(0,0,0,.15);\n}\n\n.aip-member-logo-wrap img{\n  width:190px;\n  height:auto;\n}\n\n.aip-member-hero-panel p{\n  margin:20px 0 0;\n  color:#DCEBE2;\n  font-size:14px;\n  line-height:1.75;\n}\n\n.aip-member-stat-grid{\n  display:grid;\n  grid-template-columns:repeat(2,1fr);\n  gap:12px;\n  margin-top:22px;\n}\n\n.aip-member-stat{\n  padding:17px;\n  border:1px solid rgba(255,255,255,.13);\n  border-radius:14px;\n  background:rgba(255,255,255,.07);\n}\n\n.aip-member-stat strong{\n  display:block;\n  color:#F2DCA5;\n  font-size:25px;\n  font-weight:840;\n  line-height:1.05;\n}\n\n.aip-member-stat span{\n  display:block;\n  margin-top:7px;\n  color:#DCEBE2;\n  font-size:12px;\n  line-height:1.45;\n}\n\n\/* DISTRIBUTION *\/\n.aip-member-distribution{\n  overflow:hidden;\n  background:\n    radial-gradient(circle at 8% 10%,rgba(216,178,92,.10),transparent 20%),\n    radial-gradient(circle at 94% 4%,rgba(9,69,40,.09),transparent 24%),\n    var(--aip-member-white);\n}\n\n.aip-member-distribution-grid{\n  display:grid;\n  grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);\n  gap:24px;\n  margin-top:38px;\n}\n\n.aip-member-panel{\n  overflow:hidden;\n  border:1px solid var(--aip-member-border);\n  border-radius:21px;\n  background:rgba(255,255,255,.95);\n  box-shadow:var(--aip-member-shadow-sm);\n}\n\n.aip-member-panel-head{\n  padding:24px 25px 20px;\n  border-bottom:1px solid var(--aip-member-border);\n}\n\n.aip-member-panel-head h3{\n  margin:0;\n  color:var(--aip-member-text);\n  font-size:20px;\n  letter-spacing:-.02em;\n}\n\n.aip-member-panel-head p{\n  margin:7px 0 0;\n  color:var(--aip-member-muted);\n  font-size:12px;\n  line-height:1.6;\n}\n\n.aip-member-island-grid{\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:12px;\n  padding:22px;\n}\n\n.aip-member-island-card{\n  position:relative;\n  isolation:isolate;\n  min-height:135px;\n  overflow:hidden;\n  padding:20px;\n  border:1px solid var(--aip-member-border);\n  border-radius:16px;\n  background:var(--aip-member-bg);\n  transition:.22s ease;\n}\n\n.aip-member-island-card::before{\n  content:\"\";\n  position:absolute;\n  inset:0 0 auto;\n  z-index:-1;\n  height:4px;\n  background:var(--island-color,var(--aip-member-primary));\n}\n\n.aip-member-island-card:hover{\n  transform:translateY(-4px);\n  border-color:rgba(9,69,40,.28);\n  box-shadow:0 12px 25px rgba(5,47,29,.09);\n}\n\n.aip-member-island-card strong{\n  display:block;\n  color:var(--aip-member-text);\n  font-size:30px;\n  font-weight:850;\n  letter-spacing:-.04em;\n  line-height:1;\n}\n\n.aip-member-island-card h4{\n  margin:12px 0 0;\n  color:var(--aip-member-text);\n  font-size:14px;\n}\n\n.aip-member-island-card p{\n  margin:5px 0 0;\n  color:var(--aip-member-muted);\n  font-size:11px;\n}\n\n.aip-member-island-progress{\n  height:6px;\n  margin-top:15px;\n  overflow:hidden;\n  border-radius:999px;\n  background:#E3EAE6;\n}\n\n.aip-member-island-progress span{\n  display:block;\n  width:0;\n  height:100%;\n  border-radius:inherit;\n  background:var(--island-color,var(--aip-member-primary));\n  transition:width 1s cubic-bezier(.22,.78,.28,1);\n}\n\n.aip-member-province-bars{\n  display:grid;\n  gap:12px;\n  padding:22px 24px 25px;\n}\n\n.aip-member-province-row{\n  display:grid;\n  grid-template-columns:minmax(120px,.46fr) minmax(160px,.54fr) 32px;\n  align-items:center;\n  gap:12px;\n}\n\n.aip-member-province-label{\n  min-width:0;\n  overflow:hidden;\n  color:var(--aip-member-text);\n  font-size:11px;\n  font-weight:700;\n  line-height:1.3;\n  text-overflow:ellipsis;\n  white-space:nowrap;\n}\n\n.aip-member-province-track{\n  height:9px;\n  overflow:hidden;\n  border-radius:999px;\n  background:#E6EDE9;\n}\n\n.aip-member-province-track span{\n  display:block;\n  width:0;\n  height:100%;\n  border-radius:inherit;\n  background:linear-gradient(90deg,var(--aip-member-primary),var(--aip-member-gold));\n  transition:width 1s cubic-bezier(.22,.78,.28,1);\n}\n\n.aip-member-province-value{\n  color:var(--aip-member-primary);\n  font-size:12px;\n  font-weight:850;\n  text-align:right;\n}\n\n.aip-member-chart-empty{\n  padding:38px 24px;\n  color:var(--aip-member-muted);\n  text-align:center;\n  font-size:13px;\n  line-height:1.65;\n}\n\n\/* MAP *\/\n.aip-member-map-section{\n  background:var(--aip-member-bg);\n}\n\n.aip-member-map-card{\n  width:min(920px,100%);\n  margin:38px auto 0;\n  overflow:hidden;\n  border:1px solid var(--aip-member-border);\n  border-radius:20px;\n  background:var(--aip-member-white);\n  box-shadow:var(--aip-member-shadow);\n}\n\n.aip-member-map-toolbar{\n  display:grid;\n  grid-template-columns:minmax(0,1fr) minmax(250px,.72fr);\n  align-items:center;\n  gap:16px;\n  padding:17px 18px;\n  border-bottom:1px solid var(--aip-member-border);\n  background:var(--aip-member-white);\n}\n\n.aip-member-map-status{\n  display:flex;\n  align-items:center;\n  gap:10px;\n  color:var(--aip-member-muted);\n  font-size:12px;\n  line-height:1.5;\n}\n\n.aip-member-map-status::before{\n  content:\"\";\n  width:9px;\n  height:9px;\n  flex:0 0 9px;\n  border-radius:50%;\n  background:var(--aip-member-gold);\n  box-shadow:0 0 0 5px rgba(216,178,92,.16);\n}\n\n.aip-member-map-select{\n  width:100%;\n  min-height:43px;\n  padding:0 38px 0 13px;\n  border:1px solid var(--aip-member-border);\n  border-radius:10px;\n  color:var(--aip-member-text);\n  background:var(--aip-member-white);\n  font-family:inherit;\n  font-size:12px;\n  outline:none;\n}\n\n.aip-member-map-select:focus{\n  border-color:var(--aip-member-primary);\n  box-shadow:0 0 0 4px rgba(9,69,40,.10);\n}\n\n.aip-member-map-frame{\n  position:relative;\n  width:100%;\n  aspect-ratio:16\/8.4;\n  min-height:360px;\n  max-height:480px;\n  background:\n    radial-gradient(circle at 50% 35%,rgba(216,178,92,.12),transparent 25%),\n    linear-gradient(145deg,var(--aip-member-soft),#F8FAF9);\n}\n\n.aip-member-map-frame iframe{\n  width:100%;\n  height:100%;\n  min-height:360px;\n  border:0;\n}\n\n.aip-member-map-loading{\n  position:absolute;\n  inset:0;\n  display:grid;\n  place-items:center;\n  padding:36px;\n  color:var(--aip-member-muted);\n  background:var(--aip-member-bg);\n  text-align:center;\n  font-size:13px;\n  line-height:1.7;\n}\n\n.aip-member-map-footer{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:16px;\n  padding:14px 18px;\n  border-top:1px solid var(--aip-member-border);\n  background:var(--aip-member-white);\n}\n\n.aip-member-map-current{\n  min-width:0;\n  color:var(--aip-member-muted);\n  font-size:11px;\n  line-height:1.5;\n}\n\n.aip-member-map-current strong{\n  display:block;\n  overflow:hidden;\n  color:var(--aip-member-text);\n  font-size:12px;\n  text-overflow:ellipsis;\n  white-space:nowrap;\n}\n\n.aip-member-map-external{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  min-height:38px;\n  padding:0 13px;\n  border:1px solid var(--aip-member-primary);\n  border-radius:9px;\n  color:var(--aip-member-primary)!important;\n  background:var(--aip-member-white);\n  text-decoration:none!important;\n  font-size:10px;\n  font-weight:780;\n  white-space:nowrap;\n}\n\n.aip-member-map-external:hover{\n  color:var(--aip-member-white)!important;\n  background:var(--aip-member-primary);\n}\n\n@media(max-width:720px){\n  .aip-member-map-toolbar{\n    grid-template-columns:1fr;\n  }\n\n  .aip-member-map-frame{\n    aspect-ratio:4\/3;\n    min-height:330px;\n  }\n\n  .aip-member-map-frame iframe{\n    min-height:330px;\n  }\n\n  .aip-member-map-footer{\n    align-items:flex-start;\n    flex-direction:column;\n  }\n\n  .aip-member-map-external{\n    width:100%;\n  }\n}\n\n\/* DIRECTORY *\/\n.aip-member-toolbar{\n  display:grid;\n  grid-template-columns:minmax(260px,1fr) minmax(190px,.54fr) minmax(165px,.42fr) minmax(165px,.42fr);\n  gap:13px;\n  margin-top:38px;\n}\n\n.aip-member-search-wrap{\n  position:relative;\n}\n\n.aip-member-search-icon{\n  position:absolute;\n  top:50%;\n  left:15px;\n  width:20px;\n  height:20px;\n  transform:translateY(-50%);\n  color:var(--aip-member-primary);\n  pointer-events:none;\n}\n\n.aip-member-input,\n.aip-member-select{\n  width:100%;\n  min-height:50px;\n  border:1px solid var(--aip-member-border);\n  border-radius:12px;\n  color:var(--aip-member-text);\n  background:var(--aip-member-white);\n  font-family:inherit;\n  font-size:14px;\n  outline:none;\n}\n\n.aip-member-input{\n  padding:0 15px 0 44px;\n}\n\n.aip-member-select{\n  padding:0 38px 0 14px;\n}\n\n.aip-member-input:focus,\n.aip-member-select:focus{\n  border-color:var(--aip-member-primary);\n  box-shadow:0 0 0 4px rgba(9,69,40,.10);\n}\n\n.aip-member-result-bar{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:20px;\n  margin:25px 0 20px;\n  color:var(--aip-member-muted);\n  font-size:13px;\n}\n\n.aip-member-result-actions{\n  display:flex;\n  flex-wrap:wrap;\n  align-items:center;\n  gap:8px;\n}\n\n.aip-member-view-button,\n.aip-member-reset{\n  min-height:38px;\n  padding:0 13px;\n  border:1px solid var(--aip-member-border);\n  border-radius:10px;\n  color:var(--aip-member-muted);\n  background:var(--aip-member-white);\n  font-family:inherit;\n  font-size:11px;\n  font-weight:760;\n  cursor:pointer;\n}\n\n.aip-member-view-button.is-active{\n  color:var(--aip-member-white);\n  border-color:var(--aip-member-primary);\n  background:var(--aip-member-primary);\n}\n\n.aip-member-reset{\n  color:var(--aip-member-primary);\n  border-color:transparent;\n  background:transparent;\n}\n\n.aip-member-grid{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:18px;\n}\n\n.aip-member-card{\n  display:flex;\n  flex-direction:column;\n  min-width:0;\n  min-height:390px;\n  padding:24px;\n  border:1px solid var(--aip-member-border);\n  border-radius:18px;\n  background:var(--aip-member-white);\n  transition:.22s ease;\n}\n\n.aip-member-card:hover{\n  transform:translateY(-5px);\n  border-color:rgba(9,69,40,.30);\n  box-shadow:var(--aip-member-shadow-sm);\n}\n\n.aip-member-card-top{\n  display:flex;\n  align-items:flex-start;\n  justify-content:space-between;\n  gap:14px;\n}\n\n.aip-member-card-logo{\n  position:relative;\n  width:76px;\n  height:76px;\n  flex:0 0 76px;\n  display:grid;\n  place-items:center;\n  overflow:hidden;\n  border:1px solid var(--aip-member-border);\n  border-radius:18px;\n  background:var(--aip-member-white);\n  box-shadow:0 8px 19px rgba(5,47,29,.08);\n}\n\n.aip-member-card-logo img{\n  width:100%;\n  height:100%;\n  padding:8px;\n  object-fit:contain;\n}\n\n.aip-member-card-fallback{\n  position:absolute;\n  inset:0;\n  display:none;\n  place-items:center;\n  color:var(--aip-member-primary);\n  background:var(--aip-member-soft);\n  font-size:16px;\n  font-weight:850;\n}\n\n.aip-member-island-badge{\n  display:inline-flex;\n  max-width:145px;\n  padding:7px 10px;\n  border-radius:999px;\n  color:#765916;\n  background:var(--aip-member-gold-soft);\n  text-align:right;\n  font-size:10px;\n  font-weight:800;\n  line-height:1.35;\n  text-transform:uppercase;\n}\n\n.aip-member-card h3{\n  overflow-wrap:anywhere;\n  margin:21px 0 0;\n  color:var(--aip-member-text);\n  font-size:18px;\n  line-height:1.5;\n}\n\n.aip-member-card-province{\n  display:flex;\n  align-items:center;\n  gap:8px;\n  margin:11px 0 0;\n  color:var(--aip-member-primary);\n  font-size:12px;\n  font-weight:740;\n  line-height:1.5;\n}\n\n.aip-member-card-province svg{\n  width:17px;\n  height:17px;\n  flex:0 0 17px;\n}\n\n.aip-member-card-address{\n  margin:15px 0 0;\n  padding-top:15px;\n  border-top:1px solid var(--aip-member-border);\n  color:var(--aip-member-muted);\n  font-size:12px;\n  line-height:1.68;\n}\n\n.aip-member-card-actions{\n  display:grid;\n  grid-template-columns:1fr 1fr;\n  gap:9px;\n  margin-top:auto;\n  padding-top:22px;\n}\n\n.aip-member-card-button{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  min-height:42px;\n  padding:0 11px;\n  border:1px solid var(--aip-member-primary);\n  border-radius:10px;\n  color:var(--aip-member-primary)!important;\n  background:var(--aip-member-white);\n  text-decoration:none!important;\n  font-family:inherit;\n  font-size:10px;\n  font-weight:780;\n  cursor:pointer;\n}\n\n.aip-member-card-button-primary{\n  color:var(--aip-member-white)!important;\n  background:var(--aip-member-primary);\n}\n\n\/* TABLE *\/\n.aip-member-table-view[hidden],\n.aip-member-grid[hidden]{\n  display:none!important;\n}\n\n.aip-member-table-wrap{\n  overflow-x:auto;\n  border:1px solid var(--aip-member-border);\n  border-radius:18px;\n  background:var(--aip-member-white);\n  box-shadow:var(--aip-member-shadow-sm);\n}\n\n.aip-member-table{\n  width:100%;\n  min-width:980px;\n  border-collapse:collapse;\n}\n\n.aip-member-table th{\n  padding:15px 16px;\n  color:var(--aip-member-white);\n  background:var(--aip-member-primary);\n  text-align:left;\n  font-size:11px;\n  font-weight:780;\n  line-height:1.4;\n}\n\n.aip-member-table td{\n  padding:15px 16px;\n  border-bottom:1px solid var(--aip-member-border);\n  color:var(--aip-member-muted);\n  font-size:12px;\n  line-height:1.6;\n  vertical-align:top;\n}\n\n.aip-member-table tbody tr:last-child td{\n  border-bottom:0;\n}\n\n.aip-member-table tbody tr:hover{\n  background:var(--aip-member-bg);\n}\n\n.aip-member-table td strong{\n  color:var(--aip-member-text);\n  font-size:13px;\n}\n\n.aip-member-table-map{\n  color:var(--aip-member-primary)!important;\n  text-decoration:none!important;\n  font-weight:750;\n}\n\n\/* STATES *\/\n.aip-member-state{\n  grid-column:1\/-1;\n  padding:43px;\n  border:1px dashed var(--aip-member-border);\n  border-radius:17px;\n  color:var(--aip-member-muted);\n  background:var(--aip-member-white);\n  text-align:center;\n  font-size:14px;\n  line-height:1.75;\n}\n\n.aip-member-state strong{\n  display:block;\n  margin-bottom:7px;\n  color:var(--aip-member-text);\n  font-size:17px;\n}\n\n.aip-member-loading{\n  display:inline-flex;\n  gap:5px;\n  margin-top:13px;\n}\n\n.aip-member-loading span{\n  width:7px;\n  height:7px;\n  border-radius:50%;\n  background:var(--aip-member-primary);\n  animation:aipMemberPulse 1.15s infinite ease-in-out;\n}\n\n.aip-member-loading span:nth-child(2){animation-delay:.16s}\n.aip-member-loading span:nth-child(3){animation-delay:.32s}\n\n@keyframes aipMemberPulse{\n  0%,80%,100%{opacity:.25;transform:scale(.8)}\n  40%{opacity:1;transform:scale(1)}\n}\n\n\/* CTA *\/\n.aip-member-cta{\n  padding-top:0;\n  background:var(--aip-member-bg);\n}\n\n.aip-member-cta-card{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:38px;\n  padding:38px 42px;\n  border:1px solid var(--aip-member-border);\n  border-radius:20px;\n  background:var(--aip-member-white);\n  box-shadow:var(--aip-member-shadow-sm);\n}\n\n.aip-member-cta-card h2{\n  margin:0;\n  color:var(--aip-member-text);\n  font-size:clamp(26px,3.2vw,38px);\n  letter-spacing:-.03em;\n  line-height:1.2;\n}\n\n.aip-member-cta-card p{\n  margin:10px 0 0;\n  color:var(--aip-member-muted);\n  font-size:15px;\n  line-height:1.7;\n}\n\n.aip-member-cta-button{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  min-height:50px;\n  padding:0 22px;\n  border:1px solid var(--aip-member-primary);\n  border-radius:11px;\n  color:var(--aip-member-white)!important;\n  background:var(--aip-member-primary);\n  text-decoration:none!important;\n  font-size:15px;\n  font-weight:760;\n  transition:.22s ease;\n}\n\n.aip-member-cta-button:hover{\n  transform:translateY(-2px);\n  background:var(--aip-member-primary-2);\n}\n\n@media(max-width:1080px){\n  .aip-member-grid{\n    grid-template-columns:repeat(2,minmax(0,1fr));\n  }\n\n  .aip-member-toolbar{\n    grid-template-columns:1fr 1fr;\n  }\n\n  .aip-member-search-wrap{\n    grid-column:1\/-1;\n  }\n}\n\n@media(max-width:920px){\n  .aip-member-hero-grid,\n  .aip-member-distribution-grid{\n    grid-template-columns:1fr;\n  }\n\n  .aip-member-hero-grid{\n    gap:38px;\n    padding:68px 0;\n  }\n\n  .aip-member-hero-panel{\n    max-width:620px;\n  }\n\n  .aip-member-section{\n    padding:68px 0;\n  }\n}\n\n@media(max-width:680px){\n  :root{\n    --aip-member-header-offset:105px;\n  }\n\n  .aip-member-container{\n    width:min(var(--aip-member-container),calc(100% - 30px));\n  }\n\n  .aip-member-section{\n    padding:56px 0;\n  }\n\n  .aip-member-hero-grid{\n    padding:52px 0;\n  }\n\n  .aip-member-hero h1{\n    font-size:clamp(38px,11vw,50px);\n  }\n\n  .aip-member-hero-text{\n    font-size:16px;\n  }\n\n  .aip-member-toolbar{\n    grid-template-columns:1fr;\n  }\n\n  .aip-member-search-wrap{\n    grid-column:auto;\n  }\n\n  .aip-member-result-bar{\n    align-items:flex-start;\n    flex-direction:column;\n  }\n\n  .aip-member-grid,\n  .aip-member-island-grid{\n    grid-template-columns:1fr;\n  }\n\n  .aip-member-province-row{\n    grid-template-columns:minmax(105px,.46fr) minmax(100px,.54fr) 28px;\n    gap:8px;\n  }\n\n  .aip-member-card-actions{\n    grid-template-columns:1fr;\n  }\n\n\n\n  .aip-member-cta-card{\n    flex-direction:column;\n    align-items:flex-start;\n    padding:30px 24px;\n  }\n\n  .aip-member-cta-button{\n    width:100%;\n  }\n}\n<\/style>\n\n<main class=\"aip-member-page\" id=\"aipMemberPage\">\n\n  <header class=\"aip-member-hero\">\n    <div class=\"aip-member-container aip-member-hero-grid\">\n      <div>\n        <nav class=\"aip-member-breadcrumb\" aria-label=\"Breadcrumb\">\n          <a href=\"https:\/\/aipnemaptma.org\/\">Beranda<\/a>\n          <span>\/<\/span>\n          <span>Institusi Anggota<\/span>\n        <\/nav>\n\n        <div class=\"aip-member-hero-badge\">\n          Jejaring Pendidikan Keperawatan PTMA\n        <\/div>\n\n        <h1>\n          Institusi Anggota <span>AIPNEMA<\/span>\n        <\/h1>\n\n        <p class=\"aip-member-hero-text\">\n          Jejaring institusi pendidikan keperawatan Muhammadiyah dan \u2018Aisyiyah\n          yang bersinergi untuk meningkatkan mutu pendidikan, pelayanan,\n          penelitian, dan pengabdian kepada masyarakat.\n        <\/p>\n      <\/div>\n\n      <aside class=\"aip-member-hero-panel\">\n        <div class=\"aip-member-logo-wrap\">\n          <img fetchpriority=\"high\" decoding=\"async\"\n            src=\"https:\/\/aipnemaptma.org\/wp-content\/uploads\/2023\/07\/logo-aipnema2.png\"\n            alt=\"Logo AIPNEMA\"\n            width=\"500\"\n            height=\"150\"\n            loading=\"eager\"\n          >\n        <\/div>\n\n        <p>\n          Temukan institusi anggota berdasarkan nama, provinsi, pulau,\n          serta lokasi kampus.\n        <\/p>\n\n        <div class=\"aip-member-stat-grid\">\n          <div class=\"aip-member-stat\">\n            <strong id=\"aipMemberTotal\">\u2013<\/strong>\n            <span>Institusi anggota<\/span>\n          <\/div>\n\n          <div class=\"aip-member-stat\">\n            <strong id=\"aipMemberProvinceCount\">\u2013<\/strong>\n            <span>Provinsi<\/span>\n          <\/div>\n\n          <div class=\"aip-member-stat\">\n            <strong id=\"aipMemberIslandCount\">\u2013<\/strong>\n            <span>Pulau\/wilayah<\/span>\n          <\/div>\n\n          <div class=\"aip-member-stat\">\n            <strong id=\"aipMemberAddressCount\">\u2013<\/strong>\n            <span>Alamat tersedia<\/span>\n          <\/div>\n        <\/div>\n      <\/aside>\n    <\/div>\n  <\/header>\n\n  <section class=\"aip-member-section aip-member-distribution\" id=\"sebaran-institusi\">\n    <div class=\"aip-member-container\">\n      <p class=\"aip-member-kicker\">Sebaran Institusi<\/p>\n\n      <h2 class=\"aip-member-heading\">\n        Jejaring anggota tersebar di berbagai wilayah Indonesia.\n      <\/h2>\n\n      <p class=\"aip-member-lead\">\n        Ringkasan ini memperlihatkan jumlah institusi berdasarkan pulau\n        dan provinsi.\n      <\/p>\n\n      <div class=\"aip-member-distribution-grid\">\n        <article class=\"aip-member-panel\">\n          <div class=\"aip-member-panel-head\">\n            <h3>Komposisi berdasarkan pulau<\/h3>\n            <p>Jumlah dan persentase institusi pada setiap wilayah.<\/p>\n          <\/div>\n\n          <div class=\"aip-member-island-grid\" id=\"aipMemberIslandSummary\">\n            <div class=\"aip-member-chart-empty\">\n              Memuat sebaran institusi\u2026\n            <\/div>\n          <\/div>\n        <\/article>\n\n        <article class=\"aip-member-panel\">\n          <div class=\"aip-member-panel-head\">\n            <h3>Sebaran berdasarkan provinsi<\/h3>\n            <p>Provinsi dengan jumlah institusi anggota terbanyak.<\/p>\n          <\/div>\n\n          <div class=\"aip-member-province-bars\" id=\"aipMemberProvinceSummary\">\n            <div class=\"aip-member-chart-empty\">\n              Memuat sebaran provinsi\u2026\n            <\/div>\n          <\/div>\n        <\/article>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aip-member-section aip-member-map-section\" id=\"peta-institusi\">\n    <div class=\"aip-member-container\">\n      <p class=\"aip-member-kicker\">Peta Lokasi<\/p>\n\n      <h2 class=\"aip-member-heading\">\n        Lokasi institusi anggota AIPNEMA.\n      <\/h2>\n\n      <p class=\"aip-member-lead\">\n        Peta awal menampilkan wilayah Indonesia. Pilih nama institusi\n        untuk memperbesar lokasi kampus secara otomatis.\n      <\/p>\n\n      <div class=\"aip-member-map-card\">\n        <div class=\"aip-member-map-toolbar\">\n          <div class=\"aip-member-map-status\" id=\"aipMemberMapStatus\">\n            Peta menampilkan wilayah Indonesia\n          <\/div>\n\n          <select\n            class=\"aip-member-map-select\"\n            id=\"aipMemberMapSelect\"\n            aria-label=\"Pilih institusi untuk ditampilkan pada peta\"\n          >\n            <option value=\"\">Pilih institusi anggota<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"aip-member-map-frame\">\n          <div class=\"aip-member-map-loading\" id=\"aipMemberMapLoading\">\n            Peta sedang disiapkan.\n          <\/div>\n\n          <iframe\n            id=\"aipMemberMapFrame\"\n            title=\"Peta lokasi institusi anggota AIPNEMA\"\n            loading=\"lazy\"\n            referrerpolicy=\"no-referrer-when-downgrade\"\n            allowfullscreen\n          ><\/iframe>\n        <\/div>\n\n        <div class=\"aip-member-map-footer\">\n          <div class=\"aip-member-map-current\">\n            Lokasi saat ini\n            <strong id=\"aipMemberMapCurrent\">\n              Indonesia\n            <\/strong>\n          <\/div>\n\n          <a\n            class=\"aip-member-map-external\"\n            id=\"aipMemberMapExternal\"\n            href=\"https:\/\/www.google.com\/maps\/search\/?api=1&query=Indonesia\"\n            target=\"_blank\"\n            rel=\"noopener\"\n          >\n            Buka di Google Maps\n          <\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aip-member-section aip-member-section-soft\" id=\"daftar-institusi\">\n    <div class=\"aip-member-container\">\n      <p class=\"aip-member-kicker\">Direktori Anggota<\/p>\n\n      <h2 class=\"aip-member-heading\">\n        Daftar institusi anggota\n      <\/h2>\n\n      <div class=\"aip-member-toolbar\">\n        <div class=\"aip-member-search-wrap\">\n          <svg class=\"aip-member-search-icon\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n            <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"2\"\/>\n            <path d=\"M20 20l-3.5-3.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/>\n          <\/svg>\n\n          <input\n            class=\"aip-member-input\"\n            id=\"aipMemberSearch\"\n            type=\"search\"\n            placeholder=\"Cari institusi, provinsi, pulau, atau alamat\u2026\"\n            autocomplete=\"off\"\n          >\n        <\/div>\n\n        <select class=\"aip-member-select\" id=\"aipMemberProvince\">\n          <option value=\"\">Semua provinsi<\/option>\n        <\/select>\n\n        <select class=\"aip-member-select\" id=\"aipMemberIsland\">\n          <option value=\"\">Semua pulau<\/option>\n        <\/select>\n\n        <select class=\"aip-member-select\" id=\"aipMemberSort\">\n          <option value=\"name-asc\" selected>Nama A\u2013Z<\/option>\n          <option value=\"name-desc\">Nama Z\u2013A<\/option>\n          <option value=\"province\">Berdasarkan provinsi<\/option>\n        <\/select>\n      <\/div>\n\n      <div class=\"aip-member-result-bar\">\n        <span id=\"aipMemberResultText\">Memuat data institusi\u2026<\/span>\n\n        <div class=\"aip-member-result-actions\">\n          <button\n            class=\"aip-member-view-button is-active\"\n            id=\"aipMemberCardView\"\n            type=\"button\"\n          >\n            Tampilan Kartu\n          <\/button>\n\n          <button\n            class=\"aip-member-view-button\"\n            id=\"aipMemberTableViewButton\"\n            type=\"button\"\n          >\n            Tampilan Tabel\n          <\/button>\n\n          <button\n            class=\"aip-member-reset\"\n            id=\"aipMemberReset\"\n            type=\"button\"\n          >\n            Reset\n          <\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"aip-member-grid\" id=\"aipMemberGrid\" aria-live=\"polite\">\n        <div class=\"aip-member-state\">\n          <strong>Memuat daftar institusi\u2026<\/strong>\n          Mohon menunggu beberapa saat.\n          <span class=\"aip-member-loading\" aria-hidden=\"true\">\n            <span><\/span><span><\/span><span><\/span>\n          <\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"aip-member-table-view\" id=\"aipMemberTableView\" hidden>\n        <div class=\"aip-member-table-wrap\">\n          <table class=\"aip-member-table\">\n            <thead id=\"aipMemberTableHead\"><\/thead>\n            <tbody id=\"aipMemberTableBody\"><\/tbody>\n          <\/table>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aip-member-section aip-member-cta\">\n    <div class=\"aip-member-container\">\n      <div class=\"aip-member-cta-card\">\n        <div>\n          <h2>Data institusi perlu diperbarui?<\/h2>\n\n          <p>\n            Sampaikan perubahan nama institusi, logo, provinsi, atau alamat\n            kampus kepada sekretariat AIPNEMA.\n          <\/p>\n        <\/div>\n\n        <a\n          class=\"aip-member-cta-button\"\n          href=\"https:\/\/aipnemaptma.org\/kontak\/\"\n        >\n          Hubungi Sekretariat\n        <\/a>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<\/main>\n<script>\n(function(){\n  const SHEET_ID =\n    '1EcAqkyAwy0oKATiEoVkYaIS9Vlqpvdh2bcwQZarEW9w';\n  const SHEET_GID = '0';\n\n  const SHEET_BASE =\n    'https:\/\/docs.google.com\/spreadsheets\/d\/' +\n    SHEET_ID +\n    '\/gviz\/tq';\n\n  const FALLBACK_LOGO =\n    'https:\/\/aipnemaptma.org\/wp-content\/uploads\/2023\/07\/logo-aipnema2.png';\n\n  const FIELD_ALIASES = {\n    name:[\n      'nama institusi','institusi','nama perguruan tinggi',\n      'perguruan tinggi','universitas','institution name'\n    ],\n    logo:[\n      'logo','logo institusi','url logo','link logo',\n      'gambar logo','image','logo url'\n    ],\n    province:[\n      'provinsi','province'\n    ],\n    island:[\n      'pulau','wilayah pulau','island','region'\n    ],\n    address:[\n      'alamat','alamat institusi','alamat kampus',\n      'lokasi kampus','address'\n    ],\n    website:[\n      'website','website institusi','situs','url website',\n      'link website','official website'\n    ]\n  };\n\n  const pageElement = document.getElementById('aipMemberPage');\n  const gridElement = document.getElementById('aipMemberGrid');\n  const tableViewElement = document.getElementById('aipMemberTableView');\n  const tableHeadElement = document.getElementById('aipMemberTableHead');\n  const tableBodyElement = document.getElementById('aipMemberTableBody');\n\n  const searchElement = document.getElementById('aipMemberSearch');\n  const provinceElement = document.getElementById('aipMemberProvince');\n  const islandElement = document.getElementById('aipMemberIsland');\n  const sortElement = document.getElementById('aipMemberSort');\n  const resetElement = document.getElementById('aipMemberReset');\n\n  const resultTextElement =\n    document.getElementById('aipMemberResultText');\n  const cardViewElement =\n    document.getElementById('aipMemberCardView');\n  const tableViewButtonElement =\n    document.getElementById('aipMemberTableViewButton');\n\n  const totalElement = document.getElementById('aipMemberTotal');\n  const provinceCountElement =\n    document.getElementById('aipMemberProvinceCount');\n  const islandCountElement =\n    document.getElementById('aipMemberIslandCount');\n  const addressCountElement =\n    document.getElementById('aipMemberAddressCount');\n\n  const islandSummaryElement =\n    document.getElementById('aipMemberIslandSummary');\n  const provinceSummaryElement =\n    document.getElementById('aipMemberProvinceSummary');\n\n  const mapFrameElement =\n    document.getElementById('aipMemberMapFrame');\n  const mapLoadingElement =\n    document.getElementById('aipMemberMapLoading');\n  const mapStatusElement =\n    document.getElementById('aipMemberMapStatus');\n  const mapSelectElement =\n    document.getElementById('aipMemberMapSelect');\n  const mapCurrentElement =\n    document.getElementById('aipMemberMapCurrent');\n  const mapExternalElement =\n    document.getElementById('aipMemberMapExternal');\n\n  let headers = [];\n  let records = [];\n  let viewMode = 'card';\n\n  let keys = {\n    name:null,\n    logo:null,\n    province:null,\n    island:null,\n    address:null,\n    website:null\n  };\n\n  const ISLAND_COLORS = [\n    '#094528',\n    '#1E6292',\n    '#6F5BD3',\n    '#D8B25C',\n    '#E47B2B',\n    '#B7486A',\n    '#248B82'\n  ];\n\n\n\n  function setHeaderOffset(){\n    if(!pageElement) return;\n\n    const header =\n      document.getElementById('aipnemaSiteHeader') ||\n      document.querySelector('#masthead, .site-header');\n\n    if(!header) return;\n\n    const style = window.getComputedStyle(header);\n    const overlay =\n      ['absolute','fixed','sticky'].includes(style.position);\n\n    pageElement.style.paddingTop =\n      overlay ? header.offsetHeight + 'px' : '0px';\n\n    pageElement.style.setProperty(\n      '--aip-member-header-offset',\n      (header.offsetHeight + 24) + 'px'\n    );\n  }\n\n  function normalize(value){\n    return String(value || '')\n      .trim()\n      .toLowerCase()\n      .normalize('NFD')\n      .replace(\/[\\u0300-\\u036f]\/g,'')\n      .replace(\/[^a-z0-9]+\/g,' ')\n      .replace(\/\\s+\/g,' ')\n      .trim();\n  }\n\n  function valueOf(value){\n    if(value === null || typeof value === 'undefined') return '';\n    return String(value).trim();\n  }\n\n  function escapeHtml(value){\n    return String(value || '')\n      .replace(\/&\/g,'&amp;')\n      .replace(\/<\/g,'&lt;')\n      .replace(\/>\/g,'&gt;')\n      .replace(\/\"\/g,'&quot;')\n      .replace(\/'\/g,'&#039;');\n  }\n\n  function ensureUrl(value){\n    const text = valueOf(value);\n\n    if(!text) return '';\n\n    if(\/^https?:\\\/\\\/\/i.test(text)){\n      return text;\n    }\n\n    if(\/^www\\.\/i.test(text)){\n      return 'https:\/\/' + text;\n    }\n\n    if(\/^[a-z0-9.-]+\\.[a-z]{2,}(\\\/.*)?$\/i.test(text)){\n      return 'https:\/\/' + text;\n    }\n\n    return '';\n  }\n\n  function driveImageUrl(value){\n    const url = ensureUrl(value);\n\n    if(!url) return '';\n\n    let match = url.match(\n      \/drive\\.google\\.com\\\/file\\\/d\\\/([^\/?#]+)\/\n    );\n\n    if(!match){\n      match = url.match(\/[?&]id=([^&#]+)\/);\n    }\n\n    if(match){\n      return 'https:\/\/drive.google.com\/uc?export=view&id=' +\n        match[1];\n    }\n\n    return url;\n  }\n\n  function initials(name){\n    const ignored = new Set([\n      'universitas','institut','teknologi','kesehatan','dan',\n      'sains','sekolah','tinggi','ilmu','politeknik',\n      'muhammadiyah','aisyiyah'\n    ]);\n\n    const words = valueOf(name)\n      .replace(\/[^A-Za-z\u00c0-\u00ff\\s]\/g,' ')\n      .split(\/\\s+\/)\n      .filter(Boolean)\n      .filter(function(word){\n        return !ignored.has(normalize(word));\n      });\n\n    return words.slice(0,2)\n      .map(function(word){\n        return word.charAt(0).toUpperCase();\n      })\n      .join('') || 'AI';\n  }\n\n  function mapsQuery(record){\n    return [\n      keys.address ? valueOf(record[keys.address]) : '',\n      valueOf(record[keys.name]),\n      keys.province ? valueOf(record[keys.province]) : ''\n    ].filter(Boolean).join(', ');\n  }\n\n  function mapsUrl(record){\n    return 'https:\/\/www.google.com\/maps\/search\/?api=1&query=' +\n      encodeURIComponent(mapsQuery(record));\n  }\n\n  function mapsEmbedUrl(record){\n    return 'https:\/\/www.google.com\/maps?q=' +\n      encodeURIComponent(mapsQuery(record)) +\n      '&output=embed';\n  }\n\n  function cellValue(cell){\n    if(!cell) return '';\n\n    if(cell.f !== null && typeof cell.f !== 'undefined'){\n      return valueOf(cell.f);\n    }\n\n    if(cell.v !== null && typeof cell.v !== 'undefined'){\n      return valueOf(cell.v);\n    }\n\n    return '';\n  }\n\n  function rowHeaderScore(row){\n    const aliases = Object.values(FIELD_ALIASES)\n      .flat()\n      .map(normalize);\n\n    return row.reduce(function(score,value){\n      const item = normalize(value);\n\n      if(!item) return score;\n\n      const matched = aliases.some(function(alias){\n        return item === alias ||\n          item.includes(alias) ||\n          alias.includes(item);\n      });\n\n      return score + (matched ? 1 : 0);\n    },0);\n  }\n\n  function uniqueHeaders(row){\n    const used = {};\n\n    return row.map(function(header,index){\n      let candidate =\n        valueOf(header) || 'Kolom ' + (index + 1);\n\n      const key = normalize(candidate) || 'kolom';\n\n      used[key] = (used[key] || 0) + 1;\n\n      if(used[key] > 1){\n        candidate += ' ' + used[key];\n      }\n\n      return candidate;\n    });\n  }\n\n  function parseResponse(response){\n    if(!response || response.status === 'error'){\n      throw new Error('Data institusi belum dapat dibaca.');\n    }\n\n    const table = response.table;\n\n    if(\n      !table ||\n      !Array.isArray(table.cols) ||\n      !Array.isArray(table.rows)\n    ){\n      throw new Error('Format data belum dapat dikenali.');\n    }\n\n    const columnCount = table.cols.length;\n\n    const matrix = table.rows.map(function(row){\n      return Array.from({length:columnCount},function(_,index){\n        return cellValue(row.c ? row.c[index] : null);\n      });\n    });\n\n    if(!matrix.length){\n      throw new Error('Daftar institusi belum tersedia.');\n    }\n\n    let headerIndex = 0;\n    let headerScore = -1;\n\n    matrix.slice(0,15).forEach(function(row,index){\n      const score = rowHeaderScore(row);\n\n      if(score > headerScore){\n        headerScore = score;\n        headerIndex = index;\n      }\n    });\n\n    if(headerScore < 2){\n      headerIndex = matrix.findIndex(function(row){\n        return row.filter(Boolean).length >= 3;\n      });\n\n      if(headerIndex < 0) headerIndex = 0;\n    }\n\n    const parsedHeaders =\n      uniqueHeaders(matrix[headerIndex]);\n\n    const parsedRecords = matrix\n      .slice(headerIndex + 1)\n      .map(function(row){\n        const record = {};\n\n        parsedHeaders.forEach(function(header,index){\n          record[header] = valueOf(row[index]);\n        });\n\n        return record;\n      })\n      .filter(function(record){\n        return parsedHeaders.some(function(header){\n          return valueOf(record[header]);\n        });\n      });\n\n    return {\n      headers:parsedHeaders,\n      records:parsedRecords\n    };\n  }\n\n  function parseVisualizationText(text){\n    const match = String(text || '').match(\n      \/google\\.visualization\\.Query\\.setResponse\\(([\\s\\S]*)\\);?\\s*$\/\n    );\n\n    if(!match){\n      throw new Error('Respons data belum dapat diproses.');\n    }\n\n    return JSON.parse(match[1]);\n  }\n\n  function findHeader(aliases){\n    const normalizedAliases = aliases.map(normalize);\n\n    const exact = headers.find(function(header){\n      return normalizedAliases.includes(normalize(header));\n    });\n\n    if(exact) return exact;\n\n    return headers.find(function(header){\n      const item = normalize(header);\n\n      return normalizedAliases.some(function(alias){\n        return item.includes(alias) ||\n          alias.includes(item);\n      });\n    }) || null;\n  }\n\n  function configureFields(){\n    Object.keys(keys).forEach(function(key){\n      keys[key] = findHeader(FIELD_ALIASES[key]);\n    });\n\n    if(!keys.name){\n      keys.name = headers.find(function(header){\n        return normalize(header).includes('institusi');\n      }) || headers[1] || headers[0] || null;\n    }\n  }\n\n  function uniqueValues(key){\n    if(!key) return [];\n\n    return Array.from(\n      new Set(\n        records\n          .map(function(record){\n            return valueOf(record[key]);\n          })\n          .filter(Boolean)\n      )\n    ).sort(function(a,b){\n      return a.localeCompare(\n        b,\n        'id',\n        {sensitivity:'base',numeric:true}\n      );\n    });\n  }\n\n  function setOptions(element,values,defaultLabel){\n    element.innerHTML =\n      '<option value=\"\">' +\n      escapeHtml(defaultLabel) +\n      '<\/option>';\n\n    values.forEach(function(value){\n      element.insertAdjacentHTML(\n        'beforeend',\n        '<option value=\"' +\n        escapeHtml(value) +\n        '\">' +\n        escapeHtml(value) +\n        '<\/option>'\n      );\n    });\n  }\n\n  function populateFilters(){\n    setOptions(\n      provinceElement,\n      uniqueValues(keys.province),\n      'Semua provinsi'\n    );\n\n    setOptions(\n      islandElement,\n      uniqueValues(keys.island),\n      'Semua pulau'\n    );\n\n    provinceElement.hidden =\n      !(keys.province && uniqueValues(keys.province).length);\n\n    islandElement.hidden =\n      !(keys.island && uniqueValues(keys.island).length);\n  }\n\n  function updateStats(){\n    totalElement.textContent = records.length;\n\n    provinceCountElement.textContent =\n      keys.province\n        ? uniqueValues(keys.province).length\n        : '\u2013';\n\n    islandCountElement.textContent =\n      keys.island\n        ? uniqueValues(keys.island).length\n        : '\u2013';\n\n    addressCountElement.textContent =\n      keys.address\n        ? records.filter(function(record){\n            return valueOf(record[keys.address]);\n          }).length\n        : '\u2013';\n  }\n\n  function countBy(key){\n    const counts = new Map();\n\n    if(!key) return [];\n\n    records.forEach(function(record){\n      const label =\n        valueOf(record[key]) || 'Belum Diisi';\n\n      counts.set(label,(counts.get(label) || 0) + 1);\n    });\n\n    return Array.from(counts.entries())\n      .map(function(entry){\n        return {\n          label:entry[0],\n          count:entry[1],\n          percentage:records.length\n            ? (entry[1] \/ records.length) * 100\n            : 0\n        };\n      })\n      .sort(function(a,b){\n        if(a.count !== b.count) return b.count - a.count;\n\n        return a.label.localeCompare(\n          b.label,\n          'id',\n          {sensitivity:'base'}\n        );\n      });\n  }\n\n  function formatPercentage(value){\n    const rounded = Math.round(value * 10) \/ 10;\n\n    return Number.isInteger(rounded)\n      ? rounded + '%'\n      : rounded.toFixed(1).replace('.',',') + '%';\n  }\n\n  function renderDistribution(){\n    const islandData = countBy(keys.island);\n    const provinceData = countBy(keys.province).slice(0,10);\n\n    if(!islandData.length){\n      islandSummaryElement.innerHTML = `\n        <div class=\"aip-member-chart-empty\">\n          Data pulau belum tersedia.\n        <\/div>\n      `;\n    }else{\n      islandSummaryElement.innerHTML =\n        islandData.map(function(item,index){\n          const color =\n            ISLAND_COLORS[index % ISLAND_COLORS.length];\n\n          return `\n            <article\n              class=\"aip-member-island-card\"\n              style=\"--island-color:${color}\"\n            >\n              <strong>${item.count}<\/strong>\n              <h4>${escapeHtml(item.label)}<\/h4>\n              <p>${formatPercentage(item.percentage)} dari seluruh anggota<\/p>\n\n              <div class=\"aip-member-island-progress\">\n                <span\n                  data-progress=\"${Math.min(100,item.percentage)}\"\n                ><\/span>\n              <\/div>\n            <\/article>\n          `;\n        }).join('');\n    }\n\n    if(!provinceData.length){\n      provinceSummaryElement.innerHTML = `\n        <div class=\"aip-member-chart-empty\">\n          Data provinsi belum tersedia.\n        <\/div>\n      `;\n    }else{\n      const maximum = Math.max.apply(\n        null,\n        provinceData.map(function(item){return item.count;})\n      );\n\n      provinceSummaryElement.innerHTML =\n        provinceData.map(function(item){\n          const width =\n            maximum ? (item.count \/ maximum) * 100 : 0;\n\n          return `\n            <div class=\"aip-member-province-row\">\n              <span\n                class=\"aip-member-province-label\"\n                title=\"${escapeHtml(item.label)}\"\n              >\n                ${escapeHtml(item.label)}\n              <\/span>\n\n              <span class=\"aip-member-province-track\">\n                <span data-progress=\"${width}\"><\/span>\n              <\/span>\n\n              <strong class=\"aip-member-province-value\">\n                ${item.count}\n              <\/strong>\n            <\/div>\n          `;\n        }).join('');\n    }\n\n    window.requestAnimationFrame(function(){\n      window.requestAnimationFrame(function(){\n        document\n          .querySelectorAll('[data-progress]')\n          .forEach(function(element){\n            element.style.width =\n              element.dataset.progress + '%';\n          });\n      });\n    });\n  }\n\n  function logoMarkup(record,classPrefix){\n    const name = valueOf(record[keys.name]);\n    const logo =\n      keys.logo\n        ? driveImageUrl(record[keys.logo])\n        : '';\n\n    if(!logo){\n      return `\n        <div class=\"${classPrefix}\">\n          <span\n            class=\"${classPrefix === 'aip-member-card-logo'\n              ? 'aip-member-card-fallback'\n              : 'aip-member-map-fallback'}\"\n            style=\"display:grid\"\n          >\n            ${escapeHtml(initials(name))}\n          <\/span>\n        <\/div>\n      `;\n    }\n\n    const fallbackClass =\n      classPrefix === 'aip-member-card-logo'\n        ? 'aip-member-card-fallback'\n        : 'aip-member-map-fallback';\n\n    return `\n      <div class=\"${classPrefix}\">\n        <img decoding=\"async\"\n          src=\"${escapeHtml(logo)}\"\n          alt=\"Logo ${escapeHtml(name)}\"\n          loading=\"lazy\"\n          onerror=\"this.style.display='none';this.nextElementSibling.style.display='grid'\"\n        >\n        <span class=\"${fallbackClass}\">\n          ${escapeHtml(initials(name))}\n        <\/span>\n      <\/div>\n    `;\n  }\n\n  function googleMapEmbedUrl(query,zoom){\n    const safeQuery = valueOf(query) || 'Indonesia';\n    const safeZoom = Number.isFinite(zoom) ? zoom : 5;\n\n    return 'https:\/\/maps.google.com\/maps?q=' +\n      encodeURIComponent(safeQuery) +\n      '&z=' +\n      safeZoom +\n      '&output=embed';\n  }\n\n  function setDefaultMap(){\n    mapFrameElement.src =\n      googleMapEmbedUrl('Indonesia',5);\n\n    mapStatusElement.textContent =\n      'Peta menampilkan wilayah Indonesia';\n\n    mapCurrentElement.textContent = 'Indonesia';\n\n    mapExternalElement.href =\n      'https:\/\/www.google.com\/maps\/search\/?api=1&query=' +\n      encodeURIComponent('Indonesia');\n\n    mapSelectElement.value = '';\n    mapLoadingElement.hidden = true;\n  }\n\n  function populateMapSelect(){\n    mapSelectElement.innerHTML =\n      '<option value=\"\">Pilih institusi anggota<\/option>';\n\n    records\n      .slice()\n      .sort(function(a,b){\n        return valueOf(a[keys.name]).localeCompare(\n          valueOf(b[keys.name]),\n          'id',\n          {sensitivity:'base'}\n        );\n      })\n      .forEach(function(record){\n        const index = records.indexOf(record);\n\n        mapSelectElement.insertAdjacentHTML(\n          'beforeend',\n          '<option value=\"' +\n          index +\n          '\">' +\n          escapeHtml(valueOf(record[keys.name])) +\n          '<\/option>'\n        );\n      });\n  }\n\n  function showRecordOnMap(record,scrollToMap){\n    if(!record) return;\n\n    const name = valueOf(record[keys.name]);\n    const query = mapsQuery(record);\n\n    mapFrameElement.src =\n      googleMapEmbedUrl(query,15);\n\n    mapStatusElement.textContent =\n      'Peta memperbesar lokasi institusi terpilih';\n\n    mapCurrentElement.textContent = name;\n\n    mapExternalElement.href = mapsUrl(record);\n\n    const index = records.indexOf(record);\n\n    if(index >= 0){\n      mapSelectElement.value = String(index);\n    }\n\n    mapLoadingElement.hidden = true;\n\n    if(scrollToMap){\n      document\n        .getElementById('peta-institusi')\n        .scrollIntoView({behavior:'smooth',block:'start'});\n    }\n  }\n\n  function cardMarkup(record,index){\n    const name =\n      valueOf(record[keys.name]) ||\n      'Nama institusi belum dicantumkan';\n\n    const province =\n      keys.province\n        ? valueOf(record[keys.province])\n        : '';\n\n    const island =\n      keys.island\n        ? valueOf(record[keys.island])\n        : '';\n\n    const address =\n      keys.address\n        ? valueOf(record[keys.address])\n        : '';\n\n    return `\n      <article class=\"aip-member-card\">\n        <div class=\"aip-member-card-top\">\n          ${logoMarkup(record,'aip-member-card-logo')}\n\n          ${island\n            ? `\n              <span class=\"aip-member-island-badge\">\n                ${escapeHtml(island)}\n              <\/span>\n            `\n            : ''\n          }\n        <\/div>\n\n        <h3>${escapeHtml(name)}<\/h3>\n\n        ${province\n          ? `\n            <div class=\"aip-member-card-province\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n                <path d=\"M12 21s7-5.1 7-12a7 7 0 10-14 0c0 6.9 7 12 7 12z\" stroke=\"currentColor\" stroke-width=\"2\"\/>\n                <circle cx=\"12\" cy=\"9\" r=\"2.5\" stroke=\"currentColor\" stroke-width=\"2\"\/>\n              <\/svg>\n              <span>${escapeHtml(province)}<\/span>\n            <\/div>\n          `\n          : ''\n        }\n\n        <p class=\"aip-member-card-address\">\n          ${address\n            ? escapeHtml(address)\n            : 'Alamat kampus belum dicantumkan.'\n          }\n        <\/p>\n\n        <div class=\"aip-member-card-actions\">\n          <button\n            class=\"aip-member-card-button aip-member-card-button-primary\"\n            type=\"button\"\n            data-map-index=\"${index}\"\n          >\n            Tampilkan Peta\n          <\/button>\n\n          <a\n            class=\"aip-member-card-button\"\n            href=\"${escapeHtml(mapsUrl(record))}\"\n            target=\"_blank\"\n            rel=\"noopener\"\n          >\n            Buka Maps\n          <\/a>\n        <\/div>\n      <\/article>\n    `;\n  }\n\n  function filteredRecords(){\n    const term = normalize(searchElement.value);\n    const selectedProvince = provinceElement.value;\n    const selectedIsland = islandElement.value;\n\n    const filtered = records.filter(function(record){\n      const publicText = [\n        valueOf(record[keys.name]),\n        keys.province\n          ? valueOf(record[keys.province])\n          : '',\n        keys.island\n          ? valueOf(record[keys.island])\n          : '',\n        keys.address\n          ? valueOf(record[keys.address])\n          : ''\n      ].join(' ');\n\n      const matchesSearch =\n        !term || normalize(publicText).includes(term);\n\n      const matchesProvince =\n        !selectedProvince ||\n        valueOf(record[keys.province]) === selectedProvince;\n\n      const matchesIsland =\n        !selectedIsland ||\n        valueOf(record[keys.island]) === selectedIsland;\n\n      return matchesSearch &&\n        matchesProvince &&\n        matchesIsland;\n    });\n\n    const collator = new Intl.Collator('id',{\n      sensitivity:'base',\n      numeric:true\n    });\n\n    filtered.sort(function(a,b){\n      const nameA = valueOf(a[keys.name]);\n      const nameB = valueOf(b[keys.name]);\n\n      if(sortElement.value === 'name-desc'){\n        return collator.compare(nameB,nameA);\n      }\n\n      if(sortElement.value === 'province'){\n        const provinceCompare = collator.compare(\n          valueOf(a[keys.province]),\n          valueOf(b[keys.province])\n        );\n\n        if(provinceCompare !== 0){\n          return provinceCompare;\n        }\n      }\n\n      return collator.compare(nameA,nameB);\n    });\n\n    return filtered;\n  }\n\n  function renderTable(items){\n    tableHeadElement.innerHTML = `\n      <tr>\n        <th>Nama Institusi<\/th>\n        <th>Provinsi<\/th>\n        <th>Pulau<\/th>\n        <th>Alamat<\/th>\n        <th>Lokasi<\/th>\n      <\/tr>\n    `;\n\n    tableBodyElement.innerHTML = items.map(function(record){\n      const name = valueOf(record[keys.name]) || '\u2014';\n      const province =\n        keys.province\n          ? valueOf(record[keys.province]) || '\u2014'\n          : '\u2014';\n      const island =\n        keys.island\n          ? valueOf(record[keys.island]) || '\u2014'\n          : '\u2014';\n      const address =\n        keys.address\n          ? valueOf(record[keys.address]) || '\u2014'\n          : '\u2014';\n\n      return `\n        <tr>\n          <td><strong>${escapeHtml(name)}<\/strong><\/td>\n          <td>${escapeHtml(province)}<\/td>\n          <td>${escapeHtml(island)}<\/td>\n          <td>${escapeHtml(address)}<\/td>\n          <td>\n            <a\n              class=\"aip-member-table-map\"\n              href=\"${escapeHtml(mapsUrl(record))}\"\n              target=\"_blank\"\n              rel=\"noopener\"\n            >\n              Buka Maps\n            <\/a>\n          <\/td>\n        <\/tr>\n      `;\n    }).join('');\n  }\n\n  function render(){\n    const items = filteredRecords();\n\n    resultTextElement.textContent =\n      items.length +\n      ' dari ' +\n      records.length +\n      ' institusi ditampilkan';\n\n    if(!items.length){\n      gridElement.innerHTML = `\n        <div class=\"aip-member-state\">\n          <strong>Institusi tidak ditemukan.<\/strong>\n          Ubah kata kunci atau pilihan filter.\n        <\/div>\n      `;\n\n      tableHeadElement.innerHTML = '';\n      tableBodyElement.innerHTML = '';\n      return;\n    }\n\n    gridElement.innerHTML =\n      items.map(function(record,index){\n        return cardMarkup(record,index);\n      }).join('');\n\n    gridElement\n      .querySelectorAll('[data-map-index]')\n      .forEach(function(button){\n        button.addEventListener('click',function(){\n          const index = Number(button.dataset.mapIndex);\n          showRecordOnMap(items[index],true);\n        });\n      });\n\n    renderTable(items);\n  }\n\n  function setView(mode){\n    viewMode = mode;\n    const isCard = viewMode === 'card';\n\n    gridElement.hidden = !isCard;\n    tableViewElement.hidden = isCard;\n\n    cardViewElement.classList.toggle('is-active',isCard);\n    tableViewButtonElement.classList.toggle('is-active',!isCard);\n  }\n\n  function initializeData(parsed){\n    headers = parsed.headers;\n    records = parsed.records;\n\n    configureFields();\n\n    records = records.filter(function(record){\n      return valueOf(record[keys.name]);\n    });\n\n    if(!records.length){\n      throw new Error('Daftar institusi belum tersedia.');\n    }\n\n    populateFilters();\n    populateMapSelect();\n    updateStats();\n    renderDistribution();\n    setDefaultMap();\n    render();\n    setView('card');\n  }\n\n  function showError(error){\n    const message =\n      error && error.message\n        ? error.message\n        : 'Data institusi belum dapat dimuat.';\n\n    gridElement.innerHTML = `\n      <div class=\"aip-member-state\">\n        <strong>Data institusi belum dapat dimuat.<\/strong>\n        ${escapeHtml(message)}\n        Silakan hubungi administrator website.\n      <\/div>\n    `;\n\n    islandSummaryElement.innerHTML = `\n      <div class=\"aip-member-chart-empty\">\n        Sebaran institusi belum dapat ditampilkan.\n      <\/div>\n    `;\n\n    provinceSummaryElement.innerHTML = `\n      <div class=\"aip-member-chart-empty\">\n        Sebaran provinsi belum dapat ditampilkan.\n      <\/div>\n    `;\n\n    mapLoadingElement.textContent =\n      'Peta belum dapat ditampilkan karena data institusi belum tersedia.';\n    mapStatusElement.textContent =\n      'Peta belum tersedia';\n    mapCurrentElement.textContent =\n      'Tidak tersedia';\n\n    resultTextElement.textContent =\n      'Data institusi belum dapat dimuat';\n\n    totalElement.textContent = '\u2013';\n    provinceCountElement.textContent = '\u2013';\n    islandCountElement.textContent = '\u2013';\n    addressCountElement.textContent = '\u2013';\n  }\n\n  function visualizationUrl(includeCallback){\n    const parameters = new URLSearchParams();\n\n    parameters.set('gid',SHEET_GID);\n    parameters.set('headers','0');\n    parameters.set('_',String(Date.now()));\n\n    if(includeCallback){\n      parameters.set(\n        'tqx',\n        'out:json;responseHandler:aipnemaMemberReceive'\n      );\n    }else{\n      parameters.set('tqx','out:json');\n    }\n\n    return SHEET_BASE + '?' + parameters.toString();\n  }\n\n  function loadWithJsonp(){\n    return new Promise(function(resolve,reject){\n      const script = document.createElement('script');\n      let completed = false;\n\n      const timeout = window.setTimeout(function(){\n        if(completed) return;\n\n        completed = true;\n        script.remove();\n\n        reject(new Error(\n          'Waktu pemuatan data telah habis.'\n        ));\n      },15000);\n\n      window.aipnemaMemberReceive = function(response){\n        if(completed) return;\n\n        completed = true;\n        window.clearTimeout(timeout);\n        script.remove();\n        resolve(response);\n      };\n\n      script.onerror = function(){\n        if(completed) return;\n\n        completed = true;\n        window.clearTimeout(timeout);\n        script.remove();\n\n        reject(new Error(\n          'Data belum dapat dihubungi.'\n        ));\n      };\n\n      script.src = visualizationUrl(true);\n      document.head.appendChild(script);\n    });\n  }\n\n  async function loadData(){\n    try{\n      let responseObject;\n\n      try{\n        const response = await fetch(\n          visualizationUrl(false),\n          {cache:'no-store'}\n        );\n\n        if(!response.ok){\n          throw new Error('Permintaan data gagal.');\n        }\n\n        responseObject =\n          parseVisualizationText(await response.text());\n      }catch(fetchError){\n        responseObject = await loadWithJsonp();\n      }\n\n      initializeData(parseResponse(responseObject));\n    }catch(error){\n      showError(error);\n    }\n  }\n\n  searchElement.addEventListener('input',render);\n  provinceElement.addEventListener('change',render);\n  islandElement.addEventListener('change',render);\n  sortElement.addEventListener('change',render);\n\n  resetElement.addEventListener('click',function(){\n    searchElement.value = '';\n    provinceElement.value = '';\n    islandElement.value = '';\n    sortElement.value = 'name-asc';\n    render();\n  });\n\n  cardViewElement.addEventListener('click',function(){\n    setView('card');\n  });\n\n  tableViewButtonElement.addEventListener('click',function(){\n    setView('table');\n  });\n\n  mapSelectElement.addEventListener('change',function(){\n    const selectedIndex = Number(mapSelectElement.value);\n\n    if(mapSelectElement.value === ''){\n      setDefaultMap();\n      return;\n    }\n\n    if(\n      Number.isInteger(selectedIndex) &&\n      records[selectedIndex]\n    ){\n      showRecordOnMap(records[selectedIndex],false);\n    }\n  });\n\n  setHeaderOffset();\n  loadData();\n\n  window.addEventListener('load',setHeaderOffset);\n  window.addEventListener('resize',setHeaderOffset);\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Beranda \/ Institusi Anggota Jejaring Pendidikan Keperawatan PTMA Institusi Anggota AIPNEMA Jejaring institusi pendidikan keperawatan Muhammadiyah dan \u2018Aisyiyah yang bersinergi untuk meningkatkan mutu pendidikan, pelayanan, penelitian, dan pengabdian kepada masyarakat. Temukan institusi anggota berdasarkan nama, provinsi, pulau, serta lokasi kampus. \u2013 Institusi anggota \u2013 Provinsi \u2013 Pulau\/wilayah \u2013 Alamat tersedia Sebaran Institusi Jejaring anggota tersebar&#8230;<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"disable","_kad_post_title":"hide","_kad_post_layout":"fullwidth","_kad_post_sidebar_id":"","_kad_post_content_style":"unboxed","_kad_post_vertical_padding":"hide","_kad_post_feature":"hide","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-1715","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/pages\/1715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/comments?post=1715"}],"version-history":[{"count":16,"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/pages\/1715\/revisions"}],"predecessor-version":[{"id":1944,"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/pages\/1715\/revisions\/1944"}],"wp:attachment":[{"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/media?parent=1715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}