:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh;width:100%}#root{width:100%}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.modal-overlay{position:fixed;inset:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background-color:var(--yellow);border:4px solid var(--black);border-radius:12px;padding:2rem;max-width:500px;width:90%;box-shadow:8px 8px 0 var(--black)}.modal-content h2{margin:0 0 1rem;font-size:1.8rem;color:var(--black);text-align:center}.waiting-text{text-align:center;font-size:1.1rem;margin:0 0 1.5rem;color:var(--black)}.room-id-section,.share-url-section{margin-bottom:1.5rem}.room-id-section label,.share-url-section label{display:block;font-weight:700;margin-bottom:.5rem;color:var(--black)}.room-id{background-color:#fff;border:3px solid var(--black);padding:1rem;text-align:center;font-size:1.5rem;font-weight:700;letter-spacing:2px;font-family:monospace;color:var(--black)}.share-url-container{display:flex;gap:.5rem}.share-url-input{flex:1;padding:.75rem;border:3px solid var(--black);font-size:.9rem;font-family:monospace;background-color:#fff;color:var(--black)}.copy-button{background-color:var(--player1);color:#fff;border:3px solid var(--black);padding:.75rem 1.5rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:transform .1s}.copy-button:hover{transform:translateY(-2px)}.copy-button:active{transform:translateY(0)}.loading-animation{display:flex;justify-content:center;gap:.5rem;margin:1.5rem 0}.dot{width:12px;height:12px;background-color:var(--black);border-radius:50%;animation:bounce 1.4s infinite ease-in-out both}.dot:nth-child(1){animation-delay:-.32s}.dot:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.cancel-button{width:100%;background-color:#e0e0e0;color:var(--black);border:3px solid var(--black);padding:.75rem;font-size:1rem;font-weight:700;cursor:pointer;transition:transform .1s}.cancel-button:hover{transform:translateY(-2px);background-color:#d0d0d0}.cancel-button:active{transform:translateY(0)}@media(max-width:768px){.modal-overlay{padding:1rem}.modal-content{padding:1.5rem;max-width:100%}.modal-content h2{font-size:1.5rem}.room-id{font-size:1.2rem;padding:.75rem}.share-url-container{flex-direction:column}.share-url-input{font-size:.8rem}.copy-button{width:100%;padding:.75rem}}.online-indicator{position:fixed;top:1rem;right:1rem;display:flex;gap:1rem;align-items:center;z-index:100}.connection-status{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background-color:#fff;border:3px solid var(--black);border-radius:20px;font-size:.9rem;font-weight:700;box-shadow:3px 3px 0 var(--black)}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.connection-status.connected .status-dot{background-color:#4ade80;animation:pulse 2s infinite}.connection-status.disconnected .status-dot{background-color:#ef4444}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.opponent-info,.waiting-info{padding:.5rem 1rem;background-color:var(--player2);color:#fff;border:3px solid var(--black);border-radius:20px;font-weight:700;box-shadow:3px 3px 0 var(--black)}.waiting-info{background-color:var(--yellow);color:var(--black);animation:fadeInOut 1.5s infinite}@keyframes fadeInOut{0%,to{opacity:1}50%{opacity:.6}}@media(max-width:600px){.online-indicator{flex-direction:column;align-items:flex-end;gap:.5rem}}:root{--player1: #FF6B9D;--player2: #4ECDC4;--player1-color: #FF6B9D;--player2-color: #4ECDC4;--cell-size: 100px;--grid-gap: 12px;--bg-color: #FBBF24;--yellow: #FBBF24;--border-color: #000000;--black: #000000;--border-width: 4px;--text-dark: #000000;--white: #FFFFFF}.app{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:20px;background:var(--bg-color)}.game-title{font-size:2.8rem;font-weight:900;color:var(--text-dark);margin-bottom:30px;text-align:center;text-transform:uppercase;letter-spacing:2px;border:var(--border-width) solid var(--border-color);padding:15px 30px;background:var(--white);box-shadow:8px 8px 0 var(--border-color);transform:rotate(-1deg)}.board-container{display:flex;flex-direction:column;border:var(--border-width) solid var(--border-color);box-shadow:12px 12px 0 var(--border-color)}.board-header{display:flex;align-items:center;justify-content:center;gap:16px;padding:20px;border-bottom:var(--border-width) solid var(--border-color)}.player1-bg{background-color:var(--player1-color)}.player2-bg{background-color:var(--player2-color)}.player-number{font-size:3rem;font-weight:900;color:var(--white);line-height:1;min-width:50px;text-align:center}.player-label{font-size:1.2rem;font-weight:900;color:var(--white);letter-spacing:2px}.board{display:grid;grid-template-columns:repeat(3,var(--cell-size));grid-template-rows:repeat(3,var(--cell-size));gap:var(--grid-gap);background-color:var(--white);padding:calc(var(--grid-gap) * 1.5)}.cell{width:var(--cell-size);height:var(--cell-size);background-color:var(--white);border:var(--border-width) solid var(--border-color);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .1s ease;position:relative}.cell:hover:not(.occupied){transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--border-color)}.cell:active:not(.occupied){transform:translate(0);box-shadow:none}.cell.occupied{cursor:not-allowed}.piece{width:70%;height:70%;border-radius:50%;border:var(--border-width) solid var(--border-color);animation:placepiece .2s ease-out}.piece.player1{background:var(--player1-color);box-shadow:4px 4px 0 var(--border-color)}.piece.player2{background:var(--player2-color);box-shadow:4px 4px 0 var(--border-color)}.piece.next-to-disappear{animation:pulse .8s steps(2,end) infinite}@keyframes placepiece{0%{transform:scale(0) rotate(0)}to{transform:scale(1) rotate(180deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.game-status{margin-top:30px;text-align:center}.winner-message{font-size:2.2rem;font-weight:900;margin-bottom:20px;text-transform:uppercase;letter-spacing:2px;border:var(--border-width) solid var(--border-color);padding:20px 40px;background:var(--white);box-shadow:8px 8px 0 var(--border-color);animation:winner-appear .3s ease-out;color:var(--text-dark)}.winner-message.player1-color{background-color:var(--player1-color);color:var(--white)}.winner-message.player2-color{background-color:var(--player2-color);color:var(--white)}@keyframes winner-appear{0%{transform:scale(.8) rotate(-5deg)}to{transform:scale(1) rotate(0)}}.restart-button{padding:14px 35px;font-size:1.2rem;font-weight:900;color:var(--white);background:#8b5cf6;border:var(--border-width) solid var(--border-color);cursor:pointer;transition:all .1s ease;box-shadow:6px 6px 0 var(--border-color);text-transform:uppercase;letter-spacing:1px}.restart-button:hover{transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--border-color)}.restart-button:active{transform:translate(0);box-shadow:2px 2px 0 var(--border-color)}@media(max-width:768px){:root{--cell-size: 80px;--grid-gap: 10px;--border-width: 3px}.game-title{font-size:2rem;padding:12px 24px}.player-number{font-size:2.5rem}.player-label{font-size:1rem}.board-header{padding:16px}.winner-message{font-size:1.8rem;padding:16px 32px}}@media(max-width:480px){:root{--cell-size: 70px;--grid-gap: 8px;--border-width: 3px}.game-title{font-size:1.5rem;padding:10px 20px;box-shadow:5px 5px 0 var(--border-color)}.player-number{font-size:2rem}.player-label{font-size:.9rem}.board-header{padding:12px;gap:12px}.winner-message{font-size:1.4rem;padding:14px 24px;box-shadow:5px 5px 0 var(--border-color)}.restart-button{padding:12px 28px;font-size:1rem;box-shadow:4px 4px 0 var(--border-color)}.app{padding:10px}.board{box-shadow:8px 8px 0 var(--border-color)}}.app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cell{touch-action:manipulation}.share-link-button{padding:12px 24px;font-size:1rem;font-weight:900;color:var(--white);background:#3b82f6;border:var(--border-width) solid var(--border-color);cursor:pointer;margin-bottom:20px;box-shadow:5px 5px 0 var(--border-color);text-transform:uppercase;letter-spacing:1px;transition:all .1s ease}.share-link-button:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--border-color)}.share-link-button:active{transform:translate(0);box-shadow:2px 2px 0 var(--border-color)}.forfeit-button{padding:10px 20px;font-size:.9rem;font-weight:900;color:var(--white);background:#ef4444;border:var(--border-width) solid var(--border-color);cursor:pointer;margin-bottom:20px;box-shadow:4px 4px 0 var(--border-color);text-transform:uppercase;letter-spacing:1px;transition:all .1s ease}.forfeit-button:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--border-color)}.forfeit-button:active{transform:translate(0);box-shadow:2px 2px 0 var(--border-color)}.turn-indicator{margin-bottom:20px;text-align:center}.your-turn,.opponent-turn{font-size:1.4rem;font-weight:900;padding:12px 30px;border:var(--border-width) solid var(--border-color);box-shadow:5px 5px 0 var(--border-color);display:inline-block;text-transform:uppercase;letter-spacing:2px}.your-turn{background:#10b981;color:var(--white);animation:pulse-glow 1.5s infinite}.opponent-turn{background:#6b7280;color:var(--white)}@keyframes pulse-glow{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.02)}}.error-banner{position:fixed;top:80px;left:50%;transform:translate(-50%);background:#ef4444;color:#fff;padding:15px 30px;border:var(--border-width) solid var(--border-color);box-shadow:5px 5px 0 var(--border-color);font-weight:700;z-index:999;max-width:90%;text-align:center;animation:slide-down .3s ease-out}@keyframes slide-down{0%{transform:translate(-50%) translateY(-20px);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.back-to-local-button{padding:12px 24px;font-size:1rem;font-weight:900;color:var(--text-dark);background:#e0e0e0;border:var(--border-width) solid var(--border-color);cursor:pointer;margin-left:10px;box-shadow:5px 5px 0 var(--border-color);text-transform:uppercase;letter-spacing:1px;transition:all .1s ease}.back-to-local-button:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--border-color);background:#d0d0d0}.back-to-local-button:active{transform:translate(0);box-shadow:2px 2px 0 var(--border-color)}.cell.disabled{cursor:not-allowed;opacity:.7}@media(max-width:480px){.error-banner{top:60px;padding:12px 20px;font-size:.9rem}.share-link-button,.back-to-local-button{padding:10px 20px;font-size:.9rem}.your-turn,.opponent-turn{font-size:1.1rem;padding:10px 20px}}
