/* SOASA election ballot */
.vote-wrap{max-width:720px;margin:0 auto}
.vote-card{background:var(--card);border:1px solid var(--border);border-radius:calc(var(--radius) * 2);padding:2rem;box-shadow:var(--shadow-md)}
.vote-welcome{background:var(--section-alt);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1.5rem}
.vote-welcome strong{color:var(--primary);font-size:1.1rem}
.vote-welcome .vote-meta{font-size:.9rem;color:var(--muted-fg);margin-top:.25rem}
.vote-alert{padding:.85rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.95rem}
.vote-alert-info{background:#eef4e6;border:1px solid #c5d4b0;color:var(--primary-dark)}
.vote-alert-warn{background:#fff8e6;border:1px solid #e8d49a;color:var(--gold-fg)}
.vote-alert-error{background:#fdecea;border:1px solid #f0c4c0;color:#8b1a12}
.vote-alert-success{background:#e8f5e9;border:1px solid #a5d6a7;color:#1b5e20}
.vote-position{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}
.vote-position:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}
.vote-position h3{font-size:1.15rem;color:var(--primary);margin-bottom:.5rem}
.vote-position-hint{font-size:.88rem;color:var(--muted-fg);margin:0 0 1rem}
.vote-candidate{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.5rem;cursor:pointer;transition:border-color var(--transition),background var(--transition)}
.vote-candidate:hover{border-color:var(--primary-light);background:var(--section-alt)}
.vote-candidate.selected{border-color:var(--primary);background:rgba(61,90,30,.06);box-shadow:0 0 0 2px rgba(61,90,30,.12)}
.vote-candidate input{margin-top:.35rem;accent-color:var(--primary)}
.vote-candidate-body{flex:1}
.vote-candidate-body strong{display:block;margin-bottom:.15rem}
.vote-candidate-body a{font-size:.85rem}
.vote-candidate-img{width:48px;height:48px;border-radius:50%;object-fit:cover;flex-shrink:0}
.vote-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;justify-content:flex-end}
.vote-hidden{display:none!important}
.vote-turnout{font-size:.9rem;color:var(--muted-fg);text-align:center;margin-top:1rem}
.vote-confirm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;display:flex;align-items:center;justify-content:center;padding:1rem}
.vote-confirm-box{background:var(--card);border-radius:calc(var(--radius) * 2);padding:1.5rem;max-width:480px;width:100%;box-shadow:var(--shadow-lg)}
.vote-confirm-box h3{margin-bottom:.75rem}
.vote-confirm-list{font-size:.9rem;color:var(--muted-fg);margin-bottom:1rem;max-height:200px;overflow-y:auto}
.vote-confirm-list li{padding:.25rem 0;border-bottom:1px solid var(--border)}
