/**
 * Landing & public pages — scroll reveal + decorative dot motion
 * Scoped to body.bs-theme only (not admin / user dashboard)
 */

@media (prefers-reduced-motion: reduce) {
    body.bs-theme .bs-anim-el,
    body.bs-theme .bs-adv-dot,
    body.bs-theme .bs-contact-dot,
    body.bs-theme .bs-live-dot,
    body.bs-theme .bs-page-deco .bs-adv-dot,
    body.bs-theme .bs-chart-grid-dots circle,
    body.bs-theme .bs-svg-arc,
    body.bs-theme .bs-svg-curve,
    body.bs-theme .bs-svg-ref-line,
    body.bs-theme .bs-map-hub-pulse,
    body.bs-theme .bs-ref-you {
        animation: none !important;
        transition: none !important;
        opacity: 1 !important;
        transform: none !important;
        stroke-dashoffset: 0 !important;
    }
}

/* ─── Scroll reveal ─── */
body.bs-theme .bs-anim-el {
    opacity: 0;
    transition:
        opacity 0.75s cubic-bezier(0.22, 1, 0.36, 1),
        transform 0.75s cubic-bezier(0.22, 1, 0.36, 1);
    will-change: opacity, transform;
}

body.bs-theme .bs-anim-el.bs-from-left  { transform: translateX(-52px); }
body.bs-theme .bs-anim-el.bs-from-right { transform: translateX(52px); }
body.bs-theme .bs-anim-el.bs-from-top   { transform: translateY(-44px); }
body.bs-theme .bs-anim-el.bs-from-bottom { transform: translateY(44px); }
body.bs-theme .bs-anim-el.bs-from-fade  { transform: scale(0.96); }

body.bs-theme .bs-anim-el.bs-anim-visible {
    opacity: 1;
    transform: translate(0, 0) scale(1);
}

