/* =============================================
   X4 Digital — Global Styles v3.1
   Dark premium tech · Space Grotesk · Electric
   Animation hooks for animation engine v3
   ============================================= */

@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=DM+Mono:wght@400;500&display=swap');

:root {
  --color-primary:       #00A3FF;
  --color-primary-dim:   rgba(0,163,255,0.15);
  --color-primary-glow:  rgba(0,163,255,0.35);
  --color-accent:        #00D4FF;
  --color-bg:            #0A0A0A;
  --color-surface:       #111111;
  --color-surface-2:     #161616;
  --color-surface-3:     #1E1E1E;
  --color-border:        #222222;
  --color-border-bright: #2D2D2D;
  --color-text:          #EDEDED;
  --color-text-secondary:#888888;
  --color-text-muted:    #555555;
  --font-display: 'Space Grotesk', system-ui, sans-serif;
  --font-body:    'Space Grotesk', system-ui, sans-serif;
  --font-mono:    'DM Mono', 'JetBrains Mono', monospace;
  --text-xs:    0.75rem;  --text-sm:   0.875rem; --text-base: 1rem;
  --text-lg:    1.125rem; --text-xl:   1.25rem;  --text-2xl:  1.5rem;
  --text-3xl:   2rem;     --text-4xl:  2.5rem;   --text-5xl:  3.5rem;
  --text-6xl:   4.5rem;   --text-7xl:  6rem;
  --space-1:  0.25rem;  --space-2:  0.5rem;   --space-3:  0.75rem;
  --space-4:  1rem;     --space-6:  1.5rem;   --space-8:  2rem;
  --space-12: 3rem;     --space-16: 4rem;     --space-24: 6rem; --space-32: 8rem;
  --radius-sm:  6px; --radius-md: 10px; --radius-lg: 16px;
  --radius-xl: 24px; --radius-full: 9999px;
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --transition-base: 0.25s var(--ease-out);
  --transition-slow: 0.5s var(--ease-out);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
body { font-family: var(--font-body); background: var(--color-bg); color: var(--color-text); font-size: var(--text-base); line-height: 1.7; overflow-x: hidden; }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; transition: color var(--transition-base); }
ul { list-style: none; }
button { cursor: pointer; border: none; background: none; font-family: inherit; }

/* ——— Layout ——— */
.container        { max-width: 1200px; margin: 0 auto; padding: 0 var(--space-6); }
.container-narrow { max-width: 760px;  margin: 0 auto; padding: 0 var(--space-6); }
.container-wide   { max-width: 1400px; margin: 0 auto; padding: 0 var(--space-6); }
.section    { padding: var(--space-24) 0; }
.section-sm { padding: var(--space-16) 0; }
@media (max-width: 768px) { .section { padding: var(--space-16) 0; } .section-sm { padding: var(--space-12) 0; } }

.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-6); }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-6); }
@media (max-width: 1024px) { .grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 768px)  { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } }

