﻿/* ==========================================================================
   NEXUS 发射台  视觉与动效 v4（纯增量补丁）
   --------------------------------------------------------------------------
   1) 背景系统：极光 / 星野粒子 / 透视网格 / 扫描线 / 噪点 / 光标光斑（可降级）
   2) 动效系统：滚动入场、卡片悬浮光斑、按钮波纹、顶部进度条、顶栏收缩
   3) 细节打磨：玻璃拟态、渐变描边、焦点环、滚动条、数字等宽、移动端适配
   作用域：html.nxv-on（JS 亦可移除该类一键关闭）；动效受 prefers-reduced-motion 控制
   ========================================================================== */

/* ---------------- 0. 变量与基调 ---------------- */
html.nxv-on{
  --nxv-1:#3fe0ff; --nxv-2:#8a92ff; --nxv-3:#2fe0a0;
  --nxv-line:linear-gradient(120deg,rgba(63,224,255,.55),rgba(138,146,255,.35),rgba(47,224,160,.45));
  --nxv-ease:cubic-bezier(.22,1,.36,1);
  --nxv-spring:cubic-bezier(.34,1.56,.64,1);
  --nxv-glow:0 0 34px -14px rgba(63,224,255,.85);
  scrollbar-width:thin;
  scrollbar-color:rgba(63,224,255,.35) rgba(255,255,255,.05);
}

/* ---------------- 1. 背景系统 ---------------- */

