:root{
    /* 方寸动效基线：连续、短促、无明显弹跳，属性变化保持可打断。 */
    --fc-motion-press-scale:.96;
    --fc-motion-press-duration:var(--fc-motion-fast,150ms);
  --fc-motion-open-duration:500ms;
  --fc-motion-close-duration:420ms;
  --fc-motion-return-duration:560ms;
  --fc-motion-ease:var(--fc-state-ease,var(--fc-motion-ease-out,cubic-bezier(.22,1,.36,1)));
  --fc-motion-navigation-ease:linear;
  --fc-motion-close-ease:linear;
  --fc-motion-return-ease:cubic-bezier(.4,0,.2,1);
    --fc-motion-source-radius:32px;
    --fc-motion-page-source-scale:.1;
    --fc-motion-source-x:0px;
    --fc-motion-source-y:0px;
    --fc-motion-source-inset-x:0px;
    --fc-motion-source-inset-y:0px;
}

/* Use the browser's cross-document transition when available. Navigation must
   remain native and start on the same click; unsupported browsers ignore this. */
@view-transition{
  navigation:auto;
}

/* The homepage is a single viewport surface. Keep its fixed controls in the
   captured layer; leave scrolling pages and client-rendered screens on the root. */
:root.fc-source-capture{
  view-transition-name:fc-page;
}
:root.fc-source-capture body *{
  view-transition-name:none!important;
}
:root.fc-source-capture.fc-source-viewport{
  view-transition-name:none;
  background-color:var(--fc-motion-canvas-color);
}
:root.fc-source-capture.fc-source-viewport > body{
  view-transition-name:fc-page;
  min-height:100dvh;
  contain:paint;
}

@keyframes fc-source-open-in{
  from{
    transform:translate3d(var(--fc-motion-source-x),var(--fc-motion-source-y),0) scale(var(--fc-motion-page-source-scale));
    clip-path:inset(var(--fc-motion-source-inset-y) var(--fc-motion-source-inset-x) round var(--fc-motion-source-radius));
  }
  to{
    transform:translate3d(0,0,0) scale(1);
    clip-path:inset(0 round 0px);
  }
}

@keyframes fc-source-close-out{
  from{
    transform:translate3d(0,0,0) scale(1);
    clip-path:inset(0 round 0px);
  }
  to{
    transform:translate3d(var(--fc-motion-source-x),var(--fc-motion-source-y),0) scale(var(--fc-motion-page-source-scale));
    clip-path:inset(var(--fc-motion-source-inset-y) var(--fc-motion-source-inset-x) round var(--fc-motion-source-radius));
  }
}

:root:is(.fc-source-enter,.fc-source-return)::view-transition-group(fc-page){
  animation:none;
}

:root:is(.fc-source-enter,.fc-source-return)::view-transition-image-pair(fc-page){
  isolation:isolate;
}

:root:is(.fc-source-enter,.fc-source-return)::view-transition-old(fc-page),
:root:is(.fc-source-enter,.fc-source-return)::view-transition-new(fc-page){
  mix-blend-mode:normal;
  transform-origin:50% 50%;
}

:root.fc-source-enter::view-transition-old(fc-page){
  z-index:1;
  opacity:1;
  transform:none;
  animation:none;
}

:root.fc-source-enter::view-transition-new(fc-page){
  z-index:2;
  opacity:1;
  will-change:transform;
  animation:fc-source-open-in var(--fc-motion-open-duration) var(--fc-motion-navigation-ease) both;
}

:root.fc-source-return::view-transition-old(fc-page){
  z-index:2;
  will-change:transform,opacity;
  animation:fc-source-close-out var(--fc-motion-close-duration) var(--fc-motion-close-ease) both;
}

:root.fc-source-return::view-transition-new(fc-page){
  z-index:1;
  opacity:1;
  transform:none;
  animation:none;
}

:root.fc-source-pending::view-transition-old(fc-page),
:root.fc-source-pending::view-transition-new(fc-page){
  animation-play-state:paused;
}

@media(prefers-reduced-motion:reduce){
    @view-transition{navigation:none;}
    :root{
        --fc-motion-press-duration:var(--fc-motion-instant,.001ms);
  --fc-motion-open-duration:var(--fc-motion-instant,.001ms);
  --fc-motion-close-duration:var(--fc-motion-instant,.001ms);
  --fc-motion-return-duration:var(--fc-motion-instant,.001ms);
}
}
