.vsb-wrap{max-width:900px;margin:2rem auto;padding:clamp(1rem,3vw,2rem);background:#fff;border:1px solid #e4e4e4;border-radius:14px;box-shadow:0 8px 30px #0000000d}.vsb-wrap *{box-sizing:border-box}.vsb-wrap label{display:block}.vsb-wrap input[type=email]{width:100%;max-width:520px;padding:.8rem;border:1px solid #aaa;border-radius:6px}.vsb-wrap button{padding:.85rem 1.25rem;border:0;border-radius:6px;background:#176b3a;color:#fff;font-weight:700;cursor:pointer}.vsb-wrap button:focus,.vsb-wrap input:focus{outline:3px solid #f3c949;outline-offset:2px}.vsb-notice{padding:1rem;margin:1rem 0;border-left:5px solid #176b3a;background:#edf8f1}.vsb-error{border-color:#b42318;background:#fff1f0}.vsb-success{border-color:#176b3a}.vsb-ballot fieldset{margin:1.5rem 0;padding:1rem;border:1px solid #ccc;border-radius:10px}.vsb-ballot legend{font-size:1.2rem;font-weight:700}.vsb-candidates{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem}.vsb-candidate{display:flex!important;gap:.8rem;padding:1rem;border:1px solid #ddd;border-radius:10px;cursor:pointer}.vsb-candidate:has(input:checked){border-color:#176b3a;background:#f1faf4}.vsb-candidate img{width:80px;height:80px;object-fit:cover;border-radius:50%}.vsb-warning{padding:1rem;background:#fff8e1;font-weight:700}@media(max-width:540px){.vsb-candidates{grid-template-columns:1fr}.vsb-wrap{margin:.5rem}}
