:root{--navy-900:#0d1054;--navy-800:#1e2894;--navy-700:#2832b8;--navy-600:#3640cc;--navy-500:#4a54e0;--navy-400:#6270f0;--navy-300:#8090f8;--gold-500:#c8970f;--gold-400:#d4a827;--gold-300:#e8c050;--gold-100:#fdf5dc;--bg:#f0f4f9;--surface:#fff;--surface2:#f8fafc;--border:#dde3ec;--text-1:#0f172a;--text-2:#334155;--text-3:#64748b;--text-4:#94a3b8;--green-600:#059669;--green-100:#dcfce7;--green-800:#166534;--red-600:#dc2626;--red-100:#fee2e2;--red-800:#991b1b;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--shadow-sm:0 1px 3px #00000014,0 1px 2px #0000000d;--shadow-md:0 4px 12px #0000001a,0 2px 4px #0000000f;--shadow-lg:0 10px 30px #0000001f,0 4px 8px #00000014;--transition:0.2s ease}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:#f0f4f9;background:var(--bg);color:#0f172a;color:var(--text-1);font-family:Inter,Segoe UI,system-ui,sans-serif;line-height:1.6;min-height:100vh}.page-wrap{margin:0 auto;max-width:900px;padding:40px 24px}.badge{align-items:center;border-radius:999px;display:inline-flex;font-size:.78rem;font-weight:600;gap:6px;letter-spacing:.02em;padding:4px 12px;text-transform:uppercase}.badge-open{background:#dcfce7;background:var(--green-100);color:#166534;color:var(--green-800)}.badge-closed{background:#fee2e2;background:var(--red-100);color:#991b1b;color:var(--red-800)}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:translateX(0)}}.anim-fade-up{animation:fadeUp .5s ease both}.anim-fade-in{animation:fadeIn .4s ease both}.anim-slide-left{animation:slideInLeft .6s ease both}.login-container{align-items:center;animation:gradientShift 12s ease infinite;background:linear-gradient(-45deg,#eef2ff,#e0e7ff,#f0f4ff,#ede9fe,#f5f3ff,#e0f2fe);background-size:400% 400%;display:flex;justify-content:center;min-height:100vh;overflow:hidden;padding:24px;position:relative}.login-container:after,.login-container:before{border-radius:50%;content:"";filter:blur(80px);opacity:.35;pointer-events:none;position:absolute}.login-container:before{animation:blobMove1 16s ease-in-out infinite;background:radial-gradient(circle,#a5b4fc,#818cf8);height:420px;left:-100px;top:-100px;width:420px}.login-container:after{animation:blobMove2 18s ease-in-out infinite;background:radial-gradient(circle,#c4b5fd,#7dd3fc);bottom:-80px;height:360px;right:-80px;width:360px}@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes blobMove1{0%,to{transform:translate(0) scale(1)}33%{transform:translate(60px,40px) scale(1.1)}66%{transform:translate(-30px,60px) scale(.95)}}@keyframes blobMove2{0%,to{transform:translate(0) scale(1)}33%{transform:translate(-50px,-40px) scale(1.08)}66%{transform:translate(40px,-60px) scale(.92)}}.login-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);max-width:440px;overflow:hidden;position:relative;width:100%;z-index:1}.login-box-header{background:#f8fafc;border-bottom:1px solid var(--border);padding:28px 36px 24px;text-align:center}.login-logo{color:var(--navy-600);font-size:.8rem;font-weight:800;letter-spacing:.12em;margin-bottom:6px;text-transform:uppercase}.login-title{color:var(--text-1);font-size:1.3rem;font-weight:700;margin-bottom:0}.login-steps{gap:0;justify-content:center;margin-top:20px}.login-step,.login-steps{align-items:center;display:flex}.login-step{flex-direction:column;gap:6px}.step-circle{align-items:center;background:var(--border);border:2px solid var(--border);border-radius:50%;color:var(--text-4);display:flex;font-size:.8rem;font-weight:700;height:32px;justify-content:center;transition:all var(--transition);width:32px}.login-step.active .step-circle{background:var(--navy-600);border-color:var(--navy-600);color:#fff}.login-step.done .step-circle{background:var(--green-600);border-color:var(--green-600);color:#fff}.step-label{color:var(--text-4);font-size:.7rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.login-step.active .step-label{color:var(--navy-600)}.login-step.done .step-label{color:var(--green-600)}.step-line{background:var(--border);flex-shrink:0;height:2px;margin:0 8px 20px;width:60px}.login-body{padding:32px 36px}.login-subtext{color:var(--text-3);font-size:.9rem;line-height:1.5;margin-bottom:28px}.form-group{margin-bottom:20px}.form-group label{color:var(--text-2);display:block;font-size:.85rem;font-weight:600;letter-spacing:.01em;margin-bottom:8px}.form-group input{background:var(--surface2);border:1.5px solid var(--border);border-radius:var(--radius-md);color:var(--text-1);font-family:inherit;font-size:1rem;outline:none;padding:12px 16px;transition:border-color var(--transition),box-shadow var(--transition);width:100%}.form-group input:focus{background:var(--surface);border-color:var(--navy-400);box-shadow:0 0 0 3px #2d5bbe1f}.otp-hint{color:var(--text-4);font-size:.78rem;letter-spacing:.1em;margin-top:6px;text-align:center}.login-btn{background:var(--navy-600);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-family:inherit;font-size:.95rem;font-weight:700;letter-spacing:.02em;margin-top:4px;padding:13px;transition:background var(--transition),transform var(--transition),box-shadow var(--transition);width:100%}.login-btn:hover:not(:disabled){background:var(--navy-500);box-shadow:0 4px 16px #1a346859;transform:translateY(-1px)}.login-btn:disabled{background:var(--border);color:var(--text-4);cursor:not-allowed;transform:none}.login-btn-secondary{background:#0000;border:1.5px solid var(--border);border-radius:var(--radius-md);color:var(--text-3);cursor:pointer;font-family:inherit;font-size:.88rem;font-weight:500;margin-top:12px;padding:11px;transition:border-color var(--transition),color var(--transition);width:100%}.login-btn-secondary:hover{border-color:var(--navy-400);color:var(--navy-400)}.login-success{background:var(--green-100);color:var(--green-800)}.login-error,.login-success{align-items:flex-start;border-radius:var(--radius-md);display:flex;font-size:.88rem;gap:10px;line-height:1.5;margin-bottom:20px;padding:12px 14px}.login-error{background:var(--red-100);color:var(--red-800)}.elections-page{background:var(--bg);min-height:100vh}.elections-main{margin:0 auto;max-width:780px;padding:40px 24px 64px}.elections-page-title{color:var(--navy-900);font-size:1.55rem;font-weight:800;margin-bottom:4px}.elections-page-sub{color:var(--text-3);font-size:.9rem;margin-bottom:32px}.toast{align-items:flex-start;border-radius:var(--radius-md);display:flex;font-size:.9rem;gap:10px;line-height:1.5;margin-bottom:24px;padding:14px 18px}.toast-success{background:#ecfdf5;border:1px solid #6ee7b7;color:#065f46}.toast-error{background:#fef2f2;border:1px solid #fca5a5;color:#991b1b}.toast-icon{flex-shrink:0;font-size:1.1rem;margin-top:1px}.elections-empty,.elections-loading{color:var(--text-3);font-size:.95rem;padding:80px 24px;text-align:center}.elections-spinner{animation:spin .7s linear infinite;border:3px solid var(--border);border-radius:50%;border-top-color:var(--navy-600);height:36px;margin:0 auto 16px;width:36px}@keyframes spin{to{transform:rotate(1turn)}}.election-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);margin-bottom:28px;overflow:hidden;transition:box-shadow var(--transition)}.election-card:hover{box-shadow:var(--shadow-lg)}.election-card-header{background:var(--navy-800);padding:20px 28px 18px}.election-card-title{color:#fff;font-size:1.1rem;font-weight:700;margin-bottom:8px}.election-card-meta{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.election-badge{align-items:center;border-radius:999px;display:inline-flex;font-size:.72rem;font-weight:700;gap:5px;letter-spacing:.04em;padding:3px 10px;text-transform:uppercase}.election-badge-open{background:#34d3992e;border:1px solid #34d3994d;color:#34d399}.election-badge-year{background:#ffffff1a;border:1px solid #ffffff1f;color:#ffffff8c}.election-card-body{padding:24px 28px}.candidates-label{color:var(--text-3);font-size:.75rem;font-weight:700;letter-spacing:.06em;margin-bottom:14px;text-transform:uppercase}.candidate-list{list-style:none;margin:0;padding:0}.candidate-item{align-items:center;background:#f8fafc;border:1.5px solid var(--border);border-radius:var(--radius-md);display:flex;gap:16px;justify-content:space-between;margin-bottom:10px;padding:14px 18px;transition:border-color var(--transition),background var(--transition)}.candidate-item:last-child{margin-bottom:0}.candidate-item:hover{background:#f0f4fb;border-color:var(--navy-400)}.candidate-info{display:flex;flex-direction:column;gap:2px;min-width:0}.candidate-name{color:var(--text-1);font-size:.95rem;font-weight:600}.candidate-university{color:var(--text-3);font-size:.8rem}.vote-btn{background:var(--navy-600);border:none;border-radius:999px;color:#fff;cursor:pointer;flex-shrink:0;font-family:inherit;font-size:.85rem;font-weight:700;padding:9px 22px;transition:background var(--transition),transform var(--transition),box-shadow var(--transition);white-space:nowrap}.vote-btn:hover:not(:disabled){background:var(--navy-400);box-shadow:0 4px 12px #1a34684d;transform:translateY(-1px)}.vote-btn:disabled{background:var(--border);color:#94a3b8;cursor:not-allowed;transform:none}.vote-btn-voted{background:#d1fae5;border:1.5px solid #6ee7b7;border-radius:999px;color:#065f46;cursor:default;flex-shrink:0;font-family:inherit;font-size:.85rem;font-weight:700;padding:9px 22px;white-space:nowrap}.voted-banner{align-items:center;background:#ecfdf5;border:1px solid #6ee7b7;border-radius:var(--radius-md);color:#065f46;display:flex;font-size:.88rem;font-weight:600;gap:8px;margin-top:18px;padding:12px 16px}@media (max-width:600px){.elections-main{padding:28px 16px 48px}.election-card-header{padding:16px 20px 14px}.election-card-body{padding:18px 20px}.candidate-item{align-items:flex-start;flex-direction:column;gap:10px}.vote-btn,.vote-btn-voted{text-align:center;width:100%}}.navbar{align-items:center;background:var(--navy-800);box-shadow:0 2px 12px #00000040;display:flex;height:64px;justify-content:space-between;padding:0 48px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.brand{color:var(--gold-300);font-size:1.1rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.nav-links{align-items:center;display:flex;gap:4px}.nav-links a{border-radius:var(--radius-md);color:#ffffffb3;font-size:.9rem;font-weight:500;padding:8px 16px;text-decoration:none;transition:background var(--transition),color var(--transition)}.nav-links a:hover{background:#ffffff14;color:#fff}.nav-user{align-items:center;display:flex;gap:14px}.voter-name{color:#fff9;font-size:.88rem;font-weight:500;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.signup-btn{background:var(--gold-400);border:none;border-radius:999px;color:var(--navy-900);cursor:pointer;font-size:.85rem;font-weight:700;letter-spacing:.01em;padding:9px 20px;transition:background var(--transition),transform var(--transition)}.signup-btn:hover{background:var(--gold-300);transform:translateY(-1px)}@media (max-width:640px){.navbar{padding:0 20px}.nav-links a{font-size:.82rem;padding:6px 10px}.voter-name{display:none}}.leaderboard-page{background:var(--bg);min-height:100vh}.leaderboard-main{margin:0 auto;max-width:880px;padding:40px 24px 64px}.leaderboard-top{align-items:flex-end;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:32px}.leaderboard-top-left h2{color:var(--navy-900);font-size:1.55rem;font-weight:800;margin-bottom:4px}.leaderboard-top-left p{color:var(--text-3);font-size:.88rem}.year-selector{-webkit-appearance:none;appearance:none;background:var(--surface);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='m1 1 5 5 5-5' stroke='%2364748b' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;border:1.5px solid var(--border);border-radius:var(--radius-md);color:var(--text-1);cursor:pointer;font-family:inherit;font-size:.9rem;font-weight:600;outline:none;padding:9px 36px 9px 14px;transition:border-color var(--transition)}.year-selector:focus{border-color:var(--navy-400)}.leaderboard-empty,.leaderboard-loading{color:var(--text-3);font-size:.95rem;padding:80px 24px;text-align:center}.leaderboard-spinner{animation:lb-spin .7s linear infinite;border:3px solid var(--border);border-radius:50%;border-top-color:var(--navy-600);height:36px;margin:0 auto 16px;width:36px}@keyframes lb-spin{to{transform:rotate(1turn)}}.leaderboard-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);margin-bottom:28px;overflow:hidden}.leaderboard-card-header{align-items:center;background:var(--navy-800);display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;padding:18px 28px}.leaderboard-card-title{color:#fff;font-size:1.05rem;font-weight:700}.leaderboard-card-badges{display:flex;flex-wrap:wrap;gap:8px}.lb-badge{align-items:center;border-radius:999px;display:inline-flex;font-size:.7rem;font-weight:700;gap:5px;letter-spacing:.04em;padding:3px 10px;text-transform:uppercase}.lb-badge-open{background:#34d3992e;border:1px solid #34d3994d;color:#34d399}.lb-badge-closed{background:#ffffff14;border:1px solid #ffffff1f;color:#ffffff73}.lb-badge-year{background:#d4a82726;border:1px solid #d4a82740;color:var(--gold-300)}.leaderboard-table-wrap{overflow-x:auto}.leaderboard-table{border-collapse:collapse;font-size:.9rem;width:100%}.leaderboard-table thead tr{border-bottom:2px solid var(--border)}.leaderboard-table th{color:var(--text-3);font-size:.72rem;font-weight:700;letter-spacing:.06em;padding:14px 20px;text-align:left;text-transform:uppercase;white-space:nowrap}.leaderboard-table td{border-bottom:1px solid var(--border);color:var(--text-1);padding:14px 20px;vertical-align:middle}.leaderboard-table tbody tr:last-child td{border-bottom:none}.leaderboard-table tbody tr:hover td{background:#f8fafc}.leaderboard-table tbody tr.top-rank td{background:#fffbeb}.leaderboard-table tbody tr.top-rank td:first-child{color:var(--gold-400);font-weight:800}.rank-medal{align-items:center;background:var(--border);border-radius:50%;color:var(--text-3);display:inline-flex;font-size:.75rem;font-weight:800;height:26px;justify-content:center;width:26px}.rank-medal-gold{background:#fef3c7;border:1.5px solid #fcd34d;color:#92400e}.vote-count-bar-wrap{align-items:center;display:flex;gap:10px}.vote-count-bar{background:var(--border);border-radius:999px;flex:1 1;height:6px;min-width:60px;overflow:hidden}.vote-count-fill{background:var(--navy-600);border-radius:999px;height:100%;transition:width .6s ease}.top-rank .vote-count-fill{background:var(--gold-400)}.vote-count-num{color:var(--text-1);font-weight:700;min-width:20px;text-align:right}@media (max-width:600px){.leaderboard-main{padding:28px 16px 48px}.leaderboard-card-header{padding:14px 18px}.leaderboard-table td,.leaderboard-table th{padding:12px 14px}}.guidelines-page{background:var(--bg);min-height:100vh}.guidelines-main{margin:0 auto;max-width:740px;padding:40px 24px 72px}.guidelines-page-title{color:var(--navy-900);font-size:1.6rem;font-weight:800;margin-bottom:8px}.guidelines-page-sub{border-bottom:1px solid var(--border);color:var(--text-3);font-size:.9rem;margin-bottom:40px;padding-bottom:24px}.guidelines-section{margin-bottom:40px}.section-heading{border-bottom:2px solid var(--navy-400);color:var(--navy-800);display:inline-block;font-size:1rem;font-weight:700;letter-spacing:.06em;margin-bottom:16px;padding-bottom:10px;text-transform:uppercase}.guidelines-section li,.guidelines-section p{color:var(--text-2);font-size:.93rem;line-height:1.75}.guidelines-section ul{display:flex;flex-direction:column;gap:8px;list-style:none;padding-left:0}.guidelines-section ul li{align-items:flex-start;display:flex;gap:10px}.guidelines-section ul li:before{color:var(--navy-400);content:"—";flex-shrink:0;font-weight:700;margin-top:1px}.step-cards{display:flex;flex-direction:column;gap:16px}.stage-card{align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);display:flex;gap:20px;padding:20px 24px}.stage-card-num{align-items:center;background:var(--navy-800);border-radius:50%;color:var(--gold-300);display:flex;flex-shrink:0;font-size:.85rem;font-weight:800;height:36px;justify-content:center;width:36px}.stage-card-body{min-width:0}.stage-title{color:var(--navy-900);font-size:.92rem;font-weight:700;margin-bottom:6px}.stage-card p{color:var(--text-2);font-size:.88rem;line-height:1.65;margin:0}@media (max-width:600px){.guidelines-main{padding:28px 16px 56px}.guidelines-page-title{font-size:1.3rem}.stage-card{padding:16px 18px}}
/*# sourceMappingURL=main.f15f10fa.css.map*/