:root{
  --bg:#0a0e13; --panel:#10171f; --panel-2:#151e28; --panel-3:#1b2632;
  --border:#22303d; --text:#e7eef5; --muted:#8698a8; --muted-2:#5f7180;
  --accent:#f0b429; --accent-2:#38bdf8; --danger:#e0574d; --ok:#3f9d7a;
  --radius:14px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:
    radial-gradient(1200px 600px at 15% -10%, #16212e 0%, transparent 60%),
    radial-gradient(1000px 500px at 100% 0%, #12222b 0%, transparent 55%),
    var(--bg);
  color:var(--text);
  font-family:"Segoe UI","PingFang SC","Microsoft YaHei",Helvetica,Arial,sans-serif;
  font-size:15px; line-height:1.6; min-height:100vh;
}
a{color:var(--accent-2);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1180px;margin:0 auto;padding:0 22px}

/* ---------- top bar ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(10,14,19,.88);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:18px;height:62px}
.brand{display:flex;align-items:center;gap:10px;color:var(--text)}
.brand:hover{text-decoration:none}
.brand-mark{color:var(--accent);font-size:22px;line-height:1}
.brand-text strong{font-size:17px;letter-spacing:.3px;display:block}
.brand-text em{font-style:normal;font-size:11px;color:var(--muted);letter-spacing:2px}
.nav{display:flex;gap:4px;flex-wrap:wrap}
.nav a{color:var(--muted);padding:7px 12px;border-radius:9px;font-size:14px}
.nav a:hover{color:var(--text);background:var(--panel-2);text-decoration:none}
.nav a.active{color:var(--accent);background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--border)}
.lock{font-size:10px;margin-left:3px;opacity:.7}
.tagline{background:linear-gradient(90deg,rgba(240,180,41,.10),transparent);border-bottom:1px solid var(--border);font-size:12.5px;color:var(--muted);padding:6px 0}
.tagline b{color:var(--accent);font-weight:600}

.main{padding:26px 22px 60px}

/* ---------- flashes ---------- */
.flashes{margin-bottom:16px;display:flex;flex-direction:column;gap:8px}
.flash{padding:10px 14px;border-radius:10px;font-size:13.5px;border:1px solid var(--border);background:var(--panel)}
.flash-ok{border-color:#2c5c4a;background:#12241d;color:#9de0c2}
.flash-err{border-color:#5c2c2c;background:#241212;color:#f0a9a3}
.flash-warn{border-color:#5c4a2c;background:#241d12;color:#f0d9a3}

/* ---------- headings ---------- */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.page-head h1{font-size:24px;margin:0;letter-spacing:.4px}
.page-head p{margin:4px 0 0;color:var(--muted);font-size:13.5px}

/* ---------- filter bar ---------- */
.filterbar{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:20px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.chip{padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:var(--panel-2);color:var(--muted);font-size:13px}
.chip:hover{text-decoration:none;color:var(--text);border-color:var(--muted-2)}
.chip.on{color:#0a0e13;background:var(--accent);border-color:var(--accent);font-weight:600}
.filter-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.field{display:flex;flex-direction:column;gap:4px}
.field label{font-size:11px;color:var(--muted-2);letter-spacing:.5px}
select,input[type=text],input[type=number],textarea{
  background:var(--panel-2);border:1px solid var(--border);color:var(--text);
  border-radius:9px;padding:8px 10px;font-size:13.5px;font-family:inherit;outline:none
}
select:focus,input:focus,textarea:focus{border-color:var(--accent-2)}
.btn{background:var(--accent);color:#0a0e13;border:none;border-radius:9px;padding:9px 16px;font-size:13.5px;font-weight:600;cursor:pointer;font-family:inherit}
.btn:hover{filter:brightness(1.08)}
.btn.ghost{background:var(--panel-2);color:var(--text);border:1px solid var(--border);font-weight:500}
.btn.ghost:hover{border-color:var(--accent-2)}

/* ---------- event cards ---------- */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media (max-width:980px){.grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:660px){.grid{grid-template-columns:1fr}.nav{display:none}}
.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:10px;transition:.18s}
.card:hover{transform:translateY(-3px);border-color:var(--muted-2);box-shadow:0 12px 30px rgba(0,0,0,.35)}
.card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tag{font-size:11.5px;padding:3px 9px;border-radius:999px;border:1px solid var(--border);color:var(--muted);background:var(--panel-2)}
.tag.cat{color:#0a0e13;font-weight:600;border:none}
.tier{font-size:11px;padding:3px 9px;border-radius:999px;font-weight:700;color:#0a0e13}
.card h3{margin:0;font-size:15.5px;line-height:1.45}
.card h3 a{color:var(--text)}
.card h3 a:hover{color:var(--accent);text-decoration:none}
.card p.summary{margin:0;color:var(--muted);font-size:13px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card .meta{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--muted-2);margin-top:auto}
.dims{display:flex;flex-direction:column;gap:5px;margin-top:2px}
.dim{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted)}
.dim span.lbl{width:52px;flex:none;color:var(--muted-2)}
.dim .bar{flex:1;height:6px;background:var(--panel-3);border-radius:4px;overflow:hidden}
.dim .bar i{display:block;height:100%;border-radius:4px}
.dim b{width:26px;text-align:right;color:var(--text);font-weight:600}
.idx{display:flex;align-items:baseline;gap:4px}
.idx b{font-size:24px;font-family:Georgia,serif}
.idx small{font-size:10px;color:var(--muted-2)}

/* ---------- pagination ---------- */
.pager{display:flex;gap:8px;justify-content:center;margin-top:26px;flex-wrap:wrap}
.pager a,.pager span{padding:6px 12px;border-radius:8px;border:1px solid var(--border);background:var(--panel);color:var(--muted);font-size:13px}
.pager span.cur{background:var(--accent);color:#0a0e13;border-color:var(--accent);font-weight:600}

/* ---------- empty ---------- */
.empty{text-align:center;padding:60px 20px;color:var(--muted)}
.empty .big{font-size:40px;margin-bottom:10px;opacity:.5}

/* ---------- detail ---------- */
.detail-head{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;align-items:flex-start;margin-bottom:22px}
.detail-head h1{font-size:26px;line-height:1.35;margin:10px 0 8px;max-width:760px}
.gauge{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px 22px;text-align:center;min-width:190px}
.gauge .num{font-size:52px;font-family:Georgia,serif;line-height:1;color:var(--accent)}
.gauge .cap{font-size:11.5px;color:var(--muted);letter-spacing:1px;margin-top:6px}
.gauge .tier{margin-top:10px;display:inline-block}
.dimcards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:22px}
@media (max-width:780px){.dimcards{grid-template-columns:1fr}}
.dimcard{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px}
.dimcard h4{margin:0 0 4px;font-size:14px}
.dimcard .val{font-size:30px;font-family:Georgia,serif;margin:2px 0 8px}
.dimcard .bar{height:8px;background:var(--panel-3);border-radius:5px;overflow:hidden;margin-bottom:10px}
.dimcard .bar i{display:block;height:100%}
.dimcard ul{margin:0;padding-left:16px;color:var(--muted);font-size:12.5px}
.article{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:22px;margin-bottom:18px}
.article h3{margin:0 0 10px;font-size:15px;color:var(--accent);letter-spacing:.5px}
.article p{margin:0 0 12px;color:#c8d4de}
.kv{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 24px;font-size:13px}
@media (max-width:660px){.kv{grid-template-columns:1fr}}
.kv div{display:flex;justify-content:space-between;border-bottom:1px dashed var(--border);padding:6px 0}
.kv span{color:var(--muted-2)}
.related{list-style:none;padding:0;margin:8px 0 0}
.related li{padding:8px 0;border-bottom:1px solid var(--border);font-size:13.5px;display:flex;justify-content:space-between;gap:10px}

/* ---------- dashboard ---------- */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}
@media (max-width:780px){.kpis{grid-template-columns:repeat(2,1fr)}}
.kpi{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}
.kpi .n{font-size:34px;font-family:Georgia,serif;line-height:1}
.kpi .l{font-size:12px;color:var(--muted);margin-top:6px;letter-spacing:.5px}
.panels{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:880px){.panels{grid-template-columns:1fr}}
.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px}
.panel h3{margin:0 0 14px;font-size:14.5px;letter-spacing:.4px}
.barlist{display:flex;flex-direction:column;gap:9px}
.barrow{display:flex;align-items:center;gap:10px;font-size:12.5px}
.barrow .nm{width:74px;flex:none;color:var(--muted);text-align:right}
.barrow .track{flex:1;height:16px;background:var(--panel-3);border-radius:5px;overflow:hidden}
.barrow .track i{display:block;height:100%;border-radius:5px}
.barrow .cnt{width:34px;text-align:right;color:var(--text);font-weight:600}
.trend{display:flex;align-items:flex-end;gap:8px;height:170px;padding-top:8px}
.trend .bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;height:100%}
.trend .bar i{width:100%;background:linear-gradient(180deg,var(--accent),#8a6a12);border-radius:5px 5px 0 0;min-height:3px}
.trend .bar .m{font-size:10px;color:var(--muted-2)}
.trend .bar .v{font-size:10px;color:var(--accent)}
.ranklist{list-style:none;margin:0;padding:0}
.ranklist li{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--border)}
.ranklist li:last-child{border-bottom:none}
.ranklist .no{width:20px;flex:none;color:var(--accent);font-family:Georgia,serif;font-weight:700}
.ranklist .ti{flex:1;font-size:13.5px}
.ranklist .sc{color:var(--muted);font-family:Georgia,serif}

/* ---------- rankings ---------- */
.rankgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
@media (max-width:880px){.rankgrid{grid-template-columns:1fr}}
.rankcol h3{margin:0 0 12px;font-size:14.5px;color:var(--accent);display:flex;justify-content:space-between}
.rankcol h3 small{color:var(--muted-2);font-weight:400;font-size:11px}
.rankcol ol{margin:0;padding-left:20px}
.rankcol li{padding:7px 0;border-bottom:1px solid var(--border);font-size:13.5px}
.rankcol li:last-child{border-bottom:none}
.rankcol li b{color:var(--accent);font-family:Georgia,serif;margin-left:6px}

/* ---------- table ---------- */
table.tbl{width:100%;border-collapse:collapse;font-size:13px}
table.tbl th,table.tbl td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}
table.tbl th{color:var(--muted-2);font-weight:500;font-size:11.5px;letter-spacing:.4px}
code{background:var(--panel-3);padding:2px 6px;border-radius:5px;font-size:12.5px}

/* ---------- footer ---------- */
.footer{border-top:1px solid var(--border);padding:20px 0;color:var(--muted-2);font-size:12.5px;text-align:center}

.form-stack{display:flex;flex-direction:column;gap:12px;max-width:720px}
.form-stack label{font-size:12.5px;color:var(--muted)}
textarea{min-height:110px;resize:vertical;width:100%}
.hint{font-size:12px;color:var(--muted-2)}

/* ---------- nav badge ---------- */
.badge{display:inline-block;min-width:16px;height:16px;line-height:16px;padding:0 5px;margin-left:5px;
  border-radius:9px;background:var(--danger);color:#fff;font-size:10.5px;font-weight:700;text-align:center;vertical-align:middle}

/* ---------- map ---------- */
.mapwrap{display:grid;grid-template-columns:1fr 220px;gap:16px}
@media (max-width:880px){.mapwrap{grid-template-columns:1fr}}
.mapcanvas{position:relative;width:100%;aspect-ratio:2/1;background:var(--panel);border:1px solid var(--border);
  border-radius:var(--radius);overflow:hidden}
.worldmap{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:fill}
.markers{position:absolute;inset:0}
.marker{position:absolute;border-radius:50%;transform:translate(-50%,-50%);opacity:.82;
  box-shadow:0 0 0 1px rgba(10,14,19,.7),0 0 10px rgba(0,0,0,.5);transition:opacity .15s,transform .15s;z-index:2}
.marker:hover{opacity:1;transform:translate(-50%,-50%) scale(1.35);z-index:5}
.marker.breaking{box-shadow:0 0 0 2px rgba(224,87,77,.85),0 0 12px rgba(224,87,77,.6)}
.maplegend{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;font-size:12.5px;height:fit-content}
.lg-title{font-size:11.5px;letter-spacing:1px;color:var(--muted-2);margin-bottom:8px}
.lg-row{display:flex;align-items:center;gap:8px;color:var(--muted);padding:3px 0}
.lg-row i{width:11px;height:11px;border-radius:50%;display:inline-block;flex:none}
.lg-hint{color:var(--muted-2);line-height:1.5}

/* ---------- 一键更新 / 影响有效期 ---------- */
.head-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.head-actions form{margin:0}
.ttl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px 14px;max-width:720px}
.ttl-grid label{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12.5px;color:var(--muted)}
.ttl-grid input{width:86px;flex:none}

/* ---------- 读者 / 已读 ---------- */
.acct{color:var(--accent) !important;font-weight:600}
.authwrap{display:flex;justify-content:center;padding:24px 0}
.authpanel{width:100%;max-width:430px}
.authpanel h2{margin:0 0 6px;font-size:19px;letter-spacing:.4px}
.card.read{opacity:.62}
.card.read:hover{opacity:.9}
.card.read .summary{color:var(--muted-2)}
.tag.readtag{background:var(--panel-3);color:var(--muted-2);border:1px dashed var(--border)}
@media (prefers-reduced-motion:reduce){.card{opacity:1 !important;transform:none !important}}

/* ---------- 市场影响信号 ---------- */
.notice{background:rgba(224,139,58,.10);border:1px solid rgba(224,139,58,.38);border-radius:var(--radius);
  padding:12px 16px;font-size:13px;line-height:1.75;margin-bottom:16px}
.dir{font-weight:700;padding:2px 10px;border-radius:8px;white-space:nowrap}
.dir.up{color:#e0574d;background:rgba(224,87,77,.12)}
.dir.down{color:#4ca36a;background:rgba(76,163,106,.12)}
.dir.flat{color:var(--muted-2);background:var(--panel-3)}
.sbar{display:inline-block;width:72px;height:6px;border-radius:3px;background:var(--panel-3);
  vertical-align:middle;margin-right:8px;overflow:hidden}
.sbar i{display:block;height:100%}
.up{color:#e0574d}
.down{color:#4ca36a}
.contrib{font-weight:700;margin-left:6px}
.sigtbl details summary{cursor:pointer;color:var(--accent);font-size:12.5px}
.drv{list-style:none;padding-left:0;margin:8px 0 0}
.drv li{padding:7px 0;border-top:1px dashed var(--border)}
.drv li:first-child{border-top:none}
.sigtbl td{vertical-align:top}
.delta{font-weight:700;font-size:12.5px;white-space:nowrap}
.delta.up{color:#e0574d}
.delta.down{color:#4ca36a}
.delta.flip{color:#e08b3a}
.delta.flat{color:var(--muted-2);font-weight:500}

/* ---------- 事件演进时间轴 ---------- */
.tl-summary{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin:2px 0 12px}
.tl-summary b{color:var(--text)}
.tl-heat{display:flex;align-items:flex-end;gap:3px;height:40px;padding:4px 0 6px;
  margin-bottom:16px;border-bottom:1px dashed var(--border)}
.tl-bar{flex:1;min-width:4px;border-radius:2px 2px 0 0;
  background:linear-gradient(180deg,var(--accent),rgba(90,127,208,.40))}
.tl{position:relative;list-style:none;margin:0;padding:0 0 0 26px}
.tl:before{content:"";position:absolute;left:7px;top:8px;bottom:10px;width:2px;background:var(--border)}
.tl-node{position:relative;padding-bottom:16px}
.tl-node:last-child{padding-bottom:2px}
.tl-node:before{content:"";position:absolute;left:-23px;top:4px;width:10px;height:10px;
  border-radius:50%;background:var(--muted-2);box-shadow:0 0 0 3px var(--panel)}
.tl-node.primary:before{background:#e08b3a;box-shadow:0 0 0 3px var(--panel),0 0 0 5px rgba(224,139,58,.22)}
.tl-when{font-size:11.5px;color:var(--muted-2);letter-spacing:.3px}
.tl-title{font-size:14px;margin:2px 0 4px;line-height:1.55}
.tl-title a{color:var(--text);text-decoration:none}
.tl-title a:hover{color:var(--accent)}
.tl-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
@media (max-width:640px){.tl-summary{gap:10px;font-size:12px}}


/* ---------- 语言筛选行 ---------- */
.chips-lang{align-items:center;padding-top:2px;border-top:1px dashed var(--border);margin-top:4px}
.chips-label{font-size:11.5px;color:var(--muted-2);letter-spacing:.5px;margin-right:2px}
.chip em{font-style:normal;font-size:10.5px;color:var(--muted-2);margin-left:4px}
.chip.on em{color:#0a0e13;opacity:.75}

/* ---------- 事件卡片语言徽标 ---------- */
.tag.lang{background:var(--panel-3);border-color:var(--border);color:var(--muted)}

/* ---------- 点评区（AI 点评 + 自然人留言） ---------- */
.cmt{background:var(--panel-2);border:1px solid var(--border);border-radius:11px;
  padding:12px 14px;margin:10px 0}
.cmt-ai{border-left:3px solid var(--accent-2)}
.cmt-human{border-left:3px solid var(--accent)}
.cmt-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.cmt-src{font-size:13px;font-weight:600}
.cmt-time{font-size:11.5px;color:var(--muted-2);margin-left:auto}
.cmt-verdict{font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;color:#0a0e13}
.v-bullish{background:#e0574d}   /* 注意：本项目语境里"利多"用暖色强调 */
.v-bearish{background:#3f9d7a}
.v-neutral{background:#c9a227}
.cmt-body{font-size:13.5px;color:#c8d4de;line-height:1.7;white-space:pre-wrap}
.cmt-list{margin-top:8px;font-size:12.5px;color:var(--muted)}
.cmt-list ul{margin:4px 0 0;padding-left:18px}
.cmt-list li{margin:3px 0}
.evd{color:var(--muted-2);font-style:italic;margin-left:4px}
.cmt-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.like-btn{cursor:pointer}

/* ---------- 译文切换 ---------- */
.trans-toggle{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0 10px}
.trans-box{background:var(--panel-2);border:1px solid var(--border);border-radius:11px;padding:12px 14px}
.trans-label{font-size:11.5px;color:var(--muted-2);letter-spacing:.5px;margin-bottom:4px}
