@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Nunito:wght@400;600;700;800;900&display=swap');
:root{--bg:#f2f5f2;--paper:#fff;--ink:#233b3d;--muted:#718987;--line:#dce8e2;--soft:#eaf3ef;--accent:#247a68;--up:#dd5662;--down:#24a477}
html[data-colors=global]{--up:#24a477;--down:#dd5662}
html[data-theme=night]{--bg:#142023;--paper:#1d2c30;--ink:#e7efed;--muted:#a1b4b2;--line:#33474a;--soft:#263a3d;--accent:#9bd8c5}
*{box-sizing:border-box}html{min-width:320px}body{margin:0;background:var(--bg);color:var(--ink);font:14px Nunito,'Microsoft YaHei',sans-serif}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}[hidden]{display:none!important}.up{color:var(--up)!important}.down{color:var(--down)!important}
.topbar{height:62px;background:var(--paper);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:16px;padding:0 max(18px,calc((100vw - 1480px)/2));position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:9px;flex:none}.brand img{width:42px;height:42px;border-radius:13px;object-fit:cover;border:2px solid var(--accent)}.brand strong{font-size:20px;font-weight:900;line-height:1;display:block}.brand small{font-size:10px;letter-spacing:.15em;color:var(--muted);font-weight:800;display:block;margin-top:4px}.author{display:flex;align-items:center;gap:8px;margin:auto;color:var(--muted);font-size:12px;font-weight:800;white-space:nowrap}.author button,.header-actions button{border:0;background:var(--soft);color:var(--accent);border-radius:99px;padding:8px 11px;font-weight:900;font-size:12px}.header-actions{display:flex;gap:6px;align-items:center;white-space:nowrap}.header-actions #resetBtn{background:#e8f1e4}.connection{font-size:11px;color:var(--accent);padding:6px 8px}.connection.offline{color:#c16c68}.shell{max-width:1480px;margin:auto;padding:16px 20px 28px}.orientation-hint{display:flex;align-items:center;justify-content:space-between;background:#fff0d7;border:1px solid #ebd7ae;color:#87652a;padding:6px 10px;border-radius:9px;margin-bottom:8px;font-size:11px;font-weight:800}.orientation-hint button{border:0;background:none;font-size:17px;color:inherit}
.scoreboard{display:grid;grid-template-columns:1.55fr repeat(6,1fr);gap:9px;align-items:center;background:linear-gradient(105deg,#e1f2e9,#edf7ed);border:1px solid #cde5d6;border-radius:17px;padding:13px 17px;margin-bottom:12px;min-height:86px}html[data-theme=night] .scoreboard{background:linear-gradient(105deg,#24423b,#243a39);border-color:#35584c}.scoreboard>div{min-width:0}.score-main span,.score-stat span{display:block;color:#638a7c;font-size:11px;font-weight:900}html[data-theme=night] .score-main span,html[data-theme=night] .score-stat span{color:#a4c1b4}.score-main strong{display:block;font-size:27px;line-height:1.1;font-weight:900;white-space:nowrap}.score-main button{border:0;background:transparent;color:var(--accent);font-size:11px;font-weight:900;padding:2px 0}.score-stat{border-left:1px solid #bfdccc;padding-left:10px}.score-stat strong{display:block;white-space:nowrap;font:800 15px 'DM Mono',monospace;margin-top:6px}.stock-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.stock-tab{display:flex;justify-content:space-between;align-items:center;gap:5px;border:1px solid var(--line);border-radius:12px;padding:8px 14px;background:var(--paper);color:var(--ink);text-align:left}.stock-tab.active{border-color:#71bfa2;background:var(--soft);box-shadow:inset 3px 0 #63bc92}.stock-tab span:first-child{display:flex;align-items:baseline;gap:7px}.stock-tab b{font-size:14px}.stock-tab small{color:var(--muted);font:10px 'DM Mono',monospace}.stock-tab span:last-child{font:900 13px 'DM Mono',monospace}
.board{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,.85fr) minmax(245px,.8fr);grid-template-areas:'chart order book' 'positions order book' 'mine ranking log';gap:12px;align-items:start}.card{min-width:0;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 28px #264c3b0d}.chart-card{grid-area:chart;padding:16px}.order-card{grid-area:order;padding:16px}.positions-card{grid-area:positions;padding:14px 16px}.book-card{grid-area:book}.my-orders-card{grid-area:mine}.ranking-card{grid-area:ranking}.log-card{grid-area:log}.chart-header,.card-head,.quote-line,.chart-foot,.order-preview,.trade-buttons,.book-row,.my-order,.rank-row,.log-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.eyebrow{font:900 9px 'DM Mono',monospace;color:#7ca999;letter-spacing:.12em}.chart-header h1{font-size:23px;line-height:1.1;margin:4px 0}.chart-header h1 small{font:12px 'DM Mono',monospace;color:var(--muted)}.quote{text-align:right}.quote strong{display:block;font:900 23px 'DM Mono',monospace}.quote span{font:900 11px 'DM Mono',monospace}.quote-line{color:var(--muted);font-size:10px;margin:9px 0 7px}.quote-line b{color:var(--ink)}.chart-wrap{height:282px;border-radius:11px;overflow:hidden;background:#203236}.chart-wrap canvas{width:100%;height:100%;display:block}.chart-foot{font-size:10px;color:var(--muted);margin-top:7px}.card-head{margin-bottom:11px}.card-head h2{font-size:18px;margin:2px 0 0;line-height:1.2}.card-head h2 b{font-size:12px;background:var(--soft);color:var(--accent);padding:1px 7px;border-radius:99px}.card-head>span{font-size:10px;color:var(--muted);font-weight:800}
.order-kind,.seg-buttons{display:flex;gap:4px;background:var(--soft);border-radius:9px;padding:3px}.order-kind button,.seg-buttons button{border:0;color:var(--muted);background:transparent;border-radius:7px;padding:6px 10px;font-weight:900;font-size:11px;flex:1}.order-kind button.active,.seg-buttons button.active{background:var(--paper);color:var(--accent);box-shadow:0 1px 5px #0001}.trade-inputs{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin:12px 0}.trade-inputs label,.limit-field{font-size:11px;color:var(--muted);font-weight:900}.trade-inputs label strong{float:right;color:var(--accent)}.input-wrap{display:flex;align-items:center;height:37px;background:var(--paper);border:1px solid var(--line);border-radius:8px;margin-top:5px;padding:0 8px;color:var(--accent)}.input-wrap input{border:0;outline:0;background:transparent;width:100%;min-width:0;color:var(--ink);padding:3px 5px;font-weight:900}.trade-inputs input[type=range]{width:100%;accent-color:var(--accent);margin:12px 0 0}.limit-field{display:block;margin-top:-4px}.order-preview{background:var(--soft);border-radius:9px;padding:9px;margin:10px 0;flex-wrap:wrap;font-size:10px;color:var(--muted)}.order-preview b{color:var(--ink)}.trade-buttons{gap:8px}.trade-buttons button{border:0;border-radius:9px;color:white;font-size:13px;font-weight:900;padding:11px 5px;flex:1}.trade-buttons .buy{background:var(--up)}.trade-buttons .sell{background:var(--down)}
.positions{display:grid;gap:6px}.position{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto;gap:8px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:9px}.position-main strong,.position-main span,.position-pnl b,.position-pnl small{display:block}.position-main strong{font-size:12px}.position-main strong small{font-size:9px;color:var(--muted)}.position-main span,.position-pnl small{font-size:10px;color:var(--muted)}.position-main i{font-style:normal;font-size:9px;border-radius:99px;padding:2px 4px}.long-tag{background:#f9e6e6;color:var(--up)}.short-tag{background:#e0f3ea;color:var(--down)}.position-pnl{text-align:right}.position-pnl b{font:900 13px 'DM Mono',monospace}.position-actions{display:flex;gap:4px}.position-actions button,.cancel-button{border:1px solid var(--line);background:var(--soft);color:var(--accent);border-radius:7px;padding:6px;font-size:10px;font-weight:900;white-space:nowrap}.risk-note{grid-column:1/-1;color:#ce6c53;font-size:10px}.empty{color:var(--muted);font-size:11px;padding:10px;text-align:center}
.secondary-card{padding:0 13px 12px}.secondary-card summary{list-style:none;cursor:pointer;padding:13px 1px;font-weight:900;display:flex;justify-content:space-between;align-items:center;font-size:13px}.secondary-card summary::-webkit-details-marker{display:none}.secondary-card summary:after{content:'⌄';color:var(--muted);margin-left:5px}.secondary-card:not([open]) summary:after{content:'›'}.secondary-card summary small{margin-left:auto;font-size:10px;color:var(--muted);font-weight:700}.book-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.book-grid h3{font-size:11px;margin:0 0 4px;color:var(--muted)}.book-grid h3 span{font-size:9px;font-weight:500}.book-list{max-height:410px;overflow:auto}.book-row{padding:4px 2px;border-bottom:1px solid var(--line);font-size:10px;gap:3px}.book-row span{color:var(--muted)}.book-row strong{font:900 10px 'DM Mono',monospace}.book-row b{font-size:10px}.book-row small{display:none}.my-orders,.leaderboard,.trade-log{max-height:250px;overflow:auto}.my-order,.rank-row,.log-row{padding:8px 2px;border-bottom:1px solid var(--line);font-size:11px}.my-order span:first-child{min-width:0}.my-order b,.my-order small{display:block}.my-order small{color:var(--muted);font-size:9px}.order-state{white-space:nowrap;color:var(--muted)}.rank-row span{color:var(--muted);width:17px}.rank-row b{margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-row strong,.log-row strong{font:900 11px 'DM Mono',monospace;white-space:nowrap}.rank-row.mine{color:var(--accent)}.shell footer{color:var(--muted);font-size:10px;text-align:center;margin:15px 0}
.toast{position:fixed;z-index:80;left:50%;bottom:24px;transform:translate(-50%,16px);background:#223b3c;color:#fff;border-radius:99px;padding:10px 18px;box-shadow:0 7px 25px #0003;opacity:0;pointer-events:none;transition:.2s;max-width:90vw;text-align:center;font-size:12px}.toast.visible{opacity:1;transform:translate(-50%,0)}.dialog{border:1px solid var(--line);border-radius:18px;background:var(--paper);color:var(--ink);padding:24px;width:min(430px,calc(100vw - 28px));max-height:min(85vh,700px);box-shadow:0 22px 70px #0004}.dialog::backdrop{background:#12262599}.dialog h2{font-size:21px;margin:0 0 15px}.dialog p{line-height:1.55}.dialog-close{position:absolute;right:15px;top:12px;border:0;background:transparent;color:var(--muted);font-size:23px}.dialog-confirm{background:var(--accent);border:0;color:white;border-radius:9px;padding:10px 18px;font-weight:900;margin-top:14px}.setting-line{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);font-weight:800}.setting-line input[type=range]{width:145px;accent-color:var(--accent)}.setting-line input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.setting-line .seg-buttons{min-width:170px}.tutorial{max-height:55vh;overflow:auto}.tutorial p{margin:0 0 12px}.dialog-label{display:block;font-weight:900}.dialog-label input{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);padding:9px}.event-icon{font-size:34px;color:var(--up)}
@media(max-width:1150px){.author{font-size:10px}.author b{display:none}.board{grid-template-columns:minmax(0,1.4fr) minmax(290px,1fr);grid-template-areas:'chart order' 'positions order' 'book mine' 'ranking log'}.book-list{max-height:260px}.scoreboard{grid-template-columns:repeat(7,1fr)}.score-main{grid-column:span 2}.score-stat{padding-left:6px}.score-stat strong{font-size:12px}}
@media(max-width:720px){.topbar{height:47px;padding:0 8px;gap:4px}.brand{gap:4px}.brand img{width:30px;height:30px;border-radius:9px}.brand strong{font-size:14px}.brand small{display:none}.author{margin:0 auto;font-size:9px;gap:2px}.author span{font-size:0}.author span:after{content:'作者 UID 443211651';font-size:8px}.author button{font-size:9px;padding:4px}.header-actions{gap:1px}.connection{font-size:0;padding:2px}.connection:before{content:'●';font-size:10px}.header-actions button{font-size:10px;padding:5px 4px}.header-actions #resetBtn{font-size:0}.header-actions #resetBtn:before{content:'重启人生';font-size:9px}.header-actions #resetBtn b{font-size:9px}.shell{padding:6px 7px 22px}.scoreboard{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2px 5px;padding:5px 8px;min-height:0;margin-bottom:5px;border-radius:10px}.score-main{grid-column:span 1;grid-row:span 2}.score-main span,.score-stat span{font-size:8px}.score-main strong{font-size:17px}.score-main button{font-size:8px}.score-stat{border:0;padding:0}.score-stat strong{font-size:10px;margin:0}.score-stat:nth-of-type(n+5){display:none}.stock-tabs{gap:4px;margin-bottom:5px}.stock-tab{padding:4px 5px;border-radius:7px}.stock-tab span:first-child{display:block}.stock-tab b{display:block;font-size:10px;white-space:nowrap}.stock-tab small{display:block;font-size:8px}.stock-tab span:last-child{font-size:9px}.board{display:flex;flex-direction:column;gap:5px}.board>*{width:100%}.chart-card{padding:7px 9px}.chart-header h1{font-size:15px;margin:0}.chart-header h1 small{font-size:9px}.eyebrow{display:none}.quote strong{font-size:16px}.quote span{font-size:9px}.quote-line{margin:2px 0 4px;font-size:9px}.chart-wrap{height:106px;border-radius:6px}.chart-foot{display:none}.order-card{padding:6px 9px}.card-head{margin-bottom:4px}.card-head h2{font-size:14px;margin:0}.card-head>span{font-size:9px}.order-kind{float:right;margin-top:-24px;margin-right:100px;padding:1px}.order-kind button{padding:3px 8px;font-size:9px}.trade-inputs{margin:5px 0 1px;gap:8px}.trade-inputs label,.limit-field{font-size:9px}.input-wrap{height:25px;margin-top:1px;padding:0 5px}.input-wrap input{font-size:11px}.trade-inputs input[type=range]{margin:5px 0 0}.limit-field{margin:2px 0}.order-preview{margin:4px 0;padding:3px 6px;font-size:8px}.trade-buttons button{font-size:10px;padding:6px 4px;border-radius:6px}.positions-card{padding:5px 8px}.positions-card .card-head{margin-bottom:2px}.positions-card .card-head h2{font-size:13px}.positions{max-height:95px;overflow:auto;gap:3px}.position{padding:4px;gap:3px;grid-template-columns:minmax(0,1.2fr) minmax(0,.7fr) auto}.position-main strong{font-size:10px}.position-main span,.position-pnl small{font-size:8px}.position-pnl b{font-size:10px}.position-actions button{font-size:8px;padding:4px}.secondary-card{padding:0 8px 6px}.secondary-card summary{padding:8px 0;font-size:11px}.secondary-card summary small{font-size:9px}.book-list{max-height:220px}.shell footer{font-size:9px;margin:9px 0}.toast{bottom:8px;padding:7px 11px;font-size:10px}}
@media(max-width:720px) and (max-height:700px){.orientation-hint{padding:2px 7px;margin-bottom:4px}.chart-wrap{height:82px}.scoreboard{padding:3px 7px}.stock-tabs{margin-bottom:3px}.stock-tab{padding:2px 5px}.order-card{padding:4px 8px}.positions-card{padding:4px 8px}.position{padding:3px}.trade-buttons button{padding:5px 4px}}
@media(min-width:721px) and (max-height:540px){.topbar{height:43px}.brand img{width:31px;height:31px}.brand strong{font-size:16px}.brand small{display:none}.shell{padding-top:6px}.scoreboard{min-height:0;padding:5px 12px;margin-bottom:5px}.score-main strong{font-size:17px}.score-stat strong{font-size:11px;margin-top:0}.stock-tabs{margin-bottom:5px}.stock-tab{padding:4px 9px}.board{grid-template-columns:minmax(0,1.3fr) minmax(300px,1fr);grid-template-areas:'chart order' 'positions order' 'book mine' 'ranking log';gap:5px}.chart-card,.order-card{padding:8px}.chart-wrap{height:112px}.chart-header h1{font-size:16px;margin:0}.quote strong{font-size:17px}.quote-line{margin:3px 0}.chart-foot{display:none}.order-card .card-head{margin-bottom:5px}.order-card .card-head h2{font-size:14px}.trade-inputs{margin:5px 0}.input-wrap{height:26px}.order-preview{margin:5px 0;padding:4px}.trade-buttons button{padding:7px}.positions-card{padding:5px 8px}.positions-card .card-head{margin-bottom:3px}.position{padding:4px}.secondary-card summary{padding:7px}}
@media(max-width:720px){.author span{display:none}}
.welcome-actions{display:flex;gap:8px}.welcome-actions button{flex:1;border:1px solid var(--line);background:var(--soft);color:var(--accent);border-radius:9px;padding:10px;font-weight:900}.welcome-actions button:first-child{background:var(--accent);color:#fff}
@media(max-width:720px){.order-card{position:relative}.order-kind{position:absolute;top:6px;right:99px;float:none;margin:0}}
@media(orientation:landscape) and (min-width:600px) and (max-height:540px){.topbar{height:40px}.shell{padding:3px 6px}.scoreboard{grid-template-columns:1.2fr repeat(6,1fr);padding:3px 8px;gap:3px;margin-bottom:3px}.score-main{grid-column:auto;grid-row:auto}.score-stat:nth-of-type(n+5){display:block}.stock-tabs{margin-bottom:3px}.stock-tab{padding:2px 8px}.stock-tab span:first-child{display:flex;gap:4px}.stock-tab b{font-size:10px}.stock-tab small{font-size:8px}.board{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(0,1fr);grid-template-areas:'chart order' 'positions order' 'book mine' 'ranking log';gap:4px}.chart-wrap{height:98px}.chart-card,.order-card{padding:5px 7px}.chart-header h1{font-size:14px}.quote strong{font-size:15px}.quote-line{margin:1px 0 3px}.trade-inputs{margin:3px 0 1px}.order-preview{margin:3px 0}.trade-buttons button{padding:5px}.positions-card{padding:4px 7px}.positions{max-height:85px}.position{padding:3px}.secondary-card summary{padding:6px 0}}
.chart-controls{display:flex;align-items:center;gap:4px;margin:0 0 7px}.chart-controls button{border:1px solid var(--line);background:var(--soft);color:var(--muted);border-radius:7px;padding:4px 9px;font-size:10px;font-weight:900;white-space:nowrap}.chart-controls button.active{background:var(--accent);border-color:var(--accent);color:#fff}.chart-controls span{margin-left:auto;color:var(--accent);font-size:10px;font-weight:900;white-space:nowrap}.chart-timeline{display:flex;align-items:center;gap:6px;margin-top:7px;font:10px 'DM Mono',monospace;color:var(--muted)}.chart-timeline input{flex:1;min-width:30px;accent-color:var(--accent);cursor:ew-resize}.chart-timeline input:disabled{opacity:.4;cursor:default}.chart-timeline button{border:0;background:var(--soft);color:var(--accent);font-size:9px;font-weight:900;border-radius:6px;padding:4px 6px;white-space:nowrap}
.reset-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.reset-actions button{padding:10px 14px;border-radius:9px;font-weight:900}.reset-actions button:first-child{border:1px solid var(--line);background:var(--soft);color:var(--muted)}.reset-actions .dialog-confirm{margin:0}
@media(max-width:720px){.chart-controls{margin:0 0 3px;gap:3px}.chart-controls button{font-size:9px;padding:2px 6px}.chart-controls span{font-size:9px}.chart-timeline{margin-top:3px;gap:3px;font-size:8px}.chart-timeline button{font-size:8px;padding:2px 4px}}
