/* AI盘报 · 金融终端风（本地工作台） */
:root{
  --bg:#0a0d13; --panel:#121722; --panel2:#0e1219; --line:#242c3b;
  --txt:#d7dde8; --muted:#7d8799; --amber:#d9a441; --amber2:#e6b85c;
  --up:#e0554f; --down:#2ea389; --blue:#4c8bf5; --purple:#9b59b6;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:var(--bg);color:var(--txt);font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;
     font-size:14px;line-height:1.55}
.layout{display:flex;min-height:100vh}
.sidebar{width:208px;flex:0 0 208px;background:var(--panel2);border-right:1px solid var(--line);
         display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:18px 12px;z-index:5}
.brand{display:flex;align-items:center;gap:8px;font-family:"Noto Serif SC","Songti SC",SimSun,serif;font-weight:700;font-size:19px}
.brand-mark{width:30px;height:30px;border-radius:7px;background:linear-gradient(135deg,var(--amber),#b45309);
            color:#1a1205;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:800}
.brand-name{letter-spacing:1px}
.brand-sub{color:var(--muted);font-size:11px;margin:6px 2px 18px}
#tabs{display:flex;flex-direction:column;gap:4px}
.tab{display:flex;align-items:center;gap:9px;width:100%;padding:10px 12px;border:1px solid transparent;
     border-radius:8px;background:transparent;color:var(--muted);font-size:14px;cursor:pointer;text-align:left}
.tab .nav-ico{width:16px;text-align:center;color:var(--amber)}
.tab:hover{background:#161d2b;color:var(--txt)}
.tab.active{background:linear-gradient(90deg,rgba(217,164,65,.16),transparent);color:var(--amber2);
            border-color:rgba(217,164,65,.35)}
.side-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}
.content{flex:1;min-width:0;padding:18px 24px 40px;max-width:1440px}
.topbar{display:flex;align-items:baseline;gap:14px;margin-bottom:14px;border-bottom:1px solid var(--line);padding-bottom:12px}
.topbar h1{font-family:"Noto Serif SC","Songti SC",SimSun,serif;font-size:20px;font-weight:700;color:var(--amber2)}
.page{display:none}
.page.active{display:block}
.bar{display:flex;gap:10px;align-items:center;margin:12px 0;flex-wrap:wrap}
.bar .spacer{flex:1}
input,select{padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);
             color:var(--txt);font-size:14px;min-width:0}
select{cursor:pointer}
input:focus,select:focus{outline:none;border-color:var(--amber)}
.btn{padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);
     color:var(--txt);font-size:13px;cursor:pointer}
