:root{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;font-weight:400;color-scheme:light;color:#2c3e50;background:linear-gradient(135deg,#e8f5e9,#e3f2fd);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%}button{font-family:inherit;cursor:pointer}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}*{box-sizing:border-box}.app{max-width:1000px;margin:0 auto;padding:2rem}header{text-align:center;margin-bottom:3rem;background:linear-gradient(135deg,#2c3e50,#3498db);padding:2rem;border-radius:8px;box-shadow:0 4px 8px #0000001a}.header-content{display:flex;justify-content:space-between;align-items:center;gap:2rem}header h1{font-size:3.5rem;margin-bottom:.5rem;color:#fff;font-weight:700;text-shadow:2px 2px 4px rgba(0,0,0,.3)}header p{color:#ecf0f1;font-size:1.3rem;font-weight:500}.user-info{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem;color:#fff;font-size:.9rem}.logout-btn{background:#fff3;color:#fff;border:2px solid white;padding:.5rem 1.5rem;border-radius:6px;cursor:pointer;font-weight:600;transition:all .2s}.logout-btn:hover{background:#fff;color:#2c3e50}.loading{min-height:100vh;display:flex;align-items:center;justify-content:center}.loading-spinner{font-size:1.5rem;color:#3498db;font-weight:600}.controls{text-align:center;margin:2rem 0;display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.add-grid-btn,.add-manual-btn{color:#fff;border:none;padding:1.2rem 2.5rem;font-size:1.3rem;font-weight:600;border-radius:8px;cursor:pointer;transition:all .2s;box-shadow:0 4px 6px #0003}.add-grid-btn{background:#27ae60}.add-grid-btn:hover{background:#229954;transform:translateY(-2px);box-shadow:0 6px 12px #0000004d}.add-manual-btn{background:#3498db}.add-manual-btn:hover{background:#2980b9;transform:translateY(-2px);box-shadow:0 6px 12px #0000004d}.grids-container{display:flex;flex-direction:column;gap:2rem;margin-top:2rem;width:100%}.grid-wrapper{width:100%;max-width:600px;margin:0 auto}.empty-state{text-align:center;padding:4rem;color:#555;font-size:1.4rem;font-weight:500}.bingo-grid{background:#fff;border:4px solid #2c3e50;border-radius:4px;padding:1rem;box-shadow:0 4px 8px #0003;transition:all .3s ease}.bingo-grid.winning{background:#fff9e6;border-color:#f39c12;box-shadow:0 0 25px #f39c1299;animation:pulse 2s infinite,celebrate .8s ease-out;position:relative;overflow:visible}.bingo-grid.winning:before,.bingo-grid.winning:after{content:"🎉";position:absolute;font-size:3rem;animation:confetti-left 1.5s ease-out infinite;pointer-events:none;z-index:10}.bingo-grid.winning:before{left:-20px;top:-20px;animation:confetti-left 1.5s ease-out infinite}.bingo-grid.winning:after{right:-20px;top:-20px;animation:confetti-right 1.5s ease-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 25px #f39c1299}50%{box-shadow:0 0 35px #f39c12e6}}.grid-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;min-height:2rem}.win-status{flex:1}.win-badge{background:#f39c12;color:#fff;padding:.5rem 1rem;border-radius:4px;font-weight:700;font-size:.9rem;text-transform:uppercase;animation:bounce .5s ease;box-shadow:0 2px 4px #0003}@keyframes bounce{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes celebrate{0%{transform:scale(1) rotate(0)}25%{transform:scale(1.05) rotate(-2deg)}50%{transform:scale(1.1) rotate(2deg)}75%{transform:scale(1.05) rotate(-1deg)}to{transform:scale(1) rotate(0)}}@keyframes confetti-left{0%{transform:translateY(0) rotate(0);opacity:1}50%{transform:translateY(-30px) rotate(-180deg);opacity:1}to{transform:translateY(0) rotate(-360deg);opacity:1}}@keyframes confetti-right{0%{transform:translateY(0) rotate(0);opacity:1}50%{transform:translateY(-30px) rotate(180deg);opacity:1}to{transform:translateY(0) rotate(360deg);opacity:1}}.remove-btn{background:#dc3545;color:#fff;border:none;width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:1.2rem;display:flex;align-items:center;justify-content:center;transition:background .2s}.remove-btn:hover{background:#c82333}.grid{display:flex;flex-direction:column;gap:0;border:2px solid #34495e}.grid-row{display:grid;grid-template-columns:repeat(9,1fr);gap:0}.grid-row:not(:last-child){border-bottom:2px solid #34495e}.grid-cell{aspect-ratio:1;background:#fff;border-right:2px solid #34495e;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:700;color:#2c3e50;cursor:pointer;transition:all .15s;-webkit-user-select:none;user-select:none;position:relative}.grid-cell:last-child{border-right:none}.grid-cell:not(.empty):hover{background:#ecf0f1}.grid-cell.empty{background:#f8f9fa;cursor:default}.grid-cell.marked{background:#e74c3c;color:#fff}.grid-cell.marked:after{content:"";position:absolute;width:70%;height:70%;border-radius:50%;background:#fff3;pointer-events:none}.grid-cell.marked:hover{background:#c0392b}.number-drawer{background:#fff;border-radius:8px;padding:2rem;margin-bottom:2rem;box-shadow:0 4px 12px #00000026;border:3px solid #2c3e50}.drawer-controls{display:flex;gap:1rem;margin-bottom:2rem;justify-content:center;flex-wrap:wrap}.number-input{flex:1;max-width:250px;padding:1rem 1.5rem;font-size:1.3rem;font-weight:600;border:3px solid #2c3e50;border-radius:8px;background:#fff;color:#2c3e50;text-align:center}.number-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db33}.draw-btn,.reset-btn{padding:1rem 2rem;font-size:1.3rem;border:none;border-radius:8px;cursor:pointer;transition:all .2s;font-weight:700;box-shadow:0 4px 6px #0003}.draw-btn{background:#3498db;color:#fff}.draw-btn:hover{background:#2980b9;transform:translateY(-2px);box-shadow:0 6px 12px #0000004d}.reset-btn{background:#e67e22;color:#fff}.reset-btn:hover{background:#d35400;transform:translateY(-2px);box-shadow:0 6px 12px #0000004d}.drawn-numbers h3{text-align:center;margin-bottom:1.5rem;color:#2c3e50;font-size:1.5rem;font-weight:700}.drawn-list{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;min-height:80px;align-items:center;background:#f8f9fa;padding:1.5rem;border-radius:8px;border:2px dashed #95a5a6}.drawn-number-badge{width:60px;height:60px;display:flex;align-items:center;justify-content:center;background:#e74c3c;border:3px solid #c0392b;border-radius:50%;color:#fff;font-size:1.5rem;font-weight:700;box-shadow:0 3px 6px #0003;animation:popIn .3s ease}@keyframes popIn{0%{transform:scale(0);opacity:0}50%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}.no-numbers{color:#95a5a6;font-size:1.2rem;font-style:italic;text-align:center;margin:0}@media (max-width: 768px){.drawn-number-badge{width:50px;height:50px;font-size:1.3rem}}.manual-grid-input{background:#fff;border-radius:12px;padding:24px;box-shadow:0 4px 6px #0000001a;max-width:1100px;margin:20px auto}.input-header h3{margin:0 0 8px;color:#2c3e50;font-size:1.5em}.input-instructions{color:#7f8c8d;margin:0 0 20px;font-size:.9em}.input-grid{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.input-row{display:flex;gap:6px;align-items:center}.row-label{display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:80px;margin-right:8px}.row-number{font-size:.9em;color:#34495e;font-weight:600}.row-count{font-size:.85em;padding:2px 8px;border-radius:12px;background:#ecf0f1;color:#7f8c8d;font-weight:600;transition:all .2s}.row-count.complete{background:#d4edda;color:#155724}.row-count.error{background:#f8d7da;color:#721c24}.input-cell-wrapper{position:relative;display:inline-block}.grid-input-cell{width:70px;height:50px;text-align:center;font-size:16px;font-weight:600;border:2px solid #ddd;border-radius:6px;transition:all .2s;background:#fff}.grid-input-cell:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.grid-input-cell.error{border-color:#e74c3c;background:#fee}.grid-input-cell.error:focus{border-color:#e74c3c;box-shadow:0 0 0 3px #e74c3c1a}.grid-input-cell.disabled{background:#ecf0f1;cursor:not-allowed;opacity:.6;border-color:#bdc3c7}.grid-input-cell::placeholder{font-size:11px;color:#bdc3c7;font-weight:400}.cell-error-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#e74c3c;color:#fff;padding:4px 8px;border-radius:4px;font-size:.75em;white-space:nowrap;margin-bottom:4px;z-index:10;pointer-events:none;opacity:0;transition:opacity .2s}.input-cell-wrapper:hover .cell-error-tooltip,.grid-input-cell.error:focus~.cell-error-tooltip{opacity:1}.cell-error-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:#e74c3c}.grid-input-cell::-webkit-inner-spin-button,.grid-input-cell::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.grid-input-cell[type=number]{-moz-appearance:textfield}.validation-errors{background:#fee;border:1px solid #fcc;border-radius:8px;padding:12px 16px;margin-bottom:16px}.validation-errors h4{margin:0 0 8px;color:#c0392b;font-size:1em}.validation-errors ul{margin:0;padding-left:20px;color:#e74c3c}.validation-errors li{margin:4px 0;font-size:.9em}.input-actions{display:flex;gap:12px;justify-content:flex-end}.input-actions button{padding:10px 20px;border:none;border-radius:6px;font-size:1em;font-weight:600;cursor:pointer;transition:all .2s}.clear-btn{background:#95a5a6;color:#fff}.clear-btn:hover{background:#7f8c8d}.cancel-btn{background:#e74c3c;color:#fff}.cancel-btn:hover{background:#c0392b}.submit-btn{background:#27ae60;color:#fff}.submit-btn:hover{background:#229954}@media (max-width: 768px){.grid-input-cell{width:50px;height:40px;font-size:14px}.manual-grid-input{padding:16px}.row-label{min-width:60px;font-size:.85em}}.game-selector{margin:1rem 0;padding:.75rem 1rem;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:10px;box-shadow:0 2px 4px #0000001a}.game-selector-main{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.old-games-list{margin-top:.75rem;padding-top:.75rem;border-top:1px solid rgba(255,255,255,.2);display:flex;gap:.5rem;flex-wrap:wrap}.game-tab{display:flex;align-items:center;gap:.25rem;background:#ffffff26;border-radius:8px;padding:.25rem;transition:all .2s ease}.game-tab.active{background:#fffffff2;box-shadow:0 2px 8px #00000026}.game-tab-btn{padding:.5rem 1rem;border:none;background:transparent;color:#fff;font-weight:600;cursor:pointer;border-radius:6px;transition:all .2s ease;font-size:.95rem;display:flex;align-items:center;gap:.5rem}.game-tab.active .game-tab-btn{color:#667eea}.game-tab-btn:hover{background:#ffffff1a}.game-tab.active .game-tab-btn{cursor:default}.game-tab.active .game-tab-btn:hover{background:transparent}.game-info{font-size:.8rem;opacity:.8;font-weight:400}.edit-btn,.remove-game-btn{padding:.25rem .5rem;border:none;background:#fff3;color:#fff;cursor:pointer;border-radius:4px;font-size:.9rem;transition:all .2s ease}.game-tab.active .edit-btn,.game-tab.active .remove-game-btn{color:#667eea;background:#667eea1a}.edit-btn:hover,.remove-game-btn:hover{background:#ffffff4d;transform:scale(1.1)}.game-tab.active .edit-btn:hover,.game-tab.active .remove-game-btn:hover{background:#667eea33}.remove-game-btn{font-size:1.2rem;font-weight:700;line-height:1}.add-game-btn{padding:.5rem 1rem;border:2px dashed rgba(255,255,255,.6);background:#ffffff1a;color:#fff;font-weight:600;cursor:pointer;border-radius:8px;transition:all .2s ease;font-size:.9rem}.add-game-btn:hover{background:#fff3;border-color:#ffffffe6;transform:translateY(-1px)}.toggle-old-games-btn{padding:.5rem .75rem;border:1px solid rgba(255,255,255,.3);background:#ffffff1a;color:#fff;font-weight:500;cursor:pointer;border-radius:6px;transition:all .2s ease;font-size:.85rem;margin-left:auto}.toggle-old-games-btn:hover{background:#fff3;border-color:#ffffff80}.game-edit{display:flex;align-items:center;gap:.5rem}.game-name-input{padding:.5rem;border:2px solid #667eea;border-radius:6px;font-size:.95rem;font-weight:600;outline:none;min-width:150px}.game-name-input:focus{border-color:#764ba2;box-shadow:0 0 0 3px #764ba21a}.data-manager{position:fixed;bottom:1rem;right:1rem;z-index:1000}.data-manager-toggle{padding:.5rem 1rem;border-radius:8px;border:1px solid #e0e0e0;background:#fff;color:#666;font-size:.85rem;cursor:pointer;box-shadow:0 2px 4px #0000001a;transition:all .2s ease;font-weight:500}.data-manager-toggle:before{content:"⚙️ ";margin-right:.25rem}.data-manager-toggle:hover{background:#f5f5f5;border-color:#999;box-shadow:0 2px 6px #00000026}.data-manager-toggle:active{transform:scale(.98)}.data-manager-panel{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.data-manager-content{background:#fff;border-radius:16px;padding:2rem;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 40px #0003;position:relative;animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.data-manager-content h3{margin:0 0 1.5rem;color:#667eea;font-size:1.5rem}.data-info{background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-radius:8px;padding:1rem;margin-bottom:1.5rem}.data-info p{margin:.5rem 0;color:#333}.auto-save-note{font-size:.9rem;color:#4caf50;margin-top:1rem;padding-top:.75rem;border-top:1px solid rgba(0,0,0,.1)}.data-actions{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.export-btn,.import-btn,.clear-btn{padding:.75rem 1.5rem;border:none;border-radius:8px;font-weight:600;font-size:1rem;cursor:pointer;transition:all .2s ease;text-align:center}.export-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.export-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.import-btn{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff;display:block}.import-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #f5576c66}.clear-btn{background:linear-gradient(135deg,#fa709a,#fee140);color:#333}.clear-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #fa709a66}.import-error{background:#ffebee;color:#c62828;padding:.75rem;border-radius:6px;margin-top:1rem;font-size:.9rem}.aws-note{margin-top:1.5rem;padding:.75rem;background:#e3f2fd;border-radius:6px;text-align:center}.aws-note small{color:#1976d2}.close-panel-btn{position:absolute;top:1rem;right:1rem;width:2rem;height:2rem;border-radius:50%;border:none;background:#f5f5f5;color:#666;font-size:1.2rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;line-height:1}.close-panel-btn:hover{background:#e0e0e0;color:#333}.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.auth-card{background:#fff;padding:40px;border-radius:12px;box-shadow:0 10px 40px #0000001a;width:100%;max-width:420px}.auth-card h2{margin-bottom:30px;color:#333;text-align:center;font-size:28px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:#555;font-weight:500;font-size:14px}.form-group input{width:100%;padding:12px 16px;border:2px solid #e0e0e0;border-radius:8px;font-size:15px;transition:border-color .3s;box-sizing:border-box}.form-group input:focus{outline:none;border-color:#667eea}.form-group small{display:block;margin-top:6px;color:#888;font-size:12px}.auth-btn{width:100%;padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s;margin-top:10px}.auth-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea66}.auth-btn:disabled{opacity:.6;cursor:not-allowed}.error-message{background:#fee;color:#c33;padding:12px;border-radius:6px;margin-bottom:15px;font-size:14px;border-left:4px solid #c33}.info-message{background:#e3f2fd;color:#1976d2;padding:12px;border-radius:6px;margin-bottom:20px;font-size:14px;border-left:4px solid #1976d2}.auth-footer{margin-top:25px;text-align:center;color:#666}.link-btn{background:none;border:none;color:#667eea;font-weight:600;cursor:pointer;padding:0;text-decoration:underline}.link-btn:hover{color:#764ba2}
