:root{--bg: #0B0C0F;--panel: #15171C;--panel-2: #1C1F26;--border: #262A33;--border-2: #333945;--line: var(--border);--text: #ECEEF2;--muted: #8B93A3;--accent: #4C8DFF;--accent-soft: #131C2E;--accent-text: #fff;--up: #F04452;--down: #2EBD85;--warn: #F5A524;--ok: #2EBD85;--bad: #F04452;--mine: #F5A524;--mine-bg: #2A2110;--mine-border: #5A4414;--mono: Inter, "Noto Sans TC", system-ui, sans-serif;--core: #a78bfa;--satellite: #38bdf8;--watch: #6b7280;--blacklist: #ef4444;--none: #3a3f4b;font-family:Noto Sans TC,Microsoft JhengHei,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-size:14px}button{font:inherit;background:var(--accent);color:#fff;border:0;border-radius:6px;padding:6px 12px;cursor:pointer}button:hover{filter:brightness(1.1)}button:disabled{opacity:.5;cursor:default}button.ghost{background:transparent;border:1px solid var(--border);color:var(--text)}button.primary{background:var(--accent);color:var(--accent-text)}button.tiny{padding:2px 8px;font-size:12px}button.danger{background:transparent;color:var(--muted);padding:2px 6px}button.danger:hover{color:var(--up)}input,select,textarea{font:inherit;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 8px}input:focus,select:focus,textarea:focus{outline:1px solid var(--accent)}a,.link{color:var(--accent);cursor:pointer;text-decoration:none}h2,h3{font-weight:600}.topbar{display:flex;align-items:center;gap:16px;padding:8px 16px;border-bottom:1px solid var(--border);background:var(--panel);position:sticky;top:0;z-index:5;flex-wrap:wrap}.brand{font-weight:700;font-size:16px;white-space:nowrap}.brand .sub{color:var(--muted);font-weight:400;font-size:12px;margin-left:6px}nav{display:flex;gap:2px;align-items:center;flex:1;flex-wrap:wrap}nav .nav-group{color:var(--muted);font-size:11px;margin:0 4px 0 10px;text-transform:uppercase;letter-spacing:.05em}nav a{color:var(--muted);padding:5px 10px;border-radius:6px;font-size:14px}nav a.active{background:var(--panel-2);color:var(--text);font-weight:600}nav .pill{display:inline-block;min-width:18px;padding:0 6px;margin-left:4px;border-radius:9px;background:var(--accent);color:#fff;font-size:11px;line-height:18px;text-align:center}.status{color:var(--muted);font-size:12px;white-space:nowrap}.status .dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--muted);margin-right:6px}.status .dot.live{background:var(--ok);box-shadow:0 0 6px var(--ok)}.page{padding:12px 16px;display:flex;flex-direction:column;gap:12px}.user-menu{display:flex;align-items:center;gap:6px;font-size:13px}.user-menu a{color:var(--text);padding:4px 8px;border-radius:6px}.user-menu a.active{background:var(--panel-2)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:16px}.login-box{width:min(380px,100%);background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:12px}.login-box label{display:block;font-size:12px;color:var(--muted)}.login-box input{width:100%;margin-top:4px}.login-box .brand{margin-bottom:6px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:12px;min-width:0}.panel-head{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex-wrap:wrap}.panel-head h2{margin:0;font-size:15px;flex:1}.panel h3{margin:0 0 8px;font-size:14px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.table-wrap{overflow:auto;max-height:420px}.table-wrap.tall{max-height:560px}table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:13px}th,td{padding:6px 8px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}th{color:var(--muted);font-weight:500;font-size:12px;position:sticky;top:0;background:var(--panel)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tbody tr:hover{background:var(--panel-2)}tbody tr.selected{background:#22304a}.up{color:var(--up)}.down{color:var(--down)}.muted,.kv{color:var(--muted);font-size:12px}.small{font-size:12px}.hint{color:var(--muted);font-size:12px;margin:6px 0 0}.empty{color:var(--muted);padding:20px;text-align:center}.badge{display:inline-block;font-size:11px;padding:1px 6px;border-radius:10px;border:1px solid var(--border);color:var(--muted)}.badge.live{color:var(--ok);border-color:var(--ok)}.badge.core,.badge.satellite,.badge.watch,.badge.blacklist,.badge.hi,.badge.mid,.badge.lo{color:#fff;border-color:transparent;border-radius:4px}.badge.core{background:var(--core)}.badge.satellite{background:var(--satellite)}.badge.watch{background:var(--watch)}.badge.blacklist{background:var(--blacklist)}.badge.hi{background:var(--bad)}.badge.mid{background:var(--warn);color:#000}.badge.lo{background:var(--ok)}table.kv td:first-child{color:var(--muted);width:40%}.tabs{display:flex;gap:4px}.tabs button{background:transparent;color:var(--muted);border:1px solid transparent;padding:4px 10px}.tabs button.active{color:var(--text);border-color:var(--border);background:var(--panel-2)}.toast{position:fixed;bottom:20px;right:20px;background:var(--panel-2);border:1px solid var(--border);padding:10px 14px;border-radius:8px;box-shadow:0 6px 20px #0006;max-width:460px;z-index:40}.toast.error{border-color:var(--up)}.add-form{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.add-form input:first-child{width:16em}.list-tabs{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:8px}.list-tabs button{background:transparent;color:var(--muted);border:1px solid transparent;padding:4px 10px;display:inline-flex;align-items:center;gap:4px}.list-tabs button.active{color:var(--text);border-color:var(--border);background:var(--panel-2)}.list-tabs .cnt{color:var(--muted);font-size:11px}.list-tabs .sys{font-size:10px;color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:0 4px;margin-left:2px}.list-tabs .sw{margin:0 2px 0 0}.list-picker{display:flex;gap:4px;flex-wrap:wrap}.chip.pick{cursor:pointer;display:inline-flex;align-items:center;gap:4px;margin:0;color:var(--muted)}.chip.pick input{margin:0;width:auto}.chip.pick.on{color:var(--text);border-color:var(--accent);background:#22304a}.list-dots{display:inline-flex;gap:4px;align-items:center}.ldot{display:inline-block;width:10px;height:10px;border-radius:50%;border:1px solid var(--border);cursor:pointer}.ldot.sys{cursor:default;border-radius:2px}.chart{width:100%;height:380px}.legend{display:flex;gap:12px;font-size:12px;margin-top:4px}.alert-form{display:flex;flex-direction:column;gap:8px;padding:8px;background:var(--panel-2);border-radius:8px;margin-bottom:8px}.alert-form .row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.alert-form label{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}.alert-form .params{display:flex;gap:10px;flex-wrap:wrap}.alert-form .params input,.alert-form .params select{width:8em}.chk input{margin:0}.events-list,.runs{list-style:none;margin:0;padding:0;max-height:440px;overflow:auto}.events-list li{padding:8px;border-bottom:1px solid var(--border)}.events-list time,.runs time{color:var(--muted);font-size:12px;margin-right:8px}.events-list .delivery{font-size:11px;color:var(--muted);margin-left:6px}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px;font-size:13px}.profile-grid .wide{grid-column:1 / -1}.profile-grid .k{color:var(--muted);font-size:12px;margin-right:6px}.tiles.small-tiles{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));margin:6px 0}.small-tiles .tile .v{font-size:16px}.chips-line,.ctx-line{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;margin:6px 0;align-items:center}.news{margin:0;padding-left:1.2em;font-size:13px}.news li{padding:2px 0}.brief{background:var(--panel-2);border-radius:8px;padding:8px 10px;margin:6px 0;font-size:13px}.brief .meta{color:var(--muted);font-size:11px;margin-top:4px}.card .brief-line{color:var(--muted);font-size:12px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card .mkt-line{display:flex;gap:10px;font-size:12px;margin-top:4px}.summary-wrap section{margin-top:10px}.summary-wrap section h4{margin:0 0 6px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.pill-st{display:inline-block;font-size:11px;padding:1px 8px;border-radius:10px;color:#fff;background:var(--none);vertical-align:middle}.pill-st.ok{background:var(--ok)}.pill-st.warn{background:var(--warn);color:#000}.pill-st.bad,.pill-st.missing{background:var(--bad)}.pill-st.idle{background:var(--none)}.health-foot{display:flex;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:12px;margin-top:6px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-bottom:10px}.tile{background:var(--panel-2);border-radius:8px;padding:8px 10px}.tile .k{color:var(--muted);font-size:11px}.tile .v{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums;margin-top:2px}.tile .s{color:var(--muted);font-size:11px;margin-top:2px}.job-buttons{display:flex;flex-wrap:wrap;gap:6px}.jobs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}.job-card{background:var(--panel-2);border-radius:8px;padding:8px;font-size:12px}.job-card b{display:block;margin-bottom:2px}.job-card .next{color:var(--muted)}.runs li{padding:4px 8px;font-size:12px;border-bottom:1px solid var(--border);font-family:ui-monospace,Consolas,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.runs .ok{color:var(--ok)}.runs .fail{color:var(--up)}.market-nav{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.market-nav select{min-width:9em}.mk-grid{display:grid;grid-template-columns:3fr 2fr;gap:10px;margin-bottom:10px}.mk-grid.three{grid-template-columns:1fr 1fr 1fr}.mk-block{background:var(--panel-2);border-radius:8px;padding:8px 10px;min-width:0;margin-bottom:10px}.mk-block h3{margin:0 0 6px;font-size:13px}.mk-block h3 .muted{font-weight:400;font-size:11px}.mk-block th{background:var(--panel-2)}.svg-wrap svg{width:100%;height:160px;display:block}.dist{display:flex;flex-direction:column;gap:3px}.dist .row{display:grid;grid-template-columns:4.5em 1fr 3em;gap:6px;align-items:center;font-size:12px}.dist .bar{height:12px;border-radius:3px;background:var(--muted);min-width:1px}.dist .bar.up{background:var(--up)}.dist .bar.down{background:var(--down)}.sector-row{cursor:pointer}.sector-stocks td{padding:6px 8px 10px 24px;background:var(--bg)}.heat{padding:2px 6px;border-radius:4px;font-variant-numeric:tabular-nums}.stock-chips{display:flex;flex-wrap:wrap;gap:6px;white-space:normal}.chip{font-size:12px;padding:2px 8px;border-radius:12px;background:var(--panel-2);border:1px solid var(--border);white-space:nowrap;margin-right:4px}.chip.up{border-color:var(--up)}.chip.down{border-color:var(--down)}.movers{margin:0;padding-left:1.6em;font-size:12px}.movers li{padding:2px 0;display:flex;gap:6px;white-space:nowrap;overflow:hidden}.movers .n{flex:1;overflow:hidden;text-overflow:ellipsis}.movers .sec{color:var(--muted)}.score-bar{display:inline-block;width:60px;height:8px;background:var(--bg);border-radius:4px;vertical-align:middle;margin-right:6px;overflow:hidden}.score-bar i{display:block;height:100%;background:linear-gradient(90deg,#4f8cff,#f5c542)}.tag{display:inline-block;font-size:11px;padding:1px 6px;border-radius:4px;background:#22304a;color:#cfe0ff;margin:1px 2px 1px 0;white-space:nowrap}.tag.chip{background:#3a2a4a;color:#e8c8ff;border:0}.tag.hot{background:#4a2a2a;color:#ffc9c9}.sc-row{cursor:pointer}.factor-row td{background:var(--bg);color:var(--muted);font-size:12px;padding:6px 8px 8px 28px;white-space:normal}.board{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.col{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:10px;min-height:240px}.col h3{margin:0 0 10px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;display:flex;justify-content:space-between}.card{background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--none);border-radius:8px;padding:10px 12px;margin-bottom:10px;cursor:pointer}.card:hover{border-color:var(--accent);border-left-color:var(--tier, var(--accent))}.card.core{border-left-color:var(--core);--tier: var(--core)}.card.satellite{border-left-color:var(--satellite);--tier: var(--satellite)}.card.watch{border-left-color:var(--watch);--tier: var(--watch)}.card.blacklist{border-left-color:var(--blacklist);--tier: var(--blacklist)}.card .top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.card .name{font-weight:600}.card .ticker,.drawer .ticker{color:var(--muted);font-size:12px}.card .meta{display:flex;gap:10px;color:var(--muted);font-size:12px;margin-top:4px;flex-wrap:wrap}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:middle}.dot.intact{background:var(--ok)}.dot.shaken{background:var(--warn)}.dot.broken{background:var(--bad)}.stale{color:var(--bad);font-weight:600}.legend-crm{color:var(--muted);font-size:12px}.sw{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 4px 0 10px;vertical-align:middle}.sw.core{background:var(--core)}.sw.satellite{background:var(--satellite)}.sw.watch{background:var(--watch)}.sw.blacklist{background:var(--blacklist)}.sw.none{background:var(--none)}.graph{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;overflow:auto}.graph svg{display:block;min-width:100%}.graph .node{cursor:pointer}.graph .node circle{stroke:var(--panel);stroke-width:2}.graph .node text{font-size:12px;fill:var(--text)}.graph .node .sub{font-size:10px;fill:var(--muted)}.graph .edge{fill:none;stroke:var(--muted);stroke-opacity:.35}.graph .edge.dim{stroke-opacity:.08}.graph .edge.hi{stroke:var(--accent);stroke-opacity:.9}.graph .edge.partner{stroke:var(--warn);stroke-opacity:.7}.graph .edge.holding{stroke:var(--ok);stroke-opacity:.7}.graph .layer-label{font-size:11px;fill:var(--muted)}.bar{height:6px;background:var(--accent);border-radius:3px;opacity:.7}pre.prompt{white-space:pre-wrap;background:var(--bg);padding:10px;border-radius:6px;font-size:12px;max-height:220px;overflow:auto}.proposal{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-bottom:10px}.proposal .head{display:flex;justify-content:space-between;gap:12px;align-items:baseline;flex-wrap:wrap}.proposal .summary{font-weight:600}.proposal .rationale{margin:6px 0}.proposal details{color:var(--muted);font-size:12px}.proposal pre{background:var(--bg);padding:8px;border-radius:6px;overflow:auto}.proposal .actions{display:flex;gap:8px;margin-top:8px}.status.approved{color:var(--ok)}.status.rejected{color:var(--bad)}.att{padding:8px 0;border-bottom:1px dashed var(--border)}ul.issues{margin:6px 0 0;padding-left:18px}ul.issues li.high{color:var(--bad)}ul.issues li.medium{color:var(--warn)}ul.issues li.low{color:var(--muted)}.warn-box{background:#ffb3471f;border:1px solid var(--warn);padding:8px 10px;border-radius:6px;font-size:13px;margin:6px 0}.ok-box{background:#4caf501a;border:1px solid var(--ok);padding:8px 10px;border-radius:6px;font-size:13px;margin:6px 0}.rel{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px dashed var(--border)}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(600px,100vw);background:var(--panel);border-left:1px solid var(--border);z-index:20;overflow:auto;box-shadow:-8px 0 24px #0006}.drawer-inner{padding:18px 20px 40px;position:relative}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:10}.drawer h2{margin:0;font-size:20px;display:flex;align-items:center;gap:10px}.drawer .close{position:absolute;top:10px;right:14px;background:none;border:0;font-size:20px;color:var(--muted)}.drawer section{margin-top:18px}.drawer section h4{margin:0 0 6px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.drawer textarea,.drawer input,.drawer select,dialog textarea,dialog input,dialog select{width:100%}.drawer textarea{resize:vertical}.drawer table,dialog table{white-space:normal}.drawer th{position:static}.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.row4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:8px}.row4 input,.row4 select{font-size:12px;padding:5px 8px}.drawer label,dialog label{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}.drawer label>input,.drawer label>select,.drawer label>textarea,dialog label>input,dialog label>select,dialog label>textarea{margin-top:3px}label.inline{display:flex;align-items:center;gap:6px;margin:0;font-size:12px}label.inline input{width:auto}.seg{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;margin-left:8px}.seg button{background:none;border:0;padding:3px 10px;color:var(--muted);border-right:1px solid var(--border);border-radius:0}.seg button:last-child{border-right:0}.seg button.on{background:var(--panel-2);color:var(--text);font-weight:600}.tiny-select{font-size:12px;padding:2px 6px;margin-left:8px;width:auto!important}table.drivers td{vertical-align:middle}table.inner{margin:6px 0;font-size:12px}table.inner th,table.inner td{padding:3px 6px}.series-row td{background:var(--bg)}.actions-cell{white-space:nowrap;text-align:right}.sig{display:inline-block;padding:1px 7px;border-radius:4px;font-size:11px;color:#fff;background:var(--none)}.sig.on_track{background:var(--ok)}.sig.ahead{background:var(--accent)}.sig.behind,.sig.weakened{background:var(--bad)}.sig.no_data{background:var(--watch)}.cp{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px dashed var(--border)}.cp.overdue{background:#ef535014;border-radius:6px;padding:8px}.pill-s{display:inline-block;padding:0 6px;border-radius:4px;font-size:11px;color:#fff;background:var(--muted);margin-right:4px}.pill-s.pending{background:var(--muted)}.pill-s.confirmed{background:var(--ok)}.pill-s.missed,.pill-s.bad{background:var(--bad)}.pill-s.supports{background:var(--ok)}.pill-s.weakens{background:var(--bad)}.pill-s.confirms{background:var(--accent)}tr.flag td{color:var(--bad)}.timeline{list-style:none;padding:0;margin:0}.timeline li{padding:8px 0 8px 14px;border-left:2px solid var(--border);position:relative}.timeline li:before{content:"";position:absolute;left:-5px;top:14px;width:8px;height:8px;border-radius:50%;background:var(--muted)}.timeline li.buy:before,.timeline li.add:before{background:var(--ok)}.timeline li.sell:before,.timeline li.trim:before{background:var(--bad)}.timeline li.news:before,.timeline li.earnings:before,.timeline li.call:before{background:var(--accent)}.timeline .when{font-size:12px;color:var(--muted)}.timeline .kind{font-weight:600;margin-right:6px}.timeline .by{font-size:11px;color:var(--muted);margin-left:6px}dialog{border:1px solid var(--border);border-radius:10px;background:var(--panel);color:var(--text);width:min(480px,92vw);padding:18px 20px}dialog::backdrop{background:#00000080}dialog h3{margin:0 0 12px}dialog menu{display:flex;justify-content:flex-end;gap:8px;padding:0;margin:8px 0 0}@media(max-width:1000px){.grid2,.board,.mk-grid,.mk-grid.three{grid-template-columns:1fr}.row3,.row4{grid-template-columns:1fr 1fr}}.toolbar{gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.dropdown{position:absolute;top:100%;left:0;z-index:20;min-width:20em;max-height:280px;overflow-y:auto;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0006}.dropdown .item{padding:6px 10px;cursor:pointer;font-size:13px}.dropdown .item:hover{background:var(--panel)}.node.seed text{font-weight:600}.shell{min-height:100vh;display:flex;flex-direction:column}.shell-head{display:flex;align-items:center;gap:14px;padding:10px 20px;border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:30}.brand-mark{display:inline-flex;align-items:center;gap:8px;color:var(--text);font-weight:700;font-size:15px;white-space:nowrap}.brand-mark .logo{width:24px;height:24px;border-radius:6px;background:var(--accent);display:inline-block}.view-nav{display:flex;gap:4px;background:var(--panel-2);border-radius:999px;padding:4px;flex:0 0 auto}.view-nav a{color:var(--muted);min-height:32px;padding:0 12px;border-radius:999px;font-size:13px;display:inline-flex;align-items:center}.view-nav a.active{background:var(--text);color:var(--bg);font-weight:600}.search-box{position:relative;flex:1 1 200px;max-width:420px}.search-box .field{display:flex;align-items:center;gap:8px;min-height:40px;border-radius:999px;border:1px solid var(--border);background:var(--bg);padding:0 12px 0 14px;color:var(--muted);font-size:13px}.search-box .field:focus-within{border-color:var(--accent)}.search-box input{flex:1 1 auto;background:transparent;border:0;padding:0;color:var(--text);min-width:0}.search-box input:focus{outline:none}.search-box .kbd{font-family:var(--mono);font-size:10px;border:1px solid var(--border-2);border-radius:4px;padding:1px 5px;color:var(--muted)}.search-pop{position:absolute;top:calc(100% + 6px);left:0;right:0;min-width:320px;background:var(--panel);border:1px solid var(--border-2);border-radius:12px;padding:6px;box-shadow:0 12px 32px #00000080;z-index:40;max-height:60vh;overflow:auto}.search-pop .grp{font-size:11px;color:var(--muted);padding:8px 10px 2px}.search-pop .empty{padding:14px}.head-right{margin-left:auto;display:flex;align-items:center;gap:8px}.inbox{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 10px;border-radius:6px;border:1px solid var(--border);color:var(--muted);font-size:12px;white-space:nowrap}.inbox.has{border-color:var(--mine-border);background:var(--mine-bg);color:var(--mine)}.avatar-wrap{position:relative}.avatar-btn{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 10px 0 6px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text);font-size:12px}.avatar-btn .av,.avatar-menu .av{width:20px;height:20px;border-radius:50%;background:var(--border-2);display:inline-block}.avatar-menu{position:absolute;top:calc(100% + 6px);right:0;width:240px;background:var(--panel);border:1px solid var(--border-2);border-radius:12px;padding:6px;display:flex;flex-direction:column;gap:2px;box-shadow:0 12px 32px #00000080;z-index:40}.avatar-menu .who{display:flex;align-items:center;gap:10px;padding:8px 10px}.avatar-menu .who .av{width:32px;height:32px}.avatar-menu .sep{height:1px;background:var(--border);margin:4px 0}.avatar-menu a,.avatar-menu button.item{display:flex;align-items:center;gap:10px;min-height:40px;padding:0 10px;border-radius:8px;font-size:13px;color:var(--text);background:transparent;border:0;text-align:left;width:100%}.avatar-menu a:hover,.avatar-menu button.item:hover{background:var(--panel-2)}.avatar-menu .r{margin-left:auto;font-size:11px;color:var(--muted)}.avatar-menu button.item.danger{color:#f0a0a5}.banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 20px;font-size:12px;border-bottom:1px solid var(--border)}.banner.bad{background:#2a1214;color:#f0a0a5;border-color:#5a2226}.banner.warn{background:var(--mine-bg);color:var(--mine);border-color:var(--mine-border)}.banner button{margin-left:auto}.shell .page{flex:1 1 auto;width:100%;max-width:1440px;margin:0 auto;padding:12px 20px 24px}.bottom-nav{display:none}.page-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.page-head h1{margin:0;font-size:20px;font-weight:700}.sub-tabs{display:flex;flex-wrap:nowrap;flex:0 0 auto;gap:2px;border-bottom:1px solid var(--border);overflow-x:auto;position:sticky;top:61px;background:var(--bg);z-index:20}.view-nav,.bottom-nav{flex-wrap:nowrap}.sub-tabs a{color:var(--muted);min-height:38px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;border-bottom:2px solid transparent;font-size:13px;white-space:nowrap}.sub-tabs a.active{color:var(--text);border-bottom-color:var(--accent)}.sub-tabs .cnt{font-family:var(--mono);font-size:11px;color:var(--muted)}.sub-tabs .legacy{margin-left:auto;align-self:center;font-size:11px;color:var(--muted);padding-right:6px;white-space:nowrap}.ftag{display:inline-flex;align-items:center;gap:5px;font-size:11px;line-height:1;padding:5px 8px;border-radius:6px;border:1px solid var(--border);color:#c3c8d2;white-space:nowrap;font-family:var(--mono);font-variant-numeric:tabular-nums}.ftag.live{background:#0f2a1e;border-color:#1d5a3e;color:var(--ok)}.ftag.late{background:#2a1a10;border-color:#5a3414;color:var(--warn)}.ftag.stale{background:#2a1214;border-color:#5a2226;color:var(--bad)}.ftag.off{background:var(--panel-2);border-color:var(--border-2);color:var(--muted)}.mtag{display:inline-flex;align-items:center;font-size:11px;line-height:1;padding:5px 8px;border-radius:6px;border:1px solid var(--mine-border);background:var(--mine-bg);color:var(--mine);white-space:nowrap}.mtag.sys{border-style:dashed;background:transparent;color:var(--muted);border-color:var(--border-2)}.mtag.alert{background:#2a1214;border-color:#5a2226;color:var(--bad)}.stag{display:inline-flex;align-items:center;font-size:11px;line-height:1;padding:5px 8px;border-radius:6px;border:1px solid #23365C;background:var(--accent-soft);color:#7faaff;white-space:nowrap}.stock-row{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 10px;border-radius:10px;color:var(--text);font-size:13px}.stock-row:hover,.stock-row.on{background:var(--panel-2)}.stock-row .nm{flex:1 1 auto;min-width:0}.stock-row .nm b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stock-row .nm .sub{display:flex;gap:4px;align-items:center;margin-top:3px;font-size:11px;color:var(--muted);flex-wrap:wrap}.stock-row .px{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}.stock-row .px b{display:block;font-size:15px;font-weight:600}.stock-row .px span{font-size:12px}.notfound{max-width:520px;margin:60px auto;text-align:center;display:flex;flex-direction:column;gap:12px}.notfound h1{margin:0;font-size:22px}@media(max-width:768px){.shell-head{padding:8px 12px;gap:8px}.view-nav,.inbox .txt,.search-box .kbd,.sub-tabs .legacy{display:none}.search-box{max-width:none}.shell .page{padding:10px 12px 84px}.sub-tabs{top:57px}.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--bg);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav a{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:52px;color:var(--muted);font-size:11px}.bottom-nav a.active{color:var(--text)}.table-wrap{max-height:none}}
