:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#181818;background:#f7f8f4;--zim-red: #e2231a;--zim-yellow: #ffdf00;--zim-green: #00843d;--ink: #181818;--muted: #68716b;--line: #dfe5db}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button{border:1px solid #cfd8ce;background:#fff;border-radius:7px;min-height:42px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--zim-green);border-color:var(--zim-green);color:#fff}main{min-height:100vh}.topbar{height:74px;padding:0 28px;display:flex;justify-content:space-between;align-items:center;background:#fff;border-bottom:4px solid var(--zim-yellow);position:sticky;top:0;z-index:3}.brand,nav,.actions,.section-title,.admin-menu{display:flex;align-items:center;gap:12px}.brand img{width:58px;height:46px;object-fit:contain}.brand strong{display:block;font-size:1.15rem}.brand span,p,small,label,.row span,.metric span{color:var(--muted)}nav button.active{border-color:var(--zim-green);color:var(--zim-green);background:#edf7f1}.toast{margin:18px auto 0;width:min(1120px,calc(100% - 32px));padding:12px 16px;background:#fff9c8;border:1px solid #f0d85f;border-radius:7px}.admin-grid{width:min(1120px,calc(100% - 32px));margin:28px auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.admin-grid>.section-title{grid-column:1 / -1;justify-content:space-between}h1,h2,p{margin-top:0}h1{font-size:clamp(2rem,4vw,4rem);line-height:1}h2{font-size:1.1rem}.panel{background:#fff;border:1px solid var(--line);border-radius:8px;padding:22px;box-shadow:0 12px 30px #1818180f}.narrow{width:min(460px,calc(100% - 32px));margin:42px auto}.stack{display:grid;gap:14px}label{display:grid;gap:7px;font-weight:700}input,textarea{width:100%;border:1px solid #cfd8ce;border-radius:7px;padding:11px 12px;background:#fbfdfc}textarea{resize:vertical}.candidate-form{display:grid;grid-template-columns:1fr 1.4fr 84px 48px;gap:8px}.admin-user-form{display:grid;grid-template-columns:1fr auto;gap:8px}.list{display:grid;gap:10px;margin-top:16px}.row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:10px;border:1px solid #ecefeb;border-radius:7px}.row strong,.row span{display:block}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}.metric{border:1px solid #e3e9e1;border-radius:7px;padding:12px}.metric strong{display:block;font-size:1.35rem}.status{width:fit-content;text-transform:capitalize;display:flex;align-items:center;gap:8px;padding:7px 11px;border-radius:999px;background:#f0f2ed}.status.open{color:var(--zim-green);background:#e7f6eb}.status.closed{color:#a61717;background:#fde9e7}.error{color:#a61717;margin:10px 0 0}.summary{margin:12px 0 0}.voter-shell{width:min(960px,calc(100% - 32px));margin:34px auto}.vote-hero{min-height:230px;display:grid;align-content:center;justify-items:center;text-align:center;padding:34px 0;border-bottom:1px solid #dfe5db}.vote-hero p{max-width:680px;font-size:1.1rem}.ballot{margin-top:24px}.candidate-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.choice{min-height:118px;align-items:flex-start;text-align:left;flex-direction:column;background:#fbfdfc}.choice.selected{border-color:var(--zim-green);background:#edf7f1}.choice strong,.choice span{display:block}.success{text-align:center;color:var(--zim-green)}.results-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#181818b8;padding:28px;display:grid;place-items:center}.results-modal,.menu-modal{width:min(1120px,100%);max-height:calc(100vh - 56px);overflow:auto;background:#fff;border-radius:8px;padding:28px;box-shadow:0 24px 80px #00000047}.menu-modal{width:min(720px,100%)}.results-header{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;border-bottom:1px solid var(--line);padding-bottom:18px}.results-header h1{margin-bottom:6px}.report-page{padding-top:22px}.report-cover{display:grid;grid-template-columns:112px 1fr;gap:20px;align-items:center;padding:18px;border:1px solid var(--line);border-top:6px solid var(--zim-green);border-radius:8px;background:#fff}.report-cover img{width:104px;height:82px;object-fit:contain}.report-cover h1{margin-bottom:8px;font-size:clamp(1.7rem,3vw,3rem)}.report-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}.report-card{border:1px solid var(--line);border-radius:8px;background:#fff;padding:18px}.report-card:nth-child(1){border-top:5px solid var(--zim-red)}.report-card:nth-child(2){border-top:5px solid var(--zim-yellow)}.report-card:nth-child(3){border-top:5px solid var(--zim-green)}.report-card:nth-child(4){grid-column:1 / -1;border-top:5px solid var(--ink)}.winner-panel{margin-top:18px;padding:16px;border:1px solid #eadb72;border-radius:8px;background:linear-gradient(135deg,#fff8bd,#fff 58%)}.winner-panel h3{margin:0 0 4px}.winner-panel p{margin-bottom:14px}.winner-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.winner{min-height:112px;padding:14px;border-radius:7px;background:#fff;border:1px solid #e5e8df;display:grid;align-content:space-between}.winner span{width:fit-content;padding:4px 8px;border-radius:999px;color:#fff;background:var(--ink);font-weight:800}.winner strong{font-size:1.05rem}.winner.rank-1{border-top:5px solid var(--zim-green)}.winner.rank-2{border-top:5px solid var(--zim-yellow)}.winner.rank-3{border-top:5px solid var(--zim-red)}.results{display:grid;gap:12px;margin-top:18px}.result-row{display:grid;grid-template-columns:130px 1fr 42px;gap:12px;align-items:center}.result-row div{height:12px;background:#edf2f0;border-radius:999px;overflow:hidden}.result-row i{display:block;height:100%;background:var(--zim-red)}@media(max-width:760px){.topbar{height:auto;padding:14px;gap:14px;align-items:flex-start;flex-direction:column}.admin-grid,.candidate-grid,.report-grid,.winner-grid,.candidate-form,.admin-user-form{grid-template-columns:1fr}.results-overlay{padding:12px}.results-modal,.menu-modal{max-height:calc(100vh - 24px);padding:18px}.results-header,.admin-menu{align-items:stretch;flex-direction:column}.report-cover{grid-template-columns:1fr;text-align:center;justify-items:center}.report-card:nth-child(4){grid-column:auto}h1{font-size:2.35rem}}@media print{@page{size:A4;margin:8mm}body{background:#fff;font-size:9px;print-color-adjust:exact;-webkit-print-color-adjust:exact}body *{visibility:hidden}.report-page,.report-page *{visibility:visible}.results-overlay{position:static;inset:auto;display:block;padding:0;background:#fff}.results-modal{width:100%;max-height:none;overflow:visible;padding:0;box-shadow:none;border-radius:0}.no-print{display:none!important}.report-page{position:absolute;left:0;top:0;width:100%;padding:0}.report-cover{grid-template-columns:58px 1fr;gap:8px;padding:8px 10px;border-top-width:4px}.report-cover img{width:54px;height:42px}.report-cover h1{font-size:18px;line-height:1.05;margin-bottom:3px}.report-cover p,.report-card p,.winner-panel p{margin-bottom:4px}.report-grid{grid-template-columns:1fr 1fr;gap:7px;margin-top:7px}.report-card{padding:8px;border-radius:4px}.report-card:nth-child(1),.report-card:nth-child(2),.report-card:nth-child(3),.report-card:nth-child(4){border-top-width:3px}.report-card h2{font-size:11px;margin-bottom:5px}.metrics{gap:5px;margin-top:6px}.metric{padding:6px;border-radius:4px}.metric strong{font-size:13px}.list{gap:5px;margin-top:6px}.row{gap:6px;padding:5px;border-radius:4px}.winner-panel{margin-top:7px;padding:7px;border-radius:4px}.winner-panel h3{font-size:11px}.winner-grid{gap:5px}.winner{min-height:58px;padding:6px;border-radius:4px}.winner span{padding:2px 5px}.winner strong{font-size:10px}.winner.rank-1,.winner.rank-2,.winner.rank-3{border-top-width:3px}.results{gap:5px;margin-top:7px}.result-row{grid-template-columns:95px 1fr 28px;gap:6px}.result-row div{height:7px}.report-card,.winner-panel,.winner,.metric,.row,.report-cover{break-inside:avoid;box-shadow:none}}