/* ——— Logo ——— */
.logo { font-family: var(--font-display); font-weight: 700; font-size: var(--text-xl); letter-spacing: -0.02em; display: inline-flex; align-items: center; transition: opacity var(--transition-base); }
.logo:hover { opacity: 0.85; }
.logo .logo-x4 { color: #FFFFFF; }
.logo .logo-digital { color: var(--color-primary); }

/* ——— Nav ——— */
.nav { position: fixed; top: 0; left: 0; right: 0; z-index: 1000; display: flex; align-items: center; justify-content: space-between; padding: 0 var(--space-8); height: 64px; border-bottom: 1px solid transparent; transition: background 0.4s var(--ease-out), border-color 0.4s var(--ease-out), backdrop-filter 0.4s; }
.nav.scrolled { background: rgba(10,10,10,0.88); border-color: var(--color-border); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); }
.nav-links { display: flex; align-items: center; gap: var(--space-8); }
.nav-links a { font-size: var(--text-sm); font-weight: 500; color: var(--color-text-secondary); transition: color var(--transition-base); position: relative; }
.nav-links a::after { content: ''; position: absolute; bottom: -2px; left: 0; right: 0; height: 1px; background: var(--color-primary); transform: scaleX(0); transition: transform 0.25s var(--ease-out); transform-origin: left; }
.nav-links a:hover { color: var(--color-text); }
.nav-links a:hover::after { transform: scaleX(1); }
.nav-right { display: flex; align-items: center; gap: var(--space-4); }
.nav-login { font-size: var(--text-sm); font-weight: 500; color: var(--color-text-secondary); transition: color var(--transition-base); }
.nav-login:hover { color: var(--color-text); }
.nav-hamburger { display: none; flex-direction: column; gap: 5px; padding: 4px; }
.nav-hamburger span { display: block; width: 22px; height: 2px; background: var(--color-text); border-radius: 2px; transition: transform 0.3s var(--ease-out), opacity 0.3s; }
.nav-mobile { display: none; position: fixed; top: 64px; left: 0; right: 0; background: rgba(10,10,10,0.97); border-bottom: 1px solid var(--color-border); padding: var(--space-6); z-index: 999; backdrop-filter: blur(20px); }
.nav-mobile.open { display: flex; flex-direction: column; gap: var(--space-4); }
.nav-mobile a { font-size: var(--text-base); font-weight: 500; color: var(--color-text-secondary); padding: var(--space-2) 0; border-bottom: 1px solid var(--color-border); transition: color var(--transition-base); }
.nav-mobile a:last-child { border-bottom: none; }
.nav-mobile a:hover { color: var(--color-text); }
@media (max-width: 768px) { .nav-links { display: none; } .nav-hamburger { display: flex; } }

/* ══════════════════════════════════════════
   BUTTONS — shimmer + spring + glow
   ══════════════════════════════════════════ */
.btn {
  display: inline-flex; align-items: center; gap: var(--space-2);
  padding: 0.75rem 1.75rem;
  border-radius: var(--radius-md);
  font-family: var(--font-display); font-weight: 600; font-size: var(--text-sm); letter-spacing: 0.01em;
  text-decoration: none; cursor: pointer;
  transition: transform 0.22s var(--ease-spring), box-shadow 0.22s var(--ease-out), background 0.2s, border-color 0.2s, color 0.2s;
  min-height: 44px; white-space: nowrap; position: relative; overflow: hidden; will-change: transform;
}
.btn-primary::before {
  content: ''; position: absolute; top: 0; left: -100%; width: 60%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.22), transparent);
  transform: skewX(-20deg); transition: left 0.5s var(--ease-out); pointer-events: none;
}
.btn-primary:hover::before { left: 160%; }
.btn-primary { background: var(--color-primary); color: #000; border: 1px solid var(--color-primary); }
.btn-primary:hover { background: var(--color-accent); border-color: var(--color-accent); transform: translateY(-3px) scale(1.01); box-shadow: 0 0 32px var(--color-primary-glow), 0 8px 24px rgba(0,0,0,0.4); color: #000; }
.btn-primary:active { transform: translateY(-1px) scale(0.99); box-shadow: 0 0 16px var(--color-primary-glow); }
.btn-ghost { background: transparent; color: var(--color-text); border: 1px solid var(--color-border-bright); }
.btn-ghost:hover { border-color: var(--color-text-secondary); background: var(--color-surface-2); transform: translateY(-2px); box-shadow: 0 4px 16px rgba(0,0,0,0.3); }
.btn-ghost:active { transform: translateY(0); }
.btn-large { padding: 1rem 2.25rem; font-size: var(--text-base); border-radius: var(--radius-lg); min-height: 52px; }
.btn-sm { padding: 0.5rem 1.25rem; font-size: var(--text-sm); min-height: 36px; }

/* ——— Tags ——— */
.tag { display: inline-flex; align-items: center; gap: var(--space-2); padding: 0.375rem 0.875rem; border-radius: var(--radius-full); font-size: var(--text-xs); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; transition: opacity var(--transition-base); }
.tag-primary { background: var(--color-primary-dim); color: var(--color-primary); border: 1px solid rgba(0,163,255,0.25); }
.tag-dot::before { content: ''; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--color-primary); box-shadow: 0 0 8px var(--color-primary); animation: pulseDot 2s ease-in-out infinite; }
@keyframes pulseDot { 0%, 100% { box-shadow: 0 0 6px var(--color-primary); } 50% { box-shadow: 0 0 14px var(--color-primary), 0 0 28px rgba(0,163,255,0.3); } }

.section-label { font-size: var(--text-xs); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-text-muted); margin-bottom: var(--space-4); }