.btn:hover{border-color:var(--amber);color:var(--amber2)}
.btn.primary{background:var(--amber);border-color:var(--amber);color:#1a1205;font-weight:600}
.btn.primary:hover{background:var(--amber2)}
.btn.danger{background:#3f1512;border-color:#5c211c;color:#f0a8a2}
.btn.small{padding:4px 9px;font-size:12px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px;margin:10px 0}
.table-card{padding:6px 10px 10px;overflow-x:auto}
h3{margin:14px 0 6px;font-size:14px;color:var(--muted);font-weight:600}
h4{margin:10px 0 4px;font-size:13px;color:var(--muted)}
.muted{color:var(--muted);font-size:12px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:8px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
th{color:var(--muted);font-weight:600;font-size:12px}
th.sortable{cursor:pointer;user-select:none}
th.sortable:hover{color:var(--amber2)}
th .arrow{color:var(--amber);margin-left:2px}
tr.row{cursor:pointer}
tr.row:hover td{background:#151b29}
.num{font-variant-numeric:tabular-nums;font-family:Consolas,"JetBrains Mono",monospace}
.up{color:var(--up)} .down{color:var(--down)}
.sig{font-weight:700;padding:2px 9px;border-radius:999px;font-size:12px;white-space:nowrap}
.sig.买入,.sig.买{background:rgba(224,85,79,.18);color:#f29a94}
.sig.加仓{background:rgba(224,85,79,.12);color:#f0b3ae}
.sig.持有{background:rgba(125,135,153,.16);color:#c3cbd8}
.sig.观望{background:rgba(125,135,153,.12);color:#aab3c3}
.sig.减仓{background:rgba(46,163,137,.14);color:#7fd0bf}
.sig.卖出,.sig.卖{background:rgba(46,163,137,.2);color:#63c9b4}
.scorecell{display:flex;align-items:center;gap:6px}
.scorebar{width:44px;height:5px;background:#232a38;border-radius:3px;overflow:hidden}
.scorebar i{display:block;height:100%;background:linear-gradient(90deg,var(--down),var(--amber),var(--up))}
.item{display:flex;justify-content:space-between;align-items:center;padding:9px 2px;border-bottom:1px solid var(--line);gap:8px;flex-wrap:wrap}
.item:last-child{border-bottom:none}
.badge{background:var(--line);border-radius:999px;padding:2px 8px;font-size:11px;color:var(--txt)}
/* 市场情绪 */
.senti{display:flex;align-items:center;gap:22px;flex-wrap:wrap;background:linear-gradient(120deg,#141a26,#10141d)}
.senti-score{display:flex;align-items:baseline;gap:4px}
.senti-score .big{font-size:44px;font-weight:800;color:var(--amber2);font-family:Consolas,monospace}
.senti-score .unit{color:var(--muted);font-size:13px}
.senti-label{font-size:20px;font-weight:700;padding:3px 14px;border-radius:999px}
.senti-label.恐慌,.senti-label.悲观{background:rgba(46,163,137,.2);color:#7fd0bf}
.senti-label.中性{background:rgba(125,135,153,.16);color:#c3cbd8}
.senti-label.乐观,.senti-label.狂热{background:rgba(224,85,79,.2);color:#f29a94}
.senti-bar{flex:1;min-width:160px;height:10px;background:#232a38;border-radius:5px;overflow:hidden}
.senti-fill{height:100%;background:linear-gradient(90deg,#2ea389,#d9a441,#e0554f);border-radius:5px}
.senti-factors{width:100%;display:flex;gap:8px 22px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.senti-factors .f{font-size:12px;color:var(--muted)}
.senti-factors .f b{color:var(--txt);font-variant-numeric:tabular-nums}
/* 详情弹层 */
.modal{position:fixed;inset:0;background:rgba(4,6,10,.78);display:flex;align-items:flex-start;justify-content:center;
       z-index:30;padding:26px 18px;overflow-y:auto}
.modal.hidden{display:none}
.modal-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:0;width:100%;max-width:1180px}
.detail-box{max-width:1180px}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);
            position:sticky;top:0;background:var(--panel);border-radius:14px 14px 0 0;z-index:2}
.modal-head h2{font-size:17px;font-family:"Noto Serif SC","Songti SC",SimSun,serif}
.modal-head .sub{color:var(--muted);font-size:12px;margin-left:8px}
.close{font-size:26px;cursor:pointer;color:var(--muted);line-height:1;padding:2px 8px;border-radius:6px}
.close:hover{color:var(--up);background:#1a1416}
#modal-body{padding:14px 18px 20px}
.detail-summary{display:flex;gap:18px;flex-wrap:wrap;align-items:center;margin:4px 0 12px;font-size:14px}
.detail-summary .price{font-size:22px;font-weight:700;font-family:Consolas,monospace}
.period-bar{display:flex;gap:6px;align-items:center;margin:8px 0}
.period-btn{padding:5px 14px;border-radius:7px;border:1px solid var(--line);background:var(--panel2);color:var(--muted);cursor:pointer;font-size:13px}
.period-btn.active{background:var(--amber);color:#1a1205;border-color:var(--amber);font-weight:600}
.chart-img{width:100%;border-radius:8px;border:1px solid var(--line);margin:8px 0}
/* 时间线拖动选区间 */
.range-wrap{margin:6px 0 4px;padding:6px 4px 2px}
.range-track{position:relative;height:26px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;cursor:pointer;touch-action:none}
.range-fill{position:absolute;top:0;bottom:0;background:rgba(217,164,65,.28);border-radius:8px}
.range-thumb{position:absolute;top:3px;width:18px;height:18px;border-radius:50%;background:var(--amber);
             border:2px solid #1a1205;cursor:ew-resize;transform:translateX(-50%);box-shadow:0 0 0 1px rgba(217,164,65,.4)}
.range-labels{display:flex;justify-content:space-between;margin-top:4px;font-size:12px;color:var(--muted)}
.range-tip{color:var(--muted);font-size:12px;margin:4px 0 0}
/* 策略点位 */
.strategy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin:10px 0}
.sp-card{border:1px solid var(--line);border-radius:9px;padding:10px 12px;background:var(--panel2)}
.sp-card .sp-tag{font-size:11px;color:var(--muted);margin-bottom:4px}
.sp-card .sp-price{font-size:19px;font-weight:800;font-family:Consolas,monospace}
.sp-card.buy .sp-price{color:var(--up)}
.sp-card.stop .sp-price{color:var(--down)}
.sp-card.tp .sp-price{color:var(--amber2)}
.sp-card .sp-note{font-size:12px;color:var(--muted);margin-top:4px}
.rationale{background:#151b29;border-left:3px solid var(--amber);padding:8px 12px;border-radius:0 8px 8px 0;font-size:12px;color:var(--txt)}
/* 分组理由 */
.reason-group{margin:12px 0}
.reason-group h4{color:var(--amber2);border-bottom:1px solid var(--line);padding-bottom:4px}
.reason-group ul{padding-left:18px}
.reason-group li{margin:3px 0}
/* 报告 */
.rep-layout{display:flex;gap:14px;align-items:flex-start}
.rep-list{flex:0 0 300px}
.rep-content{flex:1;min-width:0}
.rep-content table{font-size:12px}
/* 复盘/推送 */
#rev-status .btn{margin:4px 4px 0 0}
label{display:block;color:var(--muted);font-size:12px;margin:10px 0 4px}
.form label{margin-top:12px}
@media (max-width:900px){
  .sidebar{width:64px;flex-basis:64px;padding:14px 8px}
  .brand-name,.brand-sub,.tab span.nav-txt,.side-foot{display:none}
  .tab{justify-content:center;padding:10px 0}
  .content{padding:14px 12px}
}


/* 可访问性：键盘焦点可见 / 尊重减少动效 */
:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
@media (prefers-reduced-motion: reduce){ *{transition:none!important;animation:none!important} }


/* 通用确认弹层 */
.confirm-text{font-size:14px;color:var(--txt);line-height:1.8}
button:disabled{opacity:.5;cursor:not-allowed}
