:root{color:#172033;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}html,body,#root{min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}*{box-sizing:border-box}html,body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.app{background:radial-gradient(circle at 15% 20%,#1d4ed814,#0000 30%),radial-gradient(circle at 85% 80%,#caa04314,#0000 30%),#f5f7fb;justify-content:center;align-items:center;min-height:100vh;padding:32px 20px;display:flex;position:relative;overflow:hidden}.background-shape{pointer-events:none;border-radius:50%;position:absolute}.background-shape-one{background:#1d4ed80d;width:420px;height:420px;top:-220px;right:-160px}.background-shape-two{background:#caa0430f;width:350px;height:350px;bottom:-210px;left:-150px}.page-shell{z-index:1;justify-content:center;width:100%;display:flex;position:relative}.portal-card{z-index:1;background:#fffffff7;border:1px solid #e4e8f0;border-radius:20px;width:100%;max-width:690px;padding:34px;position:relative;box-shadow:0 20px 60px #0f172a1a}.authentication-card,.loading-card,.success-card{max-width:520px}.ballot-card,.review-card{max-width:760px}.portal-header{justify-content:space-between;align-items:center;gap:20px;display:flex}.brand{align-items:center;gap:14px;min-width:0;display:flex}.brand-mark{color:#fff;letter-spacing:-.5px;background:#173b73;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:50px;height:50px;font-size:16px;font-weight:800;display:flex;box-shadow:0 6px 16px #173b7333}.brand-text{flex-direction:column;min-width:0;display:flex}.brand-text strong{color:#173b73;letter-spacing:.8px;font-size:15px;font-weight:800}.brand-text span{color:#7a8495;letter-spacing:1.2px;margin-top:3px;font-size:9px;font-weight:700}.election-badge{color:#2859a3;letter-spacing:1px;background:#edf3ff;border-radius:999px;flex-shrink:0;padding:6px 11px;font-size:10px;font-weight:800}.divider{background:#e8ebf0;height:1px;margin:24px 0 28px}.intro,.ballot-intro{margin-bottom:26px}.intro{text-align:center}.eyebrow{color:#2859a3;letter-spacing:1.2px;font-size:10px;font-weight:800}.intro h1,.ballot-intro h1,.loading-content h1,.success-content h1{color:#172033;letter-spacing:-.9px;margin:14px 0 9px;font-size:32px;line-height:1.15}.intro p,.ballot-intro p,.loading-content>p,.success-content>p{color:#697386;max-width:590px;margin:0;font-size:13px;line-height:1.7}.intro p{margin:0 auto}.voting-form{margin-top:28px}.voting-form label{color:#273247;margin-bottom:9px;font-size:13px;font-weight:700;display:block}.input-wrapper{background:#fff;border:1px solid #d8dee9;border-radius:10px;align-items:center;gap:11px;height:54px;padding:0 15px;transition:border-color .2s,box-shadow .2s;display:flex}.input-wrapper:focus-within{border-color:#2859a3;box-shadow:0 0 0 4px #2859a31a}.input-wrapper.input-error{border-color:#c43c3c}.input-icon{color:#2859a3;background:#edf3ff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;font-weight:800;display:flex}.input-wrapper input{color:#172033;background:0 0;border:none;outline:none;width:100%;font-family:inherit;font-size:15px}.input-wrapper input::placeholder{color:#a0a8b6}.error-message{color:#c43c3c;margin:8px 0 0;font-size:12px;font-weight:600;line-height:1.5}.error-message.centered{text-align:center;margin-top:18px}.continue-button{color:#fff;cursor:pointer;background:#173b73;border:none;border-radius:10px;justify-content:center;align-items:center;gap:12px;width:100%;min-height:54px;margin-top:16px;font-family:inherit;font-size:14px;font-weight:700;transition:transform .15s,background .15s,box-shadow .15s;display:flex}.continue-button:hover:not(:disabled){background:#12315f;box-shadow:0 8px 20px #173b732e}.continue-button:active:not(:disabled){transform:translateY(1px)}.continue-button:disabled{opacity:.62;cursor:not-allowed;box-shadow:none}.continue-button span{font-size:20px;line-height:1}.information-box{background:#f7f9fc;border:1px solid #edf0f5;border-radius:12px;flex-direction:column;gap:14px;margin-top:24px;padding:16px;display:flex}.info-row{align-items:flex-start;gap:12px;display:flex}.info-icon{background:#fff;border:1px solid #e5e9f0;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:14px;display:flex}.info-row>div:last-child{flex-direction:column;gap:3px;display:flex}.info-row strong{color:#354056;font-size:12px;font-weight:700}.info-row span{color:#7b8494;font-size:11px;line-height:1.5}.portal-footer{color:#a0a7b4;letter-spacing:.2px;justify-content:center;align-items:center;margin-top:24px;font-size:10px;font-weight:600;display:flex}.configuration-warning{color:#b42323;text-align:center;background:#fff5f5;border:1px solid #f0c9c9;border-radius:8px;margin-top:14px;padding:10px;font-size:11px}.loading-content{text-align:center}.loading-content .information-box{text-align:left}.loading-spinner{border:4px solid #e5ebf4;border-top-color:#2859a3;border-radius:50%;width:46px;height:46px;margin:0 auto 20px;animation:.8s linear infinite spin}.loading-text{color:#2859a3;margin-top:18px;font-size:12px;font-weight:700}@keyframes spin{to{transform:rotate(360deg)}}.ballot-progress{margin:0 0 24px}.progress-label{color:#697386;justify-content:space-between;gap:12px;margin-bottom:7px;font-size:11px;font-weight:700;display:flex}.progress-track{background:#e9edf4;border-radius:999px;width:100%;height:7px;overflow:hidden}.progress-fill{border-radius:inherit;background:#2859a3;height:100%;transition:width .2s}.positions-list{flex-direction:column;gap:14px;display:flex}.position-card{background:#fff;border:1px solid #e2e7ef;border-radius:14px;padding:20px}.position-heading{align-items:flex-start;gap:14px;margin-bottom:18px;display:flex}.position-number{color:#2859a3;background:#edf3ff;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:12px;font-weight:800;display:flex}.position-heading h2{color:#263149;margin:2px 0 4px;font-size:16px}.position-heading span{color:#8a93a3;font-size:11px}.candidate-list{flex-direction:column;gap:9px;display:flex}.candidate-option{color:#354056;text-align:left;cursor:pointer;background:#fff;border:1px solid #e2e7ef;border-radius:10px;align-items:center;gap:12px;width:100%;min-height:52px;padding:12px 14px;transition:border-color .15s,background .15s,box-shadow .15s;display:flex}.candidate-option:hover{background:#f8faff;border-color:#b9c8df}.candidate-option.selected{background:#f7faff;border-color:#2859a3;box-shadow:0 0 0 2px #2859a30f}.radio-circle{background:#fff;border:2px solid #c5ccd8;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.candidate-option.selected .radio-circle{border-color:#2859a3}.radio-dot{background:#2859a3;border-radius:50%;width:9px;height:9px}.candidate-name{color:#354056;font-size:13px;font-weight:600}.approval-block{grid-template-columns:1fr auto;align-items:center;gap:14px;display:grid}.approval-candidate{background:#fff;border:1px solid #e2e7ef;border-radius:10px;align-items:center;min-height:48px;padding:12px 14px;display:flex}.approval-name{color:#354056;font-size:13px;font-weight:600}.approval-options{align-items:center;gap:10px;display:flex}.approval-option{color:#4d586c;cursor:pointer;background:#fff;border:1px solid #dfe5ee;border-radius:9px;align-items:center;gap:7px;min-height:44px;padding:8px 12px;font-size:12px;font-weight:700;transition:border-color .15s,background .15s;display:flex}.approval-option:hover{background:#f8faff;border-color:#b9c8df}.approval-option.selected.yes{color:#167044;background:#edf8f1;border-color:#65a77d}.approval-option.selected.no{color:#b42323;background:#fff1f1;border-color:#d28a8a}.checkbox{background:#fff;border:2px solid #c5ccd8;border-radius:5px;justify-content:center;align-items:center;width:20px;height:20px;font-size:12px;display:flex}.approval-option.selected.yes .checkbox{color:#fff;background:#247a45;border-color:#247a45}.approval-option.selected.no .checkbox{color:#fff;background:#b42323;border-color:#b42323}.ballot-error{margin:16px 0 0}.privacy-notice{color:#697386;background:#f7f9fc;border:1px solid #e5eaf1;border-radius:10px;align-items:center;gap:10px;margin-top:22px;padding:13px 14px;font-size:11px;line-height:1.5;display:flex}.privacy-notice>span:first-child{flex-shrink:0}.review-list{flex-direction:column;gap:10px;display:flex}.review-item{background:#fff;border:1px solid #e2e7ef;border-radius:12px;align-items:center;gap:14px;padding:15px;display:flex}.review-content{flex-direction:column;gap:3px;min-width:0;display:flex}.review-position{color:#8a93a3;letter-spacing:.4px;text-transform:uppercase;font-size:10px;font-weight:700}.review-content strong{color:#263149;font-size:14px}.approval-badge{letter-spacing:.5px;border-radius:5px;width:fit-content;margin-top:4px;padding:3px 8px;font-size:9px;font-weight:800}.approval-badge.yes{color:#167044;background:#e9f7ef}.approval-badge.no{color:#b42323;background:#fcecec}.review-actions{gap:12px;margin-top:20px;display:flex}.review-actions button{flex:1}.secondary-button{color:#4d586c;cursor:pointer;background:#fff;border:1px solid #d7deea;border-radius:10px;min-height:54px;font-size:13px;font-weight:700;transition:background .15s}.secondary-button:hover:not(:disabled){background:#f7f9fc}.secondary-button:active:not(:disabled){transform:translateY(1px)}.secondary-button:disabled{cursor:not-allowed;opacity:.6}.success-card,.success-content{text-align:center}.success-circle{color:#247a45;background:#edf7f0;border:1px solid #d6eddd;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;margin:0 auto 20px;font-size:30px;font-weight:800;display:flex}.success-content .information-box{text-align:left;margin-top:24px}.success-note{color:#8a93a3!important;margin-top:18px!important;font-size:11px!important}@media (width<=700px){.app{align-items:flex-start;padding:18px 12px}.portal-card{border-radius:16px;padding:24px 18px}.portal-header{align-items:flex-start}.election-badge{margin-top:2px}.brand-text strong{font-size:13px}.brand-text span{font-size:8px}.intro h1,.ballot-intro h1,.loading-content h1,.success-content h1{font-size:27px}.approval-block{grid-template-columns:1fr}.approval-options{width:100%}.approval-option{flex:1;justify-content:center}.review-actions{flex-direction:column}}@media (width<=430px){.portal-card{padding:20px 14px}.brand{gap:10px}.brand-mark{border-radius:10px;width:44px;height:44px;font-size:14px}.brand-text strong{letter-spacing:.5px;font-size:11px}.brand-text span{letter-spacing:.8px;font-size:7px}.election-badge{padding:5px 8px;font-size:8px}.position-card{padding:16px 13px}.position-heading{gap:10px}.position-heading h2{font-size:15px}.candidate-name,.approval-name{font-size:12px}.approval-options{gap:7px}}