.h-display { font-size: clamp(2.5rem, 5vw, var(--text-6xl)); font-weight: 700; line-height: 1.08; letter-spacing: -0.03em; }
.h-xl { font-size: clamp(2rem, 4vw, var(--text-5xl)); font-weight: 700; line-height: 1.1; letter-spacing: -0.025em; }
.h-lg { font-size: clamp(1.5rem, 3vw, var(--text-3xl)); font-weight: 600; line-height: 1.2; letter-spacing: -0.02em; }
.h-md { font-size: var(--text-xl); font-weight: 600; line-height: 1.3; letter-spacing: -0.01em; }

.text-gradient { background: linear-gradient(135deg, #FFFFFF 0%, var(--color-primary) 60%, var(--color-accent) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.text-blue { color: var(--color-primary); }
.divider { height: 1px; background: var(--color-border); margin: 0; }

/* ══════════════════════════════════════════
   CARDS — hover lift + glow + spotlight
   ══════════════════════════════════════════ */
.card {
  background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-8);
  transition: border-color 0.3s var(--ease-out), transform 0.35s var(--ease-spring), box-shadow 0.3s var(--ease-out);
  will-change: transform; position: relative; overflow: hidden;
}
.card:hover { border-color: var(--color-border-bright); transform: translateY(-5px) scale(1.01); box-shadow: 0 12px 40px rgba(0,0,0,0.5); }
.card-glow:hover { border-color: rgba(0,163,255,0.3); box-shadow: 0 0 0 1px rgba(0,163,255,0.1), 0 0 40px rgba(0,163,255,0.12), 0 12px 40px rgba(0,0,0,0.5); transform: translateY(-5px) scale(1.01); }

/* Spotlight glow (JS driven via CSS vars) */
.card::before, .pricing-card::before, .step-card::before, .feature-card-sm::before, .aff-step::before, .qa-card::before {
  content: '';
  position: absolute; inset: 0; border-radius: inherit;
  background: radial-gradient(circle 180px at var(--sx, 50%) var(--sy, 50%), rgba(0,163,255,0.07), transparent 70%);
  opacity: var(--so, 0);
  transition: opacity 0.3s;
  pointer-events: none; z-index: 0;
}

/* card inner glow on hover */
.card::after, .pricing-card::after, .step-card::after {
  content: '';
  position: absolute; inset: 0; border-radius: inherit;
  background: radial-gradient(circle at 50% 0%, rgba(0,163,255,0.05) 0%, transparent 60%);
  opacity: 0; transition: opacity 0.4s var(--ease-out); pointer-events: none;
}
.card:hover::after, .pricing-card:hover::after, .step-card:hover::after { opacity: 1; }

.stat-pill { display: inline-flex; align-items: center; gap: var(--space-3); padding: 0.625rem 1.25rem; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-full); font-size: var(--text-sm); white-space: nowrap; transition: border-color 0.3s, box-shadow 0.3s, transform 0.3s var(--ease-spring); }
.stat-pill:hover { border-color: rgba(0,163,255,0.25); box-shadow: 0 0 20px rgba(0,163,255,0.08); transform: translateY(-2px); }
.stat-pill strong { color: var(--color-primary); font-weight: 700; font-variant-numeric: tabular-nums; }
.stat-pill span { color: var(--color-text-secondary); }

.glow-orb { position: absolute; border-radius: 50%; filter: blur(80px); pointer-events: none; z-index: 0; }

/* ══════════════════════════════════════════
   REVEAL — IntersectionObserver driven
   ══════════════════════════════════════════ */
