.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-node-inner{transition:transform .15s ease}.research-node-inner:hover{transform:scale(1.05)}.research-node-inner .node-bg{fill:#0a1929e6;stroke-width:2;transition:all .2s ease}.research-node-inner.unlocked .node-bg{stroke:#00e5ff;filter:drop-shadow(0 0 4px rgba(0,229,255,.3))}.research-node-inner.locked .node-bg{stroke:#555;fill:#1e1e28e6}.research-node-inner.maxed .node-bg{stroke:#4caf50;filter:drop-shadow(0 0 4px rgba(76,175,80,.4))}.research-node-inner:hover .node-bg{filter:drop-shadow(0 0 8px rgba(0,229,255,.5))}.research-node-inner.locked:hover .node-bg{stroke:#777;filter:drop-shadow(0 0 4px rgba(100,100,100,.3))}.research-node-inner .progress-bg{fill:#ffffff1a}.research-node-inner.unlocked .progress-fill{fill:#00e5ff}.research-node-inner.locked .progress-fill{fill:#555}.research-node-inner.maxed .progress-fill{fill:#4caf50}.research-node-inner .node-name{font-size:11px;font-weight:600;fill:#e0e0e0;pointer-events:none}.research-node-inner.locked .node-name{fill:#888}.research-node-inner .node-level{font-size:9px;font-weight:500;fill:#90a4ae;pointer-events:none}.research-node-inner.locked .node-level{fill:#666}.research-node-inner .lock-icon{color:#666}.research-graph-container{width:100%;overflow-x:auto;overflow-y:visible;padding:10px 0}.research-graph-svg{display:block;min-width:100%}.research-graph-empty{display:flex;align-items:center;justify-content:center;height:200px;color:#90a4ae;font-size:1em}.edge-line{transition:stroke .2s ease}.edge-line.met{stroke:#00e5ff99}.edge-line.unmet{stroke:#64646466;stroke-dasharray:4 4}.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}.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}
