:root{color:#17202a;background:#f4f6f8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}button{min-height:40px;border:1px solid #b8c0cc;border-radius:6px;background:#fff;color:#17202a;font:inherit;font-weight:700;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}.app-shell{min-height:100vh;padding:32px}.workspace{width:min(100%,1120px);margin:0 auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:8px 0 24px}.eyebrow{margin:0 0 6px;color:#2f6b50;font-size:13px;font-weight:800;text-transform:uppercase}h1,h2{margin:0;line-height:1.2}h1{font-size:32px}h2{font-size:18px}.primary-action{min-width:168px;border-color:#235f46;background:#235f46;color:#fff}.status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.panel{border:1px solid #d6dde6;border-radius:8px;background:#fff;padding:20px}dl{display:grid;gap:14px;margin:18px 0 0}dl>div{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px}dt{color:#607080;font-weight:800}dd{margin:0;overflow-wrap:anywhere}.notice{margin:16px 0 0;border:1px solid #d4a72c;border-radius:6px;background:#fff7df;padding:12px 14px;color:#5d4500;font-weight:700}.voting-panel,.candidate-management{margin-top:16px;border:1px solid #d6dde6;border-radius:8px;background:#fff;padding:20px}.voting-summary{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.voting-summary span{border:1px solid #d6dde6;border-radius:6px;padding:6px 10px;color:#314151;font-size:13px;font-weight:800}.polling-status{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;color:#607080;font-size:13px;font-weight:700}.polling-status span{border-left:3px solid #7f8fa3;padding-left:8px}.vote-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:16px}.vote-card{display:grid;gap:10px;border:1px solid #e1e6ee;border-radius:8px;padding:12px}.vote-card img{width:100%;aspect-ratio:16 / 10;object-fit:cover;border-radius:6px;background:#f4f6f8}.vote-card div{display:grid;gap:4px}.vote-card span{color:#607080;font-size:13px;font-weight:700}.result-panel{margin-top:18px;border-top:1px solid #e1e6ee;padding-top:18px}.result-totals{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.result-totals span{border:1px solid #c8d7d0;border-radius:6px;background:#f1f8f5;padding:6px 10px;color:#235f46;font-size:13px;font-weight:800}.result-outcome{margin:14px 0 0;color:#17202a;font-size:16px;font-weight:800}.result-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:14px}.result-card{display:grid;gap:10px;border:1px solid #e1e6ee;border-radius:8px;padding:12px}.result-card-winner{border-color:#235f46;background:#f7fbf9}.result-card img{width:100%;aspect-ratio:16 / 10;object-fit:cover;border-radius:6px;background:#f4f6f8}.result-card div{display:grid;gap:4px}.result-card span{color:#607080;font-size:13px;font-weight:700}.section-heading,.list-summary,.form-actions,.row-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.management-layout{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:16px;margin-top:18px}.candidate-form,.candidate-list{border:1px solid #e1e6ee;border-radius:8px;padding:16px}h3{margin:0 0 16px;font-size:16px}label{display:grid;gap:8px;margin-bottom:14px;color:#607080;font-weight:800}input{min-height:40px;width:100%;border:1px solid #b8c0cc;border-radius:6px;padding:8px 10px;color:#17202a;font:inherit;font-weight:500}.image-preview{width:100%;aspect-ratio:16 / 10;object-fit:cover;border:1px solid #d6dde6;border-radius:8px;margin-bottom:14px;background:#f4f6f8}.helper-text,.empty-state{margin:12px 0 0;color:#607080;font-weight:700}.candidate-list ul{display:grid;gap:12px;list-style:none;margin:14px 0 0;padding:0}.candidate-list li{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #e1e6ee;border-radius:8px;padding:10px}.candidate-list li img{width:72px;height:72px;object-fit:cover;border-radius:6px;background:#f4f6f8}.candidate-list li div:not(.row-actions){display:grid;gap:4px}.candidate-list li span{color:#607080;font-size:13px;font-weight:700}.row-actions{justify-content:flex-end}@media(max-width:820px){.app-shell{padding:20px}.topbar,.section-heading,.form-actions,.row-actions{align-items:stretch;flex-direction:column}.primary-action{width:100%}.status-grid,.management-layout,.candidate-list li{grid-template-columns:1fr}.candidate-list li img{width:100%;height:auto;aspect-ratio:16 / 9}}
