/* MV / First View */
.fv-placeholder {
    position: relative;
    z-index: 1;
    min-height: clamp(360px, 58vh, 640px);
    padding: 96px 24px 72px;
    overflow: hidden;
    isolation: isolate;
}

.fv-placeholder__inner {
    position: relative;
    z-index: 2;
    width: min(1120px, calc(100% - 48px));
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    min-height: clamp(280px, 44vh, 520px);
}

.fv-placeholder__eyebrow {
    margin: 0 0 14px;
    font-size: var(--type-eyebrow, 12px);
    font-weight: 700;
    letter-spacing: 0.18em;
    color: var(--brand);
}

.fv-placeholder__title {
    margin: 0;
    max-width: 760px;
    font-size: var(--type-hero, clamp(25px, 4.2vw, 45px));
    line-height: 1.2;
    letter-spacing: -0.02em;
    color: var(--text);
}

.fv-placeholder__text {
    margin: 20px 0 0;
    max-width: 560px;
    font-size: var(--type-body-fixed, 16px);
    line-height: 1.8;
    color: var(--subtext);
}

.fv-placeholder__actions {
    position: relative;
    z-index: 2;
    width: min(1120px, calc(100% - 48px));
    margin: 28px auto 0;
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

/*オーブ関連*/

.fv-placeholder__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}

.fv-placeholder__orb-wrap {
    position: absolute;
    pointer-events: none;
    will-change: transform;
}

.fv-placeholder__orb {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    filter: blur(10px);
    opacity: 1;
    will-change: transform, opacity, filter, border-radius;
    mix-blend-mode: normal;
    transform-origin: center;
}

/* ===== Orb 1 ===== */
.fv-placeholder__orb-wrap--1 {
    width: 560px;
    height: 560px;
    top: -120px;
    left: -80px;
    animation: mvOrbOrbit1 44s linear infinite;
}

.fv-placeholder__orb--1 {
    background: radial-gradient(
        circle at center,
        rgba(63, 175, 123, 0.58) 0%,
        rgba(63, 175, 123, 0.42) 22%,
        rgba(63, 175, 123, 0.18) 46%,
        rgba(63, 175, 123, 0.04) 64%,
        rgba(63, 175, 123, 0) 78%
    );
    animation:
        mvOrbMorph1 17s ease-in-out infinite,
        mvPulseSoft 11s ease-in-out infinite;
}

/* ===== Orb 2 ===== */
.fv-placeholder__orb-wrap--2 {
    width: 760px;
    height: 760px;
    right: -180px;
    top: 8%;
    animation: mvOrbOrbit2 52s linear infinite;
}

.fv-placeholder__orb--2 {
    background: radial-gradient(
        circle at center,
        rgba(230, 180, 34, 0.5) 0%,
        rgba(230, 180, 34, 0.34) 22%,
        rgba(230, 180, 34, 0.14) 46%,
        rgba(230, 180, 34, 0.03) 64%,
        rgba(230, 180, 34, 0) 78%
    );
    animation:
        mvOrbMorph2 21s ease-in-out infinite,
        mvPulseWarm 12s ease-in-out infinite;
}

/* ===== Orb 3 ===== */
.fv-placeholder__orb-wrap--3 {
    width: 620px;
    height: 620px;
    left: 26%;
    bottom: -180px;
    animation: mvOrbOrbit3 48s linear infinite;
}

.fv-placeholder__orb--3 {
    background: radial-gradient(
        circle at center,
        rgba(230, 244, 237, 0.96) 0%,
        rgba(200, 236, 216, 0.82) 24%,
        rgba(160, 220, 188, 0.28) 48%,
        rgba(160, 220, 188, 0.06) 66%,
        rgba(230, 244, 237, 0) 80%
    );
    animation:
        mvOrbMorph3 19s ease-in-out infinite,
        mvPulseSoft 9s ease-in-out infinite;
}

/* ===== Orb 4 ===== */
.fv-placeholder__orb-wrap--4 {
    width: 520px;
    height: 520px;
    right: 18%;
    bottom: -120px;
    animation: mvOrbOrbit4 42s linear infinite;
}

.fv-placeholder__orb--4 {
    background: radial-gradient(
        circle at center,
        rgba(255, 202, 233, 0.56) 0%,
        rgba(255, 202, 233, 0.38) 22%,
        rgba(255, 202, 233, 0.16) 46%,
        rgba(255, 202, 233, 0.04) 64%,
        rgba(255, 202, 233, 0) 78%
    );
    animation:
        mvOrbMorph4 18s ease-in-out infinite,
        mvPulseDeep 11s ease-in-out infinite;
}

