:root{--bg:#0e1116;--bg2:#161b22;--bg3:#1f2630;--line:#2a313c;--txt:#e6edf3;--txt2:#9aa7b4;--up:#ff5b5b;--down:#25c281;--accent:#4c8dff;--warn:#f0b429;font-family:-apple-system,Segoe UI,Microsoft JhengHei,Roboto,Helvetica Neue,system-ui,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--txt);overscroll-behavior-y:none;font-size:15px;line-height:1.5}.app{max-width:560px;min-height:100%;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-bottom:calc(64px + env(safe-area-inset-bottom));flex-direction:column;margin:0 auto;display:flex}.topbar{z-index:20;border-bottom:1px solid var(--line);padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:linear-gradient(#161b22,#12161c);position:sticky;top:0}.topbar .row{justify-content:space-between;align-items:center;display:flex}.brand{letter-spacing:.5px;font-size:17px;font-weight:700}.session-pill{border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-size:13px;font-weight:700}.session-pre{color:var(--warn);background:#f0b4291f}.session-open{color:var(--up);background:#ff5b5b24}.session-post{color:var(--accent);background:#4c8dff24}.session-closed{color:var(--txt2);background:var(--bg3)}.session-detail{color:var(--txt2);margin-top:4px;font-size:12px}.content{flex:1;padding:14px 14px 0}.card{background:var(--bg2);border:1px solid var(--line);border-radius:14px;margin-bottom:12px;padding:14px}.card h3{color:var(--txt2);letter-spacing:.5px;margin:0 0 10px;font-size:14px;font-weight:600}.muted{color:var(--txt2)}.up{color:var(--up)}.down{color:var(--down)}.search{gap:8px;margin-bottom:12px;display:flex}.search input{background:var(--bg3);border:1px solid var(--line);color:var(--txt);border-radius:10px;flex:1;padding:11px 14px;font-size:16px}button{cursor:pointer;font-family:inherit}.btn{background:var(--accent);color:#fff;border:none;border-radius:10px;padding:11px 16px;font-size:15px;font-weight:600}.btn.sec{background:var(--bg3);color:var(--txt);border:1px solid var(--line)}.btn.danger{color:var(--up);background:#ff5b5b29;border:1px solid #ff5b5b4d}.btn:active{opacity:.8}.quote{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.quote .name{font-size:20px;font-weight:700}.quote .id{color:var(--txt2);font-size:14px}.quote .price{font-size:34px;font-weight:800}.quote .chg{font-size:16px;font-weight:700}.grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.metric{background:var(--bg3);text-align:center;border-radius:10px;padding:10px}.metric .lbl{color:var(--txt2);font-size:11px}.metric .val{margin-top:2px;font-size:16px;font-weight:700}.bias{align-items:center;gap:12px;display:flex}.bias .tag{border-radius:12px;padding:8px 16px;font-size:20px;font-weight:800}.tag.bull{color:#fff;background:var(--up)}.tag.bull-lean{color:var(--up);background:#ff5b5b29}.tag.neutral{color:var(--txt2);background:var(--bg3)}.tag.bear-lean{color:var(--down);background:#25c28129}.tag.bear{color:#fff;background:var(--down)}.signal{border-bottom:1px solid var(--line);gap:10px;padding:9px 0;font-size:14px;display:flex}.signal:last-child{border-bottom:none}.dot{border-radius:50%;flex:none;width:9px;height:9px;margin-top:6px}.dot.p{background:var(--up)}.dot.n{background:var(--down)}.dot.z{background:var(--txt2)}.signal .nm{width:60px;color:var(--txt2);flex:none;font-size:13px}.disclaimer{color:var(--txt2);background:var(--bg3);border-radius:10px;margin-top:10px;padding:10px 12px;font-size:11px;line-height:1.6}.list-row{background:var(--bg2);border:1px solid var(--line);border-radius:12px;justify-content:space-between;align-items:center;margin-bottom:8px;padding:12px;display:flex}.list-row .l .nm{font-weight:700}.list-row .l .sub{color:var(--txt2);font-size:12px}.list-row .r{text-align:right}.list-row .r .pv{font-weight:700}.list-row .r .sub{font-size:12px}.field{margin-bottom:10px}.field label{color:var(--txt2);margin-bottom:4px;font-size:12px;display:block}.field input,.field textarea{background:var(--bg3);border:1px solid var(--line);width:100%;color:var(--txt);border-radius:10px;padding:10px 12px;font-size:16px}.field textarea{resize:vertical;min-height:50px}.shot{border:1px solid var(--line);border-radius:10px;width:100%;margin-top:6px;display:block}.row2{gap:8px;display:flex}.row2>*{flex:1}.tabbar{background:var(--bg2);border-top:1px solid var(--line);max-width:560px;padding-bottom:env(safe-area-inset-bottom);margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar button{color:var(--txt2);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:10px 0;font-size:12px;display:flex}.tabbar button.active{color:var(--accent)}.tabbar .ic{font-size:19px;line-height:1}.spinner{text-align:center;color:var(--txt2);padding:40px 0;font-size:14px}.err{color:var(--up);background:#ff5b5b1f;border:1px solid #ff5b5b4d;border-radius:10px;padding:12px;font-size:13px;line-height:1.6}.chart-box{width:100%;height:260px}.chips{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.chip{background:var(--bg3);border:1px solid var(--line);color:var(--txt2);border-radius:999px;padding:5px 12px;font-size:13px}.chip.on{color:var(--accent);border-color:var(--accent)}.news{color:var(--txt);border-bottom:1px solid var(--line);padding:10px 0;text-decoration:none;display:block}.news:last-of-type{border-bottom:none}.news:active{opacity:.7}.news-meta{color:var(--txt2);align-items:center;gap:6px;margin-bottom:3px;font-size:11px;display:flex}.news-title{font-size:14px;line-height:1.5}.badge-today{color:#fff;background:var(--up);border-radius:999px;padding:1px 6px;font-size:10px;font-weight:700}