.reveal { opacity: 0; transform: translateY(36px); transition: opacity 0.75s var(--ease-out), transform 0.75s var(--ease-out); will-change: opacity, transform; }
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 0.1s; }
.reveal-delay-2 { transition-delay: 0.22s; }
.reveal-delay-3 { transition-delay: 0.34s; }
.reveal-delay-4 { transition-delay: 0.46s; }
.reveal-left  { opacity: 0; transform: translateX(-40px); transition: opacity 0.7s var(--ease-out), transform 0.7s var(--ease-out); }
.reveal-left.visible  { opacity: 1; transform: translateX(0); }
.reveal-right { opacity: 0; transform: translateX(40px);  transition: opacity 0.7s var(--ease-out), transform 0.7s var(--ease-out); }
.reveal-right.visible { opacity: 1; transform: translateX(0); }
.reveal-scale { opacity: 0; transform: scale(0.93) translateY(20px); transition: opacity 0.7s var(--ease-out), transform 0.7s var(--ease-spring); }
.reveal-scale.visible { opacity: 1; transform: scale(1) translateY(0); }

/* ══════════════════════════════════════════
   STAGGER — children animate in sequence
   ══════════════════════════════════════════ */
.stagger > * { opacity: 0; transform: translateY(28px); transition: opacity 0.6s var(--ease-out), transform 0.6s var(--ease-out); will-change: opacity, transform; }
.stagger.visible > *:nth-child(1)  { opacity: 1; transform: translateY(0); transition-delay: 0s; }
.stagger.visible > *:nth-child(2)  { opacity: 1; transform: translateY(0); transition-delay: 0.09s; }
.stagger.visible > *:nth-child(3)  { opacity: 1; transform: translateY(0); transition-delay: 0.18s; }
.stagger.visible > *:nth-child(4)  { opacity: 1; transform: translateY(0); transition-delay: 0.27s; }
.stagger.visible > *:nth-child(5)  { opacity: 1; transform: translateY(0); transition-delay: 0.36s; }
.stagger.visible > *:nth-child(6)  { opacity: 1; transform: translateY(0); transition-delay: 0.45s; }
.stagger.visible > *:nth-child(7)  { opacity: 1; transform: translateY(0); transition-delay: 0.54s; }
.stagger.visible > *:nth-child(8)  { opacity: 1; transform: translateY(0); transition-delay: 0.63s; }
.stagger.visible > *:nth-child(9)  { opacity: 1; transform: translateY(0); transition-delay: 0.72s; }

/* ══════════════════════════════════════════
   PROCESS ROW ANIMATION
   ══════════════════════════════════════════ */
.process-row { opacity: 0; transform: translateY(44px); transition: opacity 0.8s var(--ease-out), transform 0.8s var(--ease-out); will-change: opacity, transform; }
.process-row.visible { opacity: 1; transform: translateY(0); }
.process-row:nth-child(even).visible { transition-delay: 0.12s; }
.process-visual { transition: border-color 0.35s var(--ease-out), box-shadow 0.35s var(--ease-out), transform 0.45s var(--ease-spring); will-change: transform; }
.process-row:hover .process-visual { border-color: rgba(0,163,255,0.22); box-shadow: 0 20px 64px rgba(0,0,0,0.55); transform: translateY(-5px); }

/* ——— Count-up glow ——— */
.counting { color: var(--color-primary) !important; text-shadow: 0 0 32px rgba(0,163,255,0.5); }
[data-count] { font-variant-numeric: tabular-nums; transition: color 0.3s; }

/* ——— Footer ——— */
footer { background: var(--color-bg); border-top: 1px solid var(--color-border); padding: var(--space-16) 0 var(--space-8); }
.footer-grid { display: grid; grid-template-columns: 1.5fr repeat(3, 1fr); gap: var(--space-12); margin-bottom: var(--space-12); }
.footer-brand p { font-size: var(--text-sm); color: var(--color-text-secondary); margin-top: var(--space-4); max-width: 260px; line-height: 1.7; }
.footer-col h4 { font-size: var(--text-xs); font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-text-muted); margin-bottom: var(--space-4); }
.footer-col ul { display: flex; flex-direction: column; gap: var(--space-3); }
.footer-col a { font-size: var(--text-sm); color: var(--color-text-secondary); transition: color var(--transition-base), transform var(--transition-base); display: inline-block; }
.footer-col a:hover { color: var(--color-text); transform: translateX(3px); }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; padding-top: var(--space-8); border-top: 1px solid var(--color-border); font-size: var(--text-xs); color: var(--color-text-muted); }
@media (max-width: 768px) { .footer-grid { grid-template-columns: 1fr 1fr; gap: var(--space-8); } .footer-bottom { flex-direction: column; gap: var(--space-3); text-align: center; } }
@media (max-width: 480px) { .footer-grid { grid-template-columns: 1fr; } }

