/* トップページ：動きのある最先端モーション（page--home のみ） */

.page--home{
  --motion-ease:cubic-bezier(.22, 1, .36, 1);
  --home-scroll:0;
}

.page--home .home-main{
  position:relative;
  overflow-x:clip;
}

/* カスタムカーソル（ポインタデバイスのみ） */
.home-cursor{
  position:fixed;
  top:0;
  left:0;
  z-index:200;
  pointer-events:none;
  opacity:0;
  transition:opacity .35s ease;
  mix-blend-mode:normal;
}
.page--home.is-cursor-ready .home-cursor{
  opacity:1;
}
.home-cursor__dot,
.home-cursor__ring{
  position:fixed;
  top:0;
  left:0;
  border-radius:50%;
  transform:translate3d(var(--cx, -100px), var(--cy, -100px), 0);
  will-change:transform;
}
.home-cursor__dot{
  width:6px;
  height:6px;
  margin:-3px 0 0 -3px;
  background:var(--color-primary);
  box-shadow:0 0 12px rgba(var(--rgba-primary), .55);
}
.home-cursor__ring{
  width:36px;
  height:36px;
  margin:-18px 0 0 -18px;
  border:1px solid rgba(var(--rgba-primary), .35);
  background:radial-gradient(circle, rgba(var(--rgba-primary), .08), transparent 68%);
  transition:width .25s var(--motion-ease), height .25s var(--motion-ease), margin .25s var(--motion-ease), border-color .25s ease;
}
.page--home.is-cursor-hover .home-cursor__ring{
  width:52px;
  height:52px;
  margin:-26px 0 0 -26px;
  border-color:rgba(var(--rgba-gold), .5);
}

/* ヒーロー下：流れる環境光 */
.hero__body-band{
  position:relative;
  overflow:clip;
  isolation:isolate;
}
.home-ambient{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  overflow:hidden;
}
.home-ambient__blob{
  position:absolute;
  border-radius:50%;
  filter:blur(56px);
  opacity:.55;
  animation:homeBlobDrift 18s ease-in-out infinite;
}
.home-ambient__blob--teal{
  top:-8%;
  left:10%;
  width:min(360px, 55vw);
  height:min(260px, 40vw);
  background:radial-gradient(circle, rgba(20, 184, 166, .28), transparent 70%);
}
.home-ambient__blob--gold{
  bottom:-12%;
  right:8%;
  width:min(320px, 48vw);
  height:min(240px, 36vw);
  background:radial-gradient(circle, rgba(212, 165, 116, .32), transparent 72%);
  animation-delay:-6s;
}
.home-ambient__grid{
  position:absolute;
  inset:0;
  opacity:.4;
  background:
    repeating-linear-gradient(
      90deg,
      transparent,
      transparent 79px,
      rgba(var(--rgba-primary), .04) 79px,
      rgba(var(--rgba-primary), .04) 80px
    ),
    repeating-linear-gradient(
      0deg,
      transparent,
      transparent 79px,
      rgba(var(--rgba-primary), .03) 79px,
      rgba(var(--rgba-primary), .03) 80px
    );
  transform:translate3d(0, calc(var(--home-scroll) * -40px), 0);
  animation:homeGridShift 40s linear infinite;
}
@keyframes homeBlobDrift{
  0%, 100%{ transform:translate3d(0, 0, 0) scale(1); }
  50%{ transform:translate3d(24px, -18px, 0) scale(1.05); }
}
@keyframes homeGridShift{
  0%{ transform:translate3d(0, 0, 0); }
  100%{ transform:translate3d(-80px, -80px, 0); }
}
.hero__body-band .hero__body{
  position:relative;
  z-index:1;
}

/* スクロール連動パララックス */
[data-parallax]{
  transform:translate3d(0, calc(var(--parallax-y, 0px)), 0);
  will-change:transform;
}

/* リビール（トップ強化） */
.page--home .reveal{
  opacity:0;
  transform:translate3d(0, 36px, 0) scale(.985);
  filter:blur(8px);
  transition:
    opacity .85s var(--motion-ease) var(--reveal-delay, 0s),
    transform .85s var(--motion-ease) var(--reveal-delay, 0s),
    filter .85s var(--motion-ease) var(--reveal-delay, 0s);
}
.page--home .reveal.is-visible{
  opacity:1;
  transform:none;
  filter:none;
}

/* セクション見出し */
.motion-title{
  position:relative;
  display:inline-block;
  width:100%;
}
.motion-section.is-visible .motion-title::after,
.motion-block.is-visible .motion-title::after{
  content:"";
  display:block;
  width:min(80px, 22vw);
  height:3px;
  margin:0.65rem auto 0;
  border-radius:2px;
  background:linear-gradient(90deg, var(--color-primary), var(--color-gold));
  transform:scaleX(0);
  transform-origin:left center;
  animation:motionTitleLine .9s var(--motion-ease) .15s forwards;
}
@keyframes motionTitleLine{
  to{ transform:scaleX(1); }
}

/* スタッガー子要素 */
[data-motion-stagger] > .reveal,
[data-motion-stagger] > .motion-item,
[data-motion-stagger] > .site-card--motion{
  --reveal-delay:calc(var(--motion-i, 0) * 0.09s);
}
[data-motion-stagger] > .motion-item{
  opacity:0;
  transform:translate3d(0, 20px, 0);
  transition:
    opacity .7s var(--motion-ease) var(--reveal-delay, 0s),
    transform .7s var(--motion-ease) var(--reveal-delay, 0s);
}
.motion-section.is-visible [data-motion-stagger] > .motion-item,
[data-motion-stagger].is-visible > .motion-item{
  opacity:1;
  transform:none;
}

