:root{--bg: #0b0e14;--card: #151a23;--card2: #1b212d;--border: #263042;--text: #e8edf5;--dim: #8b95a7;--up: #ff4d5e;--down: #2ebd85;--warn: #f7a600;--confirm: #4d9fff;--strong-green: #2ebd85}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg)}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,Microsoft YaHei,sans-serif;color:var(--text);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased;overflow-x:hidden}#root{max-width:480px;margin:0 auto}.page{padding:8px 10px calc(20px + env(safe-area-inset-bottom));overflow-x:hidden}button{font-family:inherit}.up{color:var(--up)}.down{color:var(--down)}.flat,.dim{color:var(--dim)}.strong{font-weight:700}.status-banner{border-radius:10px;padding:10px 14px;margin-bottom:8px;border:1px solid var(--border);background:var(--card);display:flex;align-items:center;gap:12px}.status-label{font-size:11px;color:var(--dim);writing-mode:vertical-lr;letter-spacing:2px}.status-text{font-size:24px;font-weight:800;letter-spacing:2px}.tone-risk{background:#3a1116;border-color:#7a1f2a}.tone-risk .status-text{color:#ff4d5e}.tone-confirm{background:#0e2438;border-color:#1f4d80}.tone-confirm .status-text{color:#4d9fff}.tone-resonance{background:#33141a;border-color:#7a2a35}.tone-resonance .status-text{color:#ff7080}.tone-warn{background:#33260c;border-color:#7a5a1a}.tone-warn .status-text{color:#f7a600}.tone-recover{background:#1a2e1f;border-color:#2f5a3c}.tone-recover .status-text{color:#4dc97a}.tone-neutral{background:var(--card)}.tone-neutral .status-text{color:var(--dim);font-size:20px}.refreshbar{display:flex;align-items:center;margin-bottom:8px;gap:8px}.refreshbar .time{font-size:11px;color:var(--dim)}.errtext{color:var(--warn)}.spacer{flex:1}.btn-refresh{background:var(--card2);color:var(--text);border:1px solid var(--border);border-radius:14px;padding:5px 12px;font-size:12px;font-weight:600}.btn-refresh:disabled{opacity:.5}.summary{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:8px 10px;margin-bottom:10px}.sum-row{display:flex}.sum-cell{flex:1;padding:3px 0;min-width:0}.sum-label{font-size:11px;color:var(--dim)}.sum-val{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}.sec{margin-bottom:12px}.sec-head{display:flex;align-items:center;margin-bottom:6px}.sec-head h2{font-size:14px;font-weight:700;letter-spacing:1px}.sec-head .spacer{flex:1}.btn-mini{background:var(--card2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:3px 10px;font-size:12px;margin-left:6px}.btn-mini.primary{background:#1f4d80;border-color:#2f6ab0}.btn-mini.ghost{opacity:.7}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:8px 10px;margin-bottom:7px}.h-top{display:flex;align-items:baseline;gap:8px;margin-bottom:5px}.h-name{font-size:14px;font-weight:700}.h-price{font-size:17px;font-weight:800;font-variant-numeric:tabular-nums;margin-left:auto}.h-pct{font-size:14px;font-weight:700}.h-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px 6px}.kv{min-width:0}.kv-k{display:block;font-size:10px;color:var(--dim)}.kv-v{display:block;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.edit-row{display:flex;align-items:center;gap:8px;padding:4px 0;flex-wrap:wrap}.edit-name{width:84px;font-weight:600;font-size:13px}.edit-row label{font-size:11px;color:var(--dim);display:flex;align-items:center;gap:4px;flex:1;min-width:0}.edit-row input{width:100%;flex:1;background:var(--card2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:4px 6px;font-size:13px;font-variant-numeric:tabular-nums;min-width:0}.small{font-size:11px;margin-top:6px}.breadth .b-row{display:flex;flex-wrap:wrap;gap:4px 14px;padding:2px 0;font-size:12.5px}.breadth b{font-variant-numeric:tabular-nums}.sector-row{display:flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:6px 10px;margin-bottom:4px;font-variant-numeric:tabular-nums}.s-name{width:62px;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden}.leader-mark:after{content:"★";color:var(--warn);font-size:10px}.s-price{width:58px;font-weight:700;text-align:right}.s-pct{width:56px;font-weight:700;text-align:right}.s-cell{flex:1;text-align:right;font-size:11.5px;white-space:nowrap}.notes{background:var(--card);border:1px dashed var(--border);border-radius:8px;padding:7px 10px;font-size:12px}.note-line{padding:1px 0}.index-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.index-cell{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-variant-numeric:tabular-nums}.index-grid .index-cell:last-child:nth-child(odd){grid-column:1 / -1}.i-top{display:flex;align-items:baseline}.i-name{font-size:12.5px;font-weight:600}.i-pct{margin-left:auto;font-weight:700;font-size:12.5px}.i-pts{font-size:16px;font-weight:800}.i-amount{font-size:10.5px;color:var(--dim)}.us-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.us-cell{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:6px 8px;text-align:center;font-variant-numeric:tabular-nums}.u-name{display:block;font-size:11px;color:var(--dim);white-space:nowrap}.u-price{display:block;font-size:14px;font-weight:700}.u-pct{display:block;font-size:12px;font-weight:700}.watch-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:7px 10px;margin-bottom:5px}.watch-top{display:flex;align-items:center;gap:8px}.watch-name{font-size:13px;font-weight:700}.watch-price{margin-left:auto;font-size:15px;font-weight:800}.zone-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:10px}.zone-badge.tone-risk{background:#3a1116;color:#ff4d5e}.zone-badge.tone-warn{background:#33260c;color:#f7a600}.zone-badge.tone-confirm{background:#0e2438;color:#4d9fff}.zone-badge.tone-neutral{background:var(--card2);color:var(--dim)}.watch-line{font-size:11px;color:var(--dim);margin-top:3px}.score-row{display:flex;align-items:center;gap:8px;padding:5px 0}.score-label{width:92px;font-size:12.5px;font-weight:600}.score-track{flex:1;height:10px;background:var(--card2);border-radius:5px;overflow:hidden}.score-fill{height:100%;border-radius:5px}.score-num{width:30px;text-align:right;font-weight:800;font-size:14px;font-variant-numeric:tabular-nums}.score-note{font-size:10.5px;color:var(--dim);margin-top:4px;line-height:1.6}.footer{text-align:center;font-size:10.5px;color:#5a6478;padding:10px 0 4px}
