/* ==========================================================================
   返回顶部按钮（右下角，动态环形进度 + 悬浮动效）
   依赖：index.html 中 #backToTop 结构 + static/js/back-to-top.js
   ========================================================================== */

.back-to-top{
  position:fixed;
  right:24px;
  bottom:28px;
  z-index:45; /* 高于顶栏(30)、低于弹窗遮罩(50) */
  width:50px;
  height:50px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid rgba(126,169,255,.24);
  border-radius:50%;
  background:linear-gradient(180deg,rgba(26,38,68,.9),rgba(11,17,35,.95));
  color:#cfe0ff;
  cursor:pointer;
  -webkit-backdrop-filter:blur(20px) saturate(150%);
  backdrop-filter:blur(20px) saturate(150%);
  box-shadow:0 16px 40px rgba(3,8,22,.5),inset 0 1px 0 rgba(255,255,255,.1);
  opacity:0;
  visibility:hidden;
  transform:translateY(18px) scale(.82);
  transition:opacity .3s ease,transform .38s cubic-bezier(.22,1.2,.32,1),box-shadow .3s ease,border-color .3s ease,color .2s ease;
}
.back-to-top.is-visible{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.back-to-top:hover,.back-to-top:focus-visible{
  color:#fff;
  border-color:rgba(150,190,255,.5);
  box-shadow:0 22px 54px rgba(3,8,22,.6),0 0 28px rgba(88,150,255,.38),inset 0 1px 0 rgba(255,255,255,.16);
  transform:translateY(-3px) scale(1.04);
}
.back-to-top:active{transform:translateY(0) scale(.94)}

/* 环形滚动进度 */
.back-to-top-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);pointer-events:none}
.back-to-top-track{fill:none;stroke:rgba(140,175,235,.16);stroke-width:2}
.back-to-top-progress{
  fill:none;
  stroke-width:2;
  stroke-linecap:round;
  stroke-dasharray:119.38;
  stroke-dashoffset:119.38;
  transition:stroke-dashoffset .14s linear;
}

/* 箭头 + 悬浮微动 */
.back-to-top-arrow{position:relative;width:20px;height:20px;transition:transform .25s ease}
.back-to-top:hover .back-to-top-arrow,.back-to-top:focus-visible .back-to-top-arrow{animation:backTopArrow 1.1s ease-in-out infinite}

/* 呼吸光环 */
.back-to-top.is-visible:before{
  content:"";
  position:absolute;
  inset:-2px;
  border-radius:50%;
  border:1px solid rgba(120,170,255,.3);
  animation:backTopHalo 3.2s ease-out infinite;
  pointer-events:none;
}

/* 悬浮文字提示 */
.back-to-top-label{
  position:absolute;
  right:calc(100% + 10px);
  top:50%;
  padding:6px 11px;
  border:1px solid rgba(126,169,255,.22);
  border-radius:9px;
  background:rgba(12,20,40,.94);
  color:#d5e4ff;
  font-size:12px;
  line-height:1;
  white-space:nowrap;
  opacity:0;
  pointer-events:none;
  transform:translateY(-50%) translateX(6px);
  transition:opacity .22s ease,transform .22s ease;
}
.back-to-top:hover .back-to-top-label,.back-to-top:focus-visible .back-to-top-label{opacity:1;transform:translateY(-50%) translateX(0)}

@keyframes backTopArrow{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes backTopHalo{0%{transform:scale(.86);opacity:.75}70%{opacity:0}100%{transform:scale(1.32);opacity:0}}

/* 弹窗打开时隐藏，避免压在遮罩上 */
body.is-dialog-open .back-to-top,body.is-locked .back-to-top{opacity:0!important;visibility:hidden!important;pointer-events:none}

@media (max-width:700px){
  .back-to-top{right:16px;bottom:20px;width:46px;height:46px}
  .back-to-top-arrow{width:18px;height:18px}
  .back-to-top-label{display:none}
}
@media (prefers-reduced-motion:reduce){
  .back-to-top{transition:opacity .2s ease,transform .2s ease}
  .back-to-top.is-visible:before,
  .back-to-top:hover .back-to-top-arrow,
  .back-to-top:focus-visible .back-to-top-arrow{animation:none}
}