/* ——— Images ——— */
img { opacity: 0; transition: opacity 0.5s var(--ease-out); }
img.loaded { opacity: 1; }

.mono { font-family: var(--font-mono); font-size: 0.9em; color: var(--color-primary); }
.progress-line { height: 2px; background: linear-gradient(90deg, var(--color-primary), var(--color-accent)); border-radius: var(--radius-full); }
.scroll-row { display: flex; gap: var(--space-4); overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; padding-bottom: var(--space-2); }
.scroll-row::-webkit-scrollbar { display: none; }

/* ——— Feature icon ——— */
.feature-icon { width: 44px; height: 44px; border-radius: var(--radius-md); background: var(--color-primary-dim); border: 1px solid rgba(0,163,255,0.2); display: flex; align-items: center; justify-content: center; margin-bottom: var(--space-4); font-size: 1.25rem; transition: background 0.3s, border-color 0.3s, transform 0.35s var(--ease-spring), box-shadow 0.3s; }
.card:hover .feature-icon, .feature-card-sm:hover .feature-icon { background: rgba(0,163,255,0.22); border-color: rgba(0,163,255,0.4); transform: scale(1.1) rotate(4deg); box-shadow: 0 0 16px rgba(0,163,255,0.2); }

/* ══════════════════════════════════════════
   PRICING CARDS
   ══════════════════════════════════════════ */
.pricing-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-xl); padding: var(--space-8); position: relative; overflow: hidden; transition: border-color 0.3s var(--ease-out), box-shadow 0.3s var(--ease-out), transform 0.35s var(--ease-spring); will-change: transform; }
.pricing-card:hover { transform: translateY(-8px) scale(1.01); box-shadow: 0 24px 64px rgba(0,0,0,0.5); }
.pricing-card.featured { border-color: var(--color-primary); box-shadow: 0 0 40px rgba(0,163,255,0.12); }
.pricing-card.featured:hover { box-shadow: 0 0 60px rgba(0,163,255,0.22), 0 24px 64px rgba(0,0,0,0.5); }
.pricing-card.featured::after { content: 'Most Popular'; position: absolute; top: -13px; left: 50%; transform: translateX(-50%); background: var(--color-primary); color: #000; font-size: var(--text-xs); font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; padding: 0.25rem 1rem; border-radius: var(--radius-full); }
.pricing-price { font-size: var(--text-5xl); font-weight: 700; letter-spacing: -0.04em; line-height: 1; margin: var(--space-4) 0 var(--space-2); }
.pricing-price sup { font-size: var(--text-2xl); vertical-align: top; margin-top: 0.5rem; }
.pricing-price sub { font-size: var(--text-sm); color: var(--color-text-secondary); font-weight: 400; letter-spacing: 0; }
.pricing-features { margin: var(--space-6) 0; display: flex; flex-direction: column; gap: var(--space-3); }
.pricing-feature { display: flex; align-items: flex-start; gap: var(--space-3); font-size: var(--text-sm); color: var(--color-text-secondary); transition: color var(--transition-base); }
.pricing-feature::before { content: '✓'; color: var(--color-primary); font-weight: 700; flex-shrink: 0; margin-top: 1px; }
.pricing-card:hover .pricing-feature { color: var(--color-text); }

/* ——— FAQ ——— */
.faq-item { border-bottom: 1px solid var(--color-border); }
.faq-question { display: flex; align-items: center; justify-content: space-between; padding: var(--space-6) 0; font-size: var(--text-base); font-weight: 500; color: var(--color-text); cursor: pointer; transition: color var(--transition-base); gap: var(--space-4); }
.faq-question:hover { color: var(--color-primary); }
.faq-icon { width: 24px; height: 24px; border: 1px solid var(--color-border-bright); border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 14px; transition: transform 0.35s var(--ease-spring), border-color 0.2s, color 0.2s; }
.faq-item.open .faq-icon { transform: rotate(45deg); border-color: var(--color-primary); color: var(--color-primary); }
.faq-answer { max-height: 0; overflow: hidden; transition: max-height 0.4s var(--ease-out); }
.faq-answer-inner { padding-bottom: var(--space-6); font-size: var(--text-sm); color: var(--color-text-secondary); line-height: 1.8; }

/* ——— Step / Timeline ——— */
.step-row { display: grid; grid-template-columns: 56px 1fr; gap: var(--space-6); position: relative; }
.step-number { width: 48px; height: 48px; border-radius: 50%; background: var(--color-primary-dim); border: 1px solid rgba(0,163,255,0.3); display: flex; align-items: center; justify-content: center; font-size: var(--text-xl); font-weight: 700; color: var(--color-primary); flex-shrink: 0; transition: background 0.3s, box-shadow 0.3s, transform 0.35s var(--ease-spring); }
.step-row:hover .step-number { background: rgba(0,163,255,0.25); box-shadow: 0 0 24px rgba(0,163,255,0.3); transform: scale(1.1); }
.step-connector { width: 1px; background: linear-gradient(to bottom, rgba(0,163,255,0.3), transparent); margin: 0 auto; height: var(--space-12); }

/* ——— Table ——— */
table { width: 100%; border-collapse: collapse; }
th, td { padding: var(--space-4) var(--space-6); text-align: left; border-bottom: 1px solid var(--color-border); }
th { font-size: var(--text-xs); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-text-muted); }
td { font-size: var(--text-sm); color: var(--color-text-secondary); transition: color var(--transition-base); }
tr { transition: background var(--transition-base); }
tr:hover td { background: var(--color-surface-2); color: var(--color-text); }

