/* CSS Variables */ :root { /* Colors */ --primary: #00ff88; --primary-dark: #00cc6a; --primary-light: #4dffaa; --secondary: #0088ff; --accent: #ff6b35; --success: #00c851; --warning: #ffbb33; --error: #ff4444; /* Background */ --bg-primary: #0a0a0a; --bg-secondary: #111111; --bg-tertiary: #1a1a1a; --bg-card: rgba(17, 17, 17, 0.8); --bg-glass: rgba(255, 255, 255, 0.02); --bg-overlay: rgba(0, 0, 0, 0.7); /* Text */ --text-primary: #ffffff; --text-secondary: #b3b3b3; --text-muted: #666666; --text-accent: var(--primary); /* Borders */ --border-primary: rgba(255, 255, 255, 0.1); --border-secondary: rgba(255, 255, 255, 0.05); --border-accent: rgba(0, 255, 136, 0.3); /* Shadows */ --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.1); --shadow-md: 0 8px 32px rgba(0, 0, 0, 0.2); --shadow-lg: 0 16px 64px rgba(0, 0, 0, 0.3); --shadow-glow: 0 0 40px rgba(0, 255, 136, 0.3); --shadow-glow-accent: 0 0 60px rgba(255, 107, 53, 0.4); /* Spacing */ --space-xs: 0.5rem; --space-sm: 1rem; --space-md: 1.5rem; --space-lg: 2rem; --space-xl: 3rem; --space-2xl: 4rem; /* Border Radius */ --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-xl: 24px; --radius-2xl: 32px; /* Transitions */ --transition-fast: 0.15s ease; --transition-normal: 0.3s ease; --transition-slow: 0.5s ease; --transition-bounce: 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55); } /* Reset & Base */ * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; } body { font-family: 'Pretendard', 'Nanum Square', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg-primary); color: var(--text-primary); line-height: 1.6; overflow-x: hidden; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Typography */ h1, h2, h3, h4, h5, h6 { font-family: 'Nanum Square', 'Pretendard', sans-serif; font-weight: 800; line-height: 1.2; } /* Background Effects */ .background { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: -2; background: radial-gradient(ellipse at center, var(--bg-secondary) 0%, var(--bg-primary) 70%); } .grid-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(rgba(0, 255, 136, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 255, 136, 0.03) 1px, transparent 1px); background-size: 80px 80px; animation: grid-float 30s linear infinite; } @keyframes grid-float { 0% { transform: translate(0, 0); } 100% { transform: translate(80px, 80px); } } .floating-shapes { position: absolute; width: 100%; height: 100%; overflow: hidden; } .shape { position: absolute; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--secondary)); opacity: 0.1; animation: float-shape 20s ease-in-out infinite; } .shape-1 { width: 300px; height: 300px; top: 10%; left: 5%; animation-delay: 0s; } .shape-2 { width: 200px; height: 200px; top: 70%; right: 10%; animation-delay: -7s; } .shape-3 { width: 150px; height: 150px; bottom: 20%; left: 70%; animation-delay: -14s; } .shape-4 { width: 100px; height: 100px; top: 40%; right: 30%; animation-delay: -10s; } @keyframes float-shape { 0%, 100% { transform: translateY(0) rotate(0deg) scale(1); } 25% { transform: translateY(-40px) rotate(90deg) scale(1.1); } 50% { transform: translateY(-20px) rotate(180deg) scale(0.9); } 75% { transform: translateY(-60px) rotate(270deg) scale(1.05); } } #particles-canvas { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* Navigation */ .navbar { position: fixed; top: 0; left: 0; width: 100%; height: 80px; background: rgba(10, 10, 10, 0.9); backdrop-filter: blur(20px); border-bottom: 1px solid var(--border-primary); z-index: 1000; transition: var(--transition-normal); } .nav-container { max-width: 1400px; margin: 0 auto; height: 100%; display: flex; align-items: center; justify-content: space-between; padding: 0 var(--space-lg); } .nav-brand { display: flex; align-items: center; gap: var(--space-md); } .brand-icon { width: 50px; height: 50px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--secondary)); display: flex; align-items: center; justify-content: center; padding: 3px; position: relative; overflow: hidden; } .icon-inner { width: 100%; height: 100%; background: var(--bg-primary); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 20px; color: var(--primary); position: relative; z-index: 2; } .brand-icon::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, var(--primary), var(--secondary)); border-radius: 50%; animation: brand-pulse 3s ease-in-out infinite; } @keyframes brand-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.1); opacity: 0.8; } } .brand-text { display: flex; flex-direction: column; } .brand-name { font-size: 1.5rem; font-weight: 800; background: linear-gradient(135deg, var(--primary), var(--secondary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-family: 'Nanum Square', sans-serif; } .brand-tagline { font-size: 0.75rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 1px; font-weight: 500; } .nav-menu { display: flex; gap: var(--space-sm); } .nav-link { display: flex; align-items: center; gap: var(--space-xs); padding: var(--space-sm) var(--space-md); border-radius: var(--radius-md); text-decoration: none; color: var(--text-secondary); font-weight: 500; transition: var(--transition-normal); position: relative; overflow: hidden; border: 1px solid transparent; } .nav-link::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(0, 255, 136, 0.1), transparent); transition: var(--transition-normal); } .nav-link:hover::before, .nav-link.active::before { left: 100%; } .nav-link:hover, .nav-link.active { color: var(--primary); background: var(--bg-glass); border-color: var(--border-accent); } .nav-actions { display: flex; align-items: center; gap: var(--space-md); } .server-info { display: flex; flex-direction: column; gap: var(--space-xs); font-size: 0.875rem; } .status-indicator { display: flex; align-items: center; gap: var(--space-xs); } .status-dot { font-size: 8px; color: var(--error); animation: pulse-dot 2s ease-in-out infinite; transition: var(--transition-normal); } .status-dot.online { color: var(--success); } @keyframes pulse-dot { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.2); } } .player-count { display: flex; align-items: center; gap: var(--space-xs); color: var(--text-muted); font-size: 0.875rem; } .refresh-btn { background: var(--bg-glass); border: 1px solid var(--border-primary); color: var(--text-secondary); padding: var(--space-xs) var(--space-sm); border-radius: var(--radius-sm); cursor: pointer; transition: var(--transition-normal); display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; } .refresh-btn:hover { background: var(--bg-tertiary); color: var(--primary); border-color: var(--border-accent); transform: rotate(180deg); } .refresh-btn.loading { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .cta-button { background: linear-gradient(135deg, var(--primary), var(--secondary)); color: white; border: none; padding: var(--space-sm) var(--space-lg); border-radius: var(--radius-md); font-weight: 600; text-decoration: none; display: flex; align-items: center; gap: var(--space-xs); transition: var(--transition-normal); box-shadow: var(--shadow-glow); position: relative; overflow: hidden; } .cta-button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: var(--transition-normal); } .cta-button:hover::before { left: 100%; } .cta-button:hover { transform: translateY(-2px); box-shadow: 0 0 60px rgba(0, 255, 136, 0.5); } .mobile-menu-toggle { display: none; flex-direction: column; gap: 4px; background: none; border: none; cursor: pointer; padding: var(--space-xs); } .mobile-menu-toggle span { width: 24px; height: 3px; background: var(--text-primary); border-radius: 2px; transition: var(--transition-normal); } /* Main Container */ .main-container { padding-top: 80px; } /* Hero Section */ .hero { min-height: 100vh; display: flex; align-items: center; position: relative; overflow: hidden; } .hero-container { max-width: 1400px; margin: 0 auto; padding: 0 var(--space-lg); display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2xl); align-items: center; } .hero-content { z-index: 10; } .hero-badge { display: inline-flex; align-items: center; gap: var(--space-xs); padding: var(--space-xs) var(--space-md); background: var(--bg-glass); border: 1px solid var(--border-accent); border-radius: 50px; color: var(--primary); font-size: 0.875rem; font-weight: 600; margin-bottom: var(--space-lg); backdrop-filter: blur(10px); position: relative; overflow: hidden; } .badge-glow { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(0, 255, 136, 0.1), transparent); animation: badge-sweep 3s ease-in-out infinite; } @keyframes badge-sweep { 0%, 100% { transform: translateX(-100%); } 50% { transform: translateX(100%); } } .hero-title { font-size: clamp(3rem, 8vw, 5rem); font-weight: 900; line-height: 1.1; margin-bottom: var(--space-lg); font-family: 'Nanum Square', sans-serif; } .title-line { display: block; color: var(--text-secondary); margin-bottom: var(--space-md); } .title-brand { display: block; } .gradient-text { background: linear-gradient(135deg, var(--primary), var(--secondary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; text-shadow: 0 0 60px rgba(0, 255, 136, 0.3); } .hero-description { font-size: 1.25rem; color: var(--text-secondary); line-height: 1.8; margin-bottom: var(--space-xl); } .hero-actions { display: flex; gap: var(--space-md); margin-bottom: var(--space-xl); flex-wrap: wrap; } .btn-primary { background: linear-gradient(135deg, var(--primary), var(--secondary)); color: white; border: none; padding: var(--space-md) var(--space-xl); border-radius: var(--radius-lg); font-weight: 700; font-size: 1.125rem; cursor: pointer; display: flex; align-items: center; gap: var(--space-sm); transition: var(--transition-normal); position: relative; overflow: hidden; } .btn-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, var(--primary-dark), var(--secondary)); opacity: 0; transition: var(--transition-normal); } .btn-primary:hover .btn-bg { opacity: 1; } .btn-primary:hover { transform: translateY(-3px); box-shadow: 0 0 60px rgba(0, 255, 136, 0.5); } .btn-particles { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; } .btn-secondary { background: var(--bg-glass); color: var(--text-primary); border: 2px solid var(--border-primary); padding: var(--space-md) var(--space-xl); border-radius: var(--radius-lg); font-weight: 600; font-size: 1.125rem; text-decoration: none; display: flex; align-items: center; gap: var(--space-sm); transition: var(--transition-normal); backdrop-filter: blur(10px); } .btn-secondary:hover { border-color: var(--primary); background: rgba(0, 255, 136, 0.1); transform: translateY(-3px); } .server-address { display: flex; justify-content: flex-start; } .address-container { display: flex; flex-direction: column; gap: var(--space-sm); } .address-label { display: flex; align-items: center; gap: var(--space-xs); font-size: 0.875rem; color: var(--text-muted); font-weight: 500; } .address-box { background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: var(--radius-lg); padding: var(--space-md) var(--space-lg); display: flex; align-items: center; gap: var(--space-md); backdrop-filter: blur(20px); transition: var(--transition-normal); } .address-box:hover { border-color: var(--border-accent); box-shadow: var(--shadow-glow); } .address-icon { color: var(--primary); font-size: 1.25rem; } .address-text { font-family: 'Courier New', monospace; font-size: 1.25rem; font-weight: 700; color: var(--primary); user-select: all; } .copy-btn { background: var(--primary); color: white; border: none; padding: var(--space-xs) var(--space-sm); border-radius: var(--radius-sm); cursor: pointer; transition: var(--transition-fast); } .copy-btn:hover { background: var(--primary-dark); transform: scale(1.05); } .version-info { display: flex; align-items: center; gap: var(--space-xs); font-size: 0.875rem; color: var(--text-muted); } .hero-visual { display: flex; align-items: center; justify-content: center; position: relative; } .floating-elements { position: absolute; width: 100%; height: 100%; } .element { position: absolute; width: 60px; height: 60px; background: linear-gradient(135deg, var(--primary), var(--secondary)); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; color: white; animation: float-element 6s ease-in-out infinite; } .element-1 { top: 10%; left: 10%; animation-delay: 0s; } .element-2 { top: 20%; right: 15%; animation-delay: -1.5s; } .element-3 { bottom: 25%; left: 5%; animation-delay: -3s; } .element-4 { bottom: 15%; right: 10%; animation-delay: -4.5s; } @keyframes float-element { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-20px) rotate(180deg); } } .hero-graphic { position: relative; width: 400px; height: 400px; margin: 0 auto; } .graphic-ring { position: absolute; border: 2px solid; border-radius: 50%; animation: rotate-ring 20s linear infinite; } .ring-1 { width: 100%; height: 100%; border-color: rgba(0, 255, 136, 0.3); animation-duration: 20s; } .ring-2 { width: 80%; height: 80%; top: 10%; left: 10%; border-color: rgba(0, 136, 255, 0.3); animation-duration: 15s; animation-direction: reverse; } .ring-3 { width: 60%; height: 60%; top: 20%; left: 20%; border-color: rgba(255, 107, 53, 0.3); animation-duration: 10s; } @keyframes rotate-ring { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .center-orb { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 120px; height: 120px; background: linear-gradient(135deg, var(--primary), var(--secondary)); border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-glow); animation: orb-pulse 3s ease-in-out infinite; } .orb-core { font-size: 3rem; color: white; animation: orb-float 4s ease-in-out infinite; } @keyframes orb-pulse { 0%, 100% { box-shadow: var(--shadow-glow); } 50% { box-shadow: 0 0 80px rgba(0, 255, 136, 0.6); } } @keyframes orb-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } /* Animation Classes */ .animate-fade-up { opacity: 0; transform: translateY(40px); animation: fade-up 1s ease-out forwards; } @keyframes fade-up { to { opacity: 1; transform: translateY(0); } } /* Features Section */ .features-section { padding: var(--space-2xl) 0; background: var(--bg-secondary); } .section-container { max-width: 1400px; margin: 0 auto; padding: 0 var(--space-lg); } .section-header { text-align: center; margin-bottom: var(--space-2xl); } .section-title { font-size: 3rem; font-weight: 900; margin-bottom: var(--space-md); font-family: 'Nanum Square', sans-serif; } .title-accent { background: linear-gradient(135deg, var(--primary), var(--secondary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .section-subtitle { font-size: 1.25rem; color: var(--text-secondary); max-width: 600px; margin: 0 auto; } /* Feature Showcase */ .feature-showcase { display: grid; grid-template-columns: 1fr; gap: var(--space-2xl); margin-bottom: var(--space-2xl); } .main-feature-display { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2xl); background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: var(--radius-2xl); padding: var(--space-2xl); backdrop-filter: blur(30px); position: relative; overflow: hidden; } .main-feature-display::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 4px; background: linear-gradient(90deg, var(--primary), var(--secondary)); } /* Feature Visual */ .feature-visual { position: relative; height: 400px; border-radius: var(--radius-xl); overflow: hidden; background: var(--bg-primary); border: 2px solid var(--border-primary); } .visual-content { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; opacity: 0; visibility: hidden; transform: scale(0.9) translateY(20px); transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); } .visual-content.active { opacity: 1; visibility: visible; transform: scale(1) translateY(0); transition-delay: 0.1s; } .visual-icon { position: relative; width: 120px; height: 120px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--secondary)); display: flex; align-items: center; justify-content: center; font-size: 3rem; color: white; z-index: 3; box-shadow: 0 0 40px rgba(0, 255, 136, 0.4); animation: icon-float 6s ease-in-out infinite; } @keyframes icon-float { 0%, 100% { transform: translateY(0) rotate(0deg) scale(1); box-shadow: 0 0 40px rgba(0, 255, 136, 0.4); } 50% { transform: translateY(-15px) rotate(5deg) scale(1.05); box-shadow: 0 0 60px rgba(0, 255, 136, 0.6); } } .visual-bg { position: absolute; top: 50%; left: 50%; width: 280px; height: 280px; background: radial-gradient(circle, rgba(0, 255, 136, 0.15) 0%, rgba(0, 255, 136, 0.05) 40%, transparent 70%); border-radius: 50%; transform: translate(-50%, -50%); animation: bg-pulse 4s ease-in-out infinite; } @keyframes bg-pulse { 0%, 100% { transform: translate(-50%, -50%) scale(1) rotate(0deg); opacity: 0.6; } 50% { transform: translate(-50%, -50%) scale(1.15) rotate(180deg); opacity: 0.9; } } .visual-particles { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(2px 2px at 25% 35%, rgba(0, 255, 136, 0.4), transparent), radial-gradient(2px 2px at 65% 75%, rgba(0, 136, 255, 0.4), transparent), radial-gradient(1px 1px at 85% 45%, rgba(255, 107, 53, 0.4), transparent), radial-gradient(1px 1px at 45% 85%, rgba(0, 255, 136, 0.4), transparent), radial-gradient(1px 1px at 15% 65%, rgba(156, 39, 176, 0.4), transparent); background-size: 120px 120px, 100px 100px, 80px 80px, 140px 140px, 90px 90px; animation: particles-drift 25s linear infinite; opacity: 0.7; } @keyframes particles-drift { 0% { transform: translate(0, 0) rotate(0deg); } 25% { transform: translate(-8px, -12px) rotate(90deg); } 50% { transform: translate(12px, -18px) rotate(180deg); } 75% { transform: translate(-6px, -10px) rotate(270deg); } 100% { transform: translate(0, 0) rotate(360deg); } } /* Feature Details */ .feature-details { position: relative; min-height: 400px; } .detail-content { opacity: 0; visibility: hidden; transform: translateX(40px); transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); position: absolute; top: 0; left: 0; width: 100%; } .detail-content.active { opacity: 1; visibility: visible; transform: translateX(0); position: relative; transition-delay: 0.2s; } .detail-content h3 { font-size: 2rem; font-weight: 800; margin-bottom: var(--space-md); background: linear-gradient(135deg, var(--primary), var(--secondary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-family: 'Nanum Square', sans-serif; animation: title-glow 3s ease-in-out infinite; } @keyframes title-glow { 0%, 100% { filter: drop-shadow(0 0 8px rgba(0, 255, 136, 0.3)); } 50% { filter: drop-shadow(0 0 16px rgba(0, 255, 136, 0.5)); } } .feature-desc { font-size: 1.125rem; color: var(--text-secondary); line-height: 1.8; margin-bottom: var(--space-xl); animation: fade-in-up 0.8s ease-out 0.4s both; } @keyframes fade-in-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .feature-stats { display: flex; flex-direction: column; gap: var(--space-md); } .stat-item { display: flex; align-items: center; gap: var(--space-md); padding: var(--space-md); background: var(--bg-glass); border: 1px solid var(--border-primary); border-radius: var(--radius-lg); backdrop-filter: blur(10px); transition: all 0.3s ease; opacity: 0; transform: translateY(10px); animation: stat-item-appear 0.6s ease-out forwards; } .stat-item:nth-child(1) { animation-delay: 0.6s; } .stat-item:nth-child(2) { animation-delay: 0.8s; } .stat-item:nth-child(3) { animation-delay: 1.0s; } @keyframes stat-item-appear { to { opacity: 1; transform: translateY(0); } } .stat-item:hover { border-color: var(--border-accent); background: rgba(0, 255, 136, 0.08); transform: translateX(8px); } .stat-item i { width: 40px; height: 40px; background: linear-gradient(135deg, var(--primary), var(--secondary)); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-size: 1rem; flex-shrink: 0; box-shadow: 0 4px 12px rgba(0, 255, 136, 0.3); transition: all 0.3s ease; } .stat-item:hover i { transform: scale(1.1) rotate(10deg); box-shadow: 0 6px 20px rgba(0, 255, 136, 0.5); } .stat-item span { font-weight: 600; color: var(--text-primary); transition: color 0.3s ease; } .stat-item:hover span { color: var(--primary); } /* Feature Navigation */ .feature-navigation { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-lg); } .feature-nav-btn { background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: var(--radius-xl); padding: var(--space-lg); cursor: pointer; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; display: flex; align-items: center; gap: var(--space-md); backdrop-filter: blur(20px); } .feature-nav-btn::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(0, 255, 136, 0.08), transparent); transition: all 0.6s ease; } .feature-nav-btn::after { content: ''; position: absolute; bottom: 0; left: 50%; width: 0; height: 2px; background: linear-gradient(90deg, var(--primary), var(--secondary)); transition: all 0.4s ease; transform: translateX(-50%); } .feature-nav-btn:hover::before { left: 100%; } .feature-nav-btn:hover::after, .feature-nav-btn.active::after { width: 80%; } .feature-nav-btn:hover, .feature-nav-btn.active { border-color: var(--border-accent); background: rgba(0, 255, 136, 0.05); transform: translateY(-4px); box-shadow: 0 8px 32px rgba(0, 255, 136, 0.15); } .nav-icon { width: 50px; height: 50px; background: linear-gradient(135deg, var(--primary), var(--secondary)); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-size: 1.25rem; flex-shrink: 0; transition: all 0.4s ease; box-shadow: 0 4px 16px rgba(0, 255, 136, 0.3); } .feature-nav-btn.active .nav-icon { animation: nav-icon-pulse 2.5s ease-in-out infinite; transform: scale(1.1); box-shadow: 0 6px 24px rgba(0, 255, 136, 0.5); } .feature-nav-btn:hover .nav-icon { transform: scale(1.05) rotate(10deg); } @keyframes nav-icon-pulse { 0%, 100% { transform: scale(1.1); box-shadow: 0 6px 24px rgba(0, 255, 136, 0.5); } 50% { transform: scale(1.15); box-shadow: 0 8px 32px rgba(0, 255, 136, 0.7); } } .nav-content { display: flex; flex-direction: column; text-align: left; transition: all 0.3s ease; } .nav-title { font-weight: 700; color: var(--text-primary); font-size: 1.125rem; font-family: 'Nanum Square', sans-serif; margin-bottom: 2px; transition: color 0.3s ease; } .nav-desc { font-size: 0.875rem; color: var(--text-muted); transition: color 0.3s ease; } .feature-nav-btn:hover .nav-title, .feature-nav-btn.active .nav-title { color: var(--primary); } .feature-nav-btn:hover .nav-desc, .feature-nav-btn.active .nav-desc { color: var(--text-secondary); } .nav-indicator { position: absolute; right: var(--space-md); width: 8px; height: 8px; background: var(--primary); border-radius: 50%; opacity: 0; transform: scale(0); transition: all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55); } .feature-nav-btn.active .nav-indicator { opacity: 1; transform: scale(1); animation: indicator-blink 2s ease-in-out infinite; } @keyframes indicator-blink { 0%, 100% { opacity: 1; box-shadow: 0 0 12px rgba(0, 255, 136, 0.6); } 50% { opacity: 0.4; box-shadow: 0 0 8px rgba(0, 255, 136, 0.3); } } /* Feature Highlights */ .feature-highlights { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-lg); margin-top: var(--space-2xl); } .highlight-item { text-align: center; padding: var(--space-xl); background: var(--bg-glass); border: 1px solid var(--border-primary); border-radius: var(--radius-xl); backdrop-filter: blur(20px); transition: var(--transition-normal); } .highlight-item:hover { border-color: var(--border-accent); transform: translateY(-5px); } .highlight-number { font-size: 2.5rem; font-weight: 900; background: linear-gradient(135deg, var(--primary), var(--secondary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: var(--space-sm); font-family: 'Nanum Square', sans-serif; } .highlight-text { color: var(--text-secondary); font-weight: 600; font-size: 0.875rem; text-transform: uppercase; letter-spacing: 1px; } /* Stats Section */ .stats-section { padding: var(--space-2xl) 0; } .stats-container { max-width: 1200px; margin: 0 auto; padding: 0 var(--space-lg); } .stats-header { text-align: center; margin-bottom: var(--space-2xl); } .stats-header h2 { font-size: 2.5rem; font-weight: 900; margin-bottom: var(--space-md); background: linear-gradient(135deg, var(--primary), var(--secondary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-family: 'Nanum Square', sans-serif; } .stats-header p { color: var(--text-secondary); font-size: 1.125rem; } .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--space-lg); } .stat-card { background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: var(--radius-xl); padding: var(--space-xl); backdrop-filter: blur(30px); transition: var(--transition-normal); position: relative; overflow: hidden; } .stat-bg { position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(0, 255, 136, 0.1), transparent); transition: var(--transition-normal); } .stat-card:hover .stat-bg { left: 100%; } .stat-card:hover { transform: translateY(-10px); box-shadow: var(--shadow-lg); border-color: var(--border-accent); } .stat-icon { width: 60px; height: 60px; background: linear-gradient(135deg, var(--primary), var(--secondary)); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; color: white; margin-bottom: var(--space-lg); box-shadow: var(--shadow-glow); } .stat-content { margin-bottom: var(--space-md); } .stat-number { font-size: 2.5rem; font-weight: 900; color: var(--primary); text-shadow: 0 0 20px rgba(0, 255, 136, 0.5); margin-bottom: var(--space-xs); font-family: 'Nanum Square', sans-serif; } .stat-label { font-size: 1rem; color: var(--text-secondary); font-weight: 600; } .stat-trend { display: flex; align-items: center; gap: var(--space-xs); font-size: 0.875rem; color: var(--success); font-weight: 600; } /* Community Section */ .community-section { padding: var(--space-2xl) 0; background: var(--bg-secondary); } .community-grid { display: grid; grid-template-columns: 1fr 400px; gap: var(--space-2xl); align-items: center; } .community-content h2 { font-size: 2.5rem; font-weight: 900; margin-bottom: var(--space-lg); background: linear-gradient(135deg, var(--primary), var(--secondary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-family: 'Nanum Square', sans-serif; } .community-content p { color: var(--text-secondary); font-size: 1.125rem; line-height: 1.8; margin-bottom: var(--space-xl); } .community-features { display: flex; flex-direction: column; gap: var(--space-md); margin-bottom: var(--space-xl); } .feature-item { display: flex; align-items: center; gap: var(--space-md); color: var(--text-secondary); } .feature-item i { width: 40px; height: 40px; background: linear-gradient(135deg, var(--primary), var(--secondary)); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-size: 1rem; } .discord-btn { background: #5865f2; color: white; border: none; padding: var(--space-md) var(--space-xl); border-radius: var(--radius-lg); font-weight: 600; font-size: 1.125rem; text-decoration: none; display: inline-flex; align-items: center; gap: var(--space-sm); transition: var(--transition-normal); } .discord-btn:hover { background: #4752c4; transform: translateY(-2px); box-shadow: 0 8px 32px rgba(88, 101, 242, 0.3); } .discord-widget { background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: var(--radius-2xl); padding: var(--space-xl); backdrop-filter: blur(30px); text-align: center; } .widget-header { display: flex; align-items: center; justify-content: center; gap: var(--space-sm); margin-bottom: var(--space-lg); font-size: 1.25rem; font-weight: 700; font-family: 'Nanum Square', sans-serif; } .widget-header i { font-size: 2rem; color: #5865f2; } .widget-content { color: var(--text-secondary); } .online-indicator { display: flex; align-items: center; justify-content: center; gap: var(--space-xs); margin-bottom: var(--space-md); font-weight: 600; color: var(--success); } .online-dot { width: 8px; height: 8px; background: var(--success); border-radius: 50%; animation: pulse 2s ease-in-out infinite; } @keyframes pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.8; transform: scale(1.2); } } /* Footer */ .footer { background: var(--bg-primary); padding: var(--space-2xl) 0 var(--space-lg); border-top: 1px solid var(--border-primary); } .footer-container { max-width: 1400px; margin: 0 auto; padding: 0 var(--space-lg); } .footer-content { display: grid; grid-template-columns: 1fr auto; gap: var(--space-2xl); margin-bottom: var(--space-xl); } .footer-brand { display: flex; flex-direction: column; gap: var(--space-md); } .footer-logo { display: flex; align-items: center; gap: var(--space-sm); } .footer-logo .brand-icon { width: 40px; height: 40px; } .footer-logo .icon-inner { font-size: 16px; } .footer-logo span { font-size: 1.25rem; font-weight: 700; color: var(--primary); font-family: 'Nanum Square', sans-serif; } .footer-desc { color: var(--text-secondary); max-width: 400px; line-height: 1.8; } .footer-links { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-xl); } .link-group { display: flex; flex-direction: column; gap: var(--space-sm); } .link-group h4 { color: var(--text-primary); font-weight: 600; margin-bottom: var(--space-xs); font-family: 'Nanum Square', sans-serif; } .link-group a { color: var(--text-muted); text-decoration: none; font-size: 0.875rem; transition: var(--transition-fast); } .link-group a:hover { color: var(--primary); } .footer-bottom { display: flex; justify-content: center; align-items: center; padding-top: var(--space-lg); border-top: 1px solid var(--border-secondary); font-size: 0.875rem; color: var(--text-muted); text-align: center; } /* Notifications */ #notification-container { position: fixed; top: 100px; right: 20px; z-index: 10000; display: flex; flex-direction: column; gap: var(--space-sm); } .notification { background: linear-gradient(135deg, var(--primary), var(--secondary)); color: white; padding: var(--space-md) var(--space-lg); border-radius: var(--radius-lg); font-weight: 600; box-shadow: 0 8px 32px rgba(0, 255, 136, 0.3); animation: slideIn 0.3s ease-out; display: flex; align-items: center; gap: var(--space-sm); font-family: 'Pretendard', sans-serif; } .notification.slide-out { animation: slideOut 0.3s ease-in forwards; } @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes slideOut { from { transform: translateX(0); opacity: 1; } to { transform: translateX(100%); opacity: 0; } } /* Feature Visual Content Variations */ .visual-content[data-feature="pvp"] .visual-bg { background: radial-gradient(circle, rgba(255, 107, 53, 0.3) 0%, transparent 70%); } .visual-content[data-feature="economy"] .visual-bg { background: radial-gradient(circle, rgba(255, 193, 7, 0.3) 0%, transparent 70%); } .visual-content[data-feature="protection"] .visual-bg { background: radial-gradient(circle, rgba(0, 136, 255, 0.3) 0%, transparent 70%); } .visual-content[data-feature="events"] .visual-bg { background: radial-gradient(circle, rgba(156, 39, 176, 0.3) 0%, transparent 70%); } /* Animation for feature switching */ @keyframes feature-slide-in { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } } .detail-content.slide-in { animation: feature-slide-in 0.4s ease-out; } /* Special effects for active features */ .feature-nav-btn.active { box-shadow: 0 8px 32px rgba(0, 255, 136, 0.2); } .main-feature-display { transition: all var(--transition-normal); } .main-feature-display.updating { transform: scale(0.98); } /* Loading animation for feature switching */ .feature-visual.loading::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(0, 255, 136, 0.1), transparent); animation: loading-sweep 1s ease-in-out; } @keyframes loading-sweep { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } /* Responsive Design */ @media (max-width: 1024px) { .hero-container { grid-template-columns: 1fr; gap: var(--space-xl); text-align: center; } .main-feature-display { grid-template-columns: 1fr; gap: var(--space-xl); text-align: center; } .feature-navigation { grid-template-columns: 1fr; } .feature-highlights { grid-template-columns: repeat(2, 1fr); } .visual-content { transform: scale(0.9); } .visual-content.active { transform: scale(1); } .community-grid { grid-template-columns: 1fr; gap: var(--space-xl); } .nav-menu { display: none; } .mobile-menu-toggle { display: flex; } .hero-graphic { width: 300px; height: 300px; } .center-orb { width: 100px; height: 100px; } .orb-core { font-size: 2.5rem; } } @media (max-width: 768px) { .nav-container { padding: 0 var(--space-md); } .nav-actions .server-info { display: none; } .nav-actions .refresh-btn { display: none; } .hero { padding: var(--space-xl) 0; min-height: 80vh; } .hero-container { padding: 0 var(--space-md); } .section-container { padding: 0 var(--space-md); } .hero-actions { flex-direction: column; align-items: stretch; } .server-address { justify-content: center; } .stats-grid { grid-template-columns: 1fr; } .footer-content { grid-template-columns: 1fr; gap: var(--space-xl); } .footer-links { grid-template-columns: 1fr; gap: var(--space-lg); } .section-title { font-size: 2.5rem; } .stats-header h2 { font-size: 2rem; } .community-content h2 { font-size: 2rem; } .feature-highlights { grid-template-columns: 1fr; } .main-feature-display { padding: var(--space-xl); } .feature-visual { height: 300px; } .visual-icon { width: 80px; height: 80px; font-size: 2rem; } .detail-content h3 { font-size: 1.5rem; } .feature-desc { font-size: 1rem; } .feature-nav-btn { padding: var(--space-md); } .nav-icon { width: 40px; height: 40px; font-size: 1rem; } .highlight-number { font-size: 2rem; } } @media (max-width: 480px) { .hero-title { font-size: 2.5rem; } .btn-primary, .btn-secondary { font-size: 1rem; padding: var(--space-sm) var(--space-lg); } .address-text { font-size: 1rem; } .stat-number { font-size: 2rem; } .section-title { font-size: 2rem; } .hero-graphic { width: 250px; height: 250px; } .center-orb { width: 80px; height: 80px; } .orb-core { font-size: 2rem; } .floating-elements .element { width: 40px; height: 40px; font-size: 1rem; } .nav-brand .brand-name { font-size: 1.25rem; } .nav-brand .brand-tagline { font-size: 0.65rem; } .notification { margin-right: var(--space-sm); max-width: calc(100vw - var(--space-lg)); } } /* Mobile Menu Styles */ @media (max-width: 1024px) { .nav-menu.active { display: flex; flex-direction: column; position: absolute; top: 100%; left: 0; width: 100%; background: rgba(10, 10, 10, 0.95); backdrop-filter: blur(20px); border-top: 1px solid var(--border-primary); padding: var(--space-lg); gap: var(--space-md); } .mobile-menu-toggle.active span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); } .mobile-menu-toggle.active span:nth-child(2) { opacity: 0; } .mobile-menu-toggle.active span:nth-child(3) { transform: rotate(-45deg) translate(7px, -6px); } } /* Touch Devices */ @media (hover: none) and (pointer: coarse) { .stat-card:hover, .feature-nav-btn:hover, .nav-link:hover, .btn-primary:hover, .btn-secondary:hover, .highlight-item:hover { transform: none; } } /* High Contrast Mode */ @media (prefers-contrast: high) { :root { --border-primary: rgba(255, 255, 255, 0.3); --border-secondary: rgba(255, 255, 255, 0.2); --text-secondary: #cccccc; --text-muted: #999999; } } /* Reduced Motion */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } .grid-overlay, .floating-shapes, .hero-graphic, .particles-canvas { animation: none !important; } } /* Print Styles */ @media print { .navbar, .floating-shapes, .particles-canvas, #notification-container { display: none; } .main-container { padding-top: 0; } body { background: white; color: black; } .hero-title, .section-title { color: black; } } /* Loading States */ .loading { opacity: 0.7; pointer-events: none; } .skeleton { background: linear-gradient(90deg, var(--bg-tertiary) 25%, var(--bg-secondary) 50%, var(--bg-tertiary) 75%); background-size: 200% 100%; animation: skeleton-loading 1.5s infinite; } @keyframes skeleton-loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Custom Scrollbar */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: var(--bg-secondary); } ::-webkit-scrollbar-thumb { background: var(--primary); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--primary-light); } /* Selection */ ::selection { background: rgba(0, 255, 136, 0.3); color: var(--text-primary); } ::-moz-selection { background: rgba(0, 255, 136, 0.3); color: var(--text-primary); } /* Focus States */ button:focus, a:focus, .nav-link:focus { outline: 2px solid var(--primary); outline-offset: 2px; }