PageSourceSearch

https://deathpenalty.org/

html deathpenalty.org collected 2026-09-24 18:12:01 UTC 314,832 bytes, 3,825 lines download raw bytes

1<!doctype html>
2<html lang="en-US">
3<head>
4	<meta charset="UTF-8">
5	<meta name="viewport" content="width=device-width, initial-scale=1">
6	<link rel="profile" href="https://gmpg.org/xfn/11">
7	<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
8<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
9
10	<!-- This site is optimized with the Yoast SEO Premium plugin v28.5 (Yoast SEO v28.5) - https://yoast.com/product/yoast-seo-premium-wordpress/ -->
11	<title>Death Penalty Focus — Working to End Capital Punishment</title>
12	<meta name="description" content="Death Penalty Focus works to end the death penalty through public education, advocacy, and support for people on death row and their families." />
13	<link rel="canonical" href="https://deathpenalty.org/" />
14	<meta property="og:locale" content="en_US" />
15	<meta property="og:type" content="website" />
16	<meta property="og:title" content="Death Penalty Focus — Working to End Capital Punishment" />
17	<meta property="og:description" content="Death Penalty Focus works to end the death penalty through public education, advocacy, and support for people on death row and their families." />
18	<meta property="og:url" content="https://deathpenalty.org/" />
19	<meta property="og:site_name" content="Death Penalty Focus" />
20	<meta property="article:publisher" content="https://www.facebook.com/deathpenaltyfocus" />
21	<meta property="article:modified_time" content="2026-09-21T05:59:13+00:00" />
22	<meta property="og:image" content="https://deathpenalty.org/wp-content/uploads/2024/06/Social-Image.jpg" />
23	<meta property="og:image:width" content="1200" />
24	<meta property="og:image:height" content="675" />
25	<meta property="og:image:type" content="image/jpeg" />
26	<meta name="twitter:card" content="summary_large_image" />
27	<meta name="twitter:title" content="Death Penalty Focus — Working to End Capital Punishment" />
28	<meta name="twitter:description" content="Death Penalty Focus works to end the death penalty through public education, advocacy, and support for people on death row and their families." />
29	<meta name="twitter:site" content="@DPFocus" />
30	
30<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/deathpenalty.org\/","url":"https:\/\/deathpenalty.org\/","name":"Death Penalty Focus — Working to End Capital Punishment","isPartOf":{"@id":"https:\/\/deathpenalty.org\/#website"},"about":{"@id":"https:\/\/deathpenalty.org\/#organization"},"primaryImageOfPage":{"@id":"https:\/\/deathpenalty.org\/#primaryimage"},"image":{"@id":"https:\/\/deathpenalty.org\/#primaryimage"},"thumbnailUrl":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2024\/06\/Social-Image.jpg","datePublished":"2020-10-02T12:11:33+00:00","dateModified":"2026-09-21T05:59:13+00:00","description":"Death Penalty Focus works to end the death penalty through public education, advocacy, and support for people on death row and their families.","breadcrumb":{"@id":"https:\/\/deathpenalty.org\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/deathpenalty.org\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/deathpenalty.org\/#primaryimage","url":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2024\/06\/Social-Image.jpg","contentUrl":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2024\/06\/Social-Image.jpg","width":1200,"height":675,"caption":"DPF Social Image"},{"@type":"BreadcrumbList","@id":"https:\/\/deathpenalty.org\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/deathpenalty.org\/#website","url":"https:\/\/deathpenalty.org\/","name":"Death Penalty Focus","description":"Committed to the abolition of the death penalty through public education, grassroots and political organizing, media outreach, and domestic and international coalition building.","publisher":{"@id":"https:\/\/deathpenalty.org\/#organization"},"alternateName":"DPF","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/deathpenalty.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/deathpenalty.org\/#organization","name":"Death Penalty Focus","url":"https:\/\/deathpenalty.org\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/deathpenalty.org\/#\/schema\/logo\/image\/","url":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/09\/DPF-Social-Image-for-Yoast.png","contentUrl":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/09\/DPF-Social-Image-for-Yoast.png","width":1200,"height":675,"caption":"Death Penalty Focus"},"image":{"@id":"https:\/\/deathpenalty.org\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/deathpenaltyfocus","https:\/\/x.com\/DPFocus"]}]}</script>
30
31	<!-- / Yoast SEO Premium plugin. -->
32
33
34<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://deathpenalty.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdeathpenalty.org%2F" />
35<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://deathpenalty.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdeathpenalty.org%2F&#038;format=xml" />
36<style id="wp-img-auto-sizes-contain-inline-css">
37img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
38/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
39</style>
40<style id="wp-emoji-styles-inline-css">
41
42	img.wp-smiley, img.emoji {
43		display: inline !important;
44		border: none !important;
45		box-shadow: none !important;
46		height: 1em !important;
47		width: 1em !important;
48		margin: 0 0.07em !important;
49		vertical-align: -0.1em !important;
50		background: none !important;
51		padding: 0 !important;
52	}
53/*# sourceURL=wp-emoji-styles-inline-css */
54</style>
55<style id="pdfemb-pdf-embedder-viewer-style-inline-css">
56.wp-block-pdfemb-pdf-embedder-viewer{max-width:none}
57
58/*# sourceURL=https://deathpenalty.org/wp-content/plugins/pdf-embedder/block/build/style-index.css */
59</style>
60<style id="global-styles-inline-css">
61:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
61--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:root { --wp--style--global--content-size: 800px;--wp--style--global--wide-size: 1200px; }:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 24px; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 24px; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 24px;}:root :where(.is-layout-grid){gap: 24px;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
61.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
62:root :where(.wp-block-icon svg){width: 24px;}
63:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
64/*# sourceURL=global-styles-inline-css */
65</style>
66<link rel='stylesheet' id='hello-elementor-css' href='https://deathpenalty.org/wp-content/themes/hello-elementor/assets/css/reset.css?ver=3.5.1' media='all' />
67<link rel='stylesheet' id='hello-elementor-theme-style-css' href='https://deathpenalty.org/wp-content/themes/hello-elementor/assets/css/theme.css?ver=3.5.1' media='all' />
68<link rel='stylesheet' id='hello-elementor-header-footer-css' href='https://deathpenalty.org/wp-content/themes/hello-elementor/assets/css/header-footer.css?ver=3.5.1' media='all' />
69<link rel='stylesheet' id='elementor-frontend-css' href='https://deathpenalty.org/wp-content/plugins/elementor/assets/css/frontend.min.css?ver=4.3.1' media='all' />
70<style id="elementor-frontend-inline-css">
71.e-heading-base a, .e-paragraph-base a { all: unset; cursor: pointer; }form[data-element_type="e-form"].form-state-success [data-element_type="e-form-success-message"],form[data-element_type="e-form"].form-state-error [data-element_type="e-form-error-message"]{ display: block; }.elementor-edit-mode [data-element_type="e-form-success-message"]:is(.elementor-element-editable, :has(.elementor-element-editable), :has(> .elementor-empty-view)),.elementor-edit-mode [data-element_type="e-form-error-message"]:is(.elementor-element-editable, :has(.elementor-element-editable), :has(> .elementor-empty-view)){ display: block; }.e-background-video { position: relative; overflow: hidden; }.e-background-video__media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; pointer-events: none; z-index: 0; }.e-background-video__content { position: relative; z-index: 1; flex: 1 1 auto; }.elementor-edit-mode .e-background-video__content.e-atomic-element:has(> .elementor-empty-view) { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }.elementor-edit-mode .e-background-video__content.e-atomic-element:has(> .elementor-empty-view) > .elementor-empty-view.elementor-empty-view { position: relative; flex: 1 1 auto; min-height: 120px; height: auto; width: 100%; }.elementor-edit-mode .e-background-video__content.e-atomic-element:has(> .elementor-empty-view) > .elementor-empty-view > .elementor-first-add { position: absolute; inset: 0; width: 100%; height: 100%; }.e-background-video__controls { z-index: 2; }.e-background-video__play, .e-background-video__pause { appearance: none; -webkit-appearance: none; }.e-background-video.e-background-video--playing .e-background-video__play { display: none; }.e-background-video.e-background-video--paused .e-background-video__pause { display: none; }.e-background-video:not(.e-background-video--playing):not(.e-background-video--paused) .e-background-video__controls,.e-background-video:not(.e-background-video--playing):not(.e-background-video--paused) .e-background-video__play,.e-background-video:not(.e-background-video--playing):not(.e-background-video--paused) .e-background-video__pause { display: none; }.e-accordion-item-header-base { list-style: none; }.e-accordion-item-header-base::-webkit-details-marker { display: none; }.e-accordion-item-base { interpolate-size: allow-keywords; }.e-accordion-item-base::details-content {block-size: 0; overflow: hidden;transition: block-size .3s ease, content-visibility .3s ease allow-discrete;}
71.e-accordion-item-base[open]::details-content { block-size: auto; }.e-accordion-item-icon-base.e-accordion-item-icon-base .e-svg-base { width: auto; height: 100%; max-width: 100%; }.e-accordion-item-icon-base.e-accordion-item-icon-base .e-svg-base svg { width: auto !important; }.e-accordion-item-icon-base svg { transition: transform .3s ease; }.e-accordion-item-base[open] > summary .e-accordion-item-icon-base svg { transform: rotate(180deg); }
72.e-form-textarea-base:not([data-resizable]) { resize: none; } .e-form-submit-button-base { cursor: pointer; box-sizing: border-box; }
73/*# sourceURL=elementor-frontend-inline-css */
74</style>
75<link rel='stylesheet' id='elementor-post-10-css' href='https://deathpenalty.org/wp-content/uploads/elementor/css/post-10.css?ver=1790246849' media='all' />
76<link rel='stylesheet' id='eael-general-css' href='https://deathpenalty.org/wp-content/plugins/essential-addons-for-elementor-lite/assets/front-end/css/view/general.min.css?ver=6.8.4' media='all' />
77<link rel='stylesheet' id='eael-12-css' href='https://deathpenalty.org/wp-content/uploads/essential-addons-elementor/eael-12.css?ver=1789945153' media='all' />
78<link rel='stylesheet' id='widget-image-css' href='https://deathpenalty.org/wp-content/plugins/elementor/assets/css/widget-image.min.css?ver=4.3.1' media='all' />
79<link rel='stylesheet' id='widget-nav-menu-css' href='https://deathpenalty.org/wp-content/plugins/elementor-pro/assets/css/widget-nav-menu.min.css?ver=4.3.0' media='all' />
80<link rel='stylesheet' id='e-sticky-css' href='https://deathpenalty.org/wp-content/plugins/elementor-pro/assets/css/modules/sticky.min.css?ver=4.3.0' media='all' />
81<link rel='stylesheet' id='widget-divider-css' href='https://deathpenalty.org/wp-content/plugins/elementor/assets/css/widget-divider.min.css?ver=4.3.1' media='all' />
82<link rel='stylesheet' id='widget-spacer-css' href='https://deathpenalty.org/wp-content/plugins/elementor/assets/css/widget-spacer.min.css?ver=4.3.1' media='all' />
83<link rel='stylesheet' id='widget-heading-css' href='https://deathpenalty.org/wp-content/plugins/elementor/assets/css/widget-heading.min.css?ver=4.3.1' media='all' />
84<link rel='stylesheet' id='widget-share-buttons-css' href='https://deathpenalty.org/wp-content/plugins/elementor-pro/assets/css/widget-share-buttons.min.css?ver=4.3.0' media='all' />
85<link rel='stylesheet' id='e-apple-webkit-css' href='https://deathpenalty.org/wp-content/plugins/elementor/assets/css/conditionals/apple-webkit.min.css?ver=4.3.1' media='all' />
86<link rel='stylesheet' id='widget-posts-css' href='https://deathpenalty.org/wp-content/plugins/elementor-pro/assets/css/widget-posts.min.css?ver=4.3.0' media='all' />
87<link rel='stylesheet' id='elementor-post-2-css' href='https://deathpenalty.org/wp-content/uploads/elementor/css/post-2.css?ver=1790246849' media='all' />
88<link rel='stylesheet' id='base-desktop-css' href='https://deathpenalty.org/wp-content/uploads/elementor/css/base-desktop.css?ver=6ab4ffc1ac495' media='all' />
89<link rel='stylesheet' id='local-2-frontend-desktop-css' href='https://deathpenalty.org/wp-content/uploads/elementor/css/local-2-frontend-desktop.css?ver=6ab4ffc1ac808' media='all' />
90<link rel='stylesheet' id='base-mobile-css' href='https://deathpenalty.org/wp-content/uploads/elementor/css/base-mobile.css?ver=6ab4ffc1ac495' media='(max-width:767px)' />
91<link rel='stylesheet' id='elementor-post-12-css' href='https://deathpenalty.org/wp-content/uploads/elementor/css/post-12.css?ver=1790246849' media='all' />
92<link rel='stylesheet' id='elementor-post-50-css' href='https://deathpenalty.org/wp-content/uploads/elementor/css/post-50.css?ver=1790246849' media='all' />
93<link rel='stylesheet' id='elementor-post-7363-css' href='https://deathpenalty.org/wp-content/uploads/elementor/css/post-7363.css?ver=1790246849' media='all' />
94<link rel='stylesheet' id='hello-elementor-child-style-css' href='https://deathpenalty.org/wp-content/themes/hello-theme-child-master/style.css?ver=1.0.0' media='all' />
95<link rel='stylesheet' id='elementor-gf-opensans-css' href='https://fonts.googleapis.com/css?family=Open+Sans:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic&#038;display=swap' media='all' />
96<link rel='stylesheet' id='elementor-gf-commissioner-css' href='https://fonts.googleapis.com/css?family=Commissioner:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic&#038;display=swap' media='all' />
97<script id="jquery-core-js" src="https://deathpenalty.org/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 97
97
98<script id="jquery-migrate-js" src="https://deathpenalty.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
98
99<link rel="https://api.w.org/" href="https://deathpenalty.org/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://deathpenalty.org/wp-json/wp/v2/pages/2" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://deathpenalty.org/xmlrpc.php?rsd" />
100
101<link rel='shortlink' href='https://deathpenalty.org/' />
102<meta name="generator" content="Elementor 4.3.1; features: e_font_icon_svg, additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-swap">
103<script src="https://player.vimeo.com/api/player.js"></script>
103
104
105
106<script>
107document.addEventListener('DOMContentLoaded', function() {
108    // Function to pause all Vimeo videos
109    function pauseAllVideos(exceptVideo) {
110        var iframes = document.querySelectorAll('#vimeo-video iframe[src*="vimeo.com"]');
111        iframes.forEach(function(iframe) {
112            var player = new Vimeo.Player(iframe);
113            if (iframe !== exceptVideo) {
114                player.pause();
115            }
116        });
117    }
118
119    // Attach event listeners to all Vimeo iframes within elements with the ID 'vimeo-video'
120    var iframes = document.querySelectorAll('#vimeo-video iframe[src*="vimeo.com"]');
121    iframes.forEach(function(iframe) {
122        var player = new Vimeo.Player(iframe);
123        player.on('play', function() {
124            pauseAllVideos(iframe);
125        });
126    });
127});
128</script>
128
129			<style>
130				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
131				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * {
132					background-image: none !important;
133				}
134				@media screen and (max-height: 1024px) {
135					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),
136					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * {
137						background-image: none !important;
138					}
139				}
140				@media screen and (max-height: 640px) {
141					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),
142					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * {
143						background-image: none !important;
144					}
145				}
146			</style>
147			<link rel="icon" href="https://deathpenalty.org/wp-content/uploads/2026/09/cropped-dpf-favicon-monogram-512-32x32.png" sizes="32x32" />
148<link rel="icon" href="https://deathpenalty.org/wp-content/uploads/2026/09/cropped-dpf-favicon-monogram-512-192x192.png" sizes="192x192" />
149<link rel="apple-touch-icon" href="https://deathpenalty.org/wp-content/uploads/2026/09/cropped-dpf-favicon-monogram-512-180x180.png" />
150<meta name="msapplication-TileImage" content="https://deathpenalty.org/wp-content/uploads/2026/09/cropped-dpf-favicon-monogram-512-270x270.png" />
151<style id="wp-custom-css">
152html, body {
153    max-width: 100%;
154    overflow-x: hidden;
155}
156
157
158</style>
159
160<style id="bl-snip-css-24038">
161/* Default: show title+share section, hide share-only section */
162.title-section-default {
163  display: flex !important;
164}
165
166.title-section-share-only {
167  display: none !important;
168}
169
170/* When toggle is checked: reverse */
171body.share-only-header .title-section-default {
172  display: none !important;
173}
174
175body.share-only-header .title-section-share-only {
176  display: flex !important;
177  justify-content: center;
178  align-items: center;
179  padding: 20px;
180  min-height: auto;
181}
182</style>
183
184<style id="bl-snip-css-24270">
185/* ===========================================================================
186   DPF AWARDS GALAS — HIGHLIGHTS HUB  ·  STYLES        (externalized 2026-06-12)
187   PASTE INTO: "Simple Custom CSS and JS" → Add Custom CSS   (raw CSS, no <style>)
188   Companions: Awards-Dinner-Highlights-Page.html (Elementor markup)
189               Awards-Dinner-Highlights-JS.js     (script + YEARS data)
190   Every selector is scoped to #dpf-galas / .gx- / .dpf-, so it is safe to load
191   site-wide; you may still limit it to the Awards Dinner page in the plugin.
192   Theme: change data-theme="..." on <div id="dpf-galas"> in the markup file.
193   =========================================================================== */
194  @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700&family=Inter:wght@400;500;600&display=swap');
195
196  #dpf-galas, #dpf-galas *, #dpf-galas *::before, #dpf-galas *::after { box-sizing: border-box; margin: 0; padding: 0; }
197  /* ════════════════════════════════════════════════════════════════════════
198     COLOR THEMES — switch by editing  data-theme="…"  on  <div id="dpf-galas">
199     (right below this <style>). All palettes keep the DPF brand red + navy and
200     only re-tune the NEUTRALS, the accent temperature, and the video-player
201     surfaces — so brand identity never drifts, only mood. Rationale per block.
202       • archival — original warm-cream editorial scheme  (SAVED — your "go back")
203       • dpf      — cooler, web-clean, brand-consistent    (ACTIVE / recommended)
204       • ivory    — light, airy, navy-forward minimal
205       • noir     — dark, cinematic screening-room          (experimental)
206     ════════════════════════════════════════════════════════════════════════ */
207  #dpf-galas {
208    /* base == archival (also the no-data-theme fallback) */
209    --red:#C82500; --red-d:#aa1f00; --navy:#2A4A88; --gold:#B58A3C;
210    --ink:#1c2333; --muted:#6b7280; --line:#e6e3dc; --card:#ffffff; --page:#faf8f4;
211    --vp-bg-root:#ffffff; --vp-bg-main:#ffffff; --vp-bg-list:#f6f3ee;
212    --vp-item-hover:#efeae1; --vp-item-active:#fcece9; --vp-border:#e6e3dc;
213    --vp-gold:#B58A3C; --vp-red:#C82500; --vp-text:#1c2333; --vp-text2:#5a6478; --vp-dim:#8a93a3; --vp-scroll:#cfc7b8;
214    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
215    color: var(--ink);
216    background: var(--page);
217    width: 100%; max-width: none; margin: 0 auto;
218  }
219  /* ARCHIVAL — warm paper neutrals; red+navy sit near-complementary (≈11° vs
220     ≈220°), antique gold is the analogous-to-red warm ceremonial third. Cozy,
221     book-like, "letterpress invitation." (Your saved original.) */
222  #dpf-galas[data-theme="archival"] {
223    --red:#C82500; --red-d:#aa1f00; --navy:#2A4A88; --gold:#B58A3C;
224    --ink:#1c2333; --muted:#6b7280; --line:#e6e3dc; --card:#ffffff; --page:#faf8f4;
225    --vp-bg-root:#ffffff; --vp-bg-main:#ffffff; --vp-bg-list:#f6f3ee;
226    --vp-item-hover:#efeae1; --vp-item-active:#fcece9; --vp-border:#e6e3dc;
227    --vp-gold:#B58A3C; --vp-red:#C82500; --vp-text:#1c2333; --vp-text2:#5a6478; --vp-dim:#8a93a3; --vp-scroll:#cfc7b8;
228  }
229  /* DPF (ACTIVE) — neutrals pulled COOL (blue-grey) to match the clean, modern
230     web chrome of deathpenalty.org. Warm brand red on cool neutrals = stronger
231     simultaneous-contrast "pop" than on cream; navy carries structure; the gold
232     is cooled to a restrained brass so it complements rather than competes with
233     navy. This is the most on-brand, most legible everyday choice. */
234  #dpf-galas[data-theme="dpf"] {
235    --red:#C82500; --red-d:#a81f00; --navy:#2A4A88; --gold:#9C7C3A;
236    --ink:#16202E; --muted:#5B6573; --line:#E3E7EC; --card:#FFFFFF; --page:#F4F6F9;
237    --vp-bg-root:#FFFFFF; --vp-bg-main:#FFFFFF; --vp-bg-list:#EEF1F5;
238    --vp-item-hover:#E4E9F0; --vp-item-active:#E7EDF6; --vp-border:#E3E7EC;
239    --vp-gold:#9C7C3A; --vp-red:#C82500; --vp-text:#16202E; --vp-text2:#51596A; --vp-dim:#8B93A1; --vp-scroll:#C4CBD6;
240  }
241  /* IVORY — highest-luminance warm white; navy PROMOTED to the lead voice and
242     red held in reserve for true emphasis only. Tints, not mid-tones, so it
243     reads airy/editorial-minimal. Good for a quieter, gallery-catalogue feel. */
244  #dpf-galas[data-theme="ivory"] {
245    --red:#C82500; --red-d:#a81f00; --navy:#243F77; --gold:#B0892F;
246    --ink:#1B2230; --muted:#71777F; --line:#ECEAE3; --card:#FFFFFF; --page:#FBFAF7;
247    --vp-bg-root:#FFFFFF; --vp-bg-main:#FFFFFF; --vp-bg-list:#F4F2EC;
248    --vp-item-hover:#ECE8DF; --vp-item-active:#EDF1F8; --vp-border:#ECEAE3;
249    --vp-gold:#B0892F; --vp-red:#C82500; --vp-text:#1B2230; --vp-text2:#565E6C; --vp-dim:#939AA3; --vp-scroll:#D9D3C5;
250  }
251  /* NOIR (experimental) — dark charcoal so the video frame and gold accents
252     glow; red & navy are LIGHTENED to clear WCAG-AA contrast on dark surfaces.
253     A handful of hard-coded whites in the chrome may still want hand-tuning. */
254  #dpf-galas[data-theme="noir"] {
255    --red:#E23A16; --red-d:#c2310f; --navy:#5B7FC7; --gold:#C9A24A;
256    --ink:#F1F3F6; --muted:#9AA3B2; --line:#2C313B; --card:#1E222B; --page:#15171C;
257    --vp-bg-root:#1E222B; --vp-bg-main:#1E222B; --vp-bg-list:#20242E;
258    --vp-item-hover:#2A2F3A; --vp-item-active:#3A2420; --vp-border:#2C313B;
259    --vp-gold:#C9A24A; --vp-red:#E23A16; --vp-text:#F1F3F6; --vp-text2:#B7BECB; --vp-dim:#8A93A3; --vp-scroll:#3A4250;
260  }
261
262  /* ── Selector bar (pinned to top via JS — see pinBar() — because ancestor
263        overflow:hidden disables CSS position:sticky in this Elementor context) ── */
264  #dpf-galas .gx-bar {
265    position: relative; z-index: 40;
266    display: flex; align-items: center; justify-content: flex-start; gap: 12px;
267    padding: 12px clamp(20px, 5vw, 64px);
268    background: rgba(255,255,255,.92);
269    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
270    border-bottom: 1px solid var(--line);
271  }
272  /* ── DESKTOP: full-bleed the selector bar edge-to-edge of the viewport and CENTER
273        its contents. The bar is JS-pinned (position:fixed) on scroll — pinBar() sets
274        left:0/right:0 there, which is the state users actually see, giving a scrollbar-
275        safe full-width white row. This rule covers the brief STATIC (in-flow) state
276        before/without the pin: width:100vw + the 50%−50vw side margins push the white
277        bar out to the viewport edges. overflow-x:clip on #dpf-galas absorbs the tiny
278        scrollbar-width overshoot so it never spawns a horizontal scrollbar — safe here
279        because #dpf-galas has NO transform, so its position:fixed descendants (the
280        pinned bar, the modals, the Share rail) still escape the clip and are unaffected.
281        Mobile is already full-bleed via the #dpf-galas margin trick, so this is desktop-only. */
282  @media (min-width: 681px) {
283    #dpf-galas { overflow-x: clip; }
284    #dpf-galas .gx-bar { justify-content: center; width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
285  }
286  #dpf-galas .gx-bar__brand {
287    display: flex; align-items: center; gap: 10px;
288    font-size: 16px; letter-spacing: .18em; text-transform: uppercase;
289    font-weight: 700; color: var(--red); white-space: nowrap;
290  }
291  #dpf-galas .gx-bar__brand b { color: var(--red); }
292  #dpf-galas .gx-brand-mini { display: none; }
293  #dpf-galas .gx-pick { display: flex; align-items: center; gap: 9px; white-space: nowrap; }
294  #dpf-galas .gx-count { font-size: 13px; font-weight: 500; color: var(--muted); white-space: nowrap; }
295  /* each count segment ("7 videos" / "154 photos" / "tribute book") links to its
296     section — muted at rest, navy + underline on hover/focus (desktop-only affordance) */
297  #dpf-galas .gx-count-link { color: inherit; text-decoration: none; cursor: pointer; transition: color .15s ease; }
298  #dpf-galas .gx-count-link:hover, #dpf-galas .gx-count-link:focus-visible { color: var(--navy); text-decoration: underline; }
299  #dpf-galas .gx-count-link:focus { outline: none; }
300  #dpf-galas .gx-count-link:focus-visible { outline: 2px solid var(--navy); outline-offset: 2px; border-radius: 3px; }
301  #dpf-galas .gx-pick label { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
302  #dpf-galas .gx-select { text-align: left; text-align-last: left; }
303  #dpf-galas .gx-select option { text-align: left; }
304  #dpf-galas .gx-select {
305    appearance: none; -webkit-appearance: none;
306    font-family: inherit; font-size: 15px; font-weight: 600; color: var(--ink);
307    background: #fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24'><circle cx='12' cy='12' r='11' fill='%232A4A88'/><path d='M7.5 10.25 12 14.75l4.5-4.5' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/></svg>") no-repeat right 8px center;
308    border: 1.5px solid var(--navy); border-radius: 999px;
309    padding: 8px 40px 8px 16px; cursor: pointer; transition: box-shadow .15s ease;
310    /* On load, a slow DPF-red ring ripples outward 3 times to flag the year picker as
311       interactive, then rests. Subtle (low opacity) and disabled for reduced-motion. */
312    animation: dpf-gx-pulse 2.4s ease-out .8s 3;
313  }
314  #dpf-galas .gx-select:hover { box-shadow: 0 3px 10px rgba(42,74,136,.18); }
315  @keyframes dpf-gx-pulse {
316    0%   { box-shadow: 0 0 0 0 rgba(200,37,0,.42); }
317    65%  { box-shadow: 0 0 0 10px rgba(200,37,0,0); }
318    100% { box-shadow: 0 0 0 0 rgba(200,37,0,0); }
319  }
320  /* Mobile pulse: an INWARD (inset) ring instead of the outward one. On mobile the
321     nacelle is pinned directly under the site header, which paints on top of the
322     widget — the header sits outside the widget's transformed stacking context, so
323     no z-index on the dropdown can lift its shadow above it (same reason the header-
324     dim is a body-level strip). An outward shadow therefore got clipped at the
325     header's bottom edge; an inset ring stays inside the dropdown and can never
326     collide with the header. Swapped in via animation-name in the mobile block. */
327  @keyframes dpf-gx-pulse-in {
328    0%   { box-shadow: inset 0 0 0 0 rgba(200,37,0,.55); }
329    65%  { box-shadow: inset 0 0 0 9px rgba(200,37,0,0); }
330    100% { box-shadow: inset 0 0 0 9px rgba(200,37,0,0); }
331  }
332
333  /* ── Per-year intro header ── */
334  /* Full-bleed DPF-red gradient banner (desktop + mobile) holds the eyebrow + title
335     + date/venue, edge to edge; the "Award Recipients" list sits below on the page bg. */
336  #dpf-galas .gx-hero { text-align: center; padding: 0; border-bottom: 1px solid var(--line); }
337  #dpf-galas .gx-hero__banner {
338    position: relative;
339    margin: 10px clamp(16px, 3vw, 32px) 12px;
340    border-radius: 16px;
341    padding: 26px clamp(24px, 5vw, 64px) 30px;
342    background:
343      radial-gradient(95% 135% at 84% -8%, rgba(246,207,112,.32) 0%, rgba(246,207,112,0) 46%),   /* champagne-gold glow, top-right */
344      radial-gradient(70% 100% at 16% -6%, rgba(255,255,255,.09) 0%, rgba(255,255,255,0) 40%),     /* soft sheen, top-left (toned down) */
345      radial-gradient(140% 120% at 50% 130%, rgba(56,4,14,.55) 0%, rgba(56,4,14,0) 60%),            /* deep shadow, bottom — depth */
346      linear-gradient(128deg, #C21230 0%, #A5102A 30%, #850C21 64%, #5B0716 100%);                  /* crimson → deep maroon (no orange) */
347  }
348  /* Engraved-invitation DOUBLE gold rule: a stronger champagne line with a finer
349     companion line just inside it, at a uniform 10px inset on all sides of the
350     full-bleed red banner;
350 mobile overrides to a single flat 7px inset. */
351  #dpf-galas .gx-hero__banner::after { content:""; position:absolute; inset:10px; border:1px solid rgba(245,222,170,.9); border-radius:9px; outline:1px solid rgba(245,222,170,.4); outline-offset:-6px; pointer-events:none; }
352  #dpf-galas .gx-hero__eyebrow {
353    display: inline-flex; align-items: center; gap: 10px; margin-bottom: 6px;
354    text-transform: uppercase; letter-spacing: .2em; font-size: 12px; font-weight: 600; color: #F4DCA6;
355  }
356  #dpf-galas .gx-hero__eyebrow::before, #dpf-galas .gx-hero__eyebrow::after { content:""; width: 28px; height: 1px; background: #F4DCA6; opacity: .6; }
357  #dpf-galas .gx-hero__eyebrow--m { display: none; }   /* mobile-only eyebrow; desktop shows --d ("Death Penalty Focus") */
358  #dpf-galas .gx-hero__title { font-family: 'Playfair Display', Georgia, serif; font-size: clamp(28px, 4.5vw, 46px); font-weight: 700; line-height: 1.1; margin: 0 0 8px; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,.30); }
359  #dpf-galas .gx-ord { font-size: .6em; vertical-align: baseline; position: relative; bottom: .42em; font-weight: 600; margin-left: 1px; }
360  #dpf-galas .gx-hero__meta { font-size: 14.5px; color: rgba(255,255,255,.92); font-weight: 500; font-style: italic; line-height: 1.3; text-shadow:0 1px 2px rgba(0,0,0,.22); }
361  #dpf-galas .gx-hero__meta span { color: #F4DCA6; }
362  /* venue stays soft-white (it's now in its own span, so override the gold above) */
363  #dpf-galas .gx-hero__meta .gx-hero__venue { color: rgba(255,255,255,.92); }
364  #dpf-galas .gx-hero__intro { max-width: 660px; margin: 16px auto 0; font-size: 16px; line-height: 1.6; color: #3a4253; }
365  /* "Award Recipients" list sits BELOW the red banner, on the page background */
366  #dpf-galas .gx-hero__below { padding: 22px clamp(24px, 5vw, 64px) 28px; }
367  #dpf-galas .gx-hero__divider { display:flex; align-items:center; gap:16px; max-width:560px; margin:0 auto 4px; }
368  #dpf-galas .gx-hero__divider::before, #dpf-galas .gx-hero__divider::after { content:""; flex:1; height:1px; background:var(--line); }
369  #dpf-galas .gx-hero__divider span { font-family:'Playfair Display',Georgia,serif; font-size:22px; font-style:italic; color:var(--gold); letter-spacing:.04em; white-space:nowrap; }
370  #dpf-galas .gx-hero__honorees { list-style: none; max-width: 720px; margin: 12px auto 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 8px 22px; text-align: left; padding: 5px; }
371  #dpf-galas .gx-hero__honorees li { font-size: 13.5px; line-height: 1.4; padding-left: 16px; position: relative; color: #3a4253; }
372  #dpf-galas .gx-hero__honorees li::before { content:""; position:absolute; left:0; top:7px; width:6px; height:6px; border-radius:50%; background: var(--red); }
373  #dpf-galas .gx-hero__honorees b { color: var(--ink); font-weight: 600; font-size: 15px; }
374  #dpf-galas .gx-hero__honorees i { font-style: italic; color: var(--navy); }
375  #dpf-galas .gx-hero__pres { font-style: normal; font-weight: 400; color: var(--navy); }
376  /* Desktop: give the Award Recipients more presence (mobile keeps the compact sizes). */
377  @media (min-width: 768px) {
378    #dpf-galas .gx-hero__honorees li { font-size: 16.5px; line-height: 1.45; }
379    #dpf-galas .gx-hero__honorees b  { font-size: 18.5px; }
380    #dpf-galas .gx-hero__honorees li::before { top: 9px; }
381  }
382  /* ── Subtle links on honoree / presenter / award names (no underline; pointer +
383        turns DPF-red on hover/focus). Color inherits so the resting look is unchanged. ── */
384  #dpf-galas .gx-link { cursor: pointer; text-decoration: none; color: inherit; transition: color .15s ease; }
385  #dpf-galas .gx-link:hover, #dpf-galas .gx-link:focus-visible,
386  #dpf-galas .gx-link:hover b, #dpf-galas .gx-link:hover i,
387  #dpf-galas .gx-link:focus-visible b, #dpf-galas .gx-link:focus-visible i { color: var(--red); }
388  #dpf-galas .gx-link:focus { outline: none; }
389  #dpf-galas .gx-link:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; border-radius: 3px; }
390
391  /* ── Info modal: award definitions (static) + people bios (fetched via REST) ── */
392  #dpf-galas .gx-modal { position: fixed; inset: 0; z-index: 100002; display: none; align-items: center; justify-content: center; padding: 20px; background: rgba(10,10,12,.62); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
393  #dpf-galas .gx-modal.is-open { display: flex; }
394  #dpf-galas .gx-modal__box { position: relative; width: 100%; max-width: 560px; max-height: 86vh; overflow-y: auto; overscroll-behavior: contain; background: var(--card); border-radius: 14px; box-shadow: 0 24px 70px rgba(0,0,0,.4); animation: gx-modal-in .25s ease; }
395  /* also contain at the overlay level so wheeling over the backdrop doesn't chain */
396  #dpf-galas .gx-modal { overscroll-behavior: contain; }
397  @keyframes gx-modal-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
398  @media (prefers-reduced-motion: reduce) { #dpf-galas .gx-modal__box { animation: none; } }
399  #dpf-galas .gx-modal__close { position: absolute; top: 12px; right: 12px; z-index: 3; width: 38px; height: 38px; display: grid; place-items: center; border: 0; border-radius: 50%; cursor: pointer; background: rgba(0,0,0,.42); color: #fff; padding: 0; transition: background .15s ease, transform .15s ease; }
400  #dpf-galas .gx-modal__close:hover { background: var(--red); transform: scale(1.08); }
401  #dpf-galas .gx-modal__close svg { width: 18px; height: 18px; }
402  #dpf-galas .gx-modal__img { width: 100%; height: 250px; object-fit: cover; object-position: center 30%; display: block; background: #e9ecf1; border-radius: 14px 14px 0 0; }
403  #dpf-galas .gx-modal__pad { padding: 22px 26px 26px; }
404  #dpf-galas .gx-modal__eyebrow { display: inline-flex; align-items: center; gap: 9px; font-size: 11px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--gold); margin-bottom: 8px; }
405  #dpf-galas .gx-modal__title { font-family: 'Playfair Display', Georgia, serif; font-size: 24px; font-weight: 700; color: var(--ink); line-height: 1.2; margin-bottom: 12px; }
406  #dpf-galas .gx-modal__body { font-size: 14.5px; line-height: 1.62; color: #3a4253; }
407  #dpf-galas .gx-modal__body p { margin-bottom: 12px; }
408  #dpf-galas .gx-modal__body img { max-width: 100%; height: auto; border-radius: 8px; margin: 4px 0 12px; }
409  #dpf-galas .gx-modal__body a { color: var(--navy); }
410  #dpf-galas .gx-modal__body a:hover { color: var(--red); }
411  #dpf-galas .gx-modal__more { display: inline-flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 13.5px; font-weight: 600; color: var(--navy); text-decoration: none; }
412  #dpf-galas .gx-modal__more:hover { color: var(--red); }
413  /* elegant closing flourish: a small DPF-red diamond flanked by gold rules that
414     fade outward — the engraved-invitation motif used elsewhere on the page */
415  #dpf-galas .gx-modal__end { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 22px; }
416  #dpf-galas .gx-modal__end::before, #dpf-galas .gx-modal__end::after { content: ""; width: 46px; height: 1px; }
417  #dpf-galas .gx-modal__end::before { background: linear-gradient(to right, transparent, var(--gold)); }
418  #dpf-galas .gx-modal__end::after { background: linear-gradient(to left, transparent, var(--gold)); }
419  #dpf-galas .gx-modal__end i { display: block; width: 6px; height: 6px; transform: rotate(45deg); background: var(--red); }
420  #dpf-galas .gx-modal__loading { padding: 54px 26px; text-align: center; color: var(--muted); font-style: italic; font-size: 14px; }
421
422  /* ── Section tabs: three equal thirds across the full width, short height ── */
423  #dpf-galas .gx-jump { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding: 14px clamp(18px, 5vw, 64px) 12px; }
424  /* a year with nothing at all hides the whole tab row (nothing below the rule) */
425  #dpf-galas .gx-jump.is-gone { display: none; }
426  #dpf-galas .gx-pill {
427    display: flex; align-items: center; gap: 12px; padding: 9px 16px; min-width: 0;
428    background: var(--card); border: 1px solid var(--line); border-radius: 12px;
429    text-decoration: none; color: var(--ink); box-shadow: 0 1px 2px rgba(28,35,51,.05);
430    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease, background .15s ease;
431  }
432  #dpf-galas .gx-pill > span:last-of-type { min-width: 0; }   /* let the text ellipsize */
433  #dpf-galas .gx-pill:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(42,74,136,.16); border-color: var(--navy); }
434  #dpf-galas .gx-pill__ic { flex: 0 0 auto; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: #f3f0ea; color: var(--navy); transition: background .15s ease, color .15s ease; }
435  #dpf-galas .gx-pill:hover .gx-pill__ic { background: var(--red); color: #fff; }
436  #dpf-galas .gx-pill__ic svg { width: 18px; height: 18px; }
437  #dpf-galas .gx-pill__t { display:block; font-size: 14.5px; font-weight: 600; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
438  #dpf-galas .gx-pill__s { display:block; font-size: 11.5px; color: var(--muted); line-height: 1.2; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
439  /* italic only for the "Content coming soon" placeholder copy (2026+ disabled tabs) */
440  #dpf-galas .gx-pill__s.is-soon { font-style: italic; }
441  /* ── Active tab ── */
442  #dpf-galas .gx-pill.is-active { background:var(--navy); border-color:var(--navy); color:#fff; box-shadow:0 8px 22px rgba(42,74,136,.28); }
443  #dpf-galas .gx-pill.is-active .gx-pill__s { color:rgba(255,255,255,.8); }
444  #dpf-galas .gx-pill.is-active .gx-pill__ic { background:#fff; color:var(--navy); }
445  /* ── Disabled tab — this year has no such content: faint, grayed, non-selectable ── */
446  #dpf-galas .gx-pill.is-disabled { opacity:.4; filter:grayscale(1); pointer-events:none; cursor:default; box-shadow:none; transform:none; }
447
448  /* ── Share cluster moved OUT (2026-08-29): the "Like & Share" rail is now a
449        SITE-WIDE widget in the (BL) Code Snippets plugin (its own #dls namespace),
450        so it appears on every page and shares whichever page it's on. All the
451        former #dpf-galas .gx-share* / .gx-share-toggle / .gx-share__toast rules
452        were removed here — see "LIKE & SHARE (site-wide)/Like-and-Share-Rail.html". ── */
453
454  /* ── Section scaffolding ── */
455  #dpf-galas .gx-section { padding: 25px clamp(24px, 5vw, 64px) 40px; }
456  #dpf-galas #video-program, #dpf-galas #photo-gallery, #dpf-galas #dpfPDFbutton { scroll-margin-top: 76px; }
457  /* tab filter: only the active section shows; it fades/rises in gracefully */
458  #dpf-galas .gx-section.is-hidden { display:none; }
459  @keyframes gx-section-in { from { opacity:0; transform: translateY(10px); } to { opacity:1; transform:none; } }
460  #dpf-galas .gx-section.is-active { animation: gx-section-in .4s ease backwards; }
461  @media (prefers-reduced-motion: reduce) { #dpf-galas .gx-section.is-active { animation:none; } }
462  /* Year-change cross-fade: the page data fades out then back in (the nacelle/
463     dropdown stays solid). Toggled by .gx-swapping on #dpf-galas in selectYear's caller. */
464  #dpf-galas .gx-hero, #dpf-galas .gx-jump, #dpf-galas .gx-section, #dpf-galas .gx-allempty { transition: opacity .3s ease; }
465  #dpf-galas.gx-swapping .gx-hero, #dpf-galas.gx-swapping .gx-jump, #dpf-galas.gx-swapping .gx-section, #dpf-galas.gx-swapping .gx-allempty { opacity: 0; }
466  /* while swapping, suppress the section's own fade-in animation (it would override
467     opacity and pop the section back in mid-swap — the desktop "blink") */
468  #dpf-galas.gx-swapping .gx-section.is-active { animation: none; }
469  #dpf-galas .gx-sec-head { text-align: center; margin-bottom: 24px; }
470  #dpf-galas .gx-sec-head h3 { font-family: 'Playfair Display', Georgia, serif; font-size: clamp(22px, 3vw, 30px); font-weight: 600; }
471  #dpf-galas .gx-sec-head .gx-sec-rule { width: 52px; height: 2px; background: var(--red); margin: 10px auto 0; }
472
473  /* ── Photo gallery grid + lightbox ── */
474  #dpf-galas .gx-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:10px; max-width:min(1600px, calc(100vw - 160px)); margin:0 auto; }
475  /* translateZ(0) gives each cell its own compositor layer so the rounded-corner
476     clip is rasterized once — kills the per-frame jank during the hover zoom */
477  /* translateZ(0) gives each cell its own compositor layer so the rounded-corner
478     clip is rasterized once — kills per-frame jank during the hover zoom. The
479     !important + extra .gx-grid specificity force it past theme/Elementor img rules. */
480  #dpf-galas .gx-ph { position:relative; aspect-ratio:1/1; border-radius:8px; overflow:hidden; cursor:pointer; background:#eee; border:0; padding:0; transform:translateZ(0); }
481  /* NB: will-change is applied only on :hover (below), not here — keeping it on all
482     ~154 images permanently pins that many GPU layers and makes scrolling jerky. */
483  #dpf-galas .gx-grid .gx-ph img { width:100%; height:100%; object-fit:cover; transform:scale(1) !important; transition: transform .55s cubic-bezier(.25,.46,.45,.94), opacity .4s ease !important; opacity:0; backface-visibility:hidden; }
484  #dpf-galas .gx-grid .gx-ph img.is-loaded { opacity:1; }
485  #dpf-galas .gx-grid .gx-ph:hover img { transform: scale(1.06) !important; will-change: transform; }
486  /* optional caption (e.g. people in the photo): a gradient bar that fades in over
487     the lower part of the thumbnail on hover/focus. pointer-events:none so the
488     thumbnail's click-to-zoom still works through it. */
489  #dpf-galas .gx-ph__cap { position:absolute; left:0; right:0; bottom:0; z-index:2; padding:18px 10px 8px; font-size:11.5px; line-height:1.3; font-weight:600; color:#fff; text-align:center; white-space:normal; overflow-wrap:break-word; word-break:normal; text-shadow:0 1px 2px rgba(0,0,0,.5); background:linear-gradient(to top, rgba(0,0,0,.85), rgba(0,0,0,.5) 70%, transparent); opacity:0; transform:translateY(6px); transition:opacity .2s ease, transform .2s ease; pointer-events:none; }
490  #dpf-galas .gx-ph:hover .gx-ph__cap, #dpf-galas .gx-ph:focus-visible .gx-ph__cap { opacity:1; transform:none; }
491  /* the caption itself is click-through (so the photo still opens the lightbox);
492     only the name LINKS within it are interactive (open the bio modal). */
493  /* font:inherit so linked names render at the EXACT same weight/size as plain names */
494  #dpf-galas .gx-ph__cap a { pointer-events:auto; color:#fff; font:inherit; text-decoration:none; cursor:pointer; transition:color .15s ease; }
495  #dpf-galas .gx-ph__cap a:hover, #dpf-galas .gx-ph__cap a:focus-visible { color:#ff7a4d; }
496  /* tiny photo number in the extreme lower-right corner — shown only on hover/focus
497     (a desktop affordance; there's no hover on touch). Unobtrusive: ~9px, dim white. */
498  #dpf-galas .gx-ph__num { position:absolute; right:5px; bottom:4px; z-index:3; font-size:6px; line-height:1; font-weight:600; letter-spacing:.03em; font-variant-numeric:tabular-nums; color:rgba(255,255,255,.5); text-shadow:0 1px 2px rgba(0,0,0,.65); opacity:0; transition:opacity .2s ease; pointer-events:none; }
499  #dpf-galas .gx-ph:hover .gx-ph__num, #dpf-galas .gx-ph:focus-visible .gx-ph__num { opacity:1; }
500  #dpf-galas .gx-cap-x { opacity:.55; }
501  /* small role tag appended to current Board members (driven live by peo
501ple_type) */
502  #dpf-galas .gx-board { font-weight:inherit; opacity:.78; font-size:.9em; }
503  /* name links inside the photo lightbox caption */
504  #dpf-galas .gx-lb__count a { color:#fff; font:inherit; text-decoration:none; cursor:pointer; transition:color .15s ease; }
505  #dpf-galas .gx-lb__count a:hover, #dpf-galas .gx-lb__count a:focus-visible { color:#ff7a4d; }
506  #dpf-galas .gx-gal-actions { text-align:center; margin-top:22px; display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
507  /* ── Photo order toggle (Sequential / Random), pinned to the section's upper-right.
508        The section carries extra top padding so the grid clears the floating toggle now
509        that the section heading (which used to open that gap) has been removed. ── */
510  #dpf-galas #photo-gallery { position:relative; padding-top:25px; }
511  #dpf-galas .gx-order { position:static; display:flex; width:max-content; max-width:100%; margin:0 auto 16px; z-index:5; border:1px solid var(--line); border-radius:999px; overflow:hidden; background:var(--card); box-shadow:0 1px 2px rgba(28,35,51,.05); }
512  #dpf-galas .gx-order__opt { border:0; background:transparent; cursor:pointer; font-family:inherit; font-size:10px; line-height:1.1; font-weight:600; letter-spacing:.04em; color:var(--muted); padding:4px 11px; transition:background .15s ease, color .15s ease; }
513  #dpf-galas .gx-order__opt + .gx-order__opt { border-left:1px solid var(--line); }
514  #dpf-galas .gx-order__opt:hover { color:var(--ink); }
515  #dpf-galas .gx-order__opt.is-on { background:var(--navy); color:#fff; }
516  #dpf-galas .gx-order__opt.is-on:hover { color:#fff; }
517  @media (max-width: 680px) {
518    /* narrow screens: the toggle flows right-aligned in its own row above the grid,
519       so the section drops the desktop toggle-clearance padding */
520    #dpf-galas #photo-gallery { padding-top:18px; }
521    #dpf-galas .gx-order { position:static; display:flex; width:max-content; max-width:100%; margin:0 auto 14px; }
522  }
523  #dpf-galas .gx-btn { display:inline-flex; align-items:center; gap:8px; cursor:pointer; font-family:inherit; font-size:14px; font-weight:600; letter-spacing:.02em; padding:11px 22px; border-radius:999px; border:1.5px solid var(--navy); background:var(--card); color:var(--navy); text-decoration:none; transition: background .15s, color .15s, box-shadow .15s; }
524  #dpf-galas .gx-btn:hover { background:var(--navy); color:#fff; box-shadow:0 4px 14px rgba(42,74,136,.25); }
525  #dpf-galas .gx-btn--red { border-color:var(--red); color:#fff; background:var(--red); }
526  #dpf-galas .gx-btn--red:hover { background:var(--red-d); color:#fff; box-shadow:0 4px 14px rgba(200,37,0,.3); }
527  #dpf-galas .gx-credit { text-align:center; font-size:12px; color:var(--muted); margin-top:14px; font-style:italic; }
528  #dpf-galas .gx-lb { position:fixed; inset:0; z-index:9999; display:none; align-items:center; justify-content:center; background:rgba(10,10,12,.92); }
529  #dpf-galas .gx-lb.is-open { display:flex; }
530  #dpf-galas .gx-lb img { max-width:92vw; max-height:86vh; border-radius:6px; box-shadow:0 10px 50px rgba(0,0,0,.6); }
531  #dpf-galas .gx-lb__x, #dpf-galas .gx-lb__nav { position:absolute; background:rgba(255,255,255,.1); border:0; color:#fff; cursor:pointer; border-radius:50%; display:grid; place-items:center; transition:background .15s; }
532  #dpf-galas .gx-lb__x:hover, #dpf-galas .gx-lb__nav:hover { background:rgba(255,255,255,.25); }
533  #dpf-galas .gx-lb__x { top:18px; right:18px; width:44px; height:44px; font-size:24px; }
534  #dpf-galas .gx-lb__nav { top:50%; transform:translateY(-50%); width:52px; height:52px; font-size:30px; }
535  #dpf-galas .gx-lb__nav.prev { left:18px; } #dpf-galas .gx-lb__nav.next { right:18px; }
536  #dpf-galas .gx-lb__count { position:absolute; bottom:20px; left:50%; transform:translateX(-50%); color:#fff; font-size:13px; letter-spacing:.05em; background:rgba(0,0,0,.4); padding:5px 12px; border-radius:999px; }
537
538  /* ── Tribute journal ── */
539  #dpf-galas .gx-tribute { max-width:760px; margin:0 auto; display:flex; gap:28px; align-items:center; justify-content:center; flex-wrap:wrap; }
540  #dpf-galas .gx-tribute__cover { position:relative; width:260px; aspect-ratio:11/8.5; border-radius:8px; overflow:hidden; box-shadow:0 8px 26px rgba(28,35,51,.22); background:#ddd; flex:0 0 auto; cursor:pointer; border:0; padding:0; display:block; transition:transform .18s ease, box-shadow .18s ease; }
541  #dpf-galas .gx-tribute__cover:hover { transform:translateY(-3px); box-shadow:0 14px 34px rgba(28,35,51,.3); }
542  /* faux spiral-ring binding punched across the TOP edge (book rotated 90° to landscape) */
543  #dpf-galas .gx-tribute__cover::before { content:""; position:absolute; top:7px; left:12px; right:12px; height:9px;
543 z-index:3; pointer-events:none;
544    background-image: radial-gradient(circle at 50% 50%, rgba(255,255,255,.52) 0 32%, rgba(0,0,0,.16) 38% 50%, transparent 56%);
545    background-size: 17px 9px; background-repeat: repeat-x;
546    filter: drop-shadow(0 1px 0 rgba(0,0,0,.12)); }
547  #dpf-galas .gx-tribute__cover::after { content:""; position:absolute; top:0; left:0; right:0; height:20px; z-index:2; pointer-events:none; background:linear-gradient(to bottom, rgba(0,0,0,.16), transparent); }
548  #dpf-galas .gx-tribute__cover img { width:100%; height:100%; object-fit:cover; display:block; }
549  /* Faux cover with a faint reptile-scale emboss: two staggered scallop layers (a light
550     top edge + a dark lower edge per scale) over the same navy gradient — texture only,
551     no colour shift. Tune via the rgba opacities and the 15px×7.5px scale size. */
552  #dpf-galas .gx-tribute__ph { width:100%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; padding:18px;
553    background:
554      radial-gradient(circle at 50% 0%, transparent 6.6px, rgba(255,255,255,.05) 7px 7.8px, transparent 8.2px) 0 0/15px 7.5px,
555      radial-gradient(circle at 50% 0%, transparent 6.6px, rgba(255,255,255,.05) 7px 7.8px, transparent 8.2px) 7.5px 3.75px/15px 7.5px,
556      radial-gradient(circle at 50% 0%, transparent 7.8px, rgba(0,0,0,.06) 8px 8.8px, transparent 9.2px) 0 0/15px 7.5px,
557      radial-gradient(circle at 50% 0%, transparent 7.8px, rgba(0,0,0,.06) 8px 8.8px, transparent 9.2px) 7.5px 3.75px/15px 7.5px,
558      linear-gradient(160deg,#2A4A88,#1d3055);
559    color:#fff; font-family:'Playfair Display',Georgia,serif; text-align:center; }
560  #dpf-galas .gx-tribute__ph svg { width:30px; height:30px; color:var(--gold); margin-bottom:4px; }
561  #dpf-galas .gx-tribute__ph b { font-size:30px; font-weight:700; line-height:1; }
562  #dpf-galas .gx-tribute__ph { font-size:15px; letter-spacing:.02em; }
563  #dpf-galas .gx-tribute__body { flex:1 1 280px; min-width:260px; text-align:center; }
564  #dpf-galas .gx-tribute__body p { font-size:15px; color:#3a4253; line-height:1.6; margin-bottom:18px; }
565  #dpf-galas .gx-tribute__hint { font-size:13px; color:var(--muted); font-style:italic; }
566  #dpf-galas .gx-empty { grid-column:1 / -1; width:100%; flex:1 1 100%; text-align:center; color:var(--muted); padding:30px; font-style:italic; white-space:nowrap; }
567  /* whole-year "nothing yet" message, shown below the honorees rule */
568  #dpf-galas .gx-allempty { display:none; text-align:center; font-style:italic; text-transform:lowercase; font-size:15px; color:var(--muted); padding:48px 24px; }
569  #dpf-galas .gx-allempty.is-on { display:block; }
570
571  /* ── PDF viewer styles live in the dedicated <style> block further down,
572        alongside the DPF PDF Viewer markup + PDF.js script (kept together,
573        unscoped & dpf-pdf- prefixed, exactly as the standalone widget ships). ── */
574
575  /* ════════ Instance-based DPF Video Player (ported, scoped to .dpfvp) ════════ */
576  /* The player fills available space but never overflows: it is the SMALLEST of
577     (a) a 1600px hard cap, (b) viewport width minus an ~80px/side gutter so the fixed
578     Share rail (~70px from the edge) clears, and (c) a viewport-HEIGHT limit — the width
579     at which the 16:9 video (+ the playlist sidebar, ~321px) stays short enough to leave
580     ~200px for the chrome above and the caption below. So on a tall/wide monitor it grows;
581     on a short window it shrinks instead of pushing content off the bottom. Mobile resets
582     to full width below. Knobs: 1600 = max width, 200 = vertical breathing room. */
583  #dpf-galas .dpfvp { max-width:min(1600px, calc(100vw - 160px), calc((100vh - 200px) * 16 / 9 + 321px)); margin:0 auto; --vp-side:clamp(245px, 22.93vw, 321px); }
584  #dpf-galas .dpfvp-shell { background:var(--vp-bg-root); border:1px solid var(--vp-border); border-radius:4px; overflow:hidden; box-shadow:0 4px 18px rgba(28,35,51,.06); display:flex; flex-direction:column; }
585  /* The video+caption column drives the height; the playlist is pinned to that
586     same box and scrolls internally, so the whole player ends on one even bottom edge. */
587  #dpf-galas .dpfvp-body { position:relative; }
588  #dpf-galas .dpfvp-main { min-width:0; display:flex; flex-direction:column; margin-right:var(--vp-side); }
589  #dpf-galas .dpfvp.is-single .dpfvp-main { margin-right:0; }
590  #dpf-galas .dpfvp-stage { position:relative; width:100%; padding-top:56.25%; background:#000; }
591  #dpf-galas .dpfvp-stage:focus { outline:none; }   /* focused on play so Esc closes; no visible ring */
592  #dpf-galas .dpfvp-poster { position:absolute; inset:0; background:#0a0a0a center/cover no-repeat; cursor:pointer; display:flex; align-items:center; justify-content:center; overflow:hidden; }
593  #dpf-galas .dpfvp-poster::before { content:''; position:absolute; inset:0; background:radial-gradient(ellipse at center, transparent 30%, rgba(0,0,0,.55) 100%); pointer-events:none; }
594  /* Refined play control: a small, semi-transparent rounded rectangle tucked into
595     the lower-left of the video — subtle but obvious, no pulsing. */
596  #dpf-galas .dpfvp-playbtn { position:absolute; left:14px; bottom:85px; z-index:3; width:52px; height:34px; border-radius:8px; display:flex; align-items:center; justify-content:center; background:rgba(16,16,18,.40); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); border:1px solid rgba(255,255,255,.26); box-shadow:0 2px 10px rgba(0,0,0,.28); transition:background .2s ease, border-color .2s ease, transform .2s ease; }
597  #dpf-galas .dpfvp-playbtn-face { position:static; background:transparent; display:flex; align-items:center; justify-content:center; }
598  #dpf-galas .dpfvp-playbtn svg { width:15px; height:15px; margin-left:2px; }
599  #dpf-galas .dpfvp-poster:hover .dpfvp-playbtn { background:rgba(200,37,0,.62); border-color:rgba(255,255,255,.42); transform:translateY(-1px); }
600  /* Bunny videos: the Bunny player supplies its own big centered play control, so
601     OUR small play button is dropped 70px (85→15) to tuck it into the corner and
602     not compete. The .is-bunny class is toggled per-loaded-video in loadVideo(). */
603  #dpf-galas .dpfvp-poster.is-bunny .dpfvp-playbtn { bottom:15px; }
604  #dpf-galas .dpfvp-iframe { position:absolute; inset:0; display:none; }
605  #dpf-galas .dpfvp-iframe iframe { width:100%; height:100%; border:none; display:block; }
606  /* Theatrical: the X rests a soft gray over the playing video, brightening to white only on hover. */
607  #dpf-galas .dpfvp-close { display:none; position:absolute; top:10px; right:10px; z-index:5; width:38px; height:38px; place-items:center; border:none; border-radius:50%; cursor:pointer; background:rgba(0,0,0,.55); color:rgba(255,255,255,.92); padding:0; opacity:.6; transition:background .15s ease, transform .15s ease, color .15s ease, opacity .15s ease; }
608  #dpf-galas .dpfvp-close:hover { background:var(--vp-red); transform:scale(1.08); color:#fff; opacity:1; }
609  #dpf-galas .dpfvp-close svg { width:18px; height:18px; display:block; }
610  /* "Up next ▶" one-tap continue — overlays a chained clip; the primary continue control on Safari/iOS. */
611  #dpf-galas .dpfvp-upnext { position:absolute; top:12px; left:12px; z-index:5; display:inline-flex; align-items:center; gap:8px; max-width:72%; padding:8px 13px; border:0; border-radius:999px; background:rgba(9,13,22,.9); color:rgba(255,255,255,.9); font-family:inherit; line-height:1.15; cursor:pointer; box-shadow:0 4px 14px rgba(0,0,0,.4); opacity:0; pointer-events:none; transition:opacity .3s ease, background .18s ease; -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }
612  #dpf-galas .dpfvp-upnext.is-on { opacity:.6; pointer-events:auto; }
613  #dpf-galas .dpfvp-upnext:hover { background:var(--vp-red); opacity:1; }
614  #dpf-galas .dpfvp-upnext-lead { text-transform:uppercase; letter-spacing:.06em; font-size:9px; font-weight:700; opacity:.78; flex:0 0 auto; }
615  #dpf-galas .dpfvp-upnext-name { font-weight:700; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
616  #dpf-galas .dpfvp-upnext svg { width:15px; height:15px; flex:0 0 auto; opacity:.92; }
617  #dpf-galas .dpfvp-upnext--lb { top:auto; bottom:calc(16px + env(safe-area-inset-bottom, 0px)); left:50%; transform:translateX(-50%); max-width:86%; padding:11px 18px; }
618  /* Mobile lightbox "Up next" position: PORTRAIT → just below the centered 16:9 video;
619     LANDSCAPE → upper-left over the video (like desktop). The video is full-width minus
620     the lightbox's 16px padding, so its half-height is (100vw - 32px) * 9/32. */
621  @media (orientation:portrait){
622    #dpf-galas .dpfvp-upnext--lb { top:calc(50% + (100vw - 32px) * 9 / 32 + 12px); bottom:auto; left:50%; transform:translateX(-50%); }
623  }
624  @media (orientation:landscape){
625    #dpf-galas .dpfvp-upnext--lb { top:18px; bottom:auto; left:18px; transform:none; }
626  }
627  #dpf-galas .dpfvp-divider { height:2px; background:linear-gradient(to right, transparent, var(--vp-gold) 20%, var(--vp-gold) 80%, transparent); flex-shrink:0; }
628  /* DESKTOP info panel — compacted to ~2/3 height (slimmer padding, tighter margins,
629     slightly smaller type) while still showing every field. Mobile overrides below. */
630  #dpf-galas .dpfvp-info { padding:8px 22px 9px; background:var(--vp-bg-main); text-align:center; }
631  #dpf-galas .dpfvp-info-eyebrow { display:inline-flex; align-items:center; gap:9px; font-size:11px; font-weight:600; letter-spacing:.2em; text-transform:uppercase; color:var(--vp-gold); line-height:1.3; margin-bottom:3px; }
632  #dpf-galas .dpfvp-info-eyebrow::before, #dpf-galas .dpfvp-info-eyebrow::after { content:""; width:22px; height:1px; background:var(--vp-gold); opacity:.55; }
633  #dpf-galas .dpfvp-info-name { font-family:'Playfair Display',Georgia,serif; font-size:21px; font-weight:700; color:var(--vp-text); line-height:1.16; }
634  #dpf-galas .dpfvp-info-work { font-size:14px; font-style:italic; color:var(--vp-text2); line-height:1.3; margin-top:2px; }
635  #dpf-galas .dpfvp-info-presenter { font-size:12px; letter-spacing:.02em; color:var(--vp-dim); margin-top:2px; }
636  #dpf-galas .dpfvp-info-presenter b { color:var(--vp-text2); font-weight:600; }
637  #dpf-galas .dpfvp-info-desc { font-size:13px; color:var(--vp-text2); line-height:1.42; margin-top:5px; }
638  /* MOBILE: compact the info panel to ~half its height — slim padding, tight margins,
639     smaller type — while still showing every field (the shorter "work"/presenter lines
640     also collapse from two lines to one at these sizes). Desktop keeps the roomy sizing. */
641  @media (max-width: 680px) {
642    #dpf-galas .dpfvp-info { padding:8px 16px 10px; }
643    #dpf-galas .dpfvp-info-eyebrow { font-size:9.5px; letter-spacing:.14em; gap:6px; line-height:1.2; margin-bottom:2px; }
644    #dpf-galas .dpfvp-info-eyebrow::before, #dpf-galas .dpfvp-info-eyebrow::after { width:14px; }
645    #dpf-galas .dpfvp-info-name { font-size:18px; line-height:1.15; }
646    #dpf-galas .dpfvp-info-work { font-size:12.5px; line-height:1.25; margin-top:2px; }
647    #dpf-galas .dpfvp-info-presenter { font-size:11px; margin-top:2px; }
648    #dpf-galas .dpfvp-info-desc { font-size:11.5px; line-height:1.4; margin-top:3px; }
649  }
650  #dpf-galas .dpfvp-side { position:absolute; top:0; right:0; bottom:0; width:var(--vp-side); background:var(--vp-bg-list); border-left:1px solid var(--vp-border); display:flex; flex-direction:column; }
651  #dpf-galas .dpfvp-list { flex:1 1 auto; min-height:0; overflow-y:auto; }
652  /* Bookend caps — short gray bars at the very top & bottom of the playlist so you can
653     tell when you've hit the first / last video while scrolling. They live in the list's
654     scroll flow (::before/::after) so they scroll to the edges and don't shift item indices. */
655  #dpf-galas .dpfvp-list::before,
656  #dpf-galas .dpfvp-list::after { content:''; display:block; height:30px; background:rgba(138,147,163,.14); }
657  #dpf-galas .dpfvp-list::before { border-bottom:1px solid var(--vp-border); }
658  #dpf-galas .dpfvp-list::after  { border-top:1px solid var(--vp-border); }
659  /* three tiers, as compact as possible: centered eyebrow · thumb-left+name-right · centered work */
660  /* extra right padding reserves room for the custom scrollbar (track right:3 + width:9) */
661  /* Compact panel: left-aligned eyebrow hugging the panel top, then the thumbnail
662     with the name + work stacked to its right (name caps aligned to the thumb's top). */
663  #dpf-galas .dpfvp-item { display:flex; flex-direction:column; padding:2px 14px 7px 13px; border-bottom:1px solid var(--vp-dim); cursor:pointer; transition:background .15s ease; border-left:3px solid transparent; }
664  #dpf-galas .dpfvp-item:hover { background:var(--vp-item-hover); }
665  #dpf-galas .dpfvp-item.is-on { background:var(--vp-item-active); border-left-color:var(--vp-red); }
666  #dpf-galas .dpfvp-it-eyebrow { text-align:left; font-size:clamp(8.7px, 0.69vw, 9.7px); font-weight:700; letter-spacing:.13em; text-transform:uppercase; color:var(--vp-gold); margin:0 0 1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
667  #dpf-galas .dpfvp-it-mid { display:flex; flex-direction:row; align-items:flex-start; gap:11px; }
668  #dpf-galas .dpfvp-it-thumb { width:clamp(78px, 7.3vw, 100px); aspect-ratio:16/9; flex-shrink:0; border-radius:5px; background:#222 center/cover no-repeat; position:relative; overflow:hidden; box-shadow:0 1px 4px rgba(0,0,0,.18); }
669  #dpf-galas .dpfvp-it-thumb::after { content:''; position:absolute; inset:0; background:rgba(0,0,0,.14); }
670  #dpf-galas .dpfvp-it-num { position:absolute; left:5px; top:4px; z-index:1; font-size:10px; font-weight:700; color:#fff; line-height:1; text-shadow:0 1px 3px rgba(0,0,0,.7); }
671  #dpf-galas .dpfvp-it-text { flex:1 1 auto; min-width:0; }
672  #dpf-galas .dpfvp-it-name { text-align:left; font-size:clamp(11.2px, 0.95vw, 13.3px); font-weight:700; color:var(--vp-text); line-height:1.16; margin-top:-2px; }
673  #dpf-galas .dpfvp-it-work { text-align:left; font-size:clamp(10.2px, 0.81vw, 11.2px); font-style:italic; color:var(--vp-text2); line-height:1.28; margin-top:2px; }
674  #dpf-galas .dpfvp-item.is-on .dpfvp-it-name { color:var(--vp-red); }
675  #dpf-galas .dpfvp.is-single .dpfvp-side { display:none; }
676  /* native scrollbar hidden — replaced by an always-visible custom bar (below),
677     so the "there's more to scroll" cue shows on iOS, Android AND desktop */
678  #dpf-galas .dpfvp-list { scrollbar-width:none; -ms-overflow-style:none; }
679  #dpf-galas .dpfvp-list::-webkit-scrollbar { width:0; height:0; display:none; }
680  #dpf-galas .dpfvp-sb-track { position:absolute; top:0; bottom:0; right:3px; width:9px; border-radius:6px; background:var(--vp-border); z-index:4; display:none; pointer-events:none; }
681  #dpf-galas .dpfvp-sb-thumb { position:absolute; top:0; left:0; width:100%; min-height:30px; border-radius:6px; background:var(--vp-dim); pointer-events:auto; cursor:grab; transition:background .15s ease; }
682  #dpf-galas .dpfvp-sb-thumb:hover { background:var(--vp-text2); }
683  #dpf-galas .dpfvp-sb-thumb:active { cursor:grabbing; background:var(--vp-text2); }
684
685  /* ── Mobile video lightbox: centered, full-screen, everything else dimmed ── */
686  #dpf-galas .gx-vlb { position:fixed; inset:0; z-index:99999; display:none; align-items:center; justify-content:center; background:rgba(8,8,10,.93); padding:16px; }
687  #dpf-galas .gx-vlb.is-open { display:flex; }
688  #dpf-galas .gx-vlb__frame { position:relative; width:100%; max-width:900px; aspect-ratio:16/9; background:#000; border-radius:4px; overflow:hidden; box-shadow:0 24px 70px rgba(0,0,0,.6); }
689  #dpf-galas .gx-vlb__frame iframe { width:100%; height:100%; border:0; display:block; }
690  #dpf-galas .gx-vlb__x { position:absolute; top:16px; right:16px; width:40px; height:40px; display:grid; place-items:center; border:0; border-radius:50%; background:rgba(0,0,0,.5); color:#fff; cursor:pointer; padding:0; z-index:2; transition:background .15s ease, transform .15s ease; }
691  #dpf-galas .gx-vlb__x:hover { background:rgba(200,37,0,.85); transform:scale(1.08); }
692  #dpf-galas .gx-vlb__x svg { width:18px; height:18px; display:block; }
693
694  /* While a video is playing in this widget, suppress the site's custom "Back to
695     Top" button (id #dpf-back-to-top, injected by the theme) so it never overlaps
696     the video — notably on mobile landscape. It returns once playback stops.
697     NOTE: intentionally UNSCOPED (the button lives outside #dpf-galas). This
698     selector is more specific than the button's own ".is-visible" rule and both
699     use !important, so it reliably wins regardless of scroll position. */
700  html.dpf-video-on #dpf-back-to-top,
701  html.dpf-video-on #dpf-back-to-top.is-visible { opacity:0 !important; pointer-events:none !important; }
702  /* On mobile the theme was floating that same Back-to-Top button up to mid-page.
703     It ships CORRECT on desktop (position:fixed; bottom:16px; right:28px) — so just
704     pin it back to the bottom-right corner at mobile/tablet widths. UNSCOPED (the
705     button lives outside #dpf-galas) + !important so it beats the theme's own rule,
706     and beats any inline `top` the theme's JS sets (an !important external rule wins
707     over a non-important inline style). Caveat: this can't help if a mobile-only
708     TRANSFORMED ancestor is the cause (that needs a theme-side fix), but a stray
709     top/position rule is by far the likeliest culprit. */
710  @media (max-width: 1024px) {
711    #dpf-back-to-top, #dpf-back-to-top.is-visible {
712      position: fixed !important; top: auto !important; bottom: 16px !important; right: 28px !important;
713    }
714  }
715
716  @media (max-width: 680px) {
717    /* FULL-BLEED: break the widget out of the Elementor column's side padding so it uses
718       the whole phone viewport. Content still sits ~8px in via the section paddings below
719       (not literally edge-to-edge). Margin-only — NO transform, which would trap the
720       position:fixed pieces (pinned bar, video lightbox, modals). If the widget's Elementor
721       section isn't a centered full-width container this can mis-align; in that case reduce
722       the column's mobile padding in Elementor instead and delete this rule. */
723    #dpf-galas { width:auto; margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw); }
724    /* nacelle: edge-to-edge, square bottom; contents raised 6px (top padding 10→4) */
725    #dpf-galas .gx-bar { gap:8px; padding:4px 8px 10px; border-radius:0; }
726    /* swap the year-picker's outward pulse for the contained inset ring (dpf-gx-pulse-in)
727       so it isn't clipped by the header pinned just above; timing/delay/count carry over
728       from the base shorthand — only the keyframe name changes here */
729    #dpf-galas .gx-select { animation-name: dpf-gx-pulse-in; }
730    #dpf-galas .gx-bar__brand { font-size:11px; letter-spacing:.08em; }
731    /* full-bleed hero: a LAYERED DPF-red gradient banner (modeled on /statistics/)
732       — base red multi-stop + soft white & gold radial glows — holds the
733       HIGHLIGHTS eyebrow, the title, and the date/venue, edge to edge */
734    #dpf-galas .gx-hero { padding:0; }
735    #dpf-galas .gx-hero__banner {
736      position:relative;
737      margin:8px 5px 10px;
738      border-radius:12px;
739      padding:9px 20px 15px;
740      background:
741        radial-gradient(120% 140% at 12% 0%, rgba(255,255,255,.16) 0%, rgba(255,255,255,0) 46%),
742        radial-gradient(120% 120% at 85% 0%, rgba(212,160,23,.18) 0%, rgba(212,160,23,0) 52%),
743        linear-gradient(135deg, #E2360A 0%, #C82500 55%, #A01E00 100%);
744    }
745    /* thin elegant champagne-gold rule, inset ~7px inside the red banner */
746    #dpf-galas .gx-hero__banner::after { content:""; position:absolute; inset:7px; border:1px solid rgba(245,222,170,.8); border-radius:7px; outline:none; pointer-events:none; }
747    /* mobile eyebrow: "HIGHLIGHTS", champagne-gold for contrast on the red, NO rule line */
748    #dpf-galas .gx-hero__eyebrow--d { display:none; }
749    #dpf-galas .gx-hero__eyebrow--m { display:inline-flex; color:#F4DCA6; margin-bottom:2px; }
750    #dpf-galas .gx-hero__eyebrow--m::before, #dpf-galas .gx-hero__eyebrow--m::after { display:none; }
751    /* white title + subtle drop shadow (slicker than a hard stroke); date in
752       champagne-gold as a refined accent, venue in soft white */
753    #dpf-galas .gx-hero__title { margin:0 0 11px; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,.30); }
754    /* drop the event name ("Awards Dinner") to a smaller second line, so the title
755       reads "34th Annual" (large) / "Awards Dinner" (smaller) on mobile */
756    #dpf-galas .gx-hero__title-evt { display:block; font-size:.7em; line-height:1.1; margin-top:4px; letter-spacing:.03em; word-spacing:.3em; }
757    #dpf-galas .gx-hero__meta { color:rgba(255,255,255,.92); text-shadow:0 1px 2px rgba(0,0,0,.22); white-space:nowrap; }
758    #dpf-galas .gx-hero__meta span { color:#F4DCA6; }
759    /* shrink the venue so date + location always stay on one line on mobile */
760    #dpf-galas .gx-hero__meta .gx-hero__venue { font-size:.8em; }
761    #dpf-galas .gx-hero__below { padding:14px 8px 12px; }
762    #dpf-galas .gx-hero__divider { margin:0 auto 4px; }     /* tighter gap above the recipients */
763    #dpf-galas .gx-hero__honorees { margin-top:8px; gap:4px 22px; }   /* tighter vertical gap between recipient items on mobile */       /* tighter gap below "Award Recipients" */
764    #dpf-galas .gx-brand-full { display:none; }
765    #dpf-galas .gx-brand-mini { display:inline; }
766    #dpf-galas .gx-pick { flex:1 1 auto; justify-content:flex-start; min-width:0; }
767    #dpf-galas .gx-count { display:none; }   /* counts are a desktop affordance */
768    #dpf-galas .gx-select { width:auto; font-size:12.5px; font-weight:600; padding:7px 34px 7px 12px; background-position:right 7px center; }
769    /* still three equal thirds, but stacked icon-over-title and centered so the
770       narrow columns stay readable and short; descriptions drop out */
771    #dpf-galas .gx-jump { gap:6px; padding:12px 8px 10px; }
772    #dpf-galas .gx-pill { flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:5px; padding:8px 6px; border-radius:10px; }
773    #dpf-galas .gx-pill__s { display:none; }
774    #dpf-galas .gx-pill__ic { display:none; }   /* icons omitted on mobile (per request) */
775    /* Two-word tab names break one-word-per-line so all three pills wrap uniformly —
776       never a 2-line tab beside a 1-line one. The words are wrapped in <span>s in the
777       markup; we block-stack them here. The grid already equalizes the pills' heights. */
778    #dpf-galas .gx-pill__t { font-size:12px; line-height:1.18; white-space:normal; }
779    #dpf-galas .gx-pill__t span { display:block; }
780    #dpf-galas .gx-pill > span:last-of-type { text-align:center; }
781    #dpf-galas .gx-tribute { flex-direction:column; }
782    #dpf-galas .dpfvp-playbtn { bottom:45px; }
782   /* desktop raises it 40px more; mobile stays */
783    #dpf-galas .dpfvp-poster.is-bunny .dpfvp-playbtn { bottom:15px; }   /* Bunny: drop ours toward the corner */
784    #dpf-galas .dpfvp { max-width:none; }   /* Share rail hidden on mobile → no right gutter needed; fill the section */
785    #dpf-galas .dpfvp-main { margin-right:0; }
786    #dpf-galas .dpfvp-side { position:relative; top:auto; right:auto; bottom:auto; width:100%; border-left:none; border-top:1px solid var(--vp-border); }
787    /* Video Program fills ~97% of the container on mobile */
788    #dpf-galas #video-program { padding-left:1.5%; padding-right:1.5%; }
789    /* Photo Gallery on mobile: two columns, slightly larger thumbs that reach
790       ~10px closer to the screen edges (less section side-padding + tighter gap) */
791    #dpf-galas #photo-gallery { padding-left:8px; padding-right:8px; }
792    #dpf-galas .gx-grid { grid-template-columns: repeat(2, 1fr); gap:6px; max-width:none; }
793    #dpf-galas .dpfvp-list { max-height:340px; }
794  }
795
796/* === PDF VIEWER STYLES (was the 2nd inline <style> block) === */
797/* ── All rules prefixed dpf-pdf- to avoid theme collisions ── */
798#dpf-pdf-overlay *, #dpf-pdf-overlay *::before, #dpf-pdf-overlay *::after { box-sizing: border-box; margin: 0; padding: 0; }
799
800#dpf-pdf-overlay {
801  display: none; position: fixed; inset: 0;
802  background: rgba(10, 10, 10, 0.80);
803  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
804  z-index: 999999; align-items: center; justify-content: center; padding: 20px;
805}
806#dpf-pdf-overlay.dpf-pdf-on { display: flex; animation: dpf-pdf-bg-in .20s ease both; }
807@keyframes dpf-pdf-bg-in { from { opacity: 0 } to { opacity: 1 } }
808
809#dpf-pdf-wrap {
810  position: relative; width: min(1400px, calc(100vw - 40px));
811  height: calc(100vh - 40px); max-height: calc(100vh - 40px);
812  display: flex; flex-direction: column;
813  animation: dpf-pdf-pop-in .24s cubic-bezier(.34, 1.18, .64, 1) both;
814}
815@keyframes dpf-pdf-pop-in { from { opacity: 0; transform: scale(.96) translateY(8px) } to { opacity: 1; transform: scale(1) translateY(0) } }
816
817#dpf-pdf-close {
818  position: absolute; top: -16px; right: -16px; width: 32px; height: 32px;
819  background: #fff; border: none; border-radius: 50%; cursor: pointer;
820  display: flex; align-items: center; justify-content: center;
821  box-shadow: 0 2px 8px rgba(0,0,0,.28), 0 0 0 1px rgba(0,0,0,.07);
822  transition: background .13s ease, transform .13s ease; z-index: 10; flex-shrink: 0; line-height: 1;
823}
824#dpf-pdf-close:hover { background: #f0f0f0; transform: scale(1.10); }
825#dpf-pdf-close:active { background: #e4e4e4; transform: scale(.97); }
826#dpf-pdf-close svg { display: block; pointer-events: none; }
827
828#dpf-pdf-frame {
829  background: #fff; border-radius: 9px;
830  box-shadow: 0 24px 64px rgba(0,0,0,.44), 0 4px 16px rgba(0,0,0,.22);
831  overflow: hidden; display: flex; flex-direction: column; flex: 1; min-height: 0;
832}
833#dpf-pdf-header {
834  display: flex; align-items: center; justify-content: space-between; gap: 16px;
835  padding: 13px 20px; background: #f7f7f7; border-bottom: 1px solid #e2e2e2; flex-shrink: 0;
836}
837#dpf-pdf-title { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif; font-size: 13.5px; font-weight: 600; color: #1a1a1a; letter-spacing: .012em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
838#dpf-pdf-meta { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif; font-size: 12px; color: #aaa; white-space: nowrap; flex-shrink: 0; }
839#dpf-pdf-body { position: relative; flex: 1 1 0; min-height: 0; overflow: hidden; }
840#dpf-pdf-scroll { width: 100%; height: 100%; overflow-y: auto; overflow-x: auto; background: #e0e0e0; -webkit-overflow-scrolling: touch; }
841#dpf-pdf-pages { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 20px; min-width: min-content; }
842.dpf-pdf-page { display: block; background: #fff; box-shadow: 0 1px 8px rgba(0,0,0,.18), 0 0 0 .5px rgba(0,0,0,.08); flex-shrink: 0; }
843#dpf-pdf-loading, #dpf-pdf-error { display: none; align-items: center; justify-content: center; gap: 10px; padding: 72px 24px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; font-size: 13.5px; color: #999; }
844.dpf-pdf-spin { width: 20px; height: 20px; border: 2px solid #d8d8d8; border-top-color: #888; border-radius: 50%; animation: dpf-pdf-spin .65s linear infinite; flex-shrink: 0; }
845@keyframes dpf-pdf-spin { to { transform: rotate(360deg) } }
846#dpf-pdf-controls { position: absolute; left: 50%; transform: translateX(-50%); bottom: 22px; display: inline-flex; align-items: center; gap: 3px; padding: 6px 10px; background: rgba(204, 204, 204, 0.72); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-radius: 100px; opacity: 0; pointer-events: none; transition: opacity .18s ease; white-space: nowrap; z-index: 5; }
847#dpf-pdf-body:hover #dpf-pdf-controls, #dpf-pdf-controls:hover { opacity: 1; pointer-events: auto; }
848#dpf-pdf-controls.dpf-pdf-ctrl-top { bottom: auto; top: 22px; }
849.dpf-pdf-btn { background: none; border: none; cursor: pointer; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: background .12s ease; padding: 0; color: rgba(40,40,40,.88); flex-shrink: 0; }
850.dpf-pdf-btn:hover { background: rgba(0,0,0,.10); }
851.dpf-pdf-btn:active { background: rgba(0,0,0,.18); }
852.dpf-pdf-btn svg { display: block; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; overflow: visible; }
853.dpf-pdf-sep { width: 1px; height: 20px; background: rgba(0,0,0,.20); margin: 0 3px; flex-shrink: 0; }
854@media (max-width: 600px) {
855  #dpf-pdf-overlay { align-items: flex-end; padding: 0; }
856  #dpf-pdf-wrap { width: 100%; max-height: 94dvh; animation: dpf-pdf-slide-up .28s cubic-bezier(.34, 1.10, .64, 1) both; }
857  @keyframes dpf-pdf-slide-up { from { transform: translateY(32px); opacity: 0 } to { transform: translateY(0); opacity: 1 } }
858  #dpf-pdf-frame { border-radius: 18px 18px 0 0; max-height: 94dvh; }
859  #dpf-pdf-close { position: absolute; top: 14px; right: 14px; transform: none; width: 28px; height: 28px; box-shadow: none; background: #e8e8e8; }
860  #dpf-pdf-close:hover { background: #ddd; transform: scale(1.06); }
861  #dpf-pdf-header { padding-right: 54px; position: relative; padding-top: 22px; }
862  #dpf-pdf-controls { opacity: 1; pointer-events: auto; bottom: 16px; }
863  #dpf-pdf-header::before { content: ''; position: absolute; top: 8px; left: 50%; transform: translateX(-50%); width: 36px; height: 4px; background: #d0d0d0; border-radius: 100px; }
864}
865
866</style>
867
868<style id="bl-snip-css-25482">
869/* Font Awesome chevrons without loading Font Awesome.
870   Elementor's FA4 support is off (speed), so the few leftover <i class="fas fa-chevron-right"> icons
871   (e.g. "Read More" in the related-posts box on posts) are drawn here with the same shape. */
872i.fas.fa-chevron-right {
873  display: inline-block;
874  width: .55em;
875  height: .85em;
876  margin-left: .35em;
877  vertical-align: -0.05em;
878  background-color: currentColor;
879  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'%3E%3Cpath d='M285.5 273L91.1 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.7-22.7c-9.4-9.4-9.4-24.5 0-33.9L188.5 256 34.5 101.3c-9.3-9.4-9.3-24.5 0-33.9l22.7-22.7c9.4-9.4 24.6-9.4 33.9 0L285.5 239c9.4 9.4 9.4 24.6 0 34z'/%3E%3C/svg%3E") no-repeat center / contain;
880          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'%3E%3Cpath d='M285.5 273L91.1 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.7-22.7c-9.4-9.4-9.4-24.5 0-33.9L188.5 256 34.5 101.3c-9.3-9.4-9.3-24.5 0-33.9l22.7-22.7c9.4-9.4 24.6-9.4 33.9 0L285.5 239c9.4 9.4 9.4 24.6 0 34z'/%3E%3C/svg%3E") no-repeat center / contain;
881}
882
883</style>
884
885<script id="bl-snip-js-24040">
886/* this is the GiveCloud 'Bridge Code' that allows the functioning of all their donation widgets and content on the Death Penalty Focus website. If this is removed or modified, those widgets and content will not work! */
887
888
889(function(g,c,l,d){
890  l=g.createElement(c);l.async=1;l.src="https://death-penalty-focus.givecloud.co/v1/widgets.js";
891  d=g.getElementsByTagName(c)[0];d.parentNode.insertBefore(l,d);
892})(document, "script");
893
894
895</script>
895
896
897<script id="bl-snip-js-24035">
898document.addEventListener('DOMContentLoaded', function () {
899  const toggle = document.querySelector('#header_share_only_toggle input[type="checkbox"]')
900    || document.querySelector('[id*="header_share_only_toggle"] input')
901    || document.querySelector('[class*="header_share_only_toggle"] input');
902
903  function updateHeaderDisplay() {
904    if (toggle && toggle.checked) {
905      document.body.classList.add('share-only-header');
906    } else {
907      document.body.classList.remove('share-only-header');
908    }
909  }
910
911  updateHeaderDisplay();
912  if (toggle) {
913    toggle.addEventListener('change', updateHeaderDisplay);
914  }
915});
916</script>
916
917</head>
918<body class="home wp-singular page-template-default page page-id-2 wp-custom-logo wp-embed-responsive wp-theme-hello-elementor wp-child-theme-hello-theme-child-master hello-elementor-default elementor-default elementor-kit-10 elementor-page elementor-page-2">
919
920
921<a class="skip-link screen-reader-text" href="#content">Skip to content</a>
922
923		<header data-elementor-type="header" data-elementor-id="12" class="elementor elementor-12 elementor-location-header" data-elementor-post-type="elementor_library">
924			<div class="elementor-element elementor-element-506776d3 e-con-full e-flex e-con e-parent" data-id="506776d3" data-element_type="container" data-e-type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;,&quot;sticky&quot;:&quot;top&quot;,&quot;sticky_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;],&quot;sticky_offset&quot;:0,&quot;sticky_effects_offset&quot;:0,&quot;sticky_anchor_link_offset&quot;:0}">
925		<div class="elementor-element elementor-element-59d66ce8 e-con-full e-flex e-con e-child" data-id="59d66ce8" data-element_type="container" data-e-type="container">
926				<div class="elementor-element elementor-element-2491244 elementor-widget elementor-widget-theme-site-logo elementor-widget-image" data-id="2491244" data-element_type="widget" data-e-type="widget" data-widget_type="theme-site-logo.default">
927				<div class="elementor-widget-container">
928											<a href="https://deathpenalty.org">
929			<img fetchpriority="high" width="720" height="720" src="https://deathpenalty.org/wp-content/uploads/2020/10/DPF_Logo_2026_72dpi.webp" class="attachment-full size-full wp-image-20255" alt="Death Penalty Focus logo" srcset="https://deathpenalty.org/wp-content/uploads/2020/10/DPF_Logo_2026_72dpi.webp 720w, https://deathpenalty.org/wp-content/uploads/2020/10/DPF_Logo_2026_72dpi-300x300.webp 300w, https://deathpenalty.org/wp-content/uploads/2020/10/DPF_Logo_2026_72dpi-150x150.webp 150w" sizes="(max-width: 720px) 100vw, 720px" />				</a>
930											</div>
931				</div>
932				</div>
933		<div class="elementor-element elementor-element-b12cfb6 e-con-full e-flex e-con e-child" data-id="b12cfb6" data-element_type="container" data-e-type="container">
934				<div class="elementor-element elementor-element-63d9debe elementor-nav-menu--stretch elementor-nav-menu--dropdown-mobile elementor-nav-menu__text-align-aside elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu" data-id="63d9debe" data-element_type="widget" data-e-type="widget" data-settings="{&quot;full_width&quot;:&quot;stretch&quot;,&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&quot;,&quot;library&quot;:&quot;&quot;},&quot;layout&quot;:&quot;horizontal&quot;,&quot;toggle&quot;:&quot;burger&quot;}" data-widget_type="nav-menu.default">
935				<div class="elementor-widget-container">
936								<nav aria-label="Main Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-fade">
937				<ul id="menu-1-63d9debe" class="elementor-nav-menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-10741"><a class="elementor-item">About</a>
938<ul class="sub-menu elementor-nav-menu--dropdown">
939	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10460"><a href="https://deathpenalty.org/mission/" class="elementor-sub-item">Mission Statement</a></li>
940	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6631"><a href="https://deathpenalty.org/staff/" class="elementor-sub-item">Our Staff</a></li>
941	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14794"><a href="https://deathpenalty.org/board/" class="elementor-sub-item">Our Board of Directors</a></li>
942</ul>
943</li>
944<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home current-menu-ancestor current-menu-parent menu-item-has-children menu-item-25292"><a href="https://deathpenalty.org/#news-updates" aria-current="page" class="elementor-item elementor-item-anchor">News</a>
945<ul class="sub-menu elementor-nav-menu--dropdown">
946	<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-25330"><a href="https://deathpenalty.org/#news-updates" aria-current="page" class="elementor-sub-item elementor-item-anchor">The Latest</a></li>
947	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25322"><a href="https://deathpenalty.org/news-updates-archive/" class="elementor-sub-item">News &#038; Updates Archive</a></li>
948</ul>
949</li>
950<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-10739"><a class="elementor-item">Awards</a>
951<ul class="sub-menu elementor-nav-menu--dropdown">
952	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22233"><a href="https://deathpenalty.org/awards-dinner-highlights/" class="elementor-sub-item">Awards Dinner Highlights (All Years, 2019–Present)</a></li>
953	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16953"><a href="https://deathpenalty.org/our-past-honorees/" class="elementor-sub-item">Past Honorees: 1996–Present</a></li>
954</ul>
955</li>
956<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-10742"><a class="elementor-item">Facts</a>
957<ul class="sub-menu elementor-nav-menu--dropdown">
958	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21621"><a href="https://deathpenalty.org/statistics/" class="elementor-sub-item">&#8220;A Lens on Capital Punishment&#8221;</a></li>
959	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23935"><a href="https://deathpenalty.org/lectures-talks/" class="elementor-sub-item">Lectures &#038; Talks</a></li>
960	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5127"><a href="https://deathpenalty.org/resources/" class="elementor-sub-item">Additional Resources</a></li>
961</ul>
962</li>
963<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-13887"><a href="https://deathpenalty.org/webinars/" class="elementor-item">Webinars</a></li>
964<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-5138"><a class="elementor-item">Join Us</a>
965<ul class="sub-menu elementor-nav-menu--dropdown">
966	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17383"><a href="https://deathpenalty.org/ways-to-give/" class="elementor-sub-item">Donate</a></li>
967	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17929"><a href="https://interland3.donorperfect.net/weblink/weblink.aspx?name=E362705&#038;id=1" class="elementor-sub-item">Sign-Up</a></li>
968	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32"><a href="https://deathpenalty.org/contact/" class="elementor-sub-item">Contact Us</a></li>
969	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7640"><a href="https://deathpenalty.org/media-inquiries/" class="elementor-sub-item">Media Inquiries</a></li>
970</ul>
971</li>
972<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17387"><a href="https://death-penalty-focus.givecloud.co/dpf-online-shop" class="elementor-item">Shop</a></li>
973</ul>			</nav>
974					<div class="elementor-menu-toggle" role="button" tabindex="0" aria-label="Menu Toggle" aria-expanded="false">
975			<svg aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--open e-font-icon-svg e-eicon-menu-bar" viewBox="0 0 1000 1000" xmlns="http://www.w3.org/2000/svg"><path d="M104 333H896C929 333 958 304 958 271S929 208 896 208H104C71 208 42 237 42 271S71 333 104 333ZM104 583H896C929 583 958 554 958 521S929 458 896 458H104C71 458 42 487 42 521S71 583 104 583ZM104 833H896C929 833 958 804 958 771S929 708 896 708H104C71 708 42 737 42 771S71 833 104 833Z"></path></svg><svg aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--close e-font-icon-svg e-eicon-close" viewBox="0 0 1000 1000" xmlns="http://www.w3.org/2000/svg"><path d="M742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z"></path></svg>		</div>
976					<nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true">
977				<ul id="menu-2-63d9debe" class="elementor-nav-menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-10741"><a class="elementor-item" tabindex="-1">About</a>
978<ul class="sub-menu elementor-nav-menu--dropdown">
979	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10460"><a href="https://deathpenalty.org/mission/" class="elementor-sub-item" tabindex="-1">Mission Statement</a></li>
980	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6631"><a href="https://deathpenalty.org/staff/" class="elementor-sub-item" tabindex="-1">Our Staff</a></li>
981	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14794"><a href="https://deathpenalty.org/board/" class="elementor-sub-item" tabindex="-1">Our Board of Directors</a></li>
982</ul>
983</li>
984<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home current-menu-ancestor current-menu-parent menu-item-has-children menu-item-25292"><a href="https://deathpenalty.org/#news-updates" aria-current="page" class="elementor-item elementor-item-anchor" tabindex="-1">News</a>
985<ul class="sub-menu elementor-nav-menu--dropdown">
986	<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-25330"><a href="https://deathpenalty.org/#news-updates" aria-current="page" class="elementor-sub-item elementor-item-anchor" tabindex="-1">The Latest</a></li>
987	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25322"><a href="https://deathpenalty.org/news-updates-archive/" class="elementor-sub-item" tabindex="-1">News &#038; Updates Archive</a></li>
988</ul>
989</li>
990<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-10739"><a class="elementor-item" tabindex="-1">Awards</a>
991<ul class="sub-menu elementor-nav-menu--dropdown">
992	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22233"><a href="https://deathpenalty.org/awards-dinner-highlights/" class="elementor-sub-item" tabindex="-1">Awards Dinner Highlights (All Years, 2019–Present)</a></li>
993	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16953"><a href="https://deathpenalty.org/our-past-honorees/" class="elementor-sub-item" tabindex="-1">Past Honorees: 1996–Present</a></li>
994</ul>
995</li>
996<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-10742"><a class="elementor-item" tabindex="-1">Facts</a>
997<ul class="sub-menu elementor-nav-menu--dropdown">
998	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21621"><a href="https://deathpenalty.org/statistics/" class="elementor-sub-item" tabindex="-1">&#8220;A Lens on Capital Punishment&#8221;</a></li>
999	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23935"><a href="https://deathpenalty.org/lectures-talks/" class="elementor-sub-item" tabindex="-1">Lectures &#038; Talks</a></li>
1000	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5127"><a href="https://deathpenalty.org/resources/" class="elementor-sub-item" tabindex="-1">Additional Resources</a></li>
1001</ul>
1002</li>
1003<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-13887"><a href="https://deathpenalty.org/webinars/" class="elementor-item" tabindex="-1">Webinars</a></li>
1004<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-5138"><a class="elementor-item" tabindex="-1">Join Us</a>
1005<ul class="sub-menu elementor-nav-menu--dropdown">
1006	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17383"><a href="https://deathpenalty.org/ways-to-give/" class="elementor-sub-item" tabindex="-1">Donate</a></li>
1007	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17929"><a href="https://interland3.donorperfect.net/weblink/weblink.aspx?name=E362705&#038;id=1" class="elementor-sub-item" tabindex="-1">Sign-Up</a></li>
1008	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32"><a href="https://deathpenalty.org/contact/" class="elementor-sub-item" tabindex="-1">Contact Us</a></li>
1009	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7640"><a href="https://deathpenalty.org/media-inquiries/" class="elementor-sub-item" tabindex="-1">Media Inquiries</a></li>
1010</ul>
1011</li>
1012<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17387"><a href="https://death-penalty-focus.givecloud.co/dpf-online-shop" class="elementor-item" tabindex="-1">Shop</a></li>
1013</ul>			</nav>
1014						</div>
1015				</div>
1016				<div class="elementor-element elementor-element-5be691e elementor-widget elementor-widget-eael-creative-button" data-id="5be691e" data-element_type="widget" data-e-type="widget" data-widget_type="eael-creative-button.default">
1017				<div class="elementor-widget-container">
1018					        <div class="eael-creative-button-wrapper">
1019
1020            <a class="eael-creative-button eael-creative-button--ujarak eael-cb-icon-position-right csvg-use-color" href="https://deathpenalty.org/ways-to-give/" data-text="DONATE">
1021            	    
1022                <div class="creative-button-inner">
1023
1024                    
1025                    <span class="cretive-button-text">DONATE</span>
1026
1027                                            <span class="eael-creative-button-icon-right"><svg aria-hidden="true" class="e-font-icon-svg e-fas-donate" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z"></path></svg></span>                                    </div>
1028	                        </a>
1029        </div>
1030        				</div>
1031				</div>
1032				</div>
1033				</div>
1034				</header>
1035		
1036<main id="content" class="site-main post-2 page type-page status-publish has-post-thumbnail hentry">
1037
1038	
1039	<div class="page-content">
1040				<div data-elementor-type="wp-page" data-elementor-id="2" class="elementor elementor-2" data-elementor-post-type="page">
1041				<div class="elementor-element elementor-element-c833659 e-con e-atomic-element e-flexbox-base e-default-div e-43a59dc " data-id="c833659" data-element_type="e-flexbox" data-e-type="e-flexbox" data-interaction-id="c833659" data-e-type="e-flexbox" data-id="c833659">
1042    		<div class="elementor-element elementor-element-c358969 elementor-widget elementor-widget-shortcode" data-id="c358969" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
1043				<div class="elementor-widget-container">
1044							<div class="elementor-shortcode">	<div class="dpf-hs__wrap" style="--dpf-m-x:clamp(6px, 3.5vw, 40px);">
1045		<div class="dpf-hs" role="region" aria-roledescription="carousel" aria-label="Featured highlights"
1046			style="--dpf-h-desktop:520px;--dpf-h-mobile:510px;--dpf-text-rgb:235,235,235;--dpf-vig-color:#000;--dpf-vig-opacity:0.310;"
1047			data-delay="7000"
1048			data-transition="fade"
1049			data-random="1">
1050			<div class="dpf-hs__viewport">
1051				<div class="dpf-hs__track" aria-live="polite"></div>
1052			</div>
1053			
1053<script type="application/json" class="dpf-hs__data">[{"uid":"sl_1r2hrr6w46k","name":"Shelley Fabares - In Memoriam","delay":"","visible":true,"hideMobile":{"kicker":false,"heading":false,"subheading":false,"body":false,"buttons":false,"image":false,"bg":false},"pad":{"t":"","r":"","b":"","l":84},"padMobile":{"t":24,"r":26,"b":"","l":26},"border":{"style":"none","color":"#000000","weight":1,"radius":7,"inset":14},"theme":"charcoal","animSpeed":0,"themeFlip":false,"themeFlipMobile":false,"themeInvert":false,"themeInvertMobile":false,"kicker":"In Memoriam","kickerMobile":"","heading":"Shelley Fabares","headingMobile":"","subheading":"1944 \u2013 2026","subheadingMobile":"","body":"With profound sadness, DPF mourns the passing of Shelley Fabares - cherished wife of our President, Mike Farrell. A passionate opponent of the death penalty, she was a dear friend of all of us at DPF. A beloved actor and a woman of warmth and grace, she leaves an enduring legacy.","bodyMobile":"Beloved wife of our President, Mike Farrell, and a devoted, lifelong abolitionist. Our hearts are with him and his family.","align":"left","alignMobile":"","type":{"kicker":{"face":"","weight":"","size":"","style":"","lh":"","ls":"5","ws":"2","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"kickerMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"6","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"heading":{"face":"","weight":"600","size":"34","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"headingMobile":{"face":"","weight":"","size":"23","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"subheading":{"face":"","weight":"300","size":"","style":"italic","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"subheadingMobile":{"face":"","weight":"300","size":"16","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"body":{"face":"","weight":"","size":"15","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"bodyMobile":{"face":"","weight":"","size":"15","style":"","lh":"1.45","ls":"","ws":"","mt":"","mb":"14","pt":"","pr":"0","pb":"","pl":"0"},"buttons":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"buttonsMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"19","pb":"","pl":"19"}},"buttons":[{"label":"Read the family statement","labelMobile":"","href":"https:\/\/deathpenalty.org\/shelley-fabares-in-memoriam\/","style":"ghost","newTab":true},{"label":"Leave a message","labelMobile":"","href":"https:\/\/deathpenalty.org\/shelley-fabares-in-memoriam\/#condolences","style":"solid","newTab":false}],"buttonsMobile":[],"image":{"url":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/08\/Mike-Farrell-Shelley-Fabares-shortened-1.webp","id":24075,"alt":"Shelley Fabares & Mike Farrell","shape":"rect","radius":12,"size":335,"saturation":70,"fadeStart":83,"fadeEnd":0,"coreSize":40,"grain":"","side":"left"},"imageMobile":{"url":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/08\/Mike-Farrell-Shelley-Fabares-shortened-1.webp","id":0,"alt":"Shelley Fabares & Mike Farrell","shape":"rect","radius":12,"size":160,"saturation":52,"fadeStart":"","fadeEnd":"","coreSize":"","grain":""},"bg":{"url":"","id":0,"alt":"","focalX":50,"focalY":50,"overlay":45,"opacity":100,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""},"bgMobile":{"url":"","id":0,"alt":"","focalX":50,"focalY":50,"overlay":45,"opacity":100,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""}},{"uid":"sl_fiza897j6sg","name":"Governor's Reversal","delay":"","visible":true,"hideMobile":{"kicker":false,"heading":false,"subheading":false,"body":false,"buttons":false,"image":false,"bg":false},"pad":{"t":"","r":"","b":"","l":""},"padMobile":{"t":"","r":"","b":"","l":""},"border":{"style":"single","color":"#d4a017","weight":1,"radius":7,"inset":14},"theme":"aurora","animSpeed":0,"themeFlip":false,"themeFlipMobile":false,"themeInvert":false,"themeInvertMobile":false,"kicker":"Governor's Reversal","kickerMobile":"","heading":"DeWine Calls for Ohio to Abolish the Death Penalty","headingMobile":"DeWine: End the Death Penalty","subheading":"","subheadingMobile":"","body":"\"The moral justification I had for voting for the death penalty simply no longer exists,\" Gov. DeWine said today at a news conference during which he called on the legislature \"to take action.\"","bodyMobile":"Gov. DeWine said: \"The moral justification for it simply no longer exists.\" He called on the legislature to act.","align":"left","alignMobile":"center","type":{"kicker":{"face":"","weight":"600","size":"13","style":"","lh":"","ls":"6","ws":"","mt":"","mb":"22","pt":"","pr":"","pb":"","pl":""},"kickerMobile":{"face":"","weight":"300","size":"13","style":"","lh":"","ls":"","ws":"","mt":"5","mb":"14","pt":"","pr":"","pb":"","pl":""},"heading":{"face":"","weight":"","size":"41","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"headingMobile":{"face":"","weight":"","size":"26","style":"","lh":"1.2","ls":"","ws":"","mt":"","mb":"7","pt":"","pr":"","pb":"","pl":""},"subheading":{"face":"","weight":"300","size":"22","style":"italic","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"subheadingMobile":{"face":"","weight":"300","size":"18","style":"italic","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"body":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"bodyMobile":{"face":"","weight":"300","size":"16","style":"","lh":"1.4","ls":"0.5","ws":"","mt":"","mb":"17","pt":"","pr":"","pb":"","pl":""},"buttons":{"face":"","weight":"600","size":"13","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"buttonsMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""}},"buttons":[{"label":"LEARN MORE","labelMobile":"","href":"https:\/\/deathpenalty.org\/ohio-gov-mike-dewine-today-demonstrated-courage-and-integrity-in-calling-for-ohio-to-abolish-the-death-penalty\/","style":"ghost","newTab":false}],"buttonsMobile":[],"image":{"url":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Gov-Mike-DeWine.jpg.webp","id":23530,"alt":"Depicted person: Mike DeWine \u2013 Governor of Ohio since 2019","shape":"rect","radius":45,"size":255,"saturation":85,"fadeStart":100,"fadeEnd":0,"coreSize":"","grain":"","side":"left","srcset":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Gov-Mike-DeWine.jpg-816x1024.webp 816w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Gov-Mike-DeWine.jpg-239x300.webp 239w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Gov-Mike-DeWine.jpg-768x964.webp 768w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Gov-Mike-DeWine.jpg-1224x1536.webp 1224w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Gov-Mike-DeWine.jpg.webp 1280w"},"imageMobile":{"url":"","id":0,"alt":"Ohio Gov Mike DeWine. Vivien McClain Photography. Creative 
1053Commons Attribution-Share Alike 4.0","shape":"rect","radius":12,"size":145,"saturation":71,"fadeStart":"","fadeEnd":42,"coreSize":"","grain":""},"bg":{"url":"","id":23337,"alt":"Ohio Gov Mike DeWine. Vivien McClain Photography. Creative Commons Attribution-Share Alike 4.0","focalX":50,"focalY":50,"overlay":45,"opacity":100,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""},"bgMobile":{"url":"","id":0,"alt":"","focalX":50,"focalY":50,"overlay":45,"opacity":100,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""}},{"uid":"sl_ty7b0h8gvmm","name":"Newsom for CA Commutations","delay":"","visible":true,"hideMobile":{"kicker":false,"heading":false,"subheading":true,"body":false,"buttons":false,"image":false,"bg":false},"pad":{"t":"","r":52,"b":"","l":""},"padMobile":{"t":6,"r":26,"b":"","l":26},"border":{"style":"single","color":"#d4a017","weight":1,"radius":6,"inset":16},"theme":"obsidian","animSpeed":0,"themeFlip":false,"themeFlipMobile":false,"themeInvert":false,"themeInvertMobile":false,"kicker":"California Commutations","kickerMobile":"","heading":"Newsom: Show Your Humanity\u2014Commute These Sentences","headingMobile":"Newsom: Show Humanity\u2014Commute","subheading":"Seven years ago you showed moral courage. Now finish what you started in 2019.","subheadingMobile":"","body":"You said the moratorium was \"about who I am as a human being.\" Now prove it. Commute the 580 death sentences in California. Your opposition to capital punishment demands moral action, not just policy.","bodyMobile":"You've opposed the death penalty. Commute California's 580 death sentences and show the courage you found in 2019.","align":"center","alignMobile":"center","type":{"kicker":{"face":"","weight":"","size":"14","style":"","lh":"","ls":"","ws":"","mt":"","mb":"18","pt":"","pr":"","pb":"","pl":""},"kickerMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"18","mb":"17","pt":"","pr":"","pb":"","pl":""},"heading":{"face":"","weight":"","size":"38","style":"","lh":"","ls":"","ws":"","mt":"","mb":"20","pt":"","pr":"","pb":"","pl":""},"headingMobile":{"face":"","weight":"","size":"25","style":"","lh":"","ls":"","ws":"","mt":"","mb":"16","pt":"","pr":"","pb":"","pl":""},"subheading":{"face":"","weight":"400","size":"","style":"italic","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"subheadingMobile":{"face":"","weight":"300","size":"15","style":"italic","lh":"","ls":"","ws":"","mt":"","mb":"13","pt":"","pr":"","pb":"","pl":""},"body":{"face":"","weight":"","size":"18","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"bodyMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"buttons":{"face":"","weight":"600","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"buttonsMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""}},"buttons":[{"label":"Read more","labelMobile":"","href":"https:\/\/deathpenalty.org\/support-for-ca-gov-gavin-newsom-to-commute-death-row-is-growing\/","style":"solid","newTab":false}],"buttonsMobile":[],"image":{"url":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Governor_of_California_Gavin_Newsom_28cropped29.jpg.webp","id":23531,"alt":"Official portrait, 2026","shape":"rect","radius":12,"size":210,"saturation":21,"fadeStart":65,"fadeEnd":14,"coreSize":15,"grain":"","side":"left","srcset":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Governor_of_California_Gavin_Newsom_28cropped29.jpg-767x1024.webp 767w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Governor_of_California_Gavin_Newsom_28cropped29.jpg-225x300.webp 225w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Governor_of_California_Gavin_Newsom_28cropped29.jpg-768x1025.webp 768w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Governor_of_California_Gavin_Newsom_28cropped29.jpg-1151x1536.webp 1151w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/Governor_of_California_Gavin_Newsom_28cropped29.jpg.webp 1280w"},"imageMobile":{"url":"","id":0,"alt":"","shape":"rect","radius":12,"
1053size":90,"saturation":22,"fadeStart":"","fadeEnd":6,"coreSize":"","grain":""},"bg":{"url":"","id":0,"alt":"","focalX":50,"focalY":50,"overlay":45,"opacity":100,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""},"bgMobile":{"url":"","id":0,"alt":"","focalX":50,"focalY":50,"overlay":45,"opacity":100,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""}},{"uid":"sl_fzncfa6gmjv","name":"Justice & the Jury","delay":"","visible":true,"hideMobile":{"kicker":false,"heading":false,"subheading":false,"body":false,"buttons":false,"image":false,"bg":false},"pad":{"t":0,"r":"","b":"","l":""},"padMobile":{"t":14,"r":"","b":"","l":""},"border":{"style":"single","color":"#d4a017","weight":1,"radius":7,"inset":14},"theme":"verdigris","animSpeed":38,"themeFlip":false,"themeFlipMobile":false,"themeInvert":false,"themeInvertMobile":false,"kicker":"Justice & the Jury","kickerMobile":"","heading":"Supreme Court Strikes Down a Death Row Conviction Built on Bias","headingMobile":"A Death Sentence Built on Racial Bias","subheading":"5\u20134 ruling finds Terry Pitchford was denied a fair trial due to racial jury exclusion","subheadingMobile":"","body":"Terry Pitchford was 18 when an <strong>all-white jury<\/strong> sentenced him to death after prosecutors struck four of five Black prospective jurors. Decades later, the Supreme Court ruled his trial was fundamentally unfair \u2014 a stark reminder of how racial bias distorts justice.","bodyMobile":"At 18, Pitchford was sentenced to death by an all-white jury. The Supreme Court later found his trial unfair \u2014 proof racial bias distorts justice.","align":"left","alignMobile":"center","type":{"kicker":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"39","mb":"19","pt":"","pr":"","pb":"","pl":""},"kickerMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"14","pt":"","pr":"","pb":"","pl":""},"heading":{"face":"","weight":"","size":"34","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"headingMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"7","pt":"","pr":"","pb":"","pl":""},"subheading":{"face":"","weight":"300","size":"21","style":"italic","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"subheadingMobile":{"face":"","weight":"300","size":"17","style":"italic","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"body":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"27","pt":"","pr":"","pb":"","pl":""},"bodyMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"19","pt":"","pr":"","pb":"","pl":""},"buttons":{"face":"","weight":"600","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"buttonsMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""}},"buttons":[],"buttonsMobile":[],"image":{"url":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/US_Supreme_Court.JPG.webp","id":23537,"alt":"The Supreme Court of the United States. Washington, D.C.","shape":"rect","radius":16,"size":440,"saturation":72,"fadeStart":92,"fadeEnd":9,"coreSize":33,"grain":"","side":"left","srcset":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/US_Supreme_Court.JPG-1024x768.webp 1024w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/US_Supreme_Court.JPG-300x225.webp 300w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/US_Supreme_Court.JPG-768x576.webp 768w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/07\/US_Supreme_Court.JPG.webp 1280w"},"imageMobile":{"url":"","id":0,"alt":"","shape":"rect","radius":12,"size":115,"saturation":"","fadeStart":"","fadeEnd":"","coreSize":"","grain":""},"bg":{"url":"","id":0,"alt":"","focalX":50,"focalY":50,"overlay":45,"opacity":100,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""},"bgMobile":{"url":"","id":0,"alt":"","focalX":50,"focalY":50,"overlay":45,"opacity":100,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""}},{"uid":"sl_v9fxcakzvny","name":"A Message from Mike Farrell","delay":"","visible":false,"hideMobile":{"kicker":false,"heading":false,"subheading":false,"body":false,"buttons":false,"image":false,"bg":false},"pad":{"t":"","r":"","b":"","l":""},"padMobile":{"t":18,"r":"","b":"","l":""}
1053,"border":{"style":"single","color":"#7a7a7a","weight":1,"radius":11,"inset":14},"theme":"sepia","animSpeed":0,"themeFlip":false,"themeFlipMobile":false,"themeInvert":false,"themeInvertMobile":false,"kicker":"A Message from Mike Farrell","kickerMobile":"","heading":"DPF President on the CA Supreme Court Order","headingMobile":"Capital Punishment & the CA Supreme Court","subheading":"CA Supreme Court, unanimously: AG Bonta must defend the racially biased death penalty.","subheadingMobile":"Court orders AG Bonta to defend a racially biased death penalty.","body":"\"This order is confirmation of what so many of us have been saying for so long,\" writes DPF President Mike Farrell \u2014 <strong>\"California's death penalty system has been racially biased for many years, and should have been found unconstitutional a long time ago.\"<\/strong>","bodyMobile":"Judge finds CA's death penalty racially biased and unconstitutional \u2014 a truth advocates have voiced for years, says DPF President Mike Farrell.","align":"center","alignMobile":"center","type":{"kicker":{"face":"","weight":"","size":"12","style":"","lh":"","ls":"","ws":"","mt":"21","mb":"30","pt":"","pr":"","pb":"","pl":""},"kickerMobile":{"face":"","weight":"","size":"10","style":"","lh":"","ls":"","ws":"","mt":"0","mb":"","pt":"","pr":"","pb":"","pl":""},"heading":{"face":"","weight":"","size":"38","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"headingMobile":{"face":"","weight":"500","size":"24","style":"","lh":"1.3","ls":"","ws":"","mt":"","mb":"15","pt":"","pr":"","pb":"","pl":""},"subheading":{"face":"","weight":"300","size":"","style":"italic","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"subheadingMobile":{"face":"","weight":"300","size":"16","style":"italic","lh":"","ls":"","ws":"","mt":"","mb":"11","pt":"","pr":"","pb":"","pl":""},"body":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"bodyMobile":{"face":"","weight":"","size":"14","style":"","lh":"","ls":"","ws":"","mt":"","mb":"17","pt":"","pr":"","pb":"","pl":""},"buttons":{"face":"","weight":"600","size":"15","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"buttonsMobile":{"face":"","weight":"","size":"13","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""}},"buttons":[{"label":"Read Full Statement","labelMobile":"","href":"https:\/\/deathpenalty.org\/californias-death-penalty-faces-a-constitutional-reckoning\/","style":"solid","newTab":false}],"buttonsMobile":[],"image":{"url":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2016\/11\/MikeFarrellPortraitSessionBookSigningCnhp7j_5Yt9l-e1708981651854.jpg","id":1150,"alt":"Mike Farrell, DPF President","shape":"rect","radius":12,"size":325,"saturation":35,"fadeStart":"","fadeEnd":27,"coreSize":35,"grain":"","side":"left","srcset":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2016\/11\/MikeFarrellPortraitSessionBookSigningCnhp7j_5Yt9l-e1708981651854.jpg 409w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2016\/11\/MikeFarrellPortraitSessionBookSigningCnhp7j_5Yt9l-e1708981651854-300x300.jpg 300w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2016\/11\/MikeFarrellPortraitSessionBookSigningCnhp7j_5Yt9l-e1708981651854-100x100.jpg 100w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2016\/11\/MikeFarrellPortraitSessionBookSigningCnhp7j_5Yt9l-e1708981651854-150x150.jpg 150w"},"imageMobile":{"url":"","id":0,"alt":"","shape":"rect","radius":6,"size":125,"saturation":"","fadeStart":"","fadeEnd":"","coreSize":"","grain":""},"bg":{"url":"","id":19247,"alt":"Scales of Justice_shutterstock_2471885651_adj","focalX":69,"focalY":78,"overlay":30,"opacity":56,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":"","srcset":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/03\/Scales-of-Justice_shutterstock_2471885651_adj.jpg 593w, https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/03\/Scales-of-Justice_shutterstock_2471885651_adj-300x173.jpg 300w"},"bgMobile":{"url":"","id":0,"alt":"","focalX":50,"focalY":50,"overlay":45,"opacity":100,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""}},{"uid":"sl_u5p8m7xpt6w","name":"2026 World Day Against the Death Penalty","delay":"","visible":false,"hideMobile":{"kicker":false,"heading":false,"subheading":false,"body":false,"buttons":false,"image":true,"bg":false},"pad":{"t":"","r":"","b":"","l":""},"padMobile":{"t":30,"r":"","b":"","l":""}
1053,"border":{"style":"none","color":"#cce8b5","weight":1,"radius":7,"inset":14},"theme":"navy","animSpeed":41,"themeFlip":false,"themeFlipMobile":true,"themeInvert":true,"themeInvertMobile":true,"kicker":"OCTOBER 10, 2026","kickerMobile":"","heading":"World Day Against the Death Penalty","headingMobile":"","subheading":"Join the global call to end capital punishment.","subheadingMobile":"","body":"This year's theme centers the people the death penalty touches \u2014 human beings with families, faith, and dreams, and everyone pulled into its path. Their stories are what World Day is for.","bodyMobile":"This year's theme centers the people the death penalty touches \u2014 human beings with families, faith, and dreams. World Day is when we listen to them.","align":"left","alignMobile":"","type":{"kicker":{"face":"","weight":"","size":"14","style":"","lh":"","ls":"5","ws":"","mt":"","mb":"19","pt":"","pr":"","pb":"","pl":""},"kickerMobile":{"face":"","weight":"","size":"13","style":"","lh":"","ls":"","ws":"","mt":"","mb":"29","pt":"","pr":"","pb":"","pl":""},"heading":{"face":"","weight":"","size":"45","style":"","lh":"","ls":"","ws":"","mt":"","mb":"24","pt":"","pr":"","pb":"","pl":""},"headingMobile":{"face":"","weight":"500","size":"29","style":"","lh":"","ls":"","ws":"","mt":"","mb":"29","pt":"","pr":"","pb":"","pl":""},"subheading":{"face":"","weight":"500","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"subheadingMobile":{"face":"","weight":"500","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"16","pt":"","pr":"","pb":"","pl":""},"body":{"face":"","weight":"","size":"19","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"bodyMobile":{"face":"","weight":"300","size":"15","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"buttons":{"face":"","weight":"300","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""},"buttonsMobile":{"face":"","weight":"","size":"","style":"","lh":"","ls":"","ws":"","mt":"","mb":"","pt":"","pr":"","pb":"","pl":""}},"buttons":[{"label":"Register for DPF's Webinar","labelMobile":"","href":"","style":"solid","newTab":false},{"label":"Learn more","labelMobile":"","href":"","style":"ghost","newTab":false}],"buttonsMobile":[],"image":{"url":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2026\/09\/2026-POSTER-World-Day-Against-the-Death-Penalty-Stories-for-Life.webp","id":25356,"alt":"2026 World Day Against the Death Penalty, Oct 10 2026. [Image Copyright 2026 by Death Penalty Focus. All rights reserved.]","shape":"rect","radius":15,"size":285,"saturation":65,"fadeStart":100,"fadeEnd":"","coreSize":"","grain":"","side":"left"},"imageMobile":{"url":"","id":0,"alt":"","shape":"rect","radius":12,"size":"","saturation":"","fadeStart":"","fadeEnd":"","coreSize":"","grain":""},"bg":{"url":"","id":0,"alt":"","focalX":50,"focalY":50,"overlay":45,"opacity":100,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""},"bgMobile":{"url":"","id":25357,"alt":"2026 - POSTER - World Day Against the Death Penalty - Stories for Life","focalX":50,"focalY":50,"overlay":46,"opacity":18,"fill":"cover","saturation":"","scale":"","rotation":"","offsetX":"","offsetY":""}}]</script>
1053
1054			<div class="dpf-hs__dots" role="tablist" aria-label="Choose slide"></div>
1055		</div>
1056	</div>
1057	</div>
1058						</div>
1059				</div>
1060		
1061</div>
1062		<section class="elementor-section elementor-top-section elementor-element elementor-element-87bf5a6 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="87bf5a6" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
1063						<div class="elementor-container elementor-column-gap-default">
1064					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-62d9edd" data-id="62d9edd" data-element_type="column" data-e-type="column">
1065			<div class="elementor-widget-wrap elementor-element-populated">
1066						<div class="elementor-element elementor-element-1e4f7bf elementor-screen-only elementor-widget elementor-widget-heading" data-id="1e4f7bf" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
1067				<div class="elementor-widget-container">
1068					<h1 class="elementor-heading-title elementor-size-default">Death Penalty Focus: Working to Abolish the Death Penalty</h1>				</div>
1069				</div>
1070				<div class="elementor-element elementor-element-49a5f47 elementor-widget elementor-widget-html" data-id="49a5f47" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
1071				<div class="elementor-widget-container">
1072					<!-- ============================================================
1073     DPF  —  NEWS & UPDATES  (home page section)  ·  LIVE version
1074     Editorial masthead:
1075       • one LEDE story + featured SECONDARIES (right column)
1076       • a "More from The Focus" CTA card → the full archive page
1077     All populated automatically from your latest WordPress posts.
1078
1079     HOW IT WORKS
1080       • Pulls your latest "The Focus" posts from the built-in
1081         WordPress REST API (/wp-json/wp/v2/posts). No plugin.
1082       • Featured images render as CSS background-images (never
1083         <img>), so the live lazy-loader can't strip them.
1084       • The LEDE = your STICKY post if one is set; else the newest.
1085       • Every whole story card is a single clickable link — the
1086         Article Modal block intercepts .dpfnu-card clicks.
1087       • Dates print full on desktop, abbreviated on phones.
1088       • If the API is unreachable, the fallback lede shows.
1089
1090     MENU ANCHOR
1091       This block opens with <span id="news-updates">, the jump target for the
1092       main menu's top-level "News" item:
1093         https://deathpenalty.org/#news-updates
1094       It has a scroll offset so the fixed site header doesn't cover the
1095       masthead on arrival (see .dpfnu-anchor in the CSS).
1096
1097     CONFIG lives in the 
1097<script> at the bottom (CFG = {...}):
1098       categories:7 · count:4 · stickyLookahead:2 · allNewsUrl
1099
1100     Paste this ENTIRE file into one Elementor "HTML" widget.
1101     Scoped to .dpfnu so it can't touch the theme.
1102
1103     NOTE on mobile gutters: if too much empty space remains on
1104     the sides on a phone, set the Elementor SECTION and COLUMN
1105     padding to 0 on the mobile device view — that outer padding
1106     is outside this widget's control.
1107     ============================================================ -->
1108
1109<style>
1110@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Open+Sans:wght@400;500;600;700&display=swap');
1111
1112.dpfnu{
1113  --ink:#23201d; --ink-soft:#4a453f; --stone:#8a8178;
1114  --cream:#f7f4ef; --line:#e3dccf; --gold:#b3903f; --red:#d0111b;
1115  --sans:'Open Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
1116  --serif:'Cormorant Garamond','Playfair Display',Georgia,'Times New Roman',serif;
1117  background:var(--cream);
1118  padding:39px clamp(18px,5vw,64px) 72px;
1119  font-family:var(--sans);color:var(--ink);
1120  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
1121}
1122.dpfnu *{box-sizing:border-box;}
1123.dpfnu__inner{max-width:1180px;margin:0 auto;}
1124
1125/* header */
1126.dpfnu__head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:22px;}
1127.dpfnu__kicker{display:block;font-family:var(--sans);font-weight:700;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 0 6px;}
1128.dpfnu__title{font-family:var(--serif)!important;font-weight:600!important;font-size:clamp(2rem,4.2vw,2.9rem)!important;line-height:1.02!important;letter-spacing:.005em;color:var(--ink)!important;margin:0!important;text-transform:none!important;}
1129.dpfnu__all{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans)!important;font-weight:700;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--red)!important;text-decoration:none!important;white-space:nowrap;padding-bottom:4px;line-height:1!important;transition:gap .25s ease,color .2s ease;}
1130.dpfnu__all svg{width:15px;height:15px;transition:transform .25s ease;}
1131.dpfnu__all:hover{gap:13px;color:#a50e16!important;}
1132.dpfnu__all:hover svg{transform:translateX(3px);}
1133.dpfnu__all-mob{display:none;}
1134
1135/* header right stack: search over the link */
1136.dpfnu__headright{display:flex;flex-direction:column;align-items:flex-end;gap:14px;}
1137.dpfnu__search{display:flex;align-items:center;background:#fff!important;border:1px solid var(--line)!important;border-radius:100px!important;overflow:hidden;box-shadow:none!important;transition:border-color .2s ease;}
1138.dpfnu__search:focus-within{border-color:var(--gold)!important;}
1139.dpfnu__search-input{border:0!important;background:transparent!important;font-family:var(--sans)!important;font-size:13.5px!important;line-height:1.2!important;color:var(--ink)!important;padding:9px 4px 9px 18px!important;width:210px;height:auto!important;min-height:0!important;margin:0!important;box-shadow:none!important;outline:none!important;border-radius:0!important;-webkit-appearance:none;appearance:none;}
1140.dpfnu__search-input::placeholder{color:var(--stone)!important;opacity:1;}
1141.dpfnu__search-btn{display:inline-flex!important;align-items:center;justify-content:center;border:0!important;background:transparent!important;cursor:pointer!important;padding:8px 14px 8px 8px!important;margin:0!important;line-height:1!important;min-height:0!important;box-shadow:none!important;color:var(--stone)!important;transition:color .2s ease;}
1142.dpfnu__search:focus-within .dpfnu__search-btn,.dpfnu__search-btn:hover{color:var(--gold)!important;}
1143.dpfnu__search-btn svg{width:16px;height:16px;}
1144
1145/* rules */
1146.dpfnu__rule{position:relative;height:2px;background:var(--line);margin:0 0 40px;}
1147.dpfnu__rule::before{content:"";position:absolute;left:0;top:0;width:74px;height:2px;background:var(--gold);}
1148
1149/* grid */
1150.dpfnu__grid{display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(30px,4vw,58px);align-items:start;}
1151
1152/* the whole card / row is one link */
1153.dpfnu-card{display:block;text-decoration:none!important;color:inherit!important;cursor:pointer!important;}
1154
1155/* image treatment */
1156.dpfnu-media{display:block;position:relative;overflow:hidden;background-color:#efe9df;background-image:var(--img,linear-gradient(135deg,#ece5d8 0%,#ddd3c2 55%,#cdbfa6 100%));background-size:cover;background-position:center;filter:saturate(.82) contrast(1.03);transition:filter .5s ease;}
1157.dpfnu-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(35,32,29,0) 55%,rgba(35,32,29,.16) 100%);transition:opacity .5s ease;}
1158.dpfnu-media__inner{position:absolute;inset:0;background-image:inherit;background-size:cover;background-position:center;transform:scale(1);transition:transform .7s cubic-bezier(.2,.7,.2,1);}
1159.dpfnu-card:hover .dpfnu-media{filter:saturate(1) contrast(1.02);}
1160.dpfnu-card:hover .dpfnu-media__inner{transform:scale(1.045);}
1161
1162/* shared text bits */
1163.dpfnu-kick{display:inline-block;font-weight:700!important;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold)!important;margin:0 0 12px;}
1164.dpfnu-kick:empty{display:none;margin:0;}
1165.dpfnu-hl{display:block;font-family:var(--serif)!important;font-weight:600!important;color:var(--ink)!important;letter-spacing:.004em;background-image:linear-gradient(var(--gold),var(--gold));background-repeat:no-repeat;background-position:0 100%;background-size:0 2px;transition:background-size .35s ease,color .2s ease;}
1166.dpfnu-card:hover .dpfnu-hl{color:#000!important;background-size:100% 2px;}
1167.dpfnu-dek{display:block;font-family:var(--sans);font-size:16px;line-height:1.4!important;color:var(--ink-soft)!important;margin:14px 0 0!important;max-width:44ch;}
1168.dpfnu-dek:empty{display:none;}
1169.dpfnu-meta{display:flex;align-items:center;gap:10px;margin-top:6px!important;font-size:12.5px;line-height:1.2!important;letter-spacing:.03em;color:var(--stone)!important;}
1170.dpfnu-meta time,.dpfnu-meta span{color:var(--stone)!important;}
1171.dpfnu-meta__dot{width:3px;height:3px;border-radius:50%;background:var(--stone);opacity:.7;flex:none;}
1172.dpfnu-more{display:inline-flex;align-items:center;gap:7px;margin-top:12px!important;font-weight:700;font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink)!important;line-height:1!important;transition:gap .25s ease,color .2s ease;}
1173.dpfnu-more svg{width:14px;
1173height:14px;color:var(--gold);transition:transform .25s ease;}
1174.dpfnu-card:hover .dpfnu-more{gap:12px;color:#000!important;}
1175.dpfnu-card:hover .dpfnu-more svg{transform:translateX(3px);}
1176
1177/* date: full vs abbreviated (abbr hidden until mobile) */
1178.dpfnu-d-abbr{display:none;}
1179
1180/* lede */
1181.dpfnu-lede .dpfnu-media{aspect-ratio:16/10;border-radius:8px;width:calc(100% - 18px);}
1182.dpfnu-lede__body{display:block;padding-top:32px;padding-left:15px;}
1183.dpfnu-lede .dpfnu-hl{font-size:clamp(1.7rem,3vw,2.25rem);line-height:1.1;}
1184
1185/* secondaries (desktop: text left, thumb right via grid order) */
1186.dpfnu-secs{display:flex;flex-direction:column;}
1187.dpfnu-sec{display:grid;grid-template-columns:1fr 134px;gap:20px;align-items:start;padding:4px 0;}
1188.dpfnu-sec .dpfnu-media{aspect-ratio:4/3;border-radius:5px;order:2;}
1189.dpfnu-sec__body{order:1;}
1190.dpfnu-sec .dpfnu-kick{margin-bottom:8px;}
1191.dpfnu-sec .dpfnu-hl{font-size:1.32rem;line-height:1.14;}
1192.dpfnu-sec .dpfnu-dek{font-size:14px;margin-top:8px!important;max-width:none;}
1193.dpfnu-sec .dpfnu-meta{margin-top:5px!important;}
1194.dpfnu-div{height:1px!important;background:var(--line)!important;border:0!important;margin:24px 0!important;}
1195
1196/* shared editorial type used by the CTA card */
1197.dpfnu-more-eyebrow{display:block;font-weight:700;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 0 8px;}
1198.dpfnu-more-title{font-family:var(--serif)!important;font-weight:600!important;font-size:clamp(1.5rem,2.6vw,1.95rem)!important;line-height:1.05!important;letter-spacing:.005em;color:var(--ink)!important;margin:0!important;text-transform:none!important;}
1199.dpfnu-more-intro{font-family:var(--sans)!important;font-size:15px;line-height:1.5!important;color:var(--ink-soft)!important;margin:9px 0 0!important;max-width:62ch;}
1200/* CTA card → full archive page */
1201.dpfnu-cta{display:flex;align-items:center;justify-content:space-between;gap:22px 30px;flex-wrap:wrap;margin-top:52px;padding:26px 30px;background:#fbf9f4;border:1px solid var(--line);border-radius:10px;text-decoration:none!important;color:inherit!important;cursor:pointer!important;transition:border-color .25s ease,background-color .25s ease,box-shadow .3s ease;}
1202.dpfnu-cta:hover{border-color:var(--gold);background:#faf6ee;box-shadow:0 12px 32px rgba(35,32,29,.07);}
1203.dpfnu-cta__text{flex:1 1 340px;}
1204.dpfnu-cta .dpfnu-more-eyebrow{margin:0 0 6px;}
1205.dpfnu-cta .dpfnu-more-title{display:block;font-size:clamp(1.45rem,2.4vw,1.85rem)!important;}
1206.dpfnu-cta .dpfnu-more-intro{display:block;margin:8px 0 0!important;max-width:56ch;}
1207.dpfnu-cta__go{display:inline-flex;align-items:center;gap:9px;flex:none;white-space:nowrap;font-weight:700;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--red)!important;line-height:1;transition:gap .25s ease,color .2s ease;}
1208.dpfnu-cta__go svg{width:16px;height:16px;transition:transform .25s ease;}
1209.dpfnu-cta:hover .dpfnu-cta__go{gap:14px;color:#a50e16!important;}
1210.dpfnu-cta:hover .dpfnu-cta__go svg{transform:translateX(4px);}
1211
1212/* journalistic end mark — separates the section from the footer below */
1213.dpfnu-endmark{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:64px;}
1214.dpfnu-endmark__line{height:1px;flex:0 1 140px;background:linear-gradient(90deg,transparent,var(--line));}
1215.dpfnu-endmark__line:last-child{background:linear-gradient(90deg,var(--line),transparent);}
1216.dpfnu-endmark__dots{display:inline-flex;align-items:center;gap:9px;flex:none;}
1217.dpfnu-endmark__dots span{width:5px;height:5px;border-radius:50%;background:var(--gold)!important;display:block;}
1218.dpfnu-endmark__dots span:nth-child(2){width:6px;height:6px;}
1219
1220/* loading shimmer */
1221.dpfnu.is-loading .dpfnu-media{animation:dpfnu-pulse 1.3s ease-in-out infinite;}
1222@keyframes dpfnu-pulse{0%,100%{opacity:1}50%{opacity:.55}}
1223
1224/* ── menu anchor target (#news-updates) ──
1225   Takes up no space, but carries a scroll offset so the site's FIXED header
1226   doesn't cover the masthead when the menu jumps here.
1227   These values are only the NO-JS FALLBACK — the script measures the real
1228   header and overwrites scroll-margin-top, because the header's height swings
1229   with viewport width (139px at 375, 112px at 1440, 299px at 2560: the logo
1230   scales up on wide screens). Don't "fix" a bad landing by editing these. */
1231.dpfnu-anchor{display:block;height:0;font-size:0;line-height:0;scroll-margin-top:128px;}
1232@media (max-width:600px){ .dpfnu-anchor{scroll-margin-top:155px;} }
1233
1234/* ---------- responsive ---------- */
1235@media (max-width:860px){
1236  .dpfnu__grid{grid-template-columns:1fr;gap:38px;}
1237  .dpfnu-lede .dpfnu-media{aspect-ratio:16/9;}
1238}
1239@media (max-width:600px){
1240  /* wider: less side gutter */
1241  .dpfnu{padding:21px 24px 48px;}
1242  .dpfnu__title{font-size:2.6rem!important;}   /* larger masthead on phones */
1243  .dpfnu-dek{line-height:1.36!important;}
1244
1245  /* abbreviated dates on one line */
1246  .dpfnu-d-full{display:none;}
1247  .dpfnu-d-abbr{display:inline;}
1248
1249  /* lede: image bleeds 12px closer to each screen edge; text stays inset */
1250  .dpfnu-lede .dpfnu-media{width:calc(100% + 24px);margin-left:-12px;aspect-ratio:16/9;}
1251  .dpfnu-lede__body{padding-left:0;padding-top:24px;}
1252  .dpfnu-lede .dpfnu-hl{font-size:1.6rem;}
1253  /* thin rule between the lede and the first small story (matches the inter-story divi
1253ders) */
1254  .dpfnu__grid{gap:24px;}
1255  .dpfnu-secs{border-top:1px solid var(--line);padding-top:24px;}
1256  /* Keep Reading CTA bleeds wider toward the screen edges */
1257  .dpfnu-cta{margin-left:-12px;margin-right:-12px;padding:24px 22px;}
1258
1259  /* secondaries: float thumb, description wraps around it,
1260     date/duration clears to full width */
1261  .dpfnu-sec{display:block;padding:0;}
1262  .dpfnu-sec .dpfnu-media{float:right;width:128px;aspect-ratio:4/3;margin:4px 0 10px 16px;}
1263  .dpfnu-sec__body{display:block;}
1264  .dpfnu-sec .dpfnu-hl{font-size:1.3rem;}
1265  .dpfnu-sec .dpfnu-dek{max-width:none;margin-top:8px!important;}
1266  .dpfnu-sec .dpfnu-meta{clear:both;margin-top:11px!important;}
1267  .dpfnu-sec::after{content:"";display:block;clear:both;}
1268
1269  .dpfnu-endmark{margin-top:48px;gap:12px;}
1270  .dpfnu-endmark__line{flex:0 1 90px;}
1271  .dpfnu__all-full{display:none;}
1272  .dpfnu__all-mob{display:inline;}
1273  .dpfnu__search{display:none!important;} /* mobile search added later */
1274}
1275</style>
1276
1277<!-- Anchor for the main menu's top-level "News" item.
1278     Link to:  https://deathpenalty.org/#news-updates  -->
1279<span class="dpfnu-anchor" id="news-updates" aria-hidden="true"></span>
1280
1281<div class="dpfnu" id="dpfnu">
1282  <div class="dpfnu__inner">
1283
1284    <!-- header -->
1285    <div class="dpfnu__head">
1286      <div>
1287        <span class="dpfnu__kicker">The Focus</span>
1288        <h2 class="dpfnu__title">News &amp; Updates</h2>
1289      </div>
1290      <div class="dpfnu__headright">
1291        <form class="dpfnu__search" role="search" method="get" action="/">
1292          <input class="dpfnu__search-input" type="search" name="s" placeholder="Search the news&hellip;" aria-label="Search the news">
1293          <button class="dpfnu__search-btn" type="submit" aria-label="Search">
1294            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.35-4.35"/></svg>
1295          </button>
1296        </form>
1297        <a class="dpfnu__all" id="dpfnu-all" href="/category/the-focus/">
1298          <span class="dpfnu__all-full">Continue to All News</span><span class="dpfnu__all-mob">Continue to All News</span>
1299          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
1300        </a>
1301      </div>
1302    </div>
1303    <div class="dpfnu__rule"></div>
1304
1305    <!-- grid -->
1306    <div class="dpfnu__grid">
1307
1308      <!-- LEDE: whole <a> is the link (filled by script) -->
1309      <a class="dpfnu-lede dpfnu-card" data-lede href="https://deathpenalty.org/while-were-on-the-subject-79/" aria-label="While we’re on the subject…"><span class="dpfnu-media" data-media style="--img: url(&quot;https://deathpenalty.org/wp-content/uploads/2024/11/Magazines_Shutterstock_ed.jpg&quot;);"><span class="dpfnu-media__inner"></span></span><span class="dpfnu-lede__body"><span class="dpfnu-kick" data-kick></span><span class="dpfnu-hl" data-hl>While we’re on the subject…</span><span class="dpfnu-dek" data-dek>In his op-ed, “Why four Supreme Court justices changed their minds on capital punishment,” in Penn Live, Marshall Dayan, the chair of Pennsylvanians Against the…</span><span class="dpfnu-meta"><time data-time datetime="2026-08-26T15:28:55"><span class="dpfnu-d-full">August 26, 2026</span><span class="dpfnu-d-abbr">Aug 26, 2026</span></time><span class="dpfnu-meta__dot"></span><span data-read>2 min read</span></span><span class="dpfnu-more">Continue reading <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></span></a>
1310<div class="dpfnu-secs" id="dpfnu-secs"><a class="dpfnu-sec dpfnu-card" href="https://deathpenalty.org/in-brief-august-2026/" aria-label="In brief: August 2026"><span class="dpfnu-media" style="--img: url(&quot;https://deathpenalty.org/wp-content/uploads/2024/11/Scales-of-Justice_shutterstock_2471885651-ed-300x165.jpg&quot;);"><span class="dpfnu-media__inner"></span></span><span class="dpfnu-sec__body"><span class="dpfnu-kick"></span><span class="dpfnu-hl">In brief: August 2026</span><span class="dpfnu-dek">In Tennessee, an astonishing 93% of the 275 readers who responded to a poll in the Tennesseean this…</span><span class="dpfnu-meta"><span class="dpfnu-sec-read">2 min read</span></span></span></a><hr class="dpfnu-div"><a class="dpfnu-sec dpfnu-card" href="https://deathpenalty.org/ohio-parole-board-issues-a-rare-recommendation-for-commutation-for-tyrone-noling/" aria-label="Ohio Parole Board issues a rare recommendation for commutation for Tyrone Noling"><span class="dpfnu-media" style="--img: url(&quot;https://deathpenalty.org/wp-content/uploads/2026/08/Tyrone-Noling_Ohio-300x300.png&quot;);"><span class="dpfnu-media__inner"></span></span><span class="dpfnu-sec__body"><span class="dpfnu-kick"></span><span class="dpfnu-hl">Ohio Parole Board issues a rare recommendation for commutation for Tyrone Noling</span><span class="dpfnu-dek">In Ohio, the state parole board recommended that Gov. Mike DeWine commute Tyrone Noling’s death…</span><span class="dpfnu-meta"><span class="dpfnu-sec-read">1 min read</span></span></span></a><hr class="dpfnu-div"><a class="dpfnu-sec dpfnu-card" href="https://deathpenalty.org/execution-update-august-2026/" aria-label="Execution Update August 2026"><span class="dpfnu-media" style="--img: url(&quot;https://deathpenalty.org/wp-content/uploads/2024/09/shutterstock_Bottle-Syringe-pg-1-300x200.jpg&quot;);"><span class="dpfnu-media__inner"></span></span><span class="dpfnu-sec__body"><span class="dpfnu-kick"></span><span class="dpfnu-hl">Execution Update August 2026</span><span class="dpfnu-dek">The Death Penalty Information Center reports that six states have carried out 23 executions so far…</span><span class="dpfnu-meta"><span class="dpfnu-sec-read">1 min read</span></span></span></a><hr class="dpfnu-div"></div>
1311
1312    </div>
1313
1314    <!-- CTA: attractive link to the full News & Updates archive page.
1315         href is (re)set from CFG.allNewsUrl by the script — this literal is only
1316         the no-JS fallback. Keep the two in step. -->
1317    <a class="dpfnu-cta" id="dpfnu-cta" href="/news-updates-archive/?from=home">
1318      <span class="dpfnu-cta__text">
1319        <span class="dpfnu-more-eyebrow">Want to Keep Reading?</span>
1320        <span class="dpfnu-more-title">More from The Focus</span>
1321        <span class="dpfnu-more-intro">Hundreds more stories, commentary, and news briefs — explore the full archive on the movement to end the death penalty.</span>
1322      </span>
1323      <span class="dpfnu-cta__go">Continue to Archive
1324        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
1325      </span>
1326    </a>
1327
1328    <!-- journalistic end mark -->
1329    <div class="dpfnu-endmark" aria-hidden="true">
1330      <span class="dpfnu-endmark__line"></span>
1331      <span class="dpfnu-endmark__dots"><span></span><span></span><span></span></span>
1332      <span class="dpfnu-endmark__line"></span>
1333    </div>
1334
1335  </div>
1336</div>
1337
1338<script>
1339(function(){
1340  var CFG = {
1341    base: '/wp-json/wp/v2/posts',
1342    categories: 7,          // "The Focus". Set to '' for all categories.
1343    count: 4,               // 1 lede + (count-1) featured secondaries.
1344                            // KEEP IN SYNC with the archive widget's CFG.omitLatest —
1345                            // that's how many newest posts the archive hides from its
1346                            // default view because they already appear right here.
1347    stickyLookahead: 2,     // Extra posts fetched beyond `count`. WP's REST posts
1348                            // endpoint does NOT float sticky posts to the top the way
1349                            // the main query does — it orders strictly by date — so a
1350                            // sticky post can only become the lede if it lands inside
1351                            // the fetched window. This is that headroom. Set to 0 if
1352                            // you never use sticky posts (fetch drops to exactly 4).
1353    // Header link + bottom CTA both point here. The ?from=home marker matters:
1354    // it tells the archive page we're CONTINUING from this section, so it skips
1355    // the `count` newest stories shown above and effectively starts at #5.
1356    // The main-menu "News" item must link to the BARE /news-updates-archive/
1357    // (no marker) — that's the complete archive, starting at #1.
1358    allNewsUrl: '/news-updates-archive/?from=home'
1359  };
1360
1361  var root = document.getElementById('dpfnu');
1362  var de = document.createElement('textarea');
1363  function decode(s){ de.innerHTML = s||''; return de.value; }
1364
1365  function dek(html, max){
1366    var t = (html||'').replace(/<[^>]+>/g,' ');
1367    t = decode(t)
1368      .replace(/https?:\/\/\S+/g,'')
1369      .replace(/\[(?:…|&hellip;|\.\.\.)\]/g,'')
1370      .replace(/\s+/g,' ').trim()
1371      .replace(/[\s,;:.–—-]+$/,'');
1372    if(t.length > max){ t = t.slice(0,max); t = t.slice(0, t.lastIndexOf(' ')); }
1373    return t ? t + '…' : '';
1374  }
1375  function img(post, order){
1376    var m = post._embedded && post._embedded['wp:featuredmedia'] && post._embedded['wp:featuredmedia'][0];
1377    if(!m) return '';
1378    var sizes = (m.media_details && m.media_details.sizes) || {};
1379    for(var i=0;i<order.length;i++){ if(sizes[order[i]] && sizes[order[i]].source_url) return sizes[order[i]].source_url; }
1380    return m.source_url || '';
1381  }
1382  function kicker(post){
1383    var terms = (post._embedded && post._embedded['wp:term'] && post._embedded['wp:term'][0]) || [];
1384    for(var i=0;i<terms.length;i++){
1385      var n = terms[i].name;
1386      if(n && n.toLowerCase()!=='uncategorized' && n.toLowerCase()!=='the focus') return n;
1387    }
1388    return '';
1389  }
1390  function readTime(post){
1391    var w = ((post.content && post.content.rendered) || '').replace(/<[^>]+>/g,' ').trim().split(/\s+/).filter(Boolean).length;
1392    return Math.max(1, Math.round(w/200)) + ' min read';
1393  }
1394  // full date on desktop, abbreviated on phones (CSS toggles which shows)
1395  function dateSpans(iso){
1396    var d = new Date(iso);
1397    if(isNaN(d)) return '';
1398    var full = d.toLocaleDateString('en-US',{month:'long',day:'numeric',year:'numeric'});
1399    var abbr = d.toLocaleDateString('en-US',{month:'short',day:'numeric',year:'numeric'});
1400    return '<span class="dpfnu-d-full">'+full+'</span><span class="dpfnu-d-abbr">'+abbr+'</span>';
1401  }
1402  function setMedia(el, url){ if(url) el.style.setProperty('--img', 'url("'+url+'")'); }
1403
1404  function fillLede(post){
1405    var a = root.querySelector('[data-lede]');
1406    a.setAttribute('href', post.link);
1407    a.setAttribute('aria-label', decode(post.title.rendered));
1408    setMedia(a.querySelector('[data-media]'), img(post,['large','full','medium']));
1409    a.querySelector('[data-kick]').textContent = kicker(post);
1410    a.querySelector('[data-hl]').textContent = decode(post.title.rendered);
1411    a.querySelector('[data-dek]').textContent = dek(post.excerpt && post.excerpt.rendered, 165);
1412    var t = a.querySelector('[data-time]'); t.innerHTML = dateSpans(post.date); t.setAttribute('datetime', post.date);
1413    a.querySelector('[data-read]').textContent = readTime(post);
1414  }
1415
1416  function fillSecs(posts){
1417    var box = document.getElementById('dpfnu-secs');
1418    box.innerHTML = '';
1419    posts.forEach(function(post, i){
1420      if(i>0){ var hr=document.createElement('hr'); hr.className='dpfnu-div'; box.appendChild(hr); }
1421      var title = decode(post.title.rendered);
1422      var a = document.createElement('a');
1423      a.className = 'dpfnu-sec dpfnu-card';
1424      a.setAttribute('href', post.link);
1425      a.setAttribute('aria-label', title);
1426      // media FIRST in the DOM so the description can float-wrap it on mobile
1427      a.innerHTML =
1428        '<span class="dpfnu-media"><span class="dpfnu-media__inner"></span></span>'+
1429        '<span class="dpfnu-sec__body">'+
1430          '<span class="dpfnu-kick"></span>'+
1431          '<span class="dpfnu-hl"></span>'+
1432          '<span class="dpfnu-dek"></span>'+
1433          '<span class="dpfnu-meta"><span class="dpfnu-sec-read"></span></span>'+   /* smaller stories: duration only, no date */
1434        '</span>';
1435      a.querySelector('.dpfnu-kick').textContent = kicker(post);
1436      a.querySelector('.dpfnu-hl').textContent = title;
1437      a.querySelector('.dpfnu-dek').textContent = dek(post.excerpt && post.excerpt.rendered, 100);
1438      a.querySelector('.dpfnu-sec-read').textContent = readTime(post);
1439      setMedia(a.querySelector('.dpfnu-media'), img(post,['medium','large','full']));
1440      box.appendChild(a);
1441    });
1442    // final rule under the last small story
1443    var endhr = document.createElement('hr'); endhr.className = 'dpfnu-div'; box.appendChild(endhr);
1444  }
1445
1446  function pick(posts){
1447    var sticky = posts.filter(function(p){ return p.sticky; });
1448    var lede = sticky[0] || posts[0];
1449    var rest = posts.filter(function(p){ return p.id !== lede.id; });
1450    return { lede: lede, secs: rest.slice(0, CFG.count - 1) };
1451  }
1452
1453  // both "Continue" links come from one place
1454  ['dpfnu-all','dpfnu-cta'].forEach(function(id){
1455    var el=document.getElementById(id); if(el) el.setAttribute('href', CFG.allNewsUrl);
1456  });
1457
1458  /* ---------- menu anchor (#news-updates) ----------
1459     The main menu's top-level "News" item jumps here. The site header is FIXED
1460     and its height swings a LOT with viewport width — measured live: 139px at
1461     375, 112px at 1440, 299px at 2560, because the logo scales up on wide
1462     screens. So no hard-coded scroll offset can be right; measure the real
1463     header each time and keep it in sync on resize. */
1464  var ANCHOR_ID='news-updates', ANCHOR_GAP=16;
1465  /* Find the actual pinned header bar (the header renders TWICE — take the tallest
1466     thing that's fixed/sticky against the top edge). */
1467  function headerEl(){
1468    var best=null, bestH=0;
1469    var nodes=document.querySelectorAll('.elementor-location-header,.elementor-location-header *,header,header *');
1470    for(var i=0;i<nodes.length;i++){
1471      var el=nodes[i], cs=getComputedStyle(el);
1472      if(cs.position!=='fixed' && cs.position!=='sticky') continue;
1473      var r=el.getBoundingClientRect();
1474      if(r.top<=1 && r.height>bestH){ bestH=r.height; best=el; }
1475    }
1476    return best;
1477  }
1478  function headerHeight(){ var el=headerEl(); return el?el.getBoundingClientRect().height:0; }
1479  function syncAnchorOffset(){
1480    var a=document.getElementById(ANCHOR_ID); if(!a) return 0;
1481    var h=headerHeight();
1482    if(h>0){ a.style.scrollMarginTop=Math.round(h+ANCHOR_GAP)+'px'; return Math.round(h+ANCHOR_GAP); }
1483    return parseInt(getComputedStyle(a).scrollMarginTop,10)||128;   // CSS fallback
1484  }
1485  function landOnAnchor(){
1486    var a=document.getElementById(ANCHOR_ID); if(!a) return;
1487    var off=syncAnchorOffset();
1488    var y=a.getBoundingClientRect().top+window.pageYOffset-off;
1489    window.scrollTo(0, y<0?0:y);
1490  }
1491
1492  var anchorMoved=false, anchorArriving=(location.hash === '#'+ANCHOR_ID);
1493  ['wheel','touchstart','keydown','pointerdown'].forEach(function(ev){
1494    window.addEventListener(ev, function(){ anchorMoved=true; }, {passive:true});
1495  });
1496
1497  /* WATCH THE HEADER, not the window. This is the bug that made wide monitors
1498     land wrong: the header's height changes WITHOUT a window resize (the logo
1499     scales, Elementor settles the bar after first paint), so a one-shot
1500     measurement taken early goes stale — we measured 139px, the header ended up
1501     299px, and the masthead sat 161px too high, buried under the bar. */
1502  var hdrRO=null, hdrWatched=null;
1503  function watchHeader(){
1504    if(!('ResizeObserver' in window)) return;
1505    var el=headerEl(); if(!el || el===hdrWatched) return;
1506    if(hdrRO) hdrRO.disconnect();
1507    hdrWatched=el;
1508    hdrRO=new ResizeObserver(function(){
1509      syncAnchorOffset();                                   // always keep the offset honest
1510      if(anchorArriving && !anchorMoved) landOnAnchor();     // and re-land if we're still arriving
1511    });
1512    hdrRO.observe(el);
1513  }
1514  watchHeader();
1515  syncAnchorOffset();
1516  var anchorT; window.addEventListener('resize', function(){ clearTimeout(anchorT); anchorT=setTimeout(function(){ watchHeader(); syncAnchorOffset(); },150); });
1517
1518  /* Arriving at /#news-updates from another page: the browser makes its jump
1519     before this script runs, using the stale CSS fallback. Keep re-landing until
1520     the header height holds steady, then stop. Any real user input cancels it
1521     immediately, so a visitor who's already scrolling never gets yanked. */
1522  if(anchorArriving){
1523    var lastH=-1, stableFor=0, startedAt=Date.now();
1524    var settle=setInterval(function(){
1525      if(anchorMoved || Date.now()-startedAt > 4000){ clearInterval(settle); anchorArriving=false; return; }
1526      watchHeader();
1527      var h=Math.round(headerHeight());
1528      if(h!==lastH){ lastH=h; stableFor=0; landOnAnchor(); }
1529      else if(++stableFor >= 5){ clearInterval(settle); anchorArriving=false; }   // ~500ms unchanged → done
1530    },100);
1531    landOnAnchor();
1532  }
1533
1534  /* Already on the home page and clicking "News" in the menu: hashchange, no
1535     reload. The click itself fires pointerdown, so clear the moved flag first. */
1536  window.addEventListener('hashchange', function(){
1537    if(location.hash !== '#'+ANCHOR_ID) return;
1538    anchorMoved=false; anchorArriving=true;
1539    syncAnchorOffset(); landOnAnchor();
1540    setTimeout(function(){ anchorArriving=false; },1200);
1541  });
1542
1543  // Fetch only what we render (+ the sticky lookahead). Every post here arrives
1544  // _embed'd — author, terms, featured media AND the full rendered content — so
1545  // an oversized per_page is real weight on the home page's first paint.
1546  var perPage = CFG.count + CFG.stickyLookahead;
1547  fetch(CFG.base + '?_embed&per_page=' + perPage + (CFG.categories!=='' ? '&categories='+CFG.categories : ''), {credentials:'same-origin'})
1548    .then(function(r){ if(!r.ok) throw new Error(r.status); return r.json(); })
1549    .then(function(posts){
1550      if(!Array.isArray(posts) || !posts.length) throw new Error('no posts');
1551      var s = pick(posts);
1552      fillLede(s.lede);
1553      fillSecs(s.secs);
1554      root.classList.remove('is-loading');
1555    })
1556    .catch(function(err){
1557      root.classList.remove('is-loading');
1558      if(window.console) console.warn('[DPF News] live fetch failed:', err);
1559    });
1560})();
1561</script>
1561
1562				</div>
1563				</div>
1564				<div class="elementor-element elementor-element-4f82efb elementor-widget elementor-widget-html" data-id="4f82efb" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
1565				<div class="elementor-widget-container">
1566					<!-- ============================================================
1567     DPF — ARTICLE MODAL  (single-post reader overlay)
1568     Click any story card in the News & Updates section or the
1569     Archive page and the full article opens here, in an elegant
1570     modal — an immersive featured-image hero (title on the image),
1571     drop-cap body, and author + categories.
1572
1573     • Self-contained (fonts + CSS + JS). Scoped to .dpfa.
1574     • Intercepts clicks on our card links (.dpfnu-card / .dpar-card)
1575       — no changes to those blocks. Cmd/Ctrl/middle-click still opens
1576       the real post URL in a new tab (crawlers/no-JS get the real page).
1577     • Esc, the ✕, and the backdrop close it — closing simply dismisses the
1578       modal and leaves you exactly where you were (no reload, no scroll jump).
1579     • Posts with no featured image fall back to a clean title-on-cream header.
1580     • Keyboard/screen-reader: opening moves focus into the dialog, Tab is
1581       trapped inside it while open, and closing returns focus to the card
1582       you clicked. Every focus call uses preventScroll, so focus handling
1583       can never move the page underneath.
1584
1585     PASTE this whole file into one Elementor "HTML" widget on any page
1586     that shows our cards (Home News & Updates section + /news-updates-archive/).
1587     ============================================================ -->
1588
1589<style>
1590@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Open+Sans:wght@400;500;600;700&display=swap');
1591
1592.dpfa{
1593  --ink:#23201d; --ink-soft:#403b34; --stone:#8a8178; --cream:#f7f4ef;
1594  --line:#e3dccf; --gold:#b3903f; --gold-d:#a07d33; --red:#d0111b;
1595  --sans:'Open Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
1596  --serif:'Cormorant Garamond','Playfair Display',Georgia,'Times New Roman',serif;
1597}
1598.dpfa, .dpfa *{box-sizing:border-box;}
1599.dpfa{position:fixed;inset:0;z-index:2147483000;display:none;align-items:flex-start;justify-content:center;padding:clamp(12px,4vw,48px) clamp(10px,4vw,40px);}
1600.dpfa.is-open{display:flex;}
1601.dpfa__backdrop{position:absolute;inset:0;background:rgba(24,22,20,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity .25s ease;}
1602.dpfa.is-in .dpfa__backdrop{opacity:1;}
1603
1604.dpfa__dialog{position:relative;z-index:1;width:100%;max-width:860px;max-height:calc(100vh - clamp(24px,8vw,96px));background:var(--cream);border-radius:14px;overflow:hidden;box-shadow:0 40px 90px rgba(16,14,12,.5);display:flex;flex-direction:column;transform:translateY(20px) scale(.985);opacity:0;transition:transform .3s cubic-bezier(.2,.7,.25,1),opacity .3s ease;font-family:var(--sans);color:var(--ink);-webkit-font-smoothing:antialiased;}
1605.dpfa.is-in .dpfa__dialog{transform:none;opacity:1;}
1606
1607.dpfa__close{position:absolute;top:14px;right:14px;z-index:5;width:40px;height:40px;display:grid!important;place-items:center;border:0!important;border-radius:50%!important;background:rgba(20,17,15,.42)!important;color:#fff!important;cursor:pointer!important;padding:0!important;box-shadow:0 4px 14px rgba(16,14,12,.28)!important;-webkit-appearance:none;appearance:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);transition:background-color .15s ease,transform .15s ease;}
1608.dpfa__close:hover{background:rgba(20,17,15,.62)!important;transform:scale(1.06);}
1609.dpfa__close svg{width:18px;height:18px;}
1610
1611.dpfa__scroll{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;}
1612/* focused programmatically on open (tabindex="-1") so the reader lands at the top
1613   of the article and arrow/PageDown scroll it straight away. It's never reachable
1614   by Tab, so suppressing the ring here costs no keyboard affordance. */
1615.dpfa__scroll:focus{outline:none;}
1616
1617/* ── immersive hero (featured image with the header on it) ── */
1618.dpfa__hero{position:relative;display:none;width:100%;aspect-ratio:16/10;background:#2a2622 var(--img) center center/cover no-repeat;overflow:hidden;}
1619.dpfa__hero.has{display:block;}
1620.dpfa__hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,15,13,0) 0%,rgba(18,15,13,.06) calc(var(--capstart,55%) - 6%),rgba(18,15,13,.5) var(--capstart,55%),rgba(18,15,13,.9) 100%);}
1621.dpfa__hero-cap{position:absolute;
1621left:0;right:0;bottom:0;z-index:1;padding:clamp(24px,4.5vw,44px) clamp(20px,4.5vw,56px) clamp(20px,3.5vw,34px);}
1622.dpfa__hero-cap .dpfa__eyebrow{color:#e9cf98;}
1623.dpfa__hero-cap .dpfa__title{color:#fff!important;text-shadow:0 1px 30px rgba(0,0,0,.35);}
1624.dpfa__hero-cap .dpfa__meta{color:rgba(255,255,255,.82);}
1625.dpfa__hero-cap .dpfa__meta__dot{background:rgba(255,255,255,.6);}
1626@media (max-width:560px){.dpfa__hero{aspect-ratio:3/2;}}
1627
1628/* shared header bits (used on the hero OR, image-less, on the cream) */
1629.dpfa__eyebrow{display:inline-block;font-weight:700;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin:0 0 12px;}
1630.dpfa__title{font-family:var(--serif)!important;font-weight:600!important;font-size:clamp(1.9rem,4vw,2.7rem)!important;line-height:1.08!important;letter-spacing:.004em;color:var(--ink)!important;margin:0!important;text-transform:none!important;}
1631.dpfa__meta{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:13px;letter-spacing:.02em;color:var(--stone);}
1632.dpfa__meta__dot{width:3px;height:3px;border-radius:50%;background:var(--stone);opacity:.7;}
1633.dpfa__rule{height:1px;background:var(--line);margin:22px 0 26px;}
1634
1635.dpfa__pad{padding:clamp(24px,4vw,40px) clamp(20px,4.5vw,56px) clamp(24px,4vw,44px);}
1636.dpfa__headplain:empty{display:none;}
1637
1638.dpfa__body{font-family:var(--sans);font-size:17px;line-height:1.68;color:var(--ink-soft);}
1639.dpfa__body > p:first-of-type::first-letter{float:left;font-family:var(--serif);font-weight:700;font-size:3.4em;line-height:.82;padding:6px 12px 0 0;color:var(--gold);}
1640.dpfa__body p{margin:0 0 1.15em;}
1641.dpfa__body a{color:var(--red);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px;overflow-wrap:break-word;word-break:break-word;}
1642.dpfa__body a:hover{color:#a50e16;}
1643.dpfa__body img{max-width:100%;height:auto;border-radius:6px;margin:10px 0;}
1644.dpfa__body figure{margin:18px 0;}
1645.dpfa__body figcaption{font-size:13px;color:var(--stone);margin-top:6px;}
1646.dpfa__body h2,.dpfa__body h3{font-family:var(--serif)!important;color:var(--ink)!important;line-height:1.15;margin:1.2em 0 .5em;}
1647.dpfa__body blockquote{margin:20px 0;padding:4px 0 4px 20px;border-left:3px solid var(--gold);font-family:var(--serif);font-size:1.25em;line-height:1.4;color:var(--ink);}
1648.dpfa__body ul,.dpfa__body ol{margin:0 0 1.15em;padding-left:1.3em;}
1649.dpfa__body li{margin:.3em 0;}
1650
1651/* footer: author + categories */
1652.dpfa__foot{margin:30px 0 0;padding:20px 0 4px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
1653.dpfa__by{font-size:13.5px;color:var(--ink-soft);}
1654.dpfa__by b{font-weight:700;color:var(--ink);}
1655.dpfa__cats{display:flex;flex-wrap:wrap;gap:8px;}
1656.dpfa__cat{display:inline-block;font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);border:1px solid var(--line);border-radius:100px;padding:5px 12px;text-decoration:none;transition:border-color .2s ease,color .2s ease;}
1657.dpfa__cat:hover{border-color:var(--gold);color:var(--gold-d);}
1658
1659/* loading */
1660.dpfa__loading{padding:60px 0;text-align:center;color:var(--stone);font-size:15px;}
1661.dpfa__spin{width:26px;height:26px;margin:0 auto 14px;border:2.5px solid var(--line);border-top-color:var(--gold);border-radius:50%;animation:dpfa-spin .8s linear infinite;}
1662@keyframes dpfa-spin{to{transform:rotate(360deg)}}
1663
1664html.dpfa-lock,html.dpfa-lock body{overflow:hidden!important;}
1665</style>
1666
1667<div class="dpfa" id="dpfa" role="presentation">
1668  <div class="dpfa__backdrop" data-dpfa-close></div>
1669  <div class="dpfa__dialog" id="dpfa-dialog" role="dialog" aria-modal="true" aria-label="Article">
1670    <button class="dpfa__close" type="button" data-dpfa-close aria-label="Close article">
1671      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg>
1672    </button>
1673    <div class="dpfa__scroll" id="dpfa-scroll" tabindex="-1">
1674      <div class="dpfa__loading" id="dpfa-loading"><div class="dpfa__spin"></div>Loading article&hellip;</div>
1675      <article class="dpfa__article" id="dpfa-article" hidden>
1676        <div class="dpfa__hero" id="dpfa-hero"><div class="dpfa__hero-cap" id="dpfa-herocap"></div></div>
1677        <div class="dpfa__pad">
1678          <div class="dpfa__headplain" id="dpfa-headplain"></div>
1679          <div class="dpfa__body" id="dpfa-body"></div>
1680          <div class="dpfa__foot" id="dpfa-foot"></div>
1681        </div>
1682      </article>
1683    </div>
1684  </div>
1685</div>
1686
1687<script>
1688(function(){
1689  if (window.__dpfaInit) return; window.__dpfaInit = true;
1690  var API = '/wp-json/wp/v2';
1691  var CARD_SEL = 'a.dpfnu-card, a.dpar-card';
1692  /* Category chips point at OUR archive, filtered — not WordPress's own
1693     /category/<slug>/ page, which renders in the theme's old template.
1694     #c=<id> is the archive widget's category filter (see its readHash). */
1695  var ARCHIVE_URL = '/news-updates-archive/';
1696
1697  var modal=document.getElementById('dpfa'), scroller=document.getElementById('dpfa-scroll');
1698  var dialogEl=document.getElementById('dpfa-dialog');
1699  var loadingEl=document.getElementById('dpfa-loading'), artEl=document.getElementById('dpfa-article');
1700  var heroEl=document.getElementById('dpfa-hero'), heroCapEl=document.getElementById('dpfa-herocap');
1701  var headPlainEl=document.getElementById('dpfa-headplain');
1702  var bodyEl=document.getElementById('dpfa-body'), footEl=document.getElementById('dpfa-foot');
1703  var de=document.createElement('textarea');
1704  function decode(s){ de.innerHTML=s||''; return de.value; }
1705  function esc(s){ return (s||'').replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;'); }
1706  function slugFromHref(href){ try{ var u=new URL(href, location.origin); var seg=u.pathname.split('/').filter(Boolean); return seg.pop()||''; }catch(e){ return ''; } }
1707  function fdate(iso){ var d=new Date(iso); return isNaN(d)?'':d.toLocaleDateString('en-US',{month:'long',day:'numeric',year:'numeric'}); }
1708  function readTime(html){ var w=(html||'').replace(/<[^>]+>/g,' ').trim().split(/\s+/).filter(Boolean).length; return w?Math.max(1,Math.round(w/200))+' min read':''; }
1709  function mediaUrl(post,order){ var m=post._embedded&&post._embedded['wp:featuredmedia']&&post._embedded['wp:featuredmedia'][0]; if(!m)return ''; var s=(m.media_details&&m.media_details.sizes)||{}; for(var i=0;i<order.length;i++){ if(s[order[i]]&&s[order[i]].source_url) return s[order[i]].source_url; } return m.source_url||''; }
1710  function cats(post){ return (post._embedded&&post._embedded['wp:term']&&post._embedded['wp:term'][0])||[]; }
1711  function authorName(post){ return post._embedded&&post._embedded.author&&post._embedded.author[0]?decode(post._embedded.author[0].name):''; }
1712
1713  function clearHero(){ heroEl.classList.remove('has'); heroEl.style.removeProperty('--img'); heroCapEl.innerHTML=''; headPlainEl.innerHTML=''; }
1714
1715  /* Every focus() in this block passes preventScroll — focus management must never
1716     be able to move the page behind the modal (that's the whole point of the
1717     "closing leaves you exactly where you were" rule). Older browsers that ignore
1718     the options object fall back to a plain focus(). */
1719  function focusNoScroll(el){
1720    if(!el || typeof el.focus!=='function') return;
1721    try{ el.focus({preventScroll:true}); }catch(e){ try{ el.focus(); }catch(e2){} }
1722  }
1723
1724  // turn embedded button widgets (Elementor / Gutenberg / theme) into plain inline
1725  // text links — the link text (or "Link") stays, and it then behaves like any other
1726  // article link (target=_blank + the background-tab handler below).
1727  function debuttonize(root){
1728    var sel='a.elementor-button, a.wp-block-button__link, a.wp-element-button, a.button, a.btn';
1729    Array.prototype.forEach.call(root.querySelectorAll(sel), function(a){
1730      var href=a.getAttribute('href'); if(!href) return;
1731      var t=a.querySelector('.elementor-button-text');
1732      var txt=((t?t.textContent:a.textContent)||'').replace(/\s+/g,' ').trim() || 'Link';
1733      var link=document.createElement('a'); link.setAttribute('href',href); link.textContent=txt;
1734      var wrap=a.closest('.elementor-widget-button') || a.closest('.wp-block-button') || a.closest('.elementor-button-wrapper') || a;
1735      var p=document.createElement('p'); p.appendChild(link);
1736      if(wrap.parentNode) wrap.parentNode.replaceChild(p, wrap);
1737    });
1738  }
1739
1740  // On open (and on resize) fit the hero heading: (1) truncate with an ellipsis so the
1741  // eyebrow+title+meta never overflow the top of the image, and (2) push the gradient's
1742  // dark ramp up to exactly the top of that caption so a tall heading stays high-contrast.
1743  function fitHero(){
1744    if(!heroEl.classList.contains('has')) return;
1745    var titleEl=document.getElementById('dpfa-title'); if(!titleEl) return;
1746    var full=titleEl.getAttribute('data-full'); if(full==null){ full=titleEl.textContent; titleEl.setAttribute('data-full',full); }
1747    var heroH=heroEl.clientHeight; if(!heroH){ return; }
1748    var topGap=14;
1749    titleEl.textContent=full;
1750    var words=full.split(/\s+/);
1751    while(words.length>3 && heroCapEl.offsetHeight > heroH - topGap){
1752      words.pop(); titleEl.textContent=words.join(' ')+'…';
1753    }
1754    // The VISIBLE heading may now be clipped — keep the full headline as the heading's
1755    // accessible name so screen readers never hear a half-title.
1756    if(titleEl.textContent!==full) titleEl.setAttribute('aria-label',full);
1757    else titleEl.removeAttribute('aria-label');
1758    var capTop=heroH - heroCapEl.offsetHeight;                 // px from hero top to caption top
1759    var startPct=Math.max(0,(capTop/heroH)*100 - 4);           // dark ramp begins just above the caption
1760    heroEl.style.setProperty('--capstart', startPct.toFixed(1)+'%');
1761  }
1762
1763  function renderArticle(post){
1764    var c=cats(post);
1765    var kick=''; for(var i=0;i<c.length;i++){ var n=c[i].name; if(n&&n.toLowerCase()!=='uncategorized'){ kick=n; break; } }
1766    var title=decode(post.title.rendered);
1767    // name the dialog with the FULL title (the visible <h1> can be ellipsized by fitHero)
1768    dialogEl.setAttribute('aria-label', title);
1769    var rt=readTime(post.content&&post.content.rendered);
1770    var metaHTML='<time datetime="'+esc(post.date)+'">'+fdate(post.date)+'</time>'+(rt?'<span class="dpfa__meta__dot"></span><span>'+rt+'</span>':'');
1771    var headerHTML='<span class="dpfa__eyebrow">'+esc(kick||'The Focus')+'</span>'+
1772                   '<h1 class="dpfa__title" id="dpfa-title">'+esc(title)+'</h1>'+
1773                   '<div class="dpfa__meta">'+metaHTML+'</div>';
1774    var im=mediaUrl(post,['large','full','medium_large','medium']);
1775    if(im){
1776      heroEl.style.setProperty('--img','url("'+im+'")');
1777      heroEl.classList.add('has');
1778      heroCapEl.innerHTML=headerHTML;
1779      headPlainEl.innerHTML='';
1780    } else {
1781      heroEl.classList.remove('has'); heroEl.style.removeProperty('--img'); heroCapEl.innerHTML='';
1782      headPlainEl.innerHTML=headerHTML+'<div class="dpfa__rule"></div>';
1783    }
1784    bodyEl.innerHTML=(post.content&&post.content.rendered)||'';
1785    debuttonize(bodyEl);   // Elementor/Gutenberg buttons → plain text links
1786    // every in-article link opens in a new tab (never replaces the modal)
1787    Array.prototype.forEach.call(bodyEl.querySelectorAll('a[href]'), function(a){ var raw=a.getAttribute('href')||''; if(/^(#|mailto:|tel:|javascript:)/i.test(raw)) return; a.setAttribute('target','_blank'); a.setAttribute('rel','noopener noreferrer'); });
1788    var by=authorName(post);
1789    var chips=c.filter(function(t){return t.name&&t.name.toLowerCase()!=='uncategorized';}).map(function(t){
1790      var href = t.id ? (ARCHIVE_URL+'#p=1&c='+encodeURIComponent(t.id)) : (t.link||'#');
1791      return '<a class="dpfa__cat" href="'+esc(href)+'">'+esc(decode(t.name))+'</a>';
1792    }).join('');
1793    footEl.innerHTML=(by?'<span class="dpfa__by">By <b>'+esc(by)+'</b></span>':'<span></span>')+'<span class="dpfa__cats">'+chips+'</span>';
1794    loadingEl.style.display='none'; artEl.hidden=false;
1795    requestAnimationFrame(fitHero);
1796  }
1797
1798  /* ---------- focus management ----------
1799     role="dialog" + aria-modal only *claims* modality; without these three
1800     behaviours a keyboard user tabs straight past the backdrop into the page
1801     behind, and lands nowhere in particular on close. */
1802  var FOCUSABLE='a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])';
1803  var lastFocus=null;
1804  /* The element to hand focus back to on close. Set explicitly by the card
1805     interceptor rather than read from document.activeElement, because Safari
1806     does NOT focus a link on click — activeElement would just be <body> there. */
1807  var returnTo=null;
1808  function focusables(){
1809    return Array.prototype.filter.call(dialogEl.querySelectorAll(FOCUSABLE), function(el){
1810      return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);   // skip hidden ones
1811    });
1812  }
1813  // Tab trap: only the two ends need catching; everything between them is the
1814  // browser's own (correct) tab order through the article's links and chips.
1815  modal.addEventListener('keydown', function(e){
1816    if(e.key!=='Tab' || !isOpen) return;
1817    var f=focusables();
1818    if(!f.length){ e.preventDefault(); focusNoScroll(scroller); return; }
1819    var act=document.activeElement;
1820    if(!dialogEl.contains(act)){ e.preventDefault(); focusNoScroll(e.shiftKey?f[f.length-1]:f[0]); return; }
1821    if(e.shiftKey){ if(act===f[0]){ e.preventDefault(); focusNoScroll(f[f.length-1]); } }
1822    else { if(act===f[f.length-1]){ e.preventDefault(); focusNoScroll(f[0]); } }
1823  });
1824  // Safety net for focus that arrives from outside the keydown path (browser
1825  // chrome round-trips, stray programmatic focus in theme/plugin scripts).
1826  document.addEventListener('focusin', function(e){
1827    if(!isOpen || modal.contains(e.target)) return;
1828    focusNoScroll(scroller);
1829  });
1830
1831  /* ---------- open / close (pure show/hide — NO history/URL navigation,
1832     so closing just dismisses the modal and leaves the page untouched:
1833     same scroll position, no reload) ---------- */
1834  var isOpen=false;
1835  function show(){
1836    lastFocus=returnTo||document.activeElement;       // the card that was clicked
1837    returnTo=null;
1838    modal.classList.add('is-open'); document.documentElement.classList.add('dpfa-lock');
1839    requestAnimationFrame(function(){ modal.classList.add('is-in'); });
1840    isOpen=true;
1841    focusNoScroll(scroller);                          // land at the top of the article
1842  }
1843  function reset(){ artEl.hidden=true; loadingEl.style.display=''; bodyEl.innerHTML=''; footEl.innerHTML=''; dialogEl.setAttribute('aria-label','Article'); clearHero(); scroller.scrollTop=0; }
1844
1845  function openHref(href){
1846    var slug=slugFromHref(href); if(!slug){ location.href=href; return; }
1847    reset(); show();
1848    fetch(API+'/posts?_embed&slug='+encodeURIComponent(slug),{credentials:'same-origin'})
1849      .then(function(r){ return r.ok?r.json():[]; })
1850      .then(function(arr){ if(!arr||!arr.length){ hard(href); return; } renderArticle(arr[0]); })
1851      .catch(function(){ hard(href); });
1852  }
1853  function hard(href){ closeUI(); location.href=href; }   // only if the slug isn't a real post (rare)
1854
1855  function closeUI(){
1856    modal.classList.remove('is-in');
1857    document.documentElement.classList.remove('dpfa-lock');
1858    isOpen=false;                                     // before the restore, so the focusin net stands down
1859    var back=lastFocus; lastFocus=null;
1860    if(back && document.contains(back)) focusNoScroll(back);   // back to the card you clicked
1861    setTimeout(function(){ if(!isOpen){ modal.classList.remove('is-open'); reset(); } },260);
1862  }
1863  function requestClose(){ if(isOpen) closeUI(); }
1864
1865  document.addEventListener('keydown', function(e){ if(e.key==='Escape' && isOpen) requestClose(); });
1866  var fitT; window.addEventListener('resize', function(){ if(isOpen){ clearTimeout(fitT); fitT=setTimeout(fitHero,120); } });
1867  modal.addEventListener('click', function(e){ if(e.target.closest('[data-dpfa-close]')) requestClose(); });
1868
1869  /* article links → open in a NEW tab, in the BACKGROUND, focus staying on the modal.
1870     A plain left-click is turned into a synthetic cmd/ctrl-click on a throwaway <a>,
1871     which browsers treat as "open in a background tab." (User's own modifier/middle
1872     clicks are left alone.) Worst case a browser still foregrounds it — but the modal
1873     is never replaced, since every link is target="_blank". */
1874  var isMac=/Mac|iP(hone|ad|od)/.test(navigator.platform||navigator.userAgent||'');
1875  bodyEl.addEventListener('click', function(e){
1876    var a=e.target.closest('a[href]'); if(!a) return;
1877    if(e.button!==0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
1878    var raw=a.getAttribute('href')||''; if(!raw || /^(#|mailto:|tel:|javascript:)/i.test(raw)) return;
1879    e.preventDefault();
1880    var t=document.createElement('a'); t.href=a.href; t.target='_blank'; t.rel='noopener noreferrer';
1881    document.body.appendChild(t);
1882    t.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window,button:0,ctrlKey:!isMac,metaKey:isMac}));
1883    document.body.removeChild(t);
1884    try{ window.focus(); }catch(err){}
1885  });
1886
1887  /* Category chips: dismiss the modal, then go. This matters most on the archive
1888     page itself, where the chip is a SAME-PAGE hash change — without it the modal
1889     would sit open over a grid quietly refiltering behind it. */
1890  footEl.addEventListener('click', function(e){
1891    var chip=e.target.closest('a.dpfa__cat'); if(!chip) return;
1892    if(e.button!==0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
1893    var href=chip.getAttribute('href'); if(!href || href==='#') return;
1894    e.preventDefault();
1895    requestClose();
1896    location.href=href;
1897  });
1898
1899  /* ---------- intercept card clicks ---------- */
1900  document.addEventListener('click', function(e){
1901    if(e.defaultPrevented || e.button!==0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
1902    var a=e.target.closest(CARD_SEL); if(!a) return;
1903    var href=a.getAttribute('href'); if(!href || href==='#') return;
1904    var u; try{ u=new URL(href, location.origin); }catch(err){ return; }
1905    if(u.origin!==location.origin) return;
1906    e.preventDefault();
1907    returnTo=a;                    // hand focus back to THIS card when the modal closes
1908    openHref(u.href);
1909  }, true);
1910
1911  window.DPFArticle = { open: openHref, close: requestClose };
1912})();
1913</script>
1913
1914				</div>
1915				</div>
1916					</div>
1917		</div>
1918					</div>
1919		</section>
1920				</div>
1921		
1922		
1923			</div>
1924
1925	
1926</main>
1927
1928			<footer data-elementor-type="footer" data-elementor-id="50" class="elementor elementor-50 elementor-location-footer" data-elementor-post-type="elementor_library">
1929			<div class="elementor-element elementor-element-57ee3a4 e-flex e-con-boxed e-con e-parent" data-id="57ee3a4" data-element_type="container" data-e-type="container">
1930					<div class="e-con-inner">
1931				<div class="elementor-element elementor-element-20e351b elementor-widget elementor-widget-html" data-id="20e351b" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
1932				<div class="elementor-widget-container">
1933					<!-- ================================================================
1934     DEATH PENALTY FOCUS — Footer CTA 01
1935     Self-contained block for an Elementor HTML widget.
1936     Rotating headline (crossfade, no layout shift) + Donate button.
1937     Hardened with !important + non-heading tags so the WordPress
1938     theme's h2/a styles can't override it. Button → DonorPerfect.
1939     ================================================================ -->
1940<div class="dpf-cta" role="region" aria-label="Support Death Penalty Focus">
1941  <span class="dpf-cta__kicker">Death Penalty Focus</span>
1942  <div class="dpf-cta__inner">
1943
1944    <div class="dpf-cta__copy">
1945
1946      <!-- Fixed-height stage: every headline is absolutely stacked,
1947           so swapping never reflows the container. -->
1948      <div class="dpf-cta__stage" aria-live="polite">
1949        <div class="dpf-cta__msg is-active">Together, we can end the death penalty.</div>
1950        <div class="dpf-cta__msg">Justice should never come with an execution date.</div>
1951        <div class="dpf-cta__msg">No life is the State&rsquo;s to take.</div>
1952        <div class="dpf-cta__msg">The system is broken. Let&rsquo;s fix it.</div>
1953        <div class="dpf-cta__msg">Be the reason a life is spared.</div>
1954        <div class="dpf-cta__msg">Every voice brings us closer to abolition.</div>
1955        <div class="dpf-cta__msg">Mercy is stronger than vengeance.</div>
1956        <div class="dpf-cta__msg">Stand against State-sanctioned death.</div>
1957        <div class="dpf-cta__msg">Replace executions with real justice.</div>
1958        <div class="dpf-cta__msg">Your support helps save lives.</div>
1959      </div>
1960    </div>
1961
1962    <div class="dpf-cta__action">
1963      <div class="dpf-cta__btns">
1964
1965        <!-- SECONDARY: Sign Up (ghost/outline) -->
1966        <a class="dpf-cta__btn dpf-cta__btn--ghost"
1967           href="https://interland3.donorperfect.net/weblink/weblink.aspx?name=E362705&amp;id=1"
1968           target="_blank" rel="noopener noreferrer">
1969          <span class="dpf-cta__btn-label">SIGN UP</span>
1970          <!-- Font Awesome "user-plus" — exact path, embedded -->
1971          <svg class="dpf-cta__coin" width="22" height="18" viewBox="0 0 640 512" aria-hidden="true">
1972            <path fill="currentColor" d="M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM504 312l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"/>
1973          </svg>
1974        </a>
1975
1976        <!-- PRIMARY: Donate (solid) + its tax note, centered beneath it -->
1977        <div class="dpf-cta__donate-wrap">
1978        <a class="dpf-cta__btn"
1979           href="https://deathpenalty.org/ways-to-give/"
1980           target="_blank" rel="noopener noreferrer">
1981          <span class="dpf-cta__btn-label">DONATE</span>
1982          <!-- Font Awesome "circle-dollar-to-slot" (fa-donate) — exact path, embedded -->
1983          <svg class="dpf-cta__coin" width="21" height="21" viewBox="0 0 512 512" aria-hidden="true">
1984            <path fill="currentColor" d="M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3l-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1l0 6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1l0 6.4c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1l0-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4l0-6.3c0-11.1-9-20.1-20.1-20.1zM48 352l16 0c19.5 25.9 44 47.7 72.2 64L64 416l0 32 192 0 192 0 0-32-72.2 0c28.2-16.3 52.8-38.1 72.2-64l16 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48z"/>
1985          </svg>
1986        </a>
1987        <span class="dpf-cta__note">100% tax-deductible</span>
1988        </div>
1989
1990      </div>
1991    </div>
1992
1993  </div>
1994</div>
1995<!-- end CTA -->
1996
1997<!-- ================================================================
1998     TESTIMONIALS — second panel, always rendered below the CTA.
1999     Edit the content in the DPF_TESTIMONIALS array (in the 
1999<script>
2000     near the bottom). Each entry supports: quote, name (or
2001     "Anonymous"), role, photo (Media Library URL),
2002     and link (People bio page URL). Only quote is required.
2003     ================================================================ -->
2004<div class="dpf-testi" role="region" aria-label="Voices for abolition">
2005  <div class="dpf-testi__inner">
2006    <div class="dpf-testi__stage" aria-live="polite">
2007      <figure class="dpf-testi__card">
2008        <div class="dpf-testi__media">
2009          <img class="dpf-testi__photo" alt="" />
2010          <span class="dpf-testi__monogram" aria-hidden="true"></span>
2011        </div>
2012        <div class="dpf-testi__body">
2013          <blockquote class="dpf-testi__quote"></blockquote>
2014          <figcaption class="dpf-testi__caption">
2015            <span class="dpf-testi__name"></span>
2016            <span class="dpf-testi__role"></span>
2017          </figcaption>
2018          <a class="dpf-testi__link" target="_blank" rel="noopener noreferrer">Read their story<svg class="dpf-testi__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6" fill="none" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round"/></svg></a>
2019        </div>
2020      </figure>
2021    </div>
2022  </div>
2023
2024  <!-- Bio modal (opens from "Read ___'s story" or a panel click) -->
2025  <div class="dpf-testi__modal" role="dialog" aria-modal="true" aria-labelledby="dpf-modal-name" hidden>
2026    <div class="dpf-testi__modal-bg" data-close></div>
2027    <div class="dpf-testi__modal-card" role="document">
2028      <button type="button" class="dpf-testi__modal-x" aria-label="Close" data-close>&times;</button>
2029      <div class="dpf-testi__modal-media">
2030        <img class="dpf-testi__modal-photo" alt="" />
2031        <span class="dpf-testi__modal-mono" aria-hidden="true"></span>
2032      </div>
2033      <h3 class="dpf-testi__modal-name" id="dpf-modal-name"></h3>
2034      <div class="dpf-testi__modal-role"></div>
2035      <div class="dpf-testi__modal-bio"></div>
2036    </div>
2037  </div>
2038</div>
2039<!-- end TESTIMONIALS -->
2040
2041<style>
2042/* ===== scoped + hardened so the theme can't bleed in or override ===== */
2043.dpf-cta{
2044  --dpf-red-1:#d22d22;
2045  --dpf-red-2:#9c1812;
2046  --dpf-ink:#2a0c09;
2047  --dpf-radius:10px;
2048  font-family:inherit;
2049  box-sizing:border-box !important;
2050  width:90% !important;
2051  margin:15px calc(5% + 18px) 15px auto !important;   /* 90% wide, nudged left for ~18px extra right clearance (Share panel) */
2052  padding:clamp(26px,4vw,48px) clamp(22px,4vw,56px) !important;
2053  border-radius:var(--dpf-radius);
2054  position:relative !important;
2055  overflow:hidden !important;
2056  color:#fff !important;
2057  background:
2058    radial-gradient(120% 140% at 12% 0%, rgba(255,255,255,.16), rgba(255,255,255,0) 42%),
2059    linear-gradient(135deg, var(--dpf-red-1) 0%, var(--dpf-red-2) 100%) !important;
2060  box-shadow:0 18px 48px -20px rgba(120,16,12,.65);
2061}
2062.dpf-cta *{box-sizing:border-box !important;}
2063/* faceted-glass texture echoing the original block */
2064.dpf-cta::before{
2065  content:"" !important;position:absolute !important;inset:0 !important;
2066  pointer-events:none;opacity:.5;z-index:0;
2067  background:
2068    linear-gradient(115deg, rgba(255,255,255,.10) 0 18%, transparent 18% 38%),
2069    linear-gradient(295deg, rgba(0,0,0,.16) 0 22%, transparent 22% 50%);
2070  mix-blend-mode:overlay;
2071}
2072/* elegant hairline frame, inset just inside the edge */
2073.dpf-cta::after{
2074  content:"" !important;position:absolute !important;
2075  top:14px !important;right:14px !important;bottom:14px !important;left:14px !important;
2076  border:1px solid rgba(212,160,23,.55) !important;   /* faint gold, ties to the eyebrow */
2077  border-radius:6px !important;
2078  pointer-events:none !important;z-index:2 !important;
2079}
2080.dpf-cta__inner{
2081  position:relative !important;z-index:1 !important;
2082  display:flex !important;align-items:center !important;justify-content:space-between !important;
2083  gap:clamp(20px,4vw,52px) !important;
2084  max-width:1180px !important;margin:0 auto !important;
2085}
2086.dpf-cta__copy{flex:1 1 auto !important;min-width:0 !important;}
2087.dpf-cta__kicker{                       /* matches the site's .dpf-eyebrow */
2088  position:absolute !important;z-index:3 !important;
2089  top:clamp(18px,2.6vw,26px) !important;left:clamp(24px,4vw,56px) !important;
2090  display:inline-block !important;margin:0 !important;
2091  font-family:Arial,sans-serif !important;
2092  font-size:11px !important;
2093  letter-spacing:3px !important;text-transform:uppercase !important;
2094  font-weight:400 !important;line-height:1.6 !important;
2095  color:#d4a017 !important;   /* gold */
2096}
2097/* the stage reserves height for the tallest headline → zero jump */
2098.dpf-cta__stage{
2099  position:relative !important;
2100  min-height:2.4em !important;          /* desktop: ~2 lines max */
2101  line-height:1.18 !important;
2102}
2103.dpf-cta__msg{
2104  position:absolute !important;inset:0 !important;margin:0 !important;padding:0 !important;
2105  display:flex !important;align-items:center !important;
2106  font-family:inherit !important;
2107  font-size:clamp(1.2rem,2.35vw,1.85rem) !important;
2108  font-weight:800 !important;letter-spacing:-.01em !important;line-height:1.12 !important;
2109  color:#fff !important;text-transform:none !important;text-wrap:balance;
2110  opacity:0 !important;transform:none;
2111  transition:opacity .35s ease;   /* snappy, clean swap — no slow blurry crossfade */
2112  will-change:opacity;
2113}
2114.dpf-cta__msg.is-active{opacity:1 !important;transform:none;}
2115
2116.dpf-cta__action{
2117  flex:0 0 auto !important;display:flex !important;flex-direction:column !important;
2118  align-items:center !important;gap:10px !important;
2119}
2120.dpf-cta__btn{
2121  --dpf-btn-fg:#bf2419;                 /* red text/icon by default */
2122  --dpf-ease:cubic-bezier(.2,1,.3,1);
2123  position:relative !important;overflow:hidden !important;isolation:isolate !important;
2124  display:inline-flex !important;align-items:center !important;justify-content:center !important;
2125  gap:9px !important;
2126  padding:11px 28px !important;border-radius:8px !important;
2127  background:#fff !important;color:var(--dpf-btn-fg) !important;
2128  font-family:inherit !important;
2129  font-size:clamp(.9rem,1.15vw,1rem) !important;font-weight:700 !important;
2130  letter-spacing:.04em !important;
2131  text-decoration:none !important;white-space:nowrap !important;
2132  border:1px solid rgba(0,0,0,.08) !important;
2133  box-shadow:0 10px 26px -10px rgba(0,0,0,.55) !important;
2134  transition:color .45s var(--dpf-ease), border-color .55s var(--dpf-ease);
2135}
2136/* Ujarak fill: a full-height bar at the horizontal center that widens to fill */
2137.dpf-cta__btn::before{
2138  content:"" !important;position:absolute !important;inset:0 !important;z-index:-1 !important;
2139  background:#0e0e0e !important;
2140  transform:scaleX(0);transform-origin:center center;
2141  transition:transform .55s var(--dpf-ease);
2142}
2143.dpf-cta__btn-label,.dpf-cta__coin{
2144  position:relative !important;z-index:1 !important;
2145  color:inherit !important;flex:0 0 auto;
2146}
2147.dpf-cta__btn:hover,.dpf-cta__btn:focus-visible{
2148  --dpf-btn-fg:#cfcfcf !important;      /* contents fade to gray (both buttons) */
2149  border-color:#0e0e0e !important;text-decoration:none !important;
2150}
2151.dpf-cta__btn:hover::before,.dpf-cta__btn:focus-visible::before{transform:scaleX(1);}
2152
2153/* two-button cluster */
2154.dpf-cta__btns{display:flex !important;align-items:flex-start !important;
2155  gap:10px !important;flex-wrap:wrap !important;justify-content:center !important;}
2156.dpf-cta__donate-wrap{display:flex !important;flex-direction:column !important;
2157  align-items:center !important;gap:7px !important;}
2158/* ghost (secondary) variant — same shape/size/hover, outline instead of solid */
2159.dpf-cta__btn--ghost{
2160  --dpf-btn-fg:#ffffff !important;      /* white text/icon by default */
2161  background:transparent !important;
2162  border:1.5px solid rgba(255,255,255,.85) !important;
2163  box-shadow:none !important;
2164}
2165.dpf-cta__note{
2166  font-size:12px !important;letter-spacing:.04em !important;line-height:1.2 !important;
2167  color:rgba(255,255,255,.72) !important;
2168}
2169
2170/* ---- desktop: nudge slogan & buttons down a touch ---- */
2171@media (min-width:761px){
2172  .dpf-cta__copy{transform:translateY(14px) !important;}     /* slogan ≈ midpoint of eyebrow↔bottom gold rule */
2173  .dpf-cta__action{transform:translateY(12px) !important;}   /* buttons + tax note down ~12px */
2174}
2175
2176/* ---- mobile ---- */
2177@media (max-width:760px){
2178  .dpf-cta{padding:clamp(38px,9vw,48px) clamp(28px,7vw,36px) 19px !important;
2179    width:auto !important;margin:0 8px !important;}   /* breathing room from screen edges */
2180  .dpf-cta__kicker{top:clamp(18px,5vw,24px) !important;left:clamp(26px,7vw,34px) !important;}
2181  .dpf-cta::after{top:11px !important;right:11px !important;bottom:11px !important;left:11px !important;}
2182  .dpf-cta__inner{flex-direction:column !important;align-items:flex-start !important;gap:24px !important;}
2183  .dpf-cta__copy{width:100% !important;}                         /* full width, not just left half */
2184  .dpf-cta__stage{min-height:4.8em !important;width:100% !important;}  /* taller: up to 3 lines */
2185  .dpf-cta__msg{font-size:clamp(1.45rem,6vw,1.92rem) !important;} /* fills width, no overflow */
2186  .dpf-cta__action{align-items:center !important;width:100% !important;}
2187  .dpf-cta__btn{width:auto !important;padding:7px 15px !important;
2188    font-size:.78rem !important;gap:7px !important;}   /* much smaller, still stands out */
2189  .dpf-cta__coin{width:16px !important;height:auto !important;}   /* smaller icons to match */
2190  .dpf-cta__note{text-align:center !important;}
2191}
2192
2193/* ---- respect reduced-motion: instant swap, no slide ---- */
2194@media (prefers-reduced-motion:reduce){
2195  .dpf-cta__msg{transition:opacity .25s linear;transform:none;}
2196  .dpf-cta__btn{transition:color .2s linear, border-color .2s linear;}
2197  .dpf-cta__btn::before{transition:transform .2s linear;}
2198}
2199
2200/* ===================== TESTIMONIALS ===================== */
2201.dpf-testi{
2202  --dpf-gold:#d4a017;
2203  --dpf-indent:clamp(48px,15vw,210px);   /* desktop indent for name/title/link (~⅕ vw) */
2204  font-family:inherit;
2205  box-sizing:border-box !important;
2206  width:90% !important;margin:34px calc(5% + 18px) 15px auto !important;   /* nudged left for ~18px extra right clearance (Share panel) */
2207  padding:clamp(28px,3.4vw,42px) clamp(26px,4vw,56px) !important;
2208  position:relative !important;overflow:hidden !important;
2209  border-radius:10px !important;
2210  color:#f1e9dd !important;
2211  /* cool dark-gray radial — echoes the "Lens on Capital Punishment" hero, darkened */
2212  background:
2213    radial-gradient(ellipse 120% 135% at 50% 28%, #4a4d54 0%, #2a2c31 52%, #17181b 100%) !important;
2214  /* ambient lift on TOP & SIDES only — no positive-Y component, so there is
2215     no downward shadow projecting into the gap beneath the panel */
2216  box-shadow:0 -6px 16px -8px rgba(0,0,0,.20),
2217             -9px 0 16px -12px rgba(0,0,0,.14),
2218              9px 0 16px -12px rgba(0,0,0,.14);
2219}
2220.dpf-testi *{box-sizing:border-box !important;}
2221/* matching gold hairline frame */
2222.dpf-testi::after{
2223  content:"" !important;position:absolute !important;
2224  top:14px !important;right:14px !important;bottom:14px !important;left:14px !important;
2225  border:1px solid rgba(212,160,23,.45) !important;border-radius:6px !important;
2226  pointer-events:none !important;z-index:2 !important;
2227}
2228.dpf-testi__inner{position:relative !important;z-index:1 !important;
2229  max-width:1040px !important;margin:0 auto !important;}   /* roomier for longer quotes */
2230.dpf-testi__eyebrow{
2231  display:block !important;text-align:center !important;
2232  font-family:Arial,sans-serif !important;font-size:11px !important;font-weight:400 !important;
2233  letter-spacing:3px !important;text-transform:uppercase !important;line-height:1.6 !important;
2234  color:#e8e1d6 !important;margin:0 0 16px !important;   /* crisp off-white — present & elevated */
2235}
2236/* fixed-height stage → no jump as content swaps */
2237.dpf-testi__stage{position:relative !important;min-height:188px !important;
2238  display:flex !important;align-items:center !important;justify-content:center !important;}
2239.dpf-testi__card{
2240  margin:0 !important;display:flex !important;align-items:center !important;
2241  gap:clamp(22px,3.5vw,46px) !important;width:100% !important;
2242  opacity:1 !important;transform:none !important;filter:blur(0) !important;
2243  transition:opacity 4.5s ease, transform 4.5s ease, filter 4.5s ease !important;  /* grave, slow */
2244  will-change:opacity,transform,filter;
2245}
2246.dpf-testi__card.is-fading{opacity:0 !important;transform:translateY(-12px) !important;filter:blur(4px) !important;}
2247.dpf-testi__media{flex:0 0 auto !important;position:relative !important;
2248  width:186px !important;height:186px !important;border-radius:50% !important;
2249  margin:12px 0 0 14px !important;   /* breathing room from the top & left frame */
2250  box-shadow:0 0 0 1px rgba(212,160,23,.65), 0 0 0 12px rgba(212,160,23,.08) !important;}
2251.dpf-testi__photo{width:186px !important;height:186px !important;border-radius:50% !important;
2252  object-fit:cover !important;display:block !important;}
2253.dpf-testi__monogram{position:absolute !important;inset:0 !important;border-radius:50% !important;
2254  display:none;align-items:center !important;justify-content:center !important;
2255  font-family:Georgia,serif !important;font-size:60px !important;letter-spacing:1px !important;
2256  color:var(--dpf-gold) !important;background:linear-gradient(160deg,#2a211a,#171210) !important;}
2257.dpf-testi__body{flex:1 1 auto !important;min-width:0 !important;}
2258.dpf-testi__quote{
2259  margin:0 0 13px !important;padding:0 !important;border:0 !important;
2260  font-family:Georgia,'Times New Roman',serif !important;
2261  font-size:clamp(1.02rem,1.55vw,1.34rem) !important;line-height:1.55 !important;
2262  font-weight:400 !important;font-style:normal !important;color:#f4ede2 !important;
2263  max-width:64ch !important;text-wrap:pretty;quotes:"\201C" "\201D";
2264}
2265.dpf-testi__quote::before{content:open-quote;color:var(--dpf-gold);
2266  font-size:2em;line-height:0;vertical-align:-.34em;margin-right:.04em;}
2267.dpf-testi__quote::after{content:close-quote;color:var(--dpf-gold);
2268  font-size:2em;line-height:0;vertical-align:-.34em;margin-left:.02em;}
2269.dpf-testi__caption{display:flex !important;flex-direction:column !important;gap:3px !important;
2270  margin-left:var(--dpf-indent) !important;}   /* desktop indent (~¼ vw, clamped) */
2271.dpf-testi__name{font-family:inherit !important;font-weight:700 !important;
2272  font-size:clamp(1rem,1.3vw,1.12rem) !important;letter-spacing:.01em !important;color:#fff !important;}
2273.dpf-testi__role{font-family:Arial,sans-serif !important;font-size:11px !important;
2274  letter-spacing:2px !important;text-transform:uppercase !important;color:var(--dpf-gold) !important;}
2275/* neutral badge for anonymous voices (no gold, no initials) */
2276.dpf-testi__monogram.is-anon{color:#a39d93 !important;
2277  background:linear-gradient(160deg,#24252b,#161719) !important;}
2278.dpf-testi__monogram.is-anon svg{width:84px !important;height:84px !important;display:block !important;}
2279.dpf-testi__link{display:block !important;width:fit-content !important;margin-top:9px !important;margin-left:auto !important;margin-right:75px !important;   /* right-aligned, 75px from the border; underline hugs the text */
2280  font-family:Arial,sans-serif !important;font-size:12px !important;letter-spacing:1.5px !important;
2281  text-transform:uppercase !important;text-decoration:none !important;color:#e9dcc4 !important;
2282  border-bottom:1px solid rgba(212,160,23,.5) !important;padding-bottom:2px !important;
2283  transition:color .3s ease, border-color .3s ease;}
2284.dpf-testi__link:hover,.dpf-testi__link:focus-visible{
2285  color:var(--dpf-gold) !important;border-color:var(--dpf-gold) !important;}
2286/* larger SVG chevron in the link */
2287.dpf-testi__chev{width:1.15em !important;height:1.15em !important;display:inline-block !important;
2288  vertical-align:-.2em !important;margin-left:.45em !important;}
2289
2290/* ---- bio modal (Awards-Dinner card format) ---- */
2291.dpf-testi__modal{position:fixed !important;inset:0 !important;z-index:99999 !important;
2292  display:flex !important;align-items:center !important;justify-content:center !important;
2293  padding:20px !important;}
2294.dpf-testi__modal[hidden]{display:none !important;}
2295.dpf-testi__modal-bg{position:absolute !important;inset:0 !important;
2296  background:rgba(8,8,10,.72) !important;-webkit-backdrop-filter:blur(3px) !important;backdrop-filter:blur(3px) !important;}
2297.dpf-testi__modal-card{position:relative !important;z-index:1 !important;
2298  width:min(560px,100%) !important;max-height:88vh !important;overflow:auto !important;
2299  text-align:center !important;border-radius:14px !important;
2300  padding:clamp(30px,4vw,46px) clamp(22px,4vw,42px) !important;color:#f1e9dd !important;
2301  background:radial-gradient(ellipse 120% 120% at 50% 0%, #3b3e45 0%, #24262b 55%, #15161a 100%) !important;
2302  box-shadow:0 30px 80px -20px rgba(0,0,0,.8) !important;
2303  border:1px solid rgba(212,160,23,.35) !important;}
2304.dpf-testi__modal-x{position:absolute !important;top:8px !important;right:12px !important;
2305  background:none !important;border:0 !important;color:#cfc8bd !important;
2306  font-size:30px !important;line-height:1 !important;cursor:pointer !important;
2307  padding:4px 8px !important;transition:color .2s ease !important;}
2308.dpf-testi__modal-x:hover,.dpf-testi__modal-x:focus-visible{color:#fff !important;}
2309.dpf-testi__modal-media{width:120px !important;height:120px !important;border-radius:50% !important;
2310  margin:0 auto 16px !important;position:relative !important;
2311  box-shadow:0 0 0 1px rgba(212,160,23,.65), 0 0 0 8px rgba(212,160,23,.08) !important;}
2312.dpf-testi__modal-photo{width:120px !important;height:120px !important;border-radius:50% !important;
2313  object-fit:cover !important;display:block !important;}
2314.dpf-testi__modal-mono{position:absolute !important;inset:0 !important;border-radius:50% !important;
2315  display:none;align-items:center !important;justify-content:center !important;
2316  font-family:Georgia,serif !important;font-size:44px !important;letter-spacing:1px !important;
2317  color:var(--dpf-gold) !important;background:linear-gradient(160deg,#2a211a,#171210) !important;}
2318.dpf-testi__modal-mono.is-anon{color:#a39d93 !important;background:linear-gradient(160deg,#24252b,#161719) !important;}
2319.dpf-testi__modal-mono svg{width:58px !important;height:58px !important;}
2320.dpf-testi__modal-name{margin:0 0 4px !important;font-family:inherit !important;font-weight:800 !important;
2321  font-size:clamp(1.3rem,2.4vw,1.7rem) !important;color:#fff !important;line-height:1.2 !important;}
2322.dpf-testi__modal-role{font-family:Arial,sans-serif !important;font-size:11px !important;
2323  letter-spacing:2px !important;text-transform:uppercase !important;color:var(--dpf-gold) !important;
2324  margin-bottom:18px !important;}
2325.dpf-testi__modal-bio{font-family:Georgia,'Times New Roman',serif !important;
2326  font-size:1.02rem !important;line-height:1.66 !important;color:#e9e3d9 !important;text-align:left !important;}
2327.dpf-testi__modal-bio p{margin:0 0 .85em !important;}
2328.dpf-testi__modal-link{display:inline-block !important;margin-top:20px !important;
2329  font-family:Arial,sans-serif !important;font-size:12px !important;letter-spacing:1.5px !important;
2330  text-transform:uppercase !important;text-decoration:none !important;color:#e9dcc4 !important;
2331  border-bottom:1px solid rgba(212,160,23,.5) !important;padding-bottom:2px !important;
2332  transition:color .2s ease,border-color .2s ease !important;}
2333.dpf-testi__modal-link:hover,.dpf-testi__modal-link:focus-visible{
2334  color:var(--dpf-gold) !important;border-color:var(--dpf-gold) !important;}
2335
2336@media (max-width:760px){
2337  .dpf-testi{padding:clamp(20px,6vw,30px) clamp(18px,6vw,26px) !important;
2338    width:auto !important;margin:30px 8px 0 !important;}   /* extra space above; breathing room from edges */
2339  .dpf-testi::after{top:11px !important;right:11px !important;bottom:11px !important;left:11px !important;}
2340  .dpf-testi__stage{min-height:240px !important;}
2341  /* grid:  [ image | name ]      ← image left, name/title centered to its right
2342            [ image | title ]
2343            [    quote     ]      ← quote full width
2344            [        link  ]      ← link right-justified                       */
2345  .dpf-testi__card{
2346    display:grid !important;text-align:left !important;width:100% !important;
2347    grid-template-columns:auto 1fr !important;
2348    grid-template-areas:"media caption" "quote quote" "link link" !important;
2349    align-items:center !important;column-gap:24px !important;row-gap:0 !important;}
2350  .dpf-testi__media{grid-area:media !important;width:80px !important;height:80px !important;
2351    align-self:center !important;margin:0 !important;}   /* no desktop offset on mobile */
2352  .dpf-testi__photo{width:80px !important;height:80px !important;}
2353  .dpf-testi__monogram{font-size:30px !important;}
2354  .dpf-testi__monogram.is-anon svg{width:44px !important;height:44px !important;}
2355  .dpf-testi__body{display:contents !important;}
2356  .dpf-testi__caption{grid-area:caption !important;align-self:center !important;
2357    display:flex !important;flex-direction:column !important;align-items:flex-start !important;
2358    margin-left:0 !important;}   /* name + title as ONE vertically-centered block */
2359  .dpf-testi__quote{grid-area:quote !important;text-align:left !important;
2360    font-size:clamp(1.05rem,4.4vw,1.3rem) !important;margin:16px 0 0 !important;}
2361  .dpf-testi__link{grid-area:link !important;justify-self:end !important;
2362    margin-left:0 !important;margin-right:0 !important;margin-top:14px !important;}
2363}
2364@media (prefers-reduced-motion:reduce){
2365  .dpf-testi__card{transition:opacity .4s linear;filter:none;transform:none;}
2366  .dpf-testi__card.is-fading{transform:none;filter:none;}
2367}
2368</style>
2369
2370<script>
2371(function(){
2372  // find THIS instance's .dpf-cta (walk back from the running script)
2373  var node = document.currentScript;
2374  while(node && !(node.classList && node.classList.contains('dpf-cta'))){
2375    node = node.previousElementSibling;
2376  }
2377  if(!node) return;
2378
2379  var msgs = node.querySelectorAll('.dpf-cta__msg');
2380  if(msgs.length < 2) return;
2381
2382  var i = 0, timer = null, DELAY = 14000;
2383  function show(n){
2384    msgs[i].classList.remove('is-active');
2385    i = (n + msgs.length) % msgs.length;
2386    msgs[i].classList.add('is-active');
2387  }
2388  function start(){ if(!timer) timer = setInterval(function(){ show(i+1); }, DELAY); }
2389  function stop(){ if(timer){ clearInterval(timer); timer = null; } }
2390
2391  // pause while hovered or keyboard-focused so it never swaps mid-read
2392  node.addEventListener('mouseenter', stop);
2393  node.addEventListener('mouseleave', start);
2394  node.addEventListener('focusin', stop);
2395  node.addEventListener('focusout', start);
2396  document.addEventListener('visibilitychange', function(){
2397    document.hidden ? stop() : start();
2398  });
2399
2400  start();
2401})();
2402</script>
2402
2403
2404<script>
2405/* ============================================================
2406   TESTIMONIALS — EDIT HERE. This is the only part you touch.
2407   Only "quote" is truly required. EVERY other field can be left
2408   blank ("") or omitted entirely — the design adapts and never breaks.
2409     quote    : the testimonial text                  (required)
2410     name     : person's name, OR "Anonymous"         (optional)
2411     role     : short descriptor, e.g. "Exonerated, 2009"
2412     bio      : full bio shown in the pop-up modal. Separate paragraphs
2413                with a blank line (\n\n). If present, "Read … story"
2414                opens the modal; "View full profile" inside it uses link.
2415     photo    : portrait URL from the Media Library
2416                (blank/broken → silhouette placeholder)
2417     link     : URL of their People bio page ("View full profile")
2418                (blank, or "Anonymous", → no link shown)
2419   Set name to "Anonymous" to auto-hide the photo and bio link and
2420   show a tasteful neutral badge instead.
2421   Add or remove entries freely — the rotation adapts.
2422
2423   ⚠ KEEP QUOTES SHORT: aim for ~180 characters or fewer so they
2424   fit the reserved space without crowding. Anything longer logs a
2425   warning in the browser console (F12 → Console) telling you which
2426   quote to trim.
2427   ============================================================ */
2428/* ----------------------------------------------------------------
2429   VISIBILITY
2430   The testimonials panel is now LIVE everywhere this footer renders.
2431   (The earlier testbed-only gate has been removed.)
2432---------------------------------------------------------------- */
2433
2434var DPF_TESTIMONIALS = [
2435  {
2436    quote: "The death penalty is a brutal, outmoded and utterly unnecessary vengeance that no human should wield—let alone the State.",
2437    name: "Bruce Lisker",
2438    role: "Proven Innocent & Released, 2009",
2439    bio: "At seventeen, Bruce Lisker was wrongfully convicted of his mother’s 1983 murder — sent to prison on false jailhouse-informant testimony and detective misconduct. He spent more than 26 years behind bars before a federal judge overturned his conviction in 2009, citing false evidence and ineffective counsel.\n\nToday he speaks across California and beyond about the failures of the justice system — and about hope, resilience, and healing — and has provided website support for Death Penalty Focus since 2023.",
2440    photo: "https://deathpenalty.org/wp-content/uploads/2020/11/11.jpeg",
2441    link: "https://deathpenalty.org/people/bruce-lisker/"
2442  },
2443  {
2444    quote: "I’m grateful to Death Penalty Focus and other organizations, religious and secular, that are faithfully keeping my hope alive. The arc of justice bends slowly — and can sometimes be deflected — but continues to bend toward justice… and mercy.",
2445    name: "Chip Sharpe",
2446    role: "DPF Supporter",
2447    photo: "https://deathpenalty.org/wp-content/uploads/2026/08/Chip-Sharpe-Supporter-of-DPF.webp",
2448    link: ""
2449  },
2450  {
2451    quote: "I believe nobody has the right to take anyone’s life, no matter the crime. I believe in redemption and mercy — and yes, reintegration into society if at all possible.",
2452    name: "Gerlind Kennedy",
2453    role: "DPF Supporter",
2454    photo: "https://deathpenalty.org/wp-content/uploads/2026/08/Gerlind-Kennedy-DPF-Supporter.webp",
2455    link: ""
2456  },
2457  {
2458    quote: "On July 20, 2023, Jimi [James Barber] was executed in Alabama. I attended, but not with hate in my heart. I was the bridge between the two families, and I was to ease his fears as much as I could — the fears of someone I now call my friend.",
2459    name: "Sarah Trapp-Gregory",
2460    role: "DPF Supporter",
2461    photo: "",
2462    link: ""
2463  },
2464  {
2465    quote: "I am writing to you with considerable admiration for your work… Once again, I would like to congratulate you on your activities.",
2466    name: "Tomasz Snarski",
2467    role: "DPF Supporter",
2468    photo: "",
2469    link: ""
2470  },
2471  {
2472    quote: "I’m a regular financial contributor to Death Penalty Focus and got a terrific thank-you call from Mike yesterday.",
2473    name: "Christopher Martin",
2474    role: "DPF Donor",
2475    photo: "",
2476    link: ""
2477  },
2478  {
2479    quote: "Thank you for your important, heart-founded work!",
2480    name: "Barbara Rona",
2481    role: "DPF Supporter",
2482    photo: "",
2483    link: ""
2484  },
2485  {
2486    quote: "I’ve appreciated your work on TV… and activism… for many years. God bless!",
2487    name: "Thomas Halle",
2488    role: "DPF Supporter",
2489    photo: "",
2490    link: ""
2491  },
2492  {
2493    quote: "I am a former political prisoner from Iran, who was imprisoned by the Iranian regime for five years. During my time in prison, I witnessed numerous prisoners facing the imminent threat of execution.",
2494    name: "Shabnam Madadzadeh",
2495    role: "Former Political Prisoner, Iran",
2496    photo: "",
2497    link: ""
2498  },
2499  {
2500    quote: "I have been involved with Death Penalty Focus for many years — helping to put the death penalty on the ballot during the … elections in California several years ago.",
2501    name: "Jovita Harrah",
2502    role: "DPF Volunteer",
2503    photo: "",
2504    link: ""
2505  }
2506];
2507
2508(function(){
2509  var node = document.currentScript;
2510  while(node && !(node.classList && node.classList.contains('dpf-testi'))){
2511    node = node.previousElementSibling;
2512  }
2513  if(!node) return;
2514
2515  // Testimonials are now LIVE wherever this footer renders.
2516  // (The testbed-only gate has been removed — re-add it here to hide again.)
2517
2518  var data = (window.DPF_TESTIMONIALS || []).filter(function(t){ return t && t.quote; });
2519  if(!data.length){ node.style.display='none'; return; }
2520
2521  // randomize the order on each page load (Fisher–Yates shuffle)
2522  for(var sh = data.length - 1; sh > 0; sh--){
2523    var rr = Math.floor(Math.random() * (sh + 1));
2524    var tmp = data[sh]; data[sh] = data[rr]; data[rr] = tmp;
2525  }
2526
2527  // preload every portrait so the correct face is ready the instant its quote appears
2528  data.forEach(function(d){ if(d && d.photo){ var im = new Image(); im.src = d.photo; } });
2529
2530  // length guard — warn (don't break) if a quote is too long for the panel
2531  var MAX_QUOTE = 300;
2532  data.forEach(function(t){
2533    if((t.quote || '').length > MAX_QUOTE){
2534      console.warn('[DPF Testimonial] Quote for "' + (t.name||'(no name)') +
2535        '" is ' + t.quote.length + ' chars — keep it under ' + MAX_QUOTE +
2536        ' to avoid crowding the panel.');
2537    }
2538  });
2539
2540  var card  = node.querySelector('.dpf-testi__card');
2541  var photo = node.querySelector('.dpf-testi__photo');
2542  var mono  = node.querySelector('.dpf-testi__monogram');
2543  var media = node.querySelector('.dpf-testi__media');
2544  var quote = node.querySelector('.dpf-testi__quote');
2545  var name  = node.querySelector('.dpf-testi__name');
2546  var role  = node.querySelector('.dpf-testi__role');
2547  var link  = node.querySelector('.dpf-testi__link');
2548  var current = null;    // the testimonial currently shown — for the bio modal / panel click
2549
2550  // ----- bio modal elements -----
2551  var modal  = node.querySelector('.dpf-testi__modal');
2552  var mPhoto = node.querySelector('.dpf-testi__modal-photo');
2553  var mMono  = node.querySelector('.dpf-testi__modal-mono');
2554  var mName  = node.querySelector('.dpf-testi__modal-name');
2555  var mRole  = node.querySelector('.dpf-testi__modal-role');
2556  var mBio   = node.querySelector('.dpf-testi__modal-bio');
2557  var modalOpen = false;   // true while the bio modal is showing (freezes rotation)
2558
2559  var ANON_SVG = '<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">' +
2560    '<path d="M12 12.4a4.2 4.2 0 1 0 0-8.4 4.2 4.2 0 0 0 0 8.4zM4.6 19.2c0-3.3 3.3-5.4 7.4-5.4' +
2561    's7.4 2.1 7.4 5.4v.8H4.6v-.8z"/></svg>';
2562
2563  var CHEV_SVG = '<svg class="dpf-testi__chev" viewBox="0 0 24 24" aria-hidden="true">' +
2564    '<path d="M9 6l6 6-6 6" fill="none" stroke="currentColor" stroke-width="2.6" ' +
2565    'stroke-linecap="round" stroke-linejoin="round"/></svg>';
2566
2567  function isAnon(t){ return /^\s*anonymous\s*$/i.test(t && t.name || ''); }
2568  function initials(n){
2569    return (n||'').split(/\s+/).filter(Boolean).slice(0,2)
2570      .map(function(w){ return w.charAt(0).toUpperCase(); }).join('') || '“';
2571  }
2572  function set(el, val){ el.textContent = val || ''; el.style.display = val ? '' : 'none'; }
2573
2574  function render(t){
2575    t = t || {};
2576    var anon = isAnon(t);
2577
2578    quote.textContent = t.quote || '';
2579    set(name, anon ? 'Anonymous' : t.name);
2580    set(role, t.role);
2581
2582    // portrait, with graceful fallbacks: a NAMED person with no/broken photo
2583    // gets tasteful gold initials; a truly Anonymous voice gets the silhouette.
2584    function silhouette(){
2585      photo.style.display = 'none';
2586      mono.className = 'dpf-testi__monogram is-anon';
2587      mono.innerHTML = ANON_SVG;
2588      mono.style.display = 'flex'; media.style.display = '';
2589    }
2590    function monogram(nm){
2591      photo.style.display = 'none';
2592      mono.className = 'dpf-testi__monogram';      // gold-initials style (drop is-anon)
2593      mono.textContent = initials(nm);
2594      mono.style.display = 'flex'; media.style.display = '';
2595    }
2596    function fallback(){ anon ? silhouette() : monogram(t.name); }
2597    if(anon){
2598      silhouette();
2599    } else if(t.photo){
2600      photo.onerror = fallback;                   // broken/404 URL → initials (named) or silhouette
2601      mono.style.display = 'none';
2602      photo.src = t.photo; photo.alt = t.name || '';
2603      photo.style.display = ''; media.style.display = '';
2604    } else {
2605      fallback();                                 // no photo → initials (named) or silhouette
2606    }
2607
2608    // "Read <First>'s story" — shows when there's a bio (modal) or a link.
2609    var hasStory = !anon && (t.bio || t.link);
2610    if(hasStory){
2611      var first = (t.name || '').trim().split(/\s+/)[0] || 'their';
2612      link.innerHTML = 'Read ' + first + '’s story' + CHEV_SVG;
2613      link.href = t.link || '#';
2614      link.style.setProperty('display', 'block', 'important');
2615    } else {
2616      link.style.setProperty('display', 'none', 'important');
2617    }
2618
2619    // track the current entry; whole panel is clickable when there's a story
2620    current = t;
2621    node.style.cursor = hasStory ? 'pointer' : '';
2622  }
2623
2624  var i = 0;
2625  render(data[0]);
2626
2627  // Lock the stage to the TALLEST testimonial so the panel never jumps or
2628  // jitters, no matter which one is showing or how long its quote runs.
2629  var stage = node.querySelector('.dpf-testi__stage');
2630  function lockHeight(){
2631    if(!stage) return;
2632    stage.style.setProperty('min-height', '0px', 'important');   // reset to measure naturally
2633    var maxH = 0;
2634    for(var k = 0; k < data.length; k++){ render(data[k]); maxH = Math.max(maxH, card.offsetHeight); }
2635    render(data[i]);                                             // restore the current one
2636    stage.style.setProperty('min-height', Math.ceil(maxH) + 'px', 'important');
2637  }
2638  lockHeight();
2639  var rsz; window.addEventListener('resize', function(){ clearTimeout(rsz); rsz = setTimeout(lockHeight, 200); });
2640
2641  // ── Pacing: somber, pensive, deliberate ───────────────────────────
2642  var HOLD     = 12000;  // fully visible, lingering (~12s)
2643  var FADE_OUT = 4500;   // slow, grave dissolve OUT (4.5s)
2644  var PAUSE    = 2200;   // a few quiet beats on the empty stage
2645  var FADE_IN  = 600;    // quick fade IN
2646  // Respect reduced-motion: collapse the drama into quick, calm swaps.
2647  if(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches){
2648    FADE_OUT = 300; PAUSE = 250; FADE_IN = 300;
2649  }
2650
2651  function setDur(ms){
2652    card.style.setProperty('transition',
2653      'opacity ' + ms + 'ms ease, transform ' + ms + 'ms ease, filter ' + ms + 'ms ease',
2654      'important');   // !important so the theme can't strip the transition
2655  }
2656
2657  var t = null;
2658  function clearT(){ if(t){ clearTimeout(t); t = null; } }
2659
2660  // wait until the just-set portrait is actually decoded before fading in,
2661  // so a new quote can never appear next to the previous person's face.
2662  function revealWhenReady(done){
2663    var shown = photo.style.display !== 'none' && photo.getAttribute('src');
2664    if(!shown){ done(); return; }                 // silhouette / no photo → nothing to wait for
2665    var fired = false;
2666    function go(){ if(fired) return; fired = true; done(); }
2667    var cap = setTimeout(go, 1200);               // safety: never block longer than 1.2s
2668    if(photo.complete && photo.naturalWidth){ clearTimeout(cap); go(); return; }
2669    if(photo.decode){
2670      photo.decode().then(function(){ clearTimeout(cap); go(); },
2671                          function(){ clearTimeout(cap); go(); });
2672    } else {
2673      photo.addEventListener('load',  function(){ clearTimeout(cap); go(); }, {once:true});
2674      photo.addEventListener('error', function(){ clearTimeout(cap); go(); }, {once:true});
2675    }
2676  }
2677
2678  function cycle(){
2679    setDur(FADE_OUT);                  // slow fade OUT
2680    card.classList.add('is-fading');
2681    t = setTimeout(function(){
2682      t = setTimeout(function(){       // …a held silence on empty…
2683        i = (i + 1) % data.length;
2684        render(data[i]);               // swap content + photo while invisible
2685        setDur(FADE_IN);               // quick fade IN
2686        revealWhenReady(function(){    // …only once the new face is decoded
2687          requestAnimationFrame(function(){ requestAnimationFrame(function(){
2688            card.classList.remove('is-fading');
2689          });});
2690          t = setTimeout(cycle, FADE_IN + HOLD);   // hold, then repeat
2691        });
2692      }, PAUSE);
2693    }, FADE_OUT);
2694  }
2695
2696  function start(){ if(!t && !modalOpen) t = setTimeout(cycle, HOLD); }   /* never run while the modal is open */
2697  function stop(){                     // pausing always restores the current card
2698    clearT(); setDur(600); card.classList.remove('is-fading');
2699  }
2700
2701  // ----- bio modal: open / close -----
2702  function openModal(t){
2703    if(!t || !modal) return;
2704    mName.textContent = t.name || '';
2705    if(t.role){ mRole.textContent = t.role; mRole.style.display = ''; } else { mRole.style.display = 'none'; }
2706    mBio.innerHTML = '';
2707    String(t.bio || '').split(/\n\s*\n/).forEach(function(p){
2708      p = p.trim(); if(!p) return;
2709      var el = document.createElement('p'); el.textContent = p; mBio.appendChild(el);
2710    });
2711    function mSilhouette(){ mPhoto.style.display='none'; mMono.className='dpf-testi__modal-mono is-anon'; mMono.innerHTML=ANON_SVG; mMono.style.display='flex'; }
2712    function mMonogram(nm){ mPhoto.style.display='none'; mMono.className='dpf-testi__modal-mono'; mMono.textContent=initials(nm); mMono.style.display='flex'; }
2713    function mFallback(){ isAnon(t) ? mSilhouette() : mMonogram(t.name); }
2714    if(t.photo){
2715      mPhoto.onerror = mFallback;                  // broken/404 URL → initials (named) or silhouette
2716      mMono.style.display='none'; mPhoto.src = t.photo; mPhoto.alt = t.name || ''; mPhoto.style.display='';
2717    } else {
2718      mFallback();                                 // no photo → initials (named) or silhouette
2719    }
2720    modal.hidden = false;
2721    modalOpen = true;
2722    stop();                                   // pause the rotation while reading
2723    document.addEventListener('keydown', onKey);
2724  }
2725  function closeModal(){ if(!modal) return; modal.hidden = true; modalOpen = false; document.removeEventListener('keydown', onKey); start(); }
2726  function onKey(e){ if(e.key === 'Escape' || e.keyCode === 27) closeModal(); }
2727  if(modal){
2728    modal.addEventListener('click', function(e){
2729      if(e.target && e.target.hasAttribute && e.target.hasAttribute('data-close')) closeModal();
2730    });
2731  }
2732
2733  // tap/click on the panel → open the bio modal (or, if only a link exists, open it)
2734  node.addEventListener('click', function(e){
2735    if(!current) return;
2736    if(modal && modal.contains(e.target)) return;
2736   // clicks inside the modal are the modal's own
2737    var a = e.target.closest && e.target.closest('a');
2738    if(a && a.classList.contains('dpf-testi__link')){
2739      if(current.bio){ e.preventDefault(); openModal(current); }
2740      return;                       // no bio → let the "Read story" link open the profile
2741    }
2742    if(a) return;                   // any other link (incl. the modal's own) behaves normally
2743    if(current.bio) openModal(current);
2744    else if(current.link) window.open(current.link, '_blank', 'noopener');
2745  });
2746
2747  if(data.length > 1){
2748    start();
2749    node.addEventListener('mouseenter', stop);
2750    node.addEventListener('mouseleave', start);
2751    node.addEventListener('focusin', stop);
2752    node.addEventListener('focusout', start);
2753    document.addEventListener('visibilitychange', function(){ document.hidden ? stop() : start(); });
2754  }
2755})();
2756</script>
2756
2757				</div>
2758				</div>
2759					</div>
2760				</div>
2761				<section class="elementor-section elementor-top-section elementor-element elementor-element-16028f1 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="16028f1" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
2762						<div class="elementor-container elementor-column-gap-default">
2763					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f76a9be" data-id="f76a9be" data-element_type="column" data-e-type="column">
2764			<div class="elementor-widget-wrap elementor-element-populated">
2765						<div class="elementor-element elementor-element-991382b elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="991382b" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
2766				<div class="elementor-widget-container">
2767							<div class="elementor-divider">
2768			<span class="elementor-divider-separator">
2769						</span>
2770		</div>
2771						</div>
2772				</div>
2773				<section class="elementor-section elementor-inner-section elementor-element elementor-element-a66ed1c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a66ed1c" data-element_type="section" data-e-type="section">
2774						<div class="elementor-container elementor-column-gap-default">
2775					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-86deb5d" data-id="86deb5d" data-element_type="column" data-e-type="column">
2776			<div class="elementor-widget-wrap elementor-element-populated">
2777						<div class="elementor-element elementor-element-d551825 elementor-nav-menu--dropdown-none elementor-nav-menu__align-justify footer-menu elementor-widget elementor-widget-nav-menu" data-id="d551825" data-element_type="widget" data-e-type="widget" data-settings="{&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&quot;,&quot;library&quot;:&quot;&quot;},&quot;layout&quot;:&quot;horizontal&quot;}" data-widget_type="nav-menu.default">
2778				<div class="elementor-widget-container">
2779								<nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-none">
2780				<ul id="menu-1-d551825" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-2 current_page_item menu-item-69"><a href="https://deathpenalty.org/" aria-current="page" class="elementor-item elementor-item-active">Home</a></li>
2781<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-10748"><a href="#" class="elementor-item elementor-item-anchor">About</a>
2782<ul class="sub-menu elementor-nav-menu--dropdown">
2783	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10749"><a href="https://deathpenalty.org/mission/" class="elementor-sub-item">DPF Mission Statement</a></li>
2784	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10750"><a href="https://deathpenalty.org/staff/" class="elementor-sub-item">DPF Staff</a></li>
2785	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25312"><a href="https://deathpenalty.org/board/" class="elementor-sub-item">Board of Directors</a></li>
2786</ul>
2787</li>
2788<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-has-children menu-item-25311"><a href="https://deathpenalty.org/#news-updates" aria-current="page" class="elementor-item elementor-item-anchor">News &#038; Updates</a>
2789<ul class="sub-menu elementor-nav-menu--dropdown">
2790	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25315"><a href="https://deathpenalty.org/news-updates-archive/" class="elementor-sub-item">News &#038; Updates Archive</a></li>
2791</ul>
2792</li>
2793<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-25314"><a class="elementor-item">CA Death Penalty Facts</a>
2794<ul class="sub-menu elementor-nav-menu--dropdown">
2795	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25313"><a href="https://deathpenalty.org/statistics/" class="elementor-sub-item">&#8220;A Lens on Capital Punishment&#8221;</a></li>
2796</ul>
2797</li>
2798<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7108"><a href="https://deathpenalty.org/contact/" class="elementor-item">Contact Us</a></li>
2799<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17388"><a href="https://death-penalty-focus.givecloud.co/dpf-online-shop" class="elementor-item">Shop</a></li>
2800</ul>			</nav>
2801						<nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true">
2802				<ul id="menu-2-d551825" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-2 current_page_item menu-item-69"><a href="https://deathpenalty.org/" aria-current="page" class="elementor-item elementor-item-active" tabindex="-1">Home</a></li>
2803<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-10748"><a href="#" class="elementor-item elementor-item-anchor" tabindex="-1">About</a>
2804<ul class="sub-menu elementor-nav-menu--dropdown">
2805	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10749"><a href="https://deathpenalty.org/mission/" class="elementor-sub-item" tabindex="-1">DPF Mission Statement</a></li>
2806	<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10750"><a href="https://deathpenalty.org/staff/" class="elementor-sub-item" tabindex="-1">DPF Staff</a></li>
2807	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25312"><a href="https://deathpenalty.org/board/" class="elementor-sub-item" tabindex="-1">Board of Directors</a></li>
2808</ul>
2809</li>
2810<li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-has-children menu-item-25311"><a href="https://deathpenalty.org/#news-updates" aria-current="page" class="elementor-item elementor-item-anchor" tabindex="-1">News &#038; Updates</a>
2811<ul class="sub-menu elementor-nav-menu--dropdown">
2812	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25315"><a href="https://deathpenalty.org/news-updates-archive/" class="elementor-sub-item" tabindex="-1">News &#038; Updates Archive</a></li>
2813</ul>
2814</li>
2815<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-25314"><a class="elementor-item" tabindex="-1">CA Death Penalty Facts</a>
2816<ul class="sub-menu elementor-nav-menu--dropdown">
2817	<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25313"><a href="https://deathpenalty.org/statistics/" class="elementor-sub-item" tabindex="-1">&#8220;A Lens on Capital Punishment&#8221;</a></li>
2818</ul>
2819</li>
2820<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7108"><a href="https://deathpenalty.org/contact/" class="elementor-item" tabindex="-1">Contact Us</a></li>
2821<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17388"><a href="https://death-penalty-focus.givecloud.co/dpf-online-shop" class="elementor-item" tabindex="-1">Shop</a></li>
2822</ul>			</nav>
2823						</div>
2824				</div>
2825					</div>
2826		</div>
2827				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-cd43eec" data-id="cd43eec" data-element_type="column" data-e-type="column">
2828			<div class="elementor-widget-wrap elementor-element-populated">
2829						<div class="elementor-element elementor-element-18ae7ea elementor-widget elementor-widget-image" data-id="18ae7ea" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
2830				<div class="elementor-widget-container">
2831															<img width="720" height="720" src="https://deathpenalty.org/wp-content/uploads/2020/10/DPF_Logo_2026_72dpi.png" class="attachment-medium_large size-medium_large wp-image-20908" alt="DPF Logo (.png)" srcset="https://deathpenalty.org/wp-content/uploads/2020/10/DPF_Logo_2026_72dpi.png 720w, https://deathpenalty.org/wp-content/uploads/2020/10/DPF_Logo_2026_72dpi-300x300.png 300w, https://deathpenalty.org/wp-content/uploads/2020/10/DPF_Logo_2026_72dpi-150x150.png 150w" sizes="(max-width: 720px) 100vw, 720px" />															</div>
2832				</div>
2833					</div>
2834		</div>
2835					</div>
2836		</section>
2837				<div class="elementor-element elementor-element-e5c37fe elementor-widget elementor-widget-html" data-id="e5c37fe" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
2838				<div class="elementor-widget-container">
2839					<!-- ================================================================
2840     DEATH PENALTY FOCUS — Site Footer
2841     Self-contained block for a SEPARATE Elementor HTML widget.
2842     (Independent of the CTA / Testimonials block.)
2843     Scoped to .dpf-ftr and hardened with !important so the theme
2844     can't override it. Year auto-updates; falls back to 2026.
2845     ================================================================ -->
2846<footer class="dpf-ftr" role="contentinfo" aria-label="Death Penalty Focus footer">
2847  <div class="dpf-ftr__inner">
2848
2849    <div class="dpf-ftr__grid">
2850
2851      <!-- Brand + address -->
2852      <div class="dpf-ftr__col">
2853        <div class="dpf-ftr__brand">Death&nbsp;Penalty&nbsp;Focus</div>
2854        <address class="dpf-ftr__addr">
2855          500 Capitol Mall, Suite 2350<br>
2856          Sacramento, CA 95814
2857        </address>
2858      </div>
2859
2860      <!-- Contact -->
2861      <div class="dpf-ftr__col">
2862        <span class="dpf-ftr__eyebrow">Contact</span>
2863        <ul class="dpf-ftr__list">
2864          <li><a href="tel:+14152430143">415&#8209;243&#8209;0143</a></li>
2865          <li><a href="mailto:[email protected]">[email protected]</a></li>
2866          <li>Federal Tax ID&#35;&nbsp;95&#8209;4153420</li>
2867          <li>A 501(c)(3) non&#8209;profit organization</li>
2868        </ul>
2869      </div>
2870
2871      <!-- UN recognition -->
2872      <div class="dpf-ftr__col">
2873        <span class="dpf-ftr__eyebrow">Recognition</span>
2874        <div class="dpf-ftr__recog">
2875          <img class="dpf-ftr__ecosoc"
2876               src="https://deathpenalty.org/wp-content/uploads/2020/10/UN_ECOSOC-768x768-1.png"
2877               alt="United Nations ECOSOC emblem" width="72" height="72" loading="lazy" decoding="async" />
2878          <p class="dpf-ftr__status">In Special Consultative Status with the UN Economic and Social Council since 2017.</p>
2879        </div>
2880      </div>
2881
2882      <!-- Accreditation / security -->
2883      <div class="dpf-ftr__col">
2884        <span class="dpf-ftr__eyebrow">Accreditation</span>
2885        <div class="dpf-ftr__badges">
2886          <img class="dpf-ftr__guidestar"
2887               src="https://deathpenalty.org/wp-content/uploads/2020/10/Guide-Star-Silver.png"
2888               alt="GuideStar Exchange Silver Participant" height="62" loading="lazy" decoding="async" />
2889          <a class="dpf-ftr__sm"
2890             href="https://www.securitymetrics.com/site_certificate?id=2486077&amp;tk=7f752c1e67004b79f099bc57a736b262"
2891             target="_blank" rel="noopener noreferrer"
2892             aria-label="SecurityMetrics PCI DSS validation certificate (opens in a new tab)">
2893            <img src="https://www.securitymetrics.com/portal/app/ngsm/assets/img/BlueContent_PCI_Validation_White_Sqr.png"
2894                 alt="SecurityMetrics PCI validation certification logo" width="92" height="92" loading="lazy" decoding="async" />
2895          </a>
2896        </div>
2897      </div>
2898
2899    </div>
2900
2901    <!-- Bottom bar -->
2902    <div class="dpf-ftr__bar">
2903      <p class="dpf-ftr__copy">&copy;&nbsp;<span class="dpf-ftr__yr">2026</span> Death Penalty Focus. All rights reserved.</p>
2904      <nav class="dpf-ftr__social" aria-label="Death Penalty Focus on social media">
2905        <a href="https://www.instagram.com/deathpenaltyfocus/" target="_blank" rel="noopener noreferrer" aria-label="Instagram">
2906          <svg viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M12 2.16c3.2 0 3.58.01 4.85.07 1.17.05 1.8.25 2.23.41.56.22.96.48 1.38.9.42.42.68.82.9 1.38.16.43.36 1.06.41 2.23.06 1.27.07 1.65.07 4.85s-.01 3.58-.07 4.85c-.05 1.17-.25 1.8-.41 2.23-.22.56-.48.96-.9 1.38-.42.42-.82.68-1.38.9-.43.16-1.06.36-2.23.41-1.27.06-1.65.07-4.85.07s-3.58-.01-4.85-.07c-1.17-.05-1.8-.25-2.23-.41a3.72 3.72 0 0 1-1.38-.9 3.72 3.72 0 0 1-.9-1.38c-.16-.43-.36-1.06-.41-2.23C2.17 15.58 2.16 15.2 2.16 12s.01-3.58.07-4.85c.05-1.17.25-1.8.41-2.23.22-.56.48-.96.9-1.38.42-.42.82-.68 1.38-.9.43-.16 1.06-.36 2.23-.41C8.42 2.17 8.8 2.16 12 2.16M12 0C8.74 0 8.33.01 7.05.07 5.78.13 4.9.33 4.14.63a5.88 5.88 0 0 0-2.13 1.38A5.88 5.88 0 0 0 .63 4.14C.33 4.9.13 5.78.07 7.05.01 8.33 0 8.74 0 12s.01 3.67.07 4.95c.06 1.27.26 2.15.56 2.91.31.79.72 1.46 1.38 2.13.67.66 1.34 1.07 2.13 1.38.76.3 1.64.5 2.91.56C8.33 23.99 8.74 24 12 24s3.67-.01 4.95-.07c1.27-.06 2.15-.26 2.91-.56a5.88 5.88 0 0 0 2.13-1.38 5.88 5.88 0 0 0 1.38-2.13c.3-.76.5-1.64.56-2.91.06-1.28.07-1.69.07-4.95s-.01-3.67-.07-4.95c-.06-1.27-.26-2.15-.56-2.91a5.88 5.88 0 0 0-1.38-2.13A5.88 5.88 0 0 0 19.86.63c-.76-.3-1.64-.5-2.91-.56C15.67.01 15.26 0 12 0m0 5.84a6.16 6.16 0 1 0 0 12.32 6.16 6.16 0 0 0 0-12.32m0 10.16a4 4 0 1 1 0-8 4 4 0 0 1 0 8m6.41-10.4a1.44 1.44 0 1 0 0 2.88 1.44 1.44 0 0 0 0-2.88"/></svg>
2907        </a>
2908        <a href="https://twitter.com/DPFocus" target="_blank" rel="noopener noreferrer" aria-label="X (formerly Twitter)">
2909          <svg viewBox="0 0 24 24" aria-hidden="true">
2909<path fill="currentColor" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24h-6.656l-5.214-6.817-5.966 6.817H1.682l7.73-8.835L1.254 2.25H8.08l4.713 6.231 5.45-6.231zm-1.161 17.52h1.833L7.084 4.126H5.117L17.083 19.77z"/></svg>
2910        </a>
2911        <a href="https://www.facebook.com/deathpenaltyfocus" target="_blank" rel="noopener noreferrer" aria-label="Facebook">
2912          <svg viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M24 12.07C24 5.4 18.63 0 12 0S0 5.4 0 12.07c0 6.02 4.39 11.01 10.13 11.93v-8.44H7.08v-3.49h3.05V9.41c0-3.02 1.79-4.69 4.53-4.69 1.31 0 2.69.24 2.69.24v2.97h-1.52c-1.49 0-1.96.93-1.96 1.89v2.25h3.33l-.53 3.49h-2.8v8.44C19.61 23.08 24 18.09 24 12.07z"/></svg>
2913        </a>
2914      </nav>
2915    </div>
2916
2917  </div>
2918</footer>
2919
2920<style>
2921/* ===== scoped + hardened so the theme can't override it ===== */
2922.dpf-ftr{
2923  --ftr-ink:#ece8e1;
2924  --ftr-muted:#a7a097;
2925  --ftr-red:#d9473b;
2926  --ftr-gold:#d4a017;
2927  --ftr-line:rgba(255,255,255,.12);
2928  font-family:inherit;
2929  box-sizing:border-box !important;
2930  width:100% !important;
2931  margin:0 !important;
2932  padding:0 !important;
2933  position:relative !important;
2934  color:var(--ftr-ink) !important;
2935  background:
2936    radial-gradient(120% 120% at 82% 0%, rgba(212,160,23,.06), rgba(0,0,0,0) 55%),
2937    linear-gradient(180deg, #1c1d21 0%, #161618 100%) !important;
2938  line-height:1.6 !important;
2939}
2940.dpf-ftr *{box-sizing:border-box !important;}
2941/* slim brand accent across the very top */
2942.dpf-ftr::before{
2943  content:"" !important;display:block !important;height:3px !important;width:100% !important;
2944  background:linear-gradient(90deg, var(--ftr-red) 0%, var(--ftr-gold) 100%) !important;
2945}
2946.dpf-ftr__inner{
2947  max-width:1180px !important;margin:0 auto !important;
2948  padding:clamp(34px,5vw,56px) clamp(22px,5vw,48px) clamp(20px,3vw,30px) !important;
2949}
2950
2951/* ---- top grid ---- */
2952.dpf-ftr__grid{
2953  display:grid !important;
2954  grid-template-columns:repeat(auto-fit, minmax(215px, 1fr)) !important;
2955  gap:clamp(26px,3.5vw,46px) !important;
2956  align-items:start !important;
2957}
2958.dpf-ftr__col{min-width:0 !important;}
2959.dpf-ftr__brand{
2960  font-size:clamp(1.05rem,1.4vw,1.2rem) !important;font-weight:800 !important;
2961  letter-spacing:.01em !important;color:var(--ftr-ink) !important;margin-bottom:12px !important;
2962}
2963.dpf-ftr__addr{
2964  font-style:normal !important;color:var(--ftr-muted) !important;
2965  font-size:.95rem !important;
2966}
2967.dpf-ftr__eyebrow{
2968  display:block !important;
2969  font-family:Arial,sans-serif !important;font-size:10.5px !important;font-weight:700 !important;
2970  letter-spacing:2.5px !important;text-transform:uppercase !important;
2971  color:var(--ftr-gold) !important;margin-bottom:13px !important;
2972}
2973.dpf-ftr__list{
2974  list-style:none !important;margin:0 !important;padding:0 !important;
2975  font-size:.95rem !important;color:var(--ftr-muted) !important;
2976}
2977.dpf-ftr__list li{margin:0 0 7px !important;}
2978.dpf-ftr a{
2979  color:var(--ftr-ink) !important;text-decoration:none !important;
2980  border-bottom:1px solid transparent !important;
2981  transition:color .2s ease, border-color .2s ease !important;
2982}
2983.dpf-ftr__list a:hover,.dpf-ftr__list a:focus-visible{
2984  color:var(--ftr-red) !important;border-bottom-color:var(--ftr-red) !important;
2985}
2986
2987/* ---- recognition ---- */
2988.dpf-ftr__recog{display:flex !important;gap:14px !important;align-items:flex-start !important;}
2989.dpf-ftr__ecosoc{flex:0 0 auto !important;width:64px !important;height:64px !important;display:block !important;}
2990.dpf-ftr__status{
2991  margin:0 !important;font-family:Georgia,'Times New Roman',serif !important;
2992  font-style:italic !important;font-size:.9rem !important;line-height:1.5 !important;
2993  color:var(--ftr-muted) !important;
2994}
2995
2996/* ---- badges ---- */
2997.dpf-ftr__badges{display:flex !important;flex-wrap:wrap !important;align-items:center !important;gap:16px !important;}
2998.dpf-ftr__guidestar{height:58px !important;width:auto !important;display:block !important;}
2999.dpf-ftr__sm{display:inline-block !important;border-bottom:0 !important;
3000  line-height:0 !important;transition:transform .2s ease !important;}   /* white seal sits natively on the dark footer */
3001.dpf-ftr__sm:hover,.dpf-ftr__sm:focus-visible{transform:translateY(-2px) !important;}
3002.dpf-ftr__sm img{width:84px !important;height:auto !important;display:block !important;}
3003
3004/* ---- bottom bar ---- */
3005.dpf-ftr__bar{
3006  display:flex !important;align-items:center !important;justify-content:space-between !important;
3007  flex-wrap:wrap !important;gap:14px !important;
3008  margin-top:clamp(26px,3.5vw,40px) !important;padding-top:20px !important;
3009  border-top:1px solid var(--ftr-line) !important;
3010}
3011.dpf-ftr__copy{margin:0 !important;font-size:.85rem !important;color:var(--ftr-muted) !important;}
3012.dpf-ftr__social{display:flex !important;align-items:center !important;gap:10px !important;}
3013.dpf-ftr__social a{
3014  display:inline-flex !important;align-items:center !important;justify-content:center !important;
3015  width:38px !important;height:38px !important;border-radius:50% !important;
3016  color:var(--ftr-ink) !important;background:rgba(255,255,255,.07) !important;border-bottom:0 !important;
3017  transition:color .2s ease, background .2s ease, transform .2s ease !important;
3018}
3019.dpf-ftr__social a:hover,.dpf-ftr__social a:focus-visible{
3020  color:#fff !important;background:var(--ftr-red) !important;transform:translateY(-2px) !important;
3021}
3022.dpf-ftr__social svg{width:18px !important;height:18px !important;display:block !important;}
3023
3024/* ---- mobile ---- */
3025@media (max-width:600px){
3026  .dpf-ftr__grid{grid-template-columns:1fr !important;gap:28px !important;text-align:left !important;}
3027  .dpf-ftr__bar{flex-direction:column !important;align-items:flex-start !important;}
3028}
3029
3030@media (prefers-reduced-motion:reduce){
3031  .dpf-ftr a,.dpf-ftr__sm,.dpf-ftr__social a{transition:none !important;}
3032}
3033</style>
3034
3035<script>
3036(function(){
3037  // auto-update the copyright year (falls back to the hard-coded 2026 if JS is off)
3038  try{
3039    var els = document.querySelectorAll('.dpf-ftr__yr');
3040    for(var i = 0; i < els.length; i++){ els[i].textContent = new Date().getFullYear(); }
3041  }catch(e){}
3042})();
3043</script>
3043
3044				</div>
3045				</div>
3046				<div class="elementor-element elementor-element-bc6b980 elementor-widget elementor-widget-spacer" data-id="bc6b980" data-element_type="widget" data-e-type="widget" data-widget_type="spacer.default">
3047				<div class="elementor-widget-container">
3048							<div class="elementor-spacer">
3049			<div class="elementor-spacer-inner"></div>
3050		</div>
3051						</div>
3052				</div>
3053					</div>
3054		</div>
3055					</div>
3056		</section>
3057		<div class="elementor-element elementor-element-5e07d8c e-flex e-con-boxed e-con e-parent" data-id="5e07d8c" data-element_type="container" data-e-type="container">
3058					<div class="e-con-inner">
3059				<div class="elementor-element elementor-element-5d27240 elementor-widget elementor-widget-html" data-id="5d27240" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
3060				<div class="elementor-widget-container">
3061					<!--
3062╔══════════════════════════════════════════════════════════════════════════════╗
3063║  DPF DONATE MODAL  —  one elegant overlay for online giving + mail-a-check     ║
3064╠══════════════════════════════════════════════════════════════════════════════╣
3065║  WHAT IT DOES                                                                  ║
3066║  Replaces the clunky /ways-to-give/ hop. Any "DONATE" button on the site now   ║
3067║  opens a polished modal that embeds the REAL DonorPerfect giving form inline    ║
3068║  (visitor never leaves deathpenalty.org) AND shows the check-by-mail details.   ║
3069║                                                                                ║
3070║  WHERE TO PASTE                                                                ║
3071║  Drop this whole block into ONE site-wide Elementor "HTML" widget — ideally in ║
3072║  the global Footer template, so it loads on every page. It injects nothing      ║
3073║  visible until a donate button is clicked.                                      ║
3074║                                                                                ║
3075║  WHAT IT HOOKS (no edits needed)                                               ║
3076║  On click, it intercepts — and opens the modal instead of navigating —          ║
3077║    • the header/footer creative DONATE buttons (link to /ways-to-give/)          ║
3078║    • ANYTHING you give the class  dpf-donate  (add it to any button/link)        ║
3079║  Links that already carry ?give= are LEFT ALONE — they are the real donate       ║
3080║  trigger (the Fundraise Up overlay). If JS is off, buttons fall back to the page.║
3081║                                                                                ║
3082║  CLOSE: the X, the Esc key, or clicking the dim backdrop — all equivalent.      ║
3083║                                                                                ║
3084║  EDIT THESE if they ever change → see the CONFIG block in the 
3084<script>:          ║
3085║    the <a id="dpfd-online-link"> href (donate overlay URL)  ·  mailing address.   ║
3086╚══════════════════════════════════════════════════════════════════════════════╝
3087-->
3088<div id="dpf-donate-root">
3089<style>
3090  @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&family=Inter:wght@400;500;600;700&display=swap');
3091
3092  #dpf-donate-root, #dpf-donate-root *, #dpf-donate-root *::before, #dpf-donate-root *::after { box-sizing: border-box; margin: 0; padding: 0; }
3093  #dpf-donate-root {
3094    --red:#C82500; --red-d:#a81f00; --navy:#2A4A88; --gold:#9C7C3A;
3095    --ink:#16202E; --muted:#5B6573; --line:#E3E7EC; --card:#FFFFFF; --soft:#F4F6F9;
3096    font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
3097  }
3098
3099  /* ── Overlay + box ── */
3100  #dpf-donate-root .dpfd-overlay {
3101    position:fixed; inset:0; z-index:2000000; display:none;
3102    align-items:center; justify-content:center; padding:20px;
3103    background:rgba(12,14,20,.66); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px);
3104    overscroll-behavior:contain;
3105  }
3106  #dpf-donate-root .dpfd-overlay.is-open { display:flex; }
3107  #dpf-donate-root .dpfd-box {
3108    position:relative; width:100%; max-width:740px; max-height:92vh;
3109    display:flex; flex-direction:column; overflow:hidden;
3110    background:var(--card); border-radius:16px;
3111    box-shadow:0 30px 80px rgba(0,0,0,.45);
3112    animation:dpfd-in .26s cubic-bezier(.34,1.12,.64,1) both;
3113  }
3114  @keyframes dpfd-in { from { opacity:0; transform:translateY(14px) scale(.985); } to { opacity:1; transform:none; } }
3115  @media (prefers-reduced-motion: reduce){ #dpf-donate-root .dpfd-box { animation:none; } }
3116
3117  /* ── Close button ── */
3118  #dpf-donate-root .dpfd-close {
3119    position:absolute; top:12px; right:12px; z-index:5;
3120    width:40px; height:40px; display:grid; place-items:center;
3121    border:0; border-radius:50%; cursor:pointer; padding:0;
3122    background:rgba(255,255,255,.85); color:var(--ink);
3123    box-shadow:0 2px 8px rgba(0,0,0,.18);
3124    transition:background .15s ease, color .15s ease, transform .15s ease;
3125  }
3126  #dpf-donate-root .dpfd-close:hover { background:var(--red); color:#fff; transform:scale(1.08); }
3127  #dpf-donate-root .dpfd-close svg { width:18px; height:18px; }
3128
3129  /* ── Header band (DPF red) ── */
3130  #dpf-donate-root .dpfd-head {
3131    flex:0 0 auto; padding:22px 56px 20px 28px; color:#fff; position:relative;
3132    background:
3133      radial-gradient(120% 140% at 12% 0%, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 46%),
3134      linear-gradient(135deg,#E2360A 0%, #C82500 55%, #A01E00 100%);
3135  }
3136  #dpf-donate-root .dpfd-eyebrow {
3137    display:inline-flex; align-items:center; gap:9px; margin-bottom:5px;
3138    font-size:11px; font-weight:600; letter-spacing:.2em; text-transform:uppercase; color:#F4DCA6;
3139  }
3140  #dpf-donate-root .dpfd-eyebrow::before { content:""; width:22px; height:1px; background:#F4DCA6; opacity:.6; }
3141  #dpf-donate-root .dpfd-title { font-family:'Playfair Display',Georgia,serif; font-size:26px; font-weight:700; line-height:1.15; }
3142  #dpf-donate-root .dpfd-sub { margin-top:5px; font-size:13.5px; color:rgba(255,255,255,.92); line-height:1.5; }
3143
3144  /* ── Body: two cards — "Donate online" (left) + "Or send a check" (right) ── */
3145  #dpf-donate-root .dpfd-body { display:flex; min-height:0; flex:1 1 auto; }
3146  #dpf-donate-root .dpfd-online {
3147    flex:1 1 50%; min-width:0; display:flex; flex-direction:column;
3148    align-items:center; justify-content:center; text-align:center; gap:18px;
3149    padding:40px 28px; background:var(--soft);
3150  }
3151  /* the big DPF-red "DONATE ONLINE" button — opens the secure form in a new tab */
3152  #dpf-donate-root .dpfd-btn {
3153    display:inline-flex; align-items:center; justify-content:center; gap:10px;
3154    font-family:inherit; font-size:15px; font-weight:700; letter-spacing:.03em; text-transform:uppercase;
3155    color:#fff; background:var(--red); border:0; border-radius:999px; cursor:pointer; text-decoration:none;
3156    padding:13px 30px; box-shadow:0 6px 18px rgba(200,37,0,.28);
3157    transition:background .15s ease, transform .15s ease, box-shadow .15s ease;
3158  }
3159  #dpf-donate-root .dpfd-btn:hover { background:var(--red-d); transform:translateY(-1px); box-shadow:0 10px 26px rgba(200,37,0,.34); }
3160  #dpf-donate-root .dpfd-btn:focus-visible { outline:3px solid var(--navy); outline-offset:3px; }
3161  #dpf-donate-root .dpfd-btn svg { width:19px; height:19px; }
3162  /* base height is the DESKTOP size (64 × 1.75); mobile is overridden smaller below (64 × 1.5) */
3163  #dpf-donate-root .dpfd-logo { width:auto; height:112px; max-width:100%; object-fit:contain; display:block; }
3164
3165  /* check panel */
3166  #dpf-donate-root .dpfd-check {
3167    flex:1 1 50%; border-left:1px solid var(--line); background:var(--card);
3168    padding:30px 28px 24px; display:flex; flex-direction:column; gap:14px; overflow-y:auto;
3169  }
3170  #dpf-donate-root .dpfd-check h3 { font-family:'Playfair Display',Georgia,serif; font-size:18px; font-weight:700; color:var(--ink); }
3171  #dpf-donate-root .dpfd-check .dpfd-checkrow { font-size:13.5px; line-height:1.55; color:#3a4253; }
3172  #dpf-donate-root .dpfd-check .dpfd-checkrow b { color:var(--ink); }
3173  #dpf-donate-root .dpfd-payee { font-size:15px; font-weight:700; color:var(--navy); }
3174  #dpf-donate-root .dpfd-addr { font-size:14.5px; font-weight:600; color:var(--ink); line-height:1.5; }
3175  #dpf-donate-root .dpfd-rule { height:1px; background:var(--line); margin:2px 0; }
3176  #dpf-donate-root .dpfd-fine { margin-top:auto; font-size:11.5px; font-style:italic; color:var(--muted); line-height:1.5; }
3177  #dpf-donate-root .dpfd-icon { width:30px; height:30px; flex:0 0 auto; display:grid; place-items:center; border-radius:8px; background:var(--soft); color:var(--navy); margin-bottom:2px; }
3178  #dpf-donate-root .dpfd-icon svg { width:17px; height:17px; }
3179
3180  /* ── Mobile: stack form over a collapsible check panel ── */
3181  @media (max-width: 720px) {
3182    #dpf-donate-root .dpfd-overlay { padding:0; align-items:flex-end; }
3183    #dpf-donate-root .dpfd-box { max-width:none; max-height:94dvh; border-radius:18px 18px 0 0; }
3184    #dpf-donate-root .dpfd-head { padding:18px 52px 16px 20px; }
3185    #dpf-donate-root .dpfd-title { font-size:22px; }
3186    #dpf-donate-root .dpfd-body { flex-direction:column; }
3187    #dpf-donate-root .dpfd-online { padding:30px 24px; }
3188    #dpf-donate-root .dpfd-logo { height:120px; }              /* mobile: larger still */
3189    #dpf-donate-root .dpfd-check h3 { display:none; }          /* drop duplicate heading — the dropdown label is the title */
3190    #dpf-donate-root .dpfd-check { flex:0 0 auto; border-left:0; border-top:1px solid var(--line); }
3191    /* on mobile the check panel collapses behind a summary toggle to keep the form primary */
3192    #dpf-donate-root .dpfd-check { padding-top:0; }
3193    #dpf-donate-root .dpfd-check > summary {
3194      list-style:none; cursor:pointer; padding:14px 0 12px;
3195      font-family:'Playfair Display',Georgia,serif; font-size:18px; font-weight:700; color:var(--ink);
3196      display:flex; align-items:center; justify-content:space-between;
3197    }
3198    #dpf-donate-root .dpfd-check > summary::-webkit-details-marker { display:none; }
3199    #dpf-donate-root .dpfd-check > summary::after { content:"▾"; color:var(--navy); transition:transform .2s ease; }
3200    #dpf-donate-root details.dpfd-check[open] > summary::after { transform:rotate(180deg); }
3201  }
3202  @media (min-width: 721px) {
3203    /* on desktop the <summary> label is hidden — both panels show side by side */
3204    #dpf-donate-root .dpfd-check > summary { display:none; }
3205  }
3206</style>
3207
3208  <div class="dpfd-overlay" id="dpfd-overlay" role="dialog" aria-modal="true" aria-labelledby="dpfd-title" aria-hidden="true">
3209    <div class="dpfd-box" role="document">
3210      <button class="dpfd-close" id="dpfd-close" type="button" aria-label="Close (Esc)" title="Close (Esc)">
3211        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M6 6l12 12M18 6 6 18"/></svg>
3212      </button>
3213
3214      <div class="dpfd-head">
3215        <div class="dpfd-eyebrow">Death Penalty Focus</div>
3216        <div class="dpfd-title" id="dpfd-title">Two Ways to Give</div>
3217        <div class="dpfd-sub">All donations are tax-deductible. Choose the method that works best for you.</div>
3218      </div>
3219
3220      <div class="dpfd-body">
3221        <div class="dpfd-online">
3222          <img class="dpfd-logo" src="https://deathpenalty.org/wp-content/uploads/2020/10/cropped-DPF_Logo_2026_72dpi.webp" alt="Death Penalty Focus" loading="lazy">
3223          <!-- Opens your live donation overlay — loading /ways-to-give/?give=8NDR96EK
3224               triggers the donate form (Fundraise Up). Edit the href if the code changes. -->
3225          <a class="dpfd-btn" id="dpfd-online-link"
3226             href="https://deathpenalty.org/ways-to-give/?give=8NDR96EK">
3227            Donate Online
3228            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
3229          </a>
3230        </div>
3231
3232        <!-- <details> so it can collapse on mobile; forced open on desktop via CSS sibling rules -->
3233        <details class="dpfd-check" id="dpfd-check" open>
3234          <summary>Or send a check</summary>
3235          <div class="dpfd-icon" aria-hidden="true">
3236            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="5" width="20" height="14" rx="2.5"/><path d="M2 10h20"/></svg>
3237          </div>
3238          <h3>Or send a check</h3>
3239          <div class="dpfd-checkrow">
3240            <div class="dpfd-payee">Payable to: Death Penalty Focus</div>
3241            <div class="dpfd-addr" style="margin-top:6px;">500 Capitol Mall, Ste 2350<br>Sacramento, CA 95814</div>
3242          </div>
3243          <div class="dpfd-fine">Death Penalty Focus is a 501(c)(3) nonprofit. Donations are tax-deductible as allowed by law. (EIN: 95-4153420)</div>
3244        </details>
3245      </div>
3246    </div>
3247  </div>
3248
3249<script>
3250(function(){
3251  "use strict";
3252
3253  /* ════════════════ CONFIG — edit here if these ever change ════════════════ */
3254  // The "Donate Online" button's link lives in the <a id="dpfd-online-link"> tag in
3255  // the markup above. It points at /ways-to-give/?give=8NDR96EK, which launches your
3256  // live donation overlay (Fundraise Up). Edit that href if the donate code changes.
3257  //
3258  // Click targets that should open THIS chooser modal instead of navigating. We hook
3259  // the plain DONATE buttons (header/footer → /ways-to-give/) and anything tagged
3260  // .dpf-donate — but NEVER links that already carry a ?give= code, because those are
3261  // the real donate triggers and must pass straight through to the native overlay.
3262  var TRIGGER_SELECTOR = [
3263    '.dpf-donate:not([href*="give="])',                                 // explicit opt-in (use anywhere)
3264    'a.eael-creative-button[href*="ways-to-give"]:not([href*="give="])', // header + footer DONATE buttons
3265    'a[href$="/ways-to-give/"][data-text]'                              // any creative button to the give page
3266  ].join(',');
3267  /* ═════════════════════════════════════════════════════════════════════════ */
3268
3269  var overlay = document.getElementById('dpfd-overlay');
3270  var box     = overlay.querySelector('.dpfd-box');
3271  var closeBt = document.getElementById('dpfd-close');
3272  var lastFocus = null, prevBodyOv = '', prevHtmlOv = '';
3273
3274  function lockScroll(on){
3275    if(on){
3276      prevBodyOv = document.body.style.overflow;
3277      prevHtmlOv = document.documentElement.style.overflow;
3278      document.body.style.overflow = 'hidden';
3279      document.documentElement.style.overflow = 'hidden';
3280    } else {
3281      document.body.style.overflow = prevBodyOv;
3282      document.documentElement.style.overflow = prevHtmlOv;
3283    }
3284  }
3285
3286  function openModal(){
3287    lastFocus = document.activeElement;
3288    overlay.classList.add('is-open');
3289    overlay.setAttribute('aria-hidden','false');
3290    lockScroll(true);
3291    document.addEventListener('keydown', onKey, true);
3292    // focus the close button so Esc / Tab behave predictably
3293    setTimeout(function(){ try{ closeBt.focus({preventScroll:true}); }catch(e){} }, 30);
3294  }
3295
3296  function closeModal(){
3297    if(!overlay.classList.contains('is-open')) return;
3298    overlay.classList.remove('is-open');
3299    overlay.setAttribute('aria-hidden','true');
3300    lockScroll(false);
3301    document.removeEventListener('keydown', onKey, true);
3302    if(lastFocus && lastFocus.focus){ try{ lastFocus.focus({preventScroll:true}); }catch(e){} }
3303  }
3304
3305  // Esc closes — exactly the same as clicking the X (per request).
3306  function onKey(e){
3307    if(e.key === 'Escape' || e.key === 'Esc'){ e.preventDefault(); e.stopPropagation(); closeModal(); return; }
3308    // simple focus containment: keep Tab inside the dialog
3309    if(e.key === 'Tab'){
3310      var f = box.querySelectorAll('button, a[href], iframe, [tabindex]:not([tabindex="-1"])');
3311      if(!f.length) return;
3312      var first = f[0], last = f[f.length-1];
3313      if(e.shiftKey && document.activeElement === first){ e.preventDefault(); last.focus(); }
3314      else if(!e.shiftKey && document.activeElement === last){ e.preventDefault(); first.focus(); }
3315    }
3316  }
3317
3318  // X button, and backdrop click (clicking the dim area outside the box) both close.
3319  closeBt.addEventListener('click', closeModal);
3320  overlay.addEventListener('click', function(e){ if(e.target === overlay) closeModal(); });
3321
3322  // Intercept donate triggers anywhere on the page (delegated + capture, so it works
3323  // for buttons rendered later by Elementor and survives sticky-header re-renders).
3324  document.addEventListener('click', function(e){
3325    var t = e.target.closest && e.target.closest(TRIGGER_SELECTOR);
3326    if(!t || overlay.contains(t)) return;                          // ignore matches inside our own modal
3327    if(e.metaKey || e.ctrlKey || e.shiftKey || e.button) return;  // let power-users open the real page in a new tab
3328    e.preventDefault(); e.stopPropagation();
3329    openModal();
3330  }, true);
3331
3332  // NOTE: we deliberately do NOT auto-open this chooser on /ways-to-give/?give=… —
3333  // that URL is the real donate trigger and must show the native donation overlay
3334  // (Fundraise Up), not this modal.
3335})();
3336</script>
3336
3337</div>
3338<!-- ═════════════════════ /DPF Donate Modal ═════════════════════ -->
3339				</div>
3340				</div>
3341					</div>
3342				</div>
3343				</footer>
3344		
3345<script type="speculationrules">
3346{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/hello-theme-child-master/*","/wp-content/themes/hello-elementor/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
3347</script>
3347
3348			
3348<script>
3349				( () => {
3350					const lazyloadRunObserver = () => {
3351						const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
3352						const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
3353							entries.forEach( ( entry ) => {
3354								if ( entry.isIntersecting ) {
3355									let lazyloadBackground = entry.target;
3356									if( lazyloadBackground ) {
3357										lazyloadBackground.classList.add( 'e-lazyloaded' );
3358									}
3359									lazyloadBackgroundObserver.unobserve( entry.target );
3360								}
3361							});
3362						}, { rootMargin: '200px 0px 200px 0px' } );
3363						lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
3364							lazyloadBackgroundObserver.observe( lazyloadBackground );
3365						} );
3366					};
3367					const events = [
3368						'DOMContentLoaded',
3369						'elementor/lazyload/observe',
3370					];
3371					events.forEach( ( event ) => {
3372						document.addEventListener( event, lazyloadRunObserver );
3373					} );
3374				} )();
3375			</script>
3375
3376			<link rel='stylesheet' id='dpf-home-slider-css' href='https://deathpenalty.org/wp-content/plugins/(BL)%20Slide%20Editor/assets/slider.css?ver=1.30.0' media='all' />
3377<script id="dynamic-conditions-js" src="https://deathpenalty.org/wp-content/plugins/dynamicconditions/Public/js/dynamic-conditions-public.js?ver=1.7.5"></script>
vendor: 1 bytes, line 3377
3377
3378<script id="hello-theme-frontend-js" src="https://deathpenalty.org/wp-content/themes/hello-elementor/assets/js/hello-frontend.js?ver=3.5.1"></script>
vendor: 1 bytes, line 3378
3378
3379<script id="eael-general-js-extra">
3380var localize = {"ajaxurl":"https://deathpenalty.org/wp-admin/admin-ajax.php","nonce":"11ca08f676","i18n":{"added":"Added ","compare":"Compare","loading":"Loading..."},"eael_translate_text":{"required_text":"is a required field","invalid_text":"Invalid","billing_text":"Billing","shipping_text":"Shipping","fg_mfp_counter_text":"of"},"page_permalink":"https://deathpenalty.org/","cart_redirectition":"no","cart_page_url":"","el_breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}}};
3381//# sourceURL=eael-general-js-extra
3382</script>
vendor: 1 bytes, line 3382
3382
3383<script id="eael-general-js" src="https://deathpenalty.org/wp-content/plugins/essential-addons-for-elementor-lite/assets/front-end/js/view/general.min.js?ver=6.8.4"></script>
vendor: 1 bytes, line 3383
3383
3384<script id="eael-12-js" src="https://deathpenalty.org/wp-content/uploads/essential-addons-elementor/eael-12.js?ver=1789945153"></script>
vendor: 1 bytes, line 3384
3384
3385<script id="elementor-webpack-runtime-js" src="https://deathpenalty.org/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=4.3.1"></script>
vendor: 1 bytes, line 3385
3385
3386<script id="elementor-frontend-modules-js" src="https://deathpenalty.org/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=4.3.1"></script>
vendor: 1 bytes, line 3386
3386
3387<script id="jquery-ui-core-js-before">
3388jQuery.uiBackCompat = true;
3389//# sourceURL=jquery-ui-core-js-before
3390</script>
vendor: 1 bytes, line 3390
3390
3391<script id="jquery-ui-core-js" src="https://deathpenalty.org/wp-includes/js/jquery/ui/core.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 3391
3391
3392<script id="elementor-frontend-js-extra">
3393var EAELImageMaskingConfig = {"svg_dir_url":"https://deathpenalty.org/wp-content/plugins/essential-addons-for-elementor-lite/assets/front-end/img/image-masking/svg-shapes/"};
3394//# sourceURL=elementor-frontend-js-extra
3395</script>
vendor: 1 bytes, line 3395
3395
3396<script id="elementor-frontend-js-before">
3397var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnX":"Share on X","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},
3398"hasCustomBreakpoints":false},"version":"4.3.1","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"container":true,"theme_builder_v2":true,"hello-theme-header-footer":true,"landing-pages":true,"nested-elements":true,"e_atomic_elements":true,"e_opt_in_v4":true,"import-export-customization":true,"e_pro_atomic_form":true,"e_pro_collection_loop":true,"mega-menu":true},"urls":{"assets":"https:\/\/deathpenalty.org\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/deathpenalty.org\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/deathpenalty.org\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"bffd92af48","atomicFormsSendForm":"db70112c78"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"body_background_background":"classic","active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","hello_header_logo_type":"logo","hello_header_menu_layout":"horizontal","hello_footer_logo_type":"logo"},"post":{"id":2,"title":"Death%20Penalty%20Focus%20%E2%80%94%20Working%20to%20End%20Capital%20Punishment","excerpt":"","featuredImage":"https:\/\/deathpenalty.org\/wp-content\/uploads\/2024\/06\/Social-Image-1024x576.jpg"}};
3399//# sourceURL=elementor-frontend-js-before
3400</script>
vendor: 1 bytes, line 3400
3400
3401<script id="elementor-frontend-js" src="https://deathpenalty.org/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=4.3.1"></script>
vendor: 1 bytes, line 3401
3401
3402<script id="smartmenus-js" src="https://deathpenalty.org/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js?ver=1.2.1"></script>
vendor: 1 bytes, line 3402
3402
3403<script id="e-sticky-js" src="https://deathpenalty.org/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=4.3.0"></script>
vendor: 1 bytes, line 3403
3403
3404<script id="imagesloaded-js" src="https://deathpenalty.org/wp-includes/js/imagesloaded.min.js?ver=5.0.0"></script>
vendor: 1 bytes, line 3404
3404
3405<script id="hello-elementor-slick-script-js" src="https://deathpenalty.org/wp-content/themes/hello-theme-child-master/js/slick.js"></script>
vendor: 1 bytes, line 3405
3405
3406<script id="hello-elementor-matchHeight-script-js" src="https://deathpenalty.org/wp-content/themes/hello-theme-child-master/js/jquery.matchHeight.min.js"></script>
vendor: 1 bytes, line 3406
3406
3407<script id="hello-elementor-script-js" src="https://deathpenalty.org/wp-content/themes/hello-theme-child-master/js/script.js"></script>
vendor: 1 bytes, line 3407
3407
3408<script id="dpf-home-slider-js" src="https://deathpenalty.org/wp-content/plugins/(BL)%20Slide%20Editor/assets/slider.js?ver=1.30.0"></script>
vendor: 1 bytes, line 3408
3408
3409<script id="wp-hooks-js" src="https://deathpenalty.org/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 3409
3409
3410<script id="wp-i18n-js" src="https://deathpenalty.org/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 3410
3410
3411<script id="wp-i18n-js-after">
3412wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
3413//# sourceURL=wp-i18n-js-after
3414</script>
vendor: 1 bytes, line 3414
3414
3415<script id="elementor-pro-frontend-js-before">
3416var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/deathpenalty.org\/wp-admin\/admin-ajax.php","nonce":"4e873a28ab","urls":{"assets":"https:\/\/deathpenalty.org\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/deathpenalty.org\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":true},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},
3417"facebook_sdk":{"lang":"en_US","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/deathpenalty.org\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}};
3418//# sourceURL=elementor-pro-frontend-js-before
3419</script>
vendor: 1 bytes, line 3419
3419
3420<script id="elementor-pro-frontend-js" src="https://deathpenalty.org/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=4.3.0"></script>
vendor: 1 bytes, line 3420
3420
3421<script id="pro-elements-handlers-js" src="https://deathpenalty.org/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=4.3.0"></script>
vendor: 1 bytes, line 3421
3421
3422<script id="wp-emoji-settings" type="application/json">
3423{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://deathpenalty.org/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}}
3424</script>
vendor: 1 bytes, line 3424
3424
3425<script type="module">
3426/*! This file is auto-generated */
3427var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
3428//# sourceURL=https://deathpenalty.org/wp-includes/js/wp-emoji-loader.min.js
3429</script>
3429
3430
3431<script id="bl-snip-js-24039">
3432document.addEventListener("DOMContentLoaded", function () {
3433  const SCROLL_THRESHOLD = 150;
3434  const ID = "dpf-back-to-top";
3435  if (document.getElementById(ID)) return;
3436
3437  const style = document.createElement("style");
3438  style.textContent = `
3439    #${ID} {
3440      position: fixed !important;
3441      right: 20px !important;
3442      bottom: calc(20px + env(safe-area-inset-bottom, 0px)) !important;
3443      left: auto !important;
3444      top: auto !important;
3445      transform: none !important;
3446      z-index: 2147483647 !important;
3447      width: 52px !important;
3448      height: 52px !important;
3449      margin: 0 !important;
3450      padding: 0 !important;
3451      display: flex !important;
3452      align-items: center !important;
3453      justify-content: center !important;
3454      border: none !important;
3455      border-radius: 50% !important;
3456      background: rgba(90, 90, 90, 0.45) !important;
3457      box-shadow: 0 2px 10px rgba(0,0,0,0.25) !important;
3458      cursor: pointer !important;
3459      opacity: 0 !important;
3460      pointer-events: none !important;
3461      transition: opacity .35s ease, background .25s ease, box-shadow .25s ease !important;
3462      -webkit-tap-highlight-color: transparent;
3463    }
3464    #${ID} svg { width: 22px; height: 22px; display: block; }
3465    #${ID} svg path { stroke: #fff; }
3466    #${ID}.is-visible { opacity: 1 !important; pointer-events: auto !important; }
3467    #${ID}:hover, #${ID}:focus-visible, #${ID}:active {
3468      background: linear-gradient(135deg, #E2360A 0%, #C82500 55%, #A01E00 100%) !important;
3469      box-shadow: 0 4px 16px rgba(200,37,0,.45) !important;
3470      outline: none;
3471    }
3472    @media (max-width: 768px) {
3473      #${ID} {
3474        right: 28px !important;
3475        bottom: calc(16px + env(safe-area-inset-bottom, 0px)) !important;
3476        width: 48px !important;
3477        height: 48px !important;
3478      }
3479    }
3480  `;
3481  document.head.appendChild(style);
3482
3483  const btn = document.createElement("button");
3484  btn.id = ID;
3485  btn.type = "button";
3486  btn.setAttribute("aria-label", "Scroll to top");
3487  btn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg>';
3488
3489  // Anchor to <body> — the valid, iOS-reliable home for a fixed element.
3490  // (v1 appended to <html>, which is invalid markup and is mis-positioned by
3491  //  iOS Safari — that was the real drift cause, not a transformed ancestor.)
3492  document.body.appendChild(btn);
3493
3494  // Belt-and-suspenders: a transformed/filtered/contained ancestor would turn
3495  // position:fixed into position:absolute. Log it if present so it's not a mystery.
3496  (function checkTrap() {
3497    var trapped = [];
3498    for (var n = btn.parentElement; n && n !== document.documentElement; n = n.parentElement) {
3499      var s = getComputedStyle(n);
3500      if (s.transform !== "none" || s.perspective !== "none" || s.filter !== "none" ||
3501          /transform|filter|perspective/.test(s.willChange) ||
3502          s.contain.indexOf("paint") > -1 || s.contain.indexOf("layout") > -1) {
3503        trapped.push(n);
3504      }
3505    }
3506    if (trapped.length) console.warn("[dpf-back-to-top] transformed ancestor(s) may trap fixed positioning:", trapped);
3507  })();
3508
3509  function onScroll() {
3510    var scrolled = window.scrollY || document.documentElement.scrollTop;
3511    btn.classList.toggle("is-visible", scrolled > SCROLL_THRESHOLD);
3512  }
3513  window.addEventListener("scroll", onScroll, { passive: true });
3514  onScroll();
3515
3516  btn.addEventListener("click", function () {
3517    window.scrollTo({ top: 0, behavior: "smooth" });
3518  });
3519});
3520</script>
3520
3521
3522<!--
3523╔══════════════════════════════════════════════════════════════════════════════╗
3524║  DPF — "Like & Share"  ·  SITE-WIDE, self-contained                          ║
3525╠══════════════════════════════════════════════════════════════════════════════╣
3526║  WHAT THIS IS                                                                ║
3527║  Desktop: a right-edge vertical rail — Instagram · Email · X · Facebook ·     ║
3528║  Copy Link — that shares WHATEVER page it appears on.                         ║
3529║  Mobile : the rail is replaced by a "Share" glyph injected into the site      ║
3530║  header, directly LEFT of the hamburger. Tapping it opens a stylish modal     ║
3531║  that names the current page and offers the same five actions. The modal      ║
3532║  FREEZES the underlying page (no scroll) until it's closed.                   ║
3533║  It's fully self-contained — own namespace (#dls / .dls-*), own colors.       ║
3534║                                                                              ║
3535║  DESKTOP vs MOBILE is decided by the hamburger's real visibility (synced in   ║
3536║  JS), NOT a fixed pixel breakpoint — so it always matches the theme's menu.   ║
3537║  Injection anchor: .elementor-menu-toggle (Elementor / Hello theme). If no    ║
3538║  hamburger exists on a page, the rail simply stays visible as a fallback.     ║
3539║                                                                              ║
3540║  WHERE TO PUT IT  (→ the (BL) Code Snippets plugin)                           ║
3541║  Snippets → Add New →  Type HTML · Run on Front-end only · Placement Footer · ║
3542║  Active. Paste this ENTIRE file in. Prints on wp_footer site-wide.            ║
3543║  ⚠ After first install / any edit: PURGE the WP-Optimize page cache, or       ║
3544║  pages cached before the snippet existed won't include it (that's why some    ║
3545║  pages showed it and others didn't).                                         ║
3546║                                                                              ║
3547║  WHAT IT SHARES:  origin + pathname + #hash (query dropped, anti-404) and     ║
3548║  document.title. The modal heading shows the page name (site suffix trimmed). ║
3549║                                                                              ║
3550║  BRAND:  DPF Navy #2A4A88 · gold #b3903f · line #e6e6ea · ink #23201d         ║
3551╚══════════════════════════════════════════════════════════════════════════════╝
3552-->
3553<div id="dls" aria-label="Like and share this page">
3554
3555  <!-- ░░ Desktop rail (hidden in mobile mode; buttons keyed by data-dls-act) ░░ -->
3556  <div class="dls-rail" id="dls-rail" aria-label="Like and share this page">
3557    <span class="dls-label">Like &amp; Share</span>
3558    <a class="dls-btn" data-dls-act="ig" href="https://www.instagram.com/deathpenaltyfocus/" target="_blank" rel="noopener" title="Follow Death Penalty Focus on Instagram" aria-label="Follow on Instagram"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r="1.1" fill="currentColor" stroke="none"/></svg></a>
3559    <button class="dls-btn" data-dls-act="email" type="button" title="Share by email" aria-label="Share by email"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="5" width="18" height="14" rx="2"/><path d="m3 7 9 6 9-6"/></svg></button>
3560    <button class="dls-btn" data-dls-act="x" type="button" title="Share on X" aria-label="Share on X"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg></button>
3561    <button class="dls-btn" data-dls-act="fb" type="button" title="Share on Facebook" aria-label="Share on Facebook"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M22 12.06C22 6.5 17.52 2 12 2S2 6.5 2 12.06c0 5.02 3.66 9.18 8.44 9.94v-7.03H7.9v-2.9h2.54V9.85c0-2.52 1.5-3.91 3.78-3.91 1.1 0 2.24.2 2.24.2v2.46h-1.26c-1.24 0-1.63.77-1.63 1.56v1.88h2.78l-.44 2.9h-2.34V22c4.78-.76 8.44-4.92 8.44-9.94z"/></svg></button>
3562    <button class="dls-btn" data-dls-act="copy" type="button" title="Copy link" aria-label="Copy link"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.07 0l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.07 0l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></button>
3563  </div>
3564
3565  <!-- ░░ Mobile modal (page-named, scroll-freezing) ░░ -->
3566  <div class="dls-modal" id="dls-modal" role="dialog" aria-modal="true" aria-labelledby="dls-modal-title">
3567    <div class="dls-modal__backdrop" data-dls-close></div>
3568    <div class="dls-modal__card" role="document">
3569      <button class="dls-modal__x" type="button" data-dls-close aria-label="Close">
3570        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M6 6l12 12M18 6L6 18"/></svg>
3571      </button>
3572      <div class="dls-modal__eyebrow">Like &amp; Share</div>
3573      <h2 class="dls-modal__title" id="dls-modal-title">This page</h2>
3574      <div class="dls-modal__grid">
3575        <a class="dls-tile" data-dls-act="ig" href="https://www.instagram.com/deathpenaltyfocus/" target="_blank" rel="noopener" aria-label="Follow on Instagram"><span class="dls-tile__ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17.5" cy="6.5" r="1.1" fill="currentColor" stroke="none"/></svg></span><span class="dls-tile__lb">Instagram</span></a>
3576        <button class="dls-tile" data-dls-act="x" type="button" aria-label="Share on X"><span class="dls-tile__ic"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg></span><span class="dls-tile__lb">X</span></button>
3577        <button class="dls-tile" data-dls-act="fb" type="button" aria-label="Share on Facebook"><span class="dls-tile__ic"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M22 12.06C22 6.5 17.52 2 12 2S2 6.5 2 12.06c0 5.02 3.66 9.18 8.44 9.94v-7.03H7.9v-2.9h2.54V9.85c0-2.52 1.5-3.91 3.78-3.91 1.1 0 2.24.2 2.24.2v2.46h-1.26c-1.24 0-1.63.77-1.63 1.56v1.88h2.78l-.44 2.9h-2.34V22c4.78-.76 8.44-4.92 8.44-9.94z"/></svg></span><span class="dls-tile__lb">Facebook</span></button>
3578        <span class="dls-tile-break" aria-hidden="true"></span>
3579        <button class="dls-tile" data-dls-act="email" type="button" aria-label="Share by email"><span class="dls-tile__ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="5" width="18" height="14" rx="2"/><path d="m3 7 9 6 9-6"/></svg></span><span class="dls-tile__lb">Email</span></button>
3580        <button class="dls-tile" data-dls-act="copy" type="button" aria-label="Copy link"><span class="dls-tile__ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.07 0l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.07 0l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></span><span class="dls-tile__lb">Copy link</span></button>
3581      </div>
3582    </div>
3583  </div>
3584
3585  <div class="dls-toast" id="dls-toast">Link copied!</div>
3586</div>
3587
3588<style>
3589  #dls{
3590    --dls-navy:#2A4A88; --dls-gold:#b3903f; --dls-line:#e6e6ea; --dls-card:#ffffff;
3591    --dls-muted:#6b7280; --dls-ink:#23201d;
3592  }
3593
3594  /* Never show the widget to a logged-in / admin viewer — WordPress stamps
3595     body.logged-in (+ body.admin-bar when the toolbar shows). The JS also bails
3596     for these, so no header glyph is injected either. (Caching plugins serve
3597     logged-in users an uncached page, so these classes are reliably present.) */
3598  body.logged-in #dls, body.admin-bar #dls,
3599  body.logged-in .dls-header-share, body.admin-bar .dls-header-share{ display:none !important; }
3600
3601  /* ── Desktop rail: fixed to the right edge, faded until hovered ── */
3602  #dls .dls-rail{
3603    position:fixed; top:50%; right:14px; transform:translateY(-50%); z-index:9990;
3604    display:flex; flex-direction:column; align-items:center; gap:9px;
3605    padding:12px 9px; border-radius:16px;
3606    background:rgba(255,255,255,.72); border:1px solid transparent;
3607    -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px);
3608    opacity:.64; transition:opacity .25s ease, background .25s ease, border-color .25s ease, box-shadow .25s ease;
3609    -webkit-user-select:none; user-select:none;
3610  }
3611  #dls .dls-rail:hover{ opacity:1; background:#fff; border-color:var(--dls-line); box-shadow:0 10px 28px rgba(28,35,51,.16); }
3612  /* Vertical cap — reads TOP-to-BOTTOM (tilt head clockwise): writing-mode alone,
3613     no rotate(180deg) (which would flip it back to bottom→top). */
3614  #dls .dls-label{ writing-mode:vertical-rl; font-size:10px; letter-spacing:.22em; text-transform:uppercase; color:var(--dls-muted); margin-bottom:2px; }
3615  #dls .dls-btn{ width:36px; height:36px; display:grid; place-items:center; border-radius:50%; border:1px solid var(--dls-line); background:var(--dls-card); color:var(--dls-navy); cursor:pointer; padding:0; text-decoration:none; transition:background .15s ease, color .15s ease, border-color .15s ease, transform .15s ease; }
3616  #dls .dls-btn:hover{ background:var(--dls-navy); color:#fff; border-color:var(--dls-navy); transform:scale(1.08); }
3617  #dls .dls-btn svg{ width:16px; height:16px; display:block; }
3618
3619  /* In mobile mode the rail is gone entirely — the header Share glyph + modal take over */
3620  #dls.dls--mobile .dls-rail{ display:none; }
3621
3622  /* ── Toast ── */
3623  #dls .dls-toast{ position:fixed; bottom:26px; left:50%; transform:translateX(-50%) translateY(8px); background:var(--dls-ink); color:#fff; padding:10px 18px; border-radius:999px; font-size:13px; font-weight:500; opacity:0; pointer-events:none; transition:opacity .2s ease, transform .2s ease; z-index:1000000; }
3624  #dls .dls-toast.show{ opacity:1; transform:translateX(-50%) translateY(0); }
3625
3626  /* ── Header Share glyph (injected as a child of the hamburger; lives OUTSIDE #dls).
3627     Anchored ABSOLUTELY just to the LEFT of the hamburger so it never stacks above
3628     it (the menu widget is a flex COLUMN). background/color are forced with
3629     !important to beat the theme's red header-button styling — it must read as a
3630     plain gray glyph on the white header, matching the hamburger. ── */
3631  .dls-header-share{
3632    display:none;                            /* JS shows it (flex) only in mobile mode */
3633    position:absolute !important;
3634    right:100% !important; top:50% !important; transform:translateY(-50%) !important;
3635    margin:0 3px 0 0 !important;
3636    align-items:center !important; justify-content:center !important;
3637    width:36px !important; height:36px !important; padding:0 !important;
3638    background:transparent !important; background-color:transparent !important;
3639    border:0 !important; box-shadow:none !important; border-radius:0 !important;
3640    color:#5b5b5b !important; cursor:pointer;
3641    -webkit-appearance:none !important; appearance:none !important;
3642    line-height:0 !important; z-index:5 !important; -webkit-tap-highlight-color:transparent;
3643    transition:opacity .2s ease;
3644  }
3645  .dls-header-share svg{ width:24px !important; height:24px !important; display:block !important; stroke:currentColor !important; fill:none !important; }
3646  .dls-header-share svg *{ fill:none !important; stroke:currentColor !important; }  /* beat theme's global svg{fill:...} that was filling the glyph solid */
3647  .dls-header-share:active{ transform:translateY(-50%) scale(.9) !important; }
3648
3649  /* ── Modal ── */
3650  #dls .dls-modal{ display:none; position:fixed; inset:0; z-index:999999; align-items:center; justify-content:center; padding:20px; }
3651  #dls .dls-modal.is-open{ display:flex; }
3652  #dls .dls-modal__backdrop{ position:absolute; inset:0; background:rgba(18,20,28,.55); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); opacity:0; transition:opacity .22s ease; }
3653  #dls .dls-modal.is-in .dls-modal__backdrop{ opacity:1; }
3654  #dls .dls-modal__card{
3655    position:relative; z-index:1; width:100%; max-width:340px;
3656    background:#fff; border-radius:18px; padding:22px 20px 24px; text-align:center;
3657    box-shadow:0 24px 60px rgba(16,20,32,.42);
3658    transform:translateY(16px) scale(.98); opacity:0;
3659    transition:transform .26s cubic-bezier(.2,.7,.3,1), opacity .26s ease;
3660  }
3661  #dls .dls-modal.is-in .dls-modal__card{ transform:none; opacity:1; }
3662  #dls .dls-modal__x{ position:absolute; top:12px; right:12px; width:32px; height:32px; display:grid; place-items:center; border-radius:50%; border:0; background:transparent; color:var(--dls-muted); cursor:pointer; padding:0; transition:background .15s ease, color .15s ease; }
3663  #dls .dls-modal__x:hover{ background:#f2f2f4; color:var(--dls-ink); }
3664  #dls .dls-modal__x svg{ width:17px; height:17px; }
3665  #dls .dls-modal__eyebrow{ font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--dls-gold); }
3666  #dls .dls-modal__kicker{ margin-top:12px; font-size:11.5px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--dls-muted); }
3667  #dls .dls-modal__title{
3668    margin:4px 6px 17px; font-family:'Cormorant Garamond', Georgia, 'Times New Roman', serif;
3669    font-size:22px; line-height:1.2; font-weight:600; color:var(--dls-ink);
3670    max-height:3.7em; overflow:hidden;
3671  }
3672  #dls .dls-modal__grid{ display:flex; flex-wrap:wrap; justify-content:center; gap:16px 18px; }
3673  #dls .dls-tile-break{ flex-basis:100%; width:100%; height:0; margin:0; padding:0; }  /* forces row1=IG·X·FB, row2=Email·Copy */
3674  #dls .dls-tile{ display:flex; flex-direction:column; align-items:center; gap:8px; width:58px; padding:0; background:none; border:0; cursor:pointer; text-decoration:none; -webkit-tap-highlight-color:transparent; }
3675  #dls .dls-tile__ic{ width:40px; height:40px; display:grid; place-items:center; border-radius:50%; border:1px solid var(--dls-line); background:#f5f3ef; color:var(--dls-navy); transition:background .15s ease, color .15s ease, border-color .15s ease, transform .12s ease; }
3676  #dls .dls-tile:hover .dls-tile__ic, #dls .dls-tile:active .dls-tile__ic{ background:var(--dls-navy); color:#fff; border-color:var(--dls-navy); transform:scale(1.06); }
3677  #dls .dls-tile__ic svg{ width:19px; height:19px; display:block; }
3678  #dls .dls-tile__lb{ font-size:11px; font-weight:600; color:var(--dls-muted); letter-spacing:.01em; }
3679
3680  /* ── Scroll-freeze while a modal is open ── */
3681  html.dls-noscroll, html.dls-noscroll body{ overflow:hidden !important; }
3682</style>
3683
3684<script>
3685(function(){
3686  var root = document.getElementById('dls');
3687  if(!root || root.dataset.dlsInit) return;   // guard against a double paste
3688  // Bail entirely for a logged-in / admin viewer (matches the CSS guard above),
3689  // so no header glyph is injected and nothing is wired up.
3690  var _b = document.body;
3691  if(_b && (_b.classList.contains('logged-in') || _b.classList.contains('admin-bar'))){ root.style.display='none'; return; }
3692  root.dataset.dlsInit = '1';
3693  function $(id){ return document.getElementById(id); }
3694
3695  var HAMBURGER = '.elementor-menu-toggle';   // Elementor / Hello theme mobile menu
3696
3697  // Clean shareable link for THIS page: origin + path + #hash (query dropped so a
3698  // bare hash can't trip a WP 404 / home redirect) + full document.title.
3699  function shareInfo(){
3700    var u = new URL(location.origin + location.pathname);
3701    if(location.hash){ u.hash = location.hash.replace(/^#/, ''); }
3702    var title = (document.title || 'Death Penalty Focus').replace(/\s+/g,' ').trim();
3703    return { link: u.toString(), title: title };
3704  }
3705  // Page name for the modal heading — trim a trailing " - Death Penalty Focus".
3706  function pageName(){
3707    var t = (document.title || '').replace(/\s+/g,' ').trim();
3708    return t.replace(/\s*[|–—\-]\s*Death\s*Penalty\s*Focus\s*$/i, '').trim() || t || 'This page';
3709  }
3710  function toast(msg){ var t=$('dls-toast'); if(!t) return; t.textContent=msg; t.classList.add('show'); clearTimeout(t._t); t._t=setTimeout(function(){ t.classList.remove('show'); }, 1800); }
3711  function popup(url){ window.open(url, '_blank', 'noopener,width=600,height=520'); }
3712
3713  // One handler for every share control (rail + modal), keyed by data-dls-act.
3714  function act(name){
3715    var s = shareInfo();
3716    if(name==='email'){ window.location.href='mailto:?subject='+encodeURIComponent(s.title)+'&body='+encodeURIComponent(s.title+'\n\n'+s.link); }
3717    else if(name==='x'){ popup('https://twitter.com/intent/tweet?url='+encodeURIComponent(s.link)+'&text='+encodeURIComponent(s.title)); }
3718    else if(name==='fb'){ popup('https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(s.link)); }
3719    else if(name==='copy'){ (navigator.clipboard ? navigator.clipboard.writeText(s.link) : Promise.reject())
3720        .then(function(){ toast('Link copied!'); }).catch(function(){ window.prompt('Copy this link:', s.link); }); }
3721    // 'ig' is a plain anchor — the browser handles it.
3722  }
3723  root.addEventListener('click', function(e){
3724    var el = e.target.closest('[data-dls-act]'); if(!el) return;
3725    var name = el.getAttribute('data-dls-act');
3726    if(name !== 'ig'){ e.preventDefault(); act(name); }   // ig anchor navigates on its own
3727    if(el.closest('#dls-modal')){ setTimeout(closeModal, 80); }  // dismiss after a modal share
3728  });
3729
3730  // ── Scroll-freeze (position:fixed technique keeps iOS from scrolling behind) ──
3731  var _scrollY = 0;
3732  function lockScroll(){
3733    _scrollY = window.scrollY || window.pageYOffset || 0;
3734    document.documentElement.classList.add('dls-noscroll');
3735    var b = document.body;
3736    b.style.position='fixed'; b.style.top=(-_scrollY)+'px'; b.style.left='0'; b.style.right='0'; b.style.width='100%';
3737  }
3738  function unlockScroll(){
3739    document.documentElement.classList.remove('dls-noscroll');
3740    var b = document.body;
3741    b.style.position=''; b.style.top=''; b.style.left=''; b.style.right=''; b.style.width='';
3742    window.scrollTo(0, _scrollY);
3743  }
3744
3745  // ── Modal ──
3746  var modal = $('dls-modal');
3747  var modalOpen = false;
3748  function openModal(){
3749    if(modalOpen || !modal) return; modalOpen = true;
3750    var mt = $('dls-modal-title'); if(mt) mt.textContent = pageName();
3751    modal.classList.add('is-open');
3752    lockScroll();
3753    void modal.offsetWidth;                 // force reflow so the entrance transition fires
3754    modal.classList.add('is-in');           // (reflow, not rAF — robust even when tab isn't compositing)
3755    document.addEventListener('keydown', onKey);
3756  }
3757  function closeModal(){
3758    if(!modalOpen || !modal) return; modalOpen = false;
3759    modal.classList.remove('is-in');
3760    unlockScroll();
3761    document.removeEventListener('keydown', onKey);
3762    setTimeout(function(){ if(!modalOpen) modal.classList.remove('is-open'); }, 240);
3763  }
3764  function onKey(e){ if(e.key==='Escape' || e.key==='Esc') closeModal(); }
3765  if(modal){ modal.querySelectorAll('[data-dls-close]').forEach(function(el){ el.addEventListener('click', closeModal); }); }
3766
3767  // ── Inject the header Share glyph directly LEFT of the hamburger ──
3768  // The header (and its hamburger) is rendered MORE THAN ONCE by the theme — a
3769  // sticky/duplicate copy — and Elementor may CLONE the toggle after we inject.
3770  // That produced TWO overlapping glyphs (the doubled, "fucked" look). So we keep
3771  // exactly ONE: delete any extras, add one only if none exist. Class-based, no id
3772  // (duplicate ids are invalid and break getElementById).
3773  var GLYPH_SVG = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v13"/><path d="m8 7 4-4 4 4"/><path d="M8 11H7a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2h-1"/></svg>';
3774  function ensureHeaderBtn(){
3775    var toggle = document.querySelector(HAMBURGER);
3776    if(!toggle) return false;
3777    var glyphs = document.querySelectorAll('.dls-header-share');
3778    for(var i=1;i<glyphs.length;i++){ glyphs[i].remove(); }   // kill duplicates, keep the first
3779    if(glyphs.length === 0){
3780      // The hamburger becomes the positioning context; the glyph is absolutely
3781      // placed just to its LEFT (see CSS), as a CHILD so it stays out of the menu
3782      // widget's flex-COLUMN. Elementor's toggle + its dropdown are untouched.
3783      if(getComputedStyle(toggle).position === 'static'){ toggle.style.position = 'relative'; }
3784      toggle.style.overflow = 'visible';   // so the outboard glyph isn't clipped
3785      var b = document.createElement('button');
3786      b.type='button'; b.className='dls-header-share';
3787      b.setAttribute('aria-label','Like & Share'); b.title='Like & Share';
3788      b.innerHTML = GLYPH_SVG;   // box with an arrow going straight up out of the top
3789      b.addEventListener('click', function(e){ e.preventDefault(); e.stopPropagation(); openModal(); });
3790      toggle.appendChild(b);
3791    }
3792    return true;
3793  }
3794
3795  // ── Mode sync: mobile IFF the hamburger is actually visible ──
3796  function isMobile(){ var t=document.querySelector(HAMBURGER); return !!(t && getComputedStyle(t).display !== 'none'); }
3797  function syncMode(){
3798    var mobile = isMobile();
3799    root.classList.toggle('dls--mobile', mobile);
3800    var g = document.querySelectorAll('.dls-header-share');
3801    for(var i=0;i<g.length;i++){ g[i].style.display = mobile ? 'flex' : 'none'; }
3802    if(!mobile && modalOpen) closeModal();   // resized to desktop with modal up → tidy away
3803  }
3804
3805  function boot(){
3806    ensureHeaderBtn();
3807    syncMode();
3808    // The header may be built/re-templated or CLONED by Elementor after load —
3809    // keep ensuring (and de-duplicating) for a few seconds so a late clone can't
3810    // leave two overlapping glyphs.
3811    var tries = 0;
3812    var iv = setInterval(function(){ tries++; ensureHeaderBtn(); syncMode(); if(tries>20) clearInterval(iv); }, 300);
3813  }
3814  if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', boot); } else { boot(); }
3815  window.addEventListener('resize', syncMode, { passive:true });
3816  window.addEventListener('orientationchange', function(){ setTimeout(syncMode, 200); });
3817})();
3818</script>
3818
3819<!-- ═══════════════ /DPF Like & Share (site-wide) ═══════════════ -->
3820
3821
3822</body>
3823</html>
3824
3825<!-- Cached by WP-Optimize (gzip) - https://teamupdraft.com/wp-optimize/ - Last modified: September 24, 2026 10:49 am (America/Los_Angeles UTC:-7) -->

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.