/* ==========================================================================
   NEXUS QUANT · 视觉样式 v2 ——「AURORA TERMINAL」冷色科技主题
   ========================================================================== */
:root{
  --bg:#03060b;
  --bg-2:#060b13;

  --panel:rgba(120,200,255,.026);
  --panel-2:rgba(120,200,255,.05);
  --line:rgba(120,200,255,.10);
  --line-soft:rgba(120,200,255,.055);

  --txt:#e6f0fb;
  --dim:#8aa2bd;
  --dim-2:#5a7089;

  --up:#19e6a6;
  --down:#ff4d6a;

  --accent:#22d3ee;
  --accent-2:#34d399;
  --accent-3:#a78bfa;
  --gold:#f6c453;

  --grad:linear-gradient(115deg,#22d3ee 0%,#34d399 58%,#a7f3d0 100%);
  --grad-soft:linear-gradient(115deg,rgba(34,211,238,.18),rgba(52,211,153,.12));

  --radius:16px;
  --font:"Inter","HarmonyOS Sans SC","PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;
  --mono:ui-monospace,"SF Mono","JetBrains Mono",Consolas,"Roboto Mono",monospace;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg);color:var(--txt);font-family:var(--font);
  -webkit-font-smoothing:antialiased;line-height:1.5;overflow-x:hidden;
  padding-bottom:env(safe-area-inset-bottom,0);
}
body[data-device="mobile"] .bg-floor{opacity:.52}
body[data-device="mobile"] .bg-scan{opacity:.78}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
::selection{background:rgba(34,211,238,.3)}