.fv-placeholder__grid {
    position: absolute;
    inset: 0;
    background:
        linear-gradient(rgba(0, 123, 67, 0.07) 1px, transparent 1px),
        linear-gradient(90deg, rgba(0, 123, 67, 0.07) 1px, transparent 1px);
    background-size: 44px 44px;
    mask-image: linear-gradient(
        to bottom,
        rgba(0, 0, 0, 0.92),
        rgba(0, 0, 0, 0.16)
    );
    -webkit-mask-image: linear-gradient(
        to bottom,
        rgba(0, 0, 0, 0.92),
        rgba(0, 0, 0, 0.16)
    );
    animation: mvGridDrift 22s linear infinite;
}

.fv-placeholder::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(
        180deg,
        rgba(255, 255, 255, 0.1) 0%,
        rgba(255, 255, 255, 0.03) 26%,
        rgba(255, 255, 255, 0.1) 100%
    );
    pointer-events: none;
}

@keyframes mvFloat1 {
    0% {
        transform: translate3d(0, 0, 0) scale(1) rotate(0deg);
    }
    100% {
        transform: translate3d(80px, 48px, 0) scale(1.08) rotate(18deg);
    }
}

@keyframes mvFloat2 {
    0% {
        transform: translate3d(0, 0, 0) scale(1) rotate(0deg);
    }
    100% {
        transform: translate3d(-96px, 72px, 0) scale(1.1) rotate(-16deg);
    }
}

@keyframes mvFloat3 {
    0% {
        transform: translate3d(0, 0, 0) scale(1) rotate(0deg);
    }
    100% {
        transform: translate3d(56px, -60px, 0) scale(1.06) rotate(14deg);
    }
}

@keyframes mvOrbOrbit1 {
    0% {
        transform: translate3d(0, 0, 0) rotate(0deg);
    }
    25% {
        transform: translate3d(26px, 10px, 0) rotate(90deg);
    }
    50% {
        transform: translate3d(58px, 36px, 0) rotate(180deg);
    }
    75% {
        transform: translate3d(30px, 58px, 0) rotate(270deg);
    }
    100% {
        transform: translate3d(0, 0, 0) rotate(360deg);
    }
}

@keyframes mvOrbOrbit2 {
    0% {
        transform: translate3d(0, 0, 0) rotate(0deg);
    }
    25% {
        transform: translate3d(-34px, 14px, 0) rotate(90deg);
    }
    50% {
        transform: translate3d(-82px, 54px, 0) rotate(180deg);
    }
    75% {
        transform: translate3d(-46px, 30px, 0) rotate(270deg);
    }
    100% {
        transform: translate3d(0, 0, 0) rotate(360deg);
    }
}

@keyframes mvOrbOrbit3 {
    0% {
        transform: translate3d(0, 0, 0) rotate(0deg);
    }
    25% {
        transform: translate3d(16px, -18px, 0) rotate(90deg);
    }
    50% {
        transform: translate3d(42px, -46px, 0) rotate(180deg);
    }
    75% {
        transform: translate3d(24px, -28px, 0) rotate(270deg);
    }
    100% {
        transform: translate3d(0, 0, 0) rotate(360deg);
    }
}

@keyframes mvOrbOrbit4 {
    0% {
        transform: translate3d(0, 0, 0) rotate(0deg);
    }
    25% {
        transform: translate3d(-28px, -10px, 0) rotate(90deg);
    }
    50% {
        transform: translate3d(-56px, 18px, 0) rotate(180deg);
    }
    75% {
        transform: translate3d(-18px, 34px, 0) rotate(270deg);
    }
    100% {
        transform: translate3d(0, 0, 0) rotate(360deg);
    }
}

@keyframes mvOrbMorph1 {
    0% {
        transform: scaleY(1) scaleX(1) skew(0deg, 0deg) rotate(0deg);
        border-radius: 50%;
    }
    25% {
        transform: scaleY(0.92) scaleX(1.05) skew(-11deg, -4deg) rotate(4deg);
        border-radius: 54% 46% 51% 49% / 45% 55% 47% 53%;
    }
    50% {
        transform: scaleY(0.82) scaleX(1.1) skew(7deg, 0deg) rotate(8deg);
        border-radius: 47% 53% 55% 45% / 52% 42% 58% 48%;
    }
    75% {
        transform: scaleY(0.95) scaleX(1.03) skew(-5deg, 7deg) rotate(5deg);
        border-radius: 55% 45% 46% 54% / 48% 57% 43% 52%;
    }
    100% {
        transform: scaleY(1) scaleX(1) skew(0deg, 0deg) rotate(0deg);
        border-radius: 50%;
    }
}

@keyframes mvOrbMorph2 {
    0% {
        transform: scaleY(1) scaleX(1) skew(0deg, 0deg) rotate(0deg);
        border-radius: 50%;
    }
    25% {
        transform: scaleY(0.9) scaleX(1.07) skew(-13deg, -5deg) rotate(-4deg);
        border-radius: 56% 44% 48% 52% / 43% 57% 45% 55%;
    }
    50% {
        transform: scaleY(0.78) scaleX(1.12) skew(8deg, 0deg) rotate(-8deg);
        border-radius: 46% 54% 56% 44% / 54% 41% 59% 46%;
    }
    75% {
        transform: scaleY(0.94) scaleX(1.04) skew(-4deg, 8deg) rotate(-5deg);
        border-radius: 54% 46% 45% 55% / 47% 58% 42% 53%;
    }
    100% {
        transform: scaleY(1) scaleX(1) skew(0deg, 0deg) rotate(0deg);
        border-radius: 50%;
    }
}

