*{box-sizing:border-box}body{margin:0;background:linear-gradient(135deg,#e3f2fd,#f5f5f5);font-family:Arial,sans-serif;color:#222;min-height:100vh}.wrap{max-width:900px;margin:25px auto;padding:0 15px}header{background:#1565c0;color:#fff;text-align:center;padding:25px;border-radius:15px 15px 0 0}header h1{margin:0 0 8px}header p{margin:0}.card{background:#fff;padding:30px;border-radius:0 0 15px 15px;box-shadow:0 5px 20px #0002}.narrow{max-width:500px;margin:auto;border-radius:0 0 15px 15px}label{display:block;font-weight:bold;margin:14px 0 7px}input[type=text],input[type=password]{width:100%;padding:13px;border:1px solid #ccc;border-radius:8px;font-size:16px}.btn{display:inline-block;border:0;border-radius:8px;padding:12px 18px;font-weight:bold;text-decoration:none;cursor:pointer}.primary{background:#1565c0;color:#fff}.success{background:#2e7d32;color:#fff}.gray{background:#757575;color:#fff}.vote{width:100%;margin-top:25px}.smallbtn{padding:8px 12px;font-size:13px}.alert{padding:14px;border-radius:8px;margin:15px 0;font-weight:bold}.alert.error{background:#ffebee;color:#c62828}.alert.success{background:#e8f5e9;color:#2e7d32}.candidates{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:20px}.candidate{border:2px solid #ddd;border-radius:12px;padding:20px;text-align:center;cursor:pointer}.candidate:hover,.candidate.selected{border-color:#1565c0;background:#e3f2fd}.candidate input{display:none}.num{width:60px;height:60px;border-radius:50%;background:#1565c0;color:#fff;display:flex;align-items:center;justify-content:center;margin:0 auto 12px;font-size:24px;font-weight:bold}.candidate h3{margin:8px 0}.candidate p{color:#666}.userbar{display:flex;justify-content:space-between;align-items:center;background:#f5f5f5;padding:12px;border-radius:8px;margin-bottom:25px}.center{text-align:center}.small{font-size:13px;color:#777}.bigcheck{font-size:60px;color:#2e7d32}.result{margin:20px 0}.resulttop{display:flex;justify-content:space-between;gap:10px;margin-bottom:7px}.bar{height:24px;background:#eee;border-radius:20px;overflow:hidden}.bar div{height:100%;background:#1565c0}.percent{text-align:right;font-size:12px;color:#666;margin-top:3px}.total{text-align:center;margin:25px 0;font-size:18px}table{width:100%;border-collapse:collapse;margin:15px 0 30px}th,td{padding:11px;border:1px solid #ddd;text-align:left}th{background:#e3f2fd}footer{text-align:center;padding:18px;color:#777;font-size:13px}@media(max-width:600px){.candidates{grid-template-columns:1fr}.card{padding:20px}.userbar{gap:10px}table{font-size:14px}}