@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@600;700&display=swap');
:root{--green:#0b7a4b;--green2:#095d3a;--blue:#123d91;--ink:#102019;--muted:#66756e;--line:#dfe8e3;--cream:#f7faf8;--white:#fff;--red:#c53d3d;--gold:#dcae43;--shadow:0 18px 50px rgba(16,32,25,.08);--radius:20px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:"DM Sans",Arial,sans-serif;color:var(--ink);background:var(--white)}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}button{cursor:pointer}
.site-header{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);padding:12px 5%;display:flex;align-items:center;justify-content:space-between;gap:25px}.site-header.compact{position:relative}.brand{display:flex;align-items:center;gap:12px}.logo{object-fit:contain;background:#fff}.funs-logo{width:54px;height:54px;border-radius:50%}.sdu-logo{width:58px;height:58px;border-radius:50%}.brand-copy{display:flex;flex-direction:column;gap:2px}.brand-copy span{font-size:10px;font-weight:700;letter-spacing:.08em;color:var(--green)}.brand-copy strong{font-size:16px;letter-spacing:.02em}.brand-copy small{color:var(--muted);font-size:11px}.nav{display:flex;gap:8px;align-items:center}.nav a{padding:10px 14px;border-radius:10px;color:#44534c;font-size:13px;font-weight:600}.nav a:hover,.nav a.active{background:#eef7f2;color:var(--green)}
.hero{min-height:650px;padding:70px 7%;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:60px;background:radial-gradient(circle at 80% 20%,#e8f5ee 0,transparent 32%),linear-gradient(135deg,#f8fbf9,#fff)}.hero h1{font-family:"Playfair Display",serif;font-size:clamp(48px,7vw,86px);line-height:.95;margin:18px 0}.hero h1 em{font-style:normal;color:var(--green)}.hero p{font-size:18px;line-height:1.7;color:var(--muted);max-width:620px}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:11px;font-weight:800;color:var(--green)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#b3bdb8;margin-right:8px}.status-dot.open{background:#17a765;box-shadow:0 0 0 5px #dcf5e8}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin:30px 0}.btn{border:0;border-radius:12px;padding:13px 18px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.2s}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--green);color:#fff;box-shadow:0 10px 25px rgba(11,122,75,.18)}.btn.secondary{background:#edf5f1;color:var(--green)}.btn.ghost{background:transparent;color:inherit}.btn.wide{width:100%}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.notice-card{display:flex;align-items:center;gap:13px;width:max-content;max-width:100%;background:#fff;border:1px solid var(--line);padding:14px 17px;border-radius:14px;box-shadow:var(--shadow)}.notice-card div:last-child{display:flex;flex-direction:column}.notice-card span{color:var(--muted);font-size:12px;margin-top:3px}.notice-icon{font-size:22px}
.hero-panel{display:flex;justify-content:center}.panel-card{position:relative;width:min(390px,100%);padding:30px;border-radius:30px;background:linear-gradient(145deg,#0a6f45,#0b3f2c);color:#fff;box-shadow:0 35px 70px rgba(9,93,58,.24);overflow:hidden}.panel-card:before{content:"";position:absolute;width:230px;height:230px;border-radius:50%;right:-100px;top:-100px;background:rgba(255,255,255,.08)}.panel-top{display:flex;justify-content:space-between;font-weight:800;font-size:12px;letter-spacing:.1em}.live-pill{background:rgba(255,255,255,.13);padding:6px 9px;border-radius:30px;font-size:9px}.big-number{font-family:"Playfair Display",serif;font-size:84px;line-height:1;margin-top:70px}.panel-card .muted{color:#b9d8ca}.progress{height:7px;background:rgba(255,255,255,.14);border-radius:10px;margin:20px 0;overflow:hidden}.progress span{display:block;height:100%;width:0;background:#fff;border-radius:10px}.mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:25px}.mini-grid div{background:rgba(255,255,255,.08);padding:12px;border-radius:12px}.mini-grid b,.mini-grid small{display:block}.mini-grid small{color:#b9d8ca;margin-top:3px}
.section{padding:80px 7%;max-width:1400px;margin:auto}.section-heading{max-width:680px}.section h2{font-family:"Playfair Display",serif;font-size:42px;margin:10px 0}.section p{color:var(--muted);line-height:1.7}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:35px}.step{padding:26px;border:1px solid var(--line);border-radius:18px;background:#fff}.step span{font-weight:800;color:var(--green);font-size:12px}.step h3{margin:45px 0 8px}.step p{font-size:14px}.split{display:grid;grid-template-columns:1fr 1fr;gap:60px;background:var(--cream);max-width:none}.lga-list{display:grid;grid-template-columns:1fr;gap:12px}.lga-list div{background:#fff;border:1px solid var(--line);padding:22px;border-radius:15px;font-weight:800}.footer{padding:30px 7%;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;color:var(--muted);font-size:12px}
.app-bg,.admin-bg{background:#f5f8f6;min-height:100vh}.form-page,.ballot-page{max-width:980px;margin:auto;padding:60px 20px}.form-intro,.ballot-header{margin-bottom:30px}.form-intro h1,.ballot-header h1,.auth-card h1{font-family:"Playfair Display",serif;font-size:46px;margin:10px 0}.form-intro p,.ballot-header p{color:var(--muted);max-width:700px;line-height:1.7}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.form-card{padding:30px}.form-section{padding:10px 0 28px;border-bottom:1px solid var(--line);margin-bottom:25px}.form-section h2{margin-top:0}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.form-grid label,.form-card label:not(.upload-box),.auth-card label{display:flex;flex-direction:column;gap:8px;font-weight:700;font-size:13px}.form-grid input,.form-grid select,.form-grid textarea,.form-card input,.form-card select,.auth-card input,.search{border:1px solid #d8e2dc;border-radius:11px;padding:13px;background:#fff;outline:none}.form-grid input:focus,.form-grid select:focus,.form-card input:focus,.auth-card input:focus{border-color:var(--green);box-shadow:0 0 0 3px #e4f3eb}.optional,.field-help{font-weight:400;color:var(--muted);font-size:12px}.upload-box{border:2px dashed #cbdad2;padding:30px;border-radius:16px;text-align:center;display:flex;align-items:center;gap:8px;justify-content:center;flex-direction:column;color:var(--green);cursor:pointer}.upload-box input{display:none}.upload-box small{color:var(--muted)}.upload-icon{font-size:28px}.check-row{display:flex!important;flex-direction:row!important;align-items:flex-start;gap:10px!important;font-weight:500!important;color:#4e5e56;margin:20px 0}.check-row input{margin-top:3px}.form-message{padding:12px;border-radius:10px;margin:15px 0;font-size:13px}.form-message.error{background:#fff0f0;color:#9d3030}.form-message.success{background:#edf9f2;color:#087342}.hidden{display:none!important}.privacy-note{text-align:center;color:#8a9892;font-size:11px;margin:16px 0}.success-panel{text-align:center;padding:55px 30px;margin-top:30px}.success-mark{width:60px;height:60px;border-radius:50%;background:#e4f5eb;color:var(--green);display:grid;place-items:center;font-size:30px;font-weight:800;margin:0 auto 20px}.success-panel h2{font-family:"Playfair Display",serif;font-size:34px}.reference{margin:25px auto;padding:15px;background:#f4f8f5;border-radius:12px;display:flex;flex-direction:column;gap:5px;max-width:400px}.reference small{color:var(--muted)}.reference strong{letter-spacing:.08em}.auth-page{min-height:100vh;display:grid;place-items:center;padding:30px}.auth-card{width:min(480px,100%);padding:36px}.auth-logo img{width:72px;height:72px;object-fit:contain;border-radius:50%;margin-bottom:15px}.auth-card form{display:grid;gap:16px;margin-top:25px}.text-link{display:block;text-align:center;color:var(--green);font-weight:700;font-size:13px;margin-top:20px}.locked-panel{text-align:center;padding:55px}.lock{font-size:42px;margin-bottom:12px}.position-card{padding:25px;margin-bottom:18px;display:grid;grid-template-columns:55px 1fr;gap:10px}.position-number{font-family:"Playfair Display",serif;font-size:32px;color:#c5d3cc}.position-copy h2{margin:6px 0 18px}.candidate-options{display:grid;gap:10px}.candidate-option{position:relative;display:flex;gap:13px;align-items:center;border:1px solid var(--line);padding:15px;border-radius:13px;cursor:pointer}.candidate-option:hover{border-color:#9fcab3;background:#fbfefc}.candidate-option input{position:absolute;opacity:0}.radio{width:20px;height:20px;border:2px solid #b6c4bd;border-radius:50%;flex:none}.candidate-option input:checked+.radio{border-color:var(--green);box-shadow:inset 0 0 0 4px #fff;background:var(--green)}.candidate-option strong,.candidate-option small{display:block}.candidate-option small{color:var(--muted);margin-top:4px}.empty-candidates{padding:16px;background:#f7f9f8;border-radius:10px;color:var(--muted)}.submit-card{display:flex;justify-content:space-between;align-items:center;padding:20px;margin-top:20px}.submit-card p{margin:4px 0;color:var(--muted);font-size:12px}.review-list{display:grid;gap:8px;margin:20px 0}.review-list div{display:flex;justify-content:space-between;gap:15px;padding:12px;border-bottom:1px solid var(--line);font-size:13px}.review-list span{color:var(--muted)}.review-actions{display:flex;gap:10px;justify-content:flex-end}
.admin-header{background:#10251c;color:#fff;padding:14px 4%;display:flex;justify-content:space-between;align-items:center}.admin-brand{display:flex;align-items:center;gap:12px}.admin-brand img{width:44px;height:44px;object-fit:contain;border-radius:50%;background:#fff}.admin-brand strong,.admin-brand small{display:block}.admin-brand small{color:#a7b9b0;font-size:11px;margin-top:2px}.admin-nav{display:flex;gap:6px;overflow:auto}.admin-nav a{padding:9px 11px;border-radius:9px;color:#c4d3cc;font-size:12px}.admin-nav a.active,.admin-nav a:hover{background:#214a38;color:#fff}.admin-main{max-width:1350px;margin:auto;padding:45px 4%}.admin-title{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:25px}.admin-title h1{font-family:"Playfair Display",serif;font-size:44px;margin:8px 0}.admin-identity{background:#fff;padding:10px 14px;border:1px solid var(--line);border-radius:10px;font-size:12px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:18px}.stat-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}.stat-card small,.stat-card strong{display:block}.stat-card small{color:var(--muted)}.stat-card strong{font-size:32px;margin-top:15px}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.admin-card{padding:24px;margin-bottom:18px}.card-heading{display:flex;justify-content:space-between;align-items:center;gap:15px}.card-heading h2,.admin-card h2{margin:5px 0 10px}.control-row{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:16px 0}.control-row strong,.control-row small{display:block}.control-row small{color:var(--muted);margin-top:4px}.badge{display:inline-block;padding:5px 8px;border-radius:30px;font-size:10px;font-weight:800;text-transform:uppercase}.badge.pending{background:#fff4da;color:#956500}.badge.approved{background:#e5f7ed;color:#087342}.badge.rejected,.badge.locked{background:#fdecec;color:#a33838}.table-wrap{overflow:auto}.table-row{display:grid;grid-template-columns:1.5fr 1fr .7fr 1fr;gap:12px;padding:12px;border-bottom:1px solid var(--line);font-size:12px}.table-row span{min-width:0}.table-wrap table{width:100%;border-collapse:collapse;font-size:12px}.table-wrap th,.table-wrap td{text-align:left;padding:12px;border-bottom:1px solid var(--line);vertical-align:top}.table-wrap td small{display:block;color:var(--muted);margin-top:4px}.search{min-width:280px}.link-button{border:0;background:none;color:var(--green);font-weight:800}.small-btn{border:0;border-radius:8px;padding:7px 9px;margin:2px;font-size:11px;font-weight:800;background:#edf5f1;color:var(--green)}.small-btn.reject{background:#fff0f0;color:#9d3030}.candidate-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.candidate-admin{border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;gap:15px}.candidate-photo{width:80px;height:80px;border-radius:12px;background:#eef5f1;display:grid;place-items:center;overflow:hidden;color:var(--green);font-weight:800}.candidate-photo img{width:100%;height:100%;object-fit:cover}.candidate-admin h3{margin:5px 0}.candidate-admin p{color:var(--muted);font-size:12px}.full{grid-column:1/-1}.empty{padding:30px;text-align:center;color:var(--muted)}.result-card{padding:24px;margin-bottom:15px}.result-row{display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--line)}.winner{margin-left:8px;background:#e7f5ec;color:var(--green);font-size:9px;padding:4px 7px;border-radius:20px}.result-total{margin-top:12px;color:var(--muted);font-size:12px}.report{background:#fff;max-width:1000px;margin:35px auto;padding:55px;box-shadow:var(--shadow)}.report-head{display:flex;justify-content:space-between;align-items:center;border-bottom:3px solid var(--green);padding-bottom:25px}.report-head img{width:85px;height:85px;object-fit:contain}.report-head h1{font-size:20px;text-align:center;margin:0}.report-head h2,.report-head p{text-align:center;margin:6px 0}.report-head p{color:var(--muted)}.report-meta,.report-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:25px 0}.report-meta div,.report-stats div{padding:14px;background:#f5f8f6;border-radius:10px}.report-meta strong,.report-meta span,.report-stats strong,.report-stats span{display:block}.report-meta span,.report-stats span{color:var(--muted);font-size:12px;margin-top:4px}.report-stats{grid-template-columns:repeat(4,1fr)}.report-stats strong{font-size:24px}.report-position{border:1px solid var(--line);border-radius:10px;padding:15px;margin:12px 0}.report-position h3{margin-top:0}.report-position div{display:flex;justify-content:space-between;padding:9px;border-top:1px solid var(--line)}.certification{margin-top:45px;border-top:1px solid var(--line);padding-top:25px}.signature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:50px;font-size:11px;text-align:center}
@media(max-width:850px){.hero{grid-template-columns:1fr;padding-top:50px}.hero-panel{display:none}.steps{grid-template-columns:1fr 1fr}.split{grid-template-columns:1fr}.site-header{align-items:flex-start}.nav{overflow:auto;white-space:nowrap}.stats-grid{grid-template-columns:1fr 1fr}.admin-grid{grid-template-columns:1fr}.candidate-grid{grid-template-columns:1fr}.report{margin:0;padding:25px}.report-head h1{font-size:15px}.report-head img{width:60px;height:60px}}
@media(max-width:560px){.brand-copy span{display:none}.sdu-logo{display:none}.hero{padding:45px 5%}.hero h1{font-size:55px}.section{padding:55px 5%}.steps{grid-template-columns:1fr}.form-page,.ballot-page{padding:35px 12px}.form-grid{grid-template-columns:1fr}.form-card{padding:20px}.form-intro h1,.ballot-header h1,.auth-card h1,.admin-title h1{font-size:38px}.position-card{grid-template-columns:1fr}.position-number{display:none}.submit-card{align-items:flex-start;flex-direction:column}.admin-main{padding:30px 12px}.stats-grid{grid-template-columns:1fr 1fr}.admin-title{align-items:flex-start;flex-direction:column}.search{min-width:0;width:100%}.report-meta,.report-stats{grid-template-columns:1fr 1fr}.signature-grid{grid-template-columns:1fr}.report-head{gap:10px}.report-head img{width:45px;height:45px}}
@media print{body{background:#fff}.no-print{display:none!important}.report{box-shadow:none;margin:0;max-width:none}.report-head{break-inside:avoid}.report-position{break-inside:avoid}}

.portal-closed{text-align:center;padding:55px 30px;margin-bottom:25px;background:linear-gradient(145deg,#fff,#f7faf8)}.portal-closed h1{font-family:"Playfair Display",serif;font-size:42px;margin:10px 0}.portal-closed p{max-width:620px;margin:0 auto 24px;color:var(--muted);line-height:1.7}

/* Registration status / voter-code retrieval */
.form-shell{max-width:900px;margin:0 auto;padding:56px 24px 72px}
.status-result{margin-top:24px;padding:34px;border-radius:24px;background:rgba(255,255,255,.96);border:1px solid rgba(20,35,70,.10);box-shadow:0 18px 50px rgba(20,35,70,.08)}
.status-result h2{margin:8px 0 10px}
.result-icon{font-size:38px;margin-bottom:10px}
.voter-code-box{margin:24px 0;padding:22px;border-radius:18px;background:#f7f4ff;border:2px dashed rgba(89,52,170,.25);text-align:center}
.voter-code-box small{display:block;letter-spacing:.12em;font-weight:800;margin-bottom:8px}
.voter-code-box strong{display:block;font-size:clamp(26px,6vw,42px);letter-spacing:.08em;word-break:break-word}
.result-note{margin:18px 0 24px;padding:16px 18px;border-radius:14px;background:#f7f7f7;line-height:1.6}
@media (max-width:700px){.form-shell{padding:38px 16px 56px}.status-result{padding:24px 18px}.voter-code-box strong{font-size:28px}}
