.election-page{max-width:1200px}.election-heading{margin:48px 0 26px;max-width:760px}.eyebrow{font-size:12px;letter-spacing:2px;color:#ec5e6e;font-weight:700}.election-heading h1{font-size:clamp(36px,5vw,62px);line-height:1.05;margin:12px 0 16px}.election-heading p{color:#bbb5aa;font-size:17px}.candidate-filters{display:grid;grid-template-columns:2fr 1fr 1fr 1.4fr auto;gap:12px;align-items:end;margin:26px 0}.candidate-filters label{font-size:12px;color:#b9b4aa}.candidate-filters input,.candidate-filters select{display:block;width:100%;min-width:0;padding:12px;background:#24211f;color:#fff;border:1px solid #514c45;border-radius:8px;margin-top:7px;min-height:46px;font:inherit}.candidate-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.candidate-card{border:1px solid #3b3631;background:#1b1917;border-radius:12px;overflow:hidden;min-width:0}.candidate-photo{height:210px;background:#2c2824;display:flex;align-items:center;justify-content:center;text-align:center;color:#bbb}.candidate-photo img{height:100%;width:100%;object-fit:contain}.candidate-info{padding:16px}.candidate-info h2{font-size:20px;line-height:1.2;margin:8px 0;overflow-wrap:anywhere}.candidate-info p{font-size:12px;margin:6px 0;color:#bcb6ab}.candidate-tag{color:#fc687c;font-size:12px;font-weight:700}.candidate-pagination{display:flex;justify-content:center;gap:18px;align-items:center;margin:28px 0}.election-footer{margin-top:48px;padding-top:22px;border-top:1px solid #3b3631;color:#aca69a;font-size:13px}.comparison-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.contender{display:grid;grid-template-columns:120px minmax(0,1fr);gap:20px;padding:24px;border-radius:16px;border:1px solid #493139;background:linear-gradient(135deg,#321b20,#1b1917)}.contender.opponent{border-color:#36454b;background:linear-gradient(135deg,#202c32,#1b1917)}.contender img{width:120px;height:160px;object-fit:cover;border-radius:8px}.contender h2{font-size:28px;margin:8px 0}.vote-percent{font-size:clamp(36px,5vw,60px);font-weight:700;line-height:1.1}.vote-amount{font-size:15px;color:#bcb6ab}.vote-bar{height:12px;display:flex;border-radius:20px;overflow:hidden;margin:26px 0 12px;background:#504b43}.vote-bar span:nth-child(1){background:#ed1235;width:45.16%}.vote-bar span:nth-child(2){background:#668a9a;width:47.03%}.comparison-legend{display:flex;flex-wrap:wrap;gap:20px;color:#c0b9ad;font-size:13px}.comparison-note{margin-top:24px;padding:24px;border:1px solid #3b3631;border-radius:12px}.comparison-note h2{margin-top:0}.comparison-note p{color:#bcb6ab}.result-tabs{display:flex;gap:8px;margin:22px 0}.result-tabs button{padding:12px 20px;border:1px solid #50473f;border-radius:8px;background:#24211f;color:white;min-height:44px}.result-tabs [aria-selected=true]{background:#b80e29;border-color:#ed1235}@media(max-width:900px){.candidate-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.candidate-filters{grid-template-columns:1fr 1fr}.comparison-grid{grid-template-columns:1fr}}@media(max-width:500px){.candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.candidate-photo{height:180px}.candidate-info{padding:12px}.candidate-info h2{font-size:18px}.candidate-filters label:first-child{grid-column:1/-1}.contender{grid-template-columns:90px minmax(0,1fr);gap:14px;padding:18px}.contender img{width:90px;height:120px}.contender h2{font-size:24px}.election-heading{margin-top:32px}.vote-percent{font-size:42px}}