/* 1.1 底色：更深的宇宙渐变（青 / 紫 / 绿三色呼吸） */
html.nxv-on .bg{
  background:
    radial-gradient(120% 82% at 50% -12%, rgba(63,224,255,.10), transparent 56%),
    radial-gradient(90% 62% at 86% 18%, rgba(138,146,255,.09), transparent 62%),
    radial-gradient(105% 72% at 10% 88%, rgba(47,224,160,.06), transparent 62%),
    linear-gradient(180deg,#05080c 0%,#04060a 46%,#030508 100%);
}

/* 1.2 透视网格：重新启用并加入视差与双尺度网格 */
html.nxv-on .bg__grid{
  display:block !important;
  opacity:.55 !important;
  animation:gridpan 44s linear infinite !important;
  transform:translate3d(calc(var(--px,0px) * 1.35),calc(var(--py,0px) * 1.35),0) !important;
  background-image:
    linear-gradient(rgba(120,200,255,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(120,200,255,.045) 1px,transparent 1px),
    linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);
  background-size:62px 62px,62px 62px,310px 310px,310px 310px;
  will-change:transform;
}

/* 1.3 光晕：恢复呼吸与视差，重新配色 */
html.nxv-on .bg__glow{
  display:block !important;
  filter:blur(90px) !important;
  opacity:1 !important;
  animation:breathe 12s ease-in-out infinite !important;
}
html.nxv-on .bg__glow--a{
  background:radial-gradient(circle,rgba(63,224,255,.22),transparent 62%) !important;
  transform:translate(calc(-50% + var(--px,0px) * 2.4),calc(var(--py,0px) * 2.4)) !important;
}
html.nxv-on .bg__glow--b{
  background:radial-gradient(circle,rgba(138,146,255,.20),transparent 64%) !important;
  animation-duration:15s !important;
  transform:translate(calc(-50% - var(--px,0px) * 2),calc(var(--py,0px) * -2)) !important;
}

/* 1.4 扫描线：更慢更柔和 */
html.nxv-on .bg__scan{
  display:block !important;
  height:220px;
  animation:scan 20s linear infinite !important;
  background:linear-gradient(180deg,transparent,rgba(63,224,255,.055),rgba(255,255,255,.02),transparent) !important;
}

/* 1.5 暗角：顶部青色环境光 + 四周压暗 */
html.nxv-on .bg__vig{
  background:
    radial-gradient(80% 55% at 50% -8%, rgba(63,224,255,.10), transparent 62%),
    radial-gradient(120% 88% at 50% 42%, transparent 40%, rgba(0,0,0,.60) 100%) !important;
}

/* 1.6 极光（JS 注入 .nxv-aurora > i 2） */
html.nxv-on .nxv-aurora{
  position:absolute; inset:-26% -18%; z-index:0; pointer-events:none;
  opacity:.42; mix-blend-mode:screen; filter:blur(78px);
  transform:translate3d(calc(var(--px,0px) * 2.6),calc(var(--py,0px) * 2.6),0);
  will-change:transform;
}
html.nxv-on .nxv-aurora i{ position:absolute; display:block; border-radius:50% }
html.nxv-on .nxv-aurora i:nth-child(1){
  width:64vw; height:64vw; left:-8vw; top:-10vw;
  background:conic-gradient(from 200deg,rgba(63,224,255,.50),rgba(138,146,255,.32),rgba(63,224,255,0) 70%);
  animation:nxvSpin 46s linear infinite;
}
html.nxv-on .nxv-aurora i:nth-child(2){
  width:52vw; height:52vw; right:-10vw; bottom:-12vw;
  background:conic-gradient(from 20deg,rgba(47,224,160,.34),rgba(63,224,255,.24),rgba(47,224,160,0) 72%);
  animation:nxvSpin 62s linear infinite reverse;
}
@keyframes nxvSpin{ to{ transform:rotate(360deg) } }


/* 1.8 星野粒子画布 + 噪点 + 顶部滚动进度条 */
html.nxv-on .nx-bg-canvas{ display:block !important; opacity:.9 !important }
html.nxv-on .nx-grain{
  display:block !important;
  opacity:.045 !important;
  animation:nx-grain 9s steps(6) infinite !important;
}
html.nxv-on .nx-progress{
  display:block;
  background:linear-gradient(90deg,rgba(63,224,255,0),#3fe0ff 45%,#8a92ff 78%,#2fe0a0) !important;
  box-shadow:0 0 14px rgba(63,224,255,.65) !important;
}

/* ---------------- 2. 顶栏 / 搜索 ---------------- */
html.nxv-on body{ overflow-x:clip; overflow-y:visible }  /* 修正 sticky 失效 */
html.nxv-on .topbar{
  position:sticky; top:0; z-index:20;
  -webkit-backdrop-filter:blur(18px) saturate(155%) !important;
  backdrop-filter:blur(18px) saturate(155%) !important;
  background:linear-gradient(180deg,rgba(6,10,16,.88),rgba(6,10,16,.60)) !important;
  border-bottom:1px solid rgba(255,255,255,.06);
  transition:padding .38s var(--nxv-ease),background .38s ease,box-shadow .38s ease,border-color .38s ease;
}
html.nxv-on .topbar.nxv-scrolled{
  padding-top:11px; padding-bottom:6px;
  border-bottom-color:rgba(63,224,255,.14);
  box-shadow:0 22px 46px -34px rgba(0,0,0,.95), 0 1px 0 rgba(63,224,255,.08) inset;
}
html.nxv-on .brand__n{
  background:linear-gradient(100deg,#ffffff 18%,#c8f4ff 42%,#8fd9ff 58%,#ffffff 82%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
html.nxv-on .brand svg{ filter:drop-shadow(0 0 10px rgba(63,224,255,.35)) }
html.nxv-on .brand svg circle{ animation:nxvBrand 4.2s ease-in-out infinite }
@keyframes nxvBrand{
  0%,100%{ opacity:.8; filter:drop-shadow(0 0 4px rgba(63,224,255,.65)) }
  50%    { opacity:1;  filter:drop-shadow(0 0 11px rgba(63,224,255,1)) }
}
html.nxv-on .search{
  background:rgba(255,255,255,.045); border-color:rgba(255,255,255,.09);
  transition:border-color .3s var(--nxv-ease),background .3s,box-shadow .3s;
}
html.nxv-on .search:hover{ border-color:rgba(255,255,255,.16) }
html.nxv-on .search:focus-within{
  border-color:rgba(63,224,255,.62); background:rgba(63,224,255,.06);
  box-shadow:0 0 0 3px rgba(63,224,255,.13), var(--nxv-glow);
}

/* ---------------- 3. 通用按钮 / 交互反馈 ---------------- */
html.nxv-on :is(.btn-connect,.btn-profile,.pager button,.tk-cp,.modal__x,.bm-submit,.tk-swap__go){
  transition:transform .24s var(--nxv-spring),box-shadow .34s var(--nxv-ease),
             background-color .3s var(--nxv-ease),border-color .3s var(--nxv-ease),color .3s;
  will-change:transform;
}
html.nxv-on :is(.tk-cp,.pager button,.btn-profile):hover{ transform:translateY(-1px) }
html.nxv-on :is(.tk-cp,.pager button,.btn-profile):active,
html.nxv-on :is(.btn-connect,.bm-submit,.tk-swap__go):active{ transform:translateY(0) scale(.975) }

/* 主按钮流光：连接钱包 / 买入卖出 / 提交 */
html.nxv-on .btn-connect:after,
html.nxv-on .tk-swap__go:after,
html.nxv-on .pager button:after{
  content:""; position:absolute; top:-60%; bottom:-60%; left:0; width:22%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.5),transparent);
  transform:translate(-190%) skew(-16deg);
  transition:transform .85s var(--nxv-ease); pointer-events:none;
}
html.nxv-on .btn-connect:hover:after,
html.nxv-on .tk-swap__go:hover:after,
html.nxv-on .pager button:hover:not(:disabled):after{ transform:translate(540%) skew(-16deg) }
html.nxv-on .tk-swap__go:disabled:after{ display:none }

/* 连接成功状态呼吸（若存在 .is-on / data-state 类） */
html.nxv-on .btn-connect:has(.btn-connect__dot.is-on){
  border-color:rgba(47,224,160,.55);
  box-shadow:0 0 26px -12px rgba(47,224,160,.85);
}

/* ---------------- 4. 首屏舞台 ---------------- */
html.nxv-on .tcard__inner{
  border-radius:22px !important;
  background:linear-gradient(180deg,rgba(14,22,30,.92),rgba(8,13,19,.965)) !important;
  border:1px solid rgba(255,255,255,.09) !important;
  box-shadow:0 30px 80px -44px #000,
             0 0 0 1px rgba(63,224,255,.04) inset,
             0 1px 0 rgba(255,255,255,.06) inset !important;
  transition:border-color .5s var(--nxv-ease),box-shadow .5s var(--nxv-ease) !important;
}
html.nxv-on .slot--center .tcard__inner{
  border-color:rgba(63,224,255,.22) !important;
  animation:nxvCenter 6.8s ease-in-out infinite !important;
}
@keyframes nxvCenter{
  0%,100%{ box-shadow:0 30px 80px -44px #000,0 0 30px -22px rgba(63,224,255,.65),0 0 0 1px rgba(63,224,255,.05) inset }
  50%    { box-shadow:0 30px 80px -44px #000,0 0 62px -20px rgba(63,224,255,.95),0 0 0 1px rgba(63,224,255,.10) inset }
}
html.nxv-on .tcard:hover .tcard__inner{ border-color:rgba(63,224,255,.42) !important }
html.nxv-on .slot--left .tcard__inner,
html.nxv-on .slot--right .tcard__inner{ opacity:.97 }
html.nxv-on .deck__hint em{
  background:linear-gradient(90deg,transparent,rgba(63,224,255,.9),transparent);
  background-size:200% 100%;
  animation:nxvSlide 3.8s linear infinite;
}
@keyframes nxvSlide{ to{ background-position:-200% 0 } }

/* ---------------- 5. 网格卡片 ---------------- */
html.nxv-on .gcard{
  position:relative; isolation:isolate;
  border-radius:16px;
  border-color:rgba(255,255,255,.075);
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.015));
  transition:transform .42s var(--nxv-spring),box-shadow .42s var(--nxv-ease),
             border-color .35s ease,background .35s ease;
  animation-delay:calc(var(--nxv-i,0) * 55ms);
}
html.nxv-on .gcard:before{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit; padding:1px;
  background:var(--nxv-line);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude;
  opacity:0; transition:opacity .38s ease; pointer-events:none;
}
html.nxv-on .gcard:after{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit;
  background:radial-gradient(230px circle at var(--nxv-mx,50%) var(--nxv-my,50%),rgba(63,224,255,.15),transparent 64%);
  opacity:0; transition:opacity .32s ease; pointer-events:none;
}
html.nxv-on .gcard:hover{
  transform:translateY(-4px);
  border-color:rgba(63,224,255,.30);
  box-shadow:0 28px 54px -30px rgba(0,0,0,.95), 0 0 34px -18px rgba(63,224,255,.85);
}
html.nxv-on .gcard:hover:before{ opacity:.9 }
html.nxv-on .gcard:hover:after{ opacity:1 }
html.nxv-on .gcard:active{ transform:translateY(-1px) scale(.99) }
html.nxv-on .gcard__mk img,
html.nxv-on .gcard__mk .t-mark__img{ transition:transform .55s var(--nxv-ease) }
html.nxv-on .gcard:hover .gcard__mk img{ transform:scale(1.09) rotate(-2deg) }
html.nxv-on .gcard__p{ text-shadow:0 0 18px rgba(63,224,255,.35) }
html.nxv-on :is(.glinks a,.t-links a){
  transition:transform .3s var(--nxv-spring),background .3s,border-color .3s,color .3s;
}
html.nxv-on :is(.glinks a,.t-links a):hover{ transform:translateY(-1px) }

/* ---------------- 6. 索引条 / 分页 / 页脚 ---------------- */
html.nxv-on .indexbar{
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
}
html.nxv-on .idxbtn{ transition:transform .3s var(--nxv-spring),color .3s,border-color .3s,background .3s,box-shadow .3s }
html.nxv-on .idxbtn:hover{ transform:translateY(-2px) }
html.nxv-on .idxbtn.is-on{
  color:#eaf9ff;
  border-color:rgba(63,224,255,.5);
  background:linear-gradient(180deg,rgba(63,224,255,.18),rgba(63,224,255,.05));
  box-shadow:0 0 22px -10px rgba(63,224,255,.9), 0 1px 0 rgba(255,255,255,.06) inset;
}
html.nxv-on .grid__hd span:first-child{ position:relative }
html.nxv-on .grid__hd span:first-child:after{
  content:""; position:absolute; left:0; right:-6px; bottom:-6px; height:1px;
  background:linear-gradient(90deg,rgba(63,224,255,.75),rgba(138,146,255,.35),transparent);
  transform-origin:left; animation:nxvLine 5s var(--nxv-ease) infinite;
}
@keyframes nxvLine{
  0%,58%{ transform:scaleX(0); opacity:0 }
  72%    { transform:scaleX(1); opacity:1 }
  100%   { transform:scaleX(1); opacity:0 }
}

/* ---------------- 7. 弹窗 / 工具面板 / 表单 ---------------- */
html.nxv-on .modal__mask{
  -webkit-backdrop-filter:blur(11px) saturate(130%) !important;
  backdrop-filter:blur(11px) saturate(130%) !important;
  background:radial-gradient(90% 70% at 50% 18%,rgba(8,13,20,.72),rgba(2,4,7,.88)) !important;
}
html.nxv-on .modal__panel{
  border-radius:22px !important;
  border:1px solid rgba(255,255,255,.10) !important;
  background:linear-gradient(180deg,rgba(13,21,29,.95),rgba(7,12,18,.975)) !important;
  -webkit-backdrop-filter:blur(20px) saturate(150%) !important;
  backdrop-filter:blur(20px) saturate(150%) !important;
  box-shadow:0 54px 120px -44px rgba(0,0,0,.95),
             0 0 0 1px rgba(63,224,255,.045) inset,
             0 1px 0 rgba(255,255,255,.06) inset !important;
}
html.nxv-on .modal:not(.is-closing) .modal__panel{
  animation:nxvPanelIn .52s var(--nxv-spring) both !important;
}
@keyframes nxvPanelIn{
  from{ opacity:0; transform:translateY(20px) scale(.965) }
  to  { opacity:1; transform:translateY(0) scale(1) }
}
html.nxv-on .modal__x{ transition:transform .42s var(--nxv-spring),background .3s,border-color .3s,color .3s }
html.nxv-on .modal__x:hover{ transform:rotate(90deg) scale(1.06) }
html.nxv-on #toolModal .tk-sec{
  transition:border-color .35s ease,box-shadow .4s ease,background .35s ease;
}
html.nxv-on #toolModal .tk-sec:hover{
  border-color:rgba(255,255,255,.13);
  box-shadow:0 1px 0 rgba(255,255,255,.05) inset, 0 20px 44px -34px rgba(0,0,0,.9);
}
html.nxv-on #toolModal .tk-swap__tabs button.on{
  background:linear-gradient(180deg,rgba(63,224,255,.22),rgba(63,224,255,.07));
  box-shadow:0 0 24px -12px rgba(63,224,255,.9), 0 1px 0 rgba(255,255,255,.07) inset;
}
html.nxv-on #toolModal .tk-swap__tabs button:not(.on):hover{
  border-color:rgba(255,255,255,.2); color:var(--txt-2);
}
html.nxv-on :is(.bm-in,.bm-ta){
  background:rgba(255,255,255,.035);
  transition:border-color .28s ease,background .28s ease,box-shadow .28s ease;
}
html.nxv-on :is(.bm-in,.bm-ta):hover{ border-color:rgba(255,255,255,.2) }
html.nxv-on :is(.bm-in,.bm-ta):focus{
  border-color:rgba(63,224,255,.55);
  box-shadow:0 0 0 3px rgba(63,224,255,.13), 0 0 26px -16px rgba(63,224,255,.9);
}
html.nxv-on :is(.bm-in,.bm-ta):-webkit-autofill{
  -webkit-text-fill-color:var(--txt);
  -webkit-box-shadow:0 0 0 44px #0b141c inset;
}

