/* Friends / Constellation：列表页专属星图场景；朋友详情页不受影响。 */
.friends-constellation{
  position:relative;
  width:min(1480px, calc(100vw - 32px));
  margin:12px auto 34px;
  color:var(--text);
  isolation:isolate;
}
.friends-constellation__memory-door{position:absolute;z-index:8;right:clamp(18px,2.2vw,48px);top:50%;display:flex;align-items:center;gap:10px;padding:12px 0 12px 15px;border-left:1px solid rgba(191,219,246,.38);background:linear-gradient(90deg,rgba(8,20,37,.24),transparent);color:rgba(235,245,255,.88);font-size:12px;font-weight:650;letter-spacing:.16em;text-decoration:none;transform:translateY(-50%);transition:color .2s ease,transform .2s ease,border-color .2s ease}.friends-constellation__memory-door i{font-size:21px;font-style:normal;line-height:1}.friends-constellation__memory-door:hover,.friends-constellation__memory-door:focus-visible{border-color:rgba(236,247,255,.88);color:#fff;outline:0;transform:translate(4px,-50%)}@media(max-width:760px){.friends-constellation__memory-door{right:14px;top:auto;bottom:86px;transform:none}.friends-constellation__memory-door:hover,.friends-constellation__memory-door:focus-visible{transform:translateX(3px)}}
/* 全站背景的超宽星轨在 Friends 场景内不应产生横向滚动条。 */
html:has(body .friends-constellation),
body:has(.friends-constellation){overflow-x:hidden;}
.friends-constellation::before{
  content:"";
  position:absolute;
  z-index:-2;
  inset:64px -10vw -48px;
  background:
    radial-gradient(ellipse 48% 43% at 50% 49%, rgba(74,129,198,.12), transparent 72%),
    radial-gradient(ellipse 36% 38% at 78% 22%, rgba(143,112,196,.10), transparent 75%),
    radial-gradient(ellipse 42% 38% at 12% 76%, rgba(49,115,177,.09), transparent 74%);
  pointer-events:none;
}
.friends-constellation__heading{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:28px;
  padding:22px 3.5% 14px;
}
.friends-constellation__eyebrow,
.friends-constellation__annotation-kicker{
  margin:0 0 7px;
  color:color-mix(in srgb, var(--text) 52%, transparent);
  font-size:10px;
  font-weight:700;
  letter-spacing:.2em;
}
.friends-constellation__heading h1{
  margin:0;
  font-size:clamp(32px, 4vw, 52px);
  font-weight:650;
  letter-spacing:.035em;
  line-height:1;
}
.friends-constellation__sky{
  position:relative;
  min-height:clamp(620px, 69vh, 790px);
  overflow:hidden;
  background:
    radial-gradient(circle at 20% 22%, rgba(188,220,255,.66) 0 1px, transparent 1.7px),
    radial-gradient(circle at 72% 16%, rgba(255,255,255,.44) 0 1px, transparent 1.6px),
    radial-gradient(circle at 86% 68%, rgba(151,194,252,.46) 0 1px, transparent 1.7px),
    radial-gradient(circle at 30% 84%, rgba(255,255,255,.35) 0 1px, transparent 1.5px),
    radial-gradient(ellipse 46% 52% at 49% 49%, rgba(51,100,161,.13), transparent 71%);
  background-size:174px 136px, 230px 196px, 287px 248px, 142px 180px, auto;
}
.friends-constellation__sky::before,
.friends-constellation__sky::after{
  content:"";
  position:absolute;
  inset:-20%;
  z-index:0;
  pointer-events:none;
}
.friends-constellation__sky::before{
  background:
    radial-gradient(ellipse 34% 48% at 20% 62%, rgba(52,122,194,.13), transparent 74%),
    radial-gradient(ellipse 34% 38% at 78% 23%, rgba(134,100,195,.13), transparent 76%);
  animation:friendsNebulaDrift 38s ease-in-out infinite alternate;
}
.friends-constellation__sky::after{
  border:1px solid rgba(157,197,240,.08);
  border-radius:50%;
  transform:rotate(-18deg) scaleX(1.45);
  opacity:.55;
}
.friends-constellation__nebula{position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(90deg, rgba(3,10,21,.09), transparent 28%, transparent 70%, rgba(3,10,21,.15));}
.friends-constellation__lines{position:absolute;inset:0;z-index:1;width:100%;height:100%;overflow:visible;pointer-events:none;}
.friends-constellation__line{
  stroke:rgba(188,215,244,.42);
  stroke-width:1;
  vector-effect:non-scaling-stroke;
  transition:stroke .3s ease, stroke-opacity .3s ease, stroke-width .3s ease;
}
.friends-constellation__line.is-related{stroke:rgba(220,235,252,.82);stroke-width:1.35;filter:drop-shadow(0 0 2px rgba(183,214,247,.18));}
.friends-constellation__nodes{position:absolute;inset:0;z-index:3;animation:friendsConstellationDrift 32s ease-in-out infinite alternate;}
.friends-constellation__node{
  position:absolute;
  width:84px;
  height:104px;
  transform:translate(-50%,-50%);
  border:0;
  padding:0;
  background:transparent;
  color:var(--text);
  cursor:pointer;
  text-align:center;
  text-decoration:none;
  transition:transform .28s cubic-bezier(.2,.7,.2,1), filter .28s ease;
}
.friends-constellation__node--server:nth-child(1){left:15%;top:28%;}
.friends-constellation__node--server:nth-child(2){left:31%;top:17%;}
.friends-constellation__node--server:nth-child(3){left:58%;top:24%;}
.friends-constellation__node--server:nth-child(4){left:75%;top:43%;}
.friends-constellation__node--server:nth-child(5){left:68%;top:71%;}
.friends-constellation__node--server:nth-child(6){left:29%;top:72%;}
.friends-constellation__node--server:nth-child(7){left:12%;top:57%;}
.friends-constellation__node--server:nth-child(8){left:47%;top:82%;}
.friends-constellation__node img{
  position:relative;
  z-index:2;
  display:block;
  width:64px;
  height:64px;
  margin:0 auto;
  border:1px solid rgba(218,232,247,.48);
  border-radius:50%;
  object-fit:cover;
  background:rgba(16,30,48,.82);
  box-shadow:0 0 0 4px rgba(139,183,228,.035);
  transition:border-color .28s ease, box-shadow .28s ease, transform .28s cubic-bezier(.2,.7,.2,1);
}
.friends-constellation__node-halo{
  position:absolute;
  z-index:1;
  left:50%;
  top:32px;
  width:76px;
  height:76px;
  border:1px solid rgba(160,200,239,.18);
  border-radius:50%;
  transform:translate(-50%,-50%) scale(.88);
  opacity:.42;
  transition:opacity .28s ease, transform .28s ease, border-color .28s ease;
}
.friends-constellation__node-name{
  display:block;
  margin-top:9px;
  overflow:hidden;
  color:rgba(232,240,249,.77);
  font-size:12px;
  font-weight:500;
  letter-spacing:.035em;
  text-overflow:ellipsis;
  text-shadow:0 1px 14px rgba(2,9,19,.7);
  white-space:nowrap;
  transition:color .28s ease;
}
:where(.friends-constellation__sky:not(.is-moving)) .friends-constellation__node:hover,
.friends-constellation__node:focus-visible,
.friends-constellation__node.is-selected{transform:translate(-50%,-50%) scale(1.06);outline:0;}
:where(.friends-constellation__sky:not(.is-moving)) .friends-constellation__node:hover img,
.friends-constellation__node:focus-visible img,
.friends-constellation__node.is-selected img{border-color:rgba(239,247,255,.92);box-shadow:0 0 0 5px rgba(159,199,239,.09),0 0 22px rgba(159,199,239,.12);}
:where(.friends-constellation__sky:not(.is-moving)) .friends-constellation__node:hover .friends-constellation__node-halo,
.friends-constellation__node:focus-visible .friends-constellation__node-halo,
.friends-constellation__node.is-selected .friends-constellation__node-halo{opacity:.88;transform:translate(-50%,-50%) scale(1);border-color:rgba(208,231,252,.6);}
:where(.friends-constellation__sky:not(.is-moving)) .friends-constellation__node:hover .friends-constellation__node-name,
.friends-constellation__node:focus-visible .friends-constellation__node-name,
.friends-constellation__node.is-selected .friends-constellation__node-name{color:#f5f9ff;}
.friends-constellation__core{
  position:absolute;
  z-index:4;
  left:50%;
  top:50%;
  width:126px;
  height:150px;
  transform:translate(-50%,-50%);
  border:0;
  padding:0;
  background:transparent;
  color:var(--text);
  cursor:pointer;
}
.friends-constellation__core img{
  position:relative;
  z-index:2;
  display:block;
  width:96px;
  height:96px;
  margin:0 auto;
  border:1px solid rgba(231,243,255,.72);
  border-radius:50%;
  object-fit:cover;
  background:rgba(13,29,48,.82);
  box-shadow:0 0 0 7px rgba(169,207,245,.05),0 0 32px rgba(156,199,241,.13);
  animation:friendsCoreBreath 4.8s ease-in-out infinite;
}
.friends-constellation__core-orbit,
.friends-constellation__core-orbit::after{position:absolute;content:"";inset:2px;border:1px solid rgba(187,218,247,.3);border-radius:50%;}
.friends-constellation__core-orbit{z-index:1;transform:scaleX(1.18) rotate(-24deg);}
.friends-constellation__core-orbit::after{inset:10px;border-color:rgba(187,218,247,.15);transform:rotate(72deg) scaleX(.9);}
.friends-constellation__core-name{display:block;margin-top:11px;color:rgba(244,248,255,.93);font-size:13px;letter-spacing:.1em;text-shadow:0 1px 18px rgba(0,0,0,.7);}
:where(.friends-constellation__sky:not(.is-moving)) .friends-constellation__core:hover img,.friends-constellation__core:focus-visible img{border-color:#fff;box-shadow:0 0 0 8px rgba(169,207,245,.09),0 0 38px rgba(156,199,241,.18);}
.friends-constellation__core:focus-visible{outline:0;}
.friends-constellation__annotation{
  position:absolute;
  z-index:4;
  right:5.5%;
  bottom:8.5%;
  width:min(304px, 31%);
  padding:0 0 0 16px;
  color:rgba(233,241,250,.86);
  background:linear-gradient(90deg, rgba(10,22,38,.32), transparent 86%);
  transition:opacity .26s ease, transform .26s cubic-bezier(.2,.7,.2,1);
}
.friends-constellation__annotation-rule{display:block;width:100%;height:1px;margin-bottom:12px;background:linear-gradient(90deg, rgba(206,225,245,.68), rgba(206,225,245,0));}
.friends-constellation__annotation h2{margin:0 0 7px;font-size:clamp(21px,2.2vw,30px);font-weight:550;letter-spacing:.04em;}
.friends-constellation__annotation > p:not(.friends-constellation__annotation-kicker){min-height:2.9em;margin:0;color:rgba(208,222,237,.66);font-size:13px;line-height:1.55;}
.friends-constellation__annotation-meta{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:12px;color:rgba(215,228,241,.55);font-size:10px;letter-spacing:.07em;}
.friends-constellation__annotation a{display:inline-block;margin-top:15px;color:rgba(239,246,255,.94);font-size:11px;font-weight:700;letter-spacing:.13em;text-decoration:none;}
.friends-constellation__annotation a:hover{color:#fff;text-decoration:underline;text-underline-offset:4px;}
.friends-constellation__meteor{position:absolute;z-index:2;width:140px;height:1px;opacity:0;pointer-events:none;background:linear-gradient(90deg, transparent, rgba(235,246,255,.8), transparent);filter:drop-shadow(0 0 3px rgba(194,224,255,.42));transform:rotate(-27deg);animation:friendsMeteor 15s linear infinite;}
.friends-constellation__meteor--one{top:17%;left:-18%;animation-delay:4s;}
.friends-constellation__meteor--two{top:61%;left:-22%;width:104px;animation-delay:11s;animation-duration:19s;}
.friends-constellation__empty{position:absolute;inset:0;z-index:6;display:grid;place-items:center;color:rgba(228,237,248,.7);}
.friends-constellation__empty[hidden]{display:none;}
@keyframes friendsNebulaDrift{from{transform:translate3d(-5px,-2px,0)}to{transform:translate3d(6px,4px,0)}}
@keyframes friendsConstellationDrift{from{transform:translate3d(-3px,2px,0)}to{transform:translate3d(4px,-3px,0)}}
@keyframes friendsCoreBreath{0%,100%{filter:brightness(.96);transform:scale(.985)}50%{filter:brightness(1.07);transform:scale(1.015)}}
@keyframes friendsMeteor{0%,78%,100%{opacity:0;transform:translate3d(0,0,0) rotate(-27deg)}80%{opacity:0}82%,87%{opacity:.86}90%{opacity:0;transform:translate3d(145vw,61vh,0) rotate(-27deg)}}
@media (max-width: 900px){
  .friends-constellation{width:calc(100vw - 24px)}
  .friends-constellation__heading{padding-inline:2%}
  .friends-constellation__sky{min-height:690px}
  .friends-constellation__annotation{right:4%;bottom:5%;width:min(330px,45%)}
}
@media (max-width: 760px){
  .friends-constellation{width:100%;margin:0 auto 28px}
  .friends-constellation__heading{align-items:flex-start;flex-direction:column;gap:16px;padding:22px 22px 10px}
  .friends-constellation__heading h1{font-size:34px}
  .friends-constellation__sky{min-height:760px;background-size:136px 112px, 182px 156px, 226px 198px, 118px 142px, auto;}
  .friends-constellation__core{left:50%;top:43%;width:112px;height:135px}
  .friends-constellation__core img{width:84px;height:84px}
  .friends-constellation__node{width:70px;height:91px}
  .friends-constellation__node img{width:54px;height:54px}
  .friends-constellation__node-halo{top:27px;width:64px;height:64px}
  .friends-constellation__node-name{margin-top:7px;font-size:11px}
  .friends-constellation__annotation{right:18px;bottom:26px;width:calc(100% - 36px);padding-left:13px;background:linear-gradient(90deg,rgba(10,22,38,.48),transparent 96%)}
  .friends-constellation__annotation h2{font-size:23px}.friends-constellation__annotation > p:not(.friends-constellation__annotation-kicker){font-size:12px}
  .friends-constellation__nodes{animation-duration:38s}.friends-constellation__meteor--two{display:none}
  .friends-constellation__results{padding:3px 22px 0}
}
@media (prefers-reduced-motion: reduce){
  .friends-constellation__sky::before,.friends-constellation__nodes,.friends-constellation__core img,.friends-constellation__meteor{animation:none!important}
  .friends-constellation__meteor{display:none}
  .friends-constellation__node,.friends-constellation__node img,.friends-constellation__node-halo,.friends-constellation__annotation,.friends-constellation__line{transition-duration:.01ms!important}
}

/* v21.1：Friends 本身就是画布，不再保留容器边距、标题或资料面板。 */
html:has(body .friends-constellation) main.container{
  position:relative;
  width:100%!important;
  max-width:none!important;
  min-height:calc(100svh - 72px);
  margin:0!important;
  padding:0!important;
}
/* Friends 是完整场景：清除固定页眉给正文预留的顶部空间，所有 HUD 覆盖在画布之上。 */
html.has-desktop-fixed-nav:has(body .friends-constellation) body{
  padding-top:0!important;
}
.friends-constellation{
  width:100vw!important;
  min-height:calc(100svh - 72px);
  margin:0!important;
}
.friends-constellation::before{inset:0;background:radial-gradient(ellipse 54% 62% at 50% 48%, rgba(74,129,198,.11), transparent 74%);}
.friends-constellation__sky{
  min-height:100svh!important;
  width:100%;
}
/* 线和节点处于同一静态坐标系，避免慢漂移造成端点偏离头像。 */
.friends-constellation__nodes{animation:none!important;}
.friends-constellation__node-name,
.friends-constellation__core-name{
  opacity:0;
  transition:opacity .2s ease;
}
:where(.friends-constellation__sky:not(.is-moving)) .friends-constellation__node:hover .friends-constellation__node-name,
.friends-constellation__node:focus-visible .friends-constellation__node-name,
.friends-constellation__node.is-selected .friends-constellation__node-name,
:where(.friends-constellation__sky:not(.is-moving)) .friends-constellation__core:hover .friends-constellation__core-name,
.friends-constellation__core:focus-visible .friends-constellation__core-name{opacity:1;}
@media (max-width:760px){
  html:has(body .friends-constellation) main.container{min-height:calc(100svh - 118px);}
  .friends-constellation,.friends-constellation__sky{min-height:calc(100svh - 118px)!important;}
}

/* Friends 背景延伸到导航后方，避免顶部像另一个矩形页面。 */
body:has(.friends-constellation) .site-bg-layer{height:100svh!important;}
body:has(.friends-constellation) .site-bg-layer::after{background:rgba(7,18,34,.16)!important;}
body:has(.friends-constellation){background:#071426!important;}
html[data-theme="light"]:has(body .friends-constellation){background:#071426!important;}
html[data-theme="light"] body:has(.friends-constellation){
  --bg:#0f172a;
  --panel:#111c2e;
  --panel-2:#13233a;
  --text:#e6f0ff;
  --muted:#a8bad1;
  --muted-2:#7e91aa;
  --border:#243449;
  --accent:#38bdf8;
  --accent-2:#60a5fa;
  --soft-blue:#132b42;
  --warm:#1f2333;
  --shadow:0 18px 45px rgba(0,0,0,.22);
}
body:has(.friends-constellation) .site-footer,
body:has(.friends-constellation) .footer{display:none!important;}
body:has(.friends-constellation) .modern-site-header{
  background:linear-gradient(180deg, rgba(6,15,29,.52), rgba(6,15,29,.15))!important;
  border-bottom-color:rgba(177,211,243,.10)!important;
  box-shadow:none!important;
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
}
/* 星图始终维持夜空画布，因此右上角只保留白色占位图标。 */
body:has(.friends-constellation) .modern-site-header .header-icons .icon-btn{ color:rgba(248,251,255,.92)!important; }

/* 头像 hover 信息橱窗：只在交互时出现，保持小而独立。 */
.friends-constellation__hover-card{
  position:absolute;
  z-index:10;
  display:grid;
  grid-template-columns:66px minmax(0,1fr);
  gap:13px;
  width:280px;
  padding:12px;
  border:1px solid rgba(178,211,243,.28);
  border-radius:5px;
  background:
    linear-gradient(135deg, rgba(33,58,83,.94), rgba(12,25,42,.96)),
    radial-gradient(circle at top left, rgba(118,178,232,.18), transparent 55%);
  box-shadow:0 14px 34px rgba(0,0,0,.34), inset 0 1px 0 rgba(237,247,255,.09);
  color:#e8f3fc;
  pointer-events:none;
  transform:translateY(0);
  animation:friendsHoverCardIn .18s cubic-bezier(.2,.75,.2,1);
}
.friends-constellation__hover-card[hidden]{display:none;}
.friends-constellation__hover-card img{width:66px;height:66px;border:1px solid rgba(225,241,255,.45);border-radius:3px;object-fit:cover;background:#16263a;}
.friends-constellation__hover-card h2{margin:2px 0 6px;font-size:16px;font-weight:650;line-height:1.15;letter-spacing:.02em;}
.friends-constellation__hover-card p{display:-webkit-box;margin:0;overflow:hidden;color:rgba(222,237,250,.72);font-size:12px;line-height:1.5;-webkit-box-orient:vertical;-webkit-line-clamp:2;}
@keyframes friendsHoverCardIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:980px){
  /* 触屏没有可靠 hover：资料仅由一次明确点按打开，避免拖图时误显。 */
  .friends-constellation__node:hover:not(.is-selected) .friends-constellation__node-name{opacity:0!important;}
  .friends-constellation__hover-card{
    width:min(280px,calc(100% - 32px));
    grid-template-columns:56px minmax(0,1fr);
    gap:10px;
    padding:10px;
  }
  .friends-constellation__hover-card img{width:56px;height:56px;}
  .friends-constellation__hover-card h2{font-size:15px;}
  .friends-constellation__hover-card p{font-size:12px;}
}
@media(max-width:760px){
  .friends-constellation__core{left:50%;top:50%;}
  .friends-constellation__sky{min-height:100svh!important;}
}

/* 主星以头像本身而非含名称的按钮框作为 50% / 50% 的视觉中心。 */
.friends-constellation__core{height:126px;}
.friends-constellation__core img{
  position:absolute;
  left:50%;
  top:50%;
  margin:0;
  transform:translate(-50%,-50%);
}
.friends-constellation__core-name{
  position:absolute;
  left:0;
  top:calc(50% + 58px);
  width:100%;
  margin:0;
  opacity:1;
  pointer-events:none;
  text-align:center;
}
@keyframes friendsCoreBreath{
  0%,100%{filter:brightness(.96);transform:translate(-50%,-50%) scale(.985)}
  50%{filter:brightness(1.07);transform:translate(-50%,-50%) scale(1.015)}
}
@media(max-width:760px){
  .friends-constellation__core{height:112px;}
  .friends-constellation__core-name{top:calc(50% + 51px);}
}

/* 星图工作区比视窗略大：新朋友可向四周延展，拖动时节点与连线始终作为一个整体。 */
.friends-constellation__sky{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;}
.friends-constellation__sky.is-dragging{cursor:grabbing;}
.friends-constellation__world{position:absolute;z-index:3;top:-22.5%;left:-30%;width:160%;height:145%;will-change:transform;transform:translate3d(0,0,0);isolation:isolate;contain:layout style;transition:none;}
.friends-constellation__world .friends-constellation__lines{width:100%;height:100%;}
.friends-constellation__world .friends-constellation__nodes{animation:none!important;}
.friends-constellation__world .friends-constellation__node,.friends-constellation__world .friends-constellation__core{cursor:pointer;}
.friends-constellation__world img{user-select:none;-webkit-user-drag:none;}
/* A soft central lens: the actual nodes and lines share the same projection. */
.friends-constellation__world :is(.friends-constellation__node,.friends-constellation__core){
  transform:translate(calc(-50% + var(--lens-x,0px)),calc(-50% + var(--lens-y,0px))) scale(var(--lens-scale,1));
  transform-origin:50% var(--lens-origin-y,50%);
  transition:filter .2s ease;
  /* Only the world needs a forced compositing layer. Let the browser raster
     portraits with their SVG links, rather than forcing a layer per avatar. */
  will-change:auto;
  backface-visibility:visible;
}
.friends-constellation__edge-vignette{position:absolute;z-index:6;inset:0;overflow:hidden;pointer-events:none;box-shadow:inset 0 0 clamp(68px,9vw,172px) rgba(2,9,21,.36);}
.friends-constellation__edge-vignette::before{
  position:absolute;inset:0;content:"";
  backdrop-filter:blur(var(--galaxy-edge-blur,2.5px));-webkit-backdrop-filter:blur(var(--galaxy-edge-blur,2.5px));
  mask-image:radial-gradient(ellipse 62% 64% at var(--galaxy-focus-x,50%) var(--galaxy-focus-y,50%),transparent 28%,rgba(0,0,0,.3) 52%,#000 85%);
  -webkit-mask-image:radial-gradient(ellipse 62% 64% at var(--galaxy-focus-x,50%) var(--galaxy-focus-y,50%),transparent 28%,rgba(0,0,0,.3) 52%,#000 85%);
}
.friends-constellation__edge-vignette::after{position:absolute;inset:0;content:"";background:radial-gradient(ellipse 65% 65% at var(--galaxy-focus-x,50%) var(--galaxy-focus-y,50%),rgba(164,209,255,.045),transparent 35%,rgba(3,10,24,.13) 65%,rgba(2,8,19,.42));}
/* Keep the fixed blur/mask paint boundary independent of the moving world.
   No extra 3D promotion or backface culling; blur and mask values stay intact.
   Do not paint-contain the world itself: edge avatars/glows must not be cut. */
.friends-constellation__edge-vignette{contain:paint;transform:none;backface-visibility:visible;}
@media(prefers-reduced-motion:reduce){.friends-constellation__edge-vignette::before{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);}}
@media(max-width:760px){
  /* 更大的可拖动世界换取更宽松的头像间距；初始窗口仍对准中心主星。 */
  .friends-constellation__world{top:-30%;left:-45%;width:190%;height:160%;}
  .friends-constellation__edge-vignette{box-shadow:inset 0 0 68px rgba(2,9,21,.38);}
}
@media(max-width:980px){
  /* 手机端只保留静态星空和柔焦；流星与漂移会让连续拖图产生额外重绘。 */
  .friends-constellation__sky::before,
  .friends-constellation__meteor{display:none!important;animation:none!important;}
  .friends-constellation__edge-vignette::before{
    backdrop-filter:blur(2px)!important;
    -webkit-backdrop-filter:blur(2px)!important;
  }
}
