@import"https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Roboto:ital,wght@0,100..900;1,100..900&display=swap";:root{font-family:Bebas Neue,Roboto,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;max-width:1280px;margin:0 auto;padding:2rem;text-align:center}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:6.2rem;line-height:1.1}h2{font-size:3.2rem;line-height:1.1}h3{font-size:2.4rem;line-height:1.1}h4{font-size:1.4rem;line-height:1.1}h5{font-size:1.2rem;line-height:1.1}p{font-size:1.4rem;line-height:1.5;margin-bottom:1.5rem}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}ul{padding:0}li{list-style:none;font-size:1.4rem}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--ocean-blue);cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}:root{--navy-dark: #0a1628;--navy-blue: #788799;--ocean-blue: #2c3e50;--steel-blue: #34495e;--radar-green: #00ff41;--warning-orange: #ff6b35;--danger-red: #e63946;--gold: #ffb703;--white: #f8f9fa;--light-gray: #adb5bd;--mid-gray: #6c757d;--dark-gray: #343a40;--water: #2e86ab;--water-hover: #3a9fbf;--ship-gray: #495057;--hit: #e63946;--miss: #dee2e6;--sunk: #6c757d;--carrier: #ff69b4;--battleship: #e63946;--cruiser: #ffb703;--submarine: #356f44;--destroyer: #005275ff;--font-primary: "Bebas Neue", sans-serif;--cell-size: 40px;--border-radius: 4px;--background-primary: #0a1628;--background-secondary: #34495e;--text-primary: rgba(255, 255, 255, .87);--text-secondary: rgba(255, 255, 255, .6);color-scheme:dark;color:var(--text-primary);background-color:var(--background-primary)}:root.light-mode{--navy-dark: #d4e3f0;--navy-blue: #4a5c6e;--ocean-blue: #6fade4;--steel-blue: #7a9eb8;--background-primary: #a7dff7;--background-secondary: rgb(198, 235, 255);--text-primary: #1a2332;--text-secondary: #4a5c6e;color-scheme:light;color:var(--text-primary);background-color:var(--background-primary)}:root.dark-mode{--navy-dark: #0a1628;--navy-blue: #788799;--ocean-blue: #2c3e50;--steel-blue: #34495e;--background-primary: #0a1628;--background-secondary: #34495e;--text-primary: rgba(255, 255, 255, .87);--text-secondary: rgba(255, 255, 255, .6);color-scheme:dark;color:var(--text-primary);background-color:var(--background-primary)}body{background-color:var(--background-primary);color:var(--text-primary)}#root{margin:0 auto}.game-options{display:flex;justify-content:center;align-items:center;margin:0 auto;gap:1rem}.start-button{transition:background-color .3s ease}.start-button:hover{background-color:var(--radar-green);border:var(--radar-green)}.how-to-play{transition:background-color .3s ease}.how-to-play:hover{background-color:var(--gold);border:var(--gold)}.settings-button{transition:background-color .3s ease}.settings-button:hover{background-color:var(--danger-red);border:var(--danger-red)}.modal-overlay{position:fixed;inset:0;background-color:#000000d9;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:var(--background-secondary);border:2px solid var(--steel-blue);border-radius:8px;padding:2rem;min-width:300px;max-width:400px;box-shadow:0 4px 20px #0000004d}.username-modal h2{margin:0 0 1.5rem;text-align:center;color:var(--text-primary)}.username-modal input{width:100%;padding:.75rem;margin-bottom:1.5rem;border:2px solid var(--steel-blue);border-radius:4px;background-color:var(--background-primary);color:var(--text-primary);font-size:1rem;box-sizing:border-box}.username-modal input:focus{outline:none;border-color:var(--radar-green);box-shadow:0 0 8px #4caf504d}.username-modal input::placeholder{color:var(--text-secondary)}.modal-buttons{display:flex;gap:1rem;justify-content:center}.modal-submit,.modal-cancel{padding:.75rem 1.5rem;border:2px solid var(--steel-blue);border-radius:4px;background-color:var(--background-primary);color:var(--text-primary);cursor:pointer;font-size:1rem;font-weight:600;transition:all .3s ease}.modal-submit{background-color:var(--radar-green);border-color:var(--radar-green);color:#fff}.modal-submit:hover{background-color:#45a049;border-color:#45a049}.modal-cancel{background-color:var(--danger-red);border-color:var(--danger-red);color:#fff}.modal-cancel:hover{background-color:#c41c3b;border-color:#c41c3b}.dev-mode-indicator{position:fixed;bottom:10px;right:10px;background-color:#ffc10733;border:1px solid var(--gold);color:var(--gold);padding:.5rem 1rem;border-radius:4px;font-size:.85rem;font-weight:600;z-index:100;pointer-events:none}.overlay{position:fixed;inset:0;display:flex;justify-content:center;align-items:center;text-align:left;z-index:1000;background-color:transparent!important;animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{background-color:#0000}to{background-color:#000000b3}}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}:root.no-animations .overlay{animation:none!important}:root.no-animations .overlay-content{animation:none!important}:root.no-animations *{transition:none!important;animation:none!important}.overlay-content{position:relative;background-color:var(--background-secondary);border-radius:12px;padding:2rem;max-width:70vw;max-height:70vh;overflow-y:auto;box-shadow:0 4px 6px #0000004d;animation:scaleIn .3s ease-out;color:var(--text-primary)}.overlay-content .close-button{position:absolute;background-color:var(--ocean-blue)!important;top:1rem;right:1rem;background:transparent;border:none;font-size:2rem;color:#fff;cursor:pointer;padding:1.2rem .5rem 1rem;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.overlay-content .close-button:hover{background-color:#ffffff1a}.overlay-content .close-button:focus{outline:none}.how-to-play h2{text-align:center;color:var(--gold)!important}.how-to-play h3{text-decoration:underline;margin-top:1.5rem;margin-bottom:.5rem;font-size:2rem}.how-to-play ol{margin-left:0;padding-left:1.5rem}.how-to-play ol li{list-style:decimal!important;margin-left:0;padding-left:1rem}.settings h2{text-align:center;margin-bottom:1.5rem;color:var(--danger-red)!important}.settings .settings-group{margin-bottom:2rem}.settings .settings-group h3{color:var(--danger-red);margin-bottom:1rem;font-size:1.2rem;border-bottom:1px solid rgba(255,255,255,.2);padding-bottom:.5rem}.settings .setting-item{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding:.5rem 0}.settings .setting-item label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.settings .setting-item select{padding:.5rem 1rem;border-radius:6px;border:1px solid rgba(255,255,255,.2);background-color:var(--ocean-blue);color:var(--text-primary);font-family:inherit;cursor:pointer;min-width:150px}.settings .setting-item select:focus{outline:2px solid var(--danger-red)}.settings .setting-item select option{background-color:var(--steel-blue);color:var(--text-primary)}.settings .setting-item input[type=checkbox]{width:1.2rem;height:1.2rem;cursor:pointer;accent-color:var(--danger-red)}footer{text-align:center;padding:1rem}.board-screen{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1rem}#start-game-button{background-color:var(--ocean-blue);color:var(--text-primary);border:2px solid transparent;font-size:1.3rem;font-weight:700;padding:1rem 2rem;min-width:200px;border-radius:var(--border-radius);cursor:pointer;transition:border-color .4s ease,background-color .3s ease;outline:none;margin-top:1rem}#start-game-button:not(:disabled){background-color:var(--radar-green);color:var(--navy-dark)}#start-game-button:hover:not(:disabled){border-color:var(--gold)}#start-game-button:focus{border-color:var(--radar-green);outline:none}#start-game-button:disabled{background-color:var(--background-secondary);cursor:not-allowed;border-color:transparent}#start-game-button:disabled:hover{border-color:var(--warning-orange)}#start-game-button:active:not(:disabled){border-color:var(--gold)!important}.game-board{border-collapse:separate;border-spacing:1.5px;border:2px solid var(--ocean-blue);background-color:var(--ocean-blue);box-shadow:0 4px 8px #0000004d;padding:2px}.board-label{background-color:var(--steel-blue);color:var(--white);font-weight:700;text-align:center;font-size:.85rem;padding:0;border:1px solid var(--ocean-blue);width:clamp(20px,3vw,35px);height:clamp(20px,3vw,35px)}.board-label.corner{background-color:var(--background-secondary);border:none;color:var(--danger-red);font-size:1rem}.board-cell{width:clamp(20px,3vw,35px);height:clamp(20px,3vw,35px);border:1px solid var(--ocean-blue);background-color:var(--water);cursor:pointer;transition:background-color .2s;position:relative}.board-cell:hover{background-color:var(--water-hover)}.board-cell.occupied{cursor:pointer;position:relative}.board-cell.occupied:before{content:"";position:absolute;top:2px;right:2px;width:8px;height:8px;background-color:var(--warning-orange);border-radius:50%;opacity:0;transition:opacity .2s}.board-cell.occupied:hover:before{opacity:.8}.board-cell.occupied:hover{box-shadow:inset 0 0 8px #ff6b354d}.board-cell.hover-preview{background-color:#00ff414d;border:2px solid var(--radar-green)}.board-cell .ship-label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:clamp(.5rem,1.5vw,.7rem);font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.8);-webkit-user-select:none;user-select:none}.game-board[style*="--grid-size: 8"] .board-cell{width:35px;height:35px}.game-board[style*="--grid-size: 10"] .board-cell{width:30px;height:30px}.game-board[style*="--grid-size: 12"] .board-cell{width:28px;height:28px}.board-cell.ship{background-color:var(--ship-gray)}.board-cell.hit{background-color:var(--hit)}.board-cell.miss{background-color:var(--miss)}.board-cell.miss:after{content:"•";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--mid-gray);font-size:1.5rem}.board-cell.hit:after{content:"✕";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--white);font-size:1.5rem;font-weight:700}.board-cell.sunk{background-color:var(--sunk)}:root.no-animations .board-cell{transition:none}@media(max-width:768px){.board-cell{width:clamp(18px,5vw,32px);height:clamp(18px,5vw,32px)}.board-label.column-label,.board-label.row-label{min-width:clamp(18px,5vw,32px);min-height:clamp(18px,5vw,32px);font-size:clamp(.65rem,1.8vw,.9rem)}.board-cell .ship-label{font-size:clamp(.4rem,2vw,.6rem)}}@media(max-width:480px){.board-screen{padding:.5rem}.board-cell{width:clamp(16px,6vw,28px);height:clamp(16px,6vw,28px)}.board-label.column-label,.board-label.row-label{min-width:clamp(16px,6vw,28px);min-height:clamp(16px,6vw,28px);font-size:clamp(.55rem,2.2vw,.8rem)}.board-cell .ship-label{font-size:clamp(.35rem,2.5vw,.55rem)}.game-board{border-spacing:1px}}#ships-container{display:flex;flex-direction:column;align-items:center;gap:1rem}#ships-container #header-buttons{display:flex;flex-direction:row;justify-content:center;margin:0}#ships-container #header-buttons button{background-color:var(--ocean-blue);color:var(--text-primary);border:2px solid transparent;font-size:1.2rem;padding:.5rem 1rem;margin:0;min-width:120px;border-radius:var(--border-radius);cursor:pointer;transition:border-color .4s ease,background-color .3s ease;outline:none}#ships-container #header-buttons button:hover{border-color:var(--gold)}#ships-container #header-buttons button:focus{border-color:var(--radar-green);outline:none}#ships-container #header-buttons button:disabled{background-color:var(--background-secondary);cursor:not-allowed;border-color:transparent}#ships-container #header-buttons button:disabled:hover{border-color:var(--warning-orange)}#ships-container #header-buttons button:active{border-color:var(--gold)!important}#ships-container #header-buttons #finish-setup-button:not(:disabled){background-color:var(--radar-green);color:var(--navy-dark);font-weight:700}#ships-container #ships-row{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:1rem;width:100%}#ships-container #ships-row>div{white-space:nowrap;cursor:pointer;margin:0rem;padding:0rem;border:2px solid transparent;border-radius:var(--border-radius);transition:border-color .4s ease,opacity .3s ease}#ships-container #ships-row>div.placed{opacity:.4;pointer-events:none}#ships-container #ships-row>div .ship-name{color:var(--text-primary);text-align:center;margin-bottom:.5rem}#ships-container #ships-row>div .ship-preview{display:flex;flex-direction:row;gap:2px;padding:0;justify-content:center;transition:all .3s ease;background-color:transparent}#ships-container #ships-row>div .ship-preview.vertical{flex-direction:column}#ships-container #ships-row>div .ship-preview:active .ship-cell{opacity:.5}#ships-container #ships-row>div .ship-preview .ship-cell{width:var(--cell-size);height:var(--cell-size);background-color:var(--ship-gray);border:1px solid var(--dark-gray);border-radius:var(--border-radius);display:flex;align-items:center;margin:0 auto;transition:opacity .2s ease}#ships-container #ships-row>div .ship-preview .ship-label{margin:0 auto}#ships-container #ships-row>div .ship-length{text-align:center;margin-top:.5rem;color:var(--text-secondary)}h2,p{margin-bottom:1rem}.game-screen{position:relative;padding:1rem}.battle-subtitle{margin-bottom:.4rem;color:var(--text-secondary)}.battle-status{font-weight:600;margin-bottom:.25rem}.battle-turn{color:var(--radar-green);margin-bottom:1rem}.battle-winner{font-size:1.4rem;font-weight:700;color:var(--gold);margin-bottom:1rem}.battle-boards{display:flex;justify-content:center;align-items:flex-start;gap:1.5rem;flex-wrap:wrap}.battle-board-wrap{display:flex;flex-direction:column;align-items:center;gap:.7rem}.battle-board-wrap h3{margin:0}.battle-actions{margin-top:1.2rem;display:flex;justify-content:center}.leaderboard{margin:1.5rem auto 0;width:min(1000px,95%);background:#ffffff1a;border:1px solid var(--steel-blue);border-radius:var(--border-radius);padding:1rem}.leaderboard-title{margin:0 0 1rem;font-size:1.3rem;color:var(--text-primary)}.leaderboard-empty{color:var(--text-secondary);margin:0}.leaderboard-table{width:100%;border-collapse:collapse;font-size:.95rem}.leaderboard-table thead{background:#0000001a;border-bottom:2px solid var(--steel-blue)}.leaderboard-table th{padding:.75rem;text-align:left;font-weight:600;color:var(--text-primary);white-space:nowrap}.leaderboard-table tbody tr{border-bottom:1px solid rgba(0,0,0,.1);transition:background-color .2s ease}.leaderboard-table tbody tr:hover{background-color:#0000000d}.leaderboard-table td{padding:.65rem .75rem;color:var(--text-primary)}.col-rank{width:50px;font-weight:700;color:var(--gold);text-align:left}.col-rank.rank-gold{color:gold;font-size:1.05rem}.col-rank.rank-silver{color:silver}.col-rank.rank-bronze{color:#cd7f32}.col-player{min-width:120px;font-weight:500;text-align:left}.col-result{width:80px;font-weight:600;text-align:left}.col-result.victory{color:var(--radar-green)}.col-result.defeat{color:var(--danger-red)}.col-difficulty{width:90px;text-align:left}.col-grid{width:70px;text-align:left;color:var(--text-secondary)}.col-score{width:70px;text-align:left;font-weight:600;color:var(--gold)}.col-stats{width:70px;text-align:left;color:var(--text-secondary)}.col-date{min-width:160px;color:var(--text-secondary);font-size:.85rem;text-align:left}.col-action{width:50px;text-align:center}.delete-button{background:none;border:none;color:var(--danger-red);cursor:pointer;font-size:1.2rem;padding:.25rem .5rem;border-radius:4px;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center}.delete-button:hover{background-color:#dc354533;color:#ff6b7b}@media(max-width:768px){.leaderboard{width:95%}.leaderboard-table{font-size:.85rem}.leaderboard-table th,.leaderboard-table td{padding:.5rem}.col-date{min-width:120px}.col-player{min-width:100px}}.board-cell.targetable{cursor:crosshair;box-shadow:inset 0 0 0 1px #fff3}.board-cell.targetable:hover{background-color:var(--water-hover);box-shadow:inset 0 0 0 2px var(--gold)}@media(max-width:768px){.battle-boards{gap:1rem}.leaderboard-item{grid-template-columns:44px 1fr}.leaderboard-meta{grid-column:1 / -1;justify-content:flex-start}}
