:root{--bg:#0a0d14;--bg2:#0f131c;--card:#131927;--card2:#1a2233;--line:#222b3d;--text:#e8ebf2;--muted:#8b94a8;--dim:#5d667a;
 --green:#22c55e;--red:#ef4444;--amber:#f59e0b;--blue:#3b82f6;--purple:#a78bfa;--cyan:#22d3ee;--lime:#a3e635;
 --r:14px;--r2:10px;--font:-apple-system,system-ui,"Segoe UI",Roboto,Inter,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,monospace}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font:14px/1.4 var(--font)}
a{color:var(--blue)}
.hidden{display:none!important}
.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.pos{color:var(--green)}.neg{color:var(--red)}
header.top{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;padding:10px 14px;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.brand{font-weight:800;font-size:16px;white-space:nowrap}.brand small{font-weight:500;color:var(--muted);font-size:11px;margin-left:6px}
.controls{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;font-size:13px;color:var(--muted)}
.controls label{display:flex;gap:6px;align-items:center}
select,input{font:inherit;color:var(--text);background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:6px 8px}
button{font:inherit;color:var(--text);background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:7px 12px;cursor:pointer}
button.primary{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
button.ghost{background:transparent}button.icon{background:none;border:none;font-size:16px;color:var(--muted)}
main{max-width:1500px;margin:0 auto;padding:12px 14px 40px}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--muted);margin-bottom:10px}
.legend .sw{display:inline-block;width:18px;height:0;border-top:2px solid;border-color:inherit;margin-right:6px;vertical-align:middle;background:none!important}
.legend span{display:flex;align-items:center}
.legend span:nth-child(1) .sw{border-color:#ef4444}.legend span:nth-child(2) .sw{border-color:#22d3ee}.legend span:nth-child(4) .sw{border-color:#a3e635;border-top-style:dashed}
.legend .sw.dot{width:10px;height:10px;border-radius:50%;background:#22c55e!important;border:none}
.summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.chip{font-size:12px;padding:4px 10px;border-radius:999px;background:var(--card2);border:1px solid var(--line);color:var(--muted)}
.chip b{color:var(--text)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(460px,1fr));gap:12px}
@media(max-width:520px){.grid{grid-template-columns:1fr}main{padding:10px 8px}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:10px 10px 8px;display:flex;flex-direction:column;gap:6px;min-width:0}
.card .head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.card .head .rk{font-size:11px;color:var(--dim);font-family:var(--mono)}
.card .head .sym{font-weight:800;font-size:16px}
.card .head .nm{color:var(--muted);font-size:12px}
.card .head .px{margin-left:auto;font-family:var(--mono);font-size:13px}
.badge{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);white-space:nowrap;font-weight:600}
.badge.breakout{background:rgba(34,197,94,.18);color:var(--green);border-color:var(--green)}
.badge.retest{background:rgba(163,230,53,.15);color:var(--lime);border-color:var(--lime)}
.badge.accumulation{background:rgba(34,211,238,.14);color:var(--cyan);border-color:var(--cyan)}
.badge.above{background:rgba(59,130,246,.15);color:var(--blue);border-color:var(--blue)}
.badge.downtrend{background:rgba(239,68,68,.14);color:var(--red);border-color:var(--red)}
.badge.failed{background:rgba(245,158,11,.15);color:var(--amber);border-color:var(--amber)}
.badge.no_downtrend,.badge.error{color:var(--muted)}
.chart-wrap{position:relative;height:300px;width:100%;border-radius:10px;overflow:hidden;background:#0e121b}
.chart-wrap.big{height:min(62vh,620px)}
.chart-wrap canvas.ov{position:absolute;left:0;top:0;pointer-events:none}
.chart-wrap .expand{position:absolute;right:6px;top:6px;z-index:3;font-size:12px;padding:3px 8px;opacity:.75}
.kv{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:var(--muted)}.kv b{color:var(--text);font-weight:600;font-family:var(--mono)}
.text{font-size:12.5px;color:var(--muted);line-height:1.45}
.text.clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.boot{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;gap:12px;padding:60px 0;color:var(--muted)}
.spinner{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.modal{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;padding:12px}
.modal-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);width:min(1300px,100%);max-height:96vh;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:8px}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.m-body{font-size:13px}
.levels{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.lvl{font-size:12px;padding:3px 8px;border-radius:8px;background:var(--card2);font-family:var(--mono)}
.lvl.res{color:var(--red)}.lvl.sup{color:var(--green)}.lvl.target{color:var(--lime)}
table.det{border-collapse:collapse;font-size:12.5px;margin-top:6px}table.det td{padding:2px 10px 2px 0;vertical-align:top}table.det td:first-child{color:var(--muted);white-space:nowrap}