/* ---------------- 8. 个人中心 / 统计卡 ---------------- */
html.nxv-on .acct{
  -webkit-backdrop-filter:blur(18px) saturate(150%) !important;
  backdrop-filter:blur(18px) saturate(150%) !important;
  background:linear-gradient(180deg,rgba(10,16,23,.90),rgba(7,11,16,.95)) !important;
  border:1px solid rgba(255,255,255,.09) !important;
  box-shadow:0 46px 100px -46px rgba(0,0,0,.95),
             0 0 0 1px rgba(63,224,255,.05) inset !important;
}
html.nxv-on .acct__li{
  transition:transform .3s var(--nxv-ease),background .3s,border-color .3s;
}
html.nxv-on .acct__li:hover{
  transform:translateX(3px);
  border-color:rgba(63,224,255,.28);
  background:rgba(63,224,255,.05);
}
html.nxv-on .stat{
  transition:transform .36s var(--nxv-spring),border-color .36s,box-shadow .36s,background .36s;
}
html.nxv-on .stat:hover{
  transform:translateY(-2px);
  border-color:rgba(63,224,255,.30);
  box-shadow:0 20px 44px -28px rgba(0,0,0,.95), 0 0 28px -16px rgba(63,224,255,.8);
}

/* ---------------- 9. 提示 / 语言药丸 ---------------- */
html.nxv-on .toast{
  -webkit-backdrop-filter:blur(18px) saturate(150%) !important;
  backdrop-filter:blur(18px) saturate(150%) !important;
  border-radius:14px;
  box-shadow:0 30px 70px -30px rgba(0,0,0,.95), 0 0 0 1px rgba(63,224,255,.07) inset !important;
}
html.nxv-on .toast:before{
  content:""; position:absolute; left:0; top:10px; bottom:10px; width:2px; border-radius:2px;
  background:linear-gradient(180deg,var(--nxv-1),var(--nxv-2)); opacity:.75;
}
html.nxv-on .nx-lang{
  -webkit-backdrop-filter:blur(16px) saturate(150%) !important;
  backdrop-filter:blur(16px) saturate(150%) !important;
}

