{"id":11,"date":"2026-04-05T19:33:02","date_gmt":"2026-04-05T19:33:02","guid":{"rendered":"https:\/\/emailarchive1.wpenginepowered.com\/?page_id=11"},"modified":"2026-04-06T20:54:15","modified_gmt":"2026-04-06T20:54:15","slug":"welcome","status":"publish","type":"page","link":"https:\/\/campaignemailarchive.com\/","title":{"rendered":"Welcome"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"11\" class=\"elementor elementor-11\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-98ba0c8 e-flex e-con-boxed e-con e-parent\" data-id=\"98ba0c8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4d720fa e-flex e-con-boxed e-con e-parent\" data-id=\"4d720fa\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1684b90 elementor-widget elementor-widget-shortcode\" data-id=\"1684b90\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<div id=\"na-wrap\">\n\n<!-- \u2500\u2500 STYLES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<style>\n\/* \u2500\u2500\u2500 Reset \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#na-wrap *, #na-wrap *::before, #na-wrap *::after {\n  box-sizing: border-box; margin: 0;\n}\n\n\/* \u2500\u2500\u2500 Tokens \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#na-wrap {\n  --c-primary:      #b71419;\n  --c-primary-dk:   #db322e;\n  --c-white:        #ffffff;\n  --c-surface:      #f9f9fa;\n  --c-surface-low:  #f3f3f4;\n  --c-surface-card: #ffffff;\n  --c-surface-con:  #eeeeef;\n  --c-surface-hi:   #e8e8e9;\n  --c-text:         #1a1c1d;\n  --c-text-2:       #5f5e5e;\n  --c-ghost:        rgba(228,190,185,0.25);\n  --c-outline:      #e4beb9;\n  --shadow-sm:      0 2px 12px rgba(26,28,29,0.05);\n  --shadow-card:    0 16px 40px rgba(183,20,25,0.07);\n  --r-card:         0.75rem;\n  --r-pill:         9999px;\n  --r-sm:           0.5rem;\n  --font-head:      'Plus Jakarta Sans', sans-serif;\n  --font-body:      'Inter', sans-serif;\n\n  font-family: var(--font-body);\n  color: var(--c-text);\n  background: var(--c-surface);\n  width: 100%;\n}\n\n\/* \u2500\u2500\u2500 Header fixes \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.elementor-location-header {\n  margin-top: 0 !important;\n}\n.elementor-location-header .elementor-container {\n  max-width: 1280px !important;\n  margin: 0 auto !important;\n  padding: 0 2rem !important;\n}\n\/* Fix: theme makes nav fixed+fullwidth, covering the logo *\/\n.elementor-location-header nav.elementor-nav-menu--main,\n.elementor-location-header .elementor-nav-menu--main.elementor-nav-menu__container {\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n  background: transparent !important;\n  backdrop-filter: none !important;\n  -webkit-backdrop-filter: none !important;\n  border: none !important;\n  box-shadow: none !important;\n  top: auto !important;\n  left: auto !important;\n  right: auto !important;\n  z-index: auto !important;\n}\n.elementor-location-header .elementor-widget-heading .elementor-heading-title {\n  color: #1a1c1d !important;\n  opacity: 1 !important;\n  font-weight: 900 !important;\n  font-size: 1.375rem !important;\n  font-family: 'Plus Jakarta Sans', sans-serif !important;\n  letter-spacing: -0.03em !important;\n}\n\n\/* \u2500\u2500\u2500 Filter bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.na-filter-bar {\n  width: 100%;\n  background: rgba(255,255,255,0.95);\n  backdrop-filter: blur(20px);\n  -webkit-backdrop-filter: blur(20px);\n  border: 1px solid var(--c-ghost);\n  border-left: none;\n  border-right: none;\n  padding: 0.75rem 0;\n  position: sticky;\n  top: 64px;\n  z-index: 40;\n}\nbody.admin-bar .na-filter-bar { top: 96px; }\n@media (max-width: 782px) { body.admin-bar .na-filter-bar { top: 110px; } }\n@media (max-width: 1024px) { .na-filter-bar { top: 56px; } body.admin-bar .na-filter-bar { top: 88px; } }\n\n.na-filter-inner {\n  max-width: 1280px;\n  margin: 0 auto;\n  padding: 0 2rem;\n  display: flex;\n  align-items: center;\n  gap: 0.625rem;\n}\n\n\/* Search *\/\n.na-search-wrap {\n  flex: 1;\n  min-width: 160px;\n  position: relative;\n}\n.na-search-icon {\n  position: absolute;\n  left: 0.875rem;\n  top: 50%;\n  transform: translateY(-50%);\n  display: flex;\n  align-items: center;\n  color: var(--c-text-2);\n  pointer-events: none;\n  z-index: 1;\n}\n.na-search-icon svg { width: 18px; height: 18px; }\n#na-wrap .na-filter-inner input[type=\"text\"] {\n  font-family: var(--font-body) !important;\n  font-size: 0.875rem !important;\n  color: var(--c-text) !important;\n  background: var(--c-white) !important;\n  border: 1px solid var(--c-outline) !important;\n  border-radius: var(--r-sm) !important;\n  padding: 0.5rem 0.875rem 0.5rem 2.5rem !important;\n  height: 38px !important;\n  width: 100% !important;\n  outline: none !important;\n  box-shadow: none !important;\n  transition: border-color 150ms, box-shadow 150ms !important;\n}\n#na-wrap .na-filter-inner input[type=\"text\"]:focus {\n  border-color: var(--c-primary) !important;\n  box-shadow: 0 0 0 3px rgba(183,20,25,0.08) !important;\n}\n#na-wrap input[type=\"text\"]::placeholder { color: #aaa !important; }\n\n\/* Selects *\/\n#na-wrap .na-filter-inner select {\n  font-family: var(--font-body) !important;\n  font-size: 0.875rem !important;\n  color: var(--c-text) !important;\n  background: var(--c-white) !important;\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%235f5e5e' stroke-width='1.5' fill='none' stroke-linecap='round'\/%3E%3C\/svg%3E\") !important;\n  background-repeat: no-repeat !important;\n  background-position: right 0.625rem center !important;\n  border: 1px solid var(--c-outline) !important;\n  border-radius: var(--r-sm) !important;\n  padding: 0.5rem 1.75rem 0.5rem 0.75rem !important;\n  height: 38px !important;\n  width: auto !important;\n  min-width: 120px;\n  max-width: 170px;\n  flex-shrink: 0;\n  outline: none !important;\n  appearance: none !important;\n  -webkit-appearance: none !important;\n  cursor: pointer;\n  box-shadow: none !important;\n  transition: border-color 150ms !important;\n}\n#na-wrap .na-filter-inner select:focus {\n  border-color: var(--c-primary) !important;\n  box-shadow: 0 0 0 3px rgba(183,20,25,0.08) !important;\n}\n\n\/* Buttons *\/\n#na-wrap .na-btn-primary {\n  font-family: var(--font-body) !important;\n  font-size: 0.875rem !important;\n  font-weight: 700 !important;\n  color: #fff !important;\n  background: linear-gradient(135deg, var(--c-primary) 0%, var(--c-primary-dk) 100%) !important;\n  border: none !important;\n  border-radius: var(--r-pill) !important;\n  padding: 0.5rem 1.5rem !important;\n  height: 38px !important;\n  cursor: pointer;\n  white-space: nowrap;\n  flex-shrink: 0;\n  box-shadow: none !important;\n  transition: transform 150ms, box-shadow 150ms !important;\n  line-height: 1 !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n}\n#na-wrap .na-btn-primary:hover { transform: translateY(-1px) !important; box-shadow: 0 6px 18px rgba(183,20,25,0.28) !important; }\n#na-wrap .na-btn-primary:active { transform: scale(0.97) !important; }\n\n#na-wrap .na-btn-ghost {\n  font-family: var(--font-body) !important;\n  font-size: 0.875rem !important;\n  font-weight: 500 !important;\n  color: var(--c-text-2) !important;\n  background: transparent !important;\n  border: 1px solid var(--c-outline) !important;\n  border-radius: var(--r-pill) !important;\n  padding: 0.5rem 1.25rem !important;\n  height: 38px !important;\n  cursor: pointer;\n  white-space: nowrap;\n  flex-shrink: 0;\n  box-shadow: none !important;\n  transition: border-color 150ms, color 150ms !important;\n  line-height: 1 !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n}\n#na-wrap .na-btn-ghost:hover { border-color: var(--c-primary) !important; color: var(--c-text) !important; }\n\n.na-filter-actions {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  flex-shrink: 0;\n}\n\n@media (max-width: 900px) {\n  .na-filter-inner { flex-wrap: wrap; }\n  .na-filter-inner select { min-width: 100px; }\n}\n\n\/* \u2500\u2500\u2500 Hero \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.na-hero {\n  max-width: 1280px;\n  margin: 0 auto;\n  padding: 3rem 2rem 1.5rem;\n}\n.na-hero h1 {\n  font-family: var(--font-head);\n  font-size: clamp(2rem, 3.5vw, 3.25rem);\n  font-weight: 900;\n  letter-spacing: -0.03em;\n  color: var(--c-text);\n  line-height: 1.05;\n  margin-bottom: 0.75rem;\n}\n.na-hero p {\n  font-size: 1rem;\n  color: var(--c-text-2);\n  max-width: 44ch;\n  line-height: 1.65;\n}\n\n\/* \u2500\u2500\u2500 Content \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.na-content {\n  max-width: 1280px;\n  margin: 0 auto;\n  padding: 1.5rem 2rem 4rem;\n}\n\n\/* \u2500\u2500\u2500 Section heading \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.na-section-heading {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  margin-bottom: 1.5rem;\n}\n.na-section-heading-left h2 {\n  font-family: var(--font-head);\n  font-size: 1.375rem;\n  font-weight: 800;\n  letter-spacing: -0.02em;\n  color: var(--c-text);\n}\n.na-accent-bar {\n  height: 3px;\n  width: 2rem;\n  background: var(--c-primary);\n  border-radius: 2px;\n  margin-top: 0.375rem;\n}\n.na-results-count {\n  font-size: 0.8125rem;\n  color: var(--c-text-2);\n}\n\n\/* \u2500\u2500\u2500 Grid \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.na-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1.5rem;\n}\n@media (max-width: 1024px) { .na-grid { grid-template-columns: repeat(2, 1fr); } }\n@media (max-width: 600px)  { .na-grid { grid-template-columns: 1fr; gap: 1rem; } }\n\n\/* \u2500\u2500\u2500 Card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.na-card {\n  background: var(--c-surface-card);\n  border-radius: var(--r-card);\n  overflow: hidden;\n  box-shadow: var(--shadow-sm);\n  border: 1px solid rgba(228,190,185,0.15);\n  cursor: pointer;\n  display: flex;\n  flex-direction: column;\n  transition: transform 280ms ease, box-shadow 280ms ease;\n}\n.na-card:hover {\n  transform: translateY(-3px);\n  box-shadow: var(--shadow-card);\n}\n\n\/* Thumbnail *\/\n.na-card-thumb {\n  height: 200px;\n  position: relative;\n  overflow: hidden;\n  flex-shrink: 0;\n  background: var(--c-surface-con);\n}\n.na-card-thumb-inner {\n  width: 100%;\n  height: 100%;\n  padding: 0.875rem;\n  display: flex;\n  align-items: flex-start;\n  transition: transform 450ms ease;\n}\n.na-card:hover .na-card-thumb-inner { transform: scale(1.03); }\n\n.na-card-thumb-img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  object-position: top center;\n  display: block;\n  border-radius: 4px;\n}\n\n.na-card-thumb-preview {\n  width: 100%;\n  height: 100%;\n  background: #fff;\n  border-radius: 4px;\n  box-shadow: 0 1px 8px rgba(0,0,0,0.10);\n  overflow: hidden;\n  display: flex;\n  flex-direction: column;\n  padding: 10px 12px;\n  gap: 4px;\n}\n.na-thumb-sender {\n  font-size: 5.5px;\n  color: #888;\n  line-height: 1.4;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.na-thumb-subject {\n  font-size: 7.5px;\n  font-weight: 800;\n  color: #111;\n  line-height: 1.3;\n  display: -webkit-box;\n  -webkit-line-clamp: 2;\n  -webkit-box-orient: vertical;\n  overflow: hidden;\n}\n.na-thumb-divider {\n  height: 0.5px;\n  background: #eee;\n  flex-shrink: 0;\n  margin: 1px 0;\n}\n.na-thumb-body {\n  font-size: 5.5px;\n  color: #555;\n  line-height: 1.55;\n  flex: 1;\n  overflow: hidden;\n}\n\n.na-card-thumb-overlay {\n  position: absolute;\n  inset: 0;\n  background: linear-gradient(to top, rgba(0,0,0,0.10) 0%, transparent 60%);\n  opacity: 0;\n  transition: opacity 280ms;\n  pointer-events: none;\n}\n.na-card:hover .na-card-thumb-overlay { opacity: 1; }\n\n\/* Card body *\/\n.na-card-body {\n  padding: 1rem 1.125rem 1.25rem;\n  flex: 1;\n  display: flex;\n  flex-direction: column;\n}\n.na-card-eyebrow {\n  display: inline-block;\n  align-self: flex-start;\n  font-family: var(--font-body);\n  font-size: 0.5625rem;\n  font-weight: 700;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--c-text-2);\n  background: var(--c-surface-hi);\n  border-radius: var(--r-pill);\n  padding: 0.2rem 0.625rem;\n  margin-bottom: 0.625rem;\n}\n.na-card-title {\n  font-family: var(--font-head);\n  font-size: 0.9375rem;\n  font-weight: 800;\n  letter-spacing: -0.015em;\n  color: var(--c-text);\n  line-height: 1.3;\n  margin-bottom: 0.25rem;\n  display: -webkit-box;\n  -webkit-line-clamp: 2;\n  -webkit-box-orient: vertical;\n  overflow: hidden;\n}\n.na-card-sender {\n  font-size: 0.8125rem;\n  color: var(--c-text-2);\n  margin-bottom: 0.625rem;\n}\n.na-card-meta {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.3rem;\n  margin-top: auto;\n  padding-top: 0.5rem;\n}\n.na-badge {\n  font-size: 0.5625rem;\n  font-weight: 700;\n  letter-spacing: 0.05em;\n  text-transform: uppercase;\n  padding: 0.175rem 0.5rem;\n  border-radius: var(--r-pill);\n}\n.na-badge-party-dem  { background: #dbeafe; color: #1d4ed8; }\n.na-badge-party-rep  { background: #fee2e2; color: #b91c1c; }\n.na-badge-party-ind  { background: var(--c-surface-con); color: var(--c-text-2); }\n.na-badge-state      { background: #d1fae5; color: #065f46; }\n.na-badge-sentiment  { background: #ede9fe; color: #5b21b6; }\n.na-badge-spam       { background: #fff1f2; color: #be123c; }\n.na-card-date {\n  font-size: 0.6875rem;\n  color: var(--c-text-2);\n  margin-top: 0.375rem;\n}\n\n\/* \u2500\u2500\u2500 States \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.na-loading {\n  grid-column: 1\/-1;\n  text-align: center;\n  padding: 5rem 2rem;\n  color: var(--c-text-2);\n  font-size: 0.875rem;\n}\n.na-loading-spinner {\n  width: 1.75rem;\n  height: 1.75rem;\n  border: 2px solid var(--c-surface-con);\n  border-top-color: var(--c-primary);\n  border-radius: 50%;\n  animation: na-spin 0.7s linear infinite;\n  margin: 0 auto 0.875rem;\n}\n@keyframes na-spin { to { transform: rotate(360deg); } }\n.na-no-results {\n  grid-column: 1\/-1;\n  text-align: center;\n  padding: 4rem 2rem;\n  color: var(--c-text-2);\n  background: var(--c-surface-card);\n  border-radius: var(--r-card);\n}\n\n\/* \u2500\u2500\u2500 Load more \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.na-load-more-wrap { text-align: center; margin-top: 2.5rem; }\n.na-btn-load-more {\n  font-family: var(--font-body);\n  font-size: 0.875rem;\n  font-weight: 600;\n  color: var(--c-primary);\n  background: var(--c-surface-card);\n  border: 1px solid var(--c-ghost);\n  border-radius: var(--r-pill);\n  padding: 0.75rem 2rem;\n  cursor: pointer;\n  transition: border-color 200ms, transform 200ms;\n}\n.na-btn-load-more:hover { border-color: var(--c-primary); transform: translateY(-1px); }\n\n\/* \u2500\u2500\u2500 Modal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.na-modal-overlay {\n  display: none;\n  position: fixed;\n  inset: 0;\n  background: rgba(26,28,29,0.5);\n  backdrop-filter: blur(4px);\n  z-index: 1000;\n  align-items: flex-start;\n  justify-content: center;\n  padding: 2rem 1rem;\n  overflow-y: auto;\n}\n.na-modal-overlay.open { display: flex; }\n.na-modal {\n  background: var(--c-surface);\n  border-radius: var(--r-card);\n  width: 100%;\n  max-width: 1100px;\n  box-shadow: 0 32px 80px rgba(26,28,29,0.18);\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  margin: auto;\n  animation: na-modal-in 250ms ease;\n}\n@keyframes na-modal-in {\n  from { opacity:0; transform:translateY(10px) scale(0.99); }\n  to   { opacity:1; transform:none; }\n}\n.na-modal-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1.125rem 1.5rem;\n  border-bottom: 1px solid var(--c-ghost);\n  background: var(--c-surface-card);\n  gap: 1rem;\n}\n.na-modal-header-left { flex: 1; min-width: 0; }\n.na-modal-org {\n  font-size: 0.625rem;\n  font-weight: 700;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--c-primary);\n  display: block;\n  margin-bottom: 0.2rem;\n}\n.na-modal-subject {\n  font-family: var(--font-head);\n  font-size: 1rem;\n  font-weight: 800;\n  letter-spacing: -0.02em;\n  color: var(--c-text);\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  display: block;\n}\n.na-modal-close {\n  width: 2rem; height: 2rem;\n  border: none;\n  background: var(--c-surface-low);\n  border-radius: 50%;\n  cursor: pointer;\n  display: flex; align-items: center; justify-content: center;\n  font-size: 0.875rem; font-weight: 400; line-height: 1;\n  color: var(--c-text-2);\n  flex-shrink: 0;\n  transition: background 150ms;\n}\n.na-modal-close:hover { background: var(--c-surface-con); }\n.na-modal-body { display: flex; min-height: 500px; }\n\n.na-preview-pane {\n  width: 60%;\n  background: var(--c-surface-low);\n  border-right: 1px solid var(--c-ghost);\n  display: flex; flex-direction: column;\n}\n.na-preview-toggle {\n  display: flex;\n  padding: 0.75rem 1.25rem;\n  border-bottom: 1px solid var(--c-ghost);\n  background: var(--c-surface-card);\n}\n.na-toggle-btn {\n  font-family: var(--font-body);\n  font-size: 0.75rem; font-weight: 600;\n  padding: 0.375rem 0.875rem;\n  border: 1px solid var(--c-ghost);\n  background: transparent;\n  color: var(--c-text-2);\n  cursor: pointer;\n  transition: background 150ms, color 150ms;\n}\n.na-toggle-btn:first-child { border-radius: var(--r-pill) 0 0 var(--r-pill); }\n.na-toggle-btn:last-child  { border-radius: 0 var(--r-pill) var(--r-pill) 0; border-left: none; }\n.na-toggle-btn.active { background: var(--c-primary); color: #fff; border-color: var(--c-primary); }\n.na-preview-content { flex: 1; overflow: auto; padding: 1.25rem; }\n.na-html-frame { width: 100%; border: none; background: #fff; display: block; min-height: 400px; border-radius: var(--r-sm); }\n.na-plain-text { font-family: var(--font-body); font-size: 0.8125rem; line-height: 1.75; color: var(--c-text-2); white-space: pre-wrap; background: var(--c-surface-card); border-radius: var(--r-sm); padding: 1.25rem; min-height: 400px; }\n\n.na-analysis-pane {\n  width: 40%;\n  padding: 1.5rem;\n  overflow-y: auto;\n  background: var(--c-surface-card);\n  display: flex; flex-direction: column; gap: 1.5rem;\n}\n.na-analysis-title { display: flex; align-items: center; gap: 0.5rem; }\n.na-analysis-title .na-icon { font-size: 1.375rem; line-height: 1; color: var(--c-primary); }\n.na-analysis-title h2 { font-family: var(--font-head); font-size: 1.375rem; font-weight: 900; letter-spacing: -0.025em; color: var(--c-text); }\n.na-analysis-section label { display: block; font-size: 0.5625rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #9ca3af; margin-bottom: 0.5rem; }\n.na-org-block { background: var(--c-surface-low); border-radius: var(--r-sm); border-left: 3px solid var(--c-primary); padding: 0.75rem 1rem; font-size: 0.875rem; font-weight: 600; color: var(--c-text); }\n.na-summary-text { font-size: 0.875rem; color: var(--c-text-2); line-height: 1.7; }\n.na-bento { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; }\n.na-bento-item { background: var(--c-surface-low); border-radius: var(--r-sm); padding: 0.625rem; }\n.na-bento-item label { font-size: 0.5rem; font-weight: 700; letter-spacing: 0.09em; text-transform: uppercase; color: #9ca3af; display: block; margin-bottom: 0.2rem; }\n.na-bento-item span { font-size: 0.75rem; font-weight: 700; color: var(--c-text); }\n.na-keywords { display: flex; flex-wrap: wrap; gap: 0.4rem; }\n.na-keyword-chip { font-size: 0.5625rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; padding: 0.25rem 0.625rem; border: 1px solid var(--c-ghost); border-radius: var(--r-pill); color: var(--c-text-2); background: var(--c-surface-card); }\n.na-detail-row { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem 0; border-bottom: 1px solid var(--c-surface-low); }\n.na-detail-row:last-child { border-bottom: none; }\n.na-detail-row span:first-child { font-size: 0.8125rem; color: var(--c-text-2); }\n.na-detail-row span:last-child { font-size: 0.6875rem; font-weight: 700; padding: 0.125rem 0.5rem; background: var(--c-surface-con); border-radius: 0.25rem; color: var(--c-text-2); max-width: 55%; text-align: right; }\n\n@media (max-width: 768px) {\n  .na-modal-body { flex-direction: column; }\n  .na-preview-pane { width: 100%; border-right: none; border-bottom: 1px solid var(--c-ghost); }\n  .na-analysis-pane { width: 100%; }\n}\n@media (max-width: 640px) {\n  .na-hero { padding: 2rem 1rem 1.25rem; }\n  .na-filter-inner { padding: 0 1rem; }\n  .na-content { padding: 1.25rem 1rem 3rem; }\n}\n<\/style>\n\n<!-- \u2500\u2500 FILTER BAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<div class=\"na-filter-bar\">\n    <div class=\"na-filter-inner\">\n        <div class=\"na-search-wrap\">\n            <span class=\"na-search-icon\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><\/svg><\/span>\n            <input type=\"text\" id=\"na-keyword\" placeholder=\"Keyword search\u2026\">\n        <\/div>\n        <select id=\"na-party\">\n            <option value=\"\">Party<\/option>\n            <option value=\"Democrat\">Democrat<\/option>\n            <option value=\"Republican\">Republican<\/option>\n            <option value=\"Independent\">Independent<\/option>\n            <option value=\"Non-partisan\">Non-partisan<\/option>\n        <\/select>\n        <select id=\"na-state\">\n            <option value=\"\">State<\/option>\n            <option value='AL'>AL<\/option><option value='AK'>AK<\/option><option value='AZ'>AZ<\/option><option value='AR'>AR<\/option><option value='CA'>CA<\/option><option value='CO'>CO<\/option><option value='CT'>CT<\/option><option value='DE'>DE<\/option><option value='FL'>FL<\/option><option value='GA'>GA<\/option><option value='HI'>HI<\/option><option value='ID'>ID<\/option><option value='IL'>IL<\/option><option value='IN'>IN<\/option><option value='IA'>IA<\/option><option value='KS'>KS<\/option><option value='KY'>KY<\/option><option value='LA'>LA<\/option><option value='ME'>ME<\/option><option value='MD'>MD<\/option><option value='MA'>MA<\/option><option value='MI'>MI<\/option><option value='MN'>MN<\/option><option value='MS'>MS<\/option><option value='MO'>MO<\/option><option value='MT'>MT<\/option><option value='NE'>NE<\/option><option value='NV'>NV<\/option><option value='NH'>NH<\/option><option value='NJ'>NJ<\/option><option value='NM'>NM<\/option><option value='NY'>NY<\/option><option value='NC'>NC<\/option><option value='ND'>ND<\/option><option value='OH'>OH<\/option><option value='OK'>OK<\/option><option value='OR'>OR<\/option><option value='PA'>PA<\/option><option value='RI'>RI<\/option><option value='SC'>SC<\/option><option value='SD'>SD<\/option><option value='TN'>TN<\/option><option value='TX'>TX<\/option><option value='UT'>UT<\/option><option value='VT'>VT<\/option><option value='VA'>VA<\/option><option value='WA'>WA<\/option><option value='WV'>WV<\/option><option value='WI'>WI<\/option><option value='WY'>WY<\/option>        <\/select>\n        <select id=\"na-campaign\">\n            <option value=\"\">Campaign type<\/option>\n            <option value=\"Election\">Election<\/option>\n            <option value=\"Fundraising\">Fundraising<\/option>\n            <option value=\"Advocacy\">Advocacy<\/option>\n            <option value=\"Voter turnout\">Voter turnout<\/option>\n            <option value=\"Policy\">Policy<\/option>\n            <option value=\"Announcement\">Announcement<\/option>\n        <\/select>\n        <select id=\"na-sentiment\">\n            <option value=\"\">Sentiment<\/option>\n            <option value=\"Positive\">Positive<\/option>\n            <option value=\"Negative\">Negative<\/option>\n            <option value=\"Neutral\">Neutral<\/option>\n            <option value=\"Urgent\">Urgent<\/option>\n            <option value=\"Fear-based\">Fear-based<\/option>\n        <\/select>\n        <div class=\"na-filter-actions\">\n            <button class=\"na-btn-primary\" onclick=\"naSearch()\">Search<\/button>\n            <button class=\"na-btn-ghost\" onclick=\"naReset()\">Reset<\/button>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- \u2500\u2500 HERO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<div class=\"na-hero\">\n    <h1>Curated Political Email.<\/h1>\n    <p>The ultimate political email archive for campaigners, researchers, and strategists.<\/p>\n<\/div>\n\n<!-- \u2500\u2500 CONTENT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<div class=\"na-content\">\n    <div class=\"na-section-heading\">\n        <div class=\"na-section-heading-left\">\n            <h2>Recent Emails<\/h2>\n            <div class=\"na-accent-bar\"><\/div>\n        <\/div>\n        <span class=\"na-results-count\" id=\"na-results-count\"><\/span>\n    <\/div>\n\n    <div class=\"na-grid\" id=\"na-grid\">\n        <div class=\"na-loading\">\n            <div class=\"na-loading-spinner\"><\/div>\n            Loading archive\u2026\n        <\/div>\n    <\/div>\n\n    <div class=\"na-load-more-wrap\">\n        <button class=\"na-btn-load-more\" id=\"na-load-more\" style=\"display:none\" onclick=\"naLoadMore()\">\n            Load more emails\n        <\/button>\n    <\/div>\n<\/div>\n\n<!-- \u2500\u2500 MODAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<div class=\"na-modal-overlay\" id=\"na-modal-overlay\" onclick=\"naModalClose(event)\">\n    <div class=\"na-modal\" id=\"na-modal\" role=\"dialog\" aria-modal=\"true\">\n        <div class=\"na-modal-header\">\n            <div class=\"na-modal-header-left\">\n                <span class=\"na-modal-org\" id=\"na-modal-org\"><\/span>\n                <span class=\"na-modal-subject\" id=\"na-modal-subject\"><\/span>\n            <\/div>\n            <button class=\"na-modal-close\" onclick=\"naModalHide()\" aria-label=\"Close\">&#x2715;<\/button>\n        <\/div>\n        <div class=\"na-modal-body\">\n            <!-- Preview pane -->\n            <div class=\"na-preview-pane\">\n                <div class=\"na-preview-toggle\">\n                    <button class=\"na-toggle-btn active\" onclick=\"naToggleView(this,'html')\" id=\"na-btn-html\">HTML<\/button>\n                    <button class=\"na-toggle-btn\" onclick=\"naToggleView(this,'plain')\" id=\"na-btn-plain\">Plain text<\/button>\n                <\/div>\n                <div class=\"na-preview-content\">\n                    <div id=\"na-view-html\">\n                        <iframe class=\"na-html-frame\" id=\"na-iframe\" sandbox=\"allow-same-origin\" frameborder=\"0\"><\/iframe>\n                    <\/div>\n                    <div id=\"na-view-plain\" style=\"display:none\">\n                        <pre class=\"na-plain-text\" id=\"na-plain-text\"><\/pre>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <!-- Analysis pane -->\n            <div class=\"na-analysis-pane\" id=\"na-analysis-pane\">\n                <div class=\"na-analysis-title\">\n                    <span class=\"na-icon\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 20V10M12 20V4M6 20v-6\"\/><\/svg><\/span>\n                    <h2>Analysis<\/h2>\n                <\/div>\n                <div class=\"na-loading\">\n                    <div class=\"na-loading-spinner\"><\/div>\n                    Loading analysis\u2026\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- \u2500\u2500 JAVASCRIPT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<script>\n(function() {\n    var API = 'https:\/\/l7l98g9ld3.execute-api.us-east-1.amazonaws.com\/prod';\n    var offset = 0, total = 0, currentParams = {}, activeView = 'html';\n\n    \/* \u2500\u2500 Filter helpers \u2500\u2500 *\/\n    function getParams() {\n        return {\n            keyword:       document.getElementById('na-keyword').value.trim(),\n            party:         document.getElementById('na-party').value,\n            state:         document.getElementById('na-state').value,\n            campaign_type: document.getElementById('na-campaign').value,\n            sentiment:     document.getElementById('na-sentiment').value\n        };\n    }\n\n    window.naSearch = function() {\n        offset = 0; total = 0;\n        currentParams = getParams();\n        document.getElementById('na-grid').innerHTML = '<div class=\"na-loading\"><div class=\"na-loading-spinner\"><\/div>Loading archive\u2026<\/div>';\n        document.getElementById('na-load-more').style.display = 'none';\n        document.getElementById('na-results-count').textContent = '';\n        naFetch(true);\n    };\n\n    window.naReset = function() {\n        ['na-keyword','na-party','na-state','na-campaign','na-sentiment'].forEach(function(id) {\n            var el = document.getElementById(id);\n            if (el.tagName === 'INPUT') el.value = '';\n            else el.selectedIndex = 0;\n        });\n        naSearch();\n    };\n\n    window.naLoadMore = function() {\n        offset += 20;\n        naFetch(false);\n    };\n\n    function naFetch(replace) {\n        var params = Object.assign({}, currentParams, { limit: 20, offset: offset });\n        var qs = Object.keys(params).filter(function(k){ return params[k]; }).map(function(k){\n            return encodeURIComponent(k) + '=' + encodeURIComponent(params[k]);\n        }).join('&');\n\n        fetch(API + '\/newsletters\/search' + (qs ? '?' + qs : ''))\n            .then(function(r){ return r.json(); })\n            .then(function(raw) {\n                var data = (raw.body && typeof raw.body === 'string') ? JSON.parse(raw.body) : raw;\n                var results = data.results || [];\n                var returned = data.returned || results.length;\n                total = data.count || 0;\n\n                var count = document.getElementById('na-results-count');\n                count.textContent = total.toLocaleString() + ' email' + (total !== 1 ? 's' : '');\n\n                if (replace) {\n                    if (results.length === 0) {\n                        document.getElementById('na-grid').innerHTML = '<div class=\"na-no-results\">No emails found matching your filters.<br>Try adjusting your search.<\/div>';\n                        return;\n                    }\n                    document.getElementById('na-grid').innerHTML = '';\n                }\n\n                results.forEach(function(item) {\n                    document.getElementById('na-grid').appendChild(naRenderCard(item));\n                });\n\n                var loaded = offset + returned;\n                document.getElementById('na-load-more').style.display = loaded < total ? 'block' : 'none';\n            })\n            .catch(function(err) {\n                console.error('[Newsletter Archive] fetch error:', err);\n                document.getElementById('na-grid').innerHTML = '<div class=\"na-no-results\">Could not load results. Please try again.<\/div>';\n            });\n    }\n\n    \/* \u2500\u2500 Card rendering \u2500\u2500 *\/\n    function partyBadge(party) {\n        if (!party) return '';\n        var cls = party === 'Democrat' ? 'na-badge-party-dem' :\n                  party === 'Republican' ? 'na-badge-party-rep' : 'na-badge-party-ind';\n        return '<span class=\"na-badge ' + cls + '\">' + esc(party) + '<\/span>';\n    }\n\n    function naRenderCard(item) {\n        var card = document.createElement('div');\n        card.className = 'na-card';\n        card.addEventListener('click', function(){ naOpen(item.message_id); });\n\n        var sender = item.from_name || item.from_email || item.sender_name || '';\n        var org    = item.organization || '';\n        var eyebrow = item.campaign_type || item.party || org || 'Email';\n        var senderLine = '';\n        if (sender && org && sender !== org) senderLine = esc(org);\n        else if (org) senderLine = esc(org);\n        else if (sender) senderLine = esc(sender);\n\n        var badges = '';\n        if (item.party)    badges += partyBadge(item.party);\n        if (item.state)    badges += '<span class=\"na-badge na-badge-state\">' + esc(item.state) + '<\/span>';\n        if (item.sentiment) badges += '<span class=\"na-badge na-badge-sentiment\">' + esc(item.sentiment) + '<\/span>';\n        if (item.arrived_in_spam) badges += '<span class=\"na-badge na-badge-spam\">Spam<\/span>';\n\n        \/* Thumbnail \u2014 real screenshot if available, CSS preview fallback *\/\n        var thumbBg = item.party === 'Democrat' ? '#eef3fb' :\n                      item.party === 'Republican' ? '#fdf0f0' : '#f3f3f4';\n        var summaryText = (item.summary || item.snippet || '').substring(0, 300);\n        var senderDisplay = senderLine || esc(sender) || 'Unknown sender';\n\n        var thumbContent = '';\n        if (item.thumbnail_url) {\n            thumbContent =\n                '<div class=\"na-card-thumb-inner\">' +\n                    '<img decoding=\"async\" class=\"na-card-thumb-img\" src=\"' + esc(item.thumbnail_url) + '\" alt=\"' + esc(item.subject || '') + '\" loading=\"lazy\">' +\n                '<\/div>';\n        } else {\n            thumbContent =\n                '<div class=\"na-card-thumb-inner\">' +\n                    '<div class=\"na-card-thumb-preview\">' +\n                        '<div class=\"na-thumb-sender\">' + senderDisplay + '<\/div>' +\n                        '<div class=\"na-thumb-subject\">' + esc(item.subject || '(No subject)') + '<\/div>' +\n                        '<div class=\"na-thumb-divider\"><\/div>' +\n                        '<div class=\"na-thumb-body\">' + esc(summaryText) + '<\/div>' +\n                    '<\/div>' +\n                '<\/div>';\n        }\n\n        card.innerHTML =\n            '<div class=\"na-card-thumb\" style=\"background:' + thumbBg + '\">' +\n                thumbContent +\n                '<div class=\"na-card-thumb-overlay\"><\/div>' +\n            '<\/div>' +\n            '<div class=\"na-card-body\">' +\n                '<span class=\"na-card-eyebrow\">' + esc(eyebrow) + '<\/span>' +\n                '<div class=\"na-card-title\">' + esc(item.subject || '(No subject)') + '<\/div>' +\n                (senderLine ? '<div class=\"na-card-sender\">' + senderLine + '<\/div>' : '') +\n                (badges ? '<div class=\"na-card-meta\">' + badges + '<\/div>' : '') +\n                '<div class=\"na-card-date\">' + naFormatDate(item.received_date) + '<\/div>' +\n            '<\/div>';\n\n        return card;\n    }\n\n    \/* \u2500\u2500 Modal open \/ close \u2500\u2500 *\/\n    window.naOpen = function(messageId) {\n        var overlay = document.getElementById('na-modal-overlay');\n        overlay.classList.add('open');\n        document.body.style.overflow = 'hidden';\n\n        \/\/ Reset state\n        document.getElementById('na-modal-org').textContent = '';\n        document.getElementById('na-modal-subject').textContent = 'Loading\u2026';\n        document.getElementById('na-analysis-pane').innerHTML =\n            '<div class=\"na-analysis-title\"><span class=\"na-icon\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 20V10M12 20V4M6 20v-6\"\/><\/svg><\/span><h2>Analysis<\/h2><\/div>' +\n            '<div class=\"na-loading\"><div class=\"na-loading-spinner\"><\/div>Loading analysis\u2026<\/div>';\n\n        \/\/ Reset to HTML view\n        naToggleView(document.getElementById('na-btn-html'), 'html');\n        document.getElementById('na-iframe').src = 'about:blank';\n        document.getElementById('na-plain-text').textContent = '';\n\n        fetch(API + '\/newsletters\/' + encodeURIComponent(messageId))\n            .then(function(r){ return r.json(); })\n            .then(function(raw) {\n                var data = (raw.body && typeof raw.body === 'string') ? JSON.parse(raw.body) : raw;\n                naPopulateModal(data);\n            })\n            .catch(function(err) {\n                console.error('[Newsletter Archive] detail error:', err);\n                document.getElementById('na-modal-subject').textContent = 'Could not load email';\n            });\n    };\n\n    window.naModalHide = function() {\n        document.getElementById('na-modal-overlay').classList.remove('open');\n        document.body.style.overflow = '';\n        document.getElementById('na-iframe').src = 'about:blank';\n    };\n\n    window.naModalClose = function(e) {\n        if (e.target === document.getElementById('na-modal-overlay')) naModalHide();\n    };\n\n    document.addEventListener('keydown', function(e) {\n        if (e.key === 'Escape') naModalHide();\n    });\n\n    \/* \u2500\u2500 PII Redaction \u2500\u2500 *\/\n    function naRedactPII(html) {\n        if (!html) return html;\n        \/\/ Neutralize all links\n        html = html.replace(\/href\\s*=\\s*\"[^\"]*\"\/gi, 'href=\"#\"');\n        html = html.replace(\/href\\s*=\\s*'[^']*'\/gi, \"href='#'\");\n        \/\/ Redact all email addresses first\n        html = html.replace(\/[A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z]{2,}\/g, '[redacted]');\n        \/\/ Redact To: lines in forwarded headers only (stops at next HTML tag or newline)\n        html = html.replace(\/(<b>To:<\\\/b>\\s*)[^<\\n]{1,200}\/gi, '$1[recipient redacted]');\n        html = html.replace(\/(<strong>To:<\\\/strong>\\s*)[^<\\n]{1,200}\/gi, '$1[recipient redacted]');\n        html = html.replace(\/([\\n>]\\s*To:\\s*)[^<\\n]{1,200}\/gi, '$1[recipient redacted]');\n        \/\/ Redact Delivered-To lines\n        html = html.replace(\/([\\n>]\\s*Delivered-To:\\s*)[^<\\n]{1,200}\/gi, '$1[redacted]');\n        return html;\n    }\n\n    \/* \u2500\u2500 Modal populate \u2500\u2500 *\/\n    function naPopulateModal(data) {\n        var org = data.organization || data.sender_name || data.from_name || '';\n        document.getElementById('na-modal-org').textContent = org;\n        document.getElementById('na-modal-subject').textContent = data.subject || '(No subject)';\n\n        \/\/ HTML preview (with PII redaction)\n        if (data.html_body) {\n            var cleanHtml = naRedactPII(data.html_body);\n            var blob = new Blob([cleanHtml], {type: 'text\/html'});\n            var url  = URL.createObjectURL(blob);\n            var iframe = document.getElementById('na-iframe');\n            iframe.onload = function() {\n                try {\n                    var h = iframe.contentDocument.body.scrollHeight;\n                    iframe.style.height = Math.min(h + 40, 600) + 'px';\n                } catch(e) {}\n                URL.revokeObjectURL(url);\n            };\n            iframe.src = url;\n        } else {\n            document.getElementById('na-view-html').innerHTML = '<p style=\"padding:1.5rem;color:var(--secondary-text);font-size:0.875rem;\">No HTML content available.<\/p>';\n        }\n\n        \/\/ Plain text (with PII redaction)\n        document.getElementById('na-plain-text').textContent = naRedactPII(data.plain_body || 'No plain text available.');\n\n        \/\/ Analysis panel\n        naRenderAnalysis(data);\n    }\n\n    \/* \u2500\u2500 Analysis panel \u2500\u2500 *\/\n    function naRenderAnalysis(d) {\n        var pane = document.getElementById('na-analysis-pane');\n        var org  = d.organization || d.sender_name || '';\n        var summary = d.summary || d.key_message || '';\n\n        var bentoItems = [\n            ['Geography',   d.geographic_scope],\n            ['Sender',      d.sender_name || d.from_name],\n            ['Audience',    d.target_audience],\n            ['Readability', d.readability],\n        ].filter(function(i){ return i[1]; });\n\n        var tactics   = Array.isArray(d.persuasion_tactics) ? d.persuasion_tactics : [];\n        var policies  = Array.isArray(d.policy_area) ? d.policy_area : [];\n        var keywords  = [].concat(tactics.slice(0,3), policies.slice(0,3));\n\n        var detailRows = [\n            ['Office sought',    d.office_sought],\n            ['Campaign type',    d.campaign_type],\n            ['Writing style',    d.writing_style],\n            ['Call to action',   d.call_to_action],\n            ['Donation ask',     d.donation_ask_primary ? '$' + d.donation_ask_primary : null],\n            ['Donation urgency', d.donation_urgency],\n            ['Arrived in spam',  d.arrived_in_spam ? 'Yes' : null],\n            ['Purpose',          d.email_purpose],\n        ].filter(function(r){ return r[1]; });\n\n        var html = '<div class=\"na-analysis-title\"><span class=\"na-icon\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 20V10M12 20V4M6 20v-6\"\/><\/svg><\/span><h2>Analysis<\/h2><\/div>';\n\n        if (org) {\n            html += '<div class=\"na-analysis-section\"><label>Organization<\/label><div class=\"na-org-block\">' + esc(org) + '<\/div><\/div>';\n        }\n\n        if (summary) {\n            html += '<div class=\"na-analysis-section\"><label>Summary<\/label><p class=\"na-summary-text\">' + esc(summary) + '<\/p><\/div>';\n        }\n\n        if (bentoItems.length) {\n            html += '<div class=\"na-analysis-section\"><label>Details<\/label><div class=\"na-bento\">';\n            bentoItems.forEach(function(item) {\n                html += '<div class=\"na-bento-item\"><label>' + esc(item[0]) + '<\/label><span>' + esc(item[1]) + '<\/span><\/div>';\n            });\n            html += '<\/div><\/div>';\n        }\n\n        if (keywords.length) {\n            html += '<div class=\"na-analysis-section\"><label>Keywords & Tactics<\/label><div class=\"na-keywords\">';\n            keywords.forEach(function(k) {\n                html += '<span class=\"na-keyword-chip\">' + esc(k) + '<\/span>';\n            });\n            html += '<\/div><\/div>';\n        }\n\n        if (detailRows.length) {\n            html += '<div class=\"na-analysis-section\"><label>Deep dive<\/label><div>';\n            detailRows.forEach(function(r) {\n                html += '<div class=\"na-detail-row\"><span>' + esc(r[0]) + '<\/span><span>' + esc(r[1]) + '<\/span><\/div>';\n            });\n            html += '<\/div><\/div>';\n        }\n\n        pane.innerHTML = html;\n    }\n\n    \/* \u2500\u2500 View toggle (HTML \/ plain) \u2500\u2500 *\/\n    window.naToggleView = function(btn, view) {\n        document.getElementById('na-btn-html').classList.toggle('active', view === 'html');\n        document.getElementById('na-btn-plain').classList.toggle('active', view === 'plain');\n        document.getElementById('na-view-html').style.display  = view === 'html'  ? 'block' : 'none';\n        document.getElementById('na-view-plain').style.display = view === 'plain' ? 'block' : 'none';\n        activeView = view;\n    };\n\n    \/* \u2500\u2500 Helpers \u2500\u2500 *\/\n    function naFormatDate(dateStr) {\n        if (!dateStr) return '';\n        var d = new Date(dateStr);\n        return d.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' });\n    }\n\n    function esc(str) {\n        if (!str) return '';\n        return String(str)\n            .replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;')\n            .replace(\/>\/g,'&gt;').replace(\/\"\/g,'&quot;');\n    }\n\n    \/* \u2500\u2500 Init \u2500\u2500 *\/\n    document.getElementById('na-keyword').addEventListener('keydown', function(e){\n        if (e.key === 'Enter') naSearch();\n    });\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', function() {\n            naSearch();\n        });\n    } else {\n        naSearch();\n    }\n\n})();\n<\/script>\n\n<\/div><!-- #na-wrap -->\n\n    \n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-11","page","type-page","status-publish","hentry"],"featured_image_src":null,"featured_image_src_square":null,"_links":{"self":[{"href":"https:\/\/campaignemailarchive.com\/index.php?rest_route=\/wp\/v2\/pages\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/campaignemailarchive.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/campaignemailarchive.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/campaignemailarchive.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/campaignemailarchive.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11"}],"version-history":[{"count":0,"href":"https:\/\/campaignemailarchive.com\/index.php?rest_route=\/wp\/v2\/pages\/11\/revisions"}],"wp:attachment":[{"href":"https:\/\/campaignemailarchive.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}