@import "https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap";:root{--primary:#1b211a;--details:#3c5028;--secondary:#8bae66;--text:#ebd5ab}*{font-optical-sizing:auto;font-family:Nunito,sans-serif;font-style:normal;font-weight:400}body{margin:0}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;background-color:var(--primary);background-image:url(https://www.transparenttextures.com/patterns/asfalt-light.png);flex-direction:column;width:100vw;min-height:100svh;margin:0;display:flex}.navbar{background-color:var(--secondary);color:var(--primary);z-index:100;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex;position:sticky;top:0}.navbar .navbar-left .logo{color:var(--primary);font-size:1.25rem;font-weight:700;text-decoration:none}.navbar .navbar-center{align-items:center;gap:2rem;display:flex}.navbar .navbar-center a{color:var(--details);font-weight:500;text-decoration:none;transition:color .2s}.navbar .navbar-center a:hover{color:var(--primary)}.navbar .navbar-right button{background-color:var(--primary);color:var(--text);font-optical-sizing:auto;cursor:pointer;border:none;border-radius:8px;padding:.75rem 1rem;font-family:Nunito,sans-serif;font-style:normal;font-weight:700;transition:opacity .2s}.navbar .navbar-right button:hover{opacity:.9}.home{max-width:100%;color:var(--text);margin:0;padding:1rem 6rem 4rem}.home .hero{text-align:center;padding:5rem 0 1rem}.home .hero h1{color:var(--secondary);margin-bottom:1rem;font-size:3.5rem}.home .hero .hero-description{opacity:.8;max-width:700px;color:var(--text);margin:0 auto;font-size:1.2rem;line-height:1.7}.home .hero .hero-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem;margin-top:2rem;display:flex}.home .hero .hero-actions button{cursor:pointer;background-color:var(--secondary);font-optical-sizing:auto;border:none;border-radius:8px;padding:.75rem 1rem;font-family:Nunito,sans-serif;font-size:1rem;font-style:normal;font-weight:700}.home .hero .wallet-status{border:1px solid var(--details);color:var(--text);border-radius:8px;padding:.85rem 1rem}.home .features{margin-top:5rem}.home .features h2{text-align:center;margin-bottom:2rem;font-size:2rem}.home .features .steps{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;display:grid}.home .features .steps .step-card{border:1px solid var(--details);border-radius:12px;padding:1.5rem}.home .features .steps .step-card h3{color:var(--text);margin-bottom:1rem}.home .benefits{margin-top:5rem}.home .benefits h2{text-align:center;margin-bottom:2rem;font-size:2rem}.home .benefits .benefit-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;display:grid}.home .benefits .benefit-grid .benefit-card{border:1px solid var(--details);border-radius:12px;padding:1.5rem}.home .benefits .benefit-grid .benefit-card h3{margin-bottom:1rem}.home .benefits .benefit-grid .benefit-card p{opacity:.85;line-height:1.6}.candidates-page{flex-direction:column;max-width:100%;padding:2rem 6rem 4rem;display:flex}.candidates-page .candidates-header{margin-bottom:2rem}.candidates-page .candidates-header h1{color:var(--text);margin-bottom:.5rem;font-size:2.5rem}.candidates-page .candidates-header p{opacity:.8;color:var(--text);font-size:1.2rem}.candidates-page .candidate-form-card{border:1px solid var(--details);background-color:var(--secondary);border-radius:12px;align-self:center;width:50vw;margin-bottom:2rem;padding:0 1.5rem 1.5rem}.candidates-page .candidate-form-card h2{color:var(--primary);margin-bottom:1rem}.candidates-page .candidate-form-card form{flex-wrap:wrap;gap:1rem;display:flex}.candidates-page .candidate-form-card input{border:1px solid #d1d5db;border-radius:8px;flex:1;padding:.75rem 1rem;font-size:1rem}.candidates-page .candidate-form-card button{background:var(--primary);color:var(--text);cursor:pointer;border:none;border-radius:8px;margin:0 auto;padding:.75rem 1rem;font-weight:700}.candidates-page .candidate-list{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem;display:grid}.candidates-page .candidate-list .candidate-card{border:1px solid var(--details);background:var(--secondary);color:var(--primary);border-radius:12px;padding:1.25rem;transition:transform .2s,box-shadow .2s}.candidates-page .candidate-list .candidate-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000014}.candidates-page .candidate-list .candidate-card .candidate-id{background:#3c502855;border-radius:999px;margin-bottom:.75rem;padding:.3rem .7rem;font-size:.85rem;font-weight:600;display:inline-block}.candidates-page .candidate-list .candidate-card h3{margin:0;font-size:1.1rem}.elections-page{max-width:100%;margin:0;padding:2rem 4rem}.elections-page .elections-header{color:var(--text);margin-bottom:2rem}.elections-page .elections-header h1{margin-bottom:.5rem;font-size:2.5rem}.elections-page .elections-header p{opacity:.8;font-size:1.2rem}.elections-page .elections-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem;display:grid}.elections-page .elections-grid .election-card{background:var(--secondary);border-radius:14px;flex-direction:column;gap:1rem;padding:1.5rem;transition:transform .2s,box-shadow .2s;display:flex}.elections-page .elections-grid .election-card:hover{transform:translateY(-3px);box-shadow:0 6px 20px #00000014}.elections-page .elections-grid .election-card .election-id{background:#3c502855;border-radius:999px;align-self:flex-start;padding:.35rem .75rem;font-size:.85rem;font-weight:600}.elections-page .elections-grid .election-card h2{margin:0;font-size:1.4rem}.elections-page .elections-grid .election-card .election-dates{flex-direction:column;gap:.5rem;display:flex}.elections-page .elections-grid .election-card .election-dates p{color:var(--details);margin:0}.elections-page .elections-grid .election-card .open-election-btn{text-align:center;background:var(--primary);color:var(--text);border-radius:8px;margin-top:auto;padding:.85rem 1rem;font-weight:600;text-decoration:none;transition:opacity .2s}.elections-page .elections-grid .election-card .open-election-btn:hover{opacity:.9}.create-election-page{max-width:100%;margin:0;padding:2rem 6rem 4rem}.create-election-page .page-header{color:var(--text);margin-bottom:2rem}.create-election-page .page-header h1{margin-bottom:.5rem;font-size:2.5rem}.create-election-page .page-header p{opacity:.8;font-size:1.2rem}.create-election-page .election-form{flex-direction:column;gap:2rem;width:50vw;margin:0 auto;display:flex}.create-election-page .form-card{background-color:var(--secondary);width:100%;color:var(--primary);border-radius:16px;align-self:center;padding:1rem 2rem 2rem}.create-election-page .form-card h2{margin-bottom:1rem}.create-election-page .input-group{flex-direction:column;gap:.5rem;display:flex}.create-election-page .input-group label{font-weight:600}.create-election-page .input-group input{border:1px solid #d1d5db;border-radius:8px;padding:.9rem 1rem;font-size:1rem}.create-election-page .date-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem;margin-top:1rem;display:grid}.create-election-page .candidate-selection-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem;margin-top:1.5rem;display:grid}.create-election-page .candidate-option{border:1px solid var(--details);cursor:pointer;border-radius:12px;align-items:center;gap:1rem;padding:1rem;transition:transform .2s,box-shadow .2s;display:flex}.create-election-page .candidate-option:hover{transform:translateY(-2px);box-shadow:0 6px 20px #00000014}.create-election-page .candidate-details{justify-content:center;align-items:center;gap:1rem;display:flex}.create-election-page .candidate-option input{width:18px;height:18px}.create-election-page .candidate-option h3{margin:0;font-size:1rem}.create-election-page .candidate-option span{background:#3c502855;border-radius:999px;padding:.2rem .6rem;font-size:.8rem;font-weight:600;display:inline-block}.create-election-page .submit-btn{background:var(--secondary);color:var(--primary);cursor:pointer;border:none;border-radius:10px;padding:1rem;font-size:1rem;font-weight:600}.election-details{flex-direction:column;align-items:center;max-width:100%;margin:0;padding:2rem 4rem;display:flex}.election-details .election-header{color:var(--text);margin-bottom:1.5rem}.election-details .election-header h1{margin-bottom:1.5rem;font-size:2.75rem}.election-details .election-header .election-meta{flex-wrap:wrap;gap:1rem;display:flex}.election-details .election-header .election-meta .meta-card{border:1px solid var(--details);border-radius:12px;min-width:250px;margin:0 auto;padding:1rem 0 0}.election-details .election-header .election-meta .meta-card span{opacity:.8}.election-details .election-header .election-meta .meta-card p{margin-top:.5rem;font-weight:600}.election-details .candidates-section h2{color:var(--text);margin-bottom:1.5rem}.election-details .candidates-section .candidates-grid{justify-content:center;align-items:center;gap:1.5rem;width:100%;display:flex}.election-details .candidates-section .candidate-card{background:var(--secondary);border-radius:14px;flex-direction:column;gap:1rem;width:10rem;padding:1.5rem;transition:transform .2s,box-shadow .2s;display:flex}.election-details .candidates-section .candidate-card:hover{transform:translateY(-3px);box-shadow:0 6px 20px #00000014}.election-details .candidates-section .candidate-card .candidate-id{background:#3c502855;border-radius:999px;align-self:flex-start;padding:.35rem .75rem;font-size:.85rem;font-weight:600}.election-details .candidates-section .candidate-card h3{margin:0;font-size:1.2rem}.election-details .candidates-section .candidate-card button{background:var(--primary);color:var(--text);cursor:pointer;border:none;border-radius:8px;margin-top:auto;padding:.85rem;font-weight:600}.election-details .candidates-section .candidate-card .voted-badge{text-align:center;color:var(--primary);background:#3c502855;border-radius:8px;margin-top:auto;padding:.85rem;font-weight:600}.election-details .results-link{text-align:center;margin-top:3rem}.election-details .results-link a{background:var(--secondary);color:var(--primary);border-radius:8px;padding:1rem 1.5rem;font-weight:600;text-decoration:none;display:inline-block}.results-page{max-width:50%;margin:0 auto;padding:2rem 4rem}.results-header{text-align:center;color:var(--text);margin-bottom:2rem}.results-header h1{margin-bottom:.5rem;font-size:3rem}.results-header p{opacity:.8;font-size:1.2rem}.winner-card{text-align:center;background:linear-gradient(135deg, var(--secondary), var(--details));color:var(--primary);border-radius:24px;margin-bottom:3rem;padding:3rem 2rem;box-shadow:0 20px 40px #00000026}.winner-card .winner-label{letter-spacing:2px;text-transform:uppercase;font-size:.9rem}.winner-card h2{margin:1rem 0;font-size:3rem;font-weight:700}.winner-card .winner-votes{font-size:1.25rem;font-weight:600}.leaderboard{flex-direction:column;gap:1rem;display:flex}.leaderboard-row{background:var(--secondary);color:var(--primary);border-radius:16px;grid-template-columns:max-content 1fr max-content;align-items:center;gap:1rem;padding:1.25rem 1.5rem;transition:transform .2s,box-shadow .2s;display:grid}.leaderboard-row:hover{transform:translateY(-2px);box-shadow:0 8px 20px #00000014}.first-place{border:2px solid #111827}.position{text-align:left;width:fit-content;font-size:1.2rem;font-weight:700}.candidate{justify-self:left;font-size:1.15rem;font-weight:600}.votes{text-align:right;justify-self:right;width:fit-content;font-size:1.25rem;font-weight:700}@media (width<=600px){.leaderboard-row{text-align:center;grid-template-columns:1fr;gap:.75rem}.votes{text-align:center}.winner-card h2{font-size:2rem}}