/* ——— Form ——— */
.form-input, .form-textarea, .form-select { width: 100%; padding: 0.75rem 1rem; background: var(--color-surface-2); border: 1px solid var(--color-border); border-radius: var(--radius-md); color: var(--color-text); font-family: var(--font-body); font-size: var(--text-base); transition: border-color 0.2s, box-shadow 0.2s; min-height: 44px; -webkit-appearance: none; }
.form-input:focus, .form-textarea:focus, .form-select:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(0,163,255,0.1); }
.form-input::placeholder, .form-textarea::placeholder { color: var(--color-text-muted); }
.form-textarea { min-height: 140px; resize: vertical; }

/* ——— Utility ——— */
.text-center { text-align: center; } .text-right { text-align: right; }
.flex { display: flex; } .flex-col { flex-direction: column; }
.items-center { align-items: center; } .justify-between { justify-content: space-between; }
.gap-2 { gap: var(--space-2); } .gap-4 { gap: var(--space-4); } .gap-6 { gap: var(--space-6); } .gap-8 { gap: var(--space-8); }
.mt-2 { margin-top: var(--space-2); } .mt-4 { margin-top: var(--space-4); } .mt-6 { margin-top: var(--space-6); } .mt-8 { margin-top: var(--space-8); }
.mb-4 { margin-bottom: var(--space-4); } .mb-6 { margin-bottom: var(--space-6); } .mb-8 { margin-bottom: var(--space-8); }
.w-full { width: 100%; } .relative { position: relative; } .overflow-hidden { overflow: hidden; }

/* ——— Page hero ——— */
.page-hero { padding: calc(64px + var(--space-16)) 0 var(--space-16); border-bottom: 1px solid var(--color-border); position: relative; overflow: hidden; }
.page-hero-glow { position: absolute; width: 700px; height: 500px; top: -100px; left: 50%; transform: translateX(-50%); background: radial-gradient(ellipse, rgba(0,163,255,0.09) 0%, transparent 65%); pointer-events: none; animation: glowPulse 4s ease-in-out infinite; }
.page-hero::after { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse 60% 40% at 20% 50%, rgba(0,163,255,0.04) 0%, transparent 60%), radial-gradient(ellipse 40% 60% at 80% 30%, rgba(0,212,255,0.03) 0%, transparent 60%); pointer-events: none; animation: heroMeshShift 8s ease-in-out infinite alternate; }
@keyframes glowPulse { 0%, 100% { opacity: 0.7; transform: translateX(-50%) scale(1); } 50% { opacity: 1; transform: translateX(-50%) scale(1.06); } }
@keyframes heroMeshShift { 0% { opacity: 0.6; transform: scale(1) translateY(0); } 100% { opacity: 1; transform: scale(1.04) translateY(-8px); } }