/* ---------------- 10. 滚动条 / 焦点 / 选区 / 数字 ---------------- */
html.nxv-on{ scroll-behavior:smooth }
html.nxv-on::-webkit-scrollbar{ width:10px; height:10px }
html.nxv-on::-webkit-scrollbar-track{ background:rgba(255,255,255,.03) }
html.nxv-on::-webkit-scrollbar-thumb{
  border-radius:99px; border:2px solid rgba(4,7,10,.9);
  background:linear-gradient(180deg,rgba(63,224,255,.42),rgba(138,146,255,.36));
}
html.nxv-on::-webkit-scrollbar-thumb:hover{
  background:linear-gradient(180deg,rgba(63,224,255,.72),rgba(138,146,255,.62));
}
html.nxv-on :focus-visible{
  outline:none;
  box-shadow:0 0 0 2px rgba(5,8,12,.92),0 0 0 4px rgba(63,224,255,.55) !important;
}
html.nxv-on ::selection{ background:rgba(63,224,255,.30); color:#eaf9ff }
html.nxv-on :is(.gcard__p,.stat__v,.tk-meta,.tk-bal,.tk-total,code,.grid__hd i,kbd,samp){
  font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1,"cv01" 1;
}

/* ---------------- 11. 入场与滚动动效 ---------------- */
html.nxv-anim .nxv-reveal{
  opacity:0; transform:translateY(16px) scale(.995); filter:blur(2px);
  transition:opacity .72s var(--nxv-ease),transform .72s var(--nxv-ease),filter .72s var(--nxv-ease);
  transition-delay:calc(var(--nxv-d,0) * 1ms);
  will-change:opacity,transform;
}
html.nxv-anim .nxv-reveal.nxv-in{ opacity:1; transform:none; filter:none }
html.nxv-on .nx-ripple{ animation-duration:.62s }

/* ---------------- 12. 响应式与降级 ---------------- */
@media (max-width:960px){
  html.nxv-on .nxv-aurora{ filter:blur(52px); opacity:.30 }
  html.nxv-on .bg__glow{ filter:blur(64px) !important }
  html.nxv-on .bg__grid{ opacity:.34 !important }
  html.nxv-on .topbar.nxv-scrolled{ padding-top:9px; padding-bottom:5px }
  html.nxv-on .modal__panel{ -webkit-backdrop-filter:blur(12px) !important; backdrop-filter:blur(12px) !important }
}
@media (hover:none){
  html.nxv-on .gcard:hover{ transform:none }
  html.nxv-on .gcard:hover:after{ opacity:0 }
}
@media (prefers-reduced-motion:reduce){
  html.nxv-on :is(.nxv-aurora,.nx-bg-canvas,.nx-grain){ display:none !important }
  html.nxv-on :is(.bg__grid,.bg__glow,.bg__scan,.slot--center .tcard__inner,
                   .deck__hint em,.grid__hd span:first-child:after,.brand svg circle){
    animation:none !important;
  }
  html.nxv-anim .nxv-reveal{ opacity:1 !important; transform:none !important; filter:none !important }
}



/* ==========================================================================
   v3 追加：卡片/背景再美化  持有人不撑高卡片  全局细节与健壮性
   ========================================================================== */

/* ---- 1. 网格卡片：流光扫过 + 头像光环 + 价格渐变 ---- */
html.nxv-on .gcard{
  background-image:
    linear-gradient(118deg,transparent 36%,rgba(170,238,255,.10) 48%,rgba(255,255,255,.06) 52%,transparent 64%),
    linear-gradient(180deg,rgba(255,255,255,.058),rgba(255,255,255,.016));
  background-size:280% 100%,100% 100%;
  background-position:135% 0,0 0;
  background-repeat:no-repeat;
  transition:transform .44s var(--nxv-spring),box-shadow .44s var(--nxv-ease),
             border-color .35s ease,background-position 1.05s var(--nxv-ease);
}
html.nxv-on .gcard:hover{ background-position:-45% 0,0 0 }
html.nxv-on .gcard__mk{
  box-shadow:inset 0 1px rgba(255,255,255,.18),0 6px 18px -12px var(--c);
  transition:box-shadow .4s var(--nxv-ease),transform .4s var(--nxv-spring);
}
html.nxv-on .gcard:hover .gcard__mk{
  box-shadow:inset 0 1px rgba(255,255,255,.26),0 0 22px -6px var(--c);
  transform:translateY(-1px);
}
html.nxv-on .gcard__n b{ font-size:12.5px; letter-spacing:.05em; color:#eef7ff }
html.nxv-on .gcard__p{
  background:linear-gradient(180deg,#ffffff,#a8e4ff 88%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
  filter:drop-shadow(0 0 10px rgba(63,224,255,.25));
}
html.nxv-on .gcard__bot{ padding-top:8px; border-top:1px solid rgba(255,255,255,.05) }
html.nxv-on .gcard__bot b{ color:#cfe6f6 }

/* ---- 2. 首屏舞台卡片：更厚的光影 + 底部光晕呼吸 ---- */
html.nxv-on .tcard__inner{
  border:1px solid rgba(255,255,255,.10) !important;
  box-shadow:0 34px 90px -46px #000,
             inset 0 1px rgba(255,255,255,.07),
             inset 0 0 70px -34px rgba(63,224,255,.28) !important;
}
html.nxv-on .slot--center .tcard__inner{
  border-color:rgba(63,224,255,.26) !important;
  box-shadow:0 34px 90px -46px #000,
             inset 0 1px rgba(255,255,255,.09),
             inset 0 0 90px -40px rgba(63,224,255,.42),
             0 0 60px -26px rgba(63,224,255,.55) !important;
}
html.nxv-on .slot--center:not(.is-land) .tcard__glow{
  opacity:1; filter:blur(15px);
  animation:nxvFloor 6s ease-in-out infinite;
}
@keyframes nxvFloor{
  0%,100%{ transform:translate(-50%) scaleX(1);   opacity:.72 }
  50%    { transform:translate(-50%) scaleX(1.07); opacity:1 }
}

/* ---- 3. 背景：顶部天光 ---- */


html.nxv-on .nxv-beam{
  position:absolute; left:50%; top:-14%; width:min(880px,92vw); height:76%;
  z-index:0; pointer-events:none; transform:translateX(-50%);
  background:conic-gradient(from 180deg at 50% 0%,transparent 41%,rgba(63,224,255,.12) 50%,transparent 59%);
  filter:blur(30px); opacity:.4;
  animation:nxvBeam 9s ease-in-out infinite;
}
@keyframes nxvBeam{ 0%,100%{ opacity:.22 } 50%{ opacity:.55 } }

/* ---- 4. 工具卡片：固定高度，持有人再多也不撑高 ---- */
html.nxv-on #toolModal .modal__panel--tool{
  height:min(90vh,880px);
  max-height:min(90vh,880px);
}
html.nxv-on #toolModal .tk-holders{
  height:clamp(150px,21vh,224px);
  max-height:none;
  overflow:auto;
  overscroll-behavior:contain;
  padding-right:6px;
  -webkit-mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 18px),transparent);
  mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 18px),transparent);
}
html.nxv-on #toolModal .tk-holders>*{ flex:0 0 auto }
html.nxv-on #toolModal .tk-holders:has(.tk-hd__empty){
  height:auto; -webkit-mask-image:none; mask-image:none;
}
html.nxv-on #toolModal .tk-hrow{ transition:border-color .22s,background .22s,transform .22s,box-shadow .3s }
html.nxv-on #toolModal .tk-hrow:hover{
  transform:translateX(3px);
  box-shadow:inset 0 0 0 1px rgba(63,224,255,.12), 0 10px 22px -16px rgba(0,0,0,.9);
}
html.nxv-on #toolModal .tk-hrow__a{ overflow-wrap:anywhere }
html.nxv-on #toolModal .tk-hd__empty{ padding:20px 14px }