/* サイトカード：3D・シマー */
.page--home .site-card--motion{
  position:relative;
  overflow:hidden;
  transform:perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateZ(0);
  transform-style:preserve-3d;
  transition:
    transform .35s var(--motion-ease),
    box-shadow .35s ease,
    border-color .35s ease;
}
.page--home .site-card--motion::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  padding:1px;
  background:linear-gradient(
    120deg,
    rgba(var(--rgba-primary), .5),
    rgba(var(--rgba-gold), .45),
    rgba(var(--rgba-primary), .35)
  );
  background-size:200% 200%;
  animation:homeCardBorder 6s ease infinite;
  -webkit-mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  opacity:0;
  transition:opacity .35s ease;
  pointer-events:none;
}
.page--home .site-card--motion:hover::before{
  opacity:1;
}
.page--home .site-card--motion::after{
  content:"";
  position:absolute;
  top:0;
  left:-120%;
  width:55%;
  height:100%;
  background:linear-gradient(
    105deg,
    transparent 0%,
    rgba(255, 255, 255, .55) 48%,
    transparent 100%
  );
  transform:skewX(-18deg);
  transition:left .65s var(--motion-ease);
  pointer-events:none;
}
.page--home .site-card--motion:hover::after{
  left:130%;
}
.page--home .site-card--motion:hover{
  transform:perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(-8px) translateZ(12px);
}
@keyframes homeCardBorder{
  0%, 100%{ background-position:0% 50%; }
  50%{ background-position:100% 50%; }
}

/* トピックスリンク */
.page--home .topics-preview__link{
  transition:transform .3s var(--motion-ease), box-shadow .3s ease, border-color .3s ease;
}
.page--home .topics-preview__link:hover{
  transform:translateX(6px);
  box-shadow:0 8px 24px rgba(15, 23, 42, .08);
}

/* シナジー：ビューポート内でライブ化 */
.synergy--lux[data-motion-synergy]{
  --synergy-live:0;
}
.synergy--lux.is-synergy-live .synergy__stage{
  transform:translate3d(0, calc((1 - var(--synergy-live)) * 24px), 0) scale(calc(0.97 + var(--synergy-live) * 0.03));
  opacity:calc(0.72 + var(--synergy-live) * 0.28);
  transition:transform .9s var(--motion-ease), opacity .9s ease;
}
.synergy--lux.is-synergy-live .synergy__tri-edge{
  stroke-dashoffset:calc(280 * (1 - var(--synergy-live)));
}
.synergy--lux.is-synergy-live .synergy__hub,
.synergy--lux.is-synergy-live .synergy__hub-ring,
.synergy--lux.is-synergy-live .synergy__vertex,
.synergy--lux.is-synergy-live .synergy__vertex-ring{
  opacity:var(--synergy-live);
}
.synergy--lux.is-synergy-live .synergy__ambient-orb{
  animation-duration:calc(14s - var(--synergy-live) * 4s);
}
.synergy--lux.is-synergy-live .synergy__node--experience{
  transform:translateY(calc(-8px - var(--synergy-live) * 4px));
}
.motion-block.is-visible .hero__strength-heading{
  animation:homeHeadingPulse 4s ease-in-out 1.2s infinite;
}
@keyframes homeHeadingPulse{
  0%, 100%{ letter-spacing:.06em; }
  50%{ letter-spacing:.1em; }
}

/* CTAボタン */
.page--home .hero__cta .btn{
  position:relative;
  overflow:hidden;
}
.page--home .hero__cta .btn::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(105deg, transparent 35%, rgba(255, 255, 255, .35) 50%, transparent 65%);
  transform:translateX(-130%);
  transition:transform .55s var(--motion-ease);
}
.page--home .hero__cta .btn:hover::after{
  transform:translateX(130%);
}

/* スクロールプログレス強化 */
.page--home .scroll-progress{
  height:4px;
  box-shadow:0 0 18px rgba(var(--rgba-gold), .45);
}

@media (max-width: 1024px), (hover: none), (pointer: coarse){
  .home-cursor{
    display:none !important;
  }
  .hero--cinematic .hero__media .hero__video,
  .hero--cinematic .hero__bg--cinematic{
    transform:none !important;
  }
  .home-ambient__blob,
  .home-ambient__grid{
    animation:none;
  }
  .page--home .site-card--motion{
    transform:none !important;
  }
  .page--home .site-card--motion::before,
  .page--home .site-card--motion::after{
    display:none;
  }
}

@media (prefers-reduced-motion: reduce){
  .home-ambient__blob,
  .home-ambient__grid,
  .page--home .site-card--motion::before,
  .motion-block.is-visible .hero__strength-heading{
    animation:none !important;
  }
  .page--home .reveal,
  .page--home .reveal.is-visible{
    opacity:1;
    transform:none;
    filter:none;
    transition:none;
  }
  .synergy--lux.is-synergy-live .synergy__stage{
    transform:none;
    opacity:1;
  }
  [data-parallax]{
    transform:none !important;
  }
}