.dot-grid { background-image: radial-gradient(circle, rgba(255,255,255,0.04) 1px, transparent 1px); background-size: 28px 28px; }

/* ——— Scroll progress ——— */
#scrollProgress { position: fixed; top: 0; left: 0; height: 2px; background: linear-gradient(90deg, var(--color-primary), var(--color-accent)); z-index: 9999; width: 0%; transition: width 0.08s linear; border-radius: 0 var(--radius-full) var(--radius-full) 0; box-shadow: 0 0 10px var(--color-primary-glow); }

/* ——— Particle canvas ——— */
#heroParticles { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; }

/* ——— Mesh orbs ——— */
.mesh-orb { position: absolute; border-radius: 50%; filter: blur(70px); pointer-events: none; will-change: transform; }
.mesh-orb-1 { width: 520px; height: 420px; background: radial-gradient(ellipse, rgba(0,163,255,0.15) 0%, transparent 70%); top: 30%; left: 25%; animation: orbFloat1 18s ease-in-out infinite; }
.mesh-orb-2 { width: 420px; height: 360px; background: radial-gradient(ellipse, rgba(0,212,255,0.09) 0%, transparent 70%); top: 8%;  left: 58%; animation: orbFloat2 22s ease-in-out infinite; }
.mesh-orb-3 { width: 360px; height: 320px; background: radial-gradient(ellipse, rgba(0,163,255,0.07) 0%, transparent 70%); top: 58%; left: 8%;  animation: orbFloat3 26s ease-in-out infinite; }
@keyframes orbFloat1 { 0%, 100% { transform: translate(0,0) scale(1); } 25% { transform: translate(40px,-30px) scale(1.05); } 50% { transform: translate(-20px,40px) scale(0.97); } 75% { transform: translate(30px,20px) scale(1.03); } }
@keyframes orbFloat2 { 0%, 100% { transform: translate(0,0) scale(1); } 33% { transform: translate(-50px,30px) scale(1.04); } 66% { transform: translate(30px,-40px) scale(0.96); } }
@keyframes orbFloat3 { 0%, 100% { transform: translate(0,0) scale(1); } 40% { transform: translate(60px,-20px) scale(1.06); } 70% { transform: translate(-30px,50px) scale(0.95); } }

/* ——— Typing indicator ——— */
.typing-indicator { display: flex; gap: 4px; padding: var(--space-2) var(--space-3); background: var(--color-surface-3); border-radius: var(--radius-md); }
.typing-indicator span { width: 6px; height: 6px; border-radius: 50%; background: var(--color-text-muted); animation: typing 1.2s infinite; }
.typing-indicator span:nth-child(2) { animation-delay: 0.2s; }
.typing-indicator span:nth-child(3) { animation-delay: 0.4s; }
@keyframes typing { 0%, 80%, 100% { opacity: 0.3; transform: scale(0.8); } 40% { opacity: 1; transform: scale(1); } }

.dot-doing { background: var(--color-primary); box-shadow: 0 0 6px var(--color-primary); animation: pulseDotProg 1s infinite; }
@keyframes pulseDotProg { 0%, 100% { opacity: 1; box-shadow: 0 0 8px var(--color-primary); } 50% { opacity: 0.4; box-shadow: 0 0 2px var(--color-primary); } }

/* ——— Step card hover ——— */
.step-card { transition: border-color 0.3s var(--ease-out), transform 0.4s var(--ease-spring), box-shadow 0.3s var(--ease-out); will-change: transform; position: relative; overflow: hidden; }
.step-card:hover { transform: translateY(-8px) scale(1.02); border-color: rgba(0,163,255,0.35); box-shadow: 0 0 0 1px rgba(0,163,255,0.12), 0 20px 56px rgba(0,0,0,0.55); }
.step-card .step-num { transition: background 0.3s, box-shadow 0.35s, transform 0.4s var(--ease-spring); }
.step-card:hover .step-num { background: rgba(0,163,255,0.28); box-shadow: 0 0 28px rgba(0,163,255,0.35); transform: scale(1.12); }

