/* ============================================================
   墨金终端 · 共享页面框架 (ink.css)
   适用于: 首页 / 市场温度 / 均线推荐 / 涨停龙头
   旧 sakura 模块页 (signals/etf/hit-rate) 仅共用侧栏与数据层
   ============================================================ */

:root{
  --ink:#0a0d12; --ink2:#0d1119; --panel:#10151d; --panel2:#131924;
  --line:#1d2534; --line2:#28324a;
  --paper:#e9e4d6; --dim:#8b93a7; --faint:#5a6377;
  --up:#e5484d; --up2:#ff6b6f; --updeep:#8c2f36;
  --down:#2fa571; --down2:#4cc38a;
  --gold:#c9a86a; --gold2:#e6cf9a;
  --amber:#d99a3d; --ice:#7db3d5;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Consolas,monospace;
  --serif:'Noto Serif SC','STSong','SimSun',serif;
  --sans:'Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;
}

/* ---------- 侧栏（墨金化，覆盖 app-sidebar.css 的粉色） ---------- */
.mv-sidebar{
  background:linear-gradient(180deg,var(--ink2),var(--ink));
  border-right:1px solid var(--line);
  backdrop-filter:none;
}
.mv-sidebar-brand{border-bottom:1px solid var(--line)}
.mv-sidebar-brand a{color:var(--gold2);font-family:var(--serif);letter-spacing:.05em}
.mv-sidebar-brand small{color:var(--dim)}
.mv-sidebar-label{color:var(--gold);opacity:.75}
.mv-sidebar-nav a{color:var(--dim);border-radius:4px}
.mv-sidebar-nav a:hover{background:rgba(201,168,106,.08);color:var(--paper)}
.mv-sidebar-nav a.active{
  background:linear-gradient(135deg,rgba(201,168,106,.22),rgba(201,168,106,.08));
  color:var(--gold2);font-weight:600;border-left:2px solid var(--gold);
}

/* ---------- 页面基底 ---------- */
.ink-page{
  background:var(--ink);color:var(--paper);font-family:var(--sans);
  font-size:14px;line-height:1.6;overflow-x:hidden;min-height:100vh;
  background-image:
    linear-gradient(rgba(201,168,106,.03) 1px,transparent 1px),
    linear-gradient(90deg,rgba(201,168,106,.03) 1px,transparent 1px);
  background-size:56px 56px;
}
.ink-page::after{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:999;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");
}
.wrap{max-width:1480px;margin:0 auto;padding:0 30px 60px}

/* ---------- 跑马灯 ---------- */
.ticker{
  border-bottom:1px solid var(--line);background:var(--ink2);
  overflow:hidden;white-space:nowrap;position:relative;height:34px;display:flex;align-items:center;
}
.ticker::before,.ticker::after{content:'';position:absolute;top:0;bottom:0;width:80px;z-index:2;pointer-events:none}
.ticker::before{left:0;background:linear-gradient(90deg,var(--ink2),transparent)}
.ticker::after{right:0;background:linear-gradient(-90deg,var(--ink2),transparent)}
.ticker-track{display:inline-flex;gap:38px;animation:tick 55s linear infinite;padding-left:100%}
.ticker-track:hover{animation-play-state:paused}
@keyframes tick{to{transform:translateX(-100%)}}
.tk{font-family:var(--mono);font-size:12px;color:var(--dim);display:inline-flex;gap:7px;align-items:baseline}
.tk b{color:var(--paper);font-weight:500}
.tk .n{color:var(--up2)} .tk .g{color:var(--down2)} .tk .w{color:var(--amber)}
.tk .tag{font-size:10px;padding:1px 6px;border:1px solid var(--line2);border-radius:2px}
.tk .tag.danger{color:var(--amber);border-color:rgba(217,154,61,.5)}

/* ---------- 页眉 ---------- */
header.pg{padding:30px 0 22px;border-bottom:1px solid var(--line);position:relative}
header.pg .rule{position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--gold) 0%,transparent 55%)}
.hd-row{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap}
h1.pg{
  font-family:var(--serif);font-weight:900;font-size:clamp(24px,3vw,36px);letter-spacing:.06em;
  background:linear-gradient(180deg,var(--paper) 30%,var(--gold2));-webkit-background-clip:text;background-clip:text;color:transparent;
}
h1.pg .x{color:var(--up2);-webkit-text-fill-color:var(--up2)}
.hd-sub{color:var(--dim);font-size:13px;letter-spacing:.3em;margin-top:6px}
.hd-meta{text-align:right;font-family:var(--mono);font-size:12px;color:var(--faint)}
.hd-meta .d{color:var(--gold2);font-size:15px;font-weight:600}
.hd-meta .live{display:inline-block;margin-top:5px;padding:2px 10px;border:1px solid rgba(229,72,77,.5);color:var(--up2);border-radius:2px;font-size:11px;letter-spacing:.2em}
.hd-meta .live i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--up2);margin-right:6px;animation:blink 1.6s infinite}
@keyframes blink{50%{opacity:.15}}

