﻿*,*::before,*::after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;line-height:1.5}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}@font-face{font-family:"Rock Salt";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/RockSalt/RockSalt-Regular.ttf") format("truetype")}:root{--color-text-primary: #1a1a1a;--color-text-secondary: #666666;--color-text-muted: #888888;--color-background-page: #ffffff;--color-background-card: #f9f9f9;--color-background-card-hover: #f9f9f9;--color-background-capsule: #e0e0e0;--color-background-capsule-hover: #f0f0f0;--color-brand-primary: #2c5f9e;--color-brand-secondary: #e63946;--color-party-democrat: #0015BC;--color-party-republican: #E81B23;--color-border-light: #e0e0e0;--color-border-card: #e0e0e0;--color-table-header-bg: #f5f5f5;--color-table-header-hover: #3d74b8;--color-table-stripe: #f5f5f5;--color-progressive-incumbent: #B4EEEF;--color-special-election: #ff6b35;--color-special-election-winner: #2e9e3f;--color-link-table: var(--color-text-primary);--color-page-menu-bg: #d0d0d0;--color-page-menu-link: #1a1a1a;--color-page-menu-separator: #666666;--color-overlay-text-bg: rgba(0, 0, 0, 0.6);--color-text-shadow: rgba(0, 0, 0, 0.8);--shadow-light: rgba(0, 0, 0, 0.1);--shadow-medium: rgba(0, 0, 0, 0.15);--org-color-track-aipac: hsl(210, 55%, 75%);--org-color-leaders-we-deserve: hsl(280, 60%, 78%);--org-color-our-revolution: hsl(200, 65%, 72%);--org-color-sunrise-movement: hsl(45, 85%, 70%);--org-color-dsa: hsl(355, 75%, 72%);--org-color-pda: hsl(0, 0%, 85%);--org-color-working-families-party: hsl(270, 55%, 77%);--org-color-justice-democrats: hsl(208, 70%, 60%);--org-color-bernie-sanders: hsl(208, 70%, 75%);--org-color-courage-for-democracy: hsl(25, 80%, 78%);--org-color-cpc-pac: hsl(29, 69%, 55%);--org-color-national-ground-game: hsl(160, 58%, 73%);--org-color-nnu: hsl(0, 70%, 90%);--org-color-peace-action: hsl(135, 60%, 75%);--org-color-jvp-action: hsl(175, 55%, 74%);--org-color-indivisible: hsl(240, 45%, 78%);--org-color-moveon: hsl(195, 50%, 76%);--org-color-integrity-index: hsl(150, 55%, 70%);--org-color-progressive-victory: hsl(207, 66%, 75%);--badge-aipac-approved: hsl(140, 50%, 45%);--badge-aipac-needs-improvement: hsl(45, 90%, 50%);--badge-aipac-not-approved: hsl(0, 65%, 50%)}@media(prefers-color-scheme: dark){:root{--color-text-primary: #e8e8e8;--color-text-secondary: #a0a0a0;--color-text-muted: #808080;--color-background-page: #1a1a1a;--color-background-card: #2a2a2a;--color-background-card-hover: #333333;--color-background-capsule: #303030;--color-background-capsule-hover: #202020;--color-brand-primary: #5a9bd5;--color-brand-secondary: #ff6b77;--color-party-democrat: #4d7cff;--color-party-republican: #ff5a61;--color-border-light: #404040;--color-border-card: #404040;--color-table-header-bg: #2d2d2d;--color-table-header-hover: #4782ba;--color-table-stripe: #252525;--color-progressive-incumbent: #1a3435;--color-special-election: #ff6b35;--color-special-election-winner: #3ab54a;--color-link-table: var(--color-text-primary);--color-page-menu-bg: #2a2a2a;--color-page-menu-link: #e8e8e8;--color-page-menu-separator: #a0a0a0;--color-overlay-text-bg: rgba(0, 0, 0, 0.8);--color-text-shadow: rgba(0, 0, 0, 0.95);--shadow-light: rgba(255, 255, 255, 0.05);--shadow-medium: rgba(255, 255, 255, 0.08);--org-color-track-aipac: hsl(210, 55%, 60%);--org-color-leaders-we-deserve: hsl(280, 60%, 63%);--org-color-our-revolution: hsl(200, 65%, 57%);--org-color-sunrise-movement: hsl(45, 85%, 55%);--org-color-dsa: hsl(355, 75%, 57%);--org-color-pda: hsl(0, 0%, 45%);--org-color-working-families-party: hsl(270, 55%, 62%);--org-color-justice-democrats: hsl(208, 70%, 50%);--org-color-bernie-sanders: hsl(208, 70%, 60%);--org-color-courage-for-democracy: hsl(25, 80%, 63%);--org-color-cpc-pac: hsl(29, 69%, 50%);--org-color-national-ground-game: hsl(160, 58%, 58%);--org-color-nnu: hsl(0, 70%, 57%);--org-color-peace-action: hsl(135, 60%, 60%);--org-color-jvp-action: hsl(175, 55%, 59%);--org-color-indivisible: hsl(240, 45%, 63%);--org-color-moveon: hsl(195, 50%, 61%);--org-color-integrity-index: hsl(150, 55%, 55%);--org-color-progressive-victory: hsl(207, 66%, 60%);--badge-aipac-approved: hsl(140, 50%, 55%);--badge-aipac-needs-improvement: hsl(45, 90%, 60%);--badge-aipac-not-approved: hsl(0, 65%, 60%)}}.party-democrat{color:var(--color-party-democrat)}.party-republican{color:var(--color-party-republican)}a[href^="https://www.fec.gov/"],a[href^="https://ballotpedia.org/"]{display:inline-block;padding:0 .4em;background-color:var(--color-background-capsule);color:var(--color-text-secondary);border-radius:9999px;font-size:.85em;font-weight:400;font-style:normal;text-decoration:none !important;transition:background-color .15s ease,color .15s ease;hyphens:none}a[href^="https://www.fec.gov/"]:hover,a[href^="https://ballotpedia.org/"]:hover{background-color:var(--color-background-capsule-hover);color:var(--color-text-primary)}html{scroll-behavior:smooth}body{display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;color:var(--color-text-primary);background-color:var(--color-background-page)}main{flex:1}.page-menu{background-color:var(--color-page-menu-bg);padding:.3rem 0;text-align:center;width:100%}.page-menu .page-menu-content{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:.5rem}.page-menu a{color:var(--color-page-menu-link);text-decoration:none;font-size:1rem;transition:color .2s ease}.page-menu a:hover{color:var(--color-brand-primary);text-decoration:underline}.page-menu .separator{color:var(--color-page-menu-separator);user-select:none}.container{max-width:1200px;margin:0 auto;padding:2rem}footer{margin-top:auto;padding:2rem;background-color:var(--color-text-primary);color:var(--color-background-page)}footer a{color:var(--color-background-page);text-decoration:underline}footer a:hover{opacity:.8}.hero{margin:0;padding:0;text-align:center;position:relative;min-height:400px;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden}.hero .hero-bg{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}.hero .hero-bg img{width:100%;height:100%;object-fit:cover;object-position:center}.hero .hero-content{position:relative;z-index:1;padding:0 2rem;width:100%}.hero h1{font-family:"Rock Salt",cursive;font-size:3.5rem;color:#fff;margin-bottom:1.5rem;text-shadow:2px 2px 8px var(--color-text-shadow),4px 4px 12px var(--color-overlay-text-bg)}.hero p{font-size:1.25rem;color:#fff;max-width:600px;margin:0 auto;padding:1rem 1.5rem;background-color:var(--color-overlay-text-bg);border-radius:8px;line-height:1.6}.candidates-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));gap:2rem;margin-top:3rem}.candidate-card{padding:1.5rem;border:1px solid var(--color-border-card);border-radius:8px;background-color:var(--color-background-card)}.candidate-card h3{font-size:1.5rem;margin-bottom:.5rem;color:var(--color-brand-primary)}.candidate-card p{color:var(--color-text-secondary)}@media(max-width: 768px){.hero{padding:0 1rem;min-height:300px}.hero h1{font-size:2rem}.hero p{font-size:1rem;padding:.75rem 1rem}.container{padding:1rem}}@media(max-width: 500px){.page-menu a{font-size:.8rem}}.photo-line{width:100%;margin:0;padding:0;display:grid;grid-template-columns:repeat(12, 1fr);gap:0}.photo-line .photo-line-item{display:block;text-decoration:none;margin:0;padding:0;aspect-ratio:1/1;overflow:hidden;transition:opacity .2s ease}.photo-line .photo-line-item:hover{opacity:.85;cursor:pointer}.photo-line .photo-line-item img{width:100%;height:100%;object-fit:cover;object-position:center 30%;display:block}@media(max-width: 768px){.photo-line{grid-template-columns:repeat(6, 1fr);grid-template-rows:repeat(2, 1fr)}}section{margin:4rem 0}section h2{font-size:2rem;color:var(--color-brand-primary);margin-bottom:1.5rem;border-bottom:2px solid var(--color-brand-secondary);padding-bottom:.5rem;max-width:800px;margin-left:auto;margin-right:auto}section h3{font-size:1.5rem;color:var(--color-text-primary);margin:2rem 0 1rem}section>p{max-width:800px;margin-left:auto;margin-right:auto;margin-bottom:1rem;line-height:1.7}.introduction,.progressive-definition{max-width:800px;margin-left:auto;margin-right:auto}.introduction p,.progressive-definition p{margin-bottom:1rem;line-height:1.7}.last-updated{font-size:.9rem;color:var(--color-text-muted);font-style:italic;margin-bottom:2rem}.progressive-incumbent{background:var(--color-progressive-incumbent)}.principles-grid{display:grid;grid-template-columns:1fr;gap:.75rem;margin:1.5rem 0}@media(min-width: 900px){.principles-grid{grid-template-columns:1fr 1fr}}.principles-grid .principle-item{display:grid;grid-template-columns:1fr;gap:.25rem;align-items:start}@media(min-width: 900px){.principles-grid .principle-item{grid-column:span 2;grid-template-columns:1fr 1.2fr;gap:1rem}}.principles-grid .principle-title{font-weight:600;line-height:1.6;color:var(--color-text-primary);padding-left:1.75rem;position:relative}.principles-grid .principle-title::before{content:"✓";position:absolute;left:0;color:var(--color-brand-primary);font-weight:bold;font-size:1.2rem}.principles-grid .principle-support{font-size:.85rem;line-height:1.6;color:var(--color-text-secondary)}.principles-grid .principle-support a{color:var(--color-brand-primary);text-decoration:none;margin-left:.25rem}.principles-grid .principle-support a:hover{text-decoration:underline}.org-track-aipac{background-color:var(--org-color-track-aipac)}.org-leaders-we-deserve{background-color:var(--org-color-leaders-we-deserve)}.org-our-revolution{background-color:var(--org-color-our-revolution)}.org-sunrise-movement{background-color:var(--org-color-sunrise-movement)}.org-dsa{background-color:var(--org-color-dsa)}.org-pda{background-color:var(--org-color-pda)}.org-pda img{padding:8%;background:#fff;border-radius:4px}.org-working-families-party{background-color:var(--org-color-working-families-party)}.org-justice-democrats{background-color:var(--org-color-justice-democrats)}.org-bernie-sanders{background-color:var(--org-color-bernie-sanders)}.org-courage-for-democracy{background-color:var(--org-color-courage-for-democracy)}.org-cpc-pac{background-color:var(--org-color-cpc-pac)}.org-national-ground-game{background-color:var(--org-color-national-ground-game)}.org-nnu{background-color:var(--org-color-nnu)}.org-peace-action{background-color:var(--org-color-peace-action)}.org-jvp-action{background-color:var(--org-color-jvp-action)}.org-jvp-action img{padding:8%;background:#fff;border-radius:4px}.org-indivisible{background-color:var(--org-color-indivisible)}.org-moveon{background-color:var(--org-color-moveon)}.org-integrity-index{background-color:var(--org-color-integrity-index)}.org-progressive-victory{background-color:var(--org-color-progressive-victory)}.integrity-badge{display:inline-block;text-decoration:none;vertical-align:middle;color:inherit;margin-left:.25em;transition:transform .2s ease,opacity .2s ease}.integrity-badge:hover{transform:scale(1.1);opacity:.9}.integrity-badge:visited{color:inherit}.integrity-badge .badge-content{display:inline-flex;align-items:center;justify-content:center;width:1.9em;height:1.9em;border-radius:50%;font-weight:bold;text-shadow:0 1px 2px rgba(0,0,0,.3);vertical-align:middle}.integrity-badge .grade-a{background:linear-gradient(135deg, #126d34, #1a9948);color:#fff}.integrity-badge .grade-b{background:linear-gradient(135deg, #82bd28, #9bd742);color:#fff}.integrity-badge .grade-c{background:linear-gradient(135deg, #fc0, #ffd633);color:#1f2937}.integrity-badge .grade-d{background:linear-gradient(135deg, #ff8000, #f93);color:#fff}.integrity-badge .grade-f{background:linear-gradient(135deg, #981b1b, #c32222);color:#fff}.aipac-badge{display:inline-block;width:.65em;height:.65em;border-radius:50%;padding:.195em;line-height:0;vertical-align:middle;box-sizing:content-box;opacity:.75;text-decoration:none;margin-left:.25em;transition:transform .2s ease,opacity .2s ease}.aipac-badge:hover{transform:scale(1.1);opacity:.9}.aipac-badge.aipac-approved{background-color:var(--badge-aipac-approved)}.aipac-badge.aipac-approved .badge-icon{stroke:#fff}.aipac-badge.aipac-needs-improvement{background-color:var(--badge-aipac-needs-improvement)}.aipac-badge.aipac-needs-improvement .badge-icon{stroke:#000}.aipac-badge.aipac-not-approved{background-color:var(--badge-aipac-not-approved)}.aipac-badge.aipac-not-approved .badge-icon{stroke:#fff}.aipac-badge .badge-icon{width:100%;height:100%;display:block;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, 0.15))}.incumbent-badges{display:inline;white-space:nowrap}.incumbent-badges .integrity-badge{font-size:.55em;opacity:.75}.candidate-card .candidate-incumbent .incumbent-badges{font-size:1.2em}.candidate-card .candidate-info h3 .integrity-badge{font-size:.5em;opacity:.85}table .incumbent-badges{font-size:1em}table td[data-candidate] .integrity-badge{font-size:.55em;opacity:.75}.org-cards-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(225px, 1fr));gap:1.5rem;margin-top:2rem}.org-card{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1.5rem;border-radius:8px;box-shadow:0 2px 8px var(--shadow-light);transition:transform .2s ease,box-shadow .2s ease}.org-card:hover{transform:translateY(-4px);box-shadow:0 4px 12px var(--shadow-medium)}.org-card{text-decoration:none;color:inherit}.org-card:hover{cursor:pointer}.org-card.coming-soon{opacity:.6;border:2px dashed #666}.org-card .org-logo{width:100%;max-width:200px;height:auto;max-height:120px;margin:0 auto 1rem;object-fit:contain}.org-card .org-blurb{font-size:.9rem;line-height:1.5;color:var(--color-text-secondary);hyphens:auto;color:#1a1a1a;text-align:center;padding-bottom:.5rem}.org-card .endorsement-count{position:absolute;bottom:.5rem;right:.5rem;font-size:.75rem;color:#666;font-weight:500}.top-candidates .candidates-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(250px, 1fr));gap:1.5rem;margin-top:2rem}.candidate-card{display:flex;flex-direction:column;border:1px solid var(--color-border-card);border-radius:8px;overflow:hidden;background:var(--color-background-card);box-shadow:0 2px 8px var(--shadow-light);transition:transform .2s ease,box-shadow .2s ease}.candidate-card:hover{transform:translateY(-4px);box-shadow:0 4px 12px var(--shadow-medium)}.candidate-card .candidate-image-wrapper{position:relative}.candidate-card .candidate-image{width:100%;max-width:100%;height:auto;aspect-ratio:2/3;object-fit:cover}.candidate-card .candidate-image.placeholder{background:linear-gradient(135deg, var(--color-brand-primary), var(--color-brand-secondary));display:flex;align-items:center;justify-content:center}.candidate-card .primary-badge{position:absolute;bottom:-8px;left:-8px;width:60px;height:60px;background:var(--color-brand-secondary);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-weight:bold;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.3);transform:rotate(-8deg);z-index:10;padding:.5rem}.candidate-card .primary-badge .badge-month{font-size:.7rem;line-height:1;display:block}.candidate-card .primary-badge .badge-year{font-size:.65rem;line-height:1;display:block;margin-top:2px}.candidate-card .primary-badge.special-election{background:var(--color-special-election)}.candidate-card .primary-badge.special-election-winner{background:var(--color-special-election-winner)}.candidate-card .candidate-info{padding-top:.75rem}.candidate-card .candidate-info h3{margin:0 0 .5rem;font-size:1.3rem}.candidate-card .candidate-info h3 a{color:var(--color-brand-primary);text-decoration:none}.candidate-card .candidate-info h3 a:hover{text-decoration:underline}.candidate-card .candidate-info .candidate-location{color:var(--color-text-secondary);font-size:.9rem;margin-bottom:.25rem}.candidate-card .candidate-info .candidate-incumbent{color:var(--color-text-secondary);font-size:.72rem;margin:.25rem 0}.candidate-card .candidate-notes{font-size:.8rem;color:var(--color-text-primary);margin:.25rem 0 0 0;line-height:1.4;hyphens:auto;text-align:justify}.candidate-card .endorsement-badges{display:grid;grid-template-columns:repeat(auto-fit, minmax(40px, 1fr))}.candidate-card .endorsement-badges.badge-count-5,.candidate-card .endorsement-badges.badge-count-9,.candidate-card .endorsement-badges.badge-count-10,.candidate-card .endorsement-badges.badge-count-11,.candidate-card .endorsement-badges.badge-count-12{grid-template-columns:repeat(auto-fit, minmax(35px, 1fr))}.candidate-card .endorsement-badges{align-items:start;gap:.5rem;margin-top:auto;padding-top:1rem}.candidate-card .endorsement-badges .badge{width:100%;max-width:80px;min-width:40px;aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:4px;padding:6px;overflow:hidden}.candidate-card .endorsement-badges .badge img{max-width:100%;max-height:100%;object-fit:contain}@media(min-width: 1150px){.candidate-card .candidate-image-wrapper{width:100%}.candidate-card .candidate-image{width:100%}}@media(max-width: 1149px){.candidate-card{flex-direction:row;flex-wrap:wrap}.candidate-card .candidate-image-wrapper{flex:0 1 33.33%;max-width:145px;overflow:visible}.candidate-card .candidate-image{width:100%;height:auto;aspect-ratio:2/3}.candidate-card .candidate-info{flex:1;padding:1rem 1rem .5rem 1rem}.candidate-card .candidate-notes{flex:0 0 100%;margin:.5rem 0}.candidate-card .endorsement-badges{flex:0 0 100%;padding:.5rem 0}}@media(max-width: 768px){.endorsement-badges .badge{max-width:56px;min-width:40px}}.honorable-mentions{margin-top:1.5rem}.honorable-mentions h3{font-size:1.5rem;color:var(--color-text-primary);margin:0 0 1rem}.honorable-mentions .honorable-mentions-list{display:flex;flex-direction:column;gap:1rem}.honorable-mentions .honorable-mention-item{display:grid;grid-template-columns:1fr 10%;gap:1rem;align-items:start;border-bottom:1px solid var(--color-border-light);padding-bottom:1rem}.honorable-mentions .honorable-mention-item:last-child{border-bottom:none;padding-bottom:0}.honorable-mentions .honorable-mention-content p{margin:0;line-height:1.6}.honorable-mentions .honorable-mention-content a{color:var(--color-brand-primary);text-decoration:none}.honorable-mentions .honorable-mention-content a:hover{text-decoration:underline}.honorable-mentions .honorable-mention-content .candidate-notes{font-size:.8rem;color:var(--color-text-primary)}.honorable-mentions .honorable-mention-image a{display:block}.honorable-mentions .honorable-mention-image .candidate-image{width:100%;height:auto;aspect-ratio:2/3;object-fit:cover;border-radius:8px}.honorable-mentions .honorable-mention-image .placeholder{width:100%;aspect-ratio:2/3;background:linear-gradient(135deg, var(--color-brand-primary), var(--color-brand-secondary));border-radius:8px}@media(min-width: 700px){.honorable-mentions .honorable-mention-item{grid-template-columns:1fr 60px}}@media(max-width: 500px){.honorable-mentions .honorable-mention-image{display:none}.honorable-mentions .honorable-mention-item{grid-template-columns:1fr}}.table-container{overflow-x:auto;margin-top:2rem;box-shadow:0 2px 8px var(--shadow-light);border-radius:8px}table{width:100%;border-collapse:collapse;background:var(--color-background-page)}table thead{background:var(--color-brand-primary);color:#fff}table thead th{padding:1rem 0 1rem 1rem;text-align:left;font-weight:600;white-space:nowrap}table tbody tr{border-bottom:1px solid var(--color-border-light)}table tbody tr:hover{background:var(--color-background-card-hover)}table tbody tr:last-child{border-bottom:none}table tbody td{padding:.75rem 1rem;vertical-align:top}table tbody td.state-cell{font-weight:600;background:var(--color-table-header-bg);min-width:8em}table tbody td.date-cell{font-weight:600;background:var(--color-table-header-bg)}table tbody td.incumbent-merged{vertical-align:middle;border-left:1px solid var(--color-border-light);border-right:1px solid var(--color-border-light)}table tbody td.notes-cell{font-size:.9rem;font-style:italic;color:var(--color-text-secondary);width:40%;line-height:1.6;hyphens:auto}table tbody td.notes-cell strong{color:var(--color-text-primary);font-weight:600;font-style:normal}table tbody td.notes-cell a{text-decoration:underline;text-decoration-color:rgba(128,128,128,.4);text-underline-offset:2px}table tbody td.notes-cell a:hover{text-decoration-color:var(--color-link-table)}table tbody td.endorsements-cell{font-size:.9rem;line-height:1.6;width:30%}table tbody td.incumbent-status-cell{max-width:25%}table tbody td[data-district]{white-space:nowrap}table tbody .party-indicator{display:none}table tbody a{color:var(--color-link-table);text-decoration:none}table tbody a:hover{text-decoration:underline}@media(max-width: 768px){table{font-size:.9rem}table thead th,table tbody td{padding:.5rem}}@media(max-width: 700px){table.sortable:not(.openings-table) thead tr{position:sticky;top:0;background:var(--color-brand-primary);z-index:10}table.sortable:not(.openings-table) thead tr th{font-size:.75rem;padding:.75rem .5rem;min-height:44px;white-space:normal;line-height:1.2}table.sortable:not(.openings-table) thead tr th[data-sort]{cursor:pointer;text-decoration:underline}table.sortable:not(.openings-table) thead tr th:nth-child(1),table.sortable:not(.openings-table) thead tr th:nth-child(2),table.sortable:not(.openings-table) thead tr th:nth-child(3){display:none}table.sortable:not(.openings-table) thead tr .location-header{text-align:left;padding-left:1rem}table.sortable:not(.openings-table) tbody tr td.state-cell,table.sortable:not(.openings-table) tbody tr td.date-cell{display:none}table.sortable:not(.openings-table) tbody tr td[data-district]{position:relative;padding:.75rem 1rem}table.sortable:not(.openings-table) tbody tr.group-first td[data-district]{padding-top:1rem}table.sortable:not(.openings-table) tbody tr.group-first td[data-district]::before{content:attr(data-state) "\a" attr(data-date-display);display:block;white-space:pre-line;line-height:1.45;padding-bottom:.5rem;border-bottom:1px solid var(--color-border-light);margin-bottom:.5rem;font-weight:400;font-size:.85rem;color:var(--color-text-secondary)}table.sortable:not(.openings-table) tbody tr.group-first td[data-district]::before::first-line{font-weight:700;font-size:1.1em;color:var(--color-text-primary)}table.sortable:not(.openings-table) tbody tr.group-first td[data-district]{color:var(--color-text-primary);font-size:1rem;font-weight:400}table.sortable:not(.openings-table) tbody tr.group-first:not(:first-child){border-top:2px solid var(--color-border-card)}}@media(max-width: 800px){.openings-table{display:block}.openings-table thead,.openings-table tbody{display:block;width:100%;max-width:100%}.openings-table thead tr,.openings-table tbody tr{display:block;width:100%;max-width:100%}.openings-table thead tr{position:sticky;top:0;background:var(--color-brand-primary);z-index:10;display:grid;grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);width:100% !important;box-sizing:border-box}.openings-table thead tr th{font-size:.75rem;padding:.75rem .5rem;min-height:44px;white-space:normal;line-height:1.2}.openings-table thead tr th[data-sort]{cursor:pointer;text-decoration:underline}.openings-table thead tr th:nth-child(1),.openings-table thead tr th:nth-child(2),.openings-table thead tr th:nth-child(3),.openings-table thead tr th:nth-child(4){display:none}.openings-table thead tr .location-header{text-align:left;padding-left:1rem;grid-column:1}.openings-table thead tr th:not([data-sort]){text-align:left;vertical-align:top;padding-left:1rem;grid-column:2}.openings-table tbody tr{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto auto 1fr;column-gap:1rem;padding:1rem 0;border-bottom:2px solid var(--color-border-card);width:100% !important;box-sizing:border-box;grid-auto-columns:1fr}.openings-table tbody tr td:nth-child(1),.openings-table tbody tr td:nth-child(2),.openings-table tbody tr td:nth-child(3),.openings-table tbody tr td:nth-child(4){grid-column:1;padding:.25rem .5rem;width:100%;min-width:0;max-width:100%;overflow-wrap:break-word}.openings-table tbody tr td:nth-child(1):first-of-type,.openings-table tbody tr td:nth-child(2):first-of-type,.openings-table tbody tr td:nth-child(3):first-of-type,.openings-table tbody tr td:nth-child(4):first-of-type{padding-top:0}.openings-table tbody tr td:nth-child(1)::before,.openings-table tbody tr td:nth-child(2)::before,.openings-table tbody tr td:nth-child(3)::before,.openings-table tbody tr td:nth-child(4)::before{display:none}.openings-table tbody tr td:nth-child(1){grid-row:1}.openings-table tbody tr td:nth-child(2){grid-row:2}.openings-table tbody tr td:nth-child(3){grid-row:3}.openings-table tbody tr td:nth-child(4){grid-row:4}.openings-table tbody tr td.notes-cell{grid-column:2;grid-row:1/span 5;padding:.25rem .5rem;align-self:start;width:100%;min-width:0}}@media(max-width: 500px){.openings-table thead tr{grid-template-columns:minmax(0, 1fr)}.openings-table thead tr th:last-child{display:none}.openings-table thead tr .location-header{padding-left:.5rem}.openings-table tbody tr{grid-template-columns:minmax(0, 1fr)}.openings-table tbody tr td.notes-cell{grid-column:1;grid-row:auto;margin-top:.5rem;padding:.5rem;max-width:none}.openings-table tbody tr td:nth-child(1),.openings-table tbody tr td:nth-child(2),.openings-table tbody tr td:nth-child(3),.openings-table tbody tr td:nth-child(4){grid-column:1}}table.sortable thead th[data-sort]{cursor:pointer;text-decoration:underline;user-select:none;position:relative}table.sortable thead th[data-sort]:hover{background-color:var(--color-table-header-hover)}table.sortable thead th[data-sort].sort-active{font-weight:bold}@media(forced-colors: active){table tbody .party-indicator{display:inline}table tbody .party-democrat,table tbody .party-republican{color:inherit}}.incumbent-toggle-container{display:flex;justify-content:flex-end;margin-bottom:.5rem;max-width:800px;margin-left:auto;margin-right:auto}.incumbent-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.9rem;user-select:none}.incumbent-toggle input[type=checkbox]{cursor:pointer;width:1rem;height:1rem}.incumbent-toggle span{cursor:pointer}.incumbent-toggle span.progressive-incumbent{padding:.3rem}.special-election-badge{display:inline-block;background:var(--color-special-election);color:#fff;font-size:.7em;font-weight:bold;padding:.15em .4em;border-radius:.25em;margin-left:.4em;vertical-align:middle;white-space:nowrap}.special-election-badge.winner{background:var(--color-special-election-winner)}@media print{*{box-shadow:none !important;text-shadow:none !important}img{content-visibility:visible !important;contain-intrinsic-size:auto !important}@page{margin:.5in;size:letter}body{font-size:15pt;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Helvetica Neue",sans-serif !important;color:#000 !important;background:#fff !important}h1{font-size:24pt;page-break-after:avoid;color:#000 !important}h2{font-size:20pt;page-break-after:avoid;color:#000 !important;border-bottom:2pt solid #e63946 !important;padding-bottom:4pt;margin-top:12pt}h3{font-size:16pt;page-break-after:avoid;color:#000 !important}p{orphans:3;widows:3}li{orphans:2;widows:2}h1,h2,h3,h4,h5,h6{page-break-after:avoid}img,table,figure,blockquote{page-break-inside:avoid}img{display:block !important;max-width:100% !important;height:auto !important}nav.page-menu,.page-menu,.photo-line,nav,footer{display:none !important}.hero{min-height:200pt !important;height:auto !important;page-break-after:avoid;background:none !important}.hero .hero-bg{display:block !important;background:none !important}.hero .hero-content{padding:0 !important}.hero .hero-content h1{font-size:18pt;margin:0 0 1.5rem 0 !important;color:#fff !important}.hero .hero-content p{font-size:10pt;color:#fff !important}.container{max-width:100% !important;padding:0 !important;margin:0 !important}.introduction,.progressive-definition{max-width:none !important;margin-left:0 !important;margin-right:0 !important}section h2,section>p{max-width:none !important;margin-left:0 !important;margin-right:0 !important}a{color:#000 !important;text-decoration:none !important;background:none !important}a[href^=http]:after{content:" (" attr(href) ")";font-size:10pt;font-weight:normal;text-decoration:underline !important;color:#000 !important}a[href^="#"]:after{content:""}.endorsements-cell a:after,.incumbent-badges a:after{content:"" !important}.editorial-intro{font-size:15pt;margin-bottom:12pt;color:#000 !important}.last-updated{font-size:13pt;font-style:italic;margin-bottom:12pt;color:#000 !important}section{margin:18pt 0}section:first-of-type{margin-top:24pt !important}p,li{color:#000 !important}.principles-grid{display:grid !important;grid-template-columns:1fr 1fr !important;gap:12pt !important;margin:12pt 0}.principles-grid .principle-item{display:grid !important;grid-template-columns:1fr !important;grid-column:span 1 !important;gap:.25rem !important;page-break-inside:avoid}.principles-grid .principle-item .principle-title{font-size:13pt;color:#000 !important}.principles-grid .principle-item .principle-title::before{color:#000 !important;font-size:16pt}.principles-grid .principle-item .principle-support{font-size:12pt;color:#000 !important}.principles-grid .principle-item .principle-support a{color:#000 !important}.principles-grid .principle-item .principle-support a:after{content:""}.org-cards-grid{grid-template-columns:repeat(3, 1fr) !important}.org-cards-grid .org-card{page-break-inside:avoid !important;break-inside:avoid-page !important;overflow:visible !important;border:1pt solid #999 !important}.org-track-aipac{background-color:var(--org-color-track-aipac) !important}.org-leaders-we-deserve{background-color:var(--org-color-leaders-we-deserve) !important}.org-our-revolution{background-color:var(--org-color-our-revolution) !important}.org-sunrise-movement{background-color:var(--org-color-sunrise-movement) !important}.org-dsa{background-color:var(--org-color-dsa) !important}.org-pda{background-color:var(--org-color-pda) !important}.org-working-families-party{background-color:var(--org-color-working-families-party) !important}.org-justice-democrats{background-color:var(--org-color-justice-democrats) !important}.org-bernie-sanders{background-color:var(--org-color-bernie-sanders) !important}.org-courage-for-democracy{background-color:var(--org-color-courage-for-democracy) !important}.org-cpc-pac{background-color:var(--org-color-cpc-pac) !important}.org-national-ground-game{background-color:var(--org-color-national-ground-game) !important}.org-peace-action{background-color:var(--org-color-peace-action) !important}.org-jvp-action{background-color:var(--org-color-jvp-action) !important}.org-indivisible{background-color:var(--org-color-indivisible) !important}.org-moveon{background-color:var(--org-color-moveon) !important}.org-integrity-index{background-color:var(--org-color-integrity-index) !important}.org-cards-grid .org-card .org-logo{display:block !important;max-width:200px !important;height:auto !important}.org-cards-grid .org-card .org-name{font-size:13pt !important;color:#000 !important}.org-cards-grid .org-card .org-blurb{font-size:12pt !important;color:#000 !important}.org-cards-grid .org-card .endorsement-count{font-size:11pt !important;color:#000 !important}.org-cards-grid .org-card a:after{content:""}.candidates-grid{grid-template-columns:repeat(3, 1fr) !important}.candidates-grid .candidate-card{page-break-inside:avoid !important;break-inside:avoid-page !important;overflow:visible !important;border:1pt solid #e0e0e0 !important;background:#f9f9f9 !important}.candidates-grid .candidate-card .candidate-image-wrapper{display:block !important}.candidates-grid .candidate-card .candidate-image-wrapper a:after{content:"" !important}.candidates-grid .candidate-card .candidate-image{display:block !important;width:100% !important;height:auto !important;max-width:100% !important}.candidates-grid .candidate-card .primary-badge{background:#e63946 !important;font-size:9pt !important}.candidates-grid .candidate-card .candidate-info h3{font-size:14pt !important}.candidates-grid .candidate-card .candidate-info h3 a{color:#000 !important}.candidates-grid .candidate-card .candidate-info h3 a:after{content:" " attr(href) !important;font-size:10pt;font-weight:normal;text-decoration:underline !important;color:#000 !important}.candidates-grid .candidate-card .candidate-info .candidate-location{font-size:12pt !important;color:#000 !important}.candidates-grid .candidate-card .candidate-info .candidate-notes{font-size:11pt !important;color:#000 !important}.candidates-grid .candidate-card .candidate-info .candidate-incumbent{font-size:10pt !important;color:#000 !important}.candidates-grid .candidate-card .candidate-info .candidate-incumbent .party-democrat,.candidates-grid .candidate-card .candidate-info .candidate-incumbent .party-republican{color:#000 !important}.candidates-grid .candidate-card .endorsement-badges{grid-template-columns:repeat(4, 1fr) !important}.candidates-grid .candidate-card .endorsement-badges .badge a:after{content:"" !important}.candidates-grid .candidate-card .endorsement-badges a:after{content:"" !important}table{font-size:12pt !important;page-break-inside:auto;background:#fff !important}table thead{display:table-header-group}table thead tr{page-break-inside:avoid;page-break-after:avoid;background:#2c5f9e !important}table thead tr th{color:#fff !important;border:none !important;border-bottom:1pt solid #fff !important;padding:8pt 10pt !important;font-size:13pt !important}table tbody tr{page-break-inside:avoid;page-break-after:auto;border-bottom:.5pt solid #e0e0e0 !important}table tbody tr:nth-child(even){background:#f9f9f9 !important}table tbody tr:nth-child(odd){background:#fff !important}table tbody td{border:none !important;border-bottom:.5pt solid #e0e0e0 !important;padding:8pt 10pt !important;color:#000 !important}table tbody td.state-cell,table tbody td.date-cell{background:#f5f5f5 !important}table tbody td.notes-cell{color:#000 !important}table .sort-indicator,table .sortable:after{display:none !important}table .endorsements-cell{font-size:11pt !important}table .endorsements-cell .endorsement-badge{display:inline-block !important;margin:0 4pt 3pt 0 !important;padding:2pt 4pt !important;border:.5pt solid #999 !important;border-radius:2pt;background:#f0f0f0 !important;font-size:9pt !important;color:#000 !important}table .progressive-incumbent{background:#b4eeef !important;padding:2pt 6pt !important;border:.5pt solid #80c5c7 !important;border-radius:2pt;font-size:11pt !important;color:#000 !important}table a{color:#000 !important;text-decoration:none !important}table a:after{content:""}.table-container{overflow:visible !important;max-height:none !important}.openings-table{font-size:12pt !important}.openings-table .ai-note{font-size:10pt !important;font-style:italic;color:#000 !important}table tbody .party-indicator{display:inline !important;color:#000 !important}table tbody .party-democrat,table tbody .party-republican{color:#000 !important}table tbody .candidate-incumbent,table tbody td{color:#000 !important}.incumbent-toggle-container{display:flex !important;justify-content:flex-end !important;margin-bottom:.5rem !important}.incumbent-toggle{display:inline-block !important;width:auto !important;cursor:default !important;background:#b4eeef !important;border:1pt solid #80c5c7 !important;border-radius:2pt;padding:6pt 12pt !important;text-align:center !important}.incumbent-toggle input[type=checkbox]{display:none !important}.incumbent-toggle>span{display:none !important}.incumbent-toggle::before{content:"Incumbents are highlighted" !important;display:block !important;color:#000 !important;font-size:12pt !important;font-weight:bold !important}.no-print{display:none !important}.print-only{display:block !important}body:before{content:"Progressive Congress - progressivecongress.net";display:block;text-align:center;font-size:9pt;font-style:italic;margin-bottom:12pt;padding-bottom:6pt;border-bottom:1pt solid #000}*{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important}}
