<!doctype html>
<html lang="en-US">

	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<!-- For Safari on iOS 15+ -->
		<meta name="theme-color" content="#FFFFFF" />
		<!-- Default Fallback Favicon -->
		<link rel="icon" href="https://insideelections.com/wp-content/themes/inside-elections/assets/img/favicon-light.png">
    
		<!-- Light Mode Favicon -->
		<link rel="icon" href="https://insideelections.com/wp-content/themes/inside-elections/assets/img/favicon-light.png" media="(prefers-color-scheme: light)">
		
		<!-- Dark Mode Favicon -->
		<link rel="icon" href="https://insideelections.com/wp-content/themes/inside-elections/assets/img/favicon-dark.png" media="(prefers-color-scheme: dark)">
		<title>Page not found &#8211; Inside Elections</title>
<meta name='robots' content='max-image-preview:large' />
<meta property="og:site_name" content="Inside Elections">
<meta property="og:type" content="website">
<meta property="og:title" content="Inside Elections">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Inside Elections">
<style id="wp-img-auto-sizes-contain-inline-css">
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<link rel='stylesheet' id='mp-theme-css' href='https://insideelections.com/wp-content/plugins/memberpress/css/ui/theme.css' media='all' />
<style id="wp-emoji-styles-inline-css">

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<style id="wp-block-library-inline-css">
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}

/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
</style>

<style id="ie-related-style-inline-css">

/*# sourceURL=https://insideelections.com/wp-content/themes/inside-elections/blocks/related/style.css */
</style>

<style id="global-styles-inline-css">
: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--color--dark-blue: #09428C;--wp--preset--color--democrat-blue: #356DB7;--wp--preset--color--likely-blue: #6996D1;--wp--preset--color--lean-blue: #A9CAF6;--wp--preset--color--tilt-blue: #CEE3FF;--wp--preset--color--light-blue: #E2EEFF;--wp--preset--color--dark-red: #7E0000;--wp--preset--color--republican-red: #D42D35;--wp--preset--color--likely-red: #EF8288;--wp--preset--color--lean-red: #F6A7AB;--wp--preset--color--tilt-red: #FFD8D9;--wp--preset--color--light-red: #FFE4E5;--wp--preset--color--independent-yellow: #8a7500;--wp--preset--color--yellow: #FFEF4D;--wp--preset--color--light-yellow: #FFF9D8;--wp--preset--color--green: #258620;--wp--preset--color--off-black: #1A1A1A;--wp--preset--color--dark-gray: #6F6F6F;--wp--preset--color--gray: #B8B8B8;--wp--preset--color--light-gray: #D4D4D4;--wp--preset--color--lightest-gray: #F0F0F0;--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%);--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: 0.875rem;--wp--preset--font-size--medium: 1rem;--wp--preset--font-size--large: 1.2rem;--wp--preset--font-size--x-large: 2rem;--wp--preset--font-size--x-small: 0.6875rem;--wp--preset--font-family--centra-no-2: Centra No2;--wp--preset--font-family--centra-mono: Centra Mono;--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);}:root { --wp--style--global--content-size: 1000px;--wp--style--global--wide-size: 1600px; }: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: 15px; 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: 15px; }: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: 15px;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: 15px;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 15px;}:root :where(.is-layout-grid){gap: 15px;}.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{font-family: 'Centra No2', sans-serif;font-size: 1rem;line-height: 1.4;padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}a:where(:not(.wp-element-button)){color: inherit;}h1{font-family: 'Centra No2', sans-serif;font-size: 3rem;font-weight: 700;line-height: 1;}h2{font-family: 'Centra No2', sans-serif;font-size: 1.8rem;font-weight: 700;letter-spacing: -0.75px;line-height: 1.2;}h3{font-family: 'Centra No2', sans-serif;font-size: 1.2rem;font-weight: 700;line-height: 1.2;}h4{font-family: 'Centra No2', sans-serif;font-size: 1rem;font-weight: 400;line-height: 1.2;}h5{font-family: 'Centra No2', sans-serif;font-size: 1.375rem;font-weight: 500;line-height: 120%;}h6{font-family: 'Centra Mono', monospace;font-size: 0.875rem;font-weight: 700;letter-spacing: 1px;line-height: 1.3;}: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;}:root :where(.wp-element-caption, .wp-block-audio figcaption, .wp-block-embed figcaption, .wp-block-gallery figcaption, .wp-block-image figcaption, .wp-block-table figcaption, .wp-block-video figcaption){color: black;}.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-dark-blue-color{color: var(--wp--preset--color--dark-blue) !important;}.has-democrat-blue-color{color: var(--wp--preset--color--democrat-blue) !important;}.has-likely-blue-color{color: var(--wp--preset--color--likely-blue) !important;}.has-lean-blue-color{color: var(--wp--preset--color--lean-blue) !important;}.has-tilt-blue-color{color: var(--wp--preset--color--tilt-blue) !important;}.has-light-blue-color{color: var(--wp--preset--color--light-blue) !important;}.has-dark-red-color{color: var(--wp--preset--color--dark-red) !important;}.has-republican-red-color{color: var(--wp--preset--color--republican-red) !important;}.has-likely-red-color{color: var(--wp--preset--color--likely-red) !important;}.has-lean-red-color{color: var(--wp--preset--color--lean-red) !important;}.has-tilt-red-color{color: var(--wp--preset--color--tilt-red) !important;}.has-light-red-color{color: var(--wp--preset--color--light-red) !important;}.has-independent-yellow-color{color: var(--wp--preset--color--independent-yellow) !important;}.has-yellow-color{color: var(--wp--preset--color--yellow) !important;}.has-light-yellow-color{color: var(--wp--preset--color--light-yellow) !important;}.has-green-color{color: var(--wp--preset--color--green) !important;}.has-off-black-color{color: var(--wp--preset--color--off-black) !important;}.has-dark-gray-color{color: var(--wp--preset--color--dark-gray) !important;}.has-gray-color{color: var(--wp--preset--color--gray) !important;}.has-light-gray-color{color: var(--wp--preset--color--light-gray) !important;}.has-lightest-gray-color{color: var(--wp--preset--color--lightest-gray) !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-dark-blue-background-color{background-color: var(--wp--preset--color--dark-blue) !important;}.has-democrat-blue-background-color{background-color: var(--wp--preset--color--democrat-blue) !important;}.has-likely-blue-background-color{background-color: var(--wp--preset--color--likely-blue) !important;}.has-lean-blue-background-color{background-color: var(--wp--preset--color--lean-blue) !important;}.has-tilt-blue-background-color{background-color: var(--wp--preset--color--tilt-blue) !important;}.has-light-blue-background-color{background-color: var(--wp--preset--color--light-blue) !important;}.has-dark-red-background-color{background-color: var(--wp--preset--color--dark-red) !important;}.has-republican-red-background-color{background-color: var(--wp--preset--color--republican-red) !important;}.has-likely-red-background-color{background-color: var(--wp--preset--color--likely-red) !important;}.has-lean-red-background-color{background-color: var(--wp--preset--color--lean-red) !important;}.has-tilt-red-background-color{background-color: var(--wp--preset--color--tilt-red) !important;}.has-light-red-background-color{background-color: var(--wp--preset--color--light-red) !important;}.has-independent-yellow-background-color{background-color: var(--wp--preset--color--independent-yellow) !important;}.has-yellow-background-color{background-color: var(--wp--preset--color--yellow) !important;}.has-light-yellow-background-color{background-color: var(--wp--preset--color--light-yellow) !important;}.has-green-background-color{background-color: var(--wp--preset--color--green) !important;}.has-off-black-background-color{background-color: var(--wp--preset--color--off-black) !important;}.has-dark-gray-background-color{background-color: var(--wp--preset--color--dark-gray) !important;}.has-gray-background-color{background-color: var(--wp--preset--color--gray) !important;}.has-light-gray-background-color{background-color: var(--wp--preset--color--light-gray) !important;}.has-lightest-gray-background-color{background-color: var(--wp--preset--color--lightest-gray) !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-dark-blue-border-color{border-color: var(--wp--preset--color--dark-blue) !important;}.has-democrat-blue-border-color{border-color: var(--wp--preset--color--democrat-blue) !important;}.has-likely-blue-border-color{border-color: var(--wp--preset--color--likely-blue) !important;}.has-lean-blue-border-color{border-color: var(--wp--preset--color--lean-blue) !important;}.has-tilt-blue-border-color{border-color: var(--wp--preset--color--tilt-blue) !important;}.has-light-blue-border-color{border-color: var(--wp--preset--color--light-blue) !important;}.has-dark-red-border-color{border-color: var(--wp--preset--color--dark-red) !important;}.has-republican-red-border-color{border-color: var(--wp--preset--color--republican-red) !important;}.has-likely-red-border-color{border-color: var(--wp--preset--color--likely-red) !important;}.has-lean-red-border-color{border-color: var(--wp--preset--color--lean-red) !important;}.has-tilt-red-border-color{border-color: var(--wp--preset--color--tilt-red) !important;}.has-light-red-border-color{border-color: var(--wp--preset--color--light-red) !important;}.has-independent-yellow-border-color{border-color: var(--wp--preset--color--independent-yellow) !important;}.has-yellow-border-color{border-color: var(--wp--preset--color--yellow) !important;}.has-light-yellow-border-color{border-color: var(--wp--preset--color--light-yellow) !important;}.has-green-border-color{border-color: var(--wp--preset--color--green) !important;}.has-off-black-border-color{border-color: var(--wp--preset--color--off-black) !important;}.has-dark-gray-border-color{border-color: var(--wp--preset--color--dark-gray) !important;}.has-gray-border-color{border-color: var(--wp--preset--color--gray) !important;}.has-light-gray-border-color{border-color: var(--wp--preset--color--light-gray) !important;}.has-lightest-gray-border-color{border-color: var(--wp--preset--color--lightest-gray) !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;}.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;}.has-x-small-font-size{font-size: var(--wp--preset--font-size--x-small) !important;}.has-centra-no-2-font-family{font-family: var(--wp--preset--font-family--centra-no-2) !important;}.has-centra-mono-font-family{font-family: var(--wp--preset--font-family--centra-mono) !important;}
/*# sourceURL=global-styles-inline-css */
</style>

