body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.App{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;text-align:center}.App,.game-wrapper{margin:0;min-height:100vh;padding:0}.game-wrapper{overflow-x:hidden}.App-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0003;margin-bottom:20px}.title-container{align-items:center;display:flex;gap:20px;justify-content:center}.harary-portrait{border:3px solid #ffffff4d;border-radius:50%;box-shadow:0 4px 15px #0003;height:80px;object-fit:cover;transition:all .3s ease;width:80px}.harary-portrait:hover{border-color:#ffffff80;box-shadow:0 6px 20px #0000004d;transform:scale(1.05)}.App-header h1{font-size:2.5rem;font-weight:300;margin:0;text-shadow:2px 2px 4px #0000004d}.game-container{gap:0;margin:0 auto;max-width:1200px;padding:0}.game-board-section,.game-container{align-items:center;display:flex;flex-direction:column}.game-board-section{gap:15px;width:100%}.board-area{display:inline-block;position:relative}.result-overlay{background:#000c;border-radius:10px;box-shadow:0 6px 20px #00000040;color:#fff;font-weight:700;left:50%;padding:10px 16px;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:10}.status-label{color:#333;font-size:.7rem;font-weight:600}.status-label.final{background:#ffeb3b;border-radius:6px;color:#1a1a1a;padding:2px 6px}.board-controls{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:15px;box-shadow:0 4px 15px #0000001a;gap:20px;padding:15px 25px;position:relative;z-index:30}.board-controls,.tape-controls{align-items:center;display:flex}.tape-controls{background:#ffffffe6;border:1px solid #0000000d;border-radius:8px;gap:10px;padding:6px 10px}.play-button{background:linear-gradient(45deg,#34c759,#2fb24f);border:none;border-radius:6px;box-shadow:0 4px 12px #34c7594d;color:#fff;cursor:pointer;font-size:1rem;font-weight:700;padding:8px 12px;transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}.play-button:hover:enabled{box-shadow:0 6px 16px #34c75966;transform:translateY(-1px)}.play-button:disabled{cursor:not-allowed;opacity:.6}.pause-button,.step-back-button,.step-forward-button{background:linear-gradient(45deg,#f1f2f6,#dfe4ea);border:none;border-radius:6px;box-shadow:0 4px 12px #00000014;color:#333;cursor:pointer;font-size:1rem;font-weight:700;padding:8px 12px;transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}.pause-button:hover:enabled,.step-back-button:hover:enabled,.step-forward-button:hover:enabled{box-shadow:0 6px 16px #0000001f;transform:translateY(-1px)}.pause-button:disabled,.step-back-button:disabled,.step-forward-button:disabled{cursor:not-allowed;opacity:.6}.game-controls{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:15px;box-shadow:0 8px 32px #0000001a;display:flex;flex-wrap:wrap;gap:20px;justify-content:center;padding:20px}.board-size-control{align-items:center;display:flex;gap:10px}.board-size-control label{font-size:1.1rem;font-weight:500}.board-size-control select{background:#ffffffe6;border:none;border-radius:8px;color:#333;cursor:pointer;font-size:1rem;padding:8px 12px;transition:all .3s ease}.board-size-control select:hover{background:#fff;transform:translateY(-2px)}.board-size-control select:disabled{cursor:not-allowed;opacity:.6;transform:none}.reset-button{background:linear-gradient(45deg,#ff6b6b,#ee5a24);border:none;border-radius:25px;box-shadow:0 4px 15px #ff6b6b4d;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;padding:12px 24px;transition:all .3s ease}.reset-button:hover{box-shadow:0 6px 20px #ff6b6b66;transform:translateY(-3px)}.reset-button:active{transform:translateY(-1px)}.current-pattern-display{align-items:center;background:#ffffffe6;border:1px solid #ffffff4d;border-radius:4px;cursor:pointer;display:flex;flex-direction:column;gap:4px;min-height:50px;min-width:50px;padding:3px;transition:all .3s ease}.current-pattern-display:hover{border-color:#667eea;box-shadow:0 4px 15px #667eea33;transform:scale(1.05)}.current-pattern-display .pattern-grid,.current-pattern-display .pattern-icon-container{margin:0!important;padding:0!important}.pattern-name-display{color:#333;display:none;font-size:.7rem;font-weight:600;line-height:1;margin:0;padding:0;text-align:center}.pattern-target-label{color:#333;display:block;font-size:.65rem;font-weight:600}.domino-toggle{align-items:center;background:#ffffffe6;border:2px solid #ffffff4d;border-radius:12px;display:flex;padding:10px;transition:all .3s ease}.domino-toggle:hover{border-color:#667eea;box-shadow:0 4px 15px #667eea1a}.domino-toggle label{font-size:.9rem;font-weight:600;margin:0}.ai-first-toggle{align-items:center;background:#ffffffe6;border:2px solid #ffffff4d;border-radius:12px;display:flex;padding:10px;transition:all .3s ease}.ai-first-toggle:hover{border-color:#667eea;box-shadow:0 4px 15px #667eea1a}.ai-first-toggle label{align-items:center;color:#333;cursor:pointer;display:flex;font-size:.9rem;font-weight:600;gap:8px;margin:0}.ai-first-toggle input[type=checkbox]{cursor:pointer;height:16px;width:16px}.pass-button{background:linear-gradient(45deg,#ffd166,#fdbb2d);border:none;border-radius:20px;box-shadow:0 4px 12px #0000001a;color:#333;cursor:pointer;font-size:1rem;font-weight:700;padding:10px 18px;transition:transform .15s ease,box-shadow .15s ease}.pass-button:hover{box-shadow:0 8px 18px #00000026;transform:translateY(-2px)}@media (max-width:1023px){.game-container{padding:0 12px}}@media (max-width:767px){.game-container{padding-bottom:16px}.App-header h1{font-size:1.6rem}.board-controls{background:#fffffff2;border-radius:12px;box-shadow:0 2px 10px #0000001f;gap:10px;justify-content:center;margin-top:12px;padding:10px 12px;position:static}.tape-controls{background:#0000;border:none;gap:8px;padding:0}.pause-button,.play-button,.step-back-button,.step-forward-button{border-radius:10px;font-size:1.1rem;padding:12px 14px}.reset-button{border-radius:12px;font-size:.95rem;padding:10px 14px}.current-pattern-display{align-items:center;flex-direction:row;gap:10px;min-height:auto;min-width:auto;padding:8px 10px}.pattern-name-display{display:none}.pattern-target-label{display:block;font-size:.9rem}.status-label,.status-label.final{display:block}.human-thumb{height:48px!important;width:48px!important}}.test-mode-button{background:linear-gradient(45deg,#4ecdc4,#44a08d);border:none;border-radius:25px;box-shadow:0 4px 15px #4ecdc44d;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;padding:12px 24px;transition:all .3s ease}.test-mode-button:hover{box-shadow:0 6px 20px #4ecdc466;transform:translateY(-3px)}.test-mode-button:active{transform:translateY(-1px)}.game-generation-button{background:linear-gradient(45deg,#a8e6cf,#88d8c0);border:none;border-radius:25px;box-shadow:0 4px 15px #a8e6cf4d;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;padding:12px 24px;transition:all .3s ease}.game-generation-button:hover{box-shadow:0 6px 20px #a8e6cf66;transform:translateY(-3px)}.game-generation-button:active{transform:translateY(-1px)}.clear-settings-button{background:linear-gradient(45deg,#ff6b6b,#ee5a52);border:none;border-radius:25px;box-shadow:0 4px 15px #ff6b6b4d;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;margin-top:10px;padding:12px 24px;transition:all .3s ease}.clear-settings-button:hover{box-shadow:0 6px 20px #ff6b6b66;transform:translateY(-3px)}.test-cookies-button{background:linear-gradient(45deg,#ffa726,#ff9800);border:none;border-radius:25px;box-shadow:0 4px 15px #ffa7264d;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;margin-top:10px;padding:12px 24px;transition:all .3s ease}.test-cookies-button:hover{box-shadow:0 6px 20px #ffa72666;transform:translateY(-3px)}.ai-thumb{border-radius:6px;height:40px;object-fit:cover;width:40px}.jiggle{animation:aiJiggle .6s ease-in-out infinite;transform-origin:50% 50%}@keyframes aiJiggle{0%{transform:translateX(0) rotate(0)}25%{transform:translateX(1px) rotate(.4deg)}50%{transform:translateX(0) rotate(0)}75%{transform:translateX(-1px) rotate(-.4deg)}to{transform:translateX(0) rotate(0)}}@media (max-width:768px){.App-header h1{font-size:2rem}.board-controls,.game-controls{flex-direction:column;gap:15px}.board-size-control{flex-direction:column;gap:5px}.hamburger-menu{right:10px;top:10px}}.hamburger-menu{background:#ffffffe6;border-radius:8px;box-shadow:0 4px 15px #0000001a;cursor:pointer;padding:10px;position:fixed;right:16px;top:16px;transform:none!important;transition:all .3s ease;will-change:auto;z-index:1500}.hamburger-menu:hover{background:#fff}.hamburger-icon{height:16px;position:relative;width:22px}.hamburger-icon span{background:#333;border-radius:2px;display:block;height:3px;position:absolute;transition:all .3s ease;width:100%}.hamburger-icon span:first-child{top:0}.hamburger-icon span:nth-child(2){top:6px}.hamburger-icon span:nth-child(3){top:12px}@supports (top:env(safe-area-inset-top)){.hamburger-menu{right:max(10px,calc(env(safe-area-inset-right) + 6px));top:max(10px,calc(env(safe-area-inset-top) + 6px))}}.modal-overlay{align-items:flex-start;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;overflow-y:auto;padding:20px;position:fixed;right:0;top:0;z-index:5000}.modal-content{animation:modalSlideIn .3s ease-out;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:20px;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-height:90vh;overflow:hidden;padding:0;width:min(92vw,780px)}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-50px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{align-items:center;border-bottom:1px solid #fff3;display:flex;justify-content:space-between;padding:20px 30px}.modal-header h2{color:#fff;font-size:1.8rem;font-weight:300;margin:0}.modal-close{align-items:center;background:none;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:2rem;height:40px;justify-content:center;padding:0;transition:all .3s ease;width:40px}.modal-close:hover{background:#fff3;transform:scale(1.1)}.modal-body{display:flex;flex:1 1 auto;flex-direction:column;gap:16px;overflow:auto;padding:20px}.modal-body>div{min-width:0}.player-selectors-grid{grid-gap:16px;display:grid!important;gap:16px;grid-template-columns:50% 50%!important;width:100%}.modal-body select,.player-selector-col{min-width:0;width:100%}.modal-body select{box-sizing:border-box;max-width:100%}.player-selectors-grid select{box-sizing:border-box!important;max-width:100%!important}.modal-body .player-selectors-grid select,.player-selector-dropdown,.player-selectors-grid select{min-width:0!important;width:100%!important}.player-selector-dropdown{box-sizing:border-box!important;max-width:100%!important}.readme-button:hover{box-shadow:0 6px 20px #4caf5066;transform:translateY(-3px)}.readme-button:active{transform:translateY(-1px)}@media (min-width:768px) and (orientation:landscape){.modal-body{align-items:start;flex-direction:row;gap:20px}.player-selectors-grid{gap:20px;grid-template-columns:50% 50%!important}}.modal-content.pattern-selector-modal{max-height:none;overflow:hidden;width:min(92vw,940px)}.modal-content.pattern-selector-modal .modal-body{align-items:stretch!important;flex:0 0 auto;flex-direction:column!important;overflow:visible}.modal-content.pattern-selector-modal .modal-body>*{width:100%}.modal-content.settings-modal{width:min(90vw,860px)}.modal-content.settings-modal .modal-body{flex-direction:column}.developer-checkbox{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:20px;display:flex;justify-content:center;margin:10px 0;padding:8px 16px}.developer-checkbox label{align-items:center;color:#fff;cursor:pointer;display:flex;font-weight:500;gap:8px}.developer-checkbox input[type=checkbox]{cursor:pointer;height:16px;width:16px}.game-board-container{align-items:center;display:flex;justify-content:center;margin:0;position:relative}.game-board{grid-gap:2px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:15px;box-shadow:0 8px 32px #0000001a;display:grid;gap:2px;padding:0;transition:all .3s ease}.game-board.ai-thinking{pointer-events:none}.board-cell{align-items:center;background:#ffffffe6;border:2px solid #ffffff4d;border-radius:8px;color:#333;cursor:pointer;display:flex;font-weight:700;justify-content:center;overflow:visible;position:relative;transition:all .3s ease}.board-cell:hover{background:#fff;box-shadow:0 4px 15px #0003;transform:scale(1.05)}.board-cell:active{transform:scale(.95)}.board-cell.cell-x{background:linear-gradient(135deg,#ff6b6b,#ee5a24);border-color:#ff6b6b}.board-cell.cell-o,.board-cell.cell-x{animation:cellPop .3s ease-out;color:#fff}.board-cell.cell-o{background:linear-gradient(135deg,#4ecdc4,#44a08d);border-color:#4ecdc4}.domino-toggle{margin-bottom:15px;text-align:center}.domino-toggle label{align-items:center;background:#ffffffe6;border-radius:6px;box-shadow:0 2px 8px #0000001a;color:#333;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;justify-content:center;padding:8px 12px}.domino-toggle input[type=checkbox]{cursor:pointer;height:16px;width:16px}.board-cell.domino-cell{position:relative;transition:all .3s ease;z-index:2}.board-cell.winning-cell{animation:winningPulse 1s ease-in-out infinite alternate;background:linear-gradient(135deg,gold,#ffed4e)!important}.board-cell img{-webkit-backface-visibility:hidden;backface-visibility:hidden;filter:contrast(1.1) saturate(1.1);image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;image-rendering:pixelated;transform:translateZ(0);will-change:transform}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.board-cell img{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}}@keyframes winningPulse{0%,to{box-shadow:0 0 20px #ffd70099;transform:scale(1.1)}50%{box-shadow:0 0 30px #ffd700cc;transform:scale(1.15)}}@keyframes cellPop{0%{opacity:0;transform:scale(.8)}50%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.ai-thinking-overlay{align-items:center;background:#000c;border-radius:10px;color:#fff;display:flex;flex-direction:column;font-size:1.2rem;font-weight:500;justify-content:center;left:50%;padding:20px;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:10}.ai-thinking-spinner{animation:spin 1s linear infinite;border:4px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:40px;margin-bottom:15px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.game-board{gap:1px;padding:10px}.board-cell{border-radius:6px}.ai-thinking-overlay{font-size:1rem}.ai-thinking-spinner{border-width:3px;height:30px;width:30px}}.heatmap-overlay{border-radius:6px;opacity:.6;transition:opacity .2s ease-in-out}.heatmap-overlay:hover{opacity:.8}.board-cell:hover .heatmap-overlay{opacity:.9}.ai-bubble-wrap{display:inline-block;position:relative}.ai-tooltip{background:#fffffff2;border:1px solid #0003;border-radius:18px;bottom:100%;box-shadow:0 2px 8px #00000026;color:#222;font-size:11px;left:50%;line-height:1.2;opacity:0;padding:6px 8px;pointer-events:none;position:absolute;transform:translateX(-50%) translateY(-8px);transition:opacity .15s ease,transform .15s ease;white-space:nowrap;z-index:20}.ai-bubble-wrap:hover .ai-tooltip{opacity:1;transform:translateX(-50%) translateY(-12px);transition-delay:1s}.ai-tail{background:#fffffff2;border:1px solid #0003;border-radius:50%;height:8px;opacity:0;pointer-events:none;position:absolute;right:6px;top:-6px;transition:opacity .15s ease,transform .15s ease;width:8px;z-index:18}.ai-tail.small{height:6px;right:12px;top:-12px;width:6px}.ai-bubble-wrap:hover .ai-tail{opacity:1;transition-delay:1s}.pattern-selector{-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0;box-shadow:none;max-height:none;min-width:auto;overflow:visible;padding:0}.pattern-selector-grid{grid-gap:14px;box-sizing:border-box;display:grid;gap:14px;grid-template-columns:repeat(5,1fr);max-height:none;overflow:visible;padding:12px 18px 18px;width:100%}.pattern-grid-item{background:#fffffff2;border:2px solid #ffffff4d;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;justify-content:center;min-height:76px;padding:10px;text-align:center;transition:all .3s ease}.pattern-grid-item:hover:not(.disabled){border-color:#667eea;box-shadow:0 4px 12px #667eea33;transform:translateY(-2px)}.pattern-grid-item.selected{background:#667eea1a;border-color:#667eea;box-shadow:0 4px 12px #667eea4d}.pattern-grid-item.disabled{cursor:not-allowed;opacity:.6}.pattern-visual{align-items:center;display:flex;justify-content:center;margin-bottom:4px;min-height:40px}.pattern-label{flex-shrink:0}.pattern-name{color:#333;font-size:.9rem;font-weight:600;line-height:1.2}.pattern-selector-body{overflow:visible!important}@media (max-width:768px){.pattern-selector-grid{gap:8px;grid-template-columns:repeat(4,1fr);padding:10px 12px 12px}.pattern-grid-item{min-height:60px;padding:8px}.pattern-name{font-size:.8rem}}.pattern-icon-container{align-items:center;display:flex;justify-content:center;margin:0;padding:0}.pattern-grid{grid-gap:2px;display:grid;gap:2px;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);height:80px;width:80px}.pattern-cell{background:#0b3d91;border:2px solid #0b3d91;border-radius:4px;height:16px;opacity:0;transition:opacity .3s ease;width:16px}.pattern-cell.filled{opacity:1}.dynamic-pattern{gap:2px}.pattern-tic{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(1,1fr);height:20px;width:60px}.pattern-tic .pattern-cell:first-child,.pattern-tic .pattern-cell:nth-child(2),.pattern-tic .pattern-cell:nth-child(3){opacity:1}.pattern-skinny{grid-template-columns:repeat(1,1fr);grid-template-rows:repeat(4,1fr);height:80px;width:20px}.pattern-skinny .pattern-cell:first-child,.pattern-skinny .pattern-cell:nth-child(2),.pattern-skinny .pattern-cell:nth-child(3),.pattern-skinny .pattern-cell:nth-child(4){opacity:1}.pattern-el{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr);height:40px;width:40px}.pattern-el .pattern-cell:first-child{grid-column:1;grid-row:1;opacity:1}.pattern-el .pattern-cell:nth-child(2){grid-column:1;grid-row:2;opacity:1}.pattern-el .pattern-cell:nth-child(3){grid-column:2;grid-row:2;opacity:1}.pattern-boxy{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr);height:40px;width:40px}.pattern-boxy .pattern-cell:first-child,.pattern-boxy .pattern-cell:nth-child(2),.pattern-boxy .pattern-cell:nth-child(3),.pattern-boxy .pattern-cell:nth-child(4){opacity:1}.pattern-ellie{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,1fr);height:60px;width:40px}.pattern-ellie .pattern-cell:first-child{grid-column:1;grid-row:1;opacity:1}.pattern-ellie .pattern-cell:nth-child(2){grid-column:1;grid-row:2;opacity:1}.pattern-ellie .pattern-cell:nth-child(3){grid-column:1;grid-row:3;opacity:1}.pattern-ellie .pattern-cell:nth-child(4){grid-column:2;grid-row:3;opacity:1}.pattern-knobby{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);height:40px;width:60px}.pattern-knobby .pattern-cell:first-child{grid-column:1;grid-row:1;opacity:1}.pattern-knobby .pattern-cell:nth-child(2){grid-column:2;grid-row:1;opacity:1}.pattern-knobby .pattern-cell:nth-child(3){grid-column:3;grid-row:1;opacity:1}.pattern-knobby .pattern-cell:nth-child(4){grid-column:2;grid-row:2;opacity:1}.pattern-tippy{position:relative}.pattern-tippy .pattern-cell:first-child{grid-column:1;grid-row:1}.pattern-tippy .pattern-cell:nth-child(2){grid-column:2;grid-row:1}.pattern-tippy .pattern-cell:nth-child(3){grid-column:2;grid-row:2}.pattern-tippy .pattern-cell:nth-child(4){grid-column:3;grid-row:2}.pattern-snakey{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(2,1fr);height:40px;width:80px}.pattern-snakey .pattern-cell:first-child{grid-column:1;grid-row:1;opacity:1}.pattern-snakey .pattern-cell:nth-child(2){grid-column:2;grid-row:1;opacity:1}.pattern-snakey .pattern-cell:nth-child(3){grid-column:2;grid-row:2;opacity:1}.pattern-snakey .pattern-cell:nth-child(4){grid-column:3;grid-row:2;opacity:1}.pattern-snakey .pattern-cell:nth-child(5){grid-column:4;grid-row:2;opacity:1}.pattern-cross{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);height:60px;width:60px}.pattern-cross .pattern-cell:first-child{grid-column:2;grid-row:1;opacity:1}.pattern-cross .pattern-cell:nth-child(2){grid-column:1;grid-row:2;opacity:1}.pattern-cross .pattern-cell:nth-child(3){grid-column:2;grid-row:2;opacity:1}.pattern-cross .pattern-cell:nth-child(4){grid-column:3;grid-row:2;opacity:1}.pattern-cross .pattern-cell:nth-child(5){grid-column:2;grid-row:3;opacity:1}.pattern-tee{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);height:60px;width:60px}.pattern-tee .pattern-cell:first-child{grid-column:1;grid-row:1;opacity:1}.pattern-tee .pattern-cell:nth-child(2){grid-column:2;grid-row:1;opacity:1}.pattern-tee .pattern-cell:nth-child(3){grid-column:3;grid-row:1;opacity:1}.pattern-tee .pattern-cell:nth-child(4){grid-column:2;grid-row:2;opacity:1}.pattern-tee .pattern-cell:nth-child(5){grid-column:2;grid-row:3;opacity:1}.pattern-ducky{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);height:60px;width:60px}.pattern-ducky .pattern-cell:first-child{grid-column:1;grid-row:1;opacity:1}.pattern-ducky .pattern-cell:nth-child(2){grid-column:2;grid-row:1;opacity:1}.pattern-ducky .pattern-cell:nth-child(3){grid-column:2;grid-row:2;opacity:1}.pattern-ducky .pattern-cell:nth-child(4){grid-column:2;grid-row:3;opacity:1}.pattern-ducky .pattern-cell:nth-child(5){grid-column:3;grid-row:3;opacity:1}.ai-player-selector{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border:1px solid #fff3;border-radius:12px;margin:8px 0;padding:16px;transition:all .3s ease}.ai-player-selector:hover{background:#ffffff26;box-shadow:0 8px 25px #00000026;transform:translateY(-2px)}.ai-player-label{color:#333;display:block;font-size:.9rem;font-weight:600;letter-spacing:.5px;margin-bottom:8px;text-transform:uppercase}.ai-player-dropdown-container{display:flex;flex-direction:column;gap:12px}.ai-player-dropdown{background:#ffffffe6;border:2px solid #ffffff4d;border-radius:8px;color:#333;cursor:pointer;font-size:.9rem;font-weight:500;padding:10px 12px;transition:all .3s ease;width:100%}.ai-player-dropdown:focus{border-color:#4ecdc4;box-shadow:0 0 0 3px #4ecdc433;outline:none}.ai-player-dropdown:disabled{cursor:not-allowed;opacity:.6}.ai-player-dropdown optgroup{background:#f8f9fa;color:#666;font-weight:600}.ai-player-dropdown option{color:#333;font-weight:500;padding:4px}.ai-player-info{align-items:center;background:#fffc;border:1px solid #ffffff4d;border-radius:8px;display:flex;gap:12px;padding:12px}.ai-player-thumbnail{align-items:center;background:linear-gradient(135deg,#4ecdc4,#44a08d);border-radius:50%;display:flex;flex-shrink:0;height:48px;justify-content:center;overflow:hidden;position:relative;width:48px}.ai-player-thumbnail img{border:2px solid #ffffff4d;border-radius:50%;height:100%;object-fit:cover;width:100%}.ai-player-details{flex:1 1;min-width:0}.ai-player-name{color:#333;font-size:1rem;font-weight:600;margin-bottom:2px}.ai-player-level{color:#666;font-size:.8rem;font-weight:500;letter-spacing:.5px;margin-bottom:4px;text-transform:uppercase}.ai-player-description{color:#777;font-size:.8rem;font-style:italic;line-height:1.3}.ai-player-level.beginner{color:#28a745}.ai-player-level.intermediate{color:#ffc107}.ai-player-level.expert{color:#dc3545}@media (max-width:768px){.ai-player-selector{margin:6px 0;padding:12px}.ai-player-info{gap:8px;padding:8px}.ai-player-thumbnail{height:40px;width:40px}.ai-player-name{font-size:.9rem}.ai-player-description{font-size:.75rem}}.game-mode-selector{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;margin:20px 0;padding:15px}.game-mode-selector h3{color:#495057;font-size:1.1em;font-weight:600;margin:0 0 15px}.game-mode-options{display:flex;flex-direction:column;gap:12px}.game-mode-option{align-items:center;background:#fff;border:2px solid #dee2e6;border-radius:8px;cursor:pointer;display:flex;gap:15px;padding:15px;transition:all .2s ease}.game-mode-option:hover:not(.disabled){border-color:#007bff;box-shadow:0 2px 8px #007bff26;transform:translateY(-1px)}.game-mode-option.selected{background:#f8f9ff;border-color:#007bff;box-shadow:0 2px 8px #007bff33}.game-mode-option.disabled{background:#f8f9fa;cursor:not-allowed;opacity:.6}.mode-icon{align-items:center;background:#f8f9fa;border-radius:8px;display:flex;flex-shrink:0;font-size:2em;height:50px;justify-content:center;width:50px}.game-mode-option.selected .mode-icon{background:#e3f2fd}.mode-info{flex:1 1}.mode-info h4{color:#212529;font-size:1.1em;font-weight:600;margin:0 0 5px}.mode-info p{color:#6c757d;font-size:.9em;line-height:1.4;margin:0 0 8px}.mode-players{display:flex;flex-wrap:wrap;gap:8px}.player-tag{background:#e9ecef;border-radius:12px;color:#495057;font-size:.8em;font-weight:500;padding:4px 8px}.game-mode-option.selected .player-tag{background:#007bff;color:#fff}@media (max-width:768px){.game-mode-selector{margin:15px 0;padding:12px}.game-mode-option{gap:12px;padding:12px}.mode-icon{font-size:1.5em;height:40px;width:40px}.mode-info h4{font-size:1em}.mode-info p{font-size:.85em}.player-tag{font-size:.75em;padding:3px 6px}}.test-mode{color:#fff;margin:0 auto;max-width:1000px;padding:20px}.test-header{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0003;border-radius:15px;display:flex;justify-content:space-between;margin-bottom:30px;padding:20px}.test-header h2{font-size:2rem;font-weight:300;margin:0;text-shadow:2px 2px 4px #0000004d}.test-container{display:flex;flex-direction:column;gap:30px}.test-config{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:15px;box-shadow:0 8px 32px #0000001a;padding:30px}.test-config h3{font-size:1.5rem;font-weight:400;margin:0 0 25px;text-align:center}.config-item input,.config-item select{background:#ffffffe6;border:none;color:#333;cursor:pointer;padding:12px 16px;transition:all .3s ease}.config-item input:hover,.config-item select:hover{background:#fff;transform:translateY(-2px)}.config-item input:disabled,.config-item select:disabled{opacity:.6;transform:none}.config-item label{align-items:center;cursor:pointer;display:flex;gap:8px}.config-item input[type=checkbox]{cursor:pointer;margin:0;width:auto}.start-test-button{background:linear-gradient(45deg,#ff6b6b,#ee5a24);border:none;border-radius:25px;box-shadow:0 4px 15px #ff6b6b4d;color:#fff;cursor:pointer;font-size:1.2rem;font-weight:600;padding:15px 30px;transition:all .3s ease;width:100%}.start-test-button:hover:not(:disabled){box-shadow:0 6px 20px #ff6b6b66;transform:translateY(-3px)}.start-test-button:disabled{cursor:not-allowed;opacity:.7;transform:none}.test-results{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:15px;box-shadow:0 8px 32px #0000001a;padding:30px}.test-results h3{font-size:1.5rem;font-weight:400;margin:0 0 25px;text-align:center}.results-summary{gap:15px}.result-item{background:#ffffff0d;border-left:4px solid #ffffff4d;border-radius:10px;padding:15px 20px;transition:all .3s ease}.result-item:hover{background:#ffffff1a;transform:translateX(5px)}.result-item.total{background:#ff6b6b1a;border-left-color:#ff6b6b;font-weight:600}.result-label{color:#ffffffe6;font-size:1.1rem;font-weight:500}.result-value{color:#fff;font-size:1.3rem;font-weight:600}.result-percentage{color:#ffffffb3;font-size:1rem;font-style:italic}@media (max-width:768px){.test-header{flex-direction:column;gap:15px;text-align:center}.config-grid{grid-template-columns:1fr}.result-item{flex-direction:column;gap:8px;text-align:center}}.game-generation{color:#fff;margin:0 auto;max-width:1200px;padding:20px}.generation-header{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0003;border-radius:15px;display:flex;justify-content:space-between;margin-bottom:30px;padding:20px}.generation-header h2{font-size:2rem;font-weight:300;margin:0;text-shadow:2px 2px 4px #0000004d}.back-button{background:linear-gradient(45deg,#667eea,#764ba2);border-radius:25px;box-shadow:0 4px 15px #667eea4d;font-weight:600;transition:all .3s ease}.back-button:hover{box-shadow:0 6px 20px #667eea66;transform:translateY(-2px)}.generation-container{display:flex;flex-direction:column;gap:30px}.generation-config{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:15px;box-shadow:0 8px 32px #0000001a;padding:30px}.generation-config h3{font-size:1.5rem;font-weight:400;margin:0 0 25px;text-align:center}.config-grid{grid-gap:25px;gap:25px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-bottom:30px}.config-item{gap:10px}.config-item label{color:#ffffffe6;font-size:1.1rem;font-weight:500}.config-item input[type=number]{background:#ffffffe6;border:none;border-radius:8px;color:#333;font-size:1rem;padding:12px 16px;transition:all .3s ease}.config-item input[type=number]:hover{background:#fff;transform:translateY(-2px)}.config-item input[type=number]:disabled{cursor:not-allowed;opacity:.6;transform:none}.checkbox-group{display:flex;flex-wrap:wrap;gap:15px}.checkbox-group label{align-items:center;color:#fffc;cursor:pointer;display:flex;font-size:1rem;gap:8px;transition:all .3s ease}.checkbox-group label:hover{color:#fff}.checkbox-group input[type=checkbox]{accent-color:#667eea;cursor:pointer;height:18px;width:18px}.checkbox-group input[type=checkbox]:disabled{cursor:not-allowed;opacity:.6}.generate-button{background:linear-gradient(45deg,#4ecdc4,#44a08d);border:none;border-radius:25px;box-shadow:0 4px 15px #4ecdc44d;color:#fff;cursor:pointer;font-size:1.2rem;font-weight:600;padding:15px 30px;transition:all .3s ease;width:100%}.generate-button:hover:not(:disabled){box-shadow:0 6px 20px #4ecdc466;transform:translateY(-3px)}.generate-button:disabled{cursor:not-allowed;opacity:.7;transform:none}.generation-progress{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:15px;box-shadow:0 8px 32px #0000001a;padding:30px}.generation-progress h3{font-size:1.5rem;font-weight:400;margin:0 0 20px;text-align:center}.progress-bar{background:#ffffff1a;border-radius:10px;height:20px;margin-bottom:15px;overflow:hidden;width:100%}.progress-fill{background:linear-gradient(45deg,#4ecdc4,#44a08d);border-radius:10px;height:100%;transition:width .3s ease}.generation-progress p{color:#ffffffe6;margin:5px 0;text-align:center}.generation-results{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:15px;box-shadow:0 8px 32px #0000001a;padding:30px}.generation-results h3{font-size:1.5rem;font-weight:400;margin:0 0 25px;text-align:center}.results-summary{display:flex;flex-direction:column;gap:20px}.results-summary p{color:#ffffffe6;font-size:1.1rem;margin:0}.result-stats{background:#ffffff0d;border-left:4px solid #ffffff4d;border-radius:10px;padding:20px}.result-stats h4{color:#fff;font-size:1.2rem;font-weight:500;margin:0 0 15px}.stats-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.stat-item{align-items:center;background:#ffffff0d;border-left:3px solid #fff3;border-radius:8px;display:flex;justify-content:space-between;padding:10px 15px}.stat-label{color:#fffc;font-size:1rem}.stat-value{color:#fff;font-size:1.2rem;font-weight:600}.download-button{align-self:center;background:linear-gradient(45deg,#ff6b6b,#ee5a24);border:none;border-radius:25px;box-shadow:0 4px 15px #ff6b6b4d;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;padding:12px 24px;transition:all .3s ease}.download-button:hover{box-shadow:0 6px 20px #ff6b6b66;transform:translateY(-3px)}@media (max-width:768px){.generation-header{flex-direction:column;gap:15px;text-align:center}.config-grid{grid-template-columns:1fr}.checkbox-group{flex-direction:column;gap:10px}.stats-grid{grid-template-columns:1fr}.stat-item{flex-direction:column;gap:5px;text-align:center}}.performance-summary{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;color:#fff;margin:15px 0;padding:15px}.performance-summary h4{color:#fff;font-size:1.1rem;margin:0 0 10px}.performance-text{font-size:1rem;font-weight:500;margin:0;text-shadow:0 1px 2px #0000004d}.avatar-selector{background:#ffffffe6;border:2px solid #ffffff4d;border-radius:12px;margin:20px 0;padding:15px}.avatar-selector h3{color:#333;font-size:1.1rem;font-weight:600;margin:0 0 15px}.avatar-preview{align-items:center;background:#667eea1a;border-radius:8px;display:flex;flex-direction:column;margin-bottom:15px;padding:10px}.avatar-display{font-size:2rem;margin-bottom:5px}.avatar-label{color:#666;font-size:.8rem;font-weight:500}.avatar-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(5,1fr);max-height:200px;overflow-y:auto}.avatar-option{align-items:center;background:#fff;border:2px solid #667eea4d;border-radius:8px;cursor:pointer;display:flex;font-size:1.5rem;height:40px;justify-content:center;margin:0 auto;transition:all .2s ease;width:40px}.avatar-option:hover{border-color:#667eea;box-shadow:0 2px 8px #667eea33;transform:scale(1.1)}.avatar-option.selected{background:#667eea1a;border-color:#667eea;box-shadow:0 2px 8px #667eea4d}.title-logo{margin:0;padding:10px 0;position:relative;text-align:center}.polyanimals-logo{filter:drop-shadow(0 4px 8px rgba(0,0,0,.3));height:auto;margin:0 auto 10px;max-width:200px;width:100%}@media (max-width:768px){.polyanimals-logo{max-width:150px}}@media (max-width:480px){.polyanimals-logo{max-width:120px}}.tournament-optimizer{background:#f8f9fa;margin:0 auto;max-width:1200px;min-height:100vh;padding:20px}.optimizer-header{align-items:center;border-bottom:2px solid #e9ecef;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:20px}.optimizer-header h2{color:#495057;font-size:2rem;margin:0}.back-button{background:#6c757d;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;padding:10px 20px;transition:background-color .2s}.back-button:hover{background:#5a6268}.optimizer-container{display:flex;flex-direction:column;gap:30px}.config-section,.controls-section,.results-section{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0000001a;padding:25px}.config-section h3,.controls-section h3,.results-section h3{color:#495057;font-size:1.3rem;font-weight:600;margin:0 0 20px}.config-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.config-item{display:flex;flex-direction:column;gap:8px}.config-item label{color:#495057;font-size:.9rem;font-weight:600}.config-item input,.config-item select{border:2px solid #e9ecef;border-radius:8px;font-size:1rem;padding:10px 12px;transition:border-color .2s}.config-item input:focus,.config-item select:focus{border-color:#007bff;outline:none}.config-item input:disabled,.config-item select:disabled{background:#f8f9fa;cursor:not-allowed}.button-group{display:flex;flex-wrap:wrap;gap:15px}.clear-cache-button,.run-button{border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;min-width:200px;padding:12px 24px;transition:all .2s}.run-button.optimized{background:#28a745;color:#fff}.run-button.optimized:hover:not(:disabled){background:#218838;box-shadow:0 4px 12px #28a7454d;transform:translateY(-2px)}.run-button.standard{background:#007bff;color:#fff}.run-button.standard:hover:not(:disabled){background:#0056b3;box-shadow:0 4px 12px #007bff4d;transform:translateY(-2px)}.clear-cache-button{background:#6c757d;color:#fff}.clear-cache-button:hover:not(:disabled){background:#5a6268;transform:translateY(-2px)}.clear-cache-button:disabled,.run-button:disabled{box-shadow:none;cursor:not-allowed;opacity:.6;transform:none}.results-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.result-item{align-items:center;background:#f8f9fa;border-left:4px solid #007bff;border-radius:8px;display:flex;justify-content:space-between;padding:15px}.result-label{color:#495057;font-weight:600}.result-value{color:#007bff;font-size:1.1rem;font-weight:700}.error-message{background:#f8d7da;border:1px solid #f5c6cb;border-radius:8px;color:#721c24;font-weight:600;padding:15px}@media (max-width:768px){.tournament-optimizer{padding:15px}.optimizer-header{flex-direction:column;gap:15px;text-align:center}.config-grid{grid-template-columns:1fr}.button-group{flex-direction:column}.clear-cache-button,.run-button{min-width:auto}.results-grid{grid-template-columns:1fr}}
/*# sourceMappingURL=main.28110d2b.css.map*/