.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:#fff;border-radius:12px;max-width:600px;width:100%;max-height:85vh;display:flex;flex-direction:column;position:relative;box-shadow:0 10px 40px #0000004d}.modal-close{position:absolute;top:1rem;right:1rem;background:none;border:none;font-size:2rem;cursor:pointer;color:#666;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s;line-height:1}.modal-close:hover{background:#f0f0f0;color:#333}.modal-content h2{margin:0;padding:1.5rem 3rem 1rem 1.5rem;color:#2c3e50;font-size:1.5rem;border-bottom:2px solid #e0e0e0}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}.modal-body h3{color:#667eea;margin:1.5rem 0 .8rem;font-size:1.2rem}.modal-body h3:first-child{margin-top:0}.modal-body p{margin:.8rem 0;line-height:1.6;color:#333}.modal-body ol,.modal-body ul{margin:.8rem 0;padding-left:1.5rem;line-height:1.6;color:#333}.modal-body li{margin:.5rem 0}.modal-body a{color:#667eea;text-decoration:none;font-weight:600;border-bottom:1px solid #667eea}.modal-body a:hover{color:#764ba2;border-bottom-color:#764ba2}.modal-body strong{color:#2c3e50}.modal-body em{color:#555}@media (max-width: 768px){.modal-content{max-height:90vh}.modal-content h2{font-size:1.3rem;padding:1.2rem 3rem .8rem 1.2rem}.modal-body{padding:1.2rem;font-size:.95rem}.modal-body h3{font-size:1.1rem}}.welcome-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f5f5f0;padding:2rem}.welcome-content{background:#fff;border-radius:20px;padding:3rem 2rem;max-width:600px;width:100%;box-shadow:0 20px 60px #0000004d;text-align:center}.welcome-title{font-size:2.5rem;color:#2c3e50;margin:0 0 2rem;font-weight:700;line-height:1.2}.welcome-explanation{font-size:1.1rem;color:#555;margin-bottom:3rem;line-height:1.6}.voting-closed-notice{font-size:1rem;color:#003f7f;margin:1.5rem 0;padding:1rem;background:#e3f2fd;border-radius:8px;line-height:1.5;font-weight:500}.welcome-buttons{display:flex;flex-direction:column;gap:2rem;align-items:center;width:100%;max-width:350px;margin:0 auto}.welcome-button{width:100%;padding:1.2rem 2rem;font-size:1.3rem;font-weight:600;border:none;border-radius:12px;cursor:pointer;transition:all .3s ease;color:#fff;box-shadow:0 4px 15px #0003;display:flex;flex-direction:column;gap:.5rem}.vote-button{background:#f99}.vote-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #f996;background:#ff8080}.vote-button.disabled{background:#ccc;cursor:not-allowed;opacity:.7}.vote-button.disabled:hover{transform:none;box-shadow:0 4px 15px #0003;background:#ccc}.results-button{background:#9cf}.results-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #9cf6;background:#80b3ff}.welcome-button:active{transform:translateY(0)}.button-main-text{font-size:1.3rem;font-weight:600}.button-subtitle{font-size:.85rem;font-weight:400;opacity:.9;line-height:1.3}@media (max-width: 768px){.welcome-content{padding:2rem 1.5rem}.welcome-title{font-size:2rem}.welcome-explanation{font-size:1rem;margin-bottom:2rem}.welcome-button{padding:1rem 1.5rem}.button-main-text{font-size:1.1rem}.button-subtitle{font-size:.8rem}}.alert-modal-content{background:#fff;border-radius:12px;max-width:400px;width:100%;position:relative;box-shadow:0 10px 40px #0000004d;padding:2rem 1.5rem}.alert-modal-body{text-align:center}.alert-modal-body p{margin:0;font-size:1.1rem;line-height:1.6;color:#333;white-space:pre-line}@media (max-width: 768px){.alert-modal-content{max-width:90%}.alert-modal-body p{font-size:1rem}}.candidate-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:2px;background:transparent;border:none;border-radius:8px;cursor:move;transition:all .2s ease;position:relative;-webkit-user-select:none;user-select:none;-webkit-user-drag:element;text-align:center;box-sizing:border-box}.candidate-card:hover{transform:translateY(-2px)}.candidate-card.dragging{cursor:grabbing;opacity:1!important}.candidate-flag{flex-shrink:0;width:40px;height:40px;border-radius:8px;overflow:hidden;border:1px solid #ddd}.candidate-flag img{width:100%;height:100%;object-fit:cover}.candidate-photo{flex-shrink:0;width:70px;height:70px;border:none;margin:0 auto;position:relative;transform-style:preserve-3d}.candidate-card.dragging .candidate-photo{animation-play-state:paused}@keyframes flipPhotoFlag{0%,45%{transform:rotateY(0)}50%,95%{transform:rotateY(180deg)}to{transform:rotateY(360deg)}}.candidate-photo .photo-image,.candidate-photo .flag-image{width:100%;height:100%;object-fit:cover;position:absolute;top:0;left:0;backface-visibility:hidden;border-radius:50%}.candidate-photo .flag-image{transform:rotateY(180deg);object-fit:contain}.candidate-info{width:100%;min-width:0;padding:0;margin:0}.candidate-name{font-weight:600;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.2;width:100%;word-break:break-word}.party-abbreviation{font-weight:700;font-size:14px;color:#666;margin-bottom:2px}.party-name{font-size:12px;color:#999;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-badge,.remove-btn{display:none}@media (max-width: 768px){.candidate-card{padding:2px;gap:2px}.candidate-photo{width:70px;height:70px}.candidate-name{font-size:14px}}@media (max-width: 480px){.candidate-card{padding:1px}.candidate-photo{width:70px;height:70px}.candidate-name{font-size:14px}}.voting-interface{max-width:1400px;margin:0 auto;padding:20px}.voting-header{text-align:center;margin-bottom:40px}.voting-header h1{color:#003f7f;font-size:32px;margin-bottom:16px}.instructions{max-width:800px;margin:0 auto;color:#666;font-size:16px;line-height:1.6}.info-link{color:#667eea;text-decoration:underline;font-weight:700;cursor:pointer;transition:color .2s}.info-link:hover{color:#764ba2}.btn-view-results-small{margin-top:12px;padding:8px 20px;background:#9cf;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #99ccff4d}.btn-view-results-small:hover{background:#80b3ff;transform:translateY(-1px);box-shadow:0 4px 12px #9cf6}.ranking-section{background:#f5f5f5;border-radius:16px;padding:30px;margin-bottom:40px}.ranking-section h2{color:#003f7f;margin-bottom:20px;font-size:24px}.ranking-slots{display:flex;flex-direction:row;gap:0;margin-bottom:16px;justify-content:center;flex-wrap:wrap}.ranking-slot-container{display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0}.ranking-slot{position:relative;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;max-width:90px!important;max-height:90px!important;border:3px dashed #ddd;border-radius:50%!important;display:flex;align-items:center;justify-content:center;transition:all .2s ease;background:transparent;overflow:hidden;flex-shrink:0!important;aspect-ratio:1 / 1!important;box-sizing:border-box!important}.ranking-slot.filled{border-style:solid;border-color:#003f7f}.ranking-slot.empty:hover{border-color:#003f7f}.slot-number{position:absolute;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:36px;font-weight:700;color:#003f7f}.slot-candidate-name{text-align:center;font-size:14px;font-weight:600;color:#333;max-width:90px;word-wrap:break-word;line-height:1.1}.ranking-slot .candidate-card{width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;max-width:90px!important;max-height:90px!important;padding:0!important;margin:0!important;gap:0!important;display:block!important;border-radius:50%!important;position:absolute!important;top:0;left:0;aspect-ratio:1 / 1!important}.ranking-slot .candidate-photo{width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;max-width:90px!important;max-height:90px!important;border-radius:50%!important;object-fit:cover!important;position:absolute!important;top:0;left:0;aspect-ratio:1 / 1!important}.ranking-slot .candidate-photo img{width:90px!important;height:90px!important;border-radius:50%!important;aspect-ratio:1 / 1!important}.ranking-slot .candidate-photo .photo-image{object-fit:cover!important}.ranking-slot .candidate-photo .flag-image{object-fit:contain!important}.ranking-slot .candidate-name{display:none}.submit-btn{width:100%;padding:16px 32px;background:#003f7f;color:#fff;border:none;border-radius:12px;font-size:18px;font-weight:700;cursor:pointer;transition:all .2s ease}.submit-btn:hover:not(:disabled){background:#002855;transform:translateY(-2px);box-shadow:0 4px 12px #003f7f4d}.submit-btn:disabled{background:#ccc;cursor:not-allowed}.candidates-pool{margin-bottom:40px}.candidates-pool h2{color:#003f7f;margin-bottom:20px;font-size:24px}.candidates-pool.pool-drag-over{background:#e8f4f8;border-radius:12px}.candidates-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:12px}.loading{text-align:center;padding:60px 20px;font-size:20px;color:#666}.success-screen{max-width:600px;margin:80px auto;text-align:center;padding:40px;background:#fff;border-radius:16px;box-shadow:0 4px 12px #0000001a}.success-icon{width:80px;height:80px;background:#4caf50;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:48px;margin:0 auto 24px}.success-screen h2{color:#003f7f;margin-bottom:16px;font-size:28px}.success-screen p{color:#666;font-size:16px;margin-bottom:12px}.ballot-summary{font-weight:700;color:#333;font-size:18px;margin:24px 0}.success-actions{display:flex;gap:16px;justify-content:center;margin-top:32px}.btn-results,.btn-vote-again{padding:12px 24px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;border:none;transition:all .2s ease}.btn-results{background:#003f7f;color:#fff}.btn-results:hover{background:#002855}.btn-vote-again{background:#fff;color:#003f7f;border:2px solid #003f7f}.btn-vote-again:hover{background:#f5f5f5}.tap-instruction{color:#666;font-size:14px;margin-bottom:16px;text-align:center}@media (max-width: 768px){.voting-interface{padding:8px 4px 180px}.voting-header h1{font-size:24px}.instructions{font-size:14px;padding:0 8px}.ranking-section{position:fixed;bottom:0;left:0;right:0;background:#f5f5f5;padding:10px 8px;margin:0;border-radius:12px 12px 0 0;box-shadow:0 -4px 12px #0000001a;z-index:100}.ranking-section h2{font-size:14px;margin-bottom:8px;text-align:center}.ranking-slots{gap:0;margin-bottom:8px;flex-wrap:nowrap;width:100%;padding:0 4px}.ranking-slot-container{gap:4px;flex:1;min-width:0}.ranking-slot{width:100%!important;height:auto!important;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;aspect-ratio:1 / 1!important;border-width:2px}.slot-number{font-size:clamp(20px,5vw,28px)}.slot-candidate-name{font-size:11px;max-width:100%}.ranking-slot .candidate-card,.ranking-slot .candidate-photo{width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important}.ranking-slot .candidate-photo img{width:100%!important;height:100%!important}.submit-btn{padding:12px;font-size:16px}.candidates-pool{margin-bottom:20px;padding:0}.candidates-pool h2{font-size:18px;padding:0 8px}.tap-instruction{padding:0 8px}.candidates-grid{grid-template-columns:repeat(auto-fit,minmax(68px,1fr));gap:6px;padding:0}.success-actions{flex-direction:column}.btn-results,.btn-vote-again{width:100%}}.feedback-modal-content{background:#fff;border-radius:12px;max-width:500px;width:100%;position:relative;box-shadow:0 10px 40px #0000004d}.feedback-modal-content h2{margin:0;padding:1.5rem 3rem 1rem 1.5rem;color:#2c3e50;font-size:1.5rem;border-bottom:2px solid #e0e0e0}.feedback-modal-body{padding:1.5rem}.feedback-prompt{font-size:1rem;color:#333;margin:0 0 1rem;line-height:1.5}.feedback-textarea{width:100%;padding:.8rem;border:2px solid #ddd;border-radius:8px;font-size:1rem;font-family:inherit;resize:vertical;transition:border-color .2s;box-sizing:border-box}.feedback-textarea:focus{outline:none;border-color:#667eea}.feedback-submit-btn{width:100%;margin-top:1rem;padding:.8rem;background:#667eea;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s}.feedback-submit-btn:hover:not(:disabled){background:#764ba2}.feedback-submit-btn:disabled{background:#ccc;cursor:not-allowed}.feedback-submit-btn.submitted{background:#b0b0b0}.feedback-info{margin-top:2rem;padding-top:1.5rem;border-top:1px solid #e0e0e0;text-align:center}.feedback-info p{margin:.5rem 0;font-size:.9rem;color:#666;line-height:1.5}.feedback-info p.disclaimer-text{text-align:justify}.feedback-version{font-size:.85rem!important;color:#999!important}.feedback-author{font-weight:600;color:#333!important}@media (max-width: 768px){.feedback-modal-content{max-width:90%;max-height:90vh;overflow-y:auto}.feedback-modal-content h2{font-size:1.3rem}.feedback-prompt,.feedback-textarea,.feedback-submit-btn{font-size:.95rem}}.results-container{max-width:1200px;margin:0 auto;padding:20px;color:#fff}.results-header{text-align:center;margin-bottom:30px}.results-header h1{color:#fff;font-size:32px;margin-bottom:8px}.results-info-links{font-size:14px;margin-top:4px}.results-info-links .info-link{color:#9cf;text-decoration:underline;font-weight:700;cursor:pointer;transition:color .2s}.results-info-links .info-link:hover{color:#80b3ff}.results-info-links .info-link-spacer{color:#9cf;margin:0 8px;-webkit-user-select:none;user-select:none}.btn-refresh-top{margin:12px 0}.btn-back-small{padding:10px 20px;background:#fff3;color:#fff;border:2px solid white;border-radius:8px;font-size:16px;cursor:pointer;transition:all .2s ease}.btn-back-small:hover{background:#ffffff4d}.results-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:40px}.summary-card{background:#fffffff2;border-radius:12px;padding:24px;text-align:center;box-shadow:0 4px 12px #0000001a;display:flex;flex-direction:column;align-items:center;justify-content:center}.summary-number{font-size:48px;font-weight:700;color:#003f7f;margin-bottom:8px}.summary-label{color:#666;font-size:14px;font-weight:500}.winner-card{background:linear-gradient(135deg,gold,#ffed4e);border:3px solid #ffc107}.winner-label{color:#003f7f;font-size:16px;font-weight:600;margin-bottom:12px}.winner-photo{width:80px;height:80px;border-radius:50%;object-fit:cover;margin:0 auto 12px;border:3px solid #ffc107}.winner-name{font-size:20px;font-weight:700;color:#003f7f;margin-bottom:12px}.winner-votes-info{font-size:14px;color:#555;line-height:1.4;font-weight:500}.vote-intention-card{grid-column:span 2;padding:16px}.vote-intention-question{font-size:14px;color:#333;margin-bottom:12px;font-weight:500;line-height:1.4}.vote-intention-buttons{display:flex;gap:10px;justify-content:center}.vote-intention-btn{flex:1;padding:8px 16px;border:2px solid #667eea;background:#fff;color:#667eea;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.vote-intention-btn:hover{background:#f0f0ff}.vote-intention-btn.selected{background:#667eea;color:#fff}.tie-card{background:linear-gradient(135deg,#ff9800,#ffb74d)}.tie-icon{font-size:48px;margin-bottom:8px}.tie-label{font-size:24px;font-weight:700;color:#fff;margin-bottom:8px}.rounds-section{margin-bottom:40px}.rounds-section h2{color:#fff;font-size:28px;margin-bottom:20px}.round-card{background:#fffffff2;border-radius:12px;padding:24px;margin-bottom:20px;box-shadow:0 4px 12px #0000001a}.round-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:2px solid #e0e0e0}.round-header h3{color:#003f7f;font-size:22px;margin:0}.round-info{color:#666;font-size:14px}.round-reason{background:#e3f2fd;color:#1976d2;padding:12px;border-radius:8px;margin-bottom:16px;font-size:14px;font-weight:500}.votes-table{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.vote-row{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center}.candidate-column{display:flex;flex-direction:column}.candidate-photo-wrapper{position:relative;cursor:pointer}.candidate-photo-small{width:50px;height:50px;border-radius:50%;object-fit:cover;border:2px solid #2196f3;transition:transform .2s ease}.candidate-photo-small:hover{transform:scale(1.1)}.candidate-name-tooltip{position:absolute;bottom:-30px;left:50%;transform:translate(-50%);background:#000000e6;color:#fff;padding:4px 12px;border-radius:4px;white-space:nowrap;font-size:12px;z-index:10;pointer-events:none}.votes-column{display:flex;align-items:center;gap:12px}.vote-bar-container{flex:1;height:32px;background:#e0e0e0;border-radius:16px;overflow:hidden}.vote-bar{height:100%;transition:width .3s ease;border-radius:16px}.vote-count{min-width:120px;text-align:right;font-weight:600;color:#333;font-size:14px}.eliminated-section{background:#ffebee;padding:12px;border-radius:8px;margin-top:12px;font-size:14px}.eliminated-label{font-weight:700;color:#c62828}.eliminated-candidate{color:#d32f2f}.btn-refresh{width:100%;padding:16px;background:#fffffff2;color:#003f7f;border:none;border-radius:12px;font-size:18px;font-weight:700;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 12px #0000001a}.btn-refresh:hover{background:#fff;transform:translateY(-2px);box-shadow:0 6px 16px #00000026}.results-loading,.results-error,.results-empty{max-width:600px;margin:100px auto;padding:40px;background:#fffffff2;border-radius:16px;text-align:center;box-shadow:0 4px 12px #0000001a}.results-loading{color:#003f7f;font-size:24px}.results-error{color:#c62828;font-size:20px}.results-empty h2{color:#003f7f;margin-bottom:16px}.results-empty p{color:#666;margin-bottom:24px}.btn-back{padding:12px 32px;background:#003f7f;color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:700;cursor:pointer;transition:all .2s ease}.btn-back:hover{background:#002855;transform:translateY(-2px)}.tie-details{background:#fffffff2;border-radius:12px;padding:24px;margin-bottom:20px}.tie-details h3{color:#ff9800;margin-bottom:16px}.tie-candidates{display:grid;gap:12px}.tie-candidate{display:flex;justify-content:space-between;padding:12px;background:#fff3e0;border-radius:8px;font-weight:600}@media (max-width: 768px){.summary-card{padding:16px 24px}.vote-intention-card{grid-column:span 1}.vote-intention-question{font-size:13px}.vote-intention-btn{font-size:13px;padding:6px 12px}.results-header{flex-direction:column;gap:16px}.results-header h1{font-size:24px}.results-summary{grid-template-columns:1fr}.vote-row{grid-template-columns:auto 1fr;gap:12px}.candidate-photo-small{width:40px;height:40px}.votes-column{display:flex;flex-direction:row;align-items:center;gap:8px}.vote-bar-container{flex:1;min-width:0}.vote-count{min-width:90px;font-size:12px}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fff}#root{min-height:100vh}.App{min-height:100vh;background:#fff;background-attachment:fixed}*{box-sizing:border-box;margin:0;padding:0}