/* ---- 5. 全局细节与健壮性 ---- */
html.nxv-on.nxv-lock, html.nxv-on.nxv-lock body{ overflow:hidden !important }
html.nxv-on .toast{ z-index:120 !important }
html.nxv-on .nx-progress{ z-index:130 !important }
html.nxv-on #toolModal .tk-body{ scrollbar-width:thin }
html.nxv-on #toolModal .tk-body::-webkit-scrollbar{ width:8px }
html.nxv-on #toolModal .tk-body::-webkit-scrollbar-thumb{
  background:linear-gradient(180deg,rgba(63,224,255,.34),rgba(138,146,255,.30));
  border-radius:99px; border:2px solid rgba(5,8,12,.85);
}
html.nxv-on ::placeholder{ color:rgba(140,160,180,.55) }
html.nxv-on :is(.tk-hrow__a,.acct__id,.tk-addrbar__a,code){ overflow-wrap:anywhere }
html.nxv-on .tk-holders::-webkit-scrollbar{ width:6px }
html.nxv-on .tk-holders::-webkit-scrollbar-thumb{
  background:rgba(255,255,255,.16); border-radius:99px;
}
html.nxv-on .tk-holders::-webkit-scrollbar-thumb:hover{ background:rgba(63,224,255,.45) }

/* ---- 6. v3 响应式 / 降级 ---- */
@media (max-width:1060px){
  html.nxv-on #toolModal .modal__panel--tool{
    height:min(93vh,940px); max-height:min(93vh,940px);
  }
  html.nxv-on #toolModal .tk-holders{ height:clamp(138px,20vh,200px) }
  html.nxv-on .nxv-beam{ filter:blur(22px); opacity:.3 }
}
@media (prefers-reduced-motion:reduce){
  html.nxv-on .nxv-beam{ display:none !important }
  html.nxv-on .slot--center:not(.is-land) .tcard__glow{ animation:none !important }
}


/* ==========================================================================
   v4：代币工具卡片  背景与全部 UI 细节强化
   ========================================================================== */

/* ---- A. 面板背景：多层极光 + 细网格 + 内发光 ---- */
html.nxv-on #toolModal .modal__panel--tool{
  background-image:
    linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px),
    radial-gradient(120% 80% at 6% -8%, rgba(63,224,255,.12), transparent 56%),
    radial-gradient(100% 70% at 106% 6%, rgba(138,146,255,.11), transparent 58%),
    radial-gradient(90% 62% at 50% 112%, rgba(47,224,160,.07), transparent 62%),
    linear-gradient(180deg,#0b141c 0%,#080e15 55%,#060a10 100%) !important;
  background-size:46px 46px,46px 46px,auto,auto,auto,auto !important;
  background-position:0 0,0 0,0 0,0 0,0 0,0 0 !important;
  border:1px solid rgba(255,255,255,.10) !important;
  box-shadow:
    0 60px 130px -52px rgba(0,0,0,.96),
    0 0 0 1px rgba(63,224,255,.05) inset,
    0 1px 0 rgba(255,255,255,.07) inset,
    inset 0 0 120px -60px rgba(63,224,255,.35) !important;
}

