@import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";@import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap";*{margin:0;padding:0;list-style:none;text-decoration:none;border:0;box-sizing:border-box}html{font-size:62.5%}body{font-family:Inter,sans-serif;font-size:1.2rem;background:var(--color-background);color:var(--color-gray-100);line-height:1.6}.container{width:var(--container-w-lg);margin-inline:auto}h1,h2,h3{font-family:"Source Sans 3",sans-serif;color:var(--color-gray-100);line-height:1.1;text-transform:uppercase;font-weight:800}a{font-size:1.2rem}img{display:block;width:100%;height:100%;object-fit:cover}button{cursor:pointer}.btn{width:fit-content;background:var(--color-gray-0);color:var(--color-gray-300);font-weight:600;padding:1rem 2rem;text-align:center;border-radius:var(--radius-1);transition:var(--transition)}.btn.primary{background:var(--color-primary);color:#fff}.btn.danger{background:var(--color-danger);color:#fff}.btn.sm{padding:.5rem 1.2rem}.btn.full{width:100%}.btn:hover{background:var(--color-gray-600);color:var(--color-gray-0)}.errorPage{display:grid;place-items:center;height:100vh;width:100vw}.errorPage--container{width:30rem;text-align:center}.errorPage--container h1{font-size:4rem}nav{background:var(--color-background-variant);display:grid;place-items:center;height:5rem;position:sticky;top:0;left:0;width:100vw;z-index:1}.nav--container *{color:#fff}.nav--container{display:flex;align-items:center;justify-content:space-between}.navlink-box{display:flex;align-items:center;gap:4rem}.nav--logo{font-size:2rem;font-weight:700}.nav--toggle-btn{background:transparent;font-size:2.4rem;display:none}.nav--container a{transition:var(--transition)}.nav--container a:hover{color:var(--color-primary)}.navlinks{display:flex;align-items:center;gap:4rem}.logo-icon{height:2rem}.hero{background:linear-gradient(135deg,#1f2937,#09203f);padding:15rem 0 10rem;color:#fff;position:relative;overflow:hidden}.hero:before{content:"";position:absolute;inset:0;background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><polygon fill="rgba(255,255,255,0.1)" points="0,1000 1000,0 1000,1000"/></svg>');background-size:cover}.hero-content{position:relative;text-align:center;animation:fadeInUp 1s ease-out}.hero-heading{font-size:3.5rem;font-weight:700;margin-bottom:1.5rem;line-height:1.2}.hero-text{font-size:1.3rem;margin-bottom:2.5rem;opacity:.9;max-width:600px;margin-left:auto;margin-right:auto}.btn-primary{background:linear-gradient(135deg,#a867b0,#f77989);color:#fff;font-size:2rem;padding:1rem 2rem;border-radius:var(--radius-2)}.account-types{padding:10rem 0 0}.section-header{text-align:center;margin-bottom:4rem}.section-header h2{font-size:2.5rem;font-weight:700;margin-bottom:1rem;color:var(--color-gray-0)}.section-header p{font-size:1.2rem;color:var(--color-gray-100);max-width:60rem;margin:0 auto}.account-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(35rem,1fr));gap:2rem;margin-top:3rem}.account-card{background:#09203f;padding:2.5rem;border-radius:20px;box-shadow:0 10px 30px #0000001a;transition:all .3s ease;position:relative;overflow:hidden}.account-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(135deg,#667eea,#764ba2)}.account-card:hover{transform:translateY(-10px);box-shadow:0 20px 40px #00000026}.card-icon{width:60px;height:60px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;margin-bottom:1.5rem}.creator-icon{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.committee-icon{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff}.voter-icon{background:linear-gradient(135deg,#4facfe,#00f2fe);color:#fff}.account-card h3{font-size:1.5rem;font-weight:700;margin-bottom:1rem;color:var(--color-gray-0)}.account-card p{color:var(--color-gray-200);margin-bottom:1.5rem;line-height:1.6}.features{list-style:none;margin-bottom:2rem}.features li{color:var(--color-gray-200);position:relative;padding:.5rem 0 .5rem 1.5rem}.features li:before{content:"✓";position:absolute;left:0;color:#48bb78;font-weight:700}.features-section{padding:100px 0;background:#09203f}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:3rem;margin-top:3rem}.feature-item{text-align:center;padding:2rem}.feature-icon{width:80px;height:80px;border-radius:20px;display:flex;align-items:center;justify-content:center;font-size:2rem;margin:0 auto 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.feature-item h3{font-size:1.3rem;font-weight:700;margin-bottom:1rem;color:#2d3748}.feature-item p{color:#718096;line-height:1.6}.cta-section{padding:80px 0;color:#fff;text-align:center}.cta-section h2{font-size:2.5rem;font-weight:700;margin-bottom:1rem}.cta-section p{font-size:1.2rem;margin-bottom:2rem;opacity:.9}footer{background:#09203f;color:#fff;padding:3rem 0;text-align:center}.footer-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;margin-bottom:2rem}.footer-section h3{font-size:1.2rem;font-weight:600;margin-bottom:1rem}.footer-section p,.footer-section a{color:#a0aec0;text-decoration:none;line-height:1.6}.footer-section a:hover{color:#fff}.signup{display:grid;place-items:center;height:100vh}.signup-container{width:35rem;background:var(--color-background-variant);padding:3rem;border-radius:var(--radius-5)}.signup-heading{margin-bottom:2rem;color:var(--color-primary)}.signup-form{display:flex;flex-direction:column;gap:1.5rem}.signup-form input{padding:.7rem;background:var(--color-gray-100);border-radius:var(--radius-1);color:var(--color-gray-900)}.signup-form p>a{color:var(--color-primary-variant);font-weight:500}.form--error-message{background:var(--color-danger);color:var(--color-gray-0);padding:.6rem 1.5rem;border-radius:var(--radius-1)}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0009;display:flex;justify-content:center;align-items:center;z-index:999;animation:fadeIn .3s ease-in}.modal-content{background:#fff;padding:2rem;border-radius:12px;text-align:center;width:90%;max-width:400px;box-shadow:0 4px 20px #0000004d;animation:slideUp .4s ease-out}.modal-success{border-top:6px solid #4caf50}.modal-error{border-top:6px solid #f44336}.modal-content p{margin-bottom:1.5rem;font-size:1rem;color:#333}.close-btn{background:#007bff;color:#fff;padding:.6rem 1.2rem;border:none;border-radius:6px;cursor:pointer;transition:background .2s ease}.close-btn:hover{background:#0056b3}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.logout-btn{background-color:#e74c3c;color:#fff;border:none;border-radius:8px;padding:.6rem 1.2rem;cursor:pointer;font-weight:600;transition:all .3s ease}.logout-btn:hover{background-color:#c0392b;transform:scale(1.05)}@media (max-width: 84rem){.navlinks a{display:flex}}@media (max-width: 60rem){.container{width:var(--container-w-sm)}.nav{height:6rem}.navlink-box{gap:3rem}.nav--toggle-btn{display:inline-block}.navlinks{position:fixed;top:5rem;right:0;flex-direction:column;gap:0;width:12rem}.navlinks a{background:var(--color-background-alternate);color:var(--color-gray-100);border-bottom:1px solid var(--color-gray-400);width:100%;display:grid;place-items:center;height:4rem;box-shadow:-2rem 4rem 2re,#000}.signup-container{padding:3rem 1.5rem}}@media (max-width: 768px){.hero h1{font-size:2.5rem}.hero p{font-size:1.1rem}.nav-links{display:none}.account-grid{grid-template-columns:1fr}}.elections-container{padding-top:10rem}.page-title{text-align:center;margin-bottom:1.5rem}.election-section{margin-bottom:3.6rem}.status-header{font-size:1.8rem;margin-bottom:1rem}.election-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(25rem,1fr));gap:1.5rem}.election--status-card{background:var(--color-background-variant);padding:1rem;border-radius:12px;box-shadow:0 2px 8px #0000001a;transition:all .3s ease}.election--status-card.upcoming{border-left:5px solid #3498db}.election--status-card.ongoing{border-left:5px solid #27ae60}.election--status-title{font-size:1.8rem;margin-bottom:.5rem;color:var(--color-gray-100)}.election-time{color:var(--color-gray-300);font-size:1.4rem}:root{--color-primary: #ff5722;--color-primary-variant: #ff8964;--color-gray-0: #fff;--color-gray-100: #eee;--color-gray-200: #ccc;--color-gray-300: #aaa;--color-gray-400: #888;--color-gray-500: #666;--color-gray-600: #555;--color-gray-700: #444;--color-gray-800: #333;--color-gray-900: #222;--color-danger: #cb1e1e;--color-success: #16a416;--color-background: #1a1e24;--color-background-variant: #19212c;--color-background-alternate: #09203f;--radius-1: .4rem;--radius-2: .8rem;--radius-3: 1.2rem;--radius-4: 1.6rem;--radius-5: 2rem;--container-w-lg: 80%;--container-w-sm: 94%;--transition: all .3s ease}.dashboard{padding:10rem 0 0}.dashboard-container{background-color:var(--color-background-variant);max-width:var(--container-w-lg);margin:0 auto;border-radius:var(--radius-3);padding:3rem;box-shadow:0 5px 25px #00000014}.dashboard-header{font-size:2.8rem;margin-bottom:2.5rem;color:var(--color-gray-200);font-weight:600}.second-header{color:var(--color-gray-200);margin-bottom:1.6rem}.election-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(28rem,1fr));gap:1.8rem;margin-bottom:2.8rem}.election-title{font-size:2.2rem}.status{font-size:1.4rem;margin-bottom:1.2rem}.election-card{background:var(--color-background-variant);border-radius:12px;padding:16px;transition:transform .2s ease,box-shadow .2s ease}.card-header{margin-bottom:12px}.card-header h4{font-size:1.1rem;font-weight:600;margin-bottom:4px}.card-actions{display:flex;flex-wrap:wrap;gap:8px}.dashboard-actions{display:flex;gap:3.2rem}.no-elections{text-align:center;color:#888;font-style:italic;padding:30px 0}.small{background-color:#3498db;color:var(--color-gray-100)}@media (max-width: 600px){.dashboard-header{flex-direction:column;align-items:flex-start;gap:10px}.header-actions{width:100%;justify-content:flex-start}}.create-election{padding:2rem 0;min-height:100vh}.create-election .container{max-width:600px;margin:auto;background:#fff;padding:2rem;border-radius:12px;box-shadow:0 3px 10px #00000014}.create-election h2{text-align:center;color:#333;margin-bottom:1rem}.create-form{display:flex;flex-direction:column;gap:1rem}.create-form input,.create-form select{padding:10px;border-radius:8px;border:1px solid #ccc;font-size:1rem;outline:none}.create-form label{font-size:.9rem;color:#555}.create-form input:focus{border-color:#1e88e5;box-shadow:0 0 3px #1e88e54d}.election--form-cta{align-self:center}.manage-voters{padding:2rem 0;min-height:100vh}.manage-voters .container{max-width:900px;margin:auto;background:#09203f;padding:2rem;border-radius:12px;box-shadow:0 3px 10px #00000014}.manage-voters h2{text-align:center;color:var(--color-gray-200);margin-bottom:1rem}.voter-table table{width:100%;border-collapse:collapse}.voter-table th,.voter-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #ddd}.voter-table th{background:#1e88e5;text-transform:uppercase;font-size:.9rem}.voter-table tr:hover{background:var(--color-background)}.status{padding:4px 8px;border-radius:6px;font-weight:600;font-size:.85rem}.status.pending{background:#fff3cd;color:#856404}.status.approved{background:#d4edda;color:#155724}.status.rejected{background:#f8d7da;color:#721c24}.btn{padding:6px 12px;border-radius:6px;border:none;cursor:pointer;margin-right:8px;font-weight:500}.approve-btn{background:var(--color-success);color:#fff}.reject-btn{background:var(--color-danger);color:#fff}.approve-btn:hover{background:#218838}.reject-btn:hover{background:#c82333}@media (max-width: 768px){.voter-table table,.voter-table thead,.voter-table tbody,.voter-table th,.voter-table td,.voter-table tr{display:block}.voter-table th{display:none}.voter-table td{position:relative;padding-left:50%;border-bottom:1px solid #eee}.voter-table td:before{position:absolute;left:10px;width:45%;white-space:nowrap;font-weight:700;color:#555}.voter-table td:nth-of-type(1):before{content:"Matric No"}.voter-table td:nth-of-type(2):before{content:"Name"}.voter-table td:nth-of-type(3):before{content:"Department"}.voter-table td:nth-of-type(4):before{content:"Level"}.voter-table td:nth-of-type(5):before{content:"Status"}.voter-table td:nth-of-type(6):before{content:"Action"}}.modal-overlay{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:9999}.modal-container{background:#fff;border-radius:14px;padding:20px 24px;width:90%;max-width:420px;box-shadow:0 10px 30px #0003;text-align:center;animation:modalFadeIn .25s ease}.modal-title{font-size:1.3rem;margin-bottom:.5rem;color:#0f172a}.modal-message{color:#475569;margin-bottom:16px;line-height:1.4}.modal-actions{display:flex;justify-content:center;gap:12px}.modal-button{background:#2563eb;color:#fff;border:none;padding:8px 16px;border-radius:8px;cursor:pointer;font-weight:600;transition:background .2s ease,transform .2s ease}.modal-button:hover{background:#1e40af;transform:translateY(-2px)}.modal-button.danger{background:#dc2626}.modal-button.danger:hover{background:#b91c1c}@keyframes modalFadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.manage-candidates{padding:2rem 0;min-height:100vh}.candidates-container{max-width:90rem;margin:auto;background:#09203f;padding:2rem;border-radius:1.2rem;box-shadow:0 3px 10px #00000014}.candidates-heading{text-align:center;color:var(--color-gray-100);margin-bottom:2rem}.candidate-form{display:flex;flex-direction:column;gap:1.4rem;margin-bottom:2.4rem}.candidate-form input{padding:1.2rem;border:1px solid #ccc;border-radius:var(--radius-3);font-size:1.2rem}.candidate-form input:focus{border-color:#1e88e5;box-shadow:0 0 3px #1e88e54d}.form-message{text-align:center;font-weight:500;color:green;margin-bottom:1rem}.cand--sub-header{margin-bottom:1.8rem}.candidate-list table{width:100%;border-collapse:collapse}.table-header{background-color:#1e88e5;color:#fff}.candidate-list th,.candidate-list td{padding:10px 12px;border-bottom:1px solid #ddd;text-align:left}.candidate-list th{background:#1e88e5;color:#fff;text-transform:uppercase;font-size:.9rem}.candidate-list tr:hover{background:var(--color-background)}.image-preview{margin:10px 0;display:flex;justify-content:center}.candidate-preview{width:100px;height:100px;border-radius:12px;object-fit:cover;border:2px solid #ccc;transition:transform .3s ease}.candidate-preview:hover{transform:scale(1.05)}.candidate-thumb{width:60px;height:60px;border-radius:50%;object-fit:cover;border:2px solid #ddd}.no-image{color:#888;font-size:.9rem}.edit-btn{background:#fbc02d;color:#333}.delete-btn{background:#e53935;color:#fff}.edit-btn:hover{background:#f9a825}.delete-btn:hover{background:#c62828}@media (max-width: 768px){.candidate-list table,.candidate-list thead,.candidate-list tbody,.candidate-list th,.candidate-list td,.candidate-list tr{display:block}.candidate-list th{display:none}.candidate-list td{position:relative;padding-left:50%;border-bottom:1px solid #eee}.candidate-list td:before{position:absolute;left:10px;width:45%;white-space:nowrap;font-weight:700;color:#555}.candidate-list td:nth-of-type(1):before{content:"ID"}.candidate-list td:nth-of-type(2):before{content:"Election ID"}.candidate-list td:nth-of-type(3):before{content:"Position"}.candidate-list td:nth-of-type(4):before{content:"Name"}.candidate-list td:nth-of-type(5):before{content:"Actions"}}.results-page{padding:5rem}.results-heading{font-size:1.8rem;text-align:center;margin-bottom:1.5rem}.results-controls{display:flex;justify-content:center;align-items:center;gap:1rem;margin-bottom:1.5rem}.results-controls select{padding:.4rem 1rem;border-radius:8px;border:1px solid #ccc}.results-table table{width:100%;border-collapse:collapse;margin-bottom:2rem}.results-table th,.results-table td{padding:.8rem;text-align:center;border-bottom:1px solid #ddd}.results-table tr:hover{background:#f9f9f9}.vote-flash{background-color:#e8ffe8!important;transition:background-color 1s ease-out}.winners-section{text-align:center;padding:1rem;border-radius:12px}.winner-item{margin:.4rem 0;font-size:1.1rem}