/* ================================================================ 背景层 */
.bg-layer{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:
  radial-gradient(1100px 620px at 12% -12%,rgba(34,211,238,.16),transparent 62%),
  radial-gradient(920px 560px at 92% -6%,rgba(52,211,153,.13),transparent 60%),
  radial-gradient(900px 700px at 50% 108%,rgba(167,139,250,.10),transparent 62%),
  linear-gradient(180deg,#03060b 0%,#050a12 45%,#03060b 100%);
}
/* 透视网格地面 */
.bg-floor{
  position:absolute;left:-45%;right:-45%;bottom:-6%;height:56%;
  background-image:
    linear-gradient(rgba(34,211,238,.20) 1px,transparent 1px),
    linear-gradient(90deg,rgba(34,211,238,.20) 1px,transparent 1px);
  background-size:64px 64px;
  transform:perspective(440px) rotateX(70deg);
  transform-origin:bottom center;
  mask-image:linear-gradient(to top,#000 0%,rgba(0,0,0,.5) 42%,transparent 80%);
  -webkit-mask-image:linear-gradient(to top,#000 0%,rgba(0,0,0,.5) 42%,transparent 80%);
  animation:floorScroll 5.5s linear infinite;
  opacity:.75;
}
@keyframes floorScroll{to{background-position:0 64px,0 0}}

/* 顶部平面细网格 */
.bg-grid{
  position:absolute;inset:-2px;
  background-image:linear-gradient(rgba(120,200,255,.03) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(120,200,255,.03) 1px,transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(ellipse 78% 55% at 50% 0%,#000 22%,transparent 76%);
  -webkit-mask-image:radial-gradient(ellipse 78% 55% at 50% 0%,#000 22%,transparent 76%);
  animation:gridDrift 30s linear infinite;
}
@keyframes gridDrift{to{background-position:56px 56px,56px 56px}}

/* 扫描光带 */
.bg-scan{
  position:absolute;left:0;right:0;height:220px;
  background:linear-gradient(to bottom,transparent,rgba(34,211,238,.055) 45%,rgba(52,211,153,.05) 55%,transparent);
  animation:scanMove 11s linear infinite;
}
@keyframes scanMove{0%{transform:translateY(-260px)}100%{transform:translateY(104vh)}}

/* 光晕 */
.bg-glow{position:absolute;border-radius:50%;filter:blur(130px);opacity:.42}
.glow-a{width:760px;height:480px;top:-240px;left:4%;background:radial-gradient(circle,rgba(34,211,238,.42),transparent 68%);animation:floatA 19s ease-in-out infinite}
.glow-b{width:700px;height:470px;top:-170px;right:0;background:radial-gradient(circle,rgba(52,211,153,.34),transparent 68%);animation:floatB 23s ease-in-out infinite}
@keyframes floatA{50%{transform:translate(50px,36px) scale(1.1)}}
@keyframes floatB{50%{transform:translate(-60px,26px) scale(1.08)}}
.bg-noise{position:absolute;inset:0;opacity:.14;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E")}

/* ================================================================ 顶栏 */
.topbar{
  position:sticky;top:0;z-index:60;
  background:rgba(3,6,11,.74);backdrop-filter:blur(20px) saturate(170%);
  border-bottom:1px solid var(--line-soft);
}
.topbar::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(34,211,238,.55),rgba(52,211,153,.4),transparent);
  opacity:.7;
}
.topbar-inner{
  max-width:1460px;margin:0 auto;padding:0 34px;height:64px;
  display:flex;align-items:center;gap:26px;
}
.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}
.brand-mark{
  width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  background:linear-gradient(140deg,rgba(34,211,238,.24),rgba(52,211,153,.16));
  border:1px solid rgba(34,211,238,.35);color:#7ff0ff;
  box-shadow:0 0 22px rgba(34,211,238,.25) inset,0 0 16px rgba(34,211,238,.14);
}
.brand-mark svg{width:19px;height:19px}
.brand-text{display:flex;flex-direction:column;line-height:1.15}
.brand-name{font-size:15px;font-weight:700;letter-spacing:.14em}
.brand-name em{font-style:normal;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.brand-sub{font-size:10px;color:var(--dim-2);letter-spacing:.16em}

.nav{display:flex;gap:4px;margin-left:6px}
.nav-link{padding:7px 14px;border-radius:9px;font-size:13px;color:var(--dim);transition:.22s;position:relative}
.nav-link:hover{color:var(--txt);background:rgba(34,211,238,.08)}
.nav-link.active{color:var(--txt);background:rgba(34,211,238,.13)}
.nav-link.active::after{content:"";position:absolute;left:14px;right:14px;bottom:1px;height:1.5px;background:var(--grad);border-radius:2px}

.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px}
.live-pill{
  display:flex;align-items:center;gap:7px;font-size:11.5px;letter-spacing:.06em;
  color:#7ff0d0;background:rgba(25,230,166,.08);border:1px solid rgba(25,230,166,.26);
  padding:5px 11px;border-radius:99px;
}
.live-pill.paused{color:#ffd28a;background:rgba(246,196,83,.08);border-color:rgba(246,196,83,.3)}
.live-dot{width:6px;height:6px;border-radius:50%;background:var(--up);position:relative}
.live-dot::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1px solid var(--up);animation:ping 1.9s cubic-bezier(0,0,.2,1) infinite}
.live-dot.sm{display:inline-block;width:5px;height:5px}
.live-pill.paused .live-dot{background:var(--gold)}
.live-pill.paused .live-dot::after{border-color:var(--gold);animation:none;opacity:.5}
@keyframes ping{0%{transform:scale(.6);opacity:.9}80%,100%{transform:scale(2.1);opacity:0}}

.clock{text-align:right;line-height:1.2;min-width:104px}
.clock-time{font-family:var(--mono);font-size:14px;font-weight:600;letter-spacing:.04em;font-variant-numeric:tabular-nums}
.clock-date{font-size:10.5px;color:var(--dim-2);font-family:var(--mono);letter-spacing:.04em}

.speed{display:flex;gap:3px;background:rgba(120,200,255,.05);border:1px solid var(--line-soft);border-radius:10px;padding:3px}
.speed-btn{font-size:11px;font-family:var(--mono);color:var(--dim);padding:4px 9px;border-radius:7px;transition:.2s;display:grid;place-items:center}
.speed-btn:hover{color:var(--txt);background:rgba(34,211,238,.1)}
.speed-btn.active{color:#04121a;background:var(--grad);font-weight:700}
.speed-btn.pause{padding:4px 8px}
.speed-btn.pause.active{background:rgba(246,196,83,.85);color:#1a1204}

/* ================================================================ 布局 */
main{position:relative;z-index:1;max-width:1460px;margin:0 auto;padding:0 34px 56px}

/* ================================================================ HERO */
.hero{padding:58px 0 6px}
.hero-badge{
  display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;
  color:#8ee9ff;background:rgba(34,211,238,.08);border:1px solid rgba(34,211,238,.25);
  padding:6px 14px;border-radius:99px;margin-bottom:22px;
}
.hero-badge::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px var(--accent)}
.hero h1{font-size:clamp(30px,4vw,52px);font-weight:700;letter-spacing:-.02em;line-height:1.14;max-width:900px}
.hero h1 .grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hero-sub{margin-top:18px;color:var(--dim);font-size:15px}
.hero-meta{display:flex;flex-wrap:wrap;gap:0;margin-top:34px;border:1px solid var(--line-soft);
  border-radius:14px;overflow:hidden;background:rgba(120,200,255,.02);width:fit-content;max-width:100%}
.hm{padding:14px 26px;display:flex;flex-direction:column;gap:5px;border-right:1px solid var(--line-soft);position:relative}
.hm:last-child{border-right:none}
.hm::after{content:"";position:absolute;left:0;top:0;width:100%;height:1px;background:linear-gradient(90deg,rgba(34,211,238,.5),transparent)}
.hm-k{font-size:10.5px;color:var(--dim-2);letter-spacing:.1em}
.hm-v{font-size:16px;font-weight:600;font-family:var(--mono);font-variant-numeric:tabular-nums}

/* ================================================================ KPI */
.kpi-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-top:36px}
.kpi{
  position:relative;background:linear-gradient(165deg,rgba(120,200,255,.05),rgba(120,200,255,.012));
  border:1px solid var(--line);border-radius:var(--radius);padding:17px 17px 15px;overflow:hidden;transition:.3s;
}
.kpi::before{
  content:"";position:absolute;left:0;top:0;width:22px;height:22px;
  border-top:1px solid rgba(34,211,238,.65);border-left:1px solid rgba(34,211,238,.65);
  border-top-left-radius:12px;
}
.kpi::after{
  content:"";position:absolute;right:0;bottom:0;width:22px;height:22px;
  border-bottom:1px solid rgba(52,211,153,.5);border-right:1px solid rgba(52,211,153,.5);
  border-bottom-right-radius:12px;
}
.kpi:hover{border-color:rgba(34,211,238,.32);transform:translateY(-2px);box-shadow:0 14px 34px rgba(0,0,0,.35)}
.kpi-label{font-size:11.5px;color:var(--dim);letter-spacing:.04em;display:flex;align-items:center;gap:6px}
.kpi-en{font-family:var(--mono);font-size:9px;color:var(--dim-2);letter-spacing:.12em}
.kpi-value{font-family:var(--mono);font-size:25px;font-weight:600;margin-top:9px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.kpi-foot{font-size:11px;color:var(--dim-2);margin-top:7px;font-family:var(--mono)}
.kpi-hero{background:linear-gradient(150deg,rgba(34,211,238,.12),rgba(52,211,153,.06) 58%,transparent)}
.kpi-hero .kpi-value{font-size:28px}
.kpi-accent .kpi-value{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}

/* ================================================================ 面板 */
.panel{
  position:relative;background:linear-gradient(170deg,rgba(120,200,255,.032),rgba(120,200,255,.008));
  border:1px solid var(--line);border-radius:18px;padding:22px 22px 18px;margin-top:20px;
}
.panel::before{
  content:"";position:absolute;left:-1px;top:-1px;width:26px;height:26px;
  border-top:1.5px solid rgba(34,211,238,.7);border-left:1.5px solid rgba(34,211,238,.7);
  border-top-left-radius:18px;pointer-events:none;
}
.panel::after{
  content:"";position:absolute;right:-1px;bottom:-1px;width:26px;height:26px;
  border-bottom:1.5px solid rgba(52,211,153,.55);border-right:1.5px solid rgba(52,211,153,.55);
  border-bottom-right-radius:18px;pointer-events:none;
}
.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:16px}
.ph-left{display:flex;align-items:flex-start;gap:13px}
.ph-idx{
  font-family:var(--mono);font-size:11px;color:var(--accent);letter-spacing:.1em;
  border:1px solid rgba(34,211,238,.28);background:rgba(34,211,238,.07);
  border-radius:7px;padding:5px 8px;margin-top:1px;
}
.ph-txt h2{font-size:17px;font-weight:600;letter-spacing:.01em}
.ph-txt p{font-size:11.5px;color:var(--dim-2);margin-top:4px;letter-spacing:.04em}

.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{
  font-size:12px;color:var(--dim);padding:6px 12px;border-radius:9px;
  background:rgba(120,200,255,.04);border:1px solid var(--line-soft);transition:.2s;
  display:flex;align-items:center;gap:6px;
}
.chip:hover{color:var(--txt);border-color:rgba(34,211,238,.3)}
.chip.active{color:#04121a;background:var(--grad);border-color:transparent;font-weight:600}
.chip .cdot{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.chip.active .cdot{background:#04121a;opacity:.7}

.legend-note{font-size:11px;color:var(--dim-2);display:flex;align-items:center;gap:8px;font-family:var(--mono)}
.count-pill{font-size:12px;color:var(--dim);background:rgba(120,200,255,.05);border:1px solid var(--line-soft);padding:6px 13px;border-radius:99px}
.count-pill b{color:var(--accent);font-family:var(--mono)}

.curve-stats{display:flex;flex-wrap:wrap;gap:26px;padding:2px 4px 14px}
.cs{display:flex;flex-direction:column;gap:3px;position:relative;padding-left:11px}
.cs::before{content:"";position:absolute;left:0;top:5px;bottom:4px;width:2px;border-radius:2px;background:rgba(34,211,238,.35)}
.cs-k{font-size:10.5px;color:var(--dim-2);letter-spacing:.08em;font-family:var(--mono)}
.cs-v{font-size:15px;font-weight:600;font-family:var(--mono);font-variant-numeric:tabular-nums}
.cs-v.kpi-grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}

.chart{width:100%;height:358px}
.chart-dd{height:128px}
.chart-trade{height:290px}
.chart-kline{height:430px}
.chart-label{font-size:10.5px;color:var(--dim-2);letter-spacing:.16em;margin:2px 0 -4px 4px;font-family:var(--mono)}
.chart-label span{opacity:.6}

/* ================================================================ 品种卡 */
.prod-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.prod{
  position:relative;background:linear-gradient(165deg,rgba(120,200,255,.05),rgba(120,200,255,.012));
  border:1px solid var(--line-soft);border-radius:14px;padding:15px 15px 12px;
  overflow:hidden;transition:.3s;cursor:pointer;
}
.prod::before{content:"";position:absolute;left:0;top:0;height:2px;width:100%;background:var(--paccent,#22d3ee);opacity:.9}
.prod::after{
  content:"";position:absolute;inset:0;border-radius:inherit;opacity:0;transition:.3s;
  background:radial-gradient(320px 150px at 50% 0%,var(--paccent,#22d3ee),transparent 70%);
  mix-blend-mode:screen;
}
.prod:hover{transform:translateY(-3px);border-color:rgba(34,211,238,.32);box-shadow:0 18px 40px rgba(0,0,0,.42)}
.prod:hover::after{opacity:.09}
.prod-top{display:flex;align-items:flex-start;gap:11px;position:relative;z-index:1}
.p-ico{
  width:36px;height:36px;flex:0 0 36px;border-radius:11px;display:grid;place-items:center;
  background:linear-gradient(150deg,color-mix(in srgb,var(--paccent) 26%,transparent),rgba(255,255,255,.03));
  border:1px solid color-mix(in srgb,var(--paccent) 45%,transparent);
  box-shadow:0 0 18px color-mix(in srgb,var(--paccent) 22%,transparent) inset;
}
.p-ico svg{width:21px;height:21px;display:block}
.prod-sym{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.prod-sym b{font-size:13.5px;font-weight:600;letter-spacing:.02em}
.prod-sym span{font-size:10.5px;color:var(--dim-2)}
.prod-cls{font-size:9.5px;font-family:var(--mono);letter-spacing:.1em;color:var(--dim-2);
  border:1px solid var(--line-soft);padding:2px 7px;border-radius:6px;white-space:nowrap}
.prod-price{font-family:var(--mono);font-size:19px;font-weight:600;margin-top:12px;font-variant-numeric:tabular-nums;position:relative;z-index:1}
.prod-chg{font-family:var(--mono);font-size:12px;margin-top:3px;display:flex;gap:8px;align-items:center;position:relative;z-index:1}
.spark{margin:10px 0 4px;height:34px;display:block;width:100%;position:relative;z-index:1}
.prod-foot{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--line-soft);padding-top:9px;margin-top:4px;position:relative;z-index:1}
.pf{display:flex;flex-direction:column;gap:2px}
.pf-k{font-size:9.5px;color:var(--dim-2);letter-spacing:.06em}
.pf-v{font-size:12px;font-family:var(--mono);font-weight:600}
.prod-hint{
  position:absolute;right:11px;bottom:9px;font-size:10px;color:var(--accent);
  opacity:0;transform:translateX(-4px);transition:.28s;font-family:var(--mono);z-index:2;
  background:rgba(4,9,16,.92);border:1px solid rgba(34,211,238,.32);
  padding:3px 9px;border-radius:7px;box-shadow:0 6px 18px rgba(0,0,0,.55);
}
.prod:hover .prod-hint{opacity:.9;transform:none}
.flash-up{animation:fu .7s ease-out}
.flash-down{animation:fd .7s ease-out}
@keyframes fu{0%{color:var(--up)}100%{color:inherit}}
@keyframes fd{0%{color:var(--down)}100%{color:inherit}}

/* ================================================================ 持仓 */
.pos-head,.pos-row{
  display:grid;grid-template-columns:1.5fr .9fr .9fr 1.05fr .6fr 1.1fr 1.25fr;
  gap:12px;align-items:center;
}
.pos-head{font-size:10.5px;color:var(--dim-2);letter-spacing:.08em;padding:0 14px 9px;font-family:var(--mono)}
.pos-list{display:flex;flex-direction:column;gap:6px;max-height:430px;overflow-y:auto;padding-right:4px}
.pos-row{padding:11px 14px;border-radius:11px;background:rgba(120,200,255,.028);border:1px solid var(--line-soft);font-size:12.5px;transition:.2s}
.pos-row:hover{background:rgba(34,211,238,.07);border-color:rgba(34,211,238,.22)}
.pos-sym{display:flex;align-items:center;gap:9px}
.pos-badge{font-size:10px;font-family:var(--mono);padding:2px 6px;border-radius:5px;letter-spacing:.05em}
.b-long{color:var(--up);background:rgba(25,230,166,.12);border:1px solid rgba(25,230,166,.28)}
.b-short{color:var(--down);background:rgba(255,77,106,.12);border:1px solid rgba(255,77,106,.28)}
.pos-name{display:flex;flex-direction:column;line-height:1.25}
.pos-name b{font-size:12.5px;font-weight:600}
.pos-name span{font-size:10px;color:var(--dim-2)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.prog{height:5px;border-radius:99px;background:rgba(120,200,255,.1);overflow:hidden;position:relative}
.prog i{position:absolute;left:0;top:0;bottom:0;border-radius:99px;background:var(--grad);transition:width .5s linear}
.pos-empty{padding:26px;text-align:center;color:var(--dim-2);font-size:12.5px}

/* ================================================================ 表格 */
.table-wrap{overflow-x:auto;border-radius:12px;border:1px solid var(--line-soft)}
.trades-table{width:100%;border-collapse:collapse;font-size:12.5px;min-width:1040px}
.trades-table thead th{
  position:sticky;top:0;background:#070d16;font-size:10.5px;font-weight:500;color:var(--dim-2);
  letter-spacing:.08em;text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);
  font-family:var(--mono);white-space:nowrap;z-index:2;
}
.trades-table tbody td{padding:10px 12px;border-bottom:1px solid rgba(120,200,255,.05);white-space:nowrap}
.trades-table tbody tr{cursor:pointer;transition:.16s}
.trades-table tbody tr:hover{background:rgba(34,211,238,.08)}
.ta-r{text-align:right!important}
.t-id{font-family:var(--mono);font-size:11px;color:var(--dim)}
.t-sym{display:flex;align-items:center;gap:7px}
.t-dot{width:7px;height:7px;border-radius:50%}
.t-name{font-weight:600}
.table-foot{display:flex;align-items:center;justify-content:space-between;padding-top:14px}
.table-foot span{font-size:11.5px;color:var(--dim-2);font-family:var(--mono)}
.more-btn{font-size:12px;color:var(--dim);border:1px solid var(--line);padding:7px 16px;border-radius:9px;transition:.2s}
.more-btn:hover{color:#04121a;border-color:transparent;background:var(--grad)}

.up{color:var(--up)}
.down{color:var(--down)}

/* ================================================================ 弹窗 */
.modal{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;
  background:rgba(1,3,7,.8);backdrop-filter:blur(12px);padding:24px}
.modal.open{display:flex;animation:fadeIn .22s ease}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal-card{
  width:min(780px,100%);max-height:90vh;overflow-y:auto;
  background:linear-gradient(170deg,#080e18,#04070d);
  border:1px solid rgba(34,211,238,.2);border-radius:18px;padding:22px 24px 24px;
  box-shadow:0 30px 90px rgba(0,0,0,.75),0 0 60px rgba(34,211,238,.06);
  animation:pop .28s cubic-bezier(.2,.9,.3,1.2);position:relative;
}
.modal-card::before{content:"";position:absolute;left:-1px;top:-1px;width:26px;height:26px;
  border-top:1.5px solid rgba(34,211,238,.75);border-left:1.5px solid rgba(34,211,238,.75);border-top-left-radius:18px}
.modal-card::after{content:"";position:absolute;right:-1px;bottom:-1px;width:26px;height:26px;
  border-bottom:1.5px solid rgba(52,211,153,.55);border-right:1.5px solid rgba(52,211,153,.55);border-bottom-right-radius:18px}
.modal-card.wide{width:min(1080px,100%)}
@keyframes pop{from{transform:translateY(16px) scale(.97);opacity:0}to{transform:none;opacity:1}}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:16px}
.mh-left{display:flex;align-items:center;gap:13px;min-width:0}
.mh-ico{width:42px;height:42px;flex:0 0 42px;border-radius:12px;display:grid;place-items:center;
  background:linear-gradient(150deg,color-mix(in srgb,var(--paccent) 26%,transparent),rgba(255,255,255,.03));
  border:1px solid color-mix(in srgb,var(--paccent) 45%,transparent)}
.mh-ico svg{width:24px;height:24px}
.mh-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.mh-sym{font-size:18px;font-weight:700;display:flex;align-items:baseline;gap:9px}
.mh-sym small{font-size:11.5px;color:var(--dim-2);font-weight:400}
.mh-id{font-family:var(--mono);font-size:11px;color:var(--dim-2)}
.modal-close{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;color:var(--dim);
  border:1px solid var(--line-soft);transition:.2s;flex:0 0 30px}
.modal-close:hover{color:var(--txt);background:rgba(34,211,238,.12)}
.mh-summary{display:flex;flex-wrap:wrap;gap:22px;padding:14px 16px;border-radius:12px;
  background:rgba(120,200,255,.035);border:1px solid var(--line-soft);margin-bottom:16px}
.ms{display:flex;flex-direction:column;gap:3px}
.ms-k{font-size:10px;color:var(--dim-2);letter-spacing:.08em;font-family:var(--mono)}
.ms-v{font-size:15px;font-weight:600;font-family:var(--mono)}
.kv-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-soft);
  border:1px solid var(--line-soft);border-radius:12px;overflow:hidden;margin-top:16px}
.kv{background:#060b13;padding:11px 13px;display:flex;flex-direction:column;gap:4px}
.kv-k{font-size:10px;color:var(--dim-2);letter-spacing:.06em}
.kv-v{font-size:13px;font-family:var(--mono);font-weight:600}

/* ---- K 线弹窗 ---- */
.km-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.km-quote{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.km-price{font-family:var(--mono);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;transition:color .3s}
.km-chg{font-family:var(--mono);font-size:13px}
.km-ohlc{display:flex;gap:14px;flex-wrap:wrap;font-family:var(--mono);font-size:11.5px;color:var(--dim)}
.km-ohlc b{color:var(--txt);font-weight:600}
.tf-chips{display:flex;gap:4px;background:rgba(120,200,255,.05);border:1px solid var(--line-soft);border-radius:10px;padding:3px}
.tf-btn{font-size:11.5px;font-family:var(--mono);color:var(--dim);padding:5px 11px;border-radius:7px;transition:.2s}
.tf-btn:hover{color:var(--txt);background:rgba(34,211,238,.1)}
.tf-btn.active{color:#04121a;background:var(--grad);font-weight:700}
.km-live{display:flex;align-items:center;gap:7px;font-size:11px;color:#7ff0d0;font-family:var(--mono)}

/* ================================================================ 页脚 */
.footer{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  margin-top:32px;padding-top:22px;border-top:1px solid var(--line-soft);font-size:11px;color:var(--dim-2);letter-spacing:.04em}
.brand-mini{font-family:var(--mono);letter-spacing:.16em;color:var(--dim)}

/* ================================================================ 滚动条 */
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(120,200,255,.14);border-radius:9px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:rgba(34,211,238,.3);background-clip:content-box}

/* ================================================================ 响应式 */
@media(max-width:1240px){
  .kpi-grid{grid-template-columns:repeat(3,1fr)}
  .prod-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:980px){
  .nav{display:none}
  .topbar-inner{padding:0 18px;gap:14px}
  main{padding:0 18px 44px}
  .pos-head{display:none}
  .pos-row{grid-template-columns:1.4fr 1fr 1fr;row-gap:8px}
  .kv-grid{grid-template-columns:repeat(2,1fr)}
  .hero-meta{width:100%}
  .hm{flex:1 1 33%}
}
@media(max-width:820px){
  .topbar-inner{height:auto;min-height:64px;padding:10px 18px;flex-wrap:wrap}
  .topbar-right{width:100%;justify-content:space-between;flex-wrap:wrap;gap:10px}
  .speed{margin-left:auto}
  .hero-sub{font-size:14px;line-height:1.7}
  .hero-meta{width:100%}
  .hm{flex:1 1 calc(50% - 1px);min-width:160px;padding:12px 18px}
  .kpi-grid{grid-template-columns:repeat(2,1fr)}
  .prod-grid{grid-template-columns:repeat(2,1fr)}
  .curve-stats{gap:16px}
  .table-foot{flex-direction:column;align-items:flex-start;gap:10px}
  .modal{padding:14px}
  .modal-card,.modal-card.wide{
    width:100%;max-height:calc(var(--vh,1vh) * 100 - 28px);
    padding:18px 16px 18px;
  }
  .km-bar{align-items:flex-start}
}
@media(max-width:680px){
  .topbar-inner{padding:10px 14px}
  .brand-name{font-size:14px}
  .brand-sub{display:none}
  .topbar-right{gap:8px}
  .live-pill{font-size:10.5px;padding:4px 9px}
  .speed{width:100%;justify-content:flex-end}
  .speed-btn{padding:5px 8px}
  main{padding:0 14px 36px}
  .kpi-grid{grid-template-columns:1fr}
  .prod-grid{grid-template-columns:1fr}
  .hero{padding:30px 0 4px}
  .hero-badge{font-size:9.5px;letter-spacing:.16em;padding:5px 11px;margin-bottom:18px}
  .hero h1{font-size:clamp(26px,9vw,40px);line-height:1.12}
  .hero-sub{margin-top:14px}
  .hm{flex:1 1 calc(50% - 1px);min-width:0;padding:11px 14px}
  .clock{display:none}
  .panel{padding:17px 14px 15px;border-radius:15px}
  .panel-head{gap:12px}
  .ph-left{gap:10px}
  .ph-txt h2{font-size:16px}
  .ph-txt p{font-size:11px}
  .curve-stats{gap:10px 14px}
  .cs{min-width:calc(50% - 8px)}
  .pos-row{grid-template-columns:1fr;gap:8px;padding:12px}
  .pos-row > *{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px}
  .pos-row > *::before{
    font-size:10px;color:var(--dim-2);letter-spacing:.08em;font-family:var(--mono)
  }
  .pos-row > .pos-sym{flex-direction:row;align-items:center;gap:9px}
  .pos-row > :nth-child(1)::before{content:"品种 / 方向"}
  .pos-row > :nth-child(2)::before{content:"开仓价"}
  .pos-row > :nth-child(3)::before{content:"现价"}
  .pos-row > :nth-child(4)::before{content:"名义价值"}
  .pos-row > :nth-child(5)::before{content:"杠杆"}
  .pos-row > :nth-child(6)::before{content:"浮动盈亏"}
  .pos-row > :nth-child(7)::before{content:"持仓进度"}
  .table-wrap{border-radius:10px}
  .table-foot{padding-top:12px}
  .chart{height:280px}
  .chart-trade{height:250px}
  .chart-kline{height:320px}
  .km-quote{width:100%}
  .km-price{font-size:22px}
  .km-ohlc{gap:10px 12px}
  .tf-chips{width:100%;overflow-x:auto;justify-content:flex-start}
  .tf-chips::-webkit-scrollbar{display:none}
  .footer{margin-top:26px;justify-content:center;text-align:center}
}
@media(max-width:480px){
  .topbar-right{align-items:stretch}
  .live-pill{order:1}
  .speed{order:2;width:100%;margin-left:0;justify-content:space-between}
  .speed-btn{flex:1 1 0}
  .hero-meta{display:flex}
  .hm{flex-basis:100%}
  .cs{min-width:100%}
  .modal{padding:10px}
  .modal-card,.modal-card.wide{padding:16px 14px}
  .mh-summary{gap:14px}
  .chart-kline{height:280px}
}
