:root{--bg:#0b0f17;--card:#121826;--card2:#182033;--text:#e6e9f0;--muted:#8b94a7;--line:#232c40;--green:#22c55e;--red:#ef4444;--amber:#f59e0b;--blue:#3b82f6;--purple:#a78bfa;--cyan:#22d3ee}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--text);font:15px/1.35 -apple-system,system-ui,Segoe UI,Roboto,sans-serif;height:100%}
body{display:flex;flex-direction:column;min-height:100dvh}
header#top{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:calc(env(safe-area-inset-top) + 8px) 12px 8px;background:rgba(11,15,23,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.brand{font-weight:700}
.badges{display:flex;gap:6px}
.badge{font-size:11px;padding:2px 7px;border-radius:8px;background:var(--card2);color:var(--muted);border:1px solid var(--line)}
.badge.testnet{color:var(--amber);border-color:var(--amber)}.badge.mainnet{color:var(--red);border-color:var(--red)}
.badge.paper{color:var(--cyan)}.badge.live{color:var(--green);border-color:var(--green)}
.badge.dot{font-size:10px}.badge.dot.ok{color:var(--green)}.badge.dot.bad{color:var(--red)}
main{flex:1;padding:10px 10px calc(70px + env(safe-area-inset-bottom))}
.tab{display:none}.tab.active{display:block}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:10px}
.row{display:flex;align-items:center}.between{justify-content:space-between}.gap{gap:8px}
.small{font-size:12.5px}.muted{color:var(--muted)}b{font-weight:600}
button{font:inherit;color:var(--text);background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:8px 12px;cursor:pointer}
button.link{background:none;border:none;color:var(--blue);padding:4px}
button.primary{background:var(--blue);border-color:var(--blue);color:#fff}
input,select{font:inherit;color:var(--text);background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;max-width:100%}
code{background:var(--card2);padding:1px 4px;border-radius:4px}
nav#tabs{position:fixed;left:0;right:0;bottom:0;display:flex;background:rgba(18,24,38,.96);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:20}
nav#tabs button{flex:1;background:none;border:none;border-radius:0;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0;font-size:18px}
nav#tabs button span{font-size:11px}nav#tabs button.active{color:var(--text)}
/* trade */
.coin-strip{display:flex;gap:6px;overflow-x:auto;padding:2px 0 8px;scrollbar-width:none}.coin-strip::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;padding:6px 10px;border-radius:20px;background:var(--card);border:1px solid var(--line);font-size:13px;display:flex;gap:6px;align-items:center}
.chip.active{border-color:var(--blue);background:#152243}
.chip .sc{font-size:11px;padding:0 5px;border-radius:8px;background:var(--card2)}
.gA{color:var(--green)}.gB{color:#a3e635}.gC{color:var(--amber)}.gD{color:var(--red)}
.coin-name{font-size:22px;font-weight:700}.price{font-size:22px;font-variant-numeric:tabular-nums}
.side-pill{font-size:11px;padding:2px 7px;border-radius:8px;background:#173a2a;color:var(--green);vertical-align:middle}
.side-pill.short{background:#3a1717;color:var(--red)}
.plan-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px}
.plan-grid div{background:var(--card2);border-radius:10px;padding:6px;text-align:center}
.plan-grid .k{font-size:10.5px;color:var(--muted)}.plan-grid .v{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.factor-mini{display:flex;gap:4px;margin-top:8px;flex-wrap:wrap}
.factor-mini span{font-size:10.5px;padding:2px 6px;border-radius:6px;background:var(--card2);border-left:3px solid var(--muted)}
.stepper{display:flex;align-items:center;gap:6px}.stepper .lbl{font-size:12px;color:var(--muted)}
.stepper button{width:34px;height:34px;padding:0;font-size:18px;border-radius:50%}
.arm-row{display:flex;align-items:center;gap:12px;padding:8px 4px}
.switch{position:relative;width:54px;height:30px;flex:0 0 auto}.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;inset:0;background:#2a3348;border-radius:30px;transition:.2s}
.slider:before{content:"";position:absolute;width:24px;height:24px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s}
input:checked+.slider{background:var(--amber)}input:checked+.slider:before{transform:translateX(24px)}
.fire-row{display:flex;gap:8px;margin:6px 0 8px}
.fire{flex:1;border:none;border-radius:16px;padding:18px 8px;display:flex;flex-direction:column;align-items:center;gap:2px;color:#fff;font-weight:800;transition:.1s;touch-action:manipulation}
.fire .big{font-size:22px}.fire .sub{font-size:11px;font-weight:500;opacity:.85}
.fire.long{background:linear-gradient(180deg,#22c55e,#15803d)}.fire.short{background:linear-gradient(180deg,#ef4444,#991b1b)}
.fire:disabled{filter:grayscale(.8) brightness(.5)}.fire:active:not(:disabled){transform:scale(.97)}
#fire-result{min-height:18px;padding:0 4px 6px}
.trade{border-top:1px solid var(--line);padding:8px 0}
.trade .row{flex-wrap:wrap;gap:6px}
.pnl-pos{color:var(--green)}.pnl-neg{color:var(--red)}
.tag{font-size:10.5px;padding:1px 6px;border-radius:6px;background:var(--card2);color:var(--muted)}
.tag.be{background:#173a2a;color:var(--green)}
.log{max-height:220px;overflow:auto;font-size:12.5px}
.log div{padding:3px 0;border-bottom:1px dashed var(--line)}
.log .k-warn,.log .k-error{color:var(--amber)}.log .k-error{color:var(--red)}.log .k-be,.log .k-trail{color:var(--green)}.log .k-tp{color:var(--cyan)}
.log time{color:var(--muted);margin-right:6px}
/* rank */
.rank-tools{gap:6px;margin-bottom:6px}.rank-tools input{flex:1;min-width:0}
.rank-legend{margin-bottom:8px}
.rk{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:8px;user-select:none}
.rk .top{display:flex;align-items:center;gap:10px}
.rk .num{width:22px;color:var(--muted);font-size:13px}
.rk .nm{font-weight:700;font-size:17px;min-width:56px}
.rk .score{margin-left:auto;font-weight:800;font-size:18px}
.rk .bar{height:6px;border-radius:3px;background:var(--card2);margin:6px 0;overflow:hidden}
.rk .bar i{display:block;height:100%}
.rk .stats{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:var(--muted)}
.rk .stats b{color:var(--text);font-weight:600}
.rk .reason{font-size:12.5px;margin-top:4px}
.flag{font-size:11px;padding:1px 6px;border-radius:6px;background:var(--card2)}
.flag.cap{background:#3a2e10;color:var(--amber)}.flag.knife{background:#3a1717;color:var(--red)}.flag.rec{background:#173a2a;color:var(--green)}
/* chart */
.chart-head{margin-bottom:6px}
#chart-wrap{position:relative;height:62vh;min-height:380px;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
#chart{position:absolute;inset:0}
#overlay{position:absolute;inset:0;pointer-events:none;z-index:4}
#chart-hint{position:absolute;left:8px;top:6px;color:var(--muted);pointer-events:none;z-index:3;font-size:11px}
.legend{display:flex;flex-wrap:wrap;gap:6px;padding:8px 2px}
.legend span{font-size:11px;padding:2px 7px;border-radius:6px;border:1px solid var(--line);color:var(--muted);cursor:pointer}
.legend span.on{color:var(--text);border-color:var(--muted)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.fct{padding:8px 0;border-bottom:1px solid var(--line)}
.fct .hd{display:flex;align-items:center;gap:8px}.fct .hd .w{color:var(--muted);font-size:11px}
.fct .bar{flex:1;height:6px;border-radius:3px;background:var(--card2);overflow:hidden}.fct .bar i{display:block;height:100%}
.fct .sc{width:34px;text-align:right;font-weight:700}
.fct .ex{font-size:12.5px;color:var(--muted);margin-top:4px;display:none}.fct.open .ex{display:block;color:var(--text)}
.mg{display:flex;gap:8px;padding:7px 0;border-bottom:1px solid var(--line);align-items:flex-start}
.mg .dot{width:10px;height:10px;border-radius:50%;margin-top:5px;flex:0 0 auto}
.mg .t{flex:1}.mg .t .n{font-weight:600}.mg .t .d{font-size:12px;color:var(--muted)}.mg .t .e{font-size:12px;display:none;margin-top:3px}.mg.open .t .e{display:block}
.mg .p{text-align:right;font-variant-numeric:tabular-nums;font-size:13px}
/* settings */
.sgroup{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:10px}
.sgroup h4{margin:0 0 6px;font-size:14px}
.srow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line)}
.srow:last-child{border-bottom:none}
.srow label{flex:1}.srow label small{display:block;color:var(--muted);font-size:11.5px}
.srow input,.srow select{width:120px}.srow input[type=checkbox]{width:auto;transform:scale(1.3)}
/* sheet */
.sheet{position:fixed;inset:0;background:rgba(0,0,0,.55);display:none;z-index:50;align-items:flex-end}
.sheet.open{display:flex}
.sheet-body{background:var(--card);width:100%;max-height:85dvh;overflow:auto;border-radius:18px 18px 0 0;padding:8px 14px calc(16px + env(safe-area-inset-bottom))}
.sheet-handle{width:40px;height:4px;background:var(--line);border-radius:2px;margin:4px auto 10px}
#sheet-content{font-size:14px;white-space:pre-wrap}
#sheet-content h5{margin:10px 0 4px}
#toasts{position:fixed;top:calc(env(safe-area-inset-top) + 52px);left:10px;right:10px;z-index:60;display:flex;flex-direction:column;gap:6px;pointer-events:none}
.toast{background:#1f2a44;border:1px solid var(--blue);border-radius:12px;padding:10px 12px;font-size:13px;box-shadow:0 6px 20px rgba(0,0,0,.4);pointer-events:auto}
.toast.alert{border-color:var(--amber)}.toast.err{border-color:var(--red)}
@media(min-width:900px){main{max-width:1100px;margin:0 auto;width:100%}#chart-wrap{height:70vh}}
