/* ============================================================
   Selma — landing FX stack (shared CSS)
   Подключается в index.html и learn-more.html. Содержит motion-
   эффекты которые делают лендинги «живыми». Вместе с signatureFX.css
   (6 wow-эффектов от Claude Design) даёт полный motion-набор.
   ============================================================ */

/* Animated mesh gradient blobs (hero background) */
.mesh-blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(100px);
    opacity: 0.35;
    mix-blend-mode: screen;
    pointer-events: none;
}
.mesh-blob.b1 { background: radial-gradient(circle, #818cf8, transparent 70%); animation: drift1 18s ease-in-out infinite; }
.mesh-blob.b2 { background: radial-gradient(circle, #06b6d4, transparent 70%); animation: drift2 22s ease-in-out infinite; }
.mesh-blob.b3 { background: radial-gradient(circle, #ec4899, transparent 70%); animation: drift3 26s ease-in-out infinite; opacity: 0.25; }
@keyframes drift1 {
    0%, 100% { transform: translate(0, 0) scale(1); }
    33%      { transform: translate(60px, -40px) scale(1.1); }
    66%      { transform: translate(-30px, 50px) scale(0.95); }
}
@keyframes drift2 {
    0%, 100% { transform: translate(0, 0) scale(1); }
    50%      { transform: translate(-70px, 60px) scale(1.15); }
}
@keyframes drift3 {
    0%, 100% { transform: translate(0, 0) scale(1); }
    40%      { transform: translate(50px, 80px) scale(0.9); }
    80%      { transform: translate(-60px, -40px) scale(1.05); }
}

/* Aurora divider между секциями */
.aurora-divider {
    height: 1px;
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(129, 140, 248, 0.5) 30%,
        rgba(6, 182, 212, 0.5) 50%,
        rgba(236, 72, 153, 0.5) 70%,
        transparent 100%);
    background-size: 200% 100%;
    animation: aurora-flow 8s ease-in-out infinite;
    margin: 0 10%;
}
@keyframes aurora-flow {
    0%, 100% { background-position: 0% 50%; }
    50%      { background-position: 100% 50%; }
}

/* Scroll progress bar */
.scroll-progress {
    position: fixed; top: 0; left: 0; height: 3px;
    background: linear-gradient(90deg, #818cf8, #06b6d4, #ec4899);
    z-index: 9999;
    width: 0%;
    box-shadow: 0 0 12px rgba(129,140,248,0.6);
    transition: width 0.05s linear;
}

/* Typed-rotation cursor */
.type-rotate {
    display: inline-block;
    border-right: 2px solid #06b6d4;
    padding-right: 2px;
    animation: blink 0.8s steps(1) infinite;
    white-space: nowrap;
}
@keyframes blink {
    50% { border-right-color: transparent; }
}

/* Magnetic CTA — glow follows hover */
.magnetic-cta {
    position: relative;
    overflow: hidden;
}
.magnetic-cta::before {
    content: '';
    position: absolute; inset: 0;
    background: radial-gradient(circle at var(--mx, 50%) var(--my, 50%),
        rgba(255,255,255,0.25) 0%, transparent 50%);
    opacity: 0; transition: opacity 0.3s;
    pointer-events: none;
}
.magnetic-cta:hover::before { opacity: 1; }

/* Card glow trail на hover */
.glass-card, .action-card {
    position: relative;
}
.glass-card::after, .action-card::after {
    content: '';
    position: absolute; inset: 0; border-radius: inherit;
    background: radial-gradient(400px circle at var(--mx, -100%) var(--my, -100%),
        rgba(129,140,248,0.12), transparent 40%);
    opacity: 0; transition: opacity 0.3s;
    pointer-events: none;
}
.glass-card:hover::after, .action-card:hover::after { opacity: 1; }

/* Section reveal */
.reveal { opacity: 0; transform: translateY(30px); transition: opacity 0.8s ease, transform 0.8s ease; }
.reveal.visible { opacity: 1; transform: translateY(0); }

/* CTA button pulse */
.cta-pulse { animation: pulse-glow 2s ease-in-out infinite; }
@keyframes pulse-glow {
    0%, 100% { box-shadow: 0 0 0 0 rgba(99,102,241,0.4); }
    50%      { box-shadow: 0 0 30px 8px rgba(99,102,241,0.15); }
}

/* Cinematic Preloader (à la Virtual Wild) */
.preloader {
    position: fixed; inset: 0; z-index: 10000;
    background: radial-gradient(ellipse at center,
        rgba(20, 16, 40, 1) 0%,
        rgba(10, 8, 26, 1) 70%,
        rgba(8, 6, 20, 1) 100%);
    display: flex; align-items: center; justify-content: center;
    transition: opacity 700ms cubic-bezier(0.16, 1, 0.3, 1);
}
.preloader.hide { opacity: 0; pointer-events: none; }
.preloader-stage { position: relative; display: flex; flex-direction: column; align-items: center; gap: 36px; }
.preloader-glow {
    position: absolute; top: 50%; transform: translateY(-50%);
    width: 220px; height: 60px;
    border-radius: 50%;
    filter: blur(40px);
    mix-blend-mode: screen;
    opacity: 0.7;
}
.preloader-glow.left {
    left: -260px;
    background: radial-gradient(circle, rgba(129,140,248,0.85), transparent 70%);
    animation: preloaderPulse 2.4s ease-in-out infinite;
}
.preloader-glow.right {
    right: -260px;
    background: radial-gradient(circle, rgba(236,72,153,0.85), transparent 70%);
    animation: preloaderPulse 2.4s ease-in-out infinite reverse;
}
@keyframes preloaderPulse {
    0%, 100% { opacity: 0.5; transform: translateY(-50%) scale(0.95); }
    50%      { opacity: 0.95; transform: translateY(-50%) scale(1.1); }
}
.preloader-soundwave { display: flex; align-items: center; gap: 4px; height: 56px; }
.preloader-soundwave span {
    display: block; width: 5px;
    background: linear-gradient(to top, #06b6d4, #818cf8, #ec4899);
    border-radius: 3px;
    animation: preloaderWave 1.4s ease-in-out infinite;
}
.preloader-soundwave span:nth-child(1) { animation-delay: 0s;    height: 22px; }
.preloader-soundwave span:nth-child(2) { animation-delay: 0.1s;  height: 38px; }
.preloader-soundwave span:nth-child(3) { animation-delay: 0.2s;  height: 28px; }
.preloader-soundwave span:nth-child(4) { animation-delay: 0.3s;  height: 50px; }
.preloader-soundwave span:nth-child(5) { animation-delay: 0.4s;  height: 18px; }
.preloader-soundwave span:nth-child(6) { animation-delay: 0.5s;  height: 42px; }
.preloader-soundwave span:nth-child(7) { animation-delay: 0.6s;  height: 30px; }
.preloader-soundwave span:nth-child(8) { animation-delay: 0.7s;  height: 46px; }
.preloader-soundwave span:nth-child(9) { animation-delay: 0.15s; height: 24px; }
.preloader-soundwave span:nth-child(10){ animation-delay: 0.35s; height: 36px; }
@keyframes preloaderWave {
    0%, 100% { transform: scaleY(0.45); opacity: 0.6; }
    50%      { transform: scaleY(1);    opacity: 1;   }
}
.preloader-brand {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-weight: 800;
    font-size: 14px;
    letter-spacing: 0.4em;
    text-transform: uppercase;
    background: linear-gradient(90deg, #818cf8, #06b6d4, #ec4899);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.preloader-status {
    display: flex; align-items: center; gap: 14px;
    font-family: 'Inter', sans-serif;
    font-size: 12px; letter-spacing: 0.3em;
    color: rgba(255,255,255,0.5);
    text-transform: uppercase;
}
.preloader-percent {
    color: #06b6d4; font-weight: 600;
    min-width: 40px; text-align: right;
}

/* Secondary CTA — glassmorphism + gradient border + icon glow */
.cta-secondary {
    position: relative;
    background: rgba(255, 255, 255, 0.04);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    overflow: hidden;
    color: #fff !important;
    transition: background 0.35s ease, transform 0.35s ease, box-shadow 0.35s ease;
}
.cta-secondary::before {
    content: '';
    position: absolute; inset: 0;
    border-radius: inherit;
    padding: 1.5px;
    background: linear-gradient(135deg, #818cf8, #06b6d4 50%, #ec4899);
    background-size: 200% 200%;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
            mask-composite: exclude;
    pointer-events: none;
    opacity: 0.85;
    animation: ctaBorderShift 6s ease-in-out infinite;
}
@keyframes ctaBorderShift {
    0%, 100% { background-position: 0% 50%; }
    50%      { background-position: 100% 50%; }
}
.cta-secondary i, .cta-secondary svg {
    color: #06b6d4;
    filter: drop-shadow(0 0 10px rgba(6, 182, 212, 0.65));
    transition: filter 0.3s ease, transform 0.3s ease, color 0.3s ease;
}
.cta-secondary:hover {
    background: linear-gradient(135deg,
        rgba(129,140,248,0.18) 0%,
        rgba(6,182,212,0.18) 50%,
        rgba(236,72,153,0.18) 100%);
    transform: translateY(-2px);
    box-shadow: 0 10px 30px rgba(99,102,241,0.18);
}
.cta-secondary:hover i, .cta-secondary:hover svg {
    filter: drop-shadow(0 0 16px rgba(6, 182, 212, 0.95));
    transform: scale(1.15);
    color: #67e8f9;
}

/* Cinema BG canvas — procedural snakes везде */
.bg-cinema {
    position: fixed; inset: 0;
    z-index: -1;
    pointer-events: none;
    opacity: 0.75;
    mix-blend-mode: screen;
}
.bg-cinema-overlay {
    position: fixed; inset: 0;
    z-index: -1;
    pointer-events: none;
    background:
        radial-gradient(ellipse at center, rgba(10,8,26,0) 0%, rgba(10,8,26,0.2) 50%, rgba(10,8,26,0.5) 100%),
        linear-gradient(180deg, rgba(10,8,26,0.15) 0%, rgba(10,8,26,0.4) 100%);
}
