/* -------------------------------------------------------------------
   Reveal Animations
------------------------------------------------------------------- */
.fade-up {
    opacity: 0; transform: translateY(30px);
    transition: opacity 1s cubic-bezier(0.2, 0.8, 0.2, 1),
                transform 1s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.fade-up.active { opacity: 1; transform: translateY(0); }
.delay-1 { transition-delay: 0.1s; }
.delay-2 { transition-delay: 0.2s; }
.delay-3 { transition-delay: 0.3s; }

/* -------------------------------------------------------------------
   Capsule Float (Hero decorations)
------------------------------------------------------------------- */
.hero-anims {
    position: absolute;
    top: 0; right: 0;
    width: 50%; height: 100%;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}
.capsule {
    position: absolute; display: block; border-radius: 500px;
    transform: rotate(-35deg);
    animation: capsule-float 20s ease-in-out infinite alternate;
    opacity: 0.8;
}
.capsule-1 {
    width: 180px; height: 48px;
    border: 2px solid rgba(43, 112, 214, 0.15);
    background: transparent;
    top: 15%; right: 15%; animation-duration: 22s;
}
.capsule-2 {
    width: 140px; height: 36px;
    background: rgba(143, 185, 255, 0.2);
    top: 35%; right: 5%; animation-duration: 18s; animation-delay: -5s;
}
.capsule-3 {
    width: 100px; height: 30px;
    background: rgba(25, 62, 101, 0.05);
    top: 20%; left: 10%; animation-duration: 25s; animation-delay: 2s;
}

/* Shooting Line */
.shooting-line {
    position: absolute; display: block; border-radius: 500px;
    transform: rotate(-35deg);
    background: linear-gradient(90deg, transparent, var(--line-color), transparent);
    animation: shooting-star var(--duration) ease-in infinite;
    opacity: 0;
}
.line-1 {
    width: 250px; height: 3px;
    --line-color: rgba(43, 112, 214, 0.4);
    top: 25%; right: 25%; --duration: 8s; animation-delay: 1s;
}

@keyframes capsule-float {
    0% { transform: rotate(-35deg) translate(0, 0); }
    100% { transform: rotate(-35deg) translate(60px, -30px); }
}
@keyframes shooting-star {
    0% { transform: rotate(-35deg) translateX(-200px); opacity: 0; }
    20% { opacity: 1; }
    80% { opacity: 1; }
    100% { transform: rotate(-35deg) translateX(600px); opacity: 0; }
}

/* -------------------------------------------------------------------
   Square Rise (CTA / Hero background)
------------------------------------------------------------------- */
.bg-squares {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
    margin: 0; padding: 0;
}
.square {
    position: absolute; display: block; list-style: none;
    width: 20px; height: 20px;
    border: none;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.02);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border-radius: 24%;
    animation: square-rise 25s linear infinite;
    bottom: -200px;
}
.square:nth-child(3n+1) { background: rgba(255, 255, 255, 0.15); }
.square:nth-child(3n+2) { background: rgba(255, 255, 255, 0.1); }
.square:nth-child(3n)   { background: rgba(255, 255, 255, 0.1); }
.square.is-outline {
    background: transparent !important;
    border: 1px solid rgba(255, 255, 255, 0.2) !important;
    box-shadow: none !important;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}
@keyframes square-rise {
    0% { transform: translateY(0) rotate(0deg); opacity: 0; }
    10% { opacity: 0.8; }
    80% { opacity: 0.8; }
    100% { transform: translateY(-120vh) rotate(720deg); opacity: 0; }
}
.square:nth-child(1) { left: 25%; width: 80px; height: 80px; animation-delay: 0s; }
.square:nth-child(2) { left: 10%; width: 40px; height: 40px; animation-delay: 2s; animation-duration: 12s; }
.square:nth-child(3) { left: 70%; width: 60px; height: 60px; animation-delay: 4s; }
.square:nth-child(4) { left: 40%; width: 100px; height: 100px; animation-delay: 0s; animation-duration: 18s; }
.square:nth-child(5) { left: 65%; width: 50px; height: 50px; animation-delay: 0s; }

/* SP: backdrop-filter無効化でGPU負荷軽減 */
@media (max-width: 768px) {
    .square {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        box-shadow: none;
    }
}

/* Decor Lines */
.decor-lines {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    pointer-events: none; z-index: -1; overflow: hidden;
}
.d-line {
    position: absolute; width: 2px; height: 400px;
    background: linear-gradient(to bottom, var(--color-primary), transparent);
    transform: rotate(45deg); opacity: 0.3;
}
.d-line-2 { top: 40%; right: -5%; background: linear-gradient(to bottom, rgba(43, 112, 214, 0.6), transparent); height: 300px; }
.d-line-3 { bottom: 20%; left: 5%; height: 500px; }