/* ——— Example card hover ——— */
.example-item, .example-card { transition: border-color 0.3s var(--ease-out), transform 0.4s var(--ease-spring), box-shadow 0.4s var(--ease-out); will-change: transform; }
.example-item:hover, .example-card:hover { border-color: rgba(0,163,255,0.35); transform: translateY(-7px) scale(1.01); box-shadow: 0 18px 56px rgba(0,0,0,0.55); }

/* ——— Feature card hover ——— */
.feature-card-sm { transition: border-color 0.3s var(--ease-out), transform 0.4s var(--ease-spring), box-shadow 0.3s var(--ease-out); will-change: transform; position: relative; overflow: hidden; }
.feature-card-sm:hover { border-color: rgba(0,163,255,0.32); transform: translateY(-5px) scale(1.01); box-shadow: 0 0 36px rgba(0,163,255,0.08), 0 14px 40px rgba(0,0,0,0.45); }
.feature-main { transition: border-color 0.3s var(--ease-out), box-shadow 0.3s; }
.feature-main:hover { border-color: rgba(0,163,255,0.35); box-shadow: 0 0 40px rgba(0,163,255,0.06); }

/* ——— Stat block ——— */
.stat-block { transition: background 0.3s, box-shadow 0.3s; }
.stat-block:hover { background: var(--color-surface-2); box-shadow: inset 0 0 24px rgba(0,163,255,0.06); }
.stat-block .big-num { transition: color 0.3s, text-shadow 0.3s; display: block; }
.stat-block:hover .big-num { text-shadow: 0 0 36px rgba(0,163,255,0.45); }

/* ——— Affiliate step hover ——— */
.aff-step { transition: border-color 0.3s var(--ease-out), transform 0.4s var(--ease-spring), box-shadow 0.3s var(--ease-out); will-change: transform; position: relative; overflow: hidden; }
.aff-step:hover { border-color: rgba(0,163,255,0.28); transform: translateY(-5px) scale(1.01); box-shadow: 0 14px 40px rgba(0,0,0,0.45); }

/* ——— QA cards ——— */
.qa-card { transition: border-color 0.3s var(--ease-out), transform 0.4s var(--ease-spring), box-shadow 0.3s; will-change: transform; position: relative; overflow: hidden; }
.qa-card:hover { border-color: rgba(0,163,255,0.28); transform: translateY(-5px) scale(1.01); box-shadow: 0 14px 40px rgba(0,0,0,0.45); }

/* ——— Calc slider ——— */
.calc-slider { -webkit-appearance: none; width: 100%; height: 4px; background: var(--color-border-bright); border-radius: var(--radius-full); outline: none; cursor: pointer; transition: background 0.2s; }
.calc-slider:hover { background: rgba(0,163,255,0.28); }
.calc-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: var(--color-primary); box-shadow: 0 0 12px var(--color-primary-glow); cursor: pointer; transition: box-shadow 0.2s, transform 0.2s var(--ease-spring); }
.calc-slider::-webkit-slider-thumb:hover { box-shadow: 0 0 24px var(--color-primary-glow); transform: scale(1.18); }

/* ——— Join CTA shimmer border ——— */
.join-cta-box::after { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, transparent, var(--color-primary), var(--color-accent), transparent); background-size: 200% 100%; animation: shimmerBorder 3s linear infinite; }
@keyframes shimmerBorder { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* ——— Filter btn ——— */
.filter-btn { transition: border-color 0.2s, color 0.2s, background 0.2s, transform 0.2s var(--ease-spring); }
.filter-btn:hover { border-color: var(--color-border-bright); color: var(--color-text); transform: translateY(-1px); }
.filter-btn.active { background: var(--color-primary-dim); border-color: rgba(0,163,255,0.35); color: var(--color-primary); }

/* ——— Commission big num ——— */
@keyframes bigNumIn { from { opacity: 0; transform: scale(0.82) translateY(24px); } to { opacity: 1; transform: scale(1) translateY(0); } }

section { transition: background 0.4s var(--ease-out); }
