/* Galaxy Strike Online - Main Styles */ * { margin: 0; padding: 0; box-sizing: border-box; } :root { --primary-color: #00d4ff; --secondary-color: #ff6b35; --accent-color: #ff00ff; --bg-primary: #0a0e1a; --bg-secondary: #151923; --bg-tertiary: #1e2433; --text-primary: #ffffff; --text-secondary: #b8c5d6; --text-muted: #6b7c93; --border-color: #2a3241; --success-color: #00ff88; --warning-color: #ffaa00; --error-color: #ff3366; --card-bg: rgba(30, 36, 51, 0.8); --hover-bg: rgba(0, 212, 255, 0.1); --gradient-primary: linear-gradient(135deg, #00d4ff, #0099cc); --gradient-secondary: linear-gradient(135deg, #ff6b35, #ff4500); } body { font-family: 'Space Mono', monospace; background: var(--bg-primary); color: var(--text-primary); overflow: hidden; background-image: radial-gradient(circle at 20% 50%, rgba(0, 212, 255, 0.1) 0%, transparent 50%), radial-gradient(circle at 80% 80%, rgba(255, 107, 53, 0.1) 0%, transparent 50%), radial-gradient(circle at 40% 20%, rgba(255, 0, 255, 0.05) 0%, transparent 50%); } /* Login Form Styles */ .login-form { display: flex; flex-direction: column; gap: 20px; margin-bottom: 20px; } .form-group { display: flex; flex-direction: column; gap: 8px; } .form-group label { color: var(--text-secondary); font-size: 0.9rem; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; } .form-input { background: var(--bg-tertiary); border: 2px solid var(--border-color); border-radius: 8px; padding: 12px 16px; color: var(--text-primary); font-family: 'Space Mono', monospace; font-size: 1rem; transition: all 0.3s ease; } .form-input:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 10px rgba(0, 212, 255, 0.3); } .form-input::placeholder { color: var(--text-muted); } /* Server Browser Styles */ .server-controls { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; gap: 15px; flex-wrap: wrap; } .server-filters { display: flex; gap: 10px; } .filter-select { background: var(--bg-tertiary); border: 2px solid var(--border-color); border-radius: 8px; padding: 8px 12px; color: var(--text-primary); font-family: 'Space Mono', monospace; font-size: 0.9rem; cursor: pointer; transition: all 0.3s ease; } .filter-select:focus { outline: none; border-color: var(--primary-color); } .server-list { max-height: calc(100vh - 350px); overflow-y: auto; margin-bottom: 20px; border: 1px solid var(--border-color); border-radius: 10px; background: var(--bg-tertiary); } .server-item { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; border-bottom: 1px solid var(--border-color); cursor: pointer; transition: all 0.3s ease; } .server-item:last-child { border-bottom: none; } .server-item:hover { background: var(--hover-bg); border-left: 4px solid var(--primary-color); } .server-info { flex: 1; } .server-name { font-size: 1.1rem; font-weight: 600; color: var(--text-primary); margin-bottom: 5px; } .server-details { font-size: 0.9rem; color: var(--text-secondary); display: flex; gap: 15px; flex-wrap: wrap; } .server-detail { display: flex; align-items: center; gap: 5px; } .server-actions-right { display: flex; align-items: center; gap: 10px; } .server-player-count { background: var(--bg-secondary); padding: 4px 8px; border-radius: 4px; font-size: 0.8rem; color: var(--text-secondary); border: 1px solid var(--border-color); } .server-type { padding: 4px 8px; border-radius: 4px; font-size: 0.8rem; font-weight: 600; text-transform: uppercase; } .server-type.public { background: rgba(0, 255, 136, 0.2); color: var(--success-color); border: 1px solid var(--success-color); } .server-type.private { background: rgba(255, 170, 0, 0.2); color: var(--warning-color); border: 1px solid var(--warning-color); } .server-region { background: var(--bg-secondary); padding: 4px 8px; border-radius: 4px; font-size: 0.8rem; color: var(--text-muted); border: 1px solid var(--border-color); } .server-loading, .server-empty { text-align: center; padding: 60px 20px; color: var(--text-muted); } .server-loading i, .server-empty i { font-size: 3rem; margin-bottom: 15px; opacity: 0.5; } .server-loading p, .server-empty p { font-size: 1.1rem; } /* Server Confirmation Styles */ .server-confirmation { display: flex; justify-content: space-between; align-items: center; gap: 30px; margin-bottom: 30px; } .server-preview { background: var(--bg-tertiary); border: 2px solid var(--primary-color); border-radius: 15px; padding: 25px; text-align: center; min-width: 300px; box-shadow: 0 10px 30px rgba(0, 212, 255, 0.2); } .server-preview h3 { color: var(--primary-color); font-size: 1.4rem; font-weight: 700; margin-bottom: 15px; text-transform: uppercase; letter-spacing: 1px; } .server-details { color: var(--text-secondary); font-size: 0.9rem; line-height: 1.6; } .server-info { margin: 8px 0; display: flex; justify-content: space-between; align-items: center; } .server-info span { font-weight: 600; color: var(--text-primary); } .confirm-actions-left, .confirm-actions-right { display: flex; flex-direction: column; gap: 15px; min-width: 200px; } .selected-server-info-center { flex: 1; display: flex; justify-content: center; align-items: center; } /* Responsive Design */ @media (max-width: 768px) { .server-controls { flex-direction: column; align-items: stretch; } .server-filters { justify-content: center; } .server-confirmation { flex-direction: column; gap: 20px; } .confirm-actions-left, .confirm-actions-right { width: 100%; max-width: 300px; } .server-details { flex-direction: column; gap: 8px; } } /* Animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .server-loading i { animation: pulse 1.5s infinite; } .main-menu { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: var(--bg-primary); display: flex; align-items: center; justify-content: center; background-image: radial-gradient(circle at 20% 50%, rgba(0, 212, 255, 0.1) 0%, transparent 50%), radial-gradient(circle at 80% 80%, rgba(255, 107, 53, 0.1) 0%, transparent 50%), radial-gradient(circle at 40% 20%, rgba(255, 0, 255, 0.05) 0%, transparent 50%); } .menu-container { width: 90%; max-width: 800px; background: var(--card-bg); border-radius: 20px; border: 1px solid var(--border-color); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5); backdrop-filter: blur(10px); overflow: hidden; } .menu-header { text-align: center; padding: 40px 20px 20px; background: var(--gradient-primary); position: relative; } .menu-title { font-family: 'Orbitron', sans-serif; font-size: 3rem; font-weight: 900; color: var(--text-primary); text-transform: uppercase; letter-spacing: 3px; margin-bottom: 10px; text-shadow: 0 0 20px rgba(0, 212, 255, 0.5); } .menu-subtitle { font-size: 1.2rem; color: var(--text-secondary); font-weight: 400; opacity: 0.9; } .menu-content { padding: 30px; } .menu-section { animation: fadeInUp 0.5s ease-out; } .section-title { font-family: 'Orbitron', sans-serif; font-size: 1.8rem; color: var(--primary-color); text-align: center; margin-bottom: 30px; text-transform: uppercase; letter-spacing: 2px; } /* Login Section */ .login-options { display: flex; flex-direction: column; gap: 20px; margin-bottom: 20px; } .btn-large { padding: 20px 40px; font-size: 1.2rem; font-weight: 600; border-radius: 12px; transition: all 0.3s ease; gap: 10px; width: auto; } .btn-large i { font-size: 1.4rem; } /* Enhanced server confirmation buttons */ .btn-join-server { background: linear-gradient(135deg, #00ff88, #00cc66) !important; color: #000 !important; border: 3px solid #00ff88 !important; box-shadow: 0 6px 20px rgba(0, 255, 136, 0.4) !important; font-weight: 700 !important; transform: scale(1.05); z-index: 10; position: relative; } .btn-join-server:hover { background: linear-gradient(135deg, #00ffaa, #00ff88) !important; transform: scale(1.08) translateY(-2px); box-shadow: 0 8px 25px rgba(0, 255, 136, 0.5) !important; } .login-notice { text-align: center; padding: 15px; background: rgba(0, 212, 255, 0.1); border: 1px solid var(--primary-color); border-radius: 8px; color: var(--text-secondary); } .login-notice i { color: var(--primary-color); margin-right: 8px; } /* Save Selection */ .save-slots { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin-bottom: 30px; } .save-slot { background: var(--bg-secondary); border: 2px solid var(--border-color); border-radius: 12px; padding: 20px; cursor: pointer; transition: all 0.3s ease; position: relative; } .save-slot:hover { border-color: var(--primary-color); transform: translateY(-2px); box-shadow: 0 8px 25px rgba(0, 212, 255, 0.2); } .slot-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } .slot-number { font-family: 'Orbitron', sans-serif; font-weight: 700; color: var(--text-primary); font-size: 1.1rem; } .slot-status { padding: 4px 12px; border-radius: 20px; font-size: 0.8rem; font-weight: 600; text-transform: uppercase; } .slot-status.empty { background: var(--bg-tertiary); color: var(--text-muted); } .slot-status.has-data { background: var(--success-color); color: var(--bg-primary); } .slot-info { margin-bottom: 15px; } .slot-name { font-weight: 700; color: var(--text-primary); margin-bottom: 5px; } .slot-details { color: var(--text-muted); font-size: 0.9rem; } .slot-btn { width: 100%; padding: 10px; background: var(--gradient-primary); border: none; border-radius: 6px; color: var(--text-primary); font-weight: 600; cursor: pointer; transition: all 0.3s ease; } .slot-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 15px rgba(0, 212, 255, 0.3); } /* Save Confirmation Section */ .save-confirmation { display: flex !important; justify-content: space-between !important; gap: 30px !important; margin-bottom: 30px !important; } .confirm-actions-left { position: relative !important; min-width: 200px; height: 300px; } .selected-save-info-center { display: flex !important; flex-direction: column !important; justify-content: center !important; align-items: center !important; flex: 1 !important; min-width: 300px; } .save-preview { background: rgba(0, 212, 255, 0.1) !important; border: 2px solid rgba(0, 212, 255, 0.3) !important; border-radius: 10px !important; padding: 15px !important; text-align: left !important; width: 100% !important; max-width: 300px !important; font-family: 'Space Mono', monospace !important; } .save-preview h3 { color: #00d4ff !important; margin-bottom: 10px !important; font-size: 1.1em !important; text-align: center !important; } .save-details { color: #ffffff !important; font-size: 0.9em !important; line-height: 1.6 !important; white-space: pre-wrap !important; } .save-info { margin: 3px 0 !important; font-family: 'Space Mono', monospace !important; } .confirm-actions-right { position: relative !important; min-width: 200px; height: 300px; } .confirm-actions-left .btn-large { position: absolute !important; width: 200px !important; display: flex !important; align-items: center !important; justify-content: center !important; } .confirm-actions-left #confirmContinueBtn { bottom: 0 !important; left: 0 !important; } .confirm-actions-left #confirmNewGameBtn { bottom: 60px !important; left: 0 !important; } /* Override display: none to actually hide buttons */ .confirm-actions-left .btn-large[style*="display: none"] { display: none !important; } .confirm-actions-right .btn-large { position: absolute !important; width: 200px !important; display: flex !important; align-items: center !important; justify-content: center !important; } .confirm-actions-right #confirmSettingsBtn { top: 0 !important; right: 0 !important; } .confirm-actions-right #confirmDeleteBtn { bottom: 0 !important; right: 0 !important; background: linear-gradient(135deg, #ff3366, #ff0033) !important; color: white !important; box-shadow: 0 4px 15px rgba(255, 51, 102, 0.3) !important; } .confirm-actions-right #confirmDeleteBtn:hover { transform: translateY(-2px) !important; box-shadow: 0 6px 20px rgba(255, 51, 102, 0.4) !important; } .confirm-navigation { display: flex; justify-content: center; margin-top: 20px; } .options-grid { display: flex !important; justify-content: space-between !important; gap: 30px; margin-bottom: 30px; } .options-left { position: relative !important; min-width: 200px; height: 300px; } .options-center { display: flex !important; flex-direction: column !important; justify-content: center !important; align-items: center !important; flex: 1 !important; min-width: 300px; } .save-info-display { background: rgba(0, 212, 255, 0.1) !important; border: 2px solid rgba(0, 212, 255, 0.3) !important; border-radius: 10px !important; padding: 20px !important; text-align: center !important; width: 100% !important; max-width: 400px !important; } .save-info-display h3 { color: #00d4ff !important; margin-bottom: 15px !important; font-size: 1.2em !important; } #saveInfoDetails { color: #ffffff !important; font-size: 0.9em !important; line-height: 1.4 !important; } .save-info-content { background: rgba(0, 100, 200, 0.2) !important; border-radius: 8px !important; padding: 15px !important; margin: 0 !important; } .options-right { position: relative !important; min-width: 200px; height: 300px; } .options-left .btn-large { position: absolute !important; width: 200px !important; display: flex !important; align-items: center !important; justify-content: center !important; } .options-left #continueBtn { bottom: 0 !important; left: 0 !important; } .options-left #newGameBtn { bottom: 60px !important; left: 0 !important; } /* Override display: none to actually hide buttons */ .options-left .btn-large[style*="display: none"] { display: none !important; } .options-right .btn-large { position: absolute !important; width: 200px !important; display: flex !important; align-items: center !important; justify-content: center !important; } .options-right #settingsBtn { top: 0 !important; right: 0 !important; } .options-right #deleteSaveBtn { bottom: 0 !important; right: 0 !important; } .options-actions, .save-actions { display: flex; justify-content: center; } /* Menu Footer */ .menu-footer { padding: 20px 30px; background: var(--bg-secondary); border-top: 1px solid var(--border-color); display: flex; justify-content: space-between; align-items: center; } .version-text { color: var(--text-muted); font-size: 0.9rem; } .footer-links { display: flex; gap: 20px; } .link-btn { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 0.9rem; transition: color 0.3s ease; } .link-btn:hover { color: var(--primary-color); } /* Shop container styles */ .shop-container { display: flex !important; flex-direction: column !important; height: 100% !important; background: var(--bg-secondary) !important; border-radius: 8px !important; overflow: hidden !important; } .shop-header { position: sticky !important; top: 0 !important; z-index: 10 !important; background: var(--bg-primary) !important; border-bottom: 2px solid var(--border-color) !important; padding: 15px !important; } .shop-categories { display: flex !important; gap: 10px !important; justify-content: center !important; flex-wrap: wrap !important; } .shop-cat-btn { padding: 10px 20px !important; background: var(--bg-secondary) !important; color: var(--text-primary) !important; border: 2px solid var(--border-color) !important; border-radius: 6px !important; cursor: pointer !important; font-weight: 600 !important; transition: all 0.3s ease !important; font-size: 0.9em !important; } .shop-cat-btn:hover { background: var(--accent-color) !important; border-color: var(--accent-color) !important; transform: translateY(-2px) !important; } .shop-cat-btn.active { background: var(--accent-color) !important; color: var(--text-primary) !important; border-color: var(--accent-color) !important; box-shadow: 0 0 10px rgba(0, 212, 255, 0.3) !important; } .shop-content { flex: 1 !important; overflow-y: auto !important; padding: 20px !important; } .shop-items-container { max-width: 1200px !important; margin: 0 auto !important; } .shop-items { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)) !important; gap: 20px !important; align-items: start !important; } /* Shop item styles */ .shop-item { background: rgba(0, 212, 255, 0.05) !important; border: 1px solid rgba(0, 212, 255, 0.2) !important; border-radius: 8px !important; padding: 15px !important; margin-bottom: 15px !important; transition: all 0.3s ease !important; } .shop-item:hover { background: rgba(0, 212, 255, 0.1) !important; border-color: rgba(0, 212, 255, 0.4) !important; transform: translateY(-2px) !important; } .shop-item-content { display: flex !important; align-items: flex-start !important; gap: 15px !important; } .shop-item-image { flex-shrink: 0 !important; width: 80px !important; height: 80px !important; border-radius: 4px !important; overflow: hidden !important; background: rgba(0, 0, 0, 0.3) !important; display: flex !important; align-items: center !important; justify-content: center !important; } .shop-item-image img { width: 100% !important; height: 100% !important; object-fit: contain !important; image-rendering: pixelated !important; } .shop-item-info { flex: 1 !important; min-width: 0 !important; } .shop-item-name { font-size: 1.1em !important; font-weight: 600 !important; color: #00d4ff !important; margin-bottom: 5px !important; } .shop-item-description { color: #ffffff !important; font-size: 0.9em !important; margin-bottom: 10px !important; line-height: 1.4 !important; } .shop-item-stats { display: flex !important; flex-wrap: wrap !important; gap: 10px !important; margin-bottom: 10px !important; } .shop-item-stats .stat { background: rgba(0, 212, 255, 0.1) !important; padding: 2px 8px !important; border-radius: 4px !important; font-size: 0.8em !important; color: #ffffff !important; border: 1px solid rgba(0, 212, 255, 0.2) !important; } .shop-item-price { font-size: 1.0em !important; font-weight: 600 !important; color: #ffd700 !important; margin-bottom: 5px !important; } .shop-item-rarity { display: inline-block !important; padding: 2px 8px !important; border-radius: 4px !important; font-size: 0.8em !important; font-weight: 600 !important; text-transform: uppercase !important; margin-bottom: 10px !important; } .shop-item-rarity.common { background: rgba(128, 128, 128, 0.2) !important; color: #808080 !important; border: 1px solid rgba(128, 128, 128, 0.4) !important; } .shop-item-rarity.uncommon { background: rgba(0, 255, 0, 0.2) !important; color: #00ff00 !important; border: 1px solid rgba(0, 255, 0, 0.4) !important; } .shop-item-rarity.rare { background: rgba(0, 100, 255, 0.2) !important; color: #0064ff !important; border: 1px solid rgba(0, 100, 255, 0.4) !important; } .shop-item-rarity.epic { background: rgba(128, 0, 255, 0.2) !important; color: #8000ff !important; border: 1px solid rgba(128, 0, 255, 0.4) !important; } .shop-item-rarity.legendary { background: rgba(255, 128, 0, 0.2) !important; color: #ff8000 !important; border: 1px solid rgba(255, 128, 0, 0.4) !important; } .shop-item-purchase-btn { width: 100% !important; padding: 8px 16px !important; background: linear-gradient(135deg, #00d4ff, #0099cc) !important; color: white !important; border: none !important; border-radius: 4px !important; cursor: pointer !important; font-weight: 600 !important; transition: all 0.3s ease !important; } .shop-item-purchase-btn:hover:not(.disabled) { background: linear-gradient(135deg, #00ffcc, #00ccaa) !important; transform: translateY(-1px) !important; } .shop-item-purchase-btn.disabled { background: rgba(100, 100, 100, 0.3) !important; color: #666666 !important; cursor: not-allowed !important; } /* Shop Refresh Info */ .shop-refresh-info { background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; padding: 1rem; margin-bottom: 1.5rem; display: flex; justify-content: space-between; align-items: center; grid-column: 1 / -1; } .refresh-info-left { display: flex; flex-direction: column; gap: 0.5rem; } .refresh-countdown { display: flex; align-items: center; gap: 0.5rem; color: var(--text-secondary); font-size: 0.9rem; } .refresh-countdown i { color: var(--primary-color); } .purchase-limit-info { display: flex; align-items: center; gap: 0.5rem; color: var(--text-secondary); font-size: 0.9rem; } .purchase-limit-info i { color: #ffd700; } .refresh-shop-btn { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; border: none; border-radius: 6px; padding: 0.5rem 1rem; font-size: 0.9rem; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 0.5rem; white-space: nowrap; } .refresh-shop-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 212, 255, 0.3); } .refresh-shop-btn:active { transform: translateY(0); } /* Animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .hidden { display: none !important; } /* Loading Screen */ .loading-screen { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: var(--bg-primary); display: flex; align-items: center; justify-content: center; z-index: 9999; transition: opacity 0.5s ease; } .loading-content { text-align: center; max-width: 400px; } .game-title { font-family: 'Orbitron', sans-serif; font-size: 3rem; font-weight: 900; background: var(--gradient-primary); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 2rem; text-transform: uppercase; letter-spacing: 3px; } .loading-bar { width: 100%; height: 4px; background: var(--bg-tertiary); border-radius: 2px; overflow: hidden; margin-bottom: 1rem; } .loading-progress { height: 100%; background: var(--gradient-primary); width: 0%; transition: width 0.3s ease; animation: loading-pulse 2s infinite; } @keyframes loading-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } .loading-text { color: var(--text-secondary); font-size: 0.9rem; } /* Game Interface */ .game-interface { width: 100vw; height: 100vh; display: flex; flex-direction: column; } .hidden { display: none !important; } /* Header */ .game-header { height: 60px; background: var(--bg-secondary); border-bottom: 1px solid var(--border-color); display: flex; align-items: center; justify-content: space-between; padding: 0 1rem; backdrop-filter: blur(10px); } .header-left { display: flex; align-items: center; gap: 1rem; } .logo { font-family: 'Orbitron', sans-serif; font-size: 1.5rem; font-weight: 900; color: var(--primary-color); text-shadow: 0 0 10px rgba(0, 212, 255, 0.5); } .player-info { display: flex; flex-direction: column; gap: 0.2rem; } .player-info > div { display: flex; align-items: center; gap: 0.3rem; } .player-name { font-weight: 700; color: var(--text-primary); } .player-title { font-weight: 500; color: var(--text-secondary); font-size: 0.9rem; } .player-username { font-weight: 600; color: var(--accent-color); font-size: 0.85rem; } .player-level { font-size: 0.8rem; color: var(--primary-color); } .header-center { flex: 1; display: flex; justify-content: center; } .resources { display: flex; gap: 1.5rem; } .resource { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; background: var(--bg-tertiary); border-radius: 20px; border: 1px solid var(--border-color); transition: all 0.3s ease; } .resource:hover { border-color: var(--primary-color); box-shadow: 0 0 10px rgba(0, 212, 255, 0.3); } .resource i { color: var(--primary-color); } .header-right { display: flex; gap: 0.5rem; } /* Navigation */ .main-nav { height: 50px; background: var(--bg-tertiary); border-bottom: 1px solid var(--border-color); display: flex; align-items: center; padding: 0 1rem; gap: 0.5rem; overflow-x: auto; position: relative; z-index: 10000; /* Ensure nav bar is above loading screen */ } .nav-btn { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; background: transparent; border: 1px solid transparent; border-radius: 8px; color: var(--text-secondary); cursor: pointer; transition: all 0.3s ease; white-space: nowrap; } .nav-btn:hover { background: var(--hover-bg); color: var(--text-primary); border-color: var(--primary-color); } .nav-btn.active { background: var(--gradient-primary); color: var(--bg-primary); border-color: transparent; } .nav-btn i { font-size: 1rem; } /* Main Content */ .main-content { flex: 1; overflow: hidden; /* Remove exterior scrollbar */ padding: 1rem; background: var(--bg-primary); height: calc(100vh - 32px); /* Account for custom title bar */ } .tab-content { display: none; animation: fadeIn 0.3s ease; } .tab-content.active { display: block; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* Dashboard */ .dashboard-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1rem; max-width: 1200px; margin: 0 auto; max-height: calc(100vh - 232px); /* Adjusted for title bar and padding */ overflow-y: auto; padding: 0.5rem; } .card { background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 12px; padding: 1.5rem; backdrop-filter: blur(10px); transition: all 0.3s ease; } .card:hover { border-color: var(--primary-color); box-shadow: 0 0 20px rgba(0, 212, 255, 0.2); transform: translateY(-2px); } .card h3 { color: var(--primary-color); margin-bottom: 1rem; font-family: 'Orbitron', sans-serif; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; } .fleet-info { display: flex; flex-direction: column; gap: 1rem; } .ship-status { display: flex; align-items: center; gap: 1rem; } .ship-status i { font-size: 2rem; color: var(--secondary-color); } .idle-stats { display: flex; flex-direction: column; gap: 0.5rem; } .quick-actions { display: flex; flex-direction: column; gap: 0.5rem; } .stats-grid { display: grid; gap: 0.5rem; } .player-stats-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem; max-height: 400px; overflow-y: auto; } @media (max-width: 768px) { .player-stats-grid { grid-template-columns: 1fr; } } .stat { display: flex; justify-content: space-between; padding: 0.5rem 0; border-bottom: 1px solid var(--border-color); } .stat:last-child { border-bottom: none; } .stat-label { color: var(--text-secondary); } .stat-value { color: var(--primary-color); font-weight: 700; } /* Dungeons */ .dungeons-container { display: grid; grid-template-columns: 300px 1fr; gap: 1rem; height: calc(100vh - 232px); /* Adjusted for title bar and padding */ } .dungeon-selector { background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 12px; padding: 1rem; overflow-y: auto; } .dungeon-list { display: flex; flex-direction: column; gap: 0.5rem; } .dungeon-item { padding: 1rem; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; cursor: pointer; transition: all 0.3s ease; } .dungeon-item:hover { border-color: var(--primary-color); background: var(--hover-bg); } .dungeon-item.selected { border-color: var(--primary-color); background: rgba(0, 212, 255, 0.2); } .dungeon-view { background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 12px; padding: 2rem; display: flex; align-items: center; justify-content: center; } .dungeon-placeholder { text-align: center; color: var(--text-muted); } .dungeon-placeholder i { font-size: 4rem; margin-bottom: 1rem; opacity: 0.5; } /* Skills */ .skills-container { max-width: 1200px; margin: 0 auto; max-height: calc(100vh - 232px); /* Adjusted for title bar and padding */ overflow-y: auto; padding: 0.5rem; } .skill-categories { display: flex; gap: 0.5rem; margin-bottom: 2rem; justify-content: center; } .skill-cat-btn { padding: 0.75rem 1.5rem; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; color: var(--text-secondary); cursor: pointer; transition: all 0.3s ease; } .skill-cat-btn:hover { border-color: var(--primary-color); color: var(--text-primary); } .skill-cat-btn.active { background: var(--gradient-primary); color: var(--bg-primary); border-color: transparent; } .skills-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem; } /* Base */ .base-container { display: grid; grid-template-columns: 1fr 300px; gap: 1rem; height: calc(100vh - 232px); /* Adjusted for title bar (32px) + extra padding */ } .base-view { background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 12px; padding: 1rem; } .base-upgrades { background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 12px; padding: 1rem; overflow: hidden; } /* Quests */ .quests-container { max-width: 1200px; margin: 0 auto; max-height: calc(100vh - 232px); /* Adjusted for title bar and padding */ overflow-y: auto; padding: 0.5rem; } .quest-tabs { display: flex; gap: 0.5rem; margin-bottom: 2rem; justify-content: center; } .quest-tab-btn { padding: 0.75rem 1.5rem; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; color: var(--text-secondary); cursor: pointer; transition: all 0.3s ease; } .quest-tab-btn:hover { border-color: var(--primary-color); color: var(--text-primary); } .quest-tab-btn.active { background: var(--gradient-primary); color: var(--bg-primary); border-color: transparent; } .quest-list { display: flex; flex-direction: column; gap: 1rem; } /* Inventory - Desktop Sidebar Layout */ .inventory-container { display: grid; grid-template-columns: 1fr 300px; gap: 2rem; height: calc(100vh - 232px); /* Adjusted for title bar and padding */ } .inventory-grid { background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 12px; padding: 2rem; overflow-y: auto; } .item-details { background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 12px; padding: 1rem; overflow-y: auto; } /* Shop */ .shop-container { max-width: 1200px; margin: 0 auto; max-height: calc(100vh - 232px); /* Adjusted for title bar and padding */ overflow-y: auto; padding: 0.5rem; } .shop-categories { display: flex; gap: 0.5rem; margin-bottom: 2rem; justify-content: center; } .shop-cat-btn { padding: 0.75rem 1.5rem; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; color: var(--text-secondary); cursor: pointer; transition: all 0.3s ease; } .shop-cat-btn:hover { border-color: var(--primary-color); color: var(--text-primary); } .shop-cat-btn.active { background: var(--gradient-primary); color: var(--bg-primary); border-color: transparent; } .shop-items { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem; } /* Responsive Design */ @media (max-width: 768px) { .dashboard-grid { grid-template-columns: 1fr; } .dungeons-container { grid-template-columns: 1fr; } .base-container { grid-template-columns: 1fr; } .inventory-container { grid-template-columns: 1fr; } .main-nav { overflow-x: scroll; } .resources { flex-direction: column; gap: 0.5rem; } .resource { padding: 0.25rem 0.5rem; font-size: 0.8rem; } .game-title { font-size: 2rem; } } @media (max-width: 480px) { .header-center { display: none; } .nav-btn span { display: none; } .nav-btn { padding: 0.5rem; } } /* Quest difficulty indicators */ .quest-difficulty { display: flex; gap: 2px; font-size: 0.9rem; color: #ffd700; margin-right: 1rem; } .difficulty-1 { color: #4ade80; /* Green for easy */ } .difficulty-2 { color: #60a5fa; /* Blue for medium */ } .difficulty-3 { color: #f59e0b; /* Orange for hard */ } .difficulty-4 { color: #ef4444; /* Red for special/legendary */ } /* Quest header layout */ .quest-header-info { display: flex; align-items: center; gap: 1rem; } /* Completed quest styles */ .all-objectives-completed { color: #4ade80; font-weight: 600; padding: 0.5rem; background: rgba(74, 222, 128, 0.1); border-radius: 4px; text-align: center; } .completion-time { font-size: 0.8rem; color: var(--text-secondary); margin-top: 0.5rem; text-align: right; } /* Daily countdown improvements */ .daily-countdown { margin-bottom: 1.5rem; padding: 1rem; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; } /* Daily countdown improvements */ .weekly-countdown { margin-bottom: 1.5rem; padding: 1rem; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; } .countdown-container { display: flex; align-items: center; gap: 0.5rem; justify-content: center; color: var(--text-primary); } .countdown-container i { color: var(--primary-color); } /* Modern Crafting Tab Styles - Match Skills Layout */ .crafting-container { padding: 20px; max-width: 1200px; margin: 0 auto; max-height: calc(100vh - 232px); /* Adjusted for title bar and padding */ overflow-y: auto; padding: 0.5rem; } /* Custom Scrollbar for Crafting Container */ .crafting-container::-webkit-scrollbar { width: 8px; } .crafting-container::-webkit-scrollbar-track { background: var(--bg-tertiary); border-radius: 4px; } .crafting-container::-webkit-scrollbar-thumb { background: var(--primary-color); border-radius: 4px; border: 1px solid var(--bg-tertiary); } .crafting-container::-webkit-scrollbar-thumb:hover { background: var(--primary-hover); } /* Global Custom Scrollbar Styling */ .skills-container::-webkit-scrollbar, .quests-container::-webkit-scrollbar, .base-container::-webkit-scrollbar, .shop-container::-webkit-scrollbar, .dungeons-container::-webkit-scrollbar, .dungeon-selector::-webkit-scrollbar, .inventory-container::-webkit-scrollbar, .inventory-grid::-webkit-scrollbar, .item-details::-webkit-scrollbar, .shop-content::-webkit-scrollbar, .server-list::-webkit-scrollbar, .console-output::-webkit-scrollbar, .upgrade-list::-webkit-scrollbar { width: 8px; } .skills-container::-webkit-scrollbar-track, .quests-container::-webkit-scrollbar-track, .base-container::-webkit-scrollbar-track, .shop-container::-webkit-scrollbar-track, .dungeons-container::-webkit-scrollbar-track, .dungeon-selector::-webkit-scrollbar-track, .inventory-container::-webkit-scrollbar-track, .inventory-grid::-webkit-scrollbar-track, .item-details::-webkit-scrollbar-track, .shop-content::-webkit-scrollbar-track, .server-list::-webkit-scrollbar-track, .console-output::-webkit-scrollbar-track, .upgrade-list::-webkit-scrollbar-track { background: var(--bg-tertiary); border-radius: 4px; } .skills-container::-webkit-scrollbar-thumb, .quests-container::-webkit-scrollbar-thumb, .base-container::-webkit-scrollbar-thumb, .shop-container::-webkit-scrollbar-thumb, .dungeons-container::-webkit-scrollbar-thumb, .dungeon-selector::-webkit-scrollbar-thumb, .inventory-container::-webkit-scrollbar-thumb, .inventory-grid::-webkit-scrollbar-thumb, .item-details::-webkit-scrollbar-thumb, .shop-content::-webkit-scrollbar-thumb, .server-list::-webkit-scrollbar-thumb, .console-output::-webkit-scrollbar-thumb, .upgrade-list::-webkit-scrollbar-thumb { background: var(--primary-color); border-radius: 4px; border: 1px solid var(--bg-tertiary); } .skills-container::-webkit-scrollbar-thumb:hover, .quests-container::-webkit-scrollbar-thumb:hover, .base-container::-webkit-scrollbar-thumb:hover, .shop-container::-webkit-scrollbar-thumb:hover, .dungeons-container::-webkit-scrollbar-thumb:hover, .dungeon-selector::-webkit-scrollbar-thumb:hover, .inventory-container::-webkit-scrollbar-thumb:hover, .inventory-grid::-webkit-scrollbar-thumb:hover, .item-details::-webkit-scrollbar-thumb:hover, .shop-content::-webkit-scrollbar-thumb:hover, .server-list::-webkit-scrollbar-thumb:hover, .console-output::-webkit-scrollbar-thumb:hover, .upgrade-list::-webkit-scrollbar-thumb:hover { background: var(--primary-hover); } .crafting-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding: 15px 20px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 12px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } .crafting-header h2 { color: var(--primary-color); font-size: 1.5rem; font-weight: 600; display: flex; align-items: center; gap: 10px; margin: 0; } .crafting-header h2 i { font-size: 1.3rem; } .crafting-info { display: flex; gap: 20px; align-items: center; } .crafting-level, .crafting-experience { background: var(--bg-tertiary); padding: 8px 16px; border-radius: 8px; border: 1px solid var(--border-color); display: flex; align-items: center; gap: 8px; color: var(--text-primary); font-size: 0.9rem; } .crafting-level i, .crafting-experience i { color: var(--primary-color); } .crafting-categories { display: flex; gap: 0.5rem; margin-bottom: 2rem; justify-content: center; } .crafting-cat-btn { padding: 0.75rem 1.5rem; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; color: var(--text-muted); cursor: pointer; transition: all 0.3s ease; } .crafting-cat-btn:hover { border-color: var(--primary-color); color: var(--text-primary); } .crafting-cat-btn.active { background: var(--gradient-primary); color: var(--bg-primary); border-color: transparent; } .crafting-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem; } /* Recipe Item Styles - Match Skill Cards */ .recipe-item { background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 12px; padding: 1.5rem; cursor: pointer; transition: all 0.3s ease; position: relative; overflow: hidden; } .recipe-item:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3); border-color: var(--primary-color); } .recipe-item.can-craft { border-color: var(--success-color); } .recipe-item.can-craft:hover { border-color: var(--success-color); box-shadow: 0 8px 25px rgba(0, 255, 136, 0.2); } .recipe-item.locked { opacity: 0.5; cursor: not-allowed; background: var(--bg-tertiary); border-color: var(--border-color); } .recipe-item.missing-materials { opacity: 0.7; border-color: var(--warning-color); } .recipe-item.missing-materials:hover { border-color: var(--warning-color); box-shadow: 0 8px 25px rgba(255, 170, 0, 0.2); } .recipe-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; } .recipe-header h4 { color: var(--text-primary); font-size: 1.1rem; font-weight: 600; margin: 0; } .recipe-level { background: var(--bg-tertiary); color: var(--text-muted); padding: 4px 8px; border-radius: 6px; font-size: 0.8rem; font-weight: 500; } .recipe-description { color: var(--text-muted); font-size: 0.9rem; margin-bottom: 1rem; line-height: 1.4; } .recipe-materials { margin-bottom: 1rem; } .material-item { display: flex; justify-content: space-between; align-items: center; padding: 6px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .material-item:last-child { border-bottom: none; } .material-item.missing { color: var(--error-color); } .material-name { font-size: 0.85rem; color: var(--text-secondary); } .material-quantity { font-size: 0.85rem; font-weight: 600; color: var(--text-primary); } .material-item.missing .material-quantity { color: var(--error-color); } .missing-materials-text { color: var(--error-color); font-size: 0.8rem; margin-top: 8px; padding: 8px; background: rgba(255, 51, 102, 0.1); border-radius: 6px; border: 1px solid rgba(255, 51, 102, 0.3); } .missing-materials-text i { margin-right: 5px; } .recipe-time { display: flex; align-items: center; gap: 6px; color: var(--text-muted); font-size: 0.8rem; margin-top: 0.5rem; } .recipe-time i { color: var(--primary-color); } .crafting-container { display: flex; flex-direction: column; height: 100%; padding: 20px; background: var(--bg-primary); } .crafting-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding: 15px 20px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 12px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } .crafting-header h2 { color: var(--primary-color); font-size: 1.5rem; font-weight: 600; display: flex; align-items: center; gap: 10px; } .crafting-header h2 i { font-size: 1.3rem; } .crafting-info { display: flex; gap: 30px; } .crafting-level, .crafting-experience { display: flex; align-items: center; gap: 8px; color: var(--text-secondary); font-size: 0.9rem; } .crafting-level i, .crafting-experience i { color: var(--warning-color); } .crafting-level span:last-child, .crafting-experience span:last-child { color: var(--text-primary); font-weight: 600; } .crafting-content { display: flex; gap: 20px; flex: 1; min-height: 0; } .crafting-sidebar { width: 250px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 12px; padding: 20px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } .crafting-categories h3 { color: var(--primary-color); font-size: 1.1rem; margin-bottom: 15px; display: flex; align-items: center; gap: 8px; } .crafting-cat-btn { display: flex; align-items: center; gap: 10px; width: 100%; padding: 12px 15px; margin-bottom: 8px; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; color: var(--text-secondary); font-size: 0.9rem; cursor: pointer; transition: all 0.3s ease; } .crafting-cat-btn:hover { background: var(--hover-bg); border-color: var(--primary-color); color: var(--text-primary); transform: translateX(5px); } .crafting-cat-btn.active { background: var(--gradient-primary); border-color: var(--primary-color); color: var(--text-primary); box-shadow: 0 2px 8px rgba(0, 212, 255, 0.3); } .crafting-cat-btn i { width: 16px; text-align: center; } .crafting-main { flex: 1; display: flex; gap: 20px; } .recipe-list { flex: 1; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 12px; padding: 20px; overflow-y: auto; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } .crafting-details { width: 350px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 12px; padding: 20px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } .selected-recipe { display: flex; flex-direction: column; align-items: center; text-align: center; color: var(--text-muted); } .selected-recipe i { font-size: 3rem; margin-bottom: 15px; opacity: 0.5; } .selected-recipe h3 { margin-bottom: 10px; color: var(--text-secondary); } /* Recipe Item Styles */ .recipe-item { background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; padding: 15px; margin-bottom: 12px; cursor: pointer; transition: all 0.3s ease; } .recipe-item:hover { background: var(--hover-bg); border-color: var(--primary-color); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 212, 255, 0.2); } .recipe-item.selected { background: var(--gradient-primary); border-color: var(--primary-color); box-shadow: 0 4px 12px rgba(0, 212, 255, 0.3); } .recipe-item.locked { opacity: 0.6; cursor: not-allowed; } .recipe-item.locked:hover { transform: none; border-color: var(--border-color); } .recipe-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; } .recipe-header h4 { color: var(--text-primary); font-size: 1rem; } .recipe-level { background: var(--bg-primary); color: var(--warning-color); padding: 4px 8px; border-radius: 4px; font-size: 0.8rem; font-weight: 600; } .recipe-description { color: var(--text-secondary); font-size: 0.85rem; margin-bottom: 10px; } .recipe-materials { display: flex; gap: 8px; flex-wrap: wrap; } .material-tag { background: var(--bg-primary); color: var(--text-muted); padding: 2px 6px; border-radius: 4px; font-size: 0.75rem; } /* Enhanced Recipe Item Styles */ .recipe-item.locked { opacity: 0.5; cursor: not-allowed; background: var(--bg-tertiary); border-color: var(--border-color); } .recipe-item.missing-materials { opacity: 0.7; border-color: var(--warning-color); } .recipe-item.missing-materials:hover { border-color: var(--warning-color); box-shadow: 0 4px 12px rgba(255, 170, 0, 0.2); } .material-item.missing { color: var(--error-color); } .material-item.missing .material-quantity { color: var(--error-color); font-weight: 600; } .missing-materials-text { color: var(--error-color); font-size: 0.85rem; margin-top: 8px; padding: 8px; background: rgba(255, 51, 102, 0.1); border-radius: 4px; border: 1px solid rgba(255, 51, 102, 0.3); } .missing-materials-text i { margin-right: 5px; } /* Responsive Design */ @media (max-width: 1200px) { .crafting-content { flex-direction: column; } .crafting-sidebar { width: 100%; } .crafting-main { flex-direction: column; } .crafting-details { width: 100%; } } /* Debug Console Styles */ .console-window { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 600px; height: 400px; background: var(--bg-secondary); border: 2px solid var(--primary-color); border-radius: 8px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.8); display: none; flex-direction: column; z-index: 10000; font-family: 'Courier New', monospace; } .console-header { background: var(--bg-tertiary); padding: 10px 15px; border-bottom: 1px solid var(--border-color); display: flex; justify-content: space-between; align-items: center; color: var(--text-primary); font-weight: 600; } .console-close { background: none; border: none; color: var(--text-secondary); font-size: 18px; cursor: pointer; padding: 0; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; border-radius: 4px; transition: all 0.2s ease; } .console-close:hover { background: var(--error-color); color: white; } .console-content { flex: 1; display: flex; flex-direction: column; overflow: hidden; } .console-output { flex: 1; padding: 15px; overflow-y: auto; background: var(--bg-primary); color: var(--text-primary); font-size: 12px; line-height: 1.4; } .console-line { margin-bottom: 5px; word-wrap: break-word; } .console-line.console-info { color: var(--primary-color); } .console-line.console-success { color: var(--success-color); } .console-line.console-error { color: var(--error-color); } .console-line.console-warning { color: var(--warning-color); } .console-input-container { padding: 10px 15px; background: var(--bg-tertiary); border-top: 1px solid var(--border-color); } .console-input { width: 100%; background: var(--bg-primary); border: 1px solid var(--border-color); border-radius: 4px; padding: 8px 12px; color: var(--text-primary); font-family: 'Courier New', monospace; font-size: 12px; outline: none; } .console-input:focus { border-color: var(--primary-color); box-shadow: 0 0 0 2px rgba(0, 212, 255, 0.2); } .console-input::placeholder { color: var(--text-muted); } /* Skills Tab Styles */ .skills-container { padding: 20px; } .skills-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding: 15px 20px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 12px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } .skills-header h2 { color: var(--primary-color); font-size: 1.5rem; font-weight: 600; display: flex; align-items: center; gap: 10px; margin: 0; } .skills-header h2 i { font-size: 1.3rem; } .skill-points-display { background: var(--bg-tertiary); padding: 8px 16px; border-radius: 8px; border: 1px solid var(--border-color); } .skill-points { color: var(--warning-color); font-weight: 600; font-size: 1rem; }