:root{--chart-fill:#359b7614} :root[data-theme=light]{--bg:#f6f8fa;--panel:#fff;--raised:#edf2f1;--text:#1d2937;--muted:#788590;--border:#e4e9ed;--accent:#207b62;--accent-ink:#fff;--positive:#258a68;--negative:#b85966;--chart-fill:#258a6810}
.app{max-width:1440px;padding:0 48px 32px}.topbar{height:90px;border-bottom:1px solid var(--border);margin-bottom:18px}.brand{font-size:1.2rem}.brand-mark{background:#f0b90b1a;color:#aa8100}.tabs{margin-bottom:30px;gap:34px}.subbar{padding-bottom:18px}.tab.active{color:var(--accent)}h1{font-size:1.4rem}.panel{border-radius:18px}.portfolio-overview{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(400px,1.3fr);gap:40px;align-items:center;margin:18px 0 36px}.balance-block{padding:32px 0}.balance{font-size:3.4rem}.balance .unit{font-size:1rem}.portfolio-chart-panel{padding:18px 22px}.portfolio-chart{height:205px}.portfolio-chart svg{width:100%;height:100%}.chart-empty{display:grid;place-content:center;height:100%;text-align:center}.chart-filters{justify-content:flex-end;margin:0!important}.portfolio-chart-panel #chart-range{font-size:.65rem;text-align:right;margin-top:10px}
.holdings-list{background:var(--panel);border:1px solid var(--border);border-radius:0 0 18px 18px;overflow:hidden}.holdings-head{background:var(--panel);border:1px solid var(--border);border-bottom:0;border-radius:18px 18px 0 0;display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr 1.2fr;padding:20px 24px;color:var(--muted);font-size:.75rem}.holdings-head span:not(:first-child){text-align:right}.holding{grid-template-columns:40px minmax(100px,1.3fr) 1fr 1fr 1fr 1.2fr;padding:18px 24px;gap:14px}.holding:last-child{border-bottom:0}.holding:hover{background:var(--raised)}.holding-qty,.holding-current,.holding-gain{text-align:right;font-variant-numeric:tabular-nums;font-size:.82rem}.holding-gain{font-size:.77rem}.coin-quantity,.coin-price{display:none}.coin-avatar{position:relative;overflow:hidden;background:var(--raised);flex-shrink:0}.coin-avatar img{position:absolute;width:100%;height:100%;inset:0;object-fit:contain;background:var(--panel)}.coin-symbol{margin:0}.coin-total{margin:0}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.filter{border:1px solid var(--border);border-radius:9px;padding:8px 15px;background:transparent;font-size:.78rem;color:var(--muted)}.filter.active{background:var(--raised);color:var(--accent);border-color:transparent;font-weight:650}.signal-card,.signal-card.sell{background:var(--panel);color:var(--text);border:1px solid var(--border);border-left:3px solid #3b9978;box-shadow:none;padding:15px 20px;display:grid;grid-template-columns:1fr auto;gap:6px 20px}.signal-card.sell{border-left-color:#bd7180}.signal-card-main{grid-column:1;grid-row:1;margin:0;gap:14px;justify-content:flex-start;align-items:center}.signal-identity{display:flex;align-items:center;gap:12px;min-width:145px}.signal-asset{font-size:.98rem;letter-spacing:0}.signal-asset span,.signal-price small{color:var(--muted);font-size:.68rem}.signal-price{font-size:1rem;letter-spacing:0}.signal-card-top{grid-column:2;grid-row:1/3;flex-direction:column;justify-content:center;align-items:flex-end;gap:7px}.signal-side{color:var(--positive);font-size:.76rem;background:#258a6810;padding:5px 9px;border-radius:7px}.sell .signal-side{color:var(--negative);background:#b8596610}.signal-timestamp{color:var(--muted);font-size:.68rem}.signal-card-bottom{grid-column:1;grid-row:2;margin:0 0 0 52px;color:var(--muted);font-size:.67rem;justify-content:flex-start;gap:16px}.signal-test{background:var(--raised);color:var(--muted);font-size:.55rem}.signal-explainer{background:var(--raised);border-radius:12px;padding:15px 18px;margin:18px 0;gap:8px 20px}.strategy-settings{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;padding:15px 20px}.strategy-row+.strategy-row{border-top:0}.strategy-settings>p{grid-column:1/-1}.setup-panel{margin-top:16px}
.strategy-cards{display:flex;gap:14px;flex-wrap:wrap;margin:8px 0 22px}.strategy-card{min-height:80px;flex:1 1 220px;border:1px solid var(--border);border-radius:14px;padding:18px;background:var(--panel);text-align:left;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:.87rem}.strategy-card.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.strategy-card.add-strategy{color:var(--muted);justify-content:center;border-style:dashed}.paper-config{padding:18px 20px;display:flex;gap:18px;flex-wrap:wrap;align-items:center;margin-bottom:22px;font-size:.8rem}.paper-config .quiet-button{min-height:36px;font-size:.75rem;margin-left:auto}.paper-config .quiet-button+.quiet-button{margin-left:0}.paper-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:20px}.metric{padding:20px;display:flex;flex-direction:column;gap:12px}.metric strong{font-size:1.55rem;letter-spacing:-.03em;overflow-wrap:anywhere}.metric small{font-size:.65rem;line-height:1.5}.paper-balances{padding:18px 22px;display:flex;gap:26px;flex-wrap:wrap;font-size:.8rem;margin:0 0 28px}.trade-head,.trade-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr) minmax(0,1.2fr) minmax(0,1.4fr) minmax(0,1fr) minmax(0,.8fr) 70px;gap:15px;align-items:center}.trade-head{background:var(--panel);border:1px solid var(--border);border-bottom:0;border-radius:15px 15px 0 0;color:var(--muted);font-size:.7rem;padding:18px 20px}.paper-trades{border:1px solid var(--border);border-radius:0 0 15px 15px;overflow:hidden;background:var(--panel)}.paper-trades:empty{display:none}.trade-row{padding:18px 20px;border-bottom:1px solid var(--border);font-size:.74rem}.trade-row:last-child{border-bottom:0}.trade-coin{display:flex;align-items:center;gap:10px}.trade-coin .coin-avatar{height:30px;width:30px}.trade-times,.trade-prices,.trade-pnl,.trade-funds{display:flex;flex-direction:column;gap:7px}.trade-times small,.trade-prices small,.trade-pnl small,.trade-funds small{font-size:.64rem}.trade-status{background:var(--raised);border-radius:7px;padding:6px 9px;width:fit-content;font-size:.66rem}.trade-status.stop{color:var(--negative);background:#b8596610}.trade-actions{display:flex}.trade-actions .icon-button{width:32px;height:32px;font-size:20px}.paper-footnote{font-size:.69rem;margin-top:15px;line-height:1.65}.events-panel{padding:16px 20px;margin-top:25px}.events-panel summary,.rule-editor summary{cursor:pointer;font-size:.8rem;font-weight:550}.event-row{padding:12px 0;border-bottom:1px solid var(--border);font-size:.7rem;color:var(--muted);line-height:1.5}.event-row:last-child{border:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.paper-modal{max-width:650px}.check-label{display:flex;gap:10px;align-items:center;font-size:.8rem}.check-label input{width:18px;height:18px;margin:0}.stop-control{display:flex;gap:20px;align-items:center}.stop-control input[type=range]{padding:0;border:0;flex:1;accent-color:var(--accent)}.stop-control input[type=number]{width:100px}.rule-editor{margin-top:24px;line-height:1.65}.rule-editor p{margin-top:12px}textarea{width:100%;margin-top:12px;padding:12px;font:12px/1.6 ui-monospace,monospace;resize:vertical;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text)}
@media(max-width:1080px){.app{padding:0 28px 30px}.paper-metrics{grid-template-columns:repeat(3,1fr)}.trade-head{display:none}.trade-row{grid-template-columns:1fr 1.2fr 1fr 1fr}.trade-status{grid-column:2}.trade-actions{grid-column:4;justify-content:flex-end}.portfolio-overview{gap:20px;grid-template-columns:.8fr 1fr}.balance{font-size:2.7rem}.holding{gap:10px}.holding-gain{font-size:.65rem}}
@media(max-width:700px){.app{padding:0 18px max(28px,env(safe-area-inset-bottom))}.topbar{height:78px;margin-bottom:15px}.brand{font-size:1.05rem}.subbar{font-size:.65rem;gap:10px}.timeframe{text-align:right}.tabs{gap:22px;justify-content:space-between;margin-bottom:24px}.tab{font-size:.79rem;white-space:nowrap;padding-bottom:12px}.portfolio-overview{display:block;margin-bottom:28px}.balance-block{padding:10px 0 25px}.balance{font-size:2.65rem}.portfolio-chart-panel{padding:12px 15px}.portfolio-chart{height:145px}.holdings-head{display:none}.holdings-list{border-radius:16px}.holding{grid-template-columns:36px 1fr auto;padding:18px 16px;gap:12px}.holding-qty,.holding-current,.holding-gain{display:none}.coin-quantity,.coin-price{display:block;font-size:.67rem;margin-top:6px}.coin-total,.coin-symbol{font-size:.87rem}.coin-avatar{width:36px;height:36px}.strategy-settings{display:block;padding:10px 16px}.strategy-row+.strategy-row{border-top:1px solid var(--border)}.notification-heading{margin-top:12px}.signal-card,.signal-card.sell{padding:12px 13px;gap:7px 10px;grid-template-columns:1fr auto}.signal-card-main{display:block}.signal-identity{gap:8px;min-width:0}.signal-identity .coin-avatar{width:27px;height:27px}.signal-asset{font-size:.86rem}.signal-price{margin:7px 0 0 35px;font-size:.88rem;text-align:left}.signal-card-bottom{margin:0;grid-column:1/-1;font-size:.59rem;flex-wrap:wrap}.signal-card-top{grid-row:1;gap:10px}.signal-timestamp{font-size:.59rem;max-width:110px;line-height:1.6}.signal-side{font-size:.65rem}.signal-test{font-size:.5rem}.signal-explainer{font-size:.65rem;padding:13px}.strategy-cards{display:grid;grid-template-columns:1fr;gap:10px;margin-top:0}.strategy-card{min-height:58px;padding:14px 16px;font-size:.83rem}.strategy-card.add-strategy{min-height:44px}.paper-config{gap:12px 18px;padding:15px;font-size:.7rem}.paper-config .quiet-button{margin-left:0;flex:1;font-size:.7rem}.paper-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.metric{padding:15px;gap:9px}.metric:last-child{grid-column:1/-1}.metric strong{font-size:1.35rem}.paper-balances{display:grid;gap:12px;padding:16px;font-size:.73rem}.paper-trades{border:0;border-radius:0;background:transparent;overflow:visible}.trade-row{grid-template-columns:1fr 1fr;position:relative;padding:16px;margin-bottom:12px;border:1px solid var(--border)!important;border-radius:14px;background:var(--panel);gap:14px}.trade-times{text-align:right}.trade-prices{grid-column:1}.trade-pnl{text-align:right}.trade-status{grid-column:1}.trade-actions{grid-column:2}.events-panel{padding:15px}.event-row{font-size:.65rem}.section-heading h1{font-size:1.08rem}.section-heading>span{font-size:.63rem}.form-grid{gap:12px}.paper-modal{padding:22px}.check-label{line-height:1.6}.signal-test{margin-left:0}.test-controls{font-size:.72rem}.filters{gap:7px}.filter{padding:7px 12px;font-size:.73rem}}

.paper-rules{margin-bottom:22px;padding:22px 24px}.paper-rules>p{margin-bottom:12px}.paper-rule-row{display:grid;grid-template-columns:56px minmax(0,1fr);gap:12px;font-size:.85rem;line-height:1.65}.paper-rule-row+.paper-rule-row{margin-top:12px}.paper-rule-row strong{font-weight:600}.paper-rule-row span{overflow-wrap:anywhere}@media(max-width:700px){.paper-rules{padding:16px}.paper-rule-row{grid-template-columns:46px minmax(0,1fr);gap:8px;font-size:.8rem}}
binance-toolbar select{min-height:45px;border:1px solid var(--border);border-radius:9px;padding:10px 12px;background:var(--panel);color:var(--text);outline:none}.binance-toolbar select:focus{border-color:var(--accent)}
.binance-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:22px 0}.binance-summary .panel{padding:20px}.binance-summary strong{display:block;font-size:1.8rem;margin-top:12px;font-weight:600}.binance-scope{padding:18px 22px;line-height:1.6;margin-bottom:20px}.binance-scope strong{font-size:.86rem}.binance-scope p{margin-top:8px}.binance-live{font-size:.72rem;color:var(--muted);white-space:nowrap}.binance-live.is-live{color:var(--positive)}.binance-toolbar{display:flex;gap:12px;align-items:center;margin:24px 0 16px}.binance-toolbar input{flex:1;min-width:100px;margin:0}.binance-toolbar select{width:auto;max-width:240px;margin:0;font-size:.76rem}.binance-toolbar span{white-space:nowrap}.binance-list-head,.binance-coin{display:grid;grid-template-columns:minmax(190px,1.5fr) 1fr .7fr 1fr 1fr;align-items:center;gap:18px}.binance-list-head{padding:17px 22px;font-size:.72rem;color:var(--muted);background:var(--panel);border:1px solid var(--border);border-bottom:0;border-radius:16px 16px 0 0}.binance-list-head span:not(:first-child){text-align:right}.binance-list{border:1px solid var(--border);border-radius:0 0 16px 16px;background:var(--panel);overflow:hidden}.binance-coin{width:100%;padding:17px 22px;border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;color:var(--text);text-align:left;font-size:.8rem;cursor:pointer}.binance-coin:last-child{border-bottom:0}.binance-coin:hover{background:var(--raised)}.binance-identity{display:flex;gap:12px;min-width:0;align-items:center}.binance-identity>div{min-width:0}.binance-identity small{display:block;margin-top:5px;font-size:.65rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.binance-price{text-align:right;white-space:nowrap}.binance-price small{display:block;font-size:.6rem;margin-top:4px}.binance-price strong{font-weight:600}.binance-change,.binance-volume{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.binance-badge{justify-self:end;padding:6px 9px;border-radius:8px;font-size:.65rem;background:var(--raised);color:var(--muted)}.binance-badge.passed{color:var(--positive);background:#258a6810}.binance-badge.warning{color:#a1833c;background:#a1833c10}.binance-footnote{margin:18px 0;line-height:1.7}.binance-detail-row{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--border);padding:13px 0;font-size:.8rem}.binance-detail-row strong{text-align:right;max-width:50%;overflow-wrap:anywhere}#binance-detail-body>p{margin-top:20px;line-height:1.7}
@media(max-width:900px){.binance-toolbar{flex-wrap:wrap}.binance-toolbar input{flex-basis:100%}.binance-list-head,.binance-coin{grid-template-columns:minmax(150px,1.4fr) 1fr .8fr 1fr;gap:10px}.binance-list-head span:last-child{display:none}.binance-badge{grid-column:1/-1;justify-self:start;margin-left:48px}}
@media(max-width:700px){.tabs{gap:10px;flex-wrap:wrap}.tab{font-size:.7rem}.binance-summary{gap:9px;margin:18px 0}.binance-summary .panel{padding:14px 10px}.binance-summary .small{font-size:.59rem;line-height:1.5;display:block;min-height:30px}.binance-summary strong{font-size:1.4rem;margin-top:7px}.binance-scope{padding:15px}.binance-toolbar{gap:9px}.binance-toolbar select{max-width:100%;font-size:.7rem;flex:1;min-width:0;padding:10px 8px}.binance-toolbar span{width:100%;font-size:.65rem}.binance-list-head{display:none}.binance-list{border-radius:15px}.binance-coin{grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:15px}.binance-identity small{max-width:145px;font-size:.62rem}.binance-price{font-size:.78rem}.binance-change{grid-column:2;grid-row:2;font-size:.7rem}.binance-volume{display:none}.binance-badge{grid-column:1;grid-row:2;margin-left:46px;font-size:.58rem;padding:5px 7px}.binance-identity .coin-avatar{width:32px;height:32px}.binance-live{font-size:.6rem}.binance-footnote{font-size:.63rem}.binance-detail-row{font-size:.7rem;gap:10px}}

.trade-funds{min-width:0;line-height:1.5;overflow-wrap:anywhere}.trade-funds strong{font-size:.76rem}.binance-meta{display:flex;justify-content:space-between;align-items:center;gap:10px 20px;flex-wrap:wrap;margin:0 0 16px}@media(max-width:700px){.trade-funds{grid-column:1/-1;border-top:1px solid var(--border);padding-top:12px}.binance-meta .small{font-size:.65rem}}
