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&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&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&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="{"background_background":"classic","sticky":"top","sticky_on":["desktop","tablet","mobile"],"sticky_offset":0,"sticky_effects_offset":0,"sticky_anchor_link_offset":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="{"full_width":"stretch","submenu_icon":{"value":"","library":""},"layout":"horizontal","toggle":"burger"}" 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 & 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">“A Lens on Capital Punishment”</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 & 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&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 & 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">“A Lens on Capital Punishment”</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 & 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&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="{"background_background":"classic"}"> 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 & 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…" 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("https://deathpenalty.org/wp-content/uploads/2024/11/Magazines_Shutterstock_ed.jpg");"><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("https://deathpenalty.org/wp-content/uploads/2024/11/Scales-of-Justice_shutterstock_2471885651-ed-300x165.jpg");"><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("https://deathpenalty.org/wp-content/uploads/2026/08/Tyrone-Noling_Ohio-300x300.png");"><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("https://deathpenalty.org/wp-content/uploads/2024/09/shutterstock_Bottle-Syringe-pg-1-300x200.jpg");"><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(/\[(?:â¦|…|\.\.\.)\]/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…</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,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"'); } 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’s to take.</div> 1952 <div class="dpf-cta__msg">The system is broken. Let’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&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>×</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="{"background_background":"classic"}"> 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="{"submenu_icon":{"value":"","library":""},"layout":"horizontal"}" 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 & 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 & 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">“A Lens on Capital Punishment”</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 & 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 & 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">“A Lens on Capital Punishment”</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 Penalty 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‑243‑0143</a></li> 2865 <li><a href="mailto:[email protected]">[email protected]</a></li> 2866 <li>Federal Tax ID# 95‑4153420</li> 2867 <li>A 501(c)(3) non‑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&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">© <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 & 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 & 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.