/* ─── Navbar entrance ─── */
body.bs-theme .bs-nav-wrap {
    animation: bsNavDrop 0.65s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@media (max-width: 991px) {
    body.bs-theme .bs-nav-wrap {
        animation: none;
    }

    body.bs-theme .bs-nav-links li,
    body.bs-theme .bs-nav-actions > * {
        animation: none;
    }
}

body.bs-theme .bs-nav-links li {
    animation: bsNavItemIn 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;
}

body.bs-theme .bs-nav-actions > * {
    animation: bsNavItemIn 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes bsNavDrop {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@keyframes bsNavItemIn {
    from { opacity: 0; transform: translateY(-10px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ─── Hero lines stagger ─── */
body.bs-theme .bs-hero-line {
    display: block;
    animation: bsHeroLineIn 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}

body.bs-theme .bs-hero-subtitle {
    animation: bsHeroLineIn 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.35s both;
}

@keyframes bsHeroLineIn {
    from { opacity: 0; transform: translateX(-36px); }
    to   { opacity: 1; transform: translateX(0); }
}

body.bs-theme .bs-hero-chart {
    animation: bsHeroChartIn 0.9s cubic-bezier(0.22, 1, 0.36, 1) 0.2s both;
}

@keyframes bsHeroChartIn {
    from { opacity: 0; transform: translateX(40px) scale(0.97); }
    to   { opacity: 1; transform: translateX(0) scale(1); }
}

/* ─── Decorative dots pulse / float ─── */
body.bs-theme .bs-dot-anim {
    animation: bsDotPulse 3s ease-in-out infinite;
}

body.bs-theme .bs-dot-float {
    animation: bsDotFloat 4.5s ease-in-out infinite;
}

@keyframes bsDotPulse {
    0%, 100% {
        opacity: 0.45;
        box-shadow: 0 0 8px rgba(255, 79, 26, 0.45), 0 0 16px rgba(255, 79, 26, 0.2);
    }
    50% {
        opacity: 1;
        box-shadow: 0 0 14px rgba(255, 79, 26, 1), 0 0 32px rgba(255, 79, 26, 0.55);
    }
}

@keyframes bsDotFloat {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-10px); }
}

/* Hero chart grid dots */
body.bs-theme .bs-chart-grid-dots circle {
    animation: bsChartDotBlink 3.5s ease-in-out infinite;
}

@keyframes bsChartDotBlink {
    0%, 100% { opacity: 0.08; }
    50%      { opacity: 0.35; }
}

/* SVG curve draw feel on section enter */
body.bs-theme .bs-adv-curve,
body.bs-theme .bs-why-curves {
    animation: bsCurveFade 1.2s ease-out both;
}

@keyframes bsCurveFade {
    from { opacity: 0; transform: scale(0.98); }
    to   { opacity: 1; transform: scale(1); }
}

/* Inner page hero */
body.bs-theme .bs-page-hero .bs-label,
body.bs-theme .bs-page-hero .bs-title {
    animation: bsPageHeroIn 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}

body.bs-theme .bs-page-hero .bs-title {
    animation-delay: 0.12s;
}

@keyframes bsPageHeroIn {
    from { opacity: 0; transform: translateY(28px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Footer subtle rise */
body.bs-theme .bs-footer-grid > * {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

body.bs-theme .bs-footer-grid.bs-anim-visible > *,
body.bs-theme .bs-footer-grid > *.bs-anim-visible {
    opacity: 1;
    transform: translateY(0);
}

/* ─── Decorative section backgrounds ─── */
body.bs-theme .bs-page-hero,
body.bs-theme .bs-contact-hero {
    position: relative;
    overflow: hidden;
}

body.bs-theme .bs-page-deco {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}

body.bs-theme .bs-page-hero .container,
body.bs-theme .bs-contact-hero .bs-full-wrap {
    position: relative;
    z-index: 1;
}

body.bs-theme .bs-advantage-deco,
body.bs-theme .bs-perf-deco,
body.bs-theme .bs-live-deco,
body.bs-theme .bs-steps-deco,
body.bs-theme .bs-why-deco,
body.bs-theme .bs-page-deco,
body.bs-theme .bs-contact-hero-bg {
    pointer-events: none;
}

body.bs-theme .bs-section-deco-active .bs-advantage-deco,
body.bs-theme .bs-section-deco-active .bs-perf-deco,
body.bs-theme .bs-section-deco-active .bs-live-deco,
body.bs-theme .bs-section-deco-active .bs-steps-deco,
body.bs-theme .bs-section-deco-active .bs-why-deco,
body.bs-theme .bs-section-deco-active .bs-page-deco {
    animation: bsDecoFadeIn 1.1s ease-out both;
}

@keyframes bsDecoFadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/* ─── World map arcs & hubs (Global / Referral bg) ─── */
body.bs-theme .bs-svg-arc {
    stroke-dasharray: 8 14;
    animation: bsArcFlow 5.5s linear infinite;
}

body.bs-theme .bs-map-hub-pulse {
    animation: bsMapHubPulse 3.2s ease-in-out infinite;
    transform-origin: center;
    transform-box: fill-box;
}

body.bs-theme .bs-map-spark {
    animation: bsMapSpark 2.8s ease-in-out infinite;
}

@keyframes bsArcFlow {
    0%   { stroke-dashoffset: 36; opacity: 0.18; }
    50%  { stroke-dashoffset: 0;  opacity: 0.42; }
    100% { stroke-dashoffset: -36; opacity: 0.18; }
}

@keyframes bsMapHubPulse {
    0%, 100% {
        opacity: 0.75;
        transform: scale(1);
    }
    50% {
        opacity: 1;
        transform: scale(1.12);
    }
}

@keyframes bsMapSpark {
    0%, 100% { opacity: 0.35; }
    50%      { opacity: 0.85; }
}

/* ─── Referral tree lines + YOU node ─── */
body.bs-theme .bs-svg-ref-line {
    stroke-dasharray: 5 8;
    animation: bsRefLineFlow 3.2s ease-in-out infinite;
}

body.bs-theme .bs-ref-you {
    animation: bsRefYouGlow 3.5s ease-in-out infinite;
}

@keyframes bsRefLineFlow {
    0%   { stroke-dashoffset: 24; opacity: 0.35; }
    50%  { stroke-dashoffset: 0;  opacity: 0.75; }
    100% { stroke-dashoffset: -24; opacity: 0.35; }
}

@keyframes bsRefYouGlow {
    0%, 100% {
        box-shadow: 0 0 20px rgba(255, 79, 26, 0.35);
        border-color: rgba(255, 79, 26, 0.85);
    }
    50% {
        box-shadow: 0 0 36px rgba(255, 79, 26, 0.65);
        border-color: #ff4f1a;
    }
}

/* ─── Section curve SVGs (About, Why, Live) ─── */
body.bs-theme .bs-svg-curve {
    animation: bsCurveShimmer 4.8s ease-in-out infinite;
}

@keyframes bsCurveShimmer {
    0%, 100% { opacity: 0.22; }
    50%      { opacity: 0.48; }
}

/* ─── Live / contact status dots ─── */
body.bs-theme .bs-live-dot,
body.bs-theme .bs-contact-dot,
body.bs-theme .bs-contact-online-dot {
    animation: bsStatusDotPulse 2.2s ease-in-out infinite;
}

body.bs-theme .bs-contact-online-glow {
    animation: bsOnlineGlow 3s ease-in-out infinite;
}

@keyframes bsStatusDotPulse {
    0%, 100% {
        opacity: 0.55;
        box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.35);
    }
    50% {
        opacity: 1;
        box-shadow: 0 0 0 6px rgba(34, 197, 94, 0);
    }
}

@keyframes bsOnlineGlow {
    0%, 100% { opacity: 0.35; transform: scale(1); }
    50%      { opacity: 0.7;  transform: scale(1.08); }
}

/* ─── Cards / partner logos subtle float on hover ─── */
body.bs-theme .bs-advantage-card,
body.bs-theme .bs-step-card,
body.bs-theme .bs-why-item,
body.bs-theme .bs-ref-stat-row,
body.bs-theme .bs-gp-item,
body.bs-theme .bs-contact-kb-item {
    transition: transform 0.35s ease, box-shadow 0.35s ease, border-color 0.35s ease;
}

body.bs-theme .bs-advantage-card:hover,
body.bs-theme .bs-step-card:hover,
body.bs-theme .bs-why-item:hover {
    transform: translateY(-4px);
}

body.bs-theme .bs-gp-item {
    animation: bsPartnerFloat 6s ease-in-out infinite;
}

@keyframes bsPartnerFloat {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-3px); }
}

body.bs-theme .bs-hero-stat-icon,
body.bs-theme .bs-why-outline-icon,
body.bs-theme .bs-perf-outline-icon {
    transition: box-shadow 0.35s ease, transform 0.35s ease;
}

body.bs-theme .bs-why-item:hover .bs-why-outline-icon,
body.bs-theme .bs-advantage-card:hover .bs-adv-icon,
body.bs-theme .bs-ref-stat-row:hover .bs-why-outline-icon {
    box-shadow: 0 0 18px rgba(255, 79, 26, 0.28);
    transform: translateY(-2px);
}