<link rel='stylesheet' id='normalize-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/normalize.css' media='all' />
<link rel='stylesheet' id='utility-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/utility.css' media='all' />
<link rel='stylesheet' id='typography-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/typography.css' media='all' />
<link rel='stylesheet' id='alignment-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/alignment.css' media='all' />
<link rel='stylesheet' id='layout-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/layout.css' media='all' />
<link rel='stylesheet' id='header-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/header.css' media='all' />
<link rel='stylesheet' id='footer-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/footer.css' media='all' />
<link rel='stylesheet' id='bits-and-pieces-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/bits-and-pieces.css' media='all' />
<link rel='stylesheet' id='default-layout-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/wp-default-layout.css' media='all' />
<link rel='stylesheet' id='wp-blocks-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/wp-blocks.css' media='all' />
<link rel='stylesheet' id='hamburgers-css' href='https://insideelections.com/wp-content/themes/inside-elections/css/hamburgers.css' media='all' />
<script id="site-js" src="https://insideelections.com/wp-content/themes/inside-elections/js/site.js"></script>
<script id="nav-js" src="https://insideelections.com/wp-content/themes/inside-elections/js/nav.js"></script>
<style class="wp-fonts-local">
@font-face{font-family:"Centra No2";font-style:normal;font-weight:400;font-display:block;src:url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-Book.woff2') format('woff2'), url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-Book.woff') format('woff');font-stretch:normal;}
@font-face{font-family:"Centra No2";font-style:italic;font-weight:400;font-display:block;src:url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-Italic.woff2') format('woff2'), url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-Italic.woff') format('woff');font-stretch:normal;}
@font-face{font-family:"Centra No2";font-style:normal;font-weight:500;font-display:block;src:url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-Medium.woff2') format('woff2'), url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-Medium.woff') format('woff');font-stretch:normal;}
@font-face{font-family:"Centra No2";font-style:italic;font-weight:500;font-display:block;src:url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-MediumItalic.woff2') format('woff2'), url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-MediumItalic.woff') format('woff');font-stretch:normal;}
@font-face{font-family:"Centra No2";font-style:normal;font-weight:700;font-display:block;src:url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-Bold.woff2') format('woff2'), url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-Bold.woff') format('woff');font-stretch:normal;}
@font-face{font-family:"Centra No2";font-style:italic;font-weight:700;font-display:block;src:url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-BoldItalic.woff2') format('woff2'), url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraNo.2-BoldItalic.woff') format('woff');font-stretch:normal;}
@font-face{font-family:"Centra Mono";font-style:normal;font-weight:400;font-display:block;src:url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraMono-Book.woff2') format('woff2'), url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraMono-Book.woff') format('woff');font-stretch:normal;}
@font-face{font-family:"Centra Mono";font-style:normal;font-weight:500;font-display:block;src:url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraMono-Medium.woff2') format('woff2'), url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraMono-Medium.woff') format('woff');font-stretch:normal;}
@font-face{font-family:"Centra Mono";font-style:italic;font-weight:500;font-display:block;src:url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraMono-MediumItalic.woff2') format('woff2'), url('https://insideelections.com/wp-content/themes/inside-elections/assets/fonts/CentraMono-MediumItalic.woff') format('woff');font-stretch:normal;}
</style>
	</head>

	<body class="error404 wp-theme-inside-elections d-flex flex-column min-vh-100" style="background-color:#FFFFFF">
								<header id="site-header" class="site-header pt-1 pt-md-2 d-flex flex-column d-lg-block  ">
			<div class="mobile-header-row d-flex mr-auto justify-content-between alignwide d-lg-none">
				<a class="text-decoration-none logo mobile-logo " href="/"><b>Inside Elections</b></a>
				<div class="d-flex flex-column align-items-center mobile-header-controls">
					<button id="menu-toggle" class="hamburger hamburger--slider d-block d-lg-none" type="button" aria-label="Toggle navigation menu" aria-expanded="false">
						<span class="hamburger-box">
							<span class="hamburger-inner"></span>
						</span>
					</button>
					<button id="mobile-search-toggle" class="mobile-search-toggle" type="button" aria-label="Toggle search" aria-expanded="false">
						<svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
							<path fill-rule="evenodd" clip-rule="evenodd" d="M10.4984 3.4844C11.2217 5.36835 10.825 7.40688 9.63475 8.86613L13.2598 12.8155C13.4513 13.0241 13.4374 13.3485 13.2288 13.54L12.5109 14.1989C12.3023 14.3904 11.9779 14.3765 11.7864 14.1679L8.1039 10.156C7.87344 10.286 7.63061 10.4007 7.37619 10.4984C4.57715 11.5731 1.43688 10.1752 0.362189 7.3762C-0.7125 4.57715 0.685363 1.43688 3.4844 0.362189C6.28344 -0.7125 9.42372 0.685363 10.4984 3.4844ZM5.43021 9.00474C7.40433 9.00474 9.00467 7.4044 9.00467 5.43028C9.00467 3.45616 7.40433 1.85581 5.43021 1.85581C3.45609 1.85581 1.85575 3.45616 1.85575 5.43028C1.85575 7.4044 3.45609 9.00474 5.43021 9.00474Z" fill="currentColor"/>
						</svg>
					</button>
				</div>
			</div>
			<div id="mobile-search" class="mobile-search d-none d-lg-none alignwide">
				<div class="search-form-wrapper alignwide search-page-wrapper">
  <form id="search-form" method="get" class="search-form flex-fill alignnone" action="https://insideelections.com/">
  	  	<label for="search-input-6a4f370da0e83" class="sr-only">Search</label>
  	<div class="input-group d-flex">
  		<input type="search" id="search-input-6a4f370da0e83" class="search-field flex-grow-1 mousetrap form-control" placeholder="Search..." value="" name="s" autocomplete="off" />
  		<span class="input-group-append">
  			<button type="submit" aria-label="submit" class="search-button btn d-flex align-items-center"></button>
  		</span>
  	</div> <!-- .input-group -->
  </form>
</div>			</div>
			<div class="header-top d-flex flex-column flex-lg-row p-rel alignwide flex-grow-1 flex-grow-lg-0 flex-order-1 ">
				<div class="d-flex mr-auto justify-content-between w-100">
					<a class="text-decoration-none logo desktop-logo d-none d-lg-block " href="/"><b>Inside Elections</b></a>
				</div>
				<div class="header-menus">
					<nav id="header-menu-wrapper" class="d-none d-lg-flex align-items-center"><ul id="header-menu" class="header-menu d-flex flex-column flex-lg-row mt-1 mt-lg-0 header-menu-wrapper"><li id="menu-item-9535" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-9535 text-decoration-none white-space-nowrap "><a href="https://insideelections.com/about/">About</a></li>
<li id="menu-item-9534" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-9534 text-decoration-none white-space-nowrap "><a href="https://insideelections.com/ratings/">Ratings</a>
<ul class="sub-menu">
	<li id="menu-item-44449" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-44449"><a href="https://insideelections.com/ratings/house/">House</a></li>
	<li id="menu-item-44448" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-44448"><a href="https://insideelections.com/ratings/senate/">Senate</a></li>
	<li id="menu-item-44447" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-44447"><a href="https://insideelections.com/ratings/governor/">Governor</a></li>
</ul>
</li>
<li id="menu-item-159966" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-159966 text-decoration-none white-space-nowrap "><a href="https://insideelections.com/data/">Data</a></li>
<li id="menu-item-9533" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-9533 text-decoration-none white-space-nowrap "><a href="https://insideelections.com/analysis/">Analysis</a>
<ul class="sub-menu">
	<li id="menu-item-171039" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-171039"><a href="https://insideelections.com/analysis/house/">House</a></li>
	<li id="menu-item-171038" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-171038"><a href="https://insideelections.com/analysis/senate/">Senate</a></li>
	<li id="menu-item-171036" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-171036"><a href="https://insideelections.com/analysis/governor/">Governor</a></li>
	<li id="menu-item-171037" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-171037"><a href="https://insideelections.com/analysis/president/">President</a></li>
</ul>
</li>
<li id="menu-item-177499" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-177499 text-decoration-none white-space-nowrap "><a href="https://insideelections.com/calendar/">Calendar</a></li>
</ul></nav>					<nav id="header-buttons-wrapper" class="d-none d-lg-flex align-items-center"><ul id="header-buttons" class="header-buttons d-flex mt-5 mt-lg-0 ml-lg-2 header-buttons-wrapper"><li id="menu-item-170989" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-170989 text-decoration-none white-space-nowrap "><a href="https://insideelections.com/subscribe/">Subscribe</a></li>
<li id="menu-item-44444" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-44444 text-decoration-none white-space-nowrap "><a href="https://insideelections.com/login/">Login</a></li>
</ul></nav>					<button id="search-toggle" class="ml-auto desktop-search-toggle  search-btn" aria-label="Open search" aria-expanded="false" aria-controls="header-search-bar">
						<svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
							<path fill-rule="evenodd" clip-rule="evenodd" d="M10.4984 3.4844C11.2217 5.36835 10.825 7.40688 9.63475 8.86613L13.2598 12.8155C13.4513 13.0241 13.4374 13.3485 13.2288 13.54L12.5109 14.1989C12.3023 14.3904 11.9779 14.3765 11.7864 14.1679L8.1039 10.156C7.87344 10.286 7.63061 10.4007 7.37619 10.4984C4.57715 11.5731 1.43688 10.1752 0.362189 7.3762C-0.7125 4.57715 0.685363 1.43688 3.4844 0.362189C6.28344 -0.7125 9.42372 0.685363 10.4984 3.4844ZM5.43021 9.00474C7.40433 9.00474 9.00467 7.4044 9.00467 5.43028C9.00467 3.45616 7.40433 1.85581 5.43021 1.85581C3.45609 1.85581 1.85575 3.45616 1.85575 5.43028C1.85575 7.4044 3.45609 9.00474 5.43021 9.00474Z" fill="currentColor"/>
							<path fill-rule="evenodd" clip-rule="evenodd" d="M10.4984 3.4844C11.2217 5.36835 10.825 7.40688 9.63475 8.86613L13.2598 12.8155C13.4513 13.0241 13.4374 13.3485 13.2288 13.54L12.5109 14.1989C12.3023 14.3904 11.9779 14.3765 11.7864 14.1679L8.1039 10.156C7.87344 10.286 7.63061 10.4007 7.37619 10.4984C4.57715 11.5731 1.43688 10.1752 0.362189 7.3762C-0.7125 4.57715 0.685363 1.43688 3.4844 0.362189C6.28344 -0.7125 9.42372 0.685363 10.4984 3.4844ZM5.43021 9.00474C7.40433 9.00474 9.00467 7.4044 9.00467 5.43028C9.00467 3.45616 7.40433 1.85581 5.43021 1.85581C3.45609 1.85581 1.85575 3.45616 1.85575 5.43028C1.85575 7.4044 3.45609 9.00474 5.43021 9.00474Z" fill="currentColor" fill-opacity="0.2"/>
							<path fill-rule="evenodd" clip-rule="evenodd" d="M10.4984 3.4844C11.2217 5.36835 10.825 7.40688 9.63475 8.86613L13.2598 12.8155C13.4513 13.0241 13.4374 13.3485 13.2288 13.54L12.5109 14.1989C12.3023 14.3904 11.9779 14.3765 11.7864 14.1679L8.1039 10.156C7.87344 10.286 7.63061 10.4007 7.37619 10.4984C4.57715 11.5731 1.43688 10.1752 0.362189 7.3762C-0.7125 4.57715 0.685363 1.43688 3.4844 0.362189C6.28344 -0.7125 9.42372 0.685363 10.4984 3.4844ZM5.43021 9.00474C7.40433 9.00474 9.00467 7.4044 9.00467 5.43028C9.00467 3.45616 7.40433 1.85581 5.43021 1.85581C3.45609 1.85581 1.85575 3.45616 1.85575 5.43028C1.85575 7.4044 3.45609 9.00474 5.43021 9.00474Z" fill="currentColor" fill-opacity="0.2"/>
							<path fill-rule="evenodd" clip-rule="evenodd" d="M10.4984 3.4844C11.2217 5.36835 10.825 7.40688 9.63475 8.86613L13.2598 12.8155C13.4513 13.0241 13.4374 13.3485 13.2288 13.54L12.5109 14.1989C12.3023 14.3904 11.9779 14.3765 11.7864 14.1679L8.1039 10.156C7.87344 10.286 7.63061 10.4007 7.37619 10.4984C4.57715 11.5731 1.43688 10.1752 0.362189 7.3762C-0.7125 4.57715 0.685363 1.43688 3.4844 0.362189C6.28344 -0.7125 9.42372 0.685363 10.4984 3.4844ZM5.43021 9.00474C7.40433 9.00474 9.00467 7.4044 9.00467 5.43028C9.00467 3.45616 7.40433 1.85581 5.43021 1.85581C3.45609 1.85581 1.85575 3.45616 1.85575 5.43028C1.85575 7.4044 3.45609 9.00474 5.43021 9.00474Z" fill="currentColor" fill-opacity="0.2"/>
						</svg>
					</button>
					<div id="header-search-bar" class="header-search-bar">
						<div class="search-form-wrapper alignwide search-page-wrapper">
  <form id="search-form" method="get" class="search-form flex-fill alignnone" action="https://insideelections.com/">
  	  	<label for="search-input-6a4f370da1ce8" class="sr-only">Search</label>
  	<div class="input-group d-flex">
  		<input type="search" id="search-input-6a4f370da1ce8" class="search-field flex-grow-1 mousetrap form-control" placeholder="Search..." value="" name="s" autocomplete="off" />
  		<span class="input-group-append">
  			<button type="submit" aria-label="submit" class="search-button btn d-flex align-items-center"></button>
  		</span>
  	</div> <!-- .input-group -->
  </form>
</div>						<button id="search-bar-close" class="search-bar-close" aria-label="Close search">&times;</button>
					</div>
				</div>
			</div>
			<div class="header-bottom">
			<div id="ratings-bar" class="alignwide"></div>
<div id="ratings-total" class="alignwide"></div>
<div class="ratings-bar-tooltip" id="ratings-bar-tooltip" style="display:none"></div>

<script>
(async () => {
  const officeSlugs = ['senate', 'house', 'governor'];
  const siteUrl = window.location.origin;
  const latestByCombo = {};

  // Custom numeric order for rating terms (skip "Not Up This Cycle")
  const ratingOrder = [
    'Solid Democrat',
    'Likely Democrat',
    'Lean Democrat',
    'Lean Independent',
    'Tilt Democrat',
    'Battleground Democrat',
    'Battleground Independent',
    'Toss-up',
    'Battleground Republican',
    'Tilt Republican',
    'Lean Republican',
    'Likely Republican',
    'Solid Republican',
    'No Rating',
  ];

  // Rating term → CSS class map
  const ratingClasses = {
    'Battleground Democrat': 'battle-d',
    'Battleground Republican': 'battle-r',
    'Battleground Independent': 'battle-i',
    'Solid Democrat': 'solid-d',
    'Solid Republican': 'solid-r',
    'Likely Democrat': 'likely-d',
    'Likely Republican': 'likely-r',
    'Lean Democrat': 'lean-d',
    'Lean Independent': 'lean-i',
    'Lean Republican': 'lean-r',
    'Tilt Democrat': 'tilt-d',
    'Tilt Republican': 'tilt-r',
    'Toss-up': 'toss-up',
    'No Rating': 'no-rating',
    'Not Up This Cycle': 'not-up',
  };

  // Rating term → URL slug map
  const ratingUrls = {
    'Battleground Democrat': 'battleground-democrat',
    'Battleground Republican': 'battleground-republican',
    'Battleground Independent': 'battleground-independent',
    'Solid Democrat': 'solid-democrat',
    'Solid Republican': 'solid-republican',
    'Likely Democrat': 'likely-democrat',
    'Likely Republican': 'likely-republican',
    'Lean Democrat': 'lean-democrat',
    'Lean Independent': 'lean-independent',
    'Lean Republican': 'lean-republican',
    'Tilt Democrat': 'tilt-democrat',
    'Tilt Republican': 'tilt-republican',
    'Toss-up': 'toss-up',
    'No Rating': 'no-rating',
  };

  // Normalize rating names from API
  function normalizeRatingName(name) {
    if (!name) return 'No Rating';
    return name
      .trim()
      .replace(/\s+/g, ' ')
      .replace(/Toss[-\s]?Up/i, 'Toss-up')
      .replace(/Lean\sInd/i, 'Lean Independent')
      .replace(/Not Up This Cycle/i, 'Not Up This Cycle');
  }

  // Fetch ratings from each office (public, cached endpoint — no auth required)
  for (const slug of officeSlugs) {
    try {
      const res = await fetch(`${siteUrl}/wp-json/ratings/v1/latest/${slug}/public`);
      if (!res.ok) continue;

      const data = await res.json();
      if (!data.ratings || !Array.isArray(data.ratings)) continue;

      data.ratings.forEach(rating => {
        const comboKey = `${rating.district}-${rating.office_slug}`;
        if (!latestByCombo[comboKey]) {
          latestByCombo[comboKey] = rating;
        }
      });
    } catch (err) {
      console.error(`Error fetching ratings for ${slug}`, err);
    }
  }

  // Group ratings by normalized rating term
  const grouped = {};
  Object.values(latestByCombo).forEach(rating => {
    const ratingNames = rating.ratings && rating.ratings.length ? rating.ratings : ['No Rating'];
    ratingNames.forEach(rawName => {
      const ratingName = normalizeRatingName(rawName);
      if (!grouped[ratingName]) grouped[ratingName] = [];
      grouped[ratingName].push(rating);
    });
  });

  // Debug: log any rating names not in the map
  Object.keys(grouped).forEach(ratingName => {
    if (!ratingClasses[ratingName]) {
      console.warn("⚠️ Unknown rating name from API (mapped):", ratingName);
    }
  });

  // Sort rating terms by custom numeric order
  const sortedRatings = Object.keys(grouped).sort((a, b) => {
    const indexA = ratingOrder.indexOf(a);
    const indexB = ratingOrder.indexOf(b);

    if (indexA === -1 && indexB === -1) return a.localeCompare(b);
    if (indexA === -1) return 1;
    if (indexB === -1) return -1;

    return indexA - indexB;
  });

  // Render row of ratings (skip "Not Up This Cycle" and unknowns)
  const ratingsRow = document.createElement('div');
  ratingsRow.className = 'd-flex alignwide flex-nowrap ratings-row';

  sortedRatings.forEach(ratingName => {
    if (ratingName === 'Not Up This Cycle') return;
    if (!ratingClasses[ratingName]) return;

    const count = grouped[ratingName].length;
    const className = ratingClasses[ratingName];
    const urlSlug = ratingUrls[ratingName];

    const el = urlSlug ? document.createElement('a') : document.createElement('div');
    if (urlSlug) {
      el.href = `${siteUrl}/ie-rating/${urlSlug}/`;
    }
    el.className = `rating-block ${className}`;
    el.style.flexGrow = count;
    el.dataset.rating = ratingName;
    el.dataset.count = count;
    ratingsRow.appendChild(el);
  });

  const bar = document.getElementById('ratings-bar');
  bar.appendChild(ratingsRow);

  // Initial animation
  const ratingBlocks = document.querySelectorAll('.rating-block');
  const centerIndex = Math.floor(ratingBlocks.length / 2);

  ratingBlocks.forEach((block, i) => {
    const offset = Math.abs(i - centerIndex);
    setTimeout(() => {
      block.style.opacity = 1;
      block.style.transform = 'scaleX(1)';
    }, offset * 1);
  });

  // Remove loading bg after all blocks have faded in (max stagger + opacity transition)
  setTimeout(() => {
    bar.style.background = 'none';
    bar.style.animation = 'none';
  }, centerIndex + 300);

  // Tooltip + hover dimming
  const tooltip = document.getElementById('ratings-bar-tooltip');

  ratingsRow.addEventListener('mouseover', e => {
    const block = e.target.closest('.rating-block');
    if (!block) return;

    const ratingName = block.dataset.rating;
    const count = block.dataset.count;
    const className = ratingClasses[ratingName] || '';

    ratingBlocks.forEach(b => {
      b.style.opacity = b.dataset.rating === ratingName ? '1' : '0.4';
    });

    const shortLabel = ratingName.replace('Democrat', 'D').replace('Republican', 'R').replace('Independent', 'I');
    tooltip.className = 'ratings-bar-tooltip';
    tooltip.innerHTML = `<span class="rbt-label ${className}">${shortLabel}</span><span class="rbt-count ${className}">${count}</span>`;
    tooltip.style.display = 'flex';
  });

  ratingsRow.addEventListener('mousemove', e => {
    const rect = ratingsRow.getBoundingClientRect();
    tooltip.style.left = `${e.clientX}px`;
    tooltip.style.top = `${rect.top}px`;
  });

  ratingsRow.addEventListener('mouseleave', () => {
    ratingBlocks.forEach(b => {
      b.style.opacity = '1';
    });
    tooltip.style.display = 'none';
  });

  // document.getElementById('ratings-total').innerHTML = `
  //   <h2>Total Unique District+Office Ratings: ${Object.keys(latestByCombo).length}</h2>
  //   ${debugList}
  // `;
})();
</script>
			<div class="header-byline alignwide">
				Nonpartisan Analysis Since 1980
			</div>
			<div id="mobile-search-bar" class="mobile-search-bar d-none d-lg-none alignwide">
				<div class="search-form-wrapper alignwide search-page-wrapper">
  <form id="search-form" method="get" class="search-form flex-fill alignnone" action="https://insideelections.com/">
  	  	<label for="search-input-6a4f370da1d80" class="sr-only">Search</label>
  	<div class="input-group d-flex">
  		<input type="search" id="search-input-6a4f370da1d80" class="search-field flex-grow-1 mousetrap form-control" placeholder="Search..." value="" name="s" autocomplete="off" />
  		<span class="input-group-append">
  			<button type="submit" aria-label="submit" class="search-button btn d-flex align-items-center"></button>
  		</span>
  	</div> <!-- .input-group -->
  </form>
</div>			</div>
		</div>
		</header>
		

		<main id="page-wrapper" class="entry-content" style="background-color:#fff">
<div class="alignwide mt-4 mb-4">
	<h1 class="mb-1">404: Page Not Found</h1>
	<p class="mb-2">The page you're looking for doesn't exist. Try searching below.</p>
	<div class="search-form-wrapper alignwide search-page-wrapper">
  <form id="search-form" method="get" class="search-form flex-fill alignnone" action="https://insideelections.com/">
  	  	<label for="search-input-6a4f370da1dc6" class="sr-only">Search</label>
  	<div class="input-group d-flex">
  		<input type="search" id="search-input-6a4f370da1dc6" class="search-field flex-grow-1 mousetrap form-control" placeholder="Search..." value="" name="s" autocomplete="off" />
  		<span class="input-group-append">
  			<button type="submit" aria-label="submit" class="search-button btn d-flex align-items-center"></button>
  		</span>
  	</div> <!-- .input-group -->
  </form>
</div></div>

<div class="alignwide">
	
<div class="block-related block-spacer-top is-layout-flow wp-block-ie-related-is-layout-flow">

		<div class="block-related-posts border-top-solid">
		<div class="section-header mb-3">
			<h2>Analysis</h2>
			<a class="button-outline" href="/analysis">View All</a>
		</div>
		<div class="grid grid-gap-3">
							

<div class="post-item pt-1 pb-2 grid-col-12 grid-md-col-6 grid-lg-col-3">
	<h3 class="mb-half h5"><a href="https://insideelections.com/montana-senate-new-poll-confirms-gop-edge/">Montana Senate: New Poll Confirms GOP Edge</a></h3>
	<div class="post-meta">
		<div class="post-date mono small">June 30, 2026</div>
		<div class="post-author">by <a href="https://insideelections.com/author/jacob-rubashkin/">Jacob Rubashkin</a></div>
	</div>
</div>
							

<div class="post-item pt-1 pb-2 grid-col-12 grid-md-col-6 grid-lg-col-3">
	<h3 class="mb-half h5"><a href="https://insideelections.com/2026-gubernatorial-overview-june-25-2026-republican-rebound/">2026 Gubernatorial Overview (June 25, 2026): Republican Rebound?</a></h3>
	<div class="post-meta">
		<div class="post-date mono small">June 25, 2026</div>
		<div class="post-author">by <a href="https://insideelections.com/author/jacob-rubashkin/">Jacob Rubashkin</a>, <a href="https://insideelections.com/author/nathan-l-gonzales/">Nathan Gonzales</a> &amp; <a href="https://insideelections.com/author/inshara-ali/">Inshara Ali</a></div>
	</div>
</div>
							

<div class="post-item pt-1 pb-2 grid-col-12 grid-md-col-6 grid-lg-col-3">
	<h3 class="mb-half h5"><a href="https://insideelections.com/governor-report-shorts-june-25-2026/">Gubernatorial Overview (June 25, 2026)</a></h3>
	<div class="post-meta">
		<div class="post-date mono small">June 25, 2026</div>
		<div class="post-author">by <a href="https://insideelections.com/author/jacob-rubashkin/">Jacob Rubashkin</a>, <a href="https://insideelections.com/author/nathan-l-gonzales/">Nathan Gonzales</a> &amp; <a href="https://insideelections.com/author/inshara-ali/">Inshara Ali</a></div>
	</div>
</div>
							

<div class="post-item pt-1 pb-2 grid-col-12 grid-md-col-6 grid-lg-col-3">
	<h3 class="mb-half h5"><a href="https://insideelections.com/senate-report-shorts-june-25-2026/">Senate Report Shorts (June 25, 2026)</a></h3>
	<div class="post-meta">
		<div class="post-date mono small">June 25, 2026</div>
		<div class="post-author">by <a href="https://insideelections.com/author/jacob-rubashkin/">Jacob Rubashkin</a>, <a href="https://insideelections.com/author/nathan-l-gonzales/">Nathan Gonzales</a> &amp; <a href="https://insideelections.com/author/inshara-ali/">Inshara Ali</a></div>
	</div>
</div>
					</div>
	</div>
	
		<div class="block-related-podcasts border-top-solid mt-4">
		<div class="section-header mb-3">
			<h2>Podcasts</h2>
			<a class="button-outline" href="https://inside-elections.captivate.fm" target="_blank">Listen</a>
		</div>
		<div class="grid grid-gap-3">
							
<article class="d-flex flex-column podcast-card grid-col-12 grid-lg-col-6 grid-xl-col-3 border-radius h-fit-content mb-4">

		<a href="https://insideelections.com/podcast/podcast-episode-74-inside-capitol-hill-and-midterm-elections-w-manu-raju-of-cnn/" class="podcast-thumb mb-1p5 logo-white">
					<img width="428" height="428" src="https://insideelections.com/wp-content/uploads/2026/06/2000083-3232-r-ps2560x1440-ezgif.com-jpg-to-webp-converter-1.webp" class="img-fluid w-100 wp-post-image" alt="Podcast Episode 74: Inside Capitol Hill and Midterm Elections w/ Manu Raju of CNN" decoding="async" fetchpriority="high" />			</a>

	<h3 class="h5 post-title">
		<a href="https://insideelections.com/podcast/podcast-episode-74-inside-capitol-hill-and-midterm-elections-w-manu-raju-of-cnn/">
			Podcast Episode 74: Inside Capitol Hill and Midterm Elections w/ Manu Raju of CNN		</a>
	</h3>

	<div class="post-meta mt-1">
		<time datetime="2026-06-30">June 30, 2026</time>
	</div>
</article>							
<article class="d-flex flex-column podcast-card grid-col-12 grid-lg-col-6 grid-xl-col-3 border-radius h-fit-content mb-4">

		<a href="https://insideelections.com/podcast/podcast-episode-73-maryland-primary-matters-w-pamela-wood-of-the-banner/" class="podcast-thumb mb-1p5 logo-white">
					<img width="1715" height="1715" src="https://insideelections.com/wp-content/uploads/2026/06/pam-wood-balt-banner-headshot-scaled-crop-ezgif.com-optiwebp.webp" class="img-fluid w-100 wp-post-image" alt="Podcast Episode 73: Maryland (Primary) Matters w/ Pamela Wood of The Banner" decoding="async" srcset="https://insideelections.com/wp-content/uploads/2026/06/pam-wood-balt-banner-headshot-scaled-crop-ezgif.com-optiwebp.webp 1715w, https://insideelections.com/wp-content/uploads/2026/06/pam-wood-balt-banner-headshot-scaled-crop-ezgif.com-optiwebp-768x768.webp 768w, https://insideelections.com/wp-content/uploads/2026/06/pam-wood-balt-banner-headshot-scaled-crop-ezgif.com-optiwebp-1536x1536.webp 1536w" sizes="(max-width: 1715px) 100vw, 1715px" />			</a>

	<h3 class="h5 post-title">
		<a href="https://insideelections.com/podcast/podcast-episode-73-maryland-primary-matters-w-pamela-wood-of-the-banner/">
			Podcast Episode 73: Maryland (Primary) Matters w/ Pamela Wood of The Banner		</a>
	</h3>

	<div class="post-meta mt-1">
		<time datetime="2026-06-18">June 18, 2026</time>
	</div>
</article>							
<article class="d-flex flex-column podcast-card grid-col-12 grid-lg-col-6 grid-xl-col-3 border-radius h-fit-content mb-4">

		<a href="https://insideelections.com/podcast/podcast-episode-72-new-york-new-york-primaries-w-jeff-coltin-of-city-state/" class="podcast-thumb mb-1p5 logo-white">
					<img width="729" height="729" src="https://insideelections.com/wp-content/uploads/2026/05/original-ezgif.com-jpg-to-webp-converter.webp" class="img-fluid w-100 wp-post-image" alt="Podcast Episode 72: New York! New York! Primaries w/ Jeff Coltin of City &amp; State" decoding="async" />			</a>

	<h3 class="h5 post-title">
		<a href="https://insideelections.com/podcast/podcast-episode-72-new-york-new-york-primaries-w-jeff-coltin-of-city-state/">
			Podcast Episode 72: New York! New York! Primaries w/ Jeff Coltin of City &amp; State		</a>
	</h3>

	<div class="post-meta mt-1">
		<time datetime="2026-05-28">May 28, 2026</time>
	</div>
</article>							
<article class="d-flex flex-column podcast-card grid-col-12 grid-lg-col-6 grid-xl-col-3 border-radius h-fit-content mb-4">

		<a href="https://insideelections.com/podcast/which-nebraska-republicans-might-lose-w-aaron-sanderford-of-nebraska-examiner/" class="podcast-thumb mb-1p5 logo-white">
					<img width="960" height="960" src="https://insideelections.com/wp-content/uploads/2026/05/AaronSanderford.png" class="img-fluid w-100 wp-post-image" alt="Podcast Episode 71: Which Nebraska Republicans Might Lose? w/ Aaron Sanderford of Nebraska Examiner" decoding="async" />			</a>

	<h3 class="h5 post-title">
		<a href="https://insideelections.com/podcast/which-nebraska-republicans-might-lose-w-aaron-sanderford-of-nebraska-examiner/">
			Podcast Episode 71: Which Nebraska Republicans Might Lose? w/ Aaron Sanderford of Nebraska Examiner		</a>
	</h3>

	<div class="post-meta mt-1">
		<time datetime="2026-05-15">May 15, 2026</time>
	</div>
</article>					</div>
	</div>
	
		<div class="block-related-coverage border-top-solid mt-4">
		<div class="section-header mb-3">
			<h2>Coverage</h2>
		</div>
		<div class="grid grid-gap-3">
							

<a href="https://www.kentucky.com/news/politics-government/election/article315807713.html" target="_blank" rel="noopener noreferrer" class="post-item pt-1 pb-2 grid-col-12 grid-md-col-6 grid-lg-col-3" style="display:block;text-decoration:none;">
	<h3 class="mb-half h5">Daniel Cameron looks to faith as GOP Senate race comes to a close on Election Day</h3>
	<div class="post-meta">
		<div class="post-date mono small">May 26, 2026</div>
		<div class="post-source"><img src="https://insideelections.com/wp-content/uploads/2026/06/logo-ezgif.com-gif-maker.webp" alt="Lexington Herald-Leader" style="width:100px;height:50px;object-fit:contain;"></div>	</div>
</a>
					</div>
	</div>
	
</div>
</div>

    </main>
            <footer id="site-footer" class="mt-auto has-black-color has-white-background-color pt-5 pb-5">
        <div class="alignwide footer-top-navs d-flex flex-column flex-lg-row">
            <div class="logo-column">
                <a class="text-decoration-none" href="/">
                    <span class="stacked-logo">Inside Elections</span>
                    <strong class="tagline bold">Nonpartisan Analysis Since 1980</strong>
                </a>
            </div>
			<div class="navs-column d-flex flex-column flex-lg-row pt-1p5 pt-lg-0 border-top-2 border-lightgray border-top-lg-none">
				<nav><ul class="footer-primary"><li id="menu-item-44411" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-44411"><a href="https://insideelections.com/about/">About</a></li>
<li id="menu-item-44414" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-44414"><a href="https://insideelections.com/ratings/">Ratings</a></li>
<li id="menu-item-159967" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-159967"><a href="https://insideelections.com/data/">Data</a></li>
<li id="menu-item-44413" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-44413"><a href="https://insideelections.com/analysis/">Analysis</a></li>
<li id="menu-item-177532" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-177532"><a href="https://insideelections.com/calendar/">Calendar</a></li>
<li id="menu-item-44416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-44416"><a href="https://inside-elections.dashery.com/">Merch</a></li>
<li id="menu-item-198864" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-198864"><a href="https://insideelections.com/media/">Media</a></li>
</ul></nav>				<div class="social-and-buttons d-flex mt-3 mt-lg-0 pt-1p5 pt-lg-0 border-top-2 border-lightergray border-top-lg-none">
						<nav><ul class="d-flex flex-column flex-gap footer-social"><li id="menu-item-44418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-44418"><a href="/cdn-cgi/l/email-protection#5831363e371831362b313c3d3d343d3b2c3137362b763b3735">Email</a></li>
<li id="menu-item-44419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-44419"><a href="https://x.com/InsideElections">Twitter (X)</a></li>
<li id="menu-item-44420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-44420"><a href="https://www.youtube.com/channel/UCAp45shf4u1z-a6n2CrudzA">YouTube</a></li>
</ul></nav><nav><ul class="d-flex flex-column flex-gap footer-buttons"><li id="menu-item-44422" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-44422"><a href="/subscribe">Subscribe</a></li>
<li id="menu-item-177614" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-177614"><a href="https://insideelections.com/login/">Login</a></li>
</ul></nav>				</div>
			</div>
        </div>
        <div id="ratings-footer-container" style="display: flex; flex-direction: column; gap: 0; padding-top: 30px; width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw;">
  <!-- Placeholder bars with animated gradient -->
  <div class="footer-bar-placeholder" style="position: relative; width: 100%; height: 45px; background: linear-gradient(270deg, #ccc, #eee, #ccc); background-size: 600% 100%; animation: gradient-slide 2s ease infinite;">
    <a class="footer-bar-button" href="/ratings/">All Ratings</a>
  </div>
    <div class="footer-bar-placeholder" style="position: relative; width: 100%; height: 45px; background: linear-gradient(270deg, #ccc, #eee, #ccc); background-size: 600% 100%; animation: gradient-slide 2s ease infinite;">
    <a class="footer-bar-button" href="/ratings/senate/">Senate Ratings</a>
  </div>
  <div class="footer-bar-placeholder" style="position: relative; width: 100%; height: 45px; background: linear-gradient(270deg, #ccc, #eee, #ccc); background-size: 600% 100%; animation: gradient-slide 2s ease infinite;">
    <a class="footer-bar-button" href="/ratings/house/">House Ratings</a>
  </div>
  <div class="footer-bar-placeholder" style="position: relative; width: 100%; height: 45px; background: linear-gradient(270deg, #ccc, #eee, #ccc); background-size: 600% 100%; animation: gradient-slide 2s ease infinite;">
    <a class="footer-bar-button" href="/ratings/governor/">Governor Ratings</a>
  </div>
</div>

<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
(async () => {
  const offices = [
        { slug: 'senate', label: 'Senate' },
    { slug: 'house', label: 'House' },
    { slug: 'governor', label: 'Governor' }
  ];
  const siteUrl = window.location.origin;
  const latestByOffice = {};

  // Fetch ratings for each office
  for (const office of offices) {
    latestByOffice[office.slug] = {};

    try {
      let url = `${siteUrl}/wp-json/ratings/v1/latest/${office.slug}/public`;
      const res = await fetch(url);
      if (!res.ok) continue;

      const data = await res.json();
      if (!data.ratings || !Array.isArray(data.ratings)) continue;

      // Group by district + office_slug so we only get one entry per combo
      data.ratings.forEach(rating => {
        const comboKey = `${rating.district}-${rating.office_slug}`;
        if (!latestByOffice[office.slug][comboKey]) {
          latestByOffice[office.slug][comboKey] = rating;
        }
      });
    } catch (err) {
      console.error(`Error fetching ratings for ${office.slug}`, err);
    }
  }

  // Rating spectrum order (excluding Not Up This Cycle)
  const ratingSpectrum = [
    'Solid Democrat',
    'Currently Safe Democrat',
    'Likely Democrat',
    'Lean Democrat',
    'Tilt Democrat',
    'Toss-up',
    'Tilt Republican',
    'Lean Republican',
    'Likely Republican',
    'Solid Republican',
    'Currently Safe Republican'
  ];

  const container = document.getElementById('ratings-footer-container');
  const placeholders = container.querySelectorAll('.footer-bar-placeholder');

  // Create "See All Ratings" row (combined bar of all offices)
  const allRatingsRow = document.createElement('div');
  allRatingsRow.style.cssText = 'position: absolute; top: 0; left: 0; width: 100%; height: 45px;';

  // Create combined bar of all offices (excluding Not Up This Cycle)
  const allRatings = [];
  Object.values(latestByOffice).forEach(ratingsMap => {
    Object.values(ratingsMap).forEach(r => {
      let label = r.ratings?.[0]?.trim() ?? '';
      // Exclude "Not Up This Cycle"
      if (label !== 'Not Up This Cycle') {
        allRatings.push({ ...r, rating_label: label });
      }
    });
  });

  const allRatingCounts = {};
  ratingSpectrum.forEach(r => allRatingCounts[r] = 0);
  allRatings.forEach(r => {
    if (r.rating_label && allRatingCounts[r.rating_label] !== undefined) {allRatingCounts[r.rating_label]++;}
  });

  const allBar = document.createElement('div');
  allBar.style.cssText = 'display: flex; height: 45px; width: 100%;';
  allBar.className = 'footer-bar';
  allBar.setAttribute('role', 'img');
  allBar.setAttribute('aria-label', 'All ratings distribution: ' + ratingSpectrum.filter(r => allRatingCounts[r] > 0).map(r => allRatingCounts[r] + ' ' + r).join(', '));

  ratingSpectrum.forEach(rating => {
    const count = allRatingCounts[rating];
    if (count === 0) return;

    const segment = document.createElement('div');
    segment.style.flex = count;
    segment.style.backgroundColor = getColorForRating(rating);
    segment.style.opacity = 0;
    segment.style.transform = 'scaleX(0)';
    segment.style.transformOrigin = 'center';
    segment.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
    segment.setAttribute('aria-hidden', 'true');
    allBar.appendChild(segment);
  });

  allRatingsRow.appendChild(allBar);

  // Append to first placeholder
  if (placeholders[0]) {placeholders[0].appendChild(allRatingsRow);}

  // Create row for each office and map to correct placeholder
  offices.forEach((office, index) => {
    const ratingsMap = latestByOffice[office.slug];
    const ratings = Object.values(ratingsMap);
    if (!ratings.length) return;

    // Filter out "Not Up This Cycle" ratings
    const normalizedRatings = ratings
      .map(r => {
        let label = r.ratings?.[0]?.trim() ?? '';
        return { ...r, rating_label: label };
      })
      .filter(r => r.rating_label !== 'Not Up This Cycle');

    // Count by rating
    const ratingCounts = {};
    ratingSpectrum.forEach(r => ratingCounts[r] = 0);
    normalizedRatings.forEach(r => {
      if (r.rating_label && ratingCounts[r.rating_label] !== undefined) {ratingCounts[r.rating_label]++;}
    });

    // Create row
    const row = document.createElement('div');
    row.style.cssText = 'position: absolute; top: 0; left: 0; width: 100%; height: 45px;';

    // Bar
    const bar = document.createElement('div');
    bar.style.cssText = 'display: flex; height: 45px; width: 100%;';
    bar.className = 'footer-bar';
    bar.setAttribute('role', 'img');
    bar.setAttribute('aria-label', office.label + ' ratings distribution: ' + ratingSpectrum.filter(r => ratingCounts[r] > 0).map(r => ratingCounts[r] + ' ' + r).join(', '));

    ratingSpectrum.forEach(rating => {
      const count = ratingCounts[rating];
      if (count === 0) return;

      const segment = document.createElement('div');
      segment.style.flex = count;
      segment.style.backgroundColor = getColorForRating(rating);
      segment.style.opacity = 0;
      segment.style.transform = 'scaleX(0)';
      segment.style.transformOrigin = 'center';
      segment.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
      segment.setAttribute('aria-hidden', 'true');
      bar.appendChild(segment);
    });

    row.appendChild(bar);

    // Append to corresponding placeholder (index + 1 because first placeholder is "all ratings")
    const placeholderIndex = index + 1;
    if (placeholders[placeholderIndex]) {placeholders[placeholderIndex].appendChild(row);}
  });

  // Staggered loading animation from center outward
  const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
  const allBars = document.querySelectorAll('.footer-bar');
  allBars.forEach(bar => {
    const segments = bar.children;
    const centerIndex = Math.floor(segments.length / 2);

    Array.from(segments).forEach((segment, i) => {
      if (reducedMotion) {
        segment.style.opacity = 1;
        segment.style.transform = 'scaleX(1)';
      } else {
        const offset = Math.abs(i - centerIndex);
        setTimeout(() => {
          segment.style.opacity = 1;
          segment.style.transform = 'scaleX(1)';
        }, offset * 1);
      }
    });
  });

  // Helper function for colors using CSS variables from theme.json
  function getColorForRating(rating) {
    // Get CSS variable values from document root
    const styles = getComputedStyle(document.documentElement);

    switch(rating) {
      case 'Not Up This Cycle - Democrat':
      case 'Not Up This Cycle - Republican':
        return styles.getPropertyValue('--wp--preset--color--gray').trim() || '#B8B8B8';
      case 'Solid Democrat':
      case 'Currently Safe Democrat':
        return styles.getPropertyValue('--wp--preset--color--democrat-blue').trim() || '#356DB7';
      case 'Likely Democrat':
        return styles.getPropertyValue('--wp--preset--color--likely-blue').trim() || '#6996D1';
      case 'Lean Democrat':
        return styles.getPropertyValue('--wp--preset--color--lean-blue').trim() || '#A9CAF6';
      case 'Tilt Democrat':
        return styles.getPropertyValue('--wp--preset--color--tilt-blue').trim() || '#CEE3FF';
      case 'Toss-up':
        return styles.getPropertyValue('--wp--preset--color--yellow').trim() || '#FFEF4D';
      case 'Tilt Republican':
        return styles.getPropertyValue('--wp--preset--color--tilt-red').trim() || '#FFD8D9';
      case 'Lean Republican':
        return styles.getPropertyValue('--wp--preset--color--lean-red').trim() || '#F6A7AB';
      case 'Likely Republican':
        return styles.getPropertyValue('--wp--preset--color--likely-red').trim() || '#EF8288';
      case 'Solid Republican':
      case 'Currently Safe Republican':
        return styles.getPropertyValue('--wp--preset--color--republican-red').trim() || '#D42D35';
      default:
        return styles.getPropertyValue('--wp--preset--color--light-gray').trim() || '#D4D4D4';
    }
  }
})();
</script>        <div class="footer-tertiary alignwide flex-column flex-lg-row flex-gap mt-3 d-none d-lg-flex">
            <div class="d-flex flex-gap flex-grow flex-gap-5">
				<p>&copy; Copyright 2026 Inside Elections</p>
								            </div>
			<div>
				<p>Design & Development by <a href="https://partnerandpartners.com" target="_blank">Partner & Partners</a></p>
			</div>
        </div>
    </footer>
        <script type="speculationrules">
{"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/inside-elections/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script id="wp-emoji-settings" type="application/json">
{"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://insideelections.com/wp-includes/js/wp-emoji-release.min.js"}}
</script>
<script type="module">
/*! This file is auto-generated */
const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,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 a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[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,a){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!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));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(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});
//# sourceURL=https://insideelections.com/wp-includes/js/wp-emoji-loader.min.js
</script>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a1850fb2deffe14c',t:'MTc4MzU3NjMzMw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>