:root{--bg:#000;--bar:#0b0b0c;--panel:#101012;--line:#1f1f22;--line2:#2c2c30;--text:#d6d6d9;--dim:#7d7d85;--up:#3fb68b;--down:#e0526a;--amber:#f0a020;--silver:#c0c0c0}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0;background:var(--bg);color:var(--text);font:13px/1.35 "Segoe UI",-apple-system,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;overflow:hidden}
button,select,input{font:inherit;color:var(--text);background:transparent;border:1px solid var(--line2);border-radius:6px;padding:5px 9px;outline:none}
button{cursor:pointer;transition:background .12s,color .12s,border-color .12s}
button:hover{background:#19191c}button:focus-visible,input:focus-visible,select:focus-visible{border-color:var(--amber)}
select{background:var(--bar)}input[type=number]{-moz-appearance:textfield}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.ghost{border-color:transparent;color:#bdbdc3}.ghost:hover{color:#fff}
.dim{color:var(--dim)}.up{color:var(--up)}.down{color:var(--down)}.grow{flex:1}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
td,th{padding:3px 4px;text-align:right;font-weight:400;white-space:nowrap}th{color:var(--dim);font-size:11px}td:first-child,th:first-child{text-align:left}
h3{margin:0 0 8px;font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--dim);display:flex;align-items:center;gap:8px}
h3 .dim{letter-spacing:0;text-transform:none;font-weight:400}

/* plain white line icons, drawn inline */
.ic{display:inline-grid;place-items:center;width:30px;height:30px;color:#e6e6ea;vertical-align:middle;flex:none}

#app{display:grid;height:100%;grid-template:var(--toph,44px) 1fr 30px / var(--railw,46px) 1fr 304px;grid-template-areas:"top top top" "rail stage side" "bot bot side"}
#top{grid-area:top;display:flex;align-items:center;gap:6px;padding:0 10px;background:var(--bar);border-bottom:1px solid var(--line);min-width:0}
.mark{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-weight:700;letter-spacing:.04em;color:#000;background:linear-gradient(135deg,var(--silver),#8d8d8d 55%,var(--amber))}
.mark.sm{width:26px;height:26px;border-radius:7px;font-size:11px;flex:none}
.symbtn{display:flex;align-items:baseline;gap:8px;border-color:transparent;padding:5px 8px}.symbtn b{font-size:15px;letter-spacing:.03em}.symbtn span{color:var(--dim);max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sep{width:1px;height:20px;background:var(--line2);margin:0 4px;flex:none}.lbl{color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.grp{display:flex;gap:1px}.grp button{border-color:transparent;padding:5px 8px;color:#b4b4ba;border-radius:5px}.grp button.on{background:#1d1d21;color:#fff}
.num{width:46px;padding:5px 6px;text-align:center}
.icbtn{padding:0;border-color:transparent;width:34px;height:34px;display:grid;place-items:center}
#newsBtn{position:relative}#newsDot{position:absolute;top:5px;right:3px;width:6px;height:6px;border-radius:50%;background:var(--amber);display:none}#newsBtn.new #newsDot{display:block}

#rail{grid-area:rail;background:var(--bar);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;overflow:hidden auto}
#rail button{padding:0;width:36px;height:34px;border-color:transparent;display:grid;place-items:center;border-radius:7px}
#rail button.on{background:#232327;box-shadow:inset 0 0 0 1px var(--amber)}
#rail hr{width:24px;border:0;border-top:1px solid var(--line2);margin:4px 0}

#stage{grid-area:stage;position:relative;min-width:0;min-height:0}
#chart{position:absolute;inset:0}
#wm{position:absolute;inset:0;display:grid;place-items:center;font-size:min(13vw,120px);font-weight:600;letter-spacing:.04em;color:rgba(0,0,0,.07);pointer-events:none;user-select:none}
#legend{position:absolute;z-index:3;left:12px;top:8px;display:flex;gap:10px;align-items:baseline;pointer-events:none;color:#1b1b1b;font-variant-numeric:tabular-nums}
#legend b{font-size:14px}#legend .up{color:#0b6b4c}#legend .down{color:#9a1c33}
#toast{position:absolute;z-index:5;left:50%;bottom:18px;transform:translateX(-50%);background:#111;border:1px solid var(--line2);border-radius:8px;padding:8px 14px;box-shadow:0 8px 30px rgba(0,0,0,.5);max-width:80%}

#side{grid-area:side;background:var(--bar);border-left:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden auto}
.panel{padding:12px 12px 10px;border-bottom:1px solid var(--line)}
#watch tbody tr{cursor:pointer}#watch tbody tr:hover{background:#151517}#watch tbody tr.on{background:#1a1a1d}#watch td:first-child{font-weight:600;letter-spacing:.02em}#watch tr.bk td:first-child::after{content:' BK';color:var(--down);font-size:10px;font-weight:600}#mkt{font-weight:600;letter-spacing:.03em}
.det{display:flex;gap:8px;align-items:baseline}.det b{font-size:15px}.det span{color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.px{display:flex;gap:10px;align-items:baseline;margin:2px 0 10px}.px span:first-child{font-size:24px;font-weight:600;font-variant-numeric:tabular-nums}
.qty{display:flex;gap:4px}.qty input{flex:1}.qty select{padding:5px 2px;flex:none}.hint{font-size:12px;margin:-2px 0 8px}
.ticket{display:grid;grid-template-columns:1.7fr 1fr 1fr;gap:6px;margin-bottom:8px}.ticket label{display:flex;flex-direction:column;gap:3px;color:var(--dim);font-size:11px}.ticket input{width:100%;min-width:0;padding:5px 6px}
.bs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:6px}
.buy,.sell{border:0;font-weight:600;color:#fff;padding:8px}.buy{background:var(--up)}.buy:hover{background:#35a37b}.sell{background:var(--down)}.sell:hover{background:#cc435b}
.wide{width:100%;display:flex;align-items:center;justify-content:center;gap:4px;border-color:var(--line2);margin-top:8px;padding:2px 9px;min-height:32px}
#pos{margin-top:8px;border-top:1px solid var(--line)}#pos td{padding-top:5px}
.alog{margin-top:8px;color:var(--dim);font-size:12px;max-height:74px;overflow:auto}.alog div{padding:1px 0}

#bot{grid-area:bot;display:flex;align-items:center;gap:10px;padding:0 10px;background:var(--bar);border-top:1px solid var(--line);font-size:12px;font-variant-numeric:tabular-nums}
#conn i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#666;margin-right:6px}#conn.ok i{background:var(--up)}#conn.bad i{background:var(--down)}

.pop{position:absolute;z-index:20;background:#0e0e10;border:1px solid var(--line2);border-radius:10px;box-shadow:0 18px 60px rgba(0,0,0,.65);padding:12px}
#symPop{left:44px;top:46px;width:300px}#symList div{display:flex;justify-content:space-between;gap:10px;padding:7px 8px;border-radius:6px;cursor:pointer}#symList div:hover{background:#19191c}#symList b{letter-spacing:.03em}#symList span{color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.float{right:316px;top:52px;width:340px;max-height:70vh;display:flex;flex-direction:column}.float.wide{width:440px}
.float h3{justify-content:space-between}.float .sub{margin-top:14px}.x{border:0;padding:0 6px;font-size:18px;line-height:1;color:var(--dim)}
#newsList{overflow:auto}#newsList div{padding:7px 2px;border-bottom:1px solid var(--line)}#newsList div:last-child{border:0}#newsList small{color:var(--dim)}#newsList b{letter-spacing:.03em}
#boardT td:first-child{font-weight:600}#boardT tr.me td{color:#fff}

.gate{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(1200px 600px at 50% 0,#151517,#000 70%)}
.gatebox{width:min(360px,calc(100vw - 32px));display:flex;flex-direction:column;gap:12px;align-items:center;text-align:center;padding:28px;border:1px solid var(--line2);border-radius:14px;background:#0c0c0e}
.gatebox h1{margin:4px 0 0;font-size:20px;font-weight:600;letter-spacing:.02em}.gatebox p{margin:0;color:var(--dim)}
.gatebox input,.gatebox button{width:100%;padding:10px 12px}.gatebox button{background:var(--silver);color:#000;border:0;font-weight:600}.gatebox button:hover{background:#fff}
.wholist{display:flex;flex-direction:column;gap:8px;width:100%}
@media (max-width:900px){#app{grid-template-columns:var(--railw,46px) 1fr 0}#side{display:none}.float{right:8px}}
.seg{display:grid;grid-template-columns:1fr 1fr;margin-bottom:8px}.seg button{border:1px solid var(--line2);background:none;color:var(--dim);padding:5px;border-radius:0}.seg button.on{background:var(--line2);color:inherit;font-weight:600}
.pxrow{display:flex;flex-direction:column;gap:3px;color:var(--dim);font-size:11px;margin-bottom:8px}.pxrow input{padding:5px 6px}.pxrow[hidden],.bs[hidden]{display:none}.bs button.off{opacity:.4}.cx{padding:1px 6px;font-size:11px}
