:root{--bg:#071421;--panel:#0d1d2d;--panel2:#10263a;--line:#24445f;--text:#eaf4ff;--muted:#8da7bd;--blue:#1689ff;--green:#18d890;--red:#ff5261;--yellow:#f0c24c}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Arial,"Microsoft YaHei",sans-serif}.app{display:flex;min-height:100vh}.sidebar{width:168px;background:#081828;border-right:1px solid #18334b;padding:18px 10px;position:fixed;inset:0 auto 0 0}.brand{font-size:20px;font-weight:800}.brand span{color:#ff5a43}.sys-title{margin:22px 8px 12px;font-size:18px;font-weight:700}.sidebar nav{display:flex;flex-direction:column;gap:7px}.nav-btn{background:transparent;border:0;color:#b8cde0;text-align:left;padding:11px 12px;border-radius:6px;cursor:pointer}.nav-btn:hover,.nav-btn.active{background:linear-gradient(90deg,#117fff,#1e6fd2);color:#fff}.side-note{position:absolute;bottom:22px;left:18px;color:#66839c;font-size:12px;line-height:1.7}.main{margin-left:168px;width:calc(100% - 168px)}.topbar{height:58px;border-bottom:1px solid #19374e;display:flex;align-items:center;justify-content:space-between;padding:0 18px;position:sticky;top:0;background:rgba(7,20,33,.95);z-index:5}.topbar .sub{color:var(--muted);font-size:12px;margin-left:10px}.top-right{display:flex;gap:15px;align-items:center;font-size:12px}.top-right input{background:#10263a;border:1px solid #23445e;padding:8px 12px;border-radius:6px;color:#fff;width:220px}.status{color:var(--green)}.page{display:none;padding:14px}.page.active{display:block}.hero{min-height:142px;border:1px solid #2a4d67;border-radius:8px;padding:24px;background:linear-gradient(100deg,#14293b,#1f3343 50%,#58331e);display:flex;justify-content:space-between;align-items:center}.hero h1{font-size:36px;margin:0 0 8px}.hero p{color:#ccd8e3}.hero-rule{padding:12px 16px;border:1px solid rgba(255,255,255,.15);border-radius:6px;background:rgba(0,0,0,.18)}.grid{display:grid;gap:12px;margin-top:12px}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-2{grid-template-columns:1fr 1fr}.card{background:linear-gradient(180deg,#0e2031,#0b1927);border:1px solid #27475f;border-radius:8px;padding:14px}.stat{text-align:center}.stat span,.stat small{display:block;color:var(--muted)}.stat b{display:block;font-size:34px;margin:8px 0}.stat.up b,.green{color:var(--green)}.stat.down b,.red{color:var(--red)}.stat.bias b{font-size:24px;color:#ffb04a}.stat em{font-style:normal}.card-hd{display:flex;justify-content:space-between;align-items:center;font-weight:700;margin-bottom:12px}.card-hd small{color:var(--muted);font-weight:400}.sector-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.sector{background:#10263a;border:1px solid #223f58;border-radius:6px;padding:12px}.sector .name{font-weight:700}.sector .nums{margin-top:8px;font-size:17px}.sector .nums span:first-child{color:var(--green);margin-right:12px}.sector .nums span:last-child{color:var(--red)}.momentum-row{display:grid;grid-template-columns:1fr 1fr 70px;align-items:center;padding:14px 4px;border-bottom:1px solid #18364e}.momentum-row em{font-style:normal;font-size:20px;font-weight:700}.signal-box{margin-top:14px;background:#12283a;padding:15px;border-radius:6px;border-left:3px solid #ff9c36}.signal-box strong{color:#ffb04a}.signal-box small{display:block;color:var(--muted);margin-top:7px}table{width:100%;border-collapse:collapse;font-size:13px}th{color:#91abc0;font-weight:500;background:#102538}th,td{padding:10px 8px;border-bottom:1px solid #19364b;text-align:center}.tag{display:inline-block;padding:4px 8px;border-radius:12px;font-size:12px}.tag.green{background:rgba(24,216,144,.14)}.tag.red{background:rgba(255,82,97,.14)}.tag.yellow{background:rgba(240,194,76,.14);color:var(--yellow)}.focus-item{display:grid;grid-template-columns:100px 1fr 110px;gap:10px;padding:10px;border-bottom:1px solid #18364e}.focus-item small{color:var(--muted)}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.page-head h2{margin:0}.page-head p{color:var(--muted);margin:5px 0 0}.primary{background:#1689ff;color:white;border:0;border-radius:6px;padding:10px 18px;cursor:pointer}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.filter{background:#10263a;border:1px solid #2b4b65;color:#c9d8e4;padding:8px 13px;border-radius:5px}.filter.active{background:#1689ff;border-color:#1689ff;color:#fff}.table-card{padding:0;overflow:auto}.action{background:#1689ff;border:0;color:#fff;padding:5px 9px;border-radius:4px;cursor:pointer}.delete{background:#d84a58}.empty{height:400px;display:flex;align-items:center;justify-content:center;border:1px dashed #31536c;border-radius:8px;color:#718ca2}.chg-up{color:var(--red)}.chg-down{color:var(--green)}
@media(max-width:1100px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}.sidebar{width:140px}.main{margin-left:140px;width:calc(100% - 140px)}.top-right input{display:none}}
.scan-table table{min-width:1500px}.scan-table th{white-space:nowrap;font-weight:700;color:#9bc4e6}.scan-table td{white-space:nowrap}.scan-table thead th{position:sticky;top:0;z-index:2}.sym{text-align:left;padding-left:22px}.fav-btn{width:34px;height:34px;border-radius:8px;border:1px solid #315c7d;background:#0b2032;color:#8db8d8;font-size:20px;line-height:1;cursor:pointer}.fav-btn.on{color:#ffd45a;border-color:#6f6531;background:#2a2a16}.view-btn{background:#0e2a40;border:1px solid #2c668f;color:#77c7ff}.empty-row{padding:32px;color:#718ca2}.scan-table tbody tr:hover{background:#0f2638}

/* 1H RSI 动能 */
.rsi-panel{margin-top:12px;padding:16px}.rsi-hd{margin-bottom:14px}.rsi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.rsi-card{border:1px solid #2b4b65;border-radius:10px;padding:16px 18px;min-height:132px;background:#10263a}.rsi-card .rsi-name{font-size:16px;font-weight:700}.rsi-card b{display:block;font-size:34px;line-height:1.15;margin:14px 0 8px}.rsi-card small{color:#9bb2c5}.rsi-card.long{background:rgba(112,18,29,.34);border-color:#8d313b}.rsi-card.long .rsi-name,.rsi-card.long b{color:#ff5664}.rsi-card.short{background:rgba(4,73,48,.34);border-color:#23764f}.rsi-card.short .rsi-name,.rsi-card.short b{color:#21d68b}.rsi-bar{display:flex;height:28px;margin-top:12px;border-radius:8px;overflow:hidden;background:#183247}.rsi-seg{display:flex;align-items:center;justify-content:center;min-width:32px;font-size:11px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden}.rsi-seg.extreme-long{background:#e13c48}.rsi-seg.strong-long{background:#ff6769}.rsi-seg.strong-short{background:#2bd18c}.rsi-seg.extreme-short{background:#087c52}.rsi-sentiment{text-align:center;padding-top:12px}.rsi-sentiment b{font-size:22px}.rsi-sentiment b span{color:#26db94}.rsi-sentiment small{display:block;color:#8da7bd;margin-top:5px}
@media(max-width:1100px){.rsi-grid{grid-template-columns:repeat(2,1fr)}}


/* 当前日K结构 */
.ds-topline{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;border-bottom:1px solid #1b364c;padding:4px 2px 12px;margin-bottom:12px}.ds-topline h2{margin:0;font-size:28px}.ds-topline h2 small{font-size:12px;color:#8ba6bd}.ds-topline p{color:#7fa0bb;font-size:12px}.ds-history{display:flex;gap:10px;align-items:center}.ds-history input,.ds-history select,.ds-tools input,.ds-tools select{background:#0b1d2d;border:1px solid #294a63;color:#eef6ff;border-radius:8px;padding:11px 14px}.ds-history input{width:190px}.ds-history select{width:160px}.ds-tools{display:flex;gap:10px;align-items:center;margin-bottom:16px}.ds-tools input{width:300px}.ds-tools .spacer{flex:1}.ds-rsiwarn{background:linear-gradient(90deg,rgba(68,17,22,.58),rgba(35,15,20,.52));border-color:#7c3034;margin-bottom:14px}.ds-rsi-line{display:flex;gap:34px;align-items:center;flex-wrap:wrap}.ds-rsi-line b{font-size:22px}.ds-rsi-line strong{color:#ff6c6c;font-size:18px}.ds-rsi-line span{font-weight:700;color:#ff7777}.ds-rsi-mini{height:9px;display:flex;margin-top:14px;border-radius:6px;overflow:hidden}.ds-rsi-mini i{background:#df5260}.ds-rsi-mini em{background:#26a76d}.ds-structures{margin-bottom:14px}.ds-struct-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px}.ds-struct{padding:14px;border:1px solid #31495d;border-radius:10px;background:#101f2d}.ds-struct b{display:block;font-size:28px;margin:10px 0 4px}.ds-struct small{color:#8ca8bf}.ds-struct.up{border-color:#7f3538;background:rgba(79,25,29,.35)}.ds-struct.up .name,.ds-struct.up b{color:#ff636c}.ds-struct.down{border-color:#21654a;background:rgba(9,62,43,.34)}.ds-struct.down .name,.ds-struct.down b{color:#25d98b}.ds-struct.side{border-color:#6a5e22;background:rgba(80,66,10,.28)}.ds-struct.side .name,.ds-struct.side b{color:#f5c84c}.ds-struct.trans{border-color:#56427b;background:rgba(52,38,82,.32)}.ds-struct.trans .name,.ds-struct.trans b{color:#a487ff}.ds-stars{padding-bottom:0}.ds-targets{display:grid;grid-template-columns:1fr 280px 1fr;gap:14px;align-items:stretch}.ds-target{border:1px solid #334d62;border-radius:12px;padding:16px}.ds-target.long{border-color:#8a3339}.ds-target.short{border-color:#176147}.ds-target h3{margin:0;font-size:24px}.ds-target.long h3{color:#ff6268}.ds-target.short h3{color:#20d68a}.ds-target h3 b{float:right}.ds-target p{color:#8da7bd;font-size:12px}.target-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.target-mini span{background:#0b1b28;border:1px solid #21394c;padding:12px;text-align:center;border-radius:8px}.target-mini b{display:block;font-size:20px;margin-top:6px}.starline{margin-top:12px;border:1px solid #25445b;display:inline-block;padding:8px 12px;border-radius:8px;color:#9dd0ff}.donut{display:flex;flex-direction:column;justify-content:center;align-items:center}.donut>div{width:150px;height:150px;border-radius:50%;background:conic-gradient(#ff5b63 0 69%,#24d38a 69% 100%);position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center}.donut>div:before{content:'';position:absolute;inset:18px;background:#0b1a27;border-radius:50%}.donut span,.donut b{position:relative;z-index:1}.donut b{font-size:20px}.donut small{margin-top:8px;color:#8da7bd}.ds-tabs{display:flex;gap:8px;margin:14px 0}.ds-table{border:1px solid #1e3a50;border-radius:10px}.ds-table table{min-width:1450px}
@media(max-width:1300px){.ds-struct-grid{grid-template-columns:repeat(4,1fr)}.ds-targets{grid-template-columns:1fr}.donut{padding:10px}.ds-topline{flex-direction:column}.ds-history{flex-wrap:wrap}}
