.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#1a3a5a,#0f2537)}.login-card{background:#1e3a5fe6;border:2px solid #00e5ff;border-radius:16px;padding:48px;text-align:center;box-shadow:0 8px 32px #00e5ff33;max-width:400px}.login-card h1{color:#00e5ff;font-size:32px;margin-bottom:16px;font-weight:700}.login-card p{color:#b0c4de;font-size:16px;margin-bottom:32px}.login-buttons{display:flex;flex-direction:column;gap:16px}.login-button{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:14px 24px;color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease}.github-button{background:#24292e}.github-button:hover{background:#2f363d;transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.google-button{background:#fff;color:#3c4043;border:1px solid #dadce0}.google-button:hover{background:#f8f9fa;transform:translateY(-2px);box-shadow:0 4px 12px #0003}.login-button:active{transform:translateY(0)}.login-button svg{width:24px;height:24px}.spinner{border:3px solid rgba(0,229,255,.3);border-top:3px solid #00e5ff;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin:0 auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.research-card-list{display:flex;flex-direction:column;gap:8px}.research-card-list-empty{display:flex;align-items:center;justify-content:center;height:200px;color:#90a4ae;font-size:1em}.research-card{display:flex;align-items:center;gap:12px;width:100%;min-height:80px;padding:12px;border-radius:10px;background:#0a1929e6;border:none;border-left:3px solid #555;cursor:pointer;transition:background .2s ease;text-align:left}.research-card:hover,.research-card:active{background:#00e5ff0d}.research-card.state-locked{border-left-color:#555;opacity:.6}.research-card.state-unlocked{border-left-color:#00e5ff}.research-card.state-maxed{border-left-color:#4caf50}.research-card-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;flex-shrink:0;border-radius:50%;font-size:16px}.research-card-icon.icon-locked{background:#5555554d;color:#666}.research-card-icon.icon-unlocked{background:#00e5ff26;color:#00e5ff;font-family:monospace;font-weight:700;font-size:13px}.research-card-icon.icon-maxed{background:#4caf5033;color:#4caf50}.research-card-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.research-card-name{font-size:14px;font-weight:600;color:#e0e0e0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.research-card.state-locked .research-card-name{color:#888}.research-card-progress{width:100%;height:4px;background:#ffffff1a;border-radius:2px;overflow:hidden}.research-card-progress-fill{height:100%;border-radius:2px;transition:width .3s ease}.research-card.state-locked .research-card-progress-fill{background:#555}.research-card.state-unlocked .research-card-progress-fill{background:#00e5ff}.research-card.state-maxed .research-card-progress-fill{background:#4caf50}.research-card-chips{display:flex;flex-wrap:wrap;gap:4px}.research-card-chip{display:inline-block;font-size:11px;border-radius:10px;padding:2px 8px;white-space:nowrap}.research-card-chip.chip-met{background:#4caf5026;color:#4caf50}.research-card-chip.chip-unmet{background:#ff6b6b26;color:#ff6b6b}.research-card-right{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0;gap:4px}.research-card-level{font-family:monospace;font-size:14px;font-weight:700;color:#90a4ae}.research-card.state-unlocked .research-card-level{color:#00e5ff}.research-card.state-maxed .research-card-level{color:#4caf50}.research-card-cost{font-family:monospace;font-size:11px;color:#ffab40}.research-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;z-index:1300;display:flex;align-items:center;justify-content:center}.research-node-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90%;max-width:400px;background:linear-gradient(135deg,#0a1929f2,#0f2033f2);border:2px solid #00e5ff;border-radius:12px;z-index:1301;animation:slideIn .3s ease-out;padding:0;overflow:hidden;box-shadow:0 8px 32px #00000080,0 0 20px #00e5ff33}@keyframes slideIn{0%{opacity:0;transform:translate(-50%,-48%)}to{opacity:1;transform:translate(-50%,-50%)}}.research-node-modal .modal-header{padding:20px;border-bottom:2px solid rgba(0,229,255,.3);display:flex;justify-content:space-between;align-items:center;background:#00e5ff0d}.research-node-modal .modal-header h2{margin:0;font-size:1.4em;color:#00e5ff;font-weight:600}.research-node-modal .close-button{background:none;border:none;color:#00e5ff;font-size:2em;cursor:pointer;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;transition:color .2s}.research-node-modal .close-button:hover{color:#00ffd5}.research-node-modal .modal-content{padding:20px;color:#e0e0e0;max-height:60vh;overflow-y:auto}.research-node-modal .description{color:#90a4ae;margin:0 0 16px;font-size:.95em;line-height:1.4}.research-node-modal .info-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding:10px 12px;background:#00e5ff0d;border-left:3px solid transparent;border-radius:4px;transition:all .2s}.research-node-modal .info-row:hover{background:#00e5ff1a;border-left-color:#00e5ff}.research-node-modal .info-label{font-weight:500;color:#90a4ae;font-size:.9em}.research-node-modal .info-value{text-align:right;font-weight:600;color:#e0e0e0;font-size:1em}.research-node-modal .info-value.insufficient{color:#ff6b6b}.research-node-modal .available-points{color:#90a4ae;font-size:.85em;margin-left:8px;font-weight:400}.research-node-modal .progress-bar-container{height:6px;background:#00e5ff26;border-radius:3px;margin-bottom:16px;overflow:hidden}.research-node-modal .progress-bar{height:100%;background:linear-gradient(90deg,#00e5ff,#00ffd5);border-radius:3px;transition:width .3s ease}.research-node-modal .requirements-section{margin-top:16px;padding-top:16px;border-top:1px solid rgba(255,255,255,.1)}.research-node-modal .requirements-section h3,.research-node-modal .unlocks-section h3{margin:0 0 12px;font-size:.9em;color:#90a4ae;text-transform:uppercase;letter-spacing:.5px}.research-node-modal .requirements-list{display:flex;flex-direction:column;gap:8px}.research-node-modal .requirement-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#ffffff08;border-radius:6px;font-size:.9em}.research-node-modal .requirement-item.met{border-left:3px solid #4caf50}.research-node-modal .requirement-item.unmet{border-left:3px solid #ff6b6b}.research-node-modal .req-name{flex:1;color:#e0e0e0}.research-node-modal .req-progress{color:#90a4ae;font-size:.85em}.research-node-modal .req-current{margin-left:4px;opacity:.7}.research-node-modal .req-status{width:20px;text-align:center;font-weight:700}.research-node-modal .requirement-item.met .req-status{color:#4caf50}.research-node-modal .requirement-item.unmet .req-status{color:#ff6b6b}.research-node-modal .unlocks-section{margin-top:16px;padding-top:16px;border-top:1px solid rgba(255,255,255,.1)}.research-node-modal .unlocks-list{display:flex;flex-wrap:wrap;gap:8px}.research-node-modal .unlock-tag{padding:4px 10px;background:#00e5ff1a;border:1px solid rgba(0,229,255,.3);border-radius:12px;font-size:.8em;color:#00e5ff}.research-node-modal .modal-footer{padding:16px 20px;border-top:1px solid rgba(255,255,255,.1);background:#0003}.research-node-modal .upgrade-button{width:100%;padding:14px 20px;background:linear-gradient(135deg,#00e5ff,#00b8d4);border:none;border-radius:8px;color:#0a0a1a;font-size:1em;font-weight:600;cursor:pointer;transition:all .2s}.research-node-modal .upgrade-button:hover:not(.disabled){background:linear-gradient(135deg,#00ffd5,#00e5ff);transform:translateY(-1px);box-shadow:0 4px 12px #00e5ff66}.research-node-modal .upgrade-button.disabled{background:#333;color:#666;cursor:not-allowed}.research-node-modal .max-level-badge{width:100%;padding:14px 20px;background:#4caf5033;border:1px solid #4caf50;border-radius:8px;color:#4caf50;font-size:1em;font-weight:600;text-align:center}.battle-view-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000d9;z-index:2000;animation:fadeIn .3s forwards}.battle-view-backdrop.closing{animation:fadeOut .3s forwards}.battle-view-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90%;max-width:600px;max-height:80vh;background-color:#0a0a1af2;border-radius:12px;border:1px solid #ff4444;box-shadow:0 0 30px #ff44444d;z-index:2001;display:flex;flex-direction:column;overflow:hidden;animation:scaleIn .3s forwards}.battle-view-panel.closing{animation:scaleOut .3s forwards}.battle-view-header{padding:16px;border-bottom:1px solid rgba(255,68,68,.2);display:flex;justify-content:space-between;align-items:center}.battle-view-header h2{margin:0;color:#f44;font-size:1.25rem}.battle-view-close{background:none;border:none;color:#888;font-size:28px;cursor:pointer;padding:0;line-height:1;transition:color .2s}.battle-view-close:hover{color:#fff}.battle-view-combatants{display:flex;justify-content:space-between;align-items:stretch;padding:16px;gap:16px}.battle-view-side{flex:1;text-align:center;display:flex;flex-direction:column}.battle-view-side-content{flex:1;display:flex;flex-direction:column;align-items:center}.battle-view-bar-section{margin-top:auto;padding-top:12px}.battle-view-vs{display:flex;align-items:center;font-size:24px;color:#666;font-weight:700;padding:0 8px}.monster-side .battle-view-monster-img{width:80px;height:auto}.battle-view-name{font-weight:700;margin-top:8px}.monster-name{color:#f44}.fleet-name{color:#00e5ff;margin-bottom:12px}.battle-view-health-bar{height:8px;background-color:#333;border-radius:4px;margin-top:8px;overflow:hidden}.battle-view-health-fill{height:100%;transition:width .5s ease-out}.battle-view-health-text{color:#888;font-size:12px;margin-top:4px}.battle-view-troops{display:flex;flex-direction:column;gap:6px}.battle-view-troop{display:flex;align-items:center;gap:6px}.battle-view-troop.destroyed{opacity:.4}.battle-view-troop-img{width:28px;height:28px;object-fit:contain}.battle-view-troop-count{color:#00e5ff;font-size:12px}.battle-view-troop.destroyed .battle-view-troop-count{color:#666}.battle-view-waiting{color:#666;font-style:italic;font-size:14px}.battle-view-log{flex:1;overflow-y:auto;padding:16px;background-color:#0000004d;font-family:Courier New,monospace;font-size:12px;min-height:150px;max-height:200px}.battle-view-log-header{color:#666;margin-bottom:8px;font-family:inherit}.battle-view-log-empty{color:#444}.battle-view-log-entry{margin-bottom:4px;line-height:1.4}.battle-view-log-entry.troop-attack{color:#00e5ff}.battle-view-log-entry.monster-attack{color:#f44}.log-attacker,.log-target{font-weight:700}.log-damage{color:#fc0}.log-casualties{color:#888}.battle-view-ended-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#000000d9;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:10;animation:fadeIn .3s forwards}.battle-view-result{font-size:36px;font-weight:700;margin-bottom:24px;text-shadow:0 0 20px currentColor}.battle-view-result.victory{color:#0f0}.battle-view-result.defeat{color:red}.battle-view-end-button{padding:12px 32px;background-color:#00e5ff;color:#000;border:none;border-radius:8px;font-size:16px;font-weight:700;cursor:pointer;transition:background-color .2s,transform .1s}.battle-view-end-button:hover{background-color:#00c8e0}.battle-view-end-button:active{transform:scale(.98)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes scaleIn{0%{transform:translate(-50%,-50%) scale(.9);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}@keyframes scaleOut{0%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(.9);opacity:0}}.app{width:100vw;height:100vh;overflow:hidden;position:relative;background:#0a1929}.app>canvas{position:fixed;top:0;left:0;width:100%;height:100%;z-index:500}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;background-color:#0a1929;color:#e0f7fa;touch-action:none;-webkit-user-select:none;user-select:none}#root{width:100vw;height:100vh;overflow:hidden}
