/* 手机底部导航：选中背景滑动、图标轻弹、按压反馈。桌面导航保持原样。 */
@media (max-width: 760px) {
  .sidebar nav {
    position: relative;
    isolation: isolate;
    display: grid;
    grid-template-columns: repeat(var(--nav-count, 6), minmax(0, 1fr));
    gap: 0;
  }

  /* 同一块高亮跟随路由移动，不重建节点，连续点击也能平滑过渡。 */
  .sidebar nav::before {
    content: "";
    box-sizing: border-box;
    position: absolute;
    z-index: -1;
    inset: 2px auto 2px 0;
    width: calc(100% / var(--nav-count, 6));
    border: 3px solid transparent;
    background: color-mix(in srgb, var(--blue) 10%, var(--surface));
    background-clip: padding-box;
    border-radius: 15px;
    transform: translateX(calc(var(--nav-index, 0) * 100%));
    pointer-events: none;
  }

  .sidebar nav[data-ready="true"]::before {
    transition: transform 360ms cubic-bezier(.22, .8, .25, 1), opacity 160ms ease;
  }

  .sidebar nav[data-has-active="false"]::before {
    opacity: 0;
  }

  .sidebar nav a {
    position: relative;
    justify-content: center;
    min-width: 0;
    min-height: 55px;
    border-radius: 12px;
    background: transparent;
    transition: transform 160ms ease, color 180ms ease;
    touch-action: manipulation;
  }

  .sidebar nav a:hover,
  .sidebar nav a.active,
  html[data-theme="dark"] .sidebar nav a.active {
    background: transparent;
    box-shadow: none;
  }

  .sidebar nav a.active {
    color: var(--blue);
  }

  html[data-theme="dark"] .sidebar nav a.active {
    color: #c0d1ff;
  }

  .sidebar nav a:active {
    transform: scale(.91);
  }

  .sidebar nav a .icon {
    transform-origin: center 70%;
  }

  .sidebar nav a.active .icon {
    animation: nav-icon-pop 420ms cubic-bezier(.2, .8, .3, 1) both;
  }

  .sidebar nav a > span {
    transition: transform 220ms ease;
  }

  .sidebar nav a.active > span {
    transform: translateY(-1px);
  }

  /* 按下时的柔和扩散，松开即淡出。 */
  .sidebar nav a::after {
    content: "";
    position: absolute;
    z-index: -1;
    width: 36px;
    height: 36px;
    top: 3px;
    left: calc(50% - 18px);
    border-radius: 50%;
    background: currentColor;
    opacity: 0;
    transform: scale(.4);
    transition: transform 260ms ease, opacity 220ms ease;
    pointer-events: none;
  }

  .sidebar nav a:active::after {
    opacity: .1;
    transform: scale(1.2);
  }
}

@keyframes nav-icon-pop {
  0% { transform: translateY(0) scale(.88); }
  42% { transform: translateY(-4px) scale(1.12); }
  72% { transform: translateY(1px) scale(.98); }
  100% { transform: translateY(-1px) scale(1); }
}

/* 同时尊重网站内设置和操作系统的减少动态效果偏好。 */
@media (prefers-reduced-motion: reduce) {
  .sidebar nav::before,
  .sidebar nav a,
  .sidebar nav a::after,
  .sidebar nav a .icon,
  .sidebar nav a > span {
    transition: none !important;
    animation: none !important;
  }

  .sidebar nav a:active,
  .sidebar nav a.active > span,
  .sidebar nav a:active::after {
    transform: none;
  }
}

html[data-motion="reduced"] .sidebar nav a:active,
html[data-motion="reduced"] .sidebar nav a.active > span,
html[data-motion="reduced"] .sidebar nav a:active::after {
  transform: none;
}
