:root{--bg:#0f1115;--panel:#171a21;--panel2:#1e222b;--line:#2a2f3a;--txt:#e6e8ee;--muted:#8b93a7;--green:#1cc166;--red:#ff5b67;--blue:#3b82f6;--amber:#f5b942}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--txt);font:14px/1.45 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}
a{color:var(--blue);text-decoration:none}
button{font-family:inherit}
header{padding:14px 24px 10px;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:10px 24px;align-items:center}
header h1{margin:0;font-size:20px;display:flex;align-items:center;gap:10px}
header h1 small{color:var(--muted);font-size:12px;font-weight:400}
header .sub{color:var(--muted);font-size:12px}
header .grow{flex:1}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden}
.seg button{background:var(--panel2);border:none;color:var(--muted);padding:5px 12px;font-size:12px;cursor:pointer;border-right:1px solid var(--line)}
.seg button:last-child{border-right:none}
.seg button.on{background:var(--panel);color:var(--txt);font-weight:600}
.btn{background:var(--panel2);border:1px solid var(--line);color:var(--txt);padding:5px 12px;border-radius:6px;font-size:12px;cursor:pointer}
.btn:hover{border-color:var(--muted)}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}
.btn.danger{color:var(--red)}
.btn.sm{padding:2px 8px;font-size:11px}
.filters{display:flex;flex-wrap:wrap;gap:8px 14px;padding:10px 24px;align-items:center;border-bottom:1px solid var(--line);background:var(--panel)}
.filters label{color:var(--muted);font-size:12px;display:flex;gap:6px;align-items:center}
.filters input[type=text],.filters input[type=number],.filters select,.dlg input[type=text],.dlg input[type=time],.dlg input[type=number],.dlg select,.dlg textarea,#dt textarea{background:var(--panel2);border:1px solid var(--line);color:var(--txt);padding:5px 8px;border-radius:6px;font-size:13px}
.filters input[type=number]{width:70px}
.wrap{margin:0 24px;padding:0 0 40px;overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap;text-align:right}
th{position:sticky;top:0;background:var(--panel);color:var(--muted);font-weight:600;cursor:pointer;user-select:none;font-size:12px;z-index:2}
th.stk,td.stk{position:sticky;background:var(--bg);z-index:3}
th.stk{background:var(--panel);z-index:4}
tr:hover td.stk{background:var(--panel2)}
.stk-end{box-shadow:inset -1px 0 0 var(--line)}
.views{display:flex;gap:6px;align-items:center;padding:8px 24px 0;flex-wrap:wrap}
.views span{color:var(--muted);font-size:12px;margin-right:4px}
.views button{background:var(--panel2);border:1px solid var(--line);color:var(--muted);padding:4px 10px;border-radius:6px;font-size:12px;cursor:pointer}
.views button.on{color:var(--txt);border-color:var(--txt)}
#tb tr:hover td{background:var(--panel2)}
.flagtxt{display:inline-block;max-width:230px;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}
th.l,td.l{text-align:left}
th.on{color:var(--txt)}
th .arr{font-size:10px;margin-left:3px}
tbody tr{cursor:pointer}
.pos{color:var(--green)} .neg{color:var(--red)} .mut{color:var(--muted)} .amb{color:var(--amber)}
.nick{display:flex;align-items:center;gap:8px}
.nick img{width:24px;height:24px;border-radius:50%;object-fit:cover;background:#333}
.nick .exch{font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 4px}
.score{display:inline-flex;align-items:center;gap:6px}
.bar{width:60px;height:8px;background:var(--line);border-radius:4px;overflow:hidden;display:inline-block}
.bar i{display:block;height:100%}
.badge{display:inline-block;padding:1px 7px;border-radius:10px;font-size:11px;font-weight:600}
.b-ok{background:rgba(28,193,102,.15);color:var(--green)} .b-mid{background:rgba(245,185,66,.15);color:var(--amber)} .b-no{background:rgba(255,91,103,.15);color:var(--red)}
.style{display:inline-block;padding:1px 7px;border-radius:4px;font-size:11px;background:var(--panel2);border:1px solid var(--line)}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-left:2px;vertical-align:middle}
.lbadge{display:inline-block;font-size:10px;padding:0 6px;border-radius:9px;color:#fff;margin-right:3px;font-weight:600;max-width:110px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.flag{display:inline-block;background:rgba(255,91,103,.12);color:var(--red);border-radius:4px;padding:0 5px;font-size:11px;margin-right:3px}
.flagn{font-weight:600}
.flagn.red{color:var(--red)} .flagn.warn{color:var(--amber)}
.hid{font-size:11px;padding:0 6px;border-radius:4px;background:rgba(245,185,66,.15);color:var(--amber)}
.vis{font-size:11px;padding:0 6px;border-radius:4px;background:rgba(28,193,102,.12);color:var(--green)}
/* panel szczegółów */
#ov{position:fixed;inset:0;background:rgba(0,0,0,.55);display:none;z-index:10}
#dt{position:fixed;top:0;right:0;bottom:0;width:min(1200px,96vw);background:var(--bg);border-left:1px solid var(--line);display:none;z-index:11;overflow:auto;padding:20px 24px 40px}
#dt.open,#ov.open{display:block}
#dt h2{margin:0 0 4px;font-size:20px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#dt h2 img{width:36px;height:36px;border-radius:50%}
.close{position:absolute;top:14px;right:18px;background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:6px;padding:4px 10px;cursor:pointer}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:14px 0}
.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.card .k{color:var(--muted);font-size:11px} .card .v{font-size:17px;font-weight:600;margin-top:2px} .card .s{color:var(--muted);font-size:11px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:12px 0}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin:12px 0}
@media(max-width:900px){.row2,.row3{grid-template-columns:1fr}}
.box{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px}
.box h3{margin:0 0 8px;font-size:13px;color:var(--muted);font-weight:600}
canvas{width:100%;height:180px;display:block}
.tabs{display:flex;gap:4px;margin:16px 0 8px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.tabs button{background:none;border:none;color:var(--muted);padding:8px 14px;cursor:pointer;font-size:13px;border-bottom:2px solid transparent}
.tabs button.on{color:var(--txt);border-bottom-color:var(--blue)}
.tbl{overflow-x:auto}
.tbl table{min-width:900px}
.tbl th{position:static}
.flags li{margin:3px 0}
.flags li.red{color:var(--red)} .flags li.warn{color:var(--amber)}
.sym{display:flex;flex-wrap:wrap;gap:6px}
.sym span{background:var(--panel2);border-radius:5px;padding:2px 7px;font-size:12px}
.legend{color:var(--muted);font-size:12px;padding:10px 24px;border-top:1px solid var(--line);margin-top:10px}
.legend b{color:var(--txt)}
.small{font-size:11px;color:var(--muted)}
.grp{background:var(--panel2)!important}
.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chip{border:1px solid var(--line);border-radius:14px;padding:2px 10px;font-size:12px;cursor:pointer;background:var(--panel2);color:var(--muted);display:inline-flex;align-items:center;gap:6px}
.chip.on{color:#fff;border-color:transparent}
.userbox{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:12px 0}
@media(max-width:900px){.userbox{grid-template-columns:1fr}}
.userbox textarea{width:100%;min-height:70px;resize:vertical}
.comp{display:grid;grid-template-columns:auto 1fr auto auto;gap:4px 10px;font-size:12px;align-items:center}
.comp .cb{height:7px;background:var(--line);border-radius:4px;overflow:hidden}
.comp .cb i{display:block;height:100%;background:var(--blue)}
.comp .grp-h{grid-column:1/-1;color:var(--muted);font-weight:600;margin-top:6px;font-size:11px;text-transform:uppercase}
/* dialog ustawień */
.dlg{position:fixed;inset:0;display:none;z-index:20;background:rgba(0,0,0,.6);align-items:flex-start;justify-content:center;overflow:auto;padding:5vh 12px}
.dlg.open{display:flex}
.dlg .win{background:var(--bg);border:1px solid var(--line);border-radius:10px;width:min(900px,96vw);padding:18px 22px 24px;position:relative}
.dlg h2{margin:0 0 10px;font-size:18px}
.dlg .tabs{margin-top:0}
.sched-ex{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.sched-ex b{min-width:80px}
.times{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.times .t{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:2px 8px;font-size:12px;display:inline-flex;gap:6px;align-items:center}
.times .t button{background:none;border:none;color:var(--muted);cursor:pointer;padding:0;font-size:13px}
.joblog{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px;font:12px/1.4 Consolas,monospace;white-space:pre-wrap;max-height:260px;overflow:auto;margin-top:8px;color:var(--muted)}
.wgrid{display:grid;grid-template-columns:1fr 1fr;gap:6px 18px}
@media(max-width:800px){.wgrid{grid-template-columns:1fr}}
.wrow{display:grid;grid-template-columns:1fr 130px 34px;gap:8px;align-items:center;font-size:12px}
.wrow input[type=range]{width:100%}
.wgrp{grid-column:1/-1;color:var(--muted);font-weight:600;margin-top:8px;font-size:11px;text-transform:uppercase;display:flex;justify-content:space-between}
.listrow{display:flex;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}
.listrow input[type=color]{width:34px;height:26px;border:none;background:none;padding:0}
.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--panel2);border:1px solid var(--line);padding:8px 14px;border-radius:8px;font-size:13px;z-index:50;display:none}
.spin{display:inline-block;width:10px;height:10px;border:2px solid var(--muted);border-top-color:transparent;border-radius:50%;animation:sp .8s linear infinite;vertical-align:middle;margin-right:5px}
@keyframes sp{to{transform:rotate(360deg)}}
.hist td,.hist th{font-size:12px;padding:4px 8px}

.menu{position:fixed;z-index:60;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:4px;display:flex;flex-direction:column;min-width:140px;box-shadow:0 8px 24px rgba(0,0,0,.4)}
.menu button{background:none;border:none;color:var(--txt);text-align:left;padding:7px 12px;border-radius:5px;cursor:pointer;font-size:13px}
.menu button:hover{background:var(--panel)}