/* ---------- 区块 ---------- */
.sec{margin-top:38px;opacity:0;transform:translateY(16px);animation:rise .7s ease forwards}
@keyframes rise{to{opacity:1;transform:none}}
.sec-hd{display:flex;align-items:baseline;gap:14px;margin-bottom:16px;border-bottom:1px solid var(--line);padding-bottom:10px}
.sec-hd .no{font-family:var(--mono);color:var(--gold);font-size:12px}
.sec-hd h2{font-family:var(--serif);font-size:20px;font-weight:700;letter-spacing:.12em}
.sec-hd .src{font-family:var(--mono);font-size:10px;letter-spacing:.15em;margin-left:auto;padding:2px 9px;border:1px solid var(--line2);color:var(--faint)}
.sec-hd .src.zt{color:var(--up2);border-color:rgba(229,72,77,.35)}
.sec-hd .src.mv{color:var(--down2);border-color:rgba(47,165,113,.35)}

/* ---------- KPI ---------- */
.kpis{display:grid;grid-template-columns:repeat(7,1fr);gap:12px}
.kpi{
  background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);
  padding:16px 18px 14px;position:relative;overflow:hidden;
}
.kpi::before{content:'';position:absolute;top:0;left:0;width:34px;height:2px;background:var(--gold)}
.kpi .lab{font-size:12px;color:var(--dim);letter-spacing:.14em;display:flex;justify-content:space-between;gap:4px}
.kpi .lab .u{font-family:var(--mono);font-size:9px;color:var(--faint)}
.kpi .val{font-family:var(--mono);font-size:clamp(22px,2.2vw,34px);font-weight:600;line-height:1.15;margin-top:8px;font-variant-numeric:tabular-nums}
.kpi .sub{font-size:10.5px;color:var(--faint);margin-top:4px;font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v-up{color:var(--up2)} .v-down{color:var(--down2)} .v-gold{color:var(--gold2)} .v-ice{color:var(--ice)} .v-amber{color:var(--amber)}
.kpi.ice{border-color:rgba(125,179,213,.3)} .kpi.ice::before{background:var(--ice)}
.kpi.up{border-color:rgba(229,72,77,.3)} .kpi.up::before{background:var(--up)}
.danger-banner{
  margin-top:14px;border:1px solid rgba(217,154,61,.45);background:linear-gradient(90deg,rgba(217,154,61,.14),transparent 70%);
  padding:12px 20px;display:flex;gap:14px;align-items:center;flex-wrap:wrap;
}
.danger-banner .sig{font-family:var(--serif);font-weight:900;color:var(--amber);font-size:17px;letter-spacing:.2em}
.danger-banner .dt{font-family:var(--mono);font-size:12px;color:var(--dim)}
.danger-banner .dt b{color:var(--paper);font-weight:500}

/* ---------- 面板与表格 ---------- */
.panel{background:var(--panel);border:1px solid var(--line);padding:20px 22px;position:relative}
.panel .p-t{font-size:12px;letter-spacing:.18em;color:var(--dim);margin-bottom:14px;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.panel .p-t .legend{display:flex;gap:14px;font-family:var(--mono);font-size:10px;letter-spacing:0}
.legend i{display:inline-block;width:9px;height:9px;margin-right:5px;vertical-align:-1px}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{
  font-family:var(--mono);font-size:10px;color:var(--faint);letter-spacing:.12em;text-align:right;
  padding:8px 10px;border-bottom:1px solid var(--line2);font-weight:500;white-space:nowrap;
}
th:first-child,td:first-child{text-align:left}
td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
td .cnm{font-family:var(--sans);font-weight:700;font-size:13px}
td .code{color:var(--faint);font-size:10px;display:block}
tr:hover td{background:rgba(201,168,106,.04)}
.score-bar{display:inline-flex;align-items:center;gap:8px}
.score-bar .bar-bg{width:56px;height:4px;background:var(--line);overflow:hidden}
.score-bar .bar-fg{height:100%;background:linear-gradient(90deg,var(--updeep),var(--up2))}
.pill{font-size:10px;padding:2px 8px;border-radius:2px;font-family:var(--mono)}
.pill.buy{color:var(--up2);border:1px solid rgba(229,72,77,.45);background:rgba(229,72,77,.1)}
.pill.sell{color:var(--down2);border:1px solid rgba(47,165,113,.4);background:rgba(47,165,113,.08)}
.pill.hit{color:var(--gold2);border:1px solid rgba(201,168,106,.4)}
.pill.warn{color:var(--amber);border:1px solid rgba(217,154,61,.4)}
.kpis.cols-4{grid-template-columns:repeat(4,1fr)}
.kpis.cols-2{grid-template-columns:repeat(2,1fr)}
.chain{display:inline-flex;gap:2px}
.chain i{width:7px;height:12px;background:var(--updeep);display:inline-block}
.chain i:last-child{background:var(--up2);box-shadow:0 0 6px rgba(229,72,77,.5)}
.empty{padding:36px;text-align:center;color:var(--faint);font-family:var(--mono);font-size:12px;letter-spacing:.2em}

/* ---------- 板块矩阵 ---------- */
.matrix{display:grid;grid-template-columns:repeat(auto-fill,minmax(122px,1fr));gap:8px}
.cell{border:1px solid var(--line);padding:9px 11px;position:relative;transition:.18s;background:var(--panel)}
.cell:hover{transform:translateY(-2px);border-color:var(--line2)}
.cell .nm{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cell .meta{display:flex;justify-content:space-between;align-items:baseline;margin-top:3px;font-family:var(--mono);font-size:10.5px;color:var(--faint)}
.cell .meta .lu{color:var(--up2);font-weight:600}
.cell.main{background:linear-gradient(150deg,rgba(229,72,77,.16),rgba(229,72,77,.05));border-color:rgba(229,72,77,.35)}
.cell.main .nm{color:#ffb4b6}
.cell .meta .cd{color:var(--gold2)}

/* ---------- SVG 图表 ---------- */
svg text{font-family:var(--mono)}
.bar{transform-origin:bottom;animation:grow .8s cubic-bezier(.2,.8,.2,1) both}
@keyframes grow{from{transform:scaleY(0)}}

/* ---------- 功能导航卡片（首页） ---------- */
.feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:6px}
.feat-card{
  display:block;text-decoration:none;color:var(--paper);
  background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);
  padding:22px 24px;position:relative;overflow:hidden;transition:.2s;
}
.feat-card:hover{transform:translateY(-3px);border-color:var(--gold)}
.feat-card::before{content:'';position:absolute;top:0;left:0;width:44px;height:2px;background:var(--gold)}
.feat-card.zt::before{background:var(--up)}
.feat-card .f-no{font-family:var(--mono);font-size:11px;color:var(--gold);letter-spacing:.15em}
.feat-card.zt .f-no{color:var(--up2)}
.feat-card .f-t{font-family:var(--serif);font-size:19px;font-weight:700;margin-top:6px;letter-spacing:.06em}
.feat-card .f-d{font-size:12.5px;color:var(--dim);margin-top:8px;line-height:1.7}
.feat-card .f-go{font-family:var(--mono);font-size:11px;color:var(--gold2);margin-top:12px;letter-spacing:.1em}
.feat-card:hover .f-go{text-decoration:underline}

/* ---------- 查询器 ---------- */
.qbox{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.qbox input{
  background:var(--ink2);border:1px solid var(--line2);color:var(--paper);
  font-family:var(--mono);font-size:15px;padding:10px 16px;width:220px;letter-spacing:.1em;outline:none;transition:.18s;
}
.qbox input:focus{border-color:var(--gold)}
.qbox button{
  background:var(--gold);border:none;color:var(--ink);font-family:var(--sans);font-weight:700;
  font-size:13px;letter-spacing:.25em;padding:10px 26px;cursor:pointer;transition:.18s;
}
.qbox button:hover{background:var(--gold2)}
.qbox .hint{font-family:var(--mono);font-size:11px;color:var(--faint);align-self:center}
.quick-picks{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.quick-picks button{
  background:var(--ink2);border:1px solid var(--line2);color:var(--dim);font-family:var(--mono);
  font-size:11px;padding:5px 12px;cursor:pointer;transition:.18s;
}
.quick-picks button:hover{color:var(--gold2);border-color:var(--gold)}

footer{margin-top:52px;padding-top:18px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-family:var(--mono);font-size:10.5px;color:var(--faint);letter-spacing:.15em;flex-wrap:wrap;gap:8px}
footer a{color:var(--faint);text-decoration:none}
footer a:hover{color:var(--gold2)}

/* ---------- 模块页：标签页 ---------- */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:20px;flex-wrap:wrap;align-items:center}
.tab{
  background:none;border:none;border-bottom:2px solid transparent;color:var(--dim);
  font-family:var(--sans);font-size:13px;letter-spacing:.08em;padding:10px 16px;cursor:pointer;transition:.15s;
}
.tab:hover{color:var(--paper)}
.tab.active{color:var(--gold2);border-bottom-color:var(--gold)}
.tab .cnt{font-family:var(--mono);font-size:10px;color:var(--faint);margin-left:6px;letter-spacing:0}
.tab .cnt b{color:var(--up2);font-weight:600}
.tabs .meta{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--faint);letter-spacing:.1em;white-space:nowrap}

/* ---------- 模块页：过滤器 / 按钮 ---------- */
.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.filters label{font-size:12px;color:var(--dim);display:inline-flex;gap:7px;align-items:center;letter-spacing:.05em;white-space:nowrap}
.filters input{
  background:var(--ink2);border:1px solid var(--line2);color:var(--paper);
  font-family:var(--mono);font-size:13px;padding:7px 10px;width:84px;outline:none;transition:.15s;
}
.filters input:focus{border-color:var(--gold)}
.btn{
  background:var(--gold);border:none;color:var(--ink);font-family:var(--sans);font-weight:700;
  font-size:12px;letter-spacing:.2em;padding:8px 18px;cursor:pointer;transition:.15s;
}
.btn:hover{background:var(--gold2)}
.btn.ghost{background:var(--ink2);color:var(--dim);border:1px solid var(--line2);font-weight:500}
.btn.ghost:hover{color:var(--gold2);border-color:var(--gold);background:var(--ink2)}
.btn.sm{padding:5px 12px;font-size:11px;letter-spacing:.1em}

/* ---------- 模块页：chip（主题/自选/快捷入口） ---------- */
.chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.chips .lab{font-size:12px;color:var(--dim);margin-right:2px;letter-spacing:.05em;white-space:nowrap}
.chip{
  background:var(--ink2);border:1px solid var(--line2);color:var(--dim);font-family:var(--mono);
  font-size:11px;padding:4px 10px;cursor:pointer;transition:.15s;text-decoration:none;white-space:nowrap;
}
.chip:hover{color:var(--gold2);border-color:var(--gold)}
.chip.active{color:var(--gold2);border-color:var(--gold);background:rgba(201,168,106,.1)}
.chip .s-buy{color:var(--up2)} .chip .s-sell{color:var(--down2)} .chip .s-none{color:var(--faint)}
.chip input{background:none;border:none;color:var(--paper);font-family:var(--mono);font-size:11px;width:64px;outline:none;padding:0}

/* ---------- 模块页：提示条 / 图表 / 双栏 / 表格滚动 ---------- */
.note{
  border:1px solid var(--line2);background:var(--panel2);padding:10px 16px;font-size:12.5px;
  color:var(--dim);margin-bottom:14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;letter-spacing:.03em;
}
.note.warn{border-color:rgba(217,154,61,.45);color:var(--amber);background:linear-gradient(90deg,rgba(217,154,61,.12),transparent 70%)}
.note.danger{border-color:rgba(229,72,77,.45);color:var(--up2);background:linear-gradient(90deg,rgba(229,72,77,.12),transparent 70%)}
.chart{width:100%;height:330px}
.chart.sm{height:290px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-scroll table{min-width:420px}
a{color:var(--gold2);text-decoration:none}
a:hover{text-decoration:underline}

/* ---------- 移动端侧栏边线（覆盖 mobile.css 的粉色） ---------- */
@media(max-width:768px){
  .mv-sidebar{border-bottom:1px solid var(--line);box-shadow:0 2px 14px rgba(0,0,0,.4)}
}
@media(max-width:1120px){
  .kpis{grid-template-columns:repeat(4,1fr)}
  .feat-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .feat-grid{grid-template-columns:1fr}
  .wrap{padding:0 16px 40px}
  td,th{padding:7px 6px}
}
/* ---------- 模块页移动端 ---------- */
@media(max-width:900px){
  .two-col{grid-template-columns:1fr}
}
@media(max-width:640px){
  .tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-bottom:14px}
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex:0 0 auto;padding:9px 12px;font-size:12.5px}
  .tabs .meta{display:none}
  .filters{gap:8px}
  .filters input{width:72px;padding:6px 8px}
  .chart{height:210px} .chart.sm{height:200px}
  .note{font-size:11.5px;padding:8px 12px}
  .chips .chip{font-size:10.5px;padding:4px 8px}
  .table-scroll{max-height:min(46vh,300px);overflow:auto}
  .table-scroll table{min-width:400px;font-size:11.5px}
}
