:root{--brand: #000000;--accent: #3a867c;--accent-deep: #2c6a61;--paper: #ffffff;--ink: #32373c;--muted: #666666;--rule: #dddddd;--card: #fafafa;--wash: #f2f2f2;--dem-tint: #5b7d9e;--dem-wash: #eef2f6;--rep-tint: #a86a62;--rep-wash: #f7efed;--font-display: "Oswald", Helvetica, Arial, sans-serif;--font-body: "Merriweather", Georgia, serif;--font-data: "JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}:root{color-scheme:light}::selection{background:var(--accent);color:#fff}a,button{-webkit-tap-highlight-color:transparent}h1,h2,h3,h4{text-wrap:balance}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}.app{max-width:860px;margin:0 auto;padding:1.5rem 1.25rem 3rem}a{color:var(--brand);text-decoration-color:var(--accent)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.loading{padding:4.5rem 1.25rem;text-align:center;color:var(--muted);font-family:var(--font-display);font-size:.9rem;letter-spacing:.08em;text-transform:uppercase}.load-error{max-width:640px;margin:3rem auto;padding:1.5rem;border:3px solid #b3261e;background:#fff}.load-error h1{margin:0 0 .5rem;font-family:var(--font-display);color:#b3261e}.load-error-detail{font-family:var(--font-data);font-size:.85rem;background:#f8e8e7;padding:.75rem;overflow-wrap:break-word}.masthead{border-bottom:3px solid var(--brand);padding-bottom:1rem;margin-bottom:1.5rem}.masthead-brand{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem;text-decoration:none;color:inherit;width:fit-content}.masthead-icon{height:52px;width:52px}.masthead-logo{height:30px;width:auto;max-width:100%}.masthead-title{margin:.1rem 0 .2rem;font-family:var(--font-display);font-size:2.3rem;font-weight:600;line-height:1.1;text-transform:uppercase;letter-spacing:.01em}.masthead-sub{margin:0;color:var(--muted);font-size:.95rem}.masthead-link{color:inherit;text-decoration:none}.nav{margin-top:.9rem;display:flex;flex-wrap:wrap;gap:0 2.25rem}.nav a{font-family:var(--font-display);font-size:1.05rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;text-decoration:none;color:var(--ink);padding:.4rem 0 calc(.4rem - 3px);border-bottom:3px solid transparent}.nav a:hover{border-bottom-color:var(--rule)}.nav a.nav-active{border-bottom-color:var(--brand)}.share-button{margin-left:auto;font:500 .75rem var(--font-display);text-transform:uppercase;letter-spacing:.04em;background:none;border:1px solid var(--rule);color:var(--ink);padding:.25rem .7rem;cursor:pointer;align-self:center;transition:border-color .15s ease}.share-button:hover{border-color:var(--brand)}.countdown{margin:0 0 .75rem;font-family:var(--font-display);font-size:1.05rem;font-weight:500;letter-spacing:.02em;text-transform:uppercase}.countdown-num{font-family:var(--font-data);font-size:1.5rem;font-weight:600;color:var(--accent-deep);margin-right:.15rem}.ballot-note{margin:2rem 0 0;padding-top:.75rem;border-top:1px solid var(--rule);font-size:.9rem;color:var(--muted);max-width:44rem}.deadline-banner{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .75rem;background:var(--card);border:1px solid var(--rule);border-left:4px solid var(--accent);padding:.6rem 1rem;margin-bottom:1.5rem;font-size:.9rem;text-decoration:none;color:var(--ink)}.deadline-banner-label{font-family:var(--font-display);font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--accent-deep)}.deadline-banner-cta{margin-left:auto;font-weight:700;white-space:nowrap}.level-section{margin-bottom:2rem}.level-heading{font-family:var(--font-display);font-size:.85rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--rule);padding-bottom:.35rem}.race-list{display:grid;gap:.75rem}.race-card{position:relative;display:block;background:var(--card);border:1px solid var(--rule);border-left:4px solid var(--brand);padding:.9rem 3rem .9rem 1.1rem;text-decoration:none;color:var(--ink);transition:background-color .15s ease}.race-card:after{content:"→";position:absolute;right:1.1rem;top:50%;transform:translateY(-50%);font-family:var(--font-display);font-size:1.1rem;color:var(--rule);transition:color .15s ease,transform .15s ease}.race-card:hover{background:var(--wash)}.race-card:hover:after{color:var(--brand);transform:translateY(-50%) translate(3px)}.race-card-office{margin:0;font-family:var(--font-display);font-size:1.25rem;font-weight:600}.race-card-counts{margin:.35rem 0 0;font-family:var(--font-data);font-size:.8rem;color:var(--muted)}.race-card-pick{color:var(--accent-deep);font-weight:600}.badge{display:inline-block;font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:.15rem .5rem;border-radius:3px}.badge-open{background:var(--brand);color:#fff;margin:.4rem 0 0}.back-link{font-size:.85rem;font-weight:600;text-decoration:none}.race-topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem}.office-note{margin:.25rem 0 .75rem;font-size:.88rem;font-style:italic;color:var(--muted);max-width:44rem}.race-title{font-family:var(--font-display);font-size:1.8rem;font-weight:700;margin:.5rem 0 .25rem}.race-title .badge-open{margin-left:.6rem;vertical-align:middle}.race-context{color:var(--ink);margin:.25rem 0 1.5rem;max-width:42rem}.primary-section{margin-bottom:2rem}.primary-heading{font-family:var(--font-display);font-size:.95rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;padding:.4rem .75rem;margin:0 0 .75rem}.primary-heading-dem{background:var(--dem-wash);border-left:4px solid var(--dem-tint);color:var(--dem-tint)}.primary-heading-rep{background:var(--rep-wash);border-left:4px solid var(--rep-tint);color:var(--rep-tint)}.primary-count{float:right;font-family:var(--font-data);font-size:.75rem;font-weight:400;letter-spacing:0;text-transform:none;color:var(--muted)}.candidate-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem}.candidate-card{background:var(--card);border:1px solid var(--rule);padding:.9rem 1.1rem}.candidate-head{display:flex;align-items:center;gap:.75rem}.candidate-photo{width:56px;height:56px;border-radius:50%;object-fit:cover;flex-shrink:0;border:1px solid var(--rule)}.candidate-photo-placeholder{display:inline-flex;align-items:center;justify-content:center;background:var(--wash);color:var(--muted);font-family:var(--font-display);font-size:1.1rem;font-weight:600}.candidate-name{margin:0;font-family:var(--font-display);font-size:1.15rem;font-weight:600}.badge-suspended{background:#8a5a00;color:#fff;margin:.4rem 0 0}.badge-note{text-transform:none;letter-spacing:0;font-weight:500}.candidate-meta{margin:.4rem 0 0;font-size:.85rem;color:var(--muted)}.candidate-bio{margin:.5rem 0 0;font-size:.92rem}.candidate-site{margin:.5rem 0 0;font-size:.85rem;font-weight:600}.photo-credit{margin:.5rem 0 0;font-size:.7rem;color:var(--muted)}.candidate-positions{margin-top:.6rem;border-top:1px solid var(--rule);padding-top:.5rem}.positions-heading{margin:0 0 .3rem;font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.position{margin:0 0 .35rem;font-size:.9rem}.position a{font-family:var(--font-display);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);text-decoration-color:var(--accent)}.position a:hover{color:var(--brand)}.positions-note{margin:.25rem 0 0;font-size:.75rem;color:var(--muted)}.positions-none{margin:0;font-size:.8rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}.view-title{font-family:var(--font-display);font-size:1.8rem;font-weight:700;margin:0 0 1rem}.section-heading{font-family:var(--font-display);font-size:.85rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--rule);padding-bottom:.35rem;margin:2rem 0 .75rem}.deadline-list{list-style:none;margin:0;padding:0}.deadline{border-left:3px solid var(--rule);padding:.6rem 0 .6rem 1rem;margin-bottom:.5rem}.deadline-date{margin:0;font-family:var(--font-data);font-size:.85rem;color:var(--muted)}.deadline-label{margin:.1rem 0 0;font-weight:700;font-size:1.05rem}.deadline-detail{margin:.25rem 0 0;font-size:.9rem;color:var(--muted);max-width:40rem}.ics-line{margin:.35rem 0 0}.ics-link{font-family:var(--font-display);font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-deep)}.deadline-next{border-left-color:var(--accent);background:var(--card);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);border-right:1px solid var(--rule);padding-right:1rem}.deadline-next .deadline-date,.deadline-next .deadline-detail{color:var(--ink)}.badge-next{background:var(--accent-deep);color:#fff;margin-left:.6rem}.deadline-past{opacity:.55}.deadline-past-label{margin-left:.6rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.explainer{background:var(--card);border:1px solid var(--rule);padding:.9rem 1.1rem;margin-bottom:.75rem}.explainer-title{margin:0;font-family:var(--font-display);font-size:1.1rem;font-weight:600}.explainer-body{margin:.4rem 0 0;font-size:.92rem}.explainer-link{margin:.5rem 0 0;font-size:.9rem;font-weight:700}.link-list{margin:0;padding-left:1.2rem}.link-list li{margin-bottom:.4rem}.print-view{max-width:720px;margin:0 auto;padding:1.5rem 1.25rem;background:#fff;color:#000}.print-button{float:right;font:500 .85rem var(--font-display);text-transform:uppercase;letter-spacing:.04em;background:var(--brand);color:#fff;border:none;padding:.5rem 1rem;cursor:pointer}.print-logo{height:26px;width:auto;display:block;margin-bottom:.5rem}.print-title{font-family:var(--font-display);font-size:1.5rem;margin:0}.print-sub{margin:.2rem 0 1rem;font-size:.9rem}.print-heading{font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid #000;padding-bottom:.2rem;margin:1.2rem 0 .5rem}.print-date-list{margin:0;padding-left:1.1rem;font-size:.9rem;columns:2}.print-race{margin-bottom:.7rem;break-inside:avoid}.print-office{margin:0;font-family:var(--font-display);font-size:1.05rem}.print-open{font-family:var(--font-body);font-size:.8rem;font-weight:400}.print-primary{margin:.15rem 0 0;font-size:.9rem}.print-foot{margin-top:1.5rem;border-top:1px solid #000;padding-top:.5rem;font-size:.8rem}@media print{body{background:#fff;color:#000}.print-view{max-width:none;padding:0}.print-button{display:none}.print-view a{color:#000;text-decoration:none}}.newsletter-page{max-width:720px;margin:0 auto;padding:1.5rem 1.25rem}.newsletter-tools{display:flex;align-items:center;gap:1rem;margin-bottom:1.25rem;font-size:.9rem;color:var(--muted)}.newsletter-tools .print-button{float:none;flex-shrink:0}.questionnaire-link{font-weight:600}.question-section{margin-bottom:2.25rem}.question-text{font-family:var(--font-display);font-size:1.25rem;font-weight:600;margin:0 0 .75rem;max-width:42rem}.question-number{font-family:var(--font-data);font-size:.85rem;color:var(--accent);margin-right:.35rem}.answer-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;margin-bottom:1rem}.answer-card{background:var(--card);border:1px solid var(--rule);padding:.9rem 1.1rem}.answer-name{margin:0 0 .4rem;font-family:var(--font-display);font-weight:600}.answer-text{margin:0;font-size:.92rem;white-space:pre-line}.answer-none{margin:0;font-size:.85rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}.race-coverage{margin-top:.5rem}.coverage-list{list-style:none;margin:0;padding:0}.coverage-item{padding:.45rem 0;border-bottom:1px solid var(--rule)}.coverage-item a{font-weight:700;text-decoration:none}.coverage-item a:hover{text-decoration:underline;text-decoration-color:var(--accent)}.coverage-meta{display:block;font-size:.8rem;color:var(--muted);margin-top:.1rem}.news-race{margin-bottom:1.5rem}.news-race-link{color:inherit;text-decoration:none}.news-race-link:hover{text-decoration:underline}.results-strip{display:block;background:var(--brand);color:#fff;font-family:var(--font-display);font-size:.85rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;text-align:center;padding:.5rem 1rem;margin-bottom:1.5rem}.results-stale{background:#fdf3e0;border:1px solid #e0c48f;border-left:4px solid #8a5a00;padding:.6rem 1rem;margin:-.75rem 0 1.5rem;font-size:.9rem}.results-note{font-size:.9rem;color:var(--muted);margin:-.5rem 0 1.5rem}.results-race{margin-bottom:2rem}.results-office{font-family:var(--font-display);font-size:1.4rem;font-weight:700;margin:0 0 .6rem}.results-primary{margin-bottom:1rem}.results-reporting{float:right;font-family:var(--font-data);font-size:.75rem;font-weight:400}.results-list{list-style:none;margin:0;padding:0}.results-row{display:grid;grid-template-columns:1fr auto;gap:.15rem 1rem;padding:.35rem 0}.results-name{font-weight:600}.results-winner{color:var(--accent)}.results-suspended{font-weight:400;font-size:.85rem;color:var(--muted)}.results-numbers{font-family:var(--font-data);font-size:.85rem;text-align:right}.results-bar-track{grid-column:1 / -1;display:block;height:8px;background:var(--rule)}.results-bar{display:block;height:100%;background:var(--brand);min-width:0}.ballot-toggle{margin-top:.6rem;font:500 .75rem var(--font-display);text-transform:uppercase;letter-spacing:.04em;background:none;border:1px solid var(--rule);color:var(--ink);padding:.35rem .7rem;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.ballot-toggle:hover{border-color:var(--brand)}.ballot-toggle-on{background:var(--brand);border-color:var(--brand);color:#fff}.myballot-sub{margin:-.5rem 0 1.25rem;color:var(--muted);font-size:.9rem}.myballot-warning{background:#fdf3e0;border:1px solid #e0c48f;border-left:4px solid #8a5a00;padding:.75rem 1rem;margin-bottom:1.25rem;font-size:.92rem}.myballot-race{margin-bottom:1.25rem}.myballot-office{font-family:var(--font-display);font-size:1.1rem;font-weight:600;margin:0 0 .3rem}.myballot-picks{list-style:none;margin:0;padding:0}.myballot-picks li{padding:.3rem 0;border-bottom:1px solid var(--rule)}.myballot-name{font-weight:700}.myballot-party{margin-left:.6rem;font-family:var(--font-data);font-size:.75rem;color:var(--muted)}.myballot-remaining{font-size:.85rem;color:var(--muted)}.ballot-actions{display:flex;gap:.75rem;margin:1.25rem 0}.ballot-actions .print-button{float:none}.ballot-clear{font:500 .85rem var(--font-display);text-transform:uppercase;letter-spacing:.04em;background:none;border:1px solid var(--rule);color:var(--muted);padding:.5rem 1rem;cursor:pointer}.myballot-foot{font-size:.85rem;color:var(--muted);border-top:1px solid var(--rule);padding-top:.75rem}@media print{.masthead,.deadline-banner,.ballot-actions,.ballot-toggle{display:none}.myballot .myballot-warning{border:1px solid #000}}@media (max-width: 480px){.app{padding:1rem .9rem 2rem}.masthead-icon{height:40px;width:40px}.masthead-logo{height:22px}.masthead-title{font-size:1.8rem}.deadline-banner-cta{margin-left:0}.nav{gap:0 1.25rem}.nav a{font-size:.95rem}}.sponsor{margin-top:2.5rem;padding:1rem;border:1px solid var(--rule);background:var(--card);text-align:center}.sponsor-disclosure{margin:0 0 .5rem;font-size:.75rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.sponsor-logo{max-height:48px;max-width:240px}
