.game-board{display:grid;grid-template-columns:25px repeat(12,minmax(28px,40px));grid-template-rows:25px repeat(12,minmax(28px,40px));gap:1px;background:var(--dark-gray, #36454F);padding:8px;border-radius:5px;width:fit-content;min-width:min-content}.grid-header{display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--navy-blue, #000080);background:var(--light-gray, #f2f2f2);font-size:12px}.grid-cell{background:white;border:1px solid var(--haze-gray, #A9A9A9);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .2s;position:relative;aspect-ratio:1}.grid-cell:hover{background:#e0e0e0;transform:scale(1.05)}.grid-cell.available{background:white;cursor:pointer}.grid-cell.available:hover{background:#b3d4fc;border-color:var(--navy-blue, #000080)}.grid-cell.selected{background:#ffcc80;border:2px solid #ff9800}.grid-cell.ship{background:var(--haze-gray, #A9A9A9);border-color:var(--dark-gray, #36454F)}.grid-cell.ship:after{content:"";position:absolute;font-size:14px}.grid-cell.hit{background:var(--accent-red, #8B0000);border-color:#5a0000}.grid-cell.hit:after{content:"X";position:absolute;font-size:16px;color:#fff;font-weight:700}.grid-cell.miss{background:var(--steel-gray, #708090);border-color:var(--dark-gray, #36454F)}.grid-cell.miss:after{content:"o";position:absolute;font-size:12px;color:#fff}.grid-cell.targetable{animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 #000080b3}50%{box-shadow:0 0 0 5px #00008000}to{box-shadow:0 0 #00008000}}@media (max-width: 480px){.game-board{grid-template-columns:20px repeat(12,minmax(22px,28px));grid-template-rows:20px repeat(12,minmax(22px,28px));gap:1px;padding:5px}.grid-header{font-size:10px}.grid-cell{font-size:12px}.grid-cell.hit:after{font-size:12px}.grid-cell.miss:after{font-size:10px}}@media (max-width: 380px){.game-board{grid-template-columns:18px repeat(12,minmax(18px,24px));grid-template-rows:18px repeat(12,minmax(18px,24px))}.grid-header{font-size:9px}.grid-cell{font-size:10px}}.game-setup{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.setup-container{background:var(--light-gray, #f2f2f2);border-radius:15px;padding:40px;max-width:800px;width:100%;box-shadow:5px 5px 15px #0000004d;border:2px solid var(--dark-gray, #36454F)}.setup-container h1{color:var(--navy-blue, #000080);text-align:center;margin-bottom:10px;font-size:36px;text-transform:uppercase;letter-spacing:3px}.subtitle{text-align:center;color:var(--dark-gray, #36454F);margin-bottom:30px;font-size:16px}.error-message{background:#ffebee;color:var(--accent-red, #8B0000);padding:12px;border-radius:5px;margin-bottom:20px;text-align:center;border:1px solid var(--accent-red, #8B0000)}.setup-options{display:flex;flex-direction:column;gap:20px}.setup-section{padding:25px;background:white;border-radius:10px;text-align:center;border:2px solid var(--dark-gray, #36454F)}.setup-section h2{color:var(--navy-blue, #000080);margin-bottom:10px;font-size:20px;text-transform:uppercase;letter-spacing:1px}.setup-section p{color:var(--dark-gray, #36454F);margin-bottom:15px;font-size:14px}.divider{text-align:center;color:var(--haze-gray, #A9A9A9);font-weight:700;position:relative;margin:10px 0}.divider:before,.divider:after{content:"";position:absolute;top:50%;width:45%;height:2px;background:var(--haze-gray, #A9A9A9)}.divider:before{left:0}.divider:after{right:0}.game-code-input{width:100%;padding:12px;font-size:18px;text-align:center;border:2px solid var(--dark-gray, #36454F);border-radius:5px;margin-bottom:15px;text-transform:uppercase;letter-spacing:3px;font-family:Courier New,monospace;font-weight:700}.game-code-input:focus{outline:none;border-color:var(--navy-blue, #000080);box-shadow:0 0 0 3px #0000801a}.setup-section form{display:flex;flex-direction:column;align-items:center}.instructions{margin-top:30px;padding:20px;background:white;border-radius:10px;border-left:4px solid var(--navy-blue, #000080);border:2px solid var(--dark-gray, #36454F)}.instructions h3{color:var(--navy-blue, #000080);margin-bottom:15px;font-size:18px;text-transform:uppercase}.instructions ol{list-style-position:inside;color:var(--dark-gray, #36454F);line-height:1.8}.instructions li{margin-bottom:8px}.existing-games{margin-top:30px;padding:20px;background:white;border-radius:10px;border:2px solid var(--dark-gray, #36454F)}.existing-games h2{color:var(--navy-blue, #000080);margin-bottom:15px;font-size:20px;text-transform:uppercase}.games-list{display:flex;flex-direction:column;gap:10px}.game-item{background:var(--light-gray, #f2f2f2);border:2px solid var(--dark-gray, #36454F);border-radius:8px;padding:15px;display:flex;justify-content:space-between;align-items:center;transition:all .2s;flex-wrap:wrap;gap:10px}.game-item:hover{border-color:var(--navy-blue, #000080);box-shadow:0 2px 8px #00000026}.game-info{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.game-code{font-weight:700;font-size:16px;color:var(--navy-blue, #000080);font-family:Courier New,monospace}.game-phase{padding:2px 8px;border-radius:4px;font-size:12px;text-transform:uppercase;font-weight:700}.game-phase.waiting{background:#fff3e0;color:#e65100}.game-phase.placement{background:#e3f2fd;color:var(--navy-blue, #000080)}.game-phase.battle{background:#fce4ec;color:var(--accent-red, #8B0000)}.game-phase.finished{background:var(--haze-gray, #A9A9A9);color:var(--dark-gray, #36454F)}.your-turn{background:#4caf50;color:#fff;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:700;animation:pulse 2s infinite}.game-winner{padding:2px 8px;border-radius:4px;font-size:12px;font-weight:700}.game-winner.won{background:#4caf50;color:#fff}.game-winner.lost{background:var(--accent-red, #8B0000);color:#fff}.game-details{display:flex;gap:15px;color:var(--dark-gray, #36454F);font-size:14px;flex:1;justify-content:center;flex-wrap:wrap}.game-item button{margin-left:10px}@keyframes pulse{0%{box-shadow:0 0 #4caf50b3}50%{box-shadow:0 0 0 8px #4caf5000}to{box-shadow:0 0 #4caf5000}}@media (max-width: 768px){.game-setup{padding:15px;align-items:flex-start}.setup-container{padding:25px;max-width:100%}.setup-container h1{font-size:24px;letter-spacing:2px}.subtitle{font-size:14px}.setup-section{padding:20px}.game-item{flex-direction:column;align-items:flex-start}.game-details{justify-content:flex-start;gap:10px}.game-item button{margin-left:0;width:100%;margin-top:10px}}.ship-placement{background:var(--light-gray, #f2f2f2);border-radius:10px;padding:20px;margin-bottom:20px;box-shadow:5px 5px 10px #0000004d;border:2px solid var(--dark-gray, #36454F)}.ship-placement h2{color:var(--navy-blue, #000080);margin-bottom:20px;text-align:center;text-transform:uppercase;letter-spacing:1px}.ship-list{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-bottom:20px}.ship-item{flex:1;min-width:130px;max-width:180px}.ship-button{width:100%;padding:10px;background:white;border:2px solid var(--dark-gray, #36454F);border-radius:5px;cursor:pointer;transition:all .2s;font-size:14px;font-weight:500}.ship-button:hover:not(:disabled){background:#e0e0e0;border-color:var(--navy-blue, #000080)}.ship-item.selected .ship-button{background:#b3d4fc;border-color:var(--navy-blue, #000080);font-weight:700}.ship-item.placed .ship-button{background:var(--haze-gray, #A9A9A9);border-color:var(--dark-gray, #36454F);cursor:not-allowed;opacity:.7}.auto-place-section{text-align:center;margin-bottom:20px;padding-top:10px;border-top:2px solid var(--haze-gray, #A9A9A9)}.btn-auto-place{background:var(--steel-gray, #708090);color:#fff;border:none;padding:12px 24px;border-radius:5px;font-size:16px;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:1px;font-weight:700;border-bottom:3px solid var(--dark-gray, #36454F)}.btn-auto-place:hover{background:var(--dark-gray, #36454F);transform:translateY(-2px)}.placement-controls{background:white;padding:15px;border-radius:8px;text-align:center;margin-bottom:20px;border:2px solid var(--dark-gray, #36454F)}.placement-controls p{margin-bottom:10px;color:var(--dark-gray, #36454F)}.placement-controls strong{color:var(--navy-blue, #000080)}.button-group{display:flex;gap:10px;justify-content:center;margin-top:15px;flex-wrap:wrap}.ready-section{background:linear-gradient(135deg,#e3f2fd 0%,#b3d4fc 100%);padding:20px;border-radius:10px;text-align:center;margin-top:20px;border:2px solid var(--navy-blue, #000080)}.ready-section p{font-size:18px;color:var(--navy-blue, #000080);margin-bottom:15px;font-weight:500}.placement-tips{background:white;padding:15px;border-radius:8px;border-left:4px solid var(--navy-blue, #000080);border:2px solid var(--dark-gray, #36454F)}.placement-tips h3{color:var(--navy-blue, #000080);margin-bottom:10px;font-size:16px;text-transform:uppercase}.placement-tips ul{list-style-position:inside;color:var(--dark-gray, #36454F);line-height:1.6}.placement-tips li{margin-bottom:5px;font-size:14px}@media (max-width: 768px){.ship-placement{padding:15px}.ship-placement h2{font-size:16px}.ship-item{min-width:100px}.ship-button{padding:8px;font-size:12px}.btn-auto-place{padding:10px 20px;font-size:14px}.placement-controls{padding:12px}.ready-section{padding:15px}.ready-section p{font-size:16px}.button-group{flex-direction:column;align-items:center}.button-group button{width:100%;max-width:200px}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease;padding:20px}.modal-content{background:var(--light-gray, #f2f2f2);padding:30px;border-radius:15px;max-width:400px;width:90%;position:relative;animation:slideUp .3s ease;box-shadow:5px 5px 15px #0006;border:2px solid var(--dark-gray, #36454F)}.modal-content.result{text-align:center;padding:40px}.close-button{position:absolute;top:10px;right:10px;background:transparent;border:none;font-size:30px;cursor:pointer;color:var(--dark-gray, #36454F);width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s}.close-button:hover{background:var(--haze-gray, #A9A9A9);color:var(--navy-blue, #000080)}.modal-content h2{color:var(--navy-blue, #000080);margin-bottom:20px;text-align:center;text-transform:uppercase;letter-spacing:1px;font-size:18px}.problem{font-size:32px;text-align:center;padding:20px;background:white;border-radius:10px;margin-bottom:20px;font-weight:700;color:var(--navy-blue, #000080);letter-spacing:2px;border:2px solid var(--dark-gray, #36454F)}.answer-input{width:100%;padding:15px;font-size:24px;text-align:center;border:2px solid var(--dark-gray, #36454F);border-radius:8px;margin-bottom:20px;font-family:Courier New,monospace}.answer-input:focus{outline:none;border-color:var(--navy-blue, #000080);box-shadow:0 0 0 3px #0000801a}.button-group{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.correct,.incorrect{font-size:28px;font-weight:700;margin-bottom:15px;text-transform:uppercase}.correct{color:#4caf50}.incorrect{color:var(--accent-red, #8B0000)}.modal-content.result p{color:var(--dark-gray, #36454F);font-size:16px}.modal-content.result strong{color:var(--navy-blue, #000080);font-size:20px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}@media (max-width: 480px){.modal-content{padding:20px;margin:10px}.modal-content h2{font-size:16px;padding-right:30px}.problem{font-size:24px;padding:15px}.answer-input{font-size:20px;padding:12px}.button-group{flex-direction:column}.button-group button{width:100%}.correct,.incorrect{font-size:24px}}.game-status{background:var(--light-gray, #f2f2f2);border-radius:10px;padding:20px;margin-bottom:20px;box-shadow:5px 5px 10px #0000004d;border:2px solid var(--dark-gray, #36454F)}.game-status h2{color:var(--navy-blue, #000080);margin-bottom:15px;text-align:center;text-transform:uppercase;letter-spacing:1px}.game-status.waiting{text-align:center}.waiting-content{display:flex;flex-direction:column;align-items:center}.game-code-display{font-size:36px;font-weight:700;letter-spacing:6px;color:var(--navy-blue, #000080);background:white;padding:20px 30px;border-radius:10px;margin:20px 0;font-family:Courier New,monospace;border:3px solid var(--navy-blue, #000080)}.qr-section{margin:20px 0}.qr-section p{margin-bottom:15px;color:var(--dark-gray, #36454F)}.qr-code-container{background:white;padding:15px;border-radius:10px;display:inline-block;border:2px solid var(--dark-gray, #36454F)}.waiting-message{margin-top:10px;color:var(--dark-gray, #36454F);font-style:italic}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px}.status-item{background:white;padding:10px;border-radius:8px;display:flex;flex-direction:column;align-items:center;border:2px solid var(--dark-gray, #36454F)}.status-item .label{color:var(--dark-gray, #36454F);font-size:12px;margin-bottom:5px;text-transform:uppercase}.status-item .value{color:var(--navy-blue, #000080);font-size:18px;font-weight:700}.turn-indicator{text-align:center;font-size:24px;font-weight:700;padding:15px;border-radius:8px;margin-bottom:15px;text-transform:uppercase;letter-spacing:1px}.turn-indicator.your-turn{background:#4caf50;color:#fff;animation:pulse-green 2s infinite;border:2px solid #388e3c}.turn-indicator.opponent-turn{background:var(--haze-gray, #A9A9A9);color:var(--dark-gray, #36454F);border:2px solid var(--dark-gray, #36454F)}.battle-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}.stat{background:white;padding:10px;border-radius:6px;text-align:center;border:2px solid var(--dark-gray, #36454F)}.stat .label{display:block;color:var(--dark-gray, #36454F);font-size:11px;margin-bottom:3px;text-transform:uppercase}.stat .value{display:block;color:var(--navy-blue, #000080);font-size:20px;font-weight:700}.game-over{text-align:center;padding:30px;border-radius:15px;animation:celebrate .5s ease}.game-over.victory{background:linear-gradient(135deg,#4caf50,#8bc34a);color:#fff;border:3px solid #388e3c}.game-over.defeat{background:linear-gradient(135deg,var(--accent-red, #8B0000),#c62828);color:#fff;border:3px solid #5a0000}.game-over h2{font-size:36px;margin-bottom:10px;color:#fff}.game-over p{font-size:18px}@keyframes pulse-green{0%{box-shadow:0 0 #4caf50b3}50%{box-shadow:0 0 0 10px #4caf5000}to{box-shadow:0 0 #4caf5000}}@keyframes celebrate{0%{transform:scale(.9);opacity:0}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@media (max-width: 768px){.game-status{padding:15px}.game-status h2{font-size:16px}.game-code-display{font-size:28px;padding:15px 20px;letter-spacing:4px}.qr-code-container svg{width:120px!important;height:120px!important}.turn-indicator{font-size:18px;padding:12px}.battle-stats{grid-template-columns:repeat(2,1fr)}.stat{padding:8px}.stat .label{font-size:10px}.stat .value{font-size:16px}.game-over{padding:20px}.game-over h2{font-size:28px}.game-over p{font-size:16px}}:root{--navy-blue: #000080;--haze-gray: #A9A9A9;--dark-gray: #36454F;--accent-red: #8B0000;--light-gray: #f2f2f2;--steel-gray: #708090}*{margin:0;padding:0;box-sizing:border-box}html{overflow-x:hidden}body{font-family:Helvetica Neue,Arial,sans-serif;background:linear-gradient(135deg,var(--haze-gray) 0%,var(--steel-gray) 100%);min-height:100vh;color:var(--dark-gray);overflow-x:hidden}.app{max-width:1400px;margin:0 auto;padding:20px 20px 40px;min-height:100vh}header{background:var(--light-gray);border-radius:10px;padding:20px;margin-bottom:20px;box-shadow:5px 5px 10px #0000004d;border:2px solid var(--dark-gray)}header h1{color:var(--navy-blue);margin-bottom:10px;text-transform:uppercase;letter-spacing:2px}.game-info{display:flex;gap:20px;font-size:14px;color:var(--dark-gray);flex-wrap:wrap;align-items:center}.game-info strong{color:var(--navy-blue);font-weight:600}.error-banner{background:var(--accent-red);color:#fff;padding:12px 20px;border-radius:8px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;animation:slideDown .3s ease;border:2px solid #5a0000}.error-banner button{background:transparent;border:none;color:#fff;font-size:24px;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.game-boards{display:flex;gap:30px;justify-content:center;flex-wrap:wrap;padding-bottom:20px}.board-container{background:var(--light-gray);padding:15px;border-radius:10px;box-shadow:5px 5px 10px #0000004d;border:2px solid var(--dark-gray);overflow-x:auto;max-width:100%}.board-container h2{color:var(--navy-blue);margin-bottom:15px;text-align:center;text-transform:uppercase;letter-spacing:1px;font-size:16px}.btn-primary{background:var(--navy-blue);color:#fff;border:none;padding:10px 20px;border-radius:5px;font-size:16px;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:1px;font-weight:700;border-bottom:3px solid #000050}.btn-primary:hover{background:#0000a0;transform:translateY(-2px)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-secondary{background:var(--haze-gray);color:var(--dark-gray);border:none;padding:10px 20px;border-radius:5px;font-size:16px;cursor:pointer;transition:background .2s;text-transform:uppercase;letter-spacing:1px;font-weight:700;border-bottom:3px solid #888}.btn-secondary:hover{background:#999}.btn-large{padding:15px 30px;font-size:18px}.btn-home{background:var(--light-gray);color:var(--navy-blue);border:2px solid var(--navy-blue);padding:8px 16px;border-radius:5px;font-size:14px;cursor:pointer;transition:all .2s;font-weight:600;text-transform:uppercase}.btn-home:hover{background:var(--navy-blue);color:#fff}@keyframes slideDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@media (max-width: 768px){.app{padding:10px 10px 30px}header{padding:15px}header h1{font-size:20px;text-align:center}.game-info{justify-content:center;gap:10px;font-size:12px}.game-info span{white-space:nowrap}.game-boards{gap:20px}.board-container{padding:10px;width:100%}.board-container h2{font-size:14px}.btn-primary,.btn-secondary{padding:8px 16px;font-size:14px}.btn-large{padding:12px 24px;font-size:16px}}