@keyframes mvOrbMorph3 {
    0% {
        transform: scaleY(1) scaleX(1) skew(0deg, 0deg) rotate(0deg);
        border-radius: 50%;
    }
    25% {
        transform: scaleY(0.93) scaleX(1.04) skew(-9deg, -3deg) rotate(3deg);
        border-radius: 53% 47% 50% 50% / 44% 56% 46% 54%;
    }
    50% {
        transform: scaleY(0.84) scaleX(1.08) skew(6deg, 0deg) rotate(7deg);
        border-radius: 48% 52% 56% 44% / 53% 42% 58% 47%;
    }
    75% {
        transform: scaleY(0.96) scaleX(1.02) skew(-3deg, 6deg) rotate(4deg);
        border-radius: 55% 45% 44% 56% / 49% 57% 43% 51%;
    }
    100% {
        transform: scaleY(1) scaleX(1) skew(0deg, 0deg) rotate(0deg);
        border-radius: 50%;
    }
}

@keyframes mvOrbMorph4 {
    0% {
        transform: scaleY(1) scaleX(1) skew(0deg, 0deg) rotate(0deg);
        border-radius: 50%;
    }
    25% {
        transform: scaleY(0.88) scaleX(1.06) skew(-10deg, -4deg) rotate(-4deg);
        border-radius: 56% 44% 49% 51% / 42% 58% 46% 54%;
    }
    50% {
        transform: scaleY(0.78) scaleX(1.1) skew(6deg, 0deg) rotate(-8deg);
        border-radius: 47% 53% 55% 45% / 54% 40% 60% 46%;
    }
    75% {
        transform: scaleY(0.94) scaleX(1.03) skew(-4deg, 7deg) rotate(-5deg);
        border-radius: 54% 46% 44% 56% / 48% 56% 44% 52%;
    }
    100% {
        transform: scaleY(1) scaleX(1) skew(0deg, 0deg) rotate(0deg);
        border-radius: 50%;
    }
}

@keyframes mvPulseSoft {
    0% {
        opacity: 0.92;
        filter: blur(58px);
    }
    50% {
        opacity: 0.98;
        filter: blur(64px);
    }
    100% {
        opacity: 0.92;
        filter: blur(58px);
    }
}

@keyframes mvPulseWarm {
    0% {
        opacity: 0.86;
        filter: blur(56px);
    }
    50% {
        opacity: 0.94;
        filter: blur(62px);
    }
    100% {
        opacity: 0.86;
        filter: blur(56px);
    }
}

@keyframes mvPulseDeep {
    0% {
        opacity: 0.84;
        filter: blur(54px);
    }
    50% {
        opacity: 0.92;
        filter: blur(60px);
    }
    100% {
        opacity: 0.84;
        filter: blur(54px);
    }
}

@keyframes mvGridDrift {
    0% {
        transform: translate3d(0, 0, 0);
        opacity: 0.92;
    }
    50% {
        transform: translate3d(10px, 6px, 0);
        opacity: 1;
    }
    100% {
        transform: translate3d(20px, 12px, 0);
        opacity: 0.92;
    }
}

@media (max-width: 767px) {
    .fv-placeholder {
        min-height: 420px;
        padding: 80px 20px 56px;
    }

    .fv-placeholder__inner,
    .fv-placeholder__actions {
        width: calc(100% - 40px);
    }

    .fv-placeholder__inner {
        min-height: 280px;
    }

    .fv-placeholder__title {
        font-size: var(--type-hero-sm, clamp(24px, 7.6vw, 38px));
        line-height: 1.24;
    }

    .fv-placeholder__text {
        font-size: var(--type-body-mobile, 14px);
        line-height: 1.75;
    }

    .fv-placeholder__actions {
        margin-top: 24px;
        flex-direction: column;
        align-items: stretch;
    }

    .fv-placeholder__actions .button {
        width: 100%;
    }

    .fv-placeholder__orb-wrap--1 {
        width: 420px;
        height: 420px;
        top: -80px;
        left: -120px;
    }

    .fv-placeholder__orb-wrap--2 {
        width: 520px;
        height: 520px;
        right: -180px;
        top: 12%;
    }

    .fv-placeholder__orb-wrap--3 {
        width: 420px;
        height: 420px;
        left: 12%;
        bottom: -120px;
    }

    .fv-placeholder__orb-wrap--4 {
        width: 360px;
        height: 360px;
        right: -40px;
        bottom: -90px;
    }

    .fv-placeholder__grid {
        background-size: 32px 32px;
    }
}