/* ---- B. 头部：文案已移除，做成极简工具条 ---- */
html.nxv-on #toolModal .modal__head{
  padding:9px 12px 9px 16px;
  min-height:50px;
  justify-content:flex-end;
  align-items:center;
  background:linear-gradient(180deg,rgba(11,20,28,.94),rgba(9,15,22,.72));
  border-bottom:1px solid rgba(255,255,255,.06);
}
html.nxv-on #toolModal .modal__head:before{
  content:""; position:absolute; left:16px; right:16px; bottom:-1px; height:1px;
  background:linear-gradient(90deg,rgba(63,224,255,0),rgba(63,224,255,.45),rgba(138,146,255,.35),rgba(63,224,255,0));
  opacity:.6;
}
html.nxv-on #toolModal .modal__x{
  width:36px; height:36px;
  border-radius:12px;
  background:rgba(255,255,255,.045);
  border:1px solid rgba(255,255,255,.10);
}
html.nxv-on #toolModal .modal__x:hover{
  background:linear-gradient(180deg,rgba(255,95,122,.18),rgba(255,95,122,.07));
  border-color:rgba(255,95,122,.35);
  color:#ffd9e0;
}

/* ---- C. 分区卡片：玻璃质感 + 悬停浮起 ---- */
html.nxv-on #toolModal .tk-sec{
  border-radius:16px;
  border:1px solid rgba(255,255,255,.075);
  background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.014));
  box-shadow:0 1px 0 rgba(255,255,255,.045) inset, 0 18px 40px -34px rgba(0,0,0,.95);
  transition:border-color .35s var(--nxv-ease),box-shadow .42s var(--nxv-ease),background .42s var(--nxv-ease);
}
html.nxv-on #toolModal .tk-sec:hover{
  border-color:rgba(63,224,255,.22);
  background:linear-gradient(180deg,rgba(255,255,255,.062),rgba(255,255,255,.018));
  box-shadow:0 1px 0 rgba(255,255,255,.06) inset, 0 22px 48px -34px rgba(0,0,0,.95), 0 0 30px -20px rgba(63,224,255,.75);
}
html.nxv-on #toolModal .tk-sec__h span:first-child:before{
  background:linear-gradient(180deg,#3fe0ff,#8a92ff) !important;
  box-shadow:0 0 10px rgba(63,224,255,.7);
}
html.nxv-on #toolModal .tk-sec__h em,
html.nxv-on #toolModal .tk-sec__h .tk-sec__n{ color:#8ea6ba }

/* ---- D. 地址条 / 资料行 / 数据格 ---- */
html.nxv-on #toolModal .tk-addrbar{
  border:1px solid rgba(255,255,255,.085);
  background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.018));
  box-shadow:0 1px 0 rgba(255,255,255,.03) inset;
}
html.nxv-on #toolModal .tk-addrbar__a{
  color:#8fe3ff; text-shadow:0 0 14px rgba(63,224,255,.25);
}
html.nxv-on #toolModal .tk-meta .tk-m{
  padding:8px 11px; border-radius:11px;
  border:1px solid rgba(255,255,255,.06);
  background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.012));
  transition:border-color .28s,background .28s,transform .28s var(--nxv-spring);
}
html.nxv-on #toolModal .tk-meta .tk-m:hover{
  border-color:rgba(63,224,255,.20);
  background:rgba(63,224,255,.045);
  transform:translateX(2px);
}
html.nxv-on #toolModal .tk-cell{
  border:1px solid rgba(255,255,255,.075);
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.015));
  box-shadow:0 1px 0 rgba(255,255,255,.04) inset;
  transition:transform .32s var(--nxv-spring),border-color .3s,box-shadow .34s;
}
html.nxv-on #toolModal .tk-cell:hover{
  transform:translateY(-2px);
  border-color:rgba(63,224,255,.24);
  box-shadow:0 1px 0 rgba(255,255,255,.05) inset, 0 16px 34px -26px rgba(0,0,0,.95), 0 0 26px -16px rgba(63,224,255,.75);
}
html.nxv-on #toolModal .tk-cell b{ text-shadow:0 0 18px rgba(63,224,255,.18) }

