.hero { height: 100vh; max-height: 100vh; min-height: 100vh; position: relative; display: flex; align-items: center; justify-content: center; background: var(--grad-bg); overflow: hidden; box-sizing: border-box; margin: 0; padding: 0; width: 100%; max-width: 100vw; } .particles { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; } .dot { position: absolute; width: 3px; height: 3px; background: rgba(255, 255, 255, 0.4); border-radius: 50%; animation: moveDot linear infinite; } .dot:nth-child(odd) { background: rgba(255, 255, 255, 0.2); } @media (prefers-reduced-motion: reduce) { .dot { animation: none; } } @keyframes moveDot { 0% { transform: translateY(100vh) translateX(0); opacity: 0; } 10% { opacity: 1; } 20% { transform: translateY(80vh) translateX(-10px); } 40% { transform: translateY(60vh) translateX(15px); } 60% { transform: translateY(40vh) translateX(-5px); } 80% { transform: translateY(20vh) translateX(10px); opacity: 1; } 90% { opacity: 0.5; } 100% { transform: translateY(-20px) translateX(-20px); opacity: 0; } } .hero__content { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; text-align: center; max-width: 800px; padding: 0 var(--space-3); } .hero__logo { width: 200px; max-width: 100%; height: auto; margin-bottom: 30px; } @keyframes logoGlow { 0% { filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.2)); } 100% { filter: drop-shadow(0 0 15px rgba(255, 255, 255, 0.4)); } } .hero__title { font-family: var(--font-brand); color: var(--color-text-muted); font-size: clamp(1.8rem, 5vw, 1.8rem); line-height: var(--line-height-tight); margin: 0 0 var(--space-2) 0; font-weight: 400; } .hero__title .highlight { color: var(--color-accent); font-weight: 600; display: inline; } .hero__contact { margin: 0; font-size: var(--font-size-base); } .hero__contact a { display: inline-block; color: var(--color-text-secondary); text-decoration: none; border: 1px solid var(--color-text-secondary); padding: 8px 20px; border-radius: var(--radius-full); opacity: 0.15; transition: all var(--duration-normal) var(--easing-standard); } .hero__contact a:hover { color: var(--color-text-secondary); text-decoration: none; text-shadow: 0 0 14px rgba(79, 70, 229, 0.45), 0 0 36px rgba(79, 70, 229, 0.15); transform: scale(1.04); letter-spacing: 0.02em; opacity: 1; border-color: var(--color-text-primary); box-shadow: 0 0 15px rgba(79, 70, 229, 0.2); } .hero__scroll-btn { position: absolute; bottom: 40px; left: 50%; transform: translateX(-50%); width: 48px; height: 48px; border-radius: 50%; border: 1px solid rgba(79, 70, 229, 0.3); background: rgba(79, 70, 229, 0.06); cursor: pointer; color: rgba(79, 70, 229, 0.65); opacity: 0.85; transition: all var(--duration-normal) var(--easing-standard); display: flex; align-items: center; justify-content: center; animation: gentleBounce 2.5s var(--easing-standard) infinite; } .hero__scroll-btn svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; } .hero__scroll-btn:hover { opacity: 1; border-color: var(--color-accent); background: rgba(79, 70, 229, 0.15); color: var(--color-accent); box-shadow: 0 0 20px rgba(79, 70, 229, 0.25); } @keyframes gentleBounce { 0%, 100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(8px); } } @media (prefers-reduced-motion: reduce) { .hero__scroll-btn { animation: none; } } @media (max-width: 768px) { .hero__logo { max-width: 180px; } .hero__title { font-size: 1.4rem; } .hero__contact { font-size: 1rem; } } @media (max-width: 480px) { .hero__logo { max-width: 160px; } .hero__title { font-size: 1.2rem; } } .hero__scroll-btn--up { position: absolute; bottom: 40px; top: auto; animation: gentleBounce 2.5s var(--easing-standard) infinite; opacity: 0.8; pointer-events: auto; z-index: 10; } @media (max-width: 768px) { .hero__scroll-btn { bottom: 20px; width: 40px; height: 40px; } .hero__scroll-btn--up { bottom: 20px; } } @keyframes gentleBounceUp { 0%, 100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-8px); } }