.voter-container{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;background:url(/gala-bg.jpg) no-repeat center center;background-size:cover;color:#fff;font-family:system-ui,-apple-system,sans-serif}.voter-title{font-size:2rem;margin-bottom:2rem;text-align:center}.table-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:8px;max-width:500px;margin-bottom:2rem;width:100%}.table-btn{padding:16px 8px;font-size:1rem;border:2px solid #4a5568;background:transparent;color:#fff;border-radius:8px;cursor:pointer;transition:all .2s;min-width:50px}.table-btn:hover{background:#4a5568}.table-btn.selected{background:#3182ce;border-color:#3182ce}.join-btn{padding:16px 48px;font-size:1.2rem;background:#38a169;color:#fff;border:none;border-radius:8px;cursor:pointer;transition:all .2s}.join-btn:disabled{background:#4a5568;cursor:not-allowed}.join-btn:not(:disabled):hover{background:#2f855a}.voting-header{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:400px;margin-bottom:2rem}.timer{font-size:2rem;font-weight:700;color:#f6ad55}.nominees-list{display:flex;flex-direction:column;gap:12px;width:100%;max-width:400px}.nominee-btn{padding:24px;font-size:1.3rem;border:2px solid #4a5568;background:transparent;color:#fff;border-radius:12px;cursor:pointer;transition:all .2s;text-align:center}.nominee-btn:hover{background:#4a5568;transform:scale(1.02)}.nominee-btn.selected{background:#3182ce;border-color:#3182ce}.vote-confirmed{text-align:center;font-size:1.5rem}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000c;display:flex;align-items:center;justify-content:center;padding:20px}.confirm-modal{background:#2d3748;padding:32px;border-radius:16px;text-align:center;max-width:320px;width:100%}.confirm-modal h2{font-size:1.5rem;margin:8px 0 24px}.confirm-buttons{display:flex;flex-direction:column;gap:12px}.confirm-btn{padding:16px;font-size:1.1rem;border:none;border-radius:8px;cursor:pointer;transition:all .2s}.confirm-btn.yes{background:#38a169;color:#fff}.confirm-btn.yes:hover{background:#2f855a}.confirm-btn.cancel{background:transparent;border:2px solid #4a5568;color:#fff}.confirm-btn.cancel:hover{background:#4a5568}.connection-indicator{font-size:.9rem;margin-top:1rem}.connection-indicator.connected{color:#68d391}.connection-indicator.disconnected{color:#a0aec0;opacity:.7}.results-category{font-size:1.3rem;color:gold;margin-bottom:1.5rem;text-align:center}.voter-results-list{width:100%;max-width:400px}.voter-result-row{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding:12px;background:#0000004d;border-radius:8px}.voter-result-row.winner{background:#ffd70026;border:1px solid rgba(255,215,0,.3)}.voter-result-name{flex:1;font-size:1rem;min-width:0;overflow:hidden;text-overflow:ellipsis}.voter-result-bar-container{width:80px;height:8px;background:#fff3;border-radius:4px;overflow:hidden}.voter-result-bar{height:100%;background:#4a5568;transition:width .5s ease-out}.voter-result-bar.winner{background:gold}.voter-result-bar.tie{background:#f6ad55}.voter-result-pct{width:45px;text-align:right;font-weight:600;font-size:.9rem}.voter-winner-badge{background:gold;color:#1a1a2e;font-size:.7rem;font-weight:700;padding:4px 8px;border-radius:4px}.waiting-next{text-align:center;padding:2rem}.waiting-next p{font-size:1.1rem;opacity:.8}.admin-container{display:flex;min-height:100vh;background:#1a1a2e;color:#fff;font-family:system-ui,-apple-system,sans-serif}.admin-sidebar{width:250px;background:#16213e;padding:20px;border-right:1px solid #2d3748}.admin-main{flex:1;padding:24px}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.admin-title{font-size:1.5rem;margin:0}.header-controls{display:flex;align-items:center;gap:16px}.toggle-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.9rem;color:#a0aec0}.toggle-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.toggle-label:has(input:checked){color:#68d391}.clear-display-btn{background:#4a5568;color:#fff;border:none;padding:8px 16px;border-radius:8px;cursor:pointer;font-size:.9rem;transition:background .2s}.clear-display-btn:hover{background:#718096}.connection-status{padding:8px 16px;border-radius:20px;font-size:.9rem}.connection-status.connected{background:#38a169;color:#fff}.connection-status.disconnected{background:#4a5568;color:#a0aec0}.category-list{list-style:none;padding:0;margin:0}.category-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:8px;margin-bottom:4px;transition:all .2s}.category-item:hover{background:#2d3748}.category-item.active{background:#3182ce}.category-item.voting{border-left:3px solid #f6ad55}.category-name{flex:1;cursor:pointer;padding:4px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.category-actions{display:flex;gap:4px;opacity:0;transition:opacity .2s}.category-item:hover .category-actions{opacity:1}.reorder-btn,.delete-btn{width:24px;height:24px;padding:0;border:none;border-radius:4px;background:#4a5568;color:#fff;font-size:.8rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.reorder-btn:hover:not(:disabled){background:#718096}.reorder-btn:disabled{opacity:.3;cursor:not-allowed}.delete-btn{background:#e53e3e}.delete-btn:hover{background:#c53030}.add-btn{width:100%;padding:12px;margin-top:16px;background:transparent;border:2px dashed #4a5568;color:#a0aec0;border-radius:8px;cursor:pointer;transition:all .2s}.add-btn:hover{border-color:#a0aec0;color:#fff}.detail-panel{background:#16213e;border-radius:12px;padding:24px}.status-badge{display:inline-block;padding:4px 12px;border-radius:12px;font-size:.85rem;margin-left:12px}.status-badge.pending{background:#4a5568}.status-badge.voting{background:#dd6b20}.status-badge.closed{background:#e53e3e}.status-badge.revealed{background:#38a169}.nominees-table{width:100%;border-collapse:collapse;margin:24px 0}.nominees-table th,.nominees-table td{padding:12px;text-align:left;border-bottom:1px solid #2d3748}.nominees-table th{color:#a0aec0;font-weight:500}.vote-bar{height:8px;background:#2d3748;border-radius:4px;overflow:hidden}.vote-bar-fill{height:100%;background:#3182ce;transition:width .3s}.control-buttons{display:flex;gap:12px;margin-top:24px}.control-btn{padding:12px 24px;border:none;border-radius:8px;font-size:1rem;cursor:pointer;transition:all .2s}.control-btn.primary{background:#3182ce;color:#fff}.control-btn.success{background:#38a169;color:#fff}.control-btn.warning{background:#dd6b20;color:#fff}.control-btn.danger{background:#e53e3e;color:#fff}.control-btn:disabled{opacity:.5;cursor:not-allowed}.control-btn.logout-btn{background:#4a5568;color:#e2e8f0}.connected-count{background:#2d3748;padding:8px 16px;border-radius:8px;font-size:.9rem;color:#68d391}.admin-tabs{display:flex;gap:4px;margin-bottom:24px;border-bottom:2px solid #2d3748;padding-bottom:0}.tab-btn{padding:12px 24px;background:transparent;border:none;color:#a0aec0;font-size:1rem;cursor:pointer;transition:all .2s;border-bottom:2px solid transparent;margin-bottom:-2px}.tab-btn:hover{color:#fff}.tab-btn.active{color:#fff;border-bottom-color:#3182ce}.table-view-panel{background:#16213e;border-radius:12px;padding:24px}.table-config{margin-bottom:24px}.table-config label{display:flex;align-items:center;gap:12px;font-size:1rem}.table-config input[type=number]{width:80px;padding:8px 12px;border:1px solid #4a5568;border-radius:6px;background:#2d3748;color:#fff;font-size:1rem}.table-grid-view{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:12px}.table-cell{background:#2d3748;border:2px solid #4a5568;border-radius:8px;padding:12px;text-align:center;transition:all .2s}.table-cell.occupied{background:#2f855a;border-color:#38a169}.table-num{font-size:1.2rem;font-weight:700}.table-count{font-size:.8rem;margin-top:4px;color:#c6f6d5}.qr-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.qr-modal{background:linear-gradient(135deg,#1a1a2e,#16213e);border-radius:20px;padding:40px;text-align:center;position:relative;border:2px solid #ffd700;box-shadow:0 0 40px #ffd7004d}.qr-close-btn{position:absolute;top:16px;right:16px;background:none;border:none;color:#a0aec0;font-size:2rem;cursor:pointer;line-height:1}.qr-close-btn:hover{color:#fff}.qr-modal h2{color:gold;margin:0 0 24px;font-size:1.8rem}.qr-code-container{background:#fff;padding:16px;border-radius:12px;display:inline-block}.qr-url{color:#68d391;margin:20px 0 8px;font-size:1.1rem;font-weight:500}.qr-instructions{color:#a0aec0;margin:0;font-size:.95rem}.qr-btn{background:linear-gradient(135deg,gold,#ffb700);color:#1a1a2e;border:none;padding:10px 20px;border-radius:8px;font-weight:600;cursor:pointer;font-size:.9rem}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e,#16213e);padding:20px}.login-box{background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:16px;padding:40px;width:100%;max-width:360px;text-align:center;border:1px solid rgba(255,255,255,.1)}.login-box h1{color:gold;font-size:2rem;margin:0 0 8px;font-weight:700}.login-subtitle{color:#ffffffb3;margin:0 0 32px;font-size:1rem}.login-input{width:100%;padding:14px 16px;font-size:1rem;border:2px solid rgba(255,255,255,.2);border-radius:8px;background:#ffffff1a;color:#fff;outline:none;transition:border-color .2s;box-sizing:border-box}.login-input:focus{border-color:gold}.login-input::placeholder{color:#ffffff80}.login-error{color:#ff6b6b;margin:12px 0;font-size:.9rem}.login-button{width:100%;padding:14px;font-size:1rem;font-weight:600;background:linear-gradient(135deg,gold,#ffb700);color:#1a1a2e;border:none;border-radius:8px;cursor:pointer;margin-top:16px;transition:transform .2s,opacity .2s}.login-button:hover:not(:disabled){transform:translateY(-2px)}.login-button:disabled{opacity:.7;cursor:not-allowed}.display-container{min-height:100vh;background:url(/gala-bg.jpg) no-repeat center center;background-size:cover;color:#fff;font-family:system-ui,-apple-system,sans-serif;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px}.display-waiting{text-align:center}.display-waiting h1{font-size:3rem}.audio-prompt{margin-top:2rem;font-size:1.2rem;color:#f6ad55;animation:blink 1s ease-in-out infinite;cursor:pointer}.audio-enabled{margin-top:2rem;font-size:1rem;color:#68d391}.display-category{font-size:3rem;margin-bottom:48px;text-align:center;animation:fadeIn .5s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.results-list{width:100%;max-width:900px}.result-row{display:flex;align-items:center;margin-bottom:24px;animation:slideIn .5s ease-out backwards}.result-row:nth-child(1){animation-delay:.1s}.result-row:nth-child(2){animation-delay:.2s}.result-row:nth-child(3){animation-delay:.3s}.result-row:nth-child(4){animation-delay:.4s}.result-row:nth-child(5){animation-delay:.5s}@keyframes slideIn{0%{opacity:0;transform:translate(-50px)}to{opacity:1;transform:translate(0)}}.result-name{width:200px;font-size:1.5rem;text-align:right;padding-right:24px}.result-bar-container{flex:1;height:48px;background:#ffffff1a;border-radius:8px;overflow:hidden;position:relative}.result-bar{height:100%;background:linear-gradient(90deg,#3182ce,#63b3ed);border-radius:8px;transition:width 4s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:flex-end;padding-right:16px}.result-bar.winner{background:linear-gradient(90deg,#38a169,#68d391);animation:pulse 1s ease-in-out infinite}.result-bar.tie{background:linear-gradient(90deg,#d69e2e,#ecc94b);animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #38a16966}50%{box-shadow:0 0 20px 10px #38a16933}}.result-percent{font-size:1.2rem;font-weight:700;opacity:0;transition:opacity .5s ease-out 4s}.result-percent.visible{opacity:1}.winner-badge{margin-left:16px;background:#38a169;padding:8px 16px;border-radius:20px;font-weight:700;opacity:0;transform:scale(0);transition:all .3s ease-out 4.5s}.winner-badge.tie{background:#d69e2e}.winner-badge.visible{opacity:1;transform:scale(1)}.voting-timer{font-size:5rem;font-weight:700;color:#f6ad55;margin-bottom:32px;animation:timerPulse 1s ease-in-out infinite}@keyframes timerPulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.voting-nominees{display:flex;flex-direction:column;gap:16px;margin-bottom:48px;width:100%;max-width:600px}.voting-nominee{font-size:2rem;padding:20px 32px;background:#ffffff1a;border-radius:12px;text-align:center;animation:slideIn .5s ease-out backwards;display:flex;justify-content:space-between;align-items:center}.nominee-name{flex:1}.live-vote-count{font-size:1.2rem;color:#68d391;background:#38a16933;padding:8px 16px;border-radius:8px;margin-left:16px;min-width:140px;text-align:center}.voting-nominee:nth-child(1){animation-delay:.1s}.voting-nominee:nth-child(2){animation-delay:.2s}.voting-nominee:nth-child(3){animation-delay:.3s}.voting-nominee:nth-child(4){animation-delay:.4s}.voting-nominee:nth-child(5){animation-delay:.5s}.voting-indicator{font-size:2rem;animation:blink 1s ease-in-out infinite;margin-top:24px}@keyframes blink{0%,to{opacity:1}50%{opacity:.5}}.qr-display{margin:32px 0}.qr-box{background:#fff;padding:20px;border-radius:16px;display:inline-block;box-shadow:0 0 40px #ffd70066}.qr-scan-text{font-size:1.8rem;color:gold;margin:24px 0 8px;font-weight:600}.qr-url-text{font-size:1.2rem;color:#68d391;margin:0}