/* ---- E. 交易区：胶囊 Tab / 输入 / 报价 / 主按钮 ---- */
html.nxv-on #toolModal .tk-swap__tabs{
  background:rgba(255,255,255,.045);
  border:1px solid rgba(255,255,255,.06);
  box-shadow:0 1px 0 rgba(255,255,255,.03) inset;
}
html.nxv-on #toolModal .tk-swap__tabs button{
  border:0; background:transparent;
  transition:background .3s var(--nxv-ease),color .3s,box-shadow .3s,transform .2s var(--nxv-spring);
}
html.nxv-on #toolModal .tk-swap__tabs button.on{
  background:linear-gradient(180deg,rgba(63,224,255,.22),rgba(63,224,255,.07));
  box-shadow:0 0 24px -12px rgba(63,224,255,.95), 0 1px 0 rgba(255,255,255,.08) inset;
  color:#e6fbff;
}
html.nxv-on #toolModal .tk-swap__tabs button:not(.on):hover{ color:#cfe3f2; background:rgba(255,255,255,.05) }
html.nxv-on #toolModal .tk-swap__row input{
  height:40px; border-radius:12px;
  border:1px solid rgba(255,255,255,.10);
  background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.02));
  transition:border-color .28s,box-shadow .3s,background .3s;
}
html.nxv-on #toolModal .tk-swap__row input:hover{ border-color:rgba(255,255,255,.18) }
html.nxv-on #toolModal .tk-swap__row input:focus{
  border-color:rgba(63,224,255,.55);
  background:rgba(63,224,255,.055);
  box-shadow:0 0 0 3px rgba(63,224,255,.12), 0 0 26px -16px rgba(63,224,255,.9);
}
html.nxv-on #toolModal #tkUseMax{
  border-radius:10px;
  border:1px solid rgba(63,224,255,.28);
  background:rgba(63,224,255,.08);
  color:#bff1ff;
  transition:background .28s,border-color .28s,transform .2s var(--nxv-spring);
}
html.nxv-on #toolModal #tkUseMax:hover{ background:rgba(63,224,255,.16); border-color:rgba(63,224,255,.5); transform:translateY(-1px) }
html.nxv-on #toolModal .tk-swap__q{
  border:1px solid rgba(255,255,255,.07);
  background:linear-gradient(180deg,rgba(63,224,255,.05),rgba(255,255,255,.018));
  box-shadow:0 1px 0 rgba(255,255,255,.035) inset;
}
html.nxv-on #toolModal .tk-swap__q b{ color:#eafcff; text-shadow:0 0 16px rgba(63,224,255,.22) }
html.nxv-on #toolModal .tk-swap__go{
  box-shadow:0 0 34px -12px rgba(63,224,255,.95), 0 1px 0 rgba(255,255,255,.5) inset;
}
html.nxv-on #toolModal .tk-swap__go:disabled{
  box-shadow:none; filter:saturate(.5) brightness(.8);
}

/* ---- F. 费用/分配行 / 小按钮 / 持有人 ---- */
html.nxv-on #toolModal .tk-div__rows>div{
  border-radius:9px;
  transition:background .25s,transform .25s var(--nxv-ease);
}
html.nxv-on #toolModal .tk-div__rows>div:hover{ background:rgba(255,255,255,.04); transform:translateX(2px) }
html.nxv-on #toolModal .tk-cp{
  border-radius:9px;
  border:1px solid rgba(255,255,255,.10);
  background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.025));
}
html.nxv-on #toolModal .tk-cp:hover{
  border-color:rgba(63,224,255,.35);
  background:linear-gradient(180deg,rgba(63,224,255,.16),rgba(63,224,255,.06));
  color:#e6fbff;
}
html.nxv-on #toolModal .tk-hrow{
  border:1px solid rgba(255,255,255,.055);
  background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.015));
}
html.nxv-on #toolModal .tk-hrow:hover{
  border-color:rgba(63,224,255,.30);
  background:linear-gradient(180deg,rgba(63,224,255,.10),rgba(63,224,255,.035));
}
html.nxv-on #toolModal .tk-hrow b{ color:#e9f6ff }
html.nxv-on #toolModal .acct__rows>div{
  border-radius:10px;
  transition:background .25s,transform .25s var(--nxv-ease);
}
html.nxv-on #toolModal .acct__rows>div:hover{ background:rgba(255,255,255,.04); transform:translateX(2px) }

/* ---- G. 滚动条与内边距微调 ---- */
html.nxv-on #toolModal .tk-body{ padding:14px 16px 18px; gap:13px }
html.nxv-on #toolModal .tk-body::-webkit-scrollbar-thumb{
  background:linear-gradient(180deg,rgba(63,224,255,.42),rgba(138,146,255,.36));
  border:2px solid rgba(6,10,16,.9);
}

/* ---- H. 窄屏降级 ---- */
@media (max-width:1060px){
  html.nxv-on #toolModal .modal__head{ min-height:46px; padding:8px 10px 8px 14px }
  html.nxv-on #toolModal .tk-body{ padding:12px 12px 16px; gap:11px }
}
