/* ========================================================= BASE ========================================================= */ *, *::before, *::after { box-sizing: border-box; } body { font-family: 'Montserrat', system-ui, sans-serif; background: #fff; color: #0f172a; -webkit-font-smoothing: antialiased; } /* ========================================================= BACKGROUNDS ========================================================= */ .grid-bg { background-image: linear-gradient(to right, rgba(15, 23, 42, 0.06) 1px, transparent 1px), linear-gradient(to bottom, rgba(15, 23, 42, 0.06) 1px, transparent 1px); background-size: 40px 40px; } .dot-bg { background-image: radial-gradient(rgba(41,194,229,0.07) 1px, transparent 1px); background-size: 28px 28px; } .hero-mesh { background: radial-gradient( ellipse 70% 50% at 10% 0%, rgba(23,214,195,0.10) 0%, transparent 60% ), radial-gradient( ellipse 50% 40% at 90% 5%, rgba(244,201,74,0.10) 0%, transparent 55% ), radial-gradient( ellipse 60% 60% at 50% 100%, rgba(41,194,229,0.06) 0%, transparent 60% ), #ffffff; } /* loader */ .loader-bar{ width:40%; animation:loaderMove 1.2s ease-in-out infinite; } @keyframes loaderMove{ 0%{ transform:translateX(-100%); } 100%{ transform:translateX(350%); } } .no-scrollbar::-webkit-scrollbar { display: none; } .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } /* ========================================================= REVEAL ANIMATIONS ========================================================= */ @keyframes revealUp { from { opacity: 0; transform: translateY(36px); } to { opacity: 1; transform: translateY(0); } } .reveal { animation: revealUp .8s cubic-bezier(.16,1,.3,1) both; } .d1 { animation-delay: .05s; } .d2 { animation-delay: .15s; } .d3 { animation-delay: .25s; } .d4 { animation-delay: .38s; } .d5 { animation-delay: .52s; } /* ========================================================= FLOATING PARTICLES ========================================================= */ @keyframes float { 0%, 100% { transform: translateY(0px) translateX(0px); } 33% { transform: translateY(-10px) translateX(4px); } 66% { transform: translateY(-5px) translateX(-4px); } } .particle { animation: float 6s ease-in-out infinite; } .particle-d1 { animation-delay: 0s; } .particle-d2 { animation-delay: -1.2s; } .particle-d3 { animation-delay: -2.4s; } .particle-d4 { animation-delay: -3.6s; } .particle-d5 { animation-delay: -0.8s; } .particle-d6 { animation-delay: -4.8s; } .particle-d7 { animation-delay: -1.6s; } .particle-d8 { animation-delay: -3s; } /* ========================================================= FLOATING EFFECTS ========================================================= */ @keyframes floatY { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } .float { animation: floatY 5s ease-in-out infinite; } .float2 { animation: floatY 6s ease-in-out infinite; animation-delay: -2s; } /* ========================================================= GLOW EFFECT ========================================================= */ @keyframes glowPulse { 0%, 100% { opacity: .6; transform: scale(1); } 50% { opacity: 1; transform: scale(1.04); } } .gp { animation: glowPulse 5s ease-in-out infinite; } /* ========================================================= TICKER ========================================================= */ @keyframes ticker { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } .ticker-track { animation: ticker 28s linear infinite; } .ticker-track:hover { animation-play-state: paused; } /* ========================================================= PLATFORM REVEALS ========================================================= */ .pl-reveal { opacity: 0; transform: translateY(52px); transition: opacity 0.75s cubic-bezier(0.22,1,0.36,1), transform 0.75s cubic-bezier(0.22,1,0.36,1); } .pl-reveal.pl-visible { opacity: 1; transform: translateY(0); } .pl-d1 { transition-delay: 0.08s; } .pl-d2 { transition-delay: 0.18s; } .pl-d3 { transition-delay: 0.28s; } /* ========================================================= PLATFORM LOADING ========================================================= */ @keyframes pl-load { from { width: 0; } to { width: 75%; } } .pl-bar { animation: pl-load 1.4s cubic-bezier(0.22,1,0.36,1) forwards; } /* ========================================================= PLATFORM PING ========================================================= */ @keyframes pl-ping { 0%, 100% { transform: scale(1); opacity: 0.7; } 50% { transform: scale(2.2); opacity: 0; } } .pl-ping { animation: pl-ping 1.6s cubic-bezier(0,0,0.2,1) infinite; } /* ========================================================= CROSS PLATFORM EFFECTS ========================================================= */ @keyframes cp-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } .cp-blink { animation: cp-blink 1.5s ease-in-out infinite; } @keyframes int-spin { to { transform: rotate(360deg); } } @keyframes pipe-flow { 0% { opacity: 0; transform: scaleX(0); } 40% { opacity: 1; transform: scaleX(1); } 100% { opacity: 0; transform: scaleX(1); } } @keyframes mod-pop { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.07); } } /* ========================================================= SHIMMER TEXT ========================================================= */ @keyframes shimmer { 0% { background-position: 200% center; } 100% { background-position: -200% center; } } .shimmer { background: linear-gradient( 90deg, #29C2E5, #17D6C3, #F4C94A, #17D6C3, #29C2E5 ); background-size: 250% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; animation: shimmer 5s linear infinite; } /* ========================================================= TAGS ========================================================= */ .tag { display: inline-flex; align-items: center; gap: 6px; padding: 4px 14px; border-radius: 99px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; } /* ========================================================= FEATURE TABS ========================================================= */ .ftab { cursor: pointer; border-bottom: 2px solid transparent; padding-bottom: 12px; font-size: 13px; font-weight: 700; color: #94a3b8; transition: all .2s; white-space: nowrap; } .ftab.active, .ftab:hover { color: #29C2E5; border-color: #29C2E5; } /* ========================================================= FEATURE PANELS ========================================================= */ .fpanel { display: none !important; } .fpanel.active { display: block !important; } /* ========================================================= CHECKLIST ITEMS ========================================================= */ .chk { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; color: #475569; } .chk svg { flex-shrink: 0; margin-top: 1px; } /* ========================================================= STATISTICS ========================================================= */ .stat-num { font-size: clamp(2rem, 4vw, 3rem); font-weight: 900; letter-spacing: -.03em; line-height: 1; } /* ========================================================= NAVBAR ========================================================= */ #topnav { background: rgba(255,255,255,0); transition: all .3s; } #topnav.scrolled { background: rgba(255,255,255,0.95); backdrop-filter: blur(20px); box-shadow: 0 1px 0 rgba(0,0,0,0.06); } /* ========================================================= HOVER CARDS ========================================================= */ .hcard { position: relative; overflow: hidden; } .hcard::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient( 90deg, #29C2E5, #17D6C3 ); transform: scaleX(0); transform-origin: left; transition: transform .3s cubic-bezier(.16,1,.3,1); } .hcard:hover::before { transform: scaleX(1); } /* ========================================================= SECTION LABEL ========================================================= */ .section-label { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: #29C2E5; } .section-label::before, .section-label::after { content: ''; display: block; width: 28px; height: 1.5px; background: linear-gradient( 90deg, #29C2E5, #17D6C3 ); } /* ========================================================= GRADIENT BORDER ========================================================= */ .gradient-border { position: relative; } .gradient-border::after { content: ''; position: absolute; inset: -1px; border-radius: inherit; padding: 1px; background: linear-gradient( 135deg, rgba(41,194,229,0.25), rgba(23,214,195,0.15), rgba(244,201,74,0.15) ); -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; } /* ========================================================= MODULE CARDS ========================================================= */ .mod-card { position: relative; overflow: hidden; transition: all .3s cubic-bezier(.16,1,.3,1); } .mod-card::before { content: ''; position: absolute; inset: 0; background: linear-gradient( 135deg, rgba(41,194,229,0.04), transparent 60% ); opacity: 0; transition: opacity .3s; } .mod-card:hover::before { opacity: 1; } .mod-card:hover { transform: translateY(-3px); box-shadow: 0 20px 50px rgba(41,194,229,0.12); } /* ========================================================= STAT REVEAL ========================================================= */ @keyframes countUp { from { opacity: 0; transform: scale(.85); } to { opacity: 1; transform: scale(1); } } .stat-reveal { animation: countUp .7s cubic-bezier(.16,1,.3,1) both; } /* //// features section */ .feature-section { position: relative; padding: clamp(4rem, 8vw, 7rem) 0; } .feature-grid { display: grid; grid-template-columns: 1fr; gap: clamp(2.5rem, 5vw, 4rem); align-items: center; } @media (min-width: 1024px) { .feature-grid { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); } .feature-grid.reverse > div:first-child { order: 2; } .feature-grid.reverse > div:last-child { order: 1; } } .feature-copy { max-width: 560px; } .feature-title { font-size: clamp(1.75rem, 3vw, 2.5rem); line-height: 1.08; font-weight: 900; color: #0f172a; letter-spacing: -0.04em; } .feature-text { margin-top: 1rem; color: #64748b; line-height: 1.75; font-size: 1rem; } .feature-list { margin-top: 2rem; display: grid; gap: 0.85rem; } .feature-list li { display: flex; align-items: flex-start; gap: 0.75rem; color: #334155; font-size: 0.95rem; line-height: 1.55; } .feature-list svg { width: 1.15rem; height: 1.15rem; flex-shrink: 0; margin-top: 0.18rem; } .mockup-card { position: relative; border-radius: clamp(1.25rem, 2vw, 2rem); border: 1px solid rgba(226, 232, 240, 0.95); background: #fff; overflow: hidden; box-shadow: 0 28px 80px rgba(15, 23, 42, 0.12); } .mockup-card::before { content: ""; position: absolute; inset: -40px; z-index: -1; background: radial-gradient(circle, rgba(41,194,229,0.16), transparent 60%); filter: blur(55px); } .mockup-img { display: block; width: 100%; height: auto; object-fit: contain; } .browser-bar { display: flex; align-items: center; gap: 0.4rem; padding: 0.75rem 1rem; background: #f8fafc; border-bottom: 1px solid #f1f5f9; } .browser-dot { width: 0.65rem; height: 0.65rem; border-radius: 999px; } .browser-url { flex: 1; height: 1.35rem; margin-left: 0.75rem; border-radius: 0.45rem; background: #fff; border: 1px solid #e2e8f0; display: flex; align-items: center; padding: 0 0.75rem; font-size: 0.65rem; color: #94a3b8; font-family: monospace; overflow: hidden; white-space: nowrap; } .mobile-strip { margin-top: clamp(2rem, 5vw, 4rem); border-radius: clamp(1.5rem, 3vw, 2rem); overflow: hidden; border: 1px solid #e2e8f0; background: linear-gradient(135deg, #fff, #f8fafc, rgba(41,194,229,0.05)); box-shadow: 0 20px 60px rgba(15, 23, 42, 0.08); } .mobile-strip-grid { display: grid; grid-template-columns: 1fr; align-items: center; } @media (min-width: 1024px) { .mobile-strip-grid { grid-template-columns: 1fr 1fr; } } .mobile-strip-content { padding: clamp(2rem, 5vw, 3.5rem); } .mobile-img-wrap { position: relative; display: flex; justify-content: center; align-items: center; padding: clamp(2rem, 5vw, 3.5rem); overflow: hidden; } .mobile-img-wrap::before { content: ""; position: absolute; width: 18rem; height: 18rem; border-radius: 999px; background: rgba(41,194,229,0.14); filter: blur(70px); } .mobile-img { position: relative; width: min(100%, 360px); height: auto; object-fit: contain; filter: drop-shadow(0 25px 40px rgba(15,23,42,0.22)); } @media (max-width: 640px) { .feature-section { padding: 3.5rem 0; } .feature-list li { font-size: 0.9rem; } .browser-url span { display: none; } .mockup-card { border-radius: 1.25rem; } .mobile-img { width: min(100%, 280px); } } .feature-mini-card, .feature-mobile-card { background: #fff; border: 1px solid #e2e8f0; border-radius: 1.25rem; box-shadow: 0 10px 30px rgba(15,23,42,.05); transition: all .25s ease; } .feature-mini-card { display: flex; align-items: flex-start; gap: .9rem; padding: 1rem; } .feature-mobile-card { padding: 1rem; } .feature-mini-card:hover, .feature-mobile-card:hover { transform: translateY(-3px); border-color: rgba(41,194,229,.18); box-shadow: 0 18px 40px rgba(15,23,42,.08); } .feature-icon { width: 2.4rem; height: 2.4rem; border-radius: .95rem; display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: rgba(41,194,229,.08); border: 1px solid rgba(41,194,229,.08); } .feature-icon svg { width: 1.05rem; height: 1.05rem; color: #29C2E5; stroke-linecap: round; stroke-linejoin: round; } .feature-mini-card p, .feature-mobile-card p { font-size: .84rem; font-weight: 900; line-height: 1.2; color: #0f172a; } .feature-mini-card small, .feature-mobile-card small { display: block; margin-top: .28rem; font-size: .68rem; line-height: 1.45; color: #94a3b8; } .feature-chip { display: inline-flex; align-items: center; padding: .6rem .9rem; border-radius: 999px; background: rgba(41,194,229,.06); border: 1px solid rgba(41,194,229,.08); color: #29C2E5; font-size: .72rem; font-weight: 800; } /* //hero */ .hero-label { display: inline-flex; align-items: center; gap: .45rem; padding: .55rem 1rem; border-radius: 999px; background: rgba(255,255,255,.92); backdrop-filter: blur(14px); border: 1px solid rgba(255,255,255,.65); box-shadow: 0 10px 30px rgba(15,23,42,.12); font-size: .68rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: #0f172a; } .hero-label.mobile { background: #29C2E5; color: #fff; border-color: rgba(255,255,255,.25); } .mobile-hero-phone { transform: rotate(5deg); transition: all .5s ease; } .mobile-hero-phone:hover { transform: rotate(2deg) translateY(-10px); } @media (max-width: 768px) { .hero-label { font-size: .62rem; padding: .45rem .8rem; } } .cap-pill { display: inline-flex; align-items: center; border: 1px solid #e2e8f0; background: #fff; color: #475569; padding: .7rem 1rem; border-radius: 999px; font-size: .78rem; font-weight: 800; transition: all .25s ease; box-shadow: 0 8px 24px rgba(15,23,42,.04); } .cap-pill:hover { color: #29C2E5; border-color: rgba(41,194,229,.25); background: rgba(41,194,229,.04); transform: translateY(-2px); } .mobile-action-card { display: flex; align-items: flex-start; gap: .9rem; padding: 1rem; border-radius: 1.25rem; background: rgba(255,255,255,.9); border: 1px solid #e2e8f0; box-shadow: 0 10px 30px rgba(15,23,42,.05); } .mobile-action-icon { width: 2.25rem; height: 2.25rem; border-radius: .9rem; display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: rgba(41,194,229,.08); border: 1px solid rgba(41,194,229,.08); color: #29C2E5; } .mobile-action-icon svg { width: 1rem; height: 1rem; stroke-linecap: round; stroke-linejoin: round; } .mobile-action-card p { font-size: .85rem; font-weight: 900; color: #0f172a; line-height: 1.2; } .mobile-action-card small { display: block; margin-top: .25rem; font-size: .7rem; line-height: 1.45; color: #94a3b8; } .feature-section + .feature-section { padding-top: clamp(2.5rem, 5vw, 4rem); } .mobile-action-icon-gold { background: rgba(244,201,74,.10); border-color: rgba(244,201,74,.18); color: #b7791f; }