:root{--color-primary:#7a1d4a;--color-primary-dark:#5c1636;--color-primary-light:#9b2d5f;--color-primary-hover:#8b2255;--color-accent-gold:#d4a853;--color-accent-warm:#c4956a;--color-feature-ods:#c4956a;--color-feature-vote:#7a1d4a;--color-feature-audit:#b85c3a;--color-bg-primary:#fff;--color-bg-secondary:#f8f6f4;--color-bg-card:#fff;--color-bg-input:#fff;--color-bg-footer:#5c1636;--color-text-primary:#1a1a2e;--color-text-secondary:#4a4a5a;--color-text-muted:#7a7a8a;--color-text-light:#9a9aaa;--color-text-white:#fff;--color-text-link:#7a1d4a;--color-border:#e0ddd8;--color-border-light:#eeece8;--color-border-input:#d5d0ca;--color-border-input-focus:#7a1d4a;--shadow-card:0 2px 16px #7a1d4a0f;--shadow-card-hover:0 8px 32px #7a1d4a1f;--shadow-login:0 8px 40px #00000014;--shadow-button:0 4px 16px #7a1d4a4d;--shadow-button-hover:0 6px 24px #7a1d4a66;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-xs:.75rem;--font-size-sm:.8125rem;--font-size-base:.9375rem;--font-size-md:1rem;--font-size-lg:1.125rem;--font-size-xl:1.5rem;--font-size-2xl:1.75rem;--font-size-3xl:2.25rem;--font-size-4xl:2.75rem;--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--spacing-3xl:4rem;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:20px;--radius-full:50%;--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.4s cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-family);color:var(--color-text-primary);background-color:var(--color-bg-secondary);min-height:100vh;line-height:1.6}#root{flex-direction:column;min-height:100vh;display:flex}a{color:var(--color-text-link);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-primary-hover)}img{max-width:100%;height:auto;display:block}button{cursor:pointer;font-family:var(--font-family);background:0 0;border:none;outline:none}input{font-family:var(--font-family);border:none;outline:none}ul,ol{list-style:none}.container{width:100%;max-width:1200px;padding:0 var(--spacing-xl);margin:0 auto}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.app{flex-direction:column;min-height:100vh;display:flex;position:relative}.app:before{content:"";filter:blur(14px)brightness(.55);z-index:-1;background-image:url(/uide-campus.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover;position:fixed;inset:0;transform:scale(1.08)}.main-content{padding-top:var(--spacing-3xl);padding-bottom:var(--spacing-3xl);flex:1}.hero-container{gap:var(--spacing-3xl);grid-template-columns:1fr 420px;align-items:start;display:grid}.hero-left{gap:var(--spacing-2xl);flex-direction:column;display:flex}@media (width<=968px){.hero-container{gap:var(--spacing-xl);grid-template-columns:1fr}}@media (width<=640px){.main-content{padding-top:var(--spacing-xl);padding-bottom:var(--spacing-xl)}}.hero{padding-top:var(--spacing-xl);animation:.6s both fadeInUp}.hero__title{font-size:var(--font-size-4xl);color:#fff;text-shadow:0 2px 8px #0000004d;letter-spacing:-.02em;margin-bottom:var(--spacing-lg);font-weight:800;line-height:1.15}.hero__title-line{display:block}.hero__description{font-size:var(--font-size-base);color:#ffffffe6;max-width:520px;line-height:1.7}@media (width<=968px){.hero{text-align:center;padding-top:var(--spacing-md)}.hero__title{font-size:var(--font-size-3xl)}.hero__description{margin:0 auto}}@media (width<=640px){.hero__title{font-size:var(--font-size-2xl)}.hero__description{font-size:var(--font-size-sm)}}.login-card{background-color:var(--color-bg-card);border-radius:var(--radius-xl);padding:var(--spacing-2xl);box-shadow:var(--shadow-login);border:1px solid var(--color-border-light);animation:.6s .2s both fadeInRight;position:relative;overflow:hidden}.login-card:before{content:"";background:linear-gradient(90deg, var(--color-primary), var(--color-accent-gold), var(--color-primary));background-size:200% 100%;height:3px;animation:3s infinite shimmer;position:absolute;top:0;left:0;right:0}.login-card__header{text-align:center;margin-bottom:var(--spacing-xl)}.login-card__logo-wrapper{height:72px;margin:0 auto var(--spacing-lg);transition:transform var(--transition-base);justify-content:center;display:flex}.login-card__logo-wrapper:hover{transform:scale(1.05)}.login-card__logo{object-fit:contain;mix-blend-mode:multiply;width:auto;height:100%}.login-card__title{font-size:var(--font-size-2xl);color:var(--color-text-primary);margin-bottom:var(--spacing-xs);letter-spacing:-.01em;font-weight:700}.login-card__subtitle{font-size:var(--font-size-sm);color:var(--color-text-muted)}.login-card__form{gap:var(--spacing-lg);flex-direction:column;display:flex}.login-card__field{gap:var(--spacing-sm);flex-direction:column;display:flex}.login-card__label{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:600}.login-card__input-wrapper{background-color:var(--color-bg-input);border:1.5px solid var(--color-border-input);border-radius:var(--radius-md);padding:0 var(--spacing-md);height:48px;transition:all var(--transition-fast);align-items:center;gap:var(--spacing-sm);display:flex}.login-card__input-wrapper:focus-within{border-color:var(--color-border-input-focus);box-shadow:0 0 0 3px #7a1d4a14}.login-card__input-icon{color:var(--color-text-light);transition:color var(--transition-fast);flex-shrink:0;align-items:center;display:flex}.login-card__input-wrapper:focus-within .login-card__input-icon{color:var(--color-primary)}.login-card__input{height:100%;font-size:var(--font-size-sm);color:var(--color-text-primary);background:0 0;flex:1}.login-card__input::placeholder{color:var(--color-text-light)}.login-card__toggle-password{color:var(--color-text-light);padding:var(--spacing-xs);border-radius:var(--radius-sm);transition:all var(--transition-fast);align-items:center;display:flex}.login-card__toggle-password:hover{color:var(--color-primary);background-color:var(--color-bg-secondary)}.login-card__error{align-items:flex-start;gap:var(--spacing-sm);color:#b91c1c;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);font-size:var(--font-size-xs);margin-top:calc(-1 * var(--spacing-sm));background-color:#fee2e2;border:1px solid #fca5a5;display:flex}.login-card__error svg{flex-shrink:0;margin-top:2px}.login-card__forgot{text-align:right;margin-top:calc(-1 * var(--spacing-sm))}.login-card__forgot-link{font-size:var(--font-size-xs);color:var(--color-primary);transition:color var(--transition-fast);font-weight:500}.login-card__forgot-link:hover{color:var(--color-primary-hover);text-decoration:underline}.login-card__submit{justify-content:center;align-items:center;gap:var(--spacing-sm);background:linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);width:100%;height:50px;color:var(--color-text-white);font-size:var(--font-size-sm);border-radius:var(--radius-md);box-shadow:var(--shadow-button);transition:all var(--transition-base);font-weight:600;display:flex;position:relative;overflow:hidden}.login-card__submit:before{content:"";background:linear-gradient(135deg, var(--color-primary-hover) 0%, var(--color-primary) 100%);opacity:0;transition:opacity var(--transition-base);position:absolute;inset:0}.login-card__submit:hover:not(:disabled){box-shadow:var(--shadow-button-hover);transform:translateY(-2px)}.login-card__submit:hover:not(:disabled):before{opacity:1}.login-card__submit:active:not(:disabled){transform:translateY(0)}.login-card__submit>*{z-index:1;position:relative}.login-card__submit--loading{cursor:not-allowed;opacity:.85}.login-card__spinner{border-radius:var(--radius-full);border:2.5px solid #ffffff4d;border-top-color:#fff;width:22px;height:22px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-card__divider{background-color:var(--color-border-light);height:1px;margin:var(--spacing-lg) 0}.login-card__security{justify-content:center;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-text-muted);display:flex}.login-card__security svg{color:var(--color-accent-warm)}@media (width<=968px){.login-card{max-width:440px;margin:0 auto}}@media (width<=640px){.login-card{padding:var(--spacing-xl);border-radius:var(--radius-lg)}.login-card__logo-wrapper{width:60px;height:60px}.login-card__title{font-size:var(--font-size-xl)}}.features{margin-top:var(--spacing-md)}.features__grid{gap:var(--spacing-lg);grid-template-columns:1fr 1fr;display:grid}.features__grid .feature-card:last-child{grid-column:1/-1}.feature-card{background-color:var(--color-bg-card);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);padding:var(--spacing-xl);transition:all var(--transition-base);animation:.5s both fadeInUp;position:relative;overflow:hidden}.feature-card:after{content:"";opacity:0;height:3px;transition:opacity var(--transition-base);position:absolute;bottom:0;left:0;right:0}.feature-card:hover{box-shadow:var(--shadow-card-hover);border-color:#0000;transform:translateY(-4px)}.feature-card:hover:after{opacity:1}.feature-card--warm .feature-card__icon-wrapper{color:var(--color-feature-ods);background-color:#c4956a1f}.feature-card--warm:after{background:linear-gradient(90deg, var(--color-feature-ods), transparent)}.feature-card--primary .feature-card__icon-wrapper{color:var(--color-feature-vote);background-color:#7a1d4a14}.feature-card--primary:after{background:linear-gradient(90deg, var(--color-feature-vote), transparent)}.feature-card--accent .feature-card__icon-wrapper{color:var(--color-feature-audit);background-color:#b85c3a1a}.feature-card--accent:after{background:linear-gradient(90deg, var(--color-feature-audit), transparent)}.feature-card__icon-wrapper{border-radius:var(--radius-md);width:48px;height:48px;margin-bottom:var(--spacing-md);transition:transform var(--transition-base);justify-content:center;align-items:center;display:flex}.feature-card:hover .feature-card__icon-wrapper{transform:scale(1.1)}.feature-card__title{font-size:var(--font-size-sm);color:var(--color-text-primary);margin-bottom:var(--spacing-sm);letter-spacing:-.01em;font-weight:700}.feature-card__description{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:1.65}@media (width<=640px){.features__grid{grid-template-columns:1fr}.features__grid .feature-card:last-child{grid-column:auto}.feature-card{padding:var(--spacing-lg)}}.footer{background:linear-gradient(135deg, var(--color-bg-footer) 0%, var(--color-primary) 100%);color:var(--color-text-white);margin-top:auto;position:relative;overflow:hidden}.footer:before{content:"";background:linear-gradient(90deg, transparent, var(--color-accent-gold), transparent);height:1px;position:absolute;top:0;left:0;right:0}.footer__inner{padding-top:var(--spacing-xl);padding-bottom:var(--spacing-xl);justify-content:space-between;align-items:center;gap:var(--spacing-xl);display:flex}.footer__left{max-width:400px}.footer__brand{font-size:var(--font-size-lg);margin-bottom:var(--spacing-sm);letter-spacing:-.01em;font-weight:700;display:block}.footer__copyright{font-size:var(--font-size-xs);color:#ffffffa6;line-height:1.6}.footer__links{align-items:center;gap:var(--spacing-xl);flex-wrap:wrap;display:flex}.footer__link{font-size:var(--font-size-xs);color:#ffffffbf;transition:color var(--transition-fast);font-weight:500;position:relative}.footer__link:hover{color:var(--color-text-white)}.footer__link:after{content:"";background-color:var(--color-accent-gold);width:0;height:1px;transition:width var(--transition-base);position:absolute;bottom:-4px;left:0}.footer__link:hover:after{width:100%}@media (width<=768px){.footer__inner{text-align:center;flex-direction:column}.footer__links{justify-content:center;gap:var(--spacing-md)}}.dashboard{gap:var(--spacing-xl);flex-direction:column;max-width:1200px;margin:0 auto;display:flex}.dashboard__header{margin-bottom:var(--spacing-sm)}.dashboard__title{font-size:var(--font-size-3xl);color:var(--color-primary);margin-bottom:var(--spacing-xs);font-weight:800}.dashboard__subtitle{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.dashboard__secure-banner{border:1px solid var(--color-border-light);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-xs);color:var(--color-text-primary);background-color:#f1f0ec;justify-content:space-between;align-items:center;font-weight:600;display:flex}.dashboard__secure-left,.dashboard__secure-right{align-items:center;gap:var(--spacing-sm);display:flex}.dashboard__secure-left svg{color:#10b981}.dashboard__node-status{background-color:#10b981;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 2px #10b98133}.dashboard__grid{gap:var(--spacing-2xl);grid-template-columns:1fr 340px;align-items:start;display:grid}.dashboard__section-title{font-size:var(--font-size-lg);color:var(--color-primary);margin-bottom:var(--spacing-md);border-bottom:1px solid var(--color-border-light);padding-bottom:var(--spacing-sm);font-weight:700}.election-card{background-color:var(--color-bg-primary);border:1px solid var(--color-border-light);border-radius:var(--radius-md);padding:var(--spacing-lg);margin-bottom:var(--spacing-md);box-shadow:0 2px 8px #00000005}.election-card__header{margin-bottom:var(--spacing-md);justify-content:space-between;align-items:center;display:flex}.election-card__badge{border-radius:var(--radius-sm);letter-spacing:.5px;align-items:center;gap:6px;padding:4px 10px;font-size:10px;font-weight:700;display:inline-flex}.election-card__badge--open{color:var(--color-primary);background-color:#fee2e2}.election-card__badge-dot{background-color:var(--color-primary);border-radius:50%;width:6px;height:6px}.election-card__timer{font-size:var(--font-size-xs);color:#dc2626;border-radius:var(--radius-sm);background-color:#fee2e2;align-items:center;gap:4px;padding:4px 10px;font-weight:600;display:flex}.election-card__title{font-size:var(--font-size-xl);color:var(--color-text-primary);margin-bottom:var(--spacing-sm);font-weight:800}.election-card__title--small{font-size:var(--font-size-lg);margin-bottom:4px}.election-card__description{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--spacing-lg);line-height:1.5}.election-card__divider{background-color:var(--color-border-light);height:1px;margin-bottom:var(--spacing-md)}.election-card__footer{align-items:center;gap:var(--spacing-lg);display:flex}.election-card__btn-vote{align-items:center;gap:var(--spacing-sm);background-color:var(--color-primary);color:var(--color-text-white);padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-sm);font-weight:600;font-size:var(--font-size-sm);transition:background-color var(--transition-fast);display:flex}.election-card__btn-vote:hover{background-color:#5a1537}.election-card__time-est{color:var(--color-text-secondary);font-size:var(--font-size-xs);align-items:center;gap:6px;display:flex}.election-card--completed{background-color:#fafafa}.election-card__content-row{justify-content:space-between;align-items:center;display:flex}.election-card__status-badge{color:#10b981;border-radius:var(--radius-sm);font-size:var(--font-size-sm);border:1px solid #10b981;align-items:center;gap:6px;padding:6px 12px;font-weight:600;display:inline-flex}.instructions-card{border:1px solid var(--color-border-light);border-radius:var(--radius-md);padding:var(--spacing-lg);background-color:#fafafa}.instructions-card__header{align-items:center;gap:var(--spacing-sm);color:var(--color-primary);margin-bottom:var(--spacing-lg);border-bottom:1px solid var(--color-border-light);padding-bottom:var(--spacing-md);display:flex}.instructions-card__title{font-size:var(--font-size-md);font-weight:700}.instructions-card__steps{gap:var(--spacing-lg);margin-bottom:var(--spacing-xl);flex-direction:column;display:flex}.instruction-step{gap:var(--spacing-md);display:flex}.instruction-step__number{border:1px solid var(--color-text-tertiary);width:28px;height:28px;font-size:var(--font-size-sm);color:var(--color-text-secondary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.instruction-step__content h4{font-size:var(--font-size-sm);color:var(--color-text-primary);margin-bottom:4px;font-weight:700}.instruction-step__content p{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:1.4}.instructions-card__help{padding:var(--spacing-md);border-radius:var(--radius-sm);text-align:center;align-items:center;gap:var(--spacing-sm);background-color:#f3f1ec;flex-direction:column;display:flex}.instructions-card__help svg{color:var(--color-text-secondary)}.instructions-card__help p{font-size:var(--font-size-xs);color:var(--color-text-primary)}.instructions-card__help a{color:var(--color-primary);font-weight:600;text-decoration:underline}@media (width<=968px){.dashboard__grid{grid-template-columns:1fr}}.navbar{background-color:var(--color-bg-primary);border-bottom:1px solid var(--color-border-light);z-index:100;animation:.4s slideDown;position:sticky;top:0}.navbar__inner{justify-content:space-between;align-items:center;height:64px;display:flex}.navbar__brand{align-items:center;gap:var(--spacing-sm);display:flex}.navbar__logo{border-radius:var(--radius-sm);object-fit:cover;width:36px;height:36px}.navbar__title{font-size:var(--font-size-lg);color:var(--color-primary);letter-spacing:-.01em;font-weight:700}.navbar__links{align-items:center;gap:var(--spacing-xl);display:flex}.navbar__link{font-size:var(--font-size-sm);color:var(--color-text-secondary);transition:color var(--transition-fast);padding:var(--spacing-xs) 0;font-weight:500;position:relative}.navbar__link:after{content:"";background-color:var(--color-primary);width:0;height:2px;transition:width var(--transition-base);border-radius:1px;position:absolute;bottom:-2px;left:0}.navbar__link:hover{color:var(--color-primary)}.navbar__link:hover:after{width:100%}.navbar__actions{align-items:center;gap:var(--spacing-sm);display:flex}.navbar__icon-btn{border-radius:var(--radius-full);width:40px;height:40px;color:var(--color-text-secondary);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.navbar__icon-btn:hover{background-color:var(--color-bg-secondary);color:var(--color-primary)}.navbar__hamburger{padding:var(--spacing-sm);flex-direction:column;gap:5px;display:none}.navbar__hamburger span{background-color:var(--color-text-secondary);width:22px;height:2px;transition:all var(--transition-fast);border-radius:2px;display:block}.navbar__user-menu{margin-left:var(--spacing-sm);position:relative}.navbar__avatar-btn{border-radius:var(--radius-full);border:2px solid var(--color-border-light);width:40px;height:40px;transition:all var(--transition-fast);cursor:pointer;padding:0;overflow:hidden}.navbar__avatar-btn:hover{border-color:var(--color-primary);transform:scale(1.05)}.navbar__avatar{object-fit:cover;width:100%;height:100%}.navbar--dashboard{background-color:var(--color-bg-primary);box-shadow:0 1px 2px #0000000d}@media (width<=768px){.navbar__links,.navbar__actions{display:none}.navbar__hamburger{display:flex}}.sidebar{border-right:1px solid var(--color-border-light);width:280px;padding:var(--spacing-xl) 0;background-color:#f8f6f4;flex-direction:column;flex-shrink:0;justify-content:space-between;display:flex}.sidebar__portal-info{align-items:center;gap:var(--spacing-md);padding:0 var(--spacing-xl) var(--spacing-xl);border-bottom:1px solid var(--color-border-light);margin-bottom:var(--spacing-lg);display:flex}.sidebar__portal-icon{border:1px solid var(--color-border-light);border-radius:var(--radius-sm);width:40px;height:40px;color:var(--color-primary);background-color:var(--color-bg-card);justify-content:center;align-items:center;display:flex}.sidebar__portal-title{font-size:var(--font-size-md);color:var(--color-primary);margin-bottom:2px;font-weight:700}.sidebar__portal-status{font-size:var(--font-size-xs);color:#10b981;align-items:center;gap:4px;font-weight:600;display:flex}.sidebar__nav{gap:var(--spacing-xs);padding:0 var(--spacing-md);flex-direction:column;display:flex}.sidebar__nav-item{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-sm);transition:all var(--transition-fast);font-weight:600;display:flex}.sidebar__nav-item:hover{color:var(--color-primary);background-color:#7a1d4a0d}.sidebar__nav-item--active{color:var(--color-primary);background-color:#fee2e2}.sidebar__bottom{padding:0 var(--spacing-xl);gap:var(--spacing-md);flex-direction:column;display:flex}.sidebar__verify-btn{justify-content:center;align-items:center;gap:var(--spacing-sm);width:100%;padding:var(--spacing-sm) 0;border:1.5px solid var(--color-primary);border-radius:var(--radius-sm);color:var(--color-primary);font-size:var(--font-size-sm);transition:all var(--transition-fast);background-color:#0000;font-weight:600;display:flex}.sidebar__verify-btn:hover{background-color:var(--color-primary);color:var(--color-text-white)}.sidebar__footer-links{gap:var(--spacing-xs);padding-top:var(--spacing-sm);border-top:1px solid var(--color-border-light);flex-direction:column;display:flex}.sidebar__footer-link{align-items:center;gap:var(--spacing-sm);color:var(--color-text-secondary);font-size:var(--font-size-xs);padding:var(--spacing-xs) 0;display:flex}.sidebar__footer-link:hover{color:var(--color-primary)}@media (width<=968px){.sidebar{border-right:none;border-bottom:1px solid var(--color-border-light);width:100%;padding:var(--spacing-md) 0}}.dashboard-layout{background-color:var(--color-bg-secondary);flex-direction:column;min-height:100vh;display:flex}.dashboard-layout__body{flex:1;max-width:100%;display:flex}.dashboard-layout__content{padding:var(--spacing-2xl);flex:1;overflow-y:auto}.dashboard-loading{background-color:var(--color-bg-secondary);justify-content:center;align-items:center;min-height:100vh;display:flex}@media (width<=968px){.dashboard-layout__body{flex-direction:column}.dashboard-layout__content{padding:var(--spacing-lg)}}
