@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Nunito:wght@400;500;600;700;800;900&display=swap');

/* ===== v3 设计变量：白天（默认） ===== */
:root{
  --bg:#eff5f2;
  --text:#263a3b;
  --text-money:#173d3a;
  --text-deep:#2c4a46;
  --green-text:#4a7c6c;
  --text-muted:#8fa69c;
  --text-dim:#a6b5ae;
  --text-faint:#b0c0b5;
  --surface:#ffffff;
  --surface-tint:#f4f8f5;
  --surface-hover:#f2f8f4;
  --border:#e1ebe6;
  --border-strong:#d9e8df;
  --border-soft:#edf2ef;
  --border-panel-green:#cae7d8;
  --border-green-metric:#b8dbca;
  --tint-green:#e8f5ec;
  --tint-green-strong:#dff2e8;
  --green-icon:#aad6c2;
  --green-faint:#c2e2d2;
  --brand-deep:#1f4141;
  --brand-leaf:#bef0d4;
  --accent:#74c69a;
  --accent-hover:#69b991;
  --accent-deep:#5fb98a;
  --seg-bg:#f1f6f3;
  --seg-active:#23534a;
  --seg-shadow:0 2px 6px #d5e4dc;
  --focus-ring:#dff4e9;
  --thumb-shadow:0 1px 7px #8abda2;
  --range-rest:#e8f0eb;
  --up:#2f9c76;
  --down:#e06e81;
  --long-text:#399774;
  --short-text:#d87587;
  --tint-red:#fff0f1;
  --red-text:#d97e8c;
  --pink-soft:#f4a4ae;
  --red-deep:#6e2f3d;
  --tint-pink:#fff0f4;
  --border-pink:#eabcc9;
  --red-icon:#ee9fa9;
  --badge-real-bg:#e5f3fa;
  --badge-real:#4d94b8;
  --badge-battle-bg:#fff0d9;
  --badge-battle:#ae8251;
  --badge-challenge-bg:#fff2c8;
  --badge-challenge:#9c762f;
  --amber-bg:#fff6dd;
  --amber-border:#f0dfae;
  --amber-strong:#72552c;
  --amber-text:#9b7b49;
  --loan-bg:#fff8f3;
  --loan-border:#f1e4d7;
  --loan-text:#a39283;
  --loan-kicker:#bb9f86;
  --loan-btn-bg:#ffe3d3;
  --loan-btn-border:#f6d3bd;
  --loan-btn-text:#ab7854;
  --loan-btn2-border:#eddccf;
  --loan-btn2-text:#ad8b6e;
  --risk-bg:#fff1e1;
  --risk-text:#bc6f4c;
  --orange-bg:#ffe0cd;
  --orange-text:#955f42;
  --tutorial-bg:#f2f9f4;
  --tutorial-border:#e1eee5;
  --tutorial-text:#426e56;
  --battle-bg:#f3f9f5;
  --battle-border:#dcece2;
  --battle-date:#c08792;
  --pair-chip-text:#4e8e70;
  --source-link:#689578;
  --link:#66977e;
  --chart-bg:#24383c;
  --chart-bg-deep:#24383cde;
  --chart-loading-text:#d6f0e5;
  --legend:#8cd6ac;
  --toast-bg:#27433b;
  --backdrop:#19332db0;
  --shadow-panel:0 5px 24px rgba(32,80,65,.035);
  --shadow-modal:0 20px 70px #071c1645;
  --shadow-toast:0 10px 28px #1c3b3040;
  --kicker:#76a398;
  --eyebrow:#4f8e74;
  --eyebrow-accent:#e8919c;
  --chip-bg:#ffffff;
  --chip-text:#4d8f70;
  --mobile-reset-bg:#edf7f2;
  font-family:Nunito,'Microsoft YaHei',sans-serif;
  color:var(--text);
  background:var(--bg);
  font-synthesis:none;
}

/* ===== v3 夜间主题 ===== */
html[data-theme="night"]{
  --bg:#0f1b1d;
  --text:#c9ded4;
  --text-money:#e8f6ee;
  --text-deep:#bcd6ca;
  --green-text:#8fd0b2;
  --text-muted:#7e9a8e;
  --text-dim:#66827a;
  --text-faint:#4f6a61;
  --surface:#16292b;
  --surface-tint:#1b3335;
  --surface-hover:#1d3836;
  --border:#24413c;
  --border-strong:#2c4d46;
  --border-soft:#223c37;
  --border-panel-green:#2c5245;
  --border-green-metric:#2f5a4a;
  --tint-green:#1d3b2d;
  --tint-green-strong:#1c4434;
  --green-icon:#3f7a62;
  --green-faint:#2e5546;
  --brand-deep:#0b1c1c;
  --brand-leaf:#8fe0b8;
  --accent:#4cb98b;
  --accent-hover:#5ac798;
  --accent-deep:#67d3a0;
  --seg-bg:#1b3335;
  --seg-active:#d5eee1;
  --seg-shadow:0 2px 6px #00000059;
  --focus-ring:#1d4a38;
  --thumb-shadow:0 1px 7px #00000073;
  --range-rest:#24413c;
  --up:#57cf9b;
  --down:#ef8ba0;
  --long-text:#63cf9c;
  --short-text:#ef8ba0;
  --tint-red:#42262e;
  --red-text:#ef93a6;
  --pink-soft:#d98497;
  --red-deep:#4d1f2b;
  --tint-pink:#3c232d;
  --border-pink:#5a3140;
  --red-icon:#b06a7e;
  --badge-real-bg:#173343;
  --badge-real:#6fb6d8;
  --badge-battle-bg:#40331b;
  --badge-battle:#d1a86a;
  --badge-challenge-bg:#3f3417;
  --badge-challenge:#d0ab55;
  --amber-bg:#37301a;
  --amber-border:#57491f;
  --amber-strong:#e2c27a;
  --amber-text:#c2a45e;
  --loan-bg:#241f17;
  --loan-border:#41331f;
  --loan-text:#b39c7f;
  --loan-kicker:#a98f6d;
  --loan-btn-bg:#4a341f;
  --loan-btn-border:#5f4527;
  --loan-btn-text:#d8a878;
  --loan-btn2-border:#41372a;
  --loan-btn2-text:#c3a483;
  --risk-bg:#41291a;
  --risk-text:#e09a67;
  --orange-bg:#46281a;
  --orange-text:#eb9d70;
  --tutorial-bg:#1b3335;
  --tutorial-border:#2c4d46;
  --tutorial-text:#8fd0ae;
  --battle-bg:#1a3231;
  --battle-border:#2c4d46;
  --battle-date:#cf8d9b;
  --pair-chip-text:#7fc9a4;
  --source-link:#7fc9a4;
  --link:#7fc9a4;
  --chart-bg:#0e2023;
  --chart-bg-deep:#0e2023e8;
  --chart-loading-text:#cfe8dc;
  --legend:#5ecf95;
  --toast-bg:#0d221f;
  --backdrop:#020c0ab8;
  --shadow-panel:0 5px 24px rgba(0,0,0,.25);
  --shadow-modal:0 20px 70px #00000073;
  --shadow-toast:0 10px 28px #00000066;
  --kicker:#5f8a7d;
  --eyebrow:#6fbfa0;
  --eyebrow-accent:#e08796;
  --chip-bg:#16292b;
  --chip-text:#7fc9a4;
  --mobile-reset-bg:#1b3335;
}

*{box-sizing:border-box}
body{margin:0;min-width:320px;background:var(--bg)}
button,input{font:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.45}
.hidden{display:none!important}
.app-shell{min-height:100vh}
.topbar{height:78px;background:var(--surface);border-bottom:1px solid var(--border-panel-green);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,3.2vw,56px);gap:20px}
.brand{display:flex;align-items:center;gap:12px;min-width:205px}
.brand-mark{width:40px;height:40px;border-radius:14px;background:var(--brand-deep);color:var(--brand-leaf);display:grid;place-items:center;font-size:26px;font-weight:900;transform:rotate(-8deg)}
.brand strong{display:block;font-size:20px;letter-spacing:-.06em;font-weight:900;line-height:1.1}
.brand small{display:block;font:600 10px/1.3 'DM Mono',monospace;letter-spacing:.22em;color:var(--text-muted);margin-top:5px}
.top-center{display:flex;align-items:center;gap:9px;font-weight:800;color:var(--text-muted);font-size:14px}
.top-center strong{color:var(--green-text)}
.author-home-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-panel-green);background:var(--tint-green);color:var(--green-text);border-radius:99px;padding:5px 10px;font-size:11px;font-weight:900;text-decoration:none;white-space:nowrap}
.author-home-button:hover{background:var(--tint-green-strong)}
.top-actions{display:flex;align-items:center;gap:20px}
.session-pill{border-radius:99px;background:var(--tint-green);color:var(--green-text);padding:9px 14px;font-weight:800;font-size:13px;white-space:nowrap}
.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent-deep);margin-right:6px}
.text-button{border:0;background:none;color:var(--green-text);font-weight:800;font-size:13px;padding:8px 0}
.text-button:hover{text-decoration:underline}
.main{max-width:1660px;padding:28px clamp(18px,3.2vw,56px) 48px;margin:auto}
.balance-strip{background:var(--tint-green-strong);border:1px solid var(--border-panel-green);border-radius:22px;min-height:146px;padding:25px 30px;display:grid;grid-template-columns:minmax(270px,1.5fr) repeat(4,minmax(125px,.65fr));align-items:center;gap:12px 20px;margin-bottom:22px;position:relative;overflow:hidden}
.balance-strip:after{content:'✦';position:absolute;right:28px;top:-33px;color:var(--green-faint);font-size:130px;line-height:1}
.balance-lead,.metric{position:relative;z-index:1}
.eyebrow,.section-kicker{font:700 11px/1.2 'DM Mono',monospace;letter-spacing:.16em;color:var(--kicker)}
.eyebrow{font-family:Nunito,'Microsoft YaHei',sans-serif;letter-spacing:.06em;font-size:13px;color:var(--eyebrow);font-weight:900}
.eyebrow span{color:var(--eyebrow-accent)}
.balance-title{font-size:15px;font-weight:800;margin-top:11px}
.money-large{font:800 clamp(28px,2.6vw,38px)/1.1 Nunito,'Microsoft YaHei',sans-serif;display:block;letter-spacing:-.04em;color:var(--text-money);margin-top:3px}
.balance-lead p{font-size:12px;color:var(--text-muted);margin:8px 0 0;font-weight:700}
.metric{border-left:1px solid var(--border-green-metric);padding-left:20px;min-height:54px;display:flex;flex-direction:column;justify-content:center;gap:8px}
.metric span{color:var(--text-muted);font-size:13px;font-weight:800}
.metric strong{font:700 18px/1.2 'DM Mono',monospace;letter-spacing:-.06em;white-space:nowrap;color:var(--text-deep)}
.positive{color:var(--up)!important}
.negative{color:var(--down)!important}
.workspace{display:grid;grid-template-columns:230px minmax(0,1fr) 320px;align-items:start;gap:20px}
.center-column,.right-column{display:flex;flex-direction:column;gap:20px;min-width:0}
.panel{background:var(--surface);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow-panel)}
.market-panel{padding:24px 14px}
.panel-heading{display:flex;align-items:center;justify-content:space-between;padding:0 10px;margin-bottom:18px}
.panel-heading h2,.loan-head h2{margin:6px 0 0;font-size:19px;line-height:1.2;letter-spacing:-.04em;font-weight:900}
.heading-glyph{font-size:23px;color:var(--green-icon)}
.pair-list{display:flex;flex-direction:column;gap:5px}
.pair-row{width:100%;border:0;background:transparent;border-radius:13px;padding:13px 12px;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--text-deep)}
.pair-row:hover{background:var(--surface-hover)}
.pair-row.selected{background:var(--tint-green);box-shadow:inset 3px 0 var(--accent-hover)}
.pair-row strong{display:block;font-size:14px;font-weight:900}
.pair-row small{display:block;font-size:11px;color:var(--text-muted);margin-top:5px;font-weight:700}
.pair-numbers{text-align:right}
.pair-numbers strong{font:700 13px/1.3 'DM Mono',monospace;letter-spacing:-.06em}
.pair-numbers small{font:700 11px/1.3 'DM Mono',monospace;margin-top:5px}
.market-note{margin:22px 9px 0;padding:15px 12px;border-top:1px dashed var(--border-panel-green);display:flex;gap:8px;color:var(--text-muted);font-size:12px;line-height:1.55;font-weight:700}
.market-note>span:first-child{color:var(--red-icon)}
.chart-panel{padding:26px 28px 18px}
.chart-topline{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.pair-title{display:flex;align-items:center;gap:10px;margin-top:5px;flex-wrap:wrap}
.pair-title h1{font-size:25px;letter-spacing:-.04em;margin:0;font-weight:900}
.mode-badge{font-size:11px;padding:5px 9px;border-radius:99px;background:var(--tint-red);color:var(--red-text);font-weight:900}
.mode-badge.real{background:var(--badge-real-bg);color:var(--badge-real)}
.pair-sub{color:var(--text-muted);font-size:12px;font-weight:800;margin-top:3px}
.quote-block{text-align:right;padding-top:10px}
.quote-block strong{font:700 clamp(23px,2.3vw,30px)/1.2 'DM Mono',monospace;letter-spacing:-.07em;display:block}
.quote-block span{font:700 12px/1.5 'DM Mono',monospace}
.chart-controls{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:24px 0 14px;flex-wrap:wrap}
.segmented{padding:4px;background:var(--seg-bg);display:inline-flex;gap:3px;border-radius:11px}
.segmented button{border:0;background:transparent;color:var(--text-muted);border-radius:8px;padding:8px 12px;font-size:12px;font-weight:900}
.segmented button.active{color:var(--seg-active);background:var(--surface);box-shadow:var(--seg-shadow)}
.playback-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--text-muted);font-size:12px;font-weight:700}
.outline-button{background:var(--surface);border:1px solid var(--border-strong);color:var(--green-text);border-radius:9px;padding:8px 12px;font-size:12px;font-weight:900}
.outline-button:hover{background:var(--surface-hover)}
.chart-wrap{height:350px;background:var(--chart-bg);border-radius:15px;position:relative;overflow:hidden}
.chart-wrap canvas{display:block;width:100%;height:100%}
.chart-loading{position:absolute;inset:0;display:grid;place-items:center;background:var(--chart-bg-deep);color:var(--chart-loading-text);font-size:14px;font-weight:800}
.chart-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--text-muted);font-size:11px;font-weight:800;margin-top:13px}
.chart-foot>span:first-child{display:flex;align-items:center;gap:7px}
.legend-line{width:16px;height:3px;background:var(--legend);display:inline-block;border-radius:2px}
.positions-panel,.history-panel{padding:23px 18px}
.row-heading{margin-bottom:16px}
.count-pill{display:inline-grid;place-items:center;min-width:23px;height:23px;padding:0 5px;margin-left:3px;border-radius:99px;background:var(--tint-green);color:var(--accent-deep);font:900 12px/1 Nunito,'Microsoft YaHei',sans-serif}
.quiet-note{font-size:12px;color:var(--text-muted);font-weight:800}
.empty-state{padding:27px 12px 30px;text-align:center;color:var(--text-dim);font-weight:700;font-size:13px}
.empty-state .empty-icon{font-size:26px;margin-bottom:8px;color:var(--green-faint)}
.positions-list{display:flex;flex-direction:column;gap:8px}
.positions-list > *{flex-shrink:0}
.position-row{border:1px solid var(--border);border-radius:13px;padding:12px 14px;display:grid;grid-template-columns:1.1fr .85fr .9fr .75fr auto;align-items:center;gap:10px}
.pos-name strong{font-size:14px;font-weight:900;display:block}
.pos-name small,.pos-cell small{font-size:11px;color:var(--text-muted);font-weight:800;display:block;margin-top:4px}
.direction{display:inline-block;padding:3px 6px;border-radius:5px;font-size:10px;font-weight:900;margin-left:5px}
.direction.long{color:var(--long-text);background:var(--tint-green)}
.direction.short{color:var(--short-text);background:var(--tint-red)}
.pos-cell strong{font:700 12px/1.3 'DM Mono',monospace;white-space:nowrap}
.close-btn{border:1px solid var(--border-strong);background:var(--surface);border-radius:8px;padding:8px 10px;color:var(--green-text);font-size:12px;font-weight:900;white-space:nowrap}
.close-btn:hover{background:var(--surface-hover)}
.history-list{border-top:1px solid var(--border-soft);padding:8px 10px 0}
.history-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 0;font-size:12px;border-bottom:1px solid var(--border-soft)}
.history-row:last-child{border:0}
.history-row span{color:var(--text-muted)}
.history-row strong{font:700 12px 'DM Mono',monospace}
.order-panel{padding:24px}
.order-panel .panel-heading{padding:0;margin-bottom:20px}
.order-decoration{font-size:28px;color:var(--red-icon)}
.order-pair{background:var(--surface-tint);border:1px solid var(--border-soft);border-radius:11px;padding:12px 13px;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-muted);font-weight:800;margin-bottom:22px}
.order-pair strong{font:700 13px 'DM Mono',monospace;color:var(--text-deep)}
.field-label,.range-label{font-size:13px;font-weight:900;color:var(--text-deep);display:flex;justify-content:space-between;margin-bottom:9px}
.field-label span{color:var(--text-faint)}
.input-shell{border:1px solid var(--border-strong);border-radius:11px;height:46px;display:flex;align-items:center;padding:0 12px;gap:7px;color:var(--green-text)}
.input-shell:focus-within{border-color:var(--accent-hover);box-shadow:0 0 0 3px var(--focus-ring)}
.input-shell>span{font-weight:900}
.input-shell input{border:0;outline:0;min-width:0;flex:1;width:100%;color:var(--text-deep);font:800 16px 'DM Mono',monospace;background:transparent}
.input-shell button{background:var(--tint-green);border:0;border-radius:6px;color:var(--accent-deep);font:800 11px 'DM Mono',monospace;padding:5px 6px}
.range-label{margin-top:23px}
.range-label strong{font:700 15px 'DM Mono',monospace;color:var(--accent-deep)}
.order-panel input[type=range]{appearance:none;width:100%;height:6px;border-radius:99px;background:linear-gradient(90deg,var(--accent) var(--progress,19%),var(--range-rest) var(--progress,19%));margin:6px 0}
.order-panel input[type=range]::-webkit-slider-thumb{appearance:none;width:19px;height:19px;border-radius:50%;border:4px solid var(--surface);background:var(--accent-deep);box-shadow:var(--thumb-shadow)}
.range-ticks{display:flex;justify-content:space-between;font:700 10px 'DM Mono',monospace;color:var(--text-faint);margin-top:4px}
.order-preview{background:var(--surface-tint);border:1px solid var(--border-soft);border-radius:11px;padding:14px;margin-top:20px;display:flex;flex-direction:column;gap:12px}
.order-preview div{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--text-muted);font-weight:800}
.order-preview strong{color:var(--green-text);font:700 12px 'DM Mono',monospace}
.trade-buttons{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:18px}
.trade-button{border:0;border-radius:11px;padding:14px 6px;font-size:13px;font-weight:900;white-space:nowrap;transition:transform .15s,filter .15s}
.trade-button:hover{transform:translateY(-2px);filter:brightness(.98)}
.trade-button span{font-size:16px;margin-right:2px}
.trade-button.long{background:var(--accent);color:#173f2b}
.trade-button.short{background:var(--pink-soft);color:var(--red-deep)}
.order-note{font-size:11px;line-height:1.55;color:var(--text-muted);margin:13px 0 0;font-weight:700}
.loan-panel{padding:23px 24px;background:var(--loan-bg);border-color:var(--loan-border)}
.loan-head h2 span{color:var(--red-icon)}
.loan-panel .section-kicker{color:var(--loan-kicker)}
.loan-panel p{font-size:12px;line-height:1.65;color:var(--loan-text);margin:14px 0 17px;font-weight:700}
.loan-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.loan-actions button{border-radius:9px;padding:10px 4px;font-size:12px;font-weight:900}
.loan-actions button:first-child{background:var(--loan-btn-bg);border:1px solid var(--loan-btn-border);color:var(--loan-btn-text)}
.loan-actions button:last-child{background:var(--surface);border:1px solid var(--loan-btn2-border);color:var(--loan-btn2-text)}
.side-disclaimer{font-size:11px;line-height:1.6;color:var(--text-dim);padding:0 9px;font-weight:700}
.side-disclaimer a{color:var(--link);display:block;margin-top:5px}
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);background:var(--toast-bg);color:#fff;padding:11px 17px;border-radius:11px;box-shadow:var(--shadow-toast);z-index:60;font-size:13px;font-weight:800;opacity:0;pointer-events:none;transition:.2s;max-width:calc(100vw - 30px);text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}
.modal-backdrop{position:fixed;inset:0;background:var(--backdrop);z-index:40;display:grid;place-items:center;padding:20px}
.modal{width:min(100%,420px);background:var(--surface);border-radius:22px;padding:30px;box-shadow:var(--shadow-modal);text-align:center;position:relative}
.modal-x{position:absolute;right:16px;top:12px;border:0;background:none;font-size:27px;color:var(--text-muted)}
.modal-icon{width:62px;height:62px;border-radius:20px;background:var(--tint-green);color:var(--accent-deep);display:grid;place-items:center;font-size:29px;margin:0 auto 14px}
.modal-icon.loss{background:var(--tint-red);color:var(--red-text)}
.modal h2{font-size:22px;margin:0 0 8px;font-weight:900}
.modal p{font-size:14px;line-height:1.6;color:var(--text-muted);margin:0 0 18px;font-weight:700}
.modal-detail{background:var(--surface-tint);border-radius:12px;padding:13px 15px;color:var(--green-text);font:800 15px 'DM Mono',monospace;margin-bottom:18px}
.modal-detail:empty{display:none}
.modal-input-wrap{text-align:left;margin-bottom:18px}
.modal-input-wrap label{display:block;font-size:13px;font-weight:900;margin-bottom:8px}
.modal-actions{display:flex;gap:9px}
.modal-actions button{flex:1;padding:12px}
.primary-button{background:var(--accent);color:#183e2b;border:0;border-radius:9px;font-size:13px;font-weight:900}
.modal-actions .outline-button{font-size:13px}
.modal-actions .outline-button.only{display:none}
@media(max-width:1250px){.workspace{grid-template-columns:200px minmax(0,1fr) 280px;gap:14px}.main{padding-left:18px;padding-right:18px}.balance-strip{padding:23px;gap:12px;grid-template-columns:minmax(220px,1.3fr) repeat(4,minmax(105px,.6fr))}.metric{padding-left:12px}.metric strong{font-size:15px}.order-panel{padding:20px}.chart-panel{padding:22px}.position-row{grid-template-columns:1fr 1fr 1fr auto}.pos-leverage{display:none}}
@media(max-width:1010px){.workspace{grid-template-columns:190px minmax(0,1fr)}.right-column{grid-column:2;display:grid;grid-template-columns:1fr 1fr}.side-disclaimer{grid-column:1/-1}.balance-strip{grid-template-columns:repeat(4,1fr)}.balance-lead{grid-column:1/-1}.balance-strip:after{top:-15px}.metric{border-left:0;border-top:1px solid var(--border-green-metric);padding:14px 0 0;min-height:0}}
@media(max-width:720px){.topbar{height:66px;padding:0 17px}.brand{min-width:0}.brand strong{font-size:18px}.brand small{font-size:9px}.top-center{display:none}.top-actions{gap:11px}.session-pill{font-size:11px;padding:7px 9px}.top-actions .text-button{font-size:11px}.main{padding:17px 13px 40px}.balance-strip{padding:20px;gap:0 15px;margin-bottom:13px;border-radius:16px;grid-template-columns:repeat(2,1fr)}.balance-lead{margin-bottom:16px}.money-large{font-size:30px}.balance-lead p{font-size:11px}.metric{padding:11px 0}.metric strong{font-size:16px}.workspace{display:flex;flex-direction:column;gap:13px}.market-panel{width:100%;padding:17px 14px}.market-panel .panel-heading{margin-bottom:8px}.pair-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.pair-row{padding:10px 8px;display:block}.pair-row strong{font-size:12px}.pair-row small{font-size:10px}.pair-numbers{text-align:left;margin-top:8px}.pair-numbers strong{font-size:11px}.market-note{display:none}.center-column,.right-column{width:100%;gap:13px}.chart-panel{padding:19px 15px 15px}.chart-wrap{height:300px}.pair-title h1{font-size:21px}.quote-block strong{font-size:21px}.chart-controls{margin:18px 0 12px}.playback-controls{font-size:11px}.right-column{display:flex}.order-panel,.loan-panel{padding:20px}.position-row{grid-template-columns:1fr 1fr auto;gap:8px}.pos-entry{display:none}.history-panel,.positions-panel{padding:19px 13px}.side-disclaimer{padding:3px 10px}.chart-foot{font-size:10px}}
@media(max-width:390px){.pair-list{grid-template-columns:repeat(2,minmax(0,1fr))}.top-actions .session-pill{display:none}.quote-block strong{font-size:19px}.trade-button{font-size:12px}}
.battle-shelf{background:var(--battle-bg);border:1px solid var(--battle-border);border-radius:14px;padding:17px;margin:0 0 16px}
.battle-shelf-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.battle-shelf-head h2{font-size:16px;margin:5px 0 0;font-weight:900}
.battle-info{font-size:12px;color:var(--text-muted);line-height:1.55;font-weight:700;margin:10px 0 0}
.battle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:14px}
.battle-card{border:1px solid var(--border-strong);background:var(--surface);border-radius:11px;padding:13px;text-align:left;color:var(--text-deep);min-height:112px}
.battle-card:hover,.battle-card:focus-visible{border-color:var(--accent-hover);box-shadow:0 0 0 3px var(--focus-ring)}
.battle-card strong{display:block;font-size:13px;font-weight:900;margin:6px 0}
.battle-card small{display:block;color:var(--text-muted);font-size:11px;line-height:1.45;font-weight:700}
.battle-card .battle-date{font:700 10px 'DM Mono',monospace;color:var(--battle-date);letter-spacing:.06em}
.battle-card .battle-pair{display:inline-block;border-radius:99px;background:var(--tint-green);color:var(--pair-chip-text);padding:3px 7px;font:700 10px 'DM Mono',monospace}
.battle-source{color:var(--source-link);text-decoration:underline;text-underline-offset:2px}
.mode-badge.battle{background:var(--badge-battle-bg);color:var(--badge-battle)}
.pair-row:disabled{opacity:.46;cursor:not-allowed}
.modal-risk-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:11px}
.modal-risk-actions button{border:0;border-radius:10px;padding:12px 7px;font-size:12px;font-weight:900}
.modal-risk-actions button:first-child{background:var(--accent);color:#173f2b}
.modal-risk-actions button:last-child{background:var(--orange-bg);color:var(--orange-text)}
.modal-risk-actions button:disabled{opacity:.45}
.welcome-card,.tutorial-card{max-width:470px}
.welcome-card .section-kicker{display:block;margin-bottom:12px}
.welcome-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.welcome-actions button,.tutorial-actions button{padding:12px 8px;font-size:12px}
.tutorial-step{display:inline-block;background:var(--tint-green);color:var(--accent-deep);border-radius:99px;padding:5px 10px;font:800 11px 'DM Mono',monospace;margin-bottom:12px}
.tutorial-card .modal-icon{margin-bottom:15px}
.tutorial-example{background:var(--tutorial-bg);border:1px solid var(--tutorial-border);border-radius:11px;padding:14px;color:var(--tutorial-text);font-size:13px;line-height:1.6;font-weight:800;text-align:left;margin-bottom:19px}
.tutorial-actions{display:flex;gap:8px}
.tutorial-actions button{flex:1}
.tutorial-card #tutorialSkip{display:block;margin:12px auto 0}
.risk-tag{display:inline-block;color:var(--risk-text);background:var(--risk-bg);border-radius:6px;padding:2px 6px;font-size:10px;font-weight:900;margin-left:6px}
@media(max-width:720px){.top-actions .session-pill{display:none}.top-actions{gap:10px}.battle-grid{grid-template-columns:1fr}.battle-card{min-height:0}.welcome-actions{grid-template-columns:1fr}.segmented button{padding:8px 9px}.modal-risk-actions{grid-template-columns:1fr 1fr}}
.brand-mark{position:relative;flex:none;overflow:hidden;transform:none;background:var(--tint-pink);border:1px solid var(--border-pink)}
.brand-mark img{position:absolute;display:block;width:40px;height:40px;max-width:none;left:-1px;top:-1px}
.account-mode-chip{display:inline-block;margin-left:6px;padding:3px 7px;border-radius:99px;background:var(--chip-bg);color:var(--chip-text);font-size:10px;vertical-align:middle}
.mobile-pair-control{display:none}
.compact-fields{display:contents}
.challenge-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;background:var(--amber-bg);border:1px solid var(--amber-border);border-radius:13px;padding:12px 14px;margin:0 0 12px}
.challenge-bar>div:first-child{display:flex;flex-direction:column;gap:4px}
.challenge-bar strong{font-size:14px;color:var(--amber-strong)}
.challenge-bar small{font-size:11px;color:var(--amber-text);font-weight:800}
.challenge-actions{display:flex;gap:7px;align-items:center}
.challenge-actions button{padding:9px 12px;font-size:11px;white-space:nowrap}
.retire-button{border:0;border-radius:9px;background:var(--pink-soft);color:var(--red-deep);font-weight:900}
.mode-badge.challenge{background:var(--badge-challenge-bg);color:var(--badge-challenge)}
.modal-detail.preline{white-space:pre-line;text-align:left;line-height:1.7;font-family:Nunito,'Microsoft YaHei',sans-serif;font-size:13px}
@media(max-width:720px){
  body{background:var(--bg)}
  .topbar{height:52px;padding:0 10px;position:sticky;top:0;z-index:20}
  .brand-mark,.brand-mark img{width:34px;height:34px}
  .brand-mark img{left:-1px;top:-1px}
  .brand{gap:8px}
  .brand strong{font-size:16px}
  .brand small{display:none}
  .top-actions{gap:9px}
  .top-actions #resetBtn{display:none}
  .main{padding:6px 7px 28px}
  .balance-strip,.market-panel{display:none}
  .workspace{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}
  .center-column,.right-column{display:contents}
  .chart-panel{order:1;padding:10px 10px 7px;border-radius:14px}
  .order-panel{order:2;padding:9px 10px;border-radius:14px}
  .positions-panel{order:3;padding:8px 9px;border-radius:14px}
  .history-panel{order:4}
  .loan-panel{order:5}
  .side-disclaimer{order:6}
  .chart-topline{align-items:center}
  .pair-title{margin-top:1px}
  .pair-title h1{font-size:18px}
  .pair-sub,.chart-topline .section-kicker{display:none}
  .quote-block{padding:0}
  .quote-block strong{font-size:18px}
  .chart-controls{margin:7px 0 6px;display:grid;grid-template-columns:1fr auto;gap:5px}
  .segmented{grid-column:1/-1;width:100%;padding:3px}
  .segmented button{flex:1;padding:6px 3px;font-size:9px}
  .mobile-pair-control{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--text-muted);font-weight:900}
  .mobile-pair-control select{min-width:0;max-width:148px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--text-deep);padding:5px;font:800 11px 'DM Mono',monospace}
  .playback-controls{justify-content:flex-end;gap:4px;font-size:9px}
  .playback-controls .outline-button{padding:5px 6px;font-size:9px}
  .chart-wrap{height:clamp(178px,27dvh,230px);border-radius:11px}
  .chart-foot{margin-top:5px;font-size:9px}
  .battle-shelf{padding:10px;margin:0 0 6px}
  .battle-card{padding:9px;min-height:0}
  .order-panel .panel-heading,.order-pair,.order-note{display:none}
  .compact-fields{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:10px;align-items:end}
  .field-label,.range-label{font-size:10px;margin:0 0 4px}
  .range-label{margin-top:0}
  .input-shell{height:36px;padding:0 8px}
  .input-shell input{font-size:13px}
  .order-panel input[type=range]{margin:7px 0 2px}
  .range-ticks{font-size:7px}
  .order-preview{margin-top:7px;padding:6px 8px;display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
  .order-preview div{display:block;font-size:8px}
  .order-preview strong{display:block;margin-top:2px;font-size:9px}
  .trade-buttons{margin-top:7px;gap:6px}
  .trade-button{padding:9px 4px;font-size:11px}
  .positions-panel .panel-heading{margin:0 0 5px;padding:0 3px}
  .positions-panel .section-kicker{display:none}
  .positions-panel .panel-heading h2{font-size:14px;margin:0}
  .quiet-note{font-size:9px}
  .positions-list{gap:4px;max-height:112px;overflow:auto}
  .position-row{padding:6px 7px;grid-template-columns:minmax(0,1.25fr) minmax(72px,.7fr) auto;gap:5px}
  .pos-entry,.position-row .pos-cell:nth-of-type(3){display:none}
  .pos-name strong{font-size:11px}
  .pos-name small,.pos-cell small{font-size:8px;margin-top:2px}
  .pos-cell strong{font-size:10px}
  .direction{font-size:8px}
  .risk-tag{font-size:8px}
  .close-btn{padding:7px 9px;font-size:10px}
  .empty-state{padding:10px;font-size:10px}
  .empty-state .empty-icon{display:none}
  .history-panel,.loan-panel{padding:14px}
  .modal-backdrop{padding:10px}
  .modal{padding:23px 18px;max-height:92dvh;overflow:auto}
  .challenge-bar{padding:7px 8px;margin-bottom:6px;gap:6px}
  .challenge-bar .section-kicker{display:none}
  .challenge-bar strong{font-size:11px}
  .challenge-bar small{font-size:9px}
  .challenge-actions{gap:4px}
  .challenge-actions button{padding:6px 7px;font-size:9px}
  .chart-panel:has(.challenge-bar:not(.hidden)) .chart-wrap{height:clamp(140px,21dvh,180px)}
}
@media(max-width:390px){.chart-wrap{height:175px}.playback-controls #dataStatus{display:none}.mobile-pair-control select{max-width:130px}.trade-button{font-size:10px}.positions-list{max-height:96px}}

/* 手机端保留关键账户信息与重置入口 */
@media(max-width:720px){
  .top-actions #resetBtn{display:inline-flex;align-items:center;justify-content:center;padding:7px 8px;border-radius:9px;background:var(--mobile-reset-bg);color:var(--green-text);line-height:1;white-space:nowrap}
  .balance-strip{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center;min-height:0;padding:8px 10px;gap:8px;margin-bottom:6px;border-radius:14px;overflow:hidden}
  .balance-strip:after,.balance-lead p,.balance-strip>.metric{display:none}
  .balance-lead{grid-column:auto;margin:0;min-width:0}
  .balance-lead .eyebrow{font-size:9px;line-height:1.2;white-space:nowrap}
  .account-mode-chip{margin-left:3px;padding:2px 5px;font-size:8px}
  .balance-title{font-size:9px;margin-top:4px;color:var(--text-muted)}
  .money-large{display:inline;margin:0 0 0 4px;font-size:18px;line-height:1;letter-spacing:-.05em;white-space:nowrap}
  .balance-strip>.metric:nth-child(2){display:flex;min-height:0;padding:0 0 0 9px;border:0;border-left:1px solid var(--border-green-metric);gap:3px}
  .balance-strip>.metric:nth-child(2) span{font-size:9px}
  .balance-strip>.metric:nth-child(2) strong{font-size:14px}
}

@media(max-width:360px){
  .top-center{display:none}
  .top-actions{gap:5px}.top-actions .text-button{font-size:10px}.top-actions #resetBtn{padding:6px}
  .balance-strip{grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);padding:7px 8px}
  .money-large{font-size:16px}.balance-strip>.metric:nth-child(2) strong{font-size:12px}
}

@media(max-width:720px) and (max-height:700px){
  .balance-strip{padding-top:5px;padding-bottom:5px}
  .chart-wrap{height:125px}
  .challenge-bar{padding:4px 6px}
  .challenge-bar strong{max-width:116px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px}
  .challenge-bar small{display:none}
  .challenge-actions button{padding:5px;font-size:8px}
  .chart-panel:has(.challenge-bar:not(.hidden)) .chart-wrap{height:90px}
  .chart-foot{display:none}
}

@media(max-width:720px){
  .top-center{display:flex;position:absolute;left:52px;top:32px;gap:4px;max-width:142px;font-size:8px;line-height:1;white-space:nowrap}
  .top-center strong{font-size:8px}
  .author-home-button{padding:2px 5px;font-size:7px;border-radius:6px}
}

/* ===== v3 新增组件 ===== */
.top-actions .text-button .btn-ico{margin-right:2px}
/* 手机端顶栏：新增按钮只留图标，避免拥挤重叠 */
@media(max-width:720px){
  .top-actions .text-button .btn-txt{display:none}
  .top-actions .text-button .btn-ico{margin-right:0;font-size:15px}
  .brand{flex:none}
  .brand strong{white-space:nowrap}
}
/* 设置弹窗 */
.settings-modal{max-width:470px;text-align:left}
.settings-modal h2{text-align:center}
.settings-rows{display:flex;flex-direction:column;gap:13px;max-height:56dvh;overflow:auto;padding:2px 4px 2px 2px;margin-bottom:16px}
.settings-rows > *{flex-shrink:0}
.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:30px}
.settings-row.settings-col{flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px}
.settings-label{font-size:13px;font-weight:900;color:var(--text)}
.settings-label small{display:block;font-size:10px;color:var(--text-muted);font-weight:700;margin-top:3px;line-height:1.5}
.settings-divider{border:0;border-top:1px dashed var(--border-strong);margin:2px 0}
.settings-note{font-size:10px;color:var(--text-muted);font-weight:700}
.switch{position:relative;display:inline-block;width:44px;height:24px;flex:none;cursor:pointer}
.switch input{opacity:0;width:0;height:0;position:absolute}
.switch .slider{position:absolute;inset:0;background:var(--range-rest);border-radius:99px;transition:.2s}
.switch .slider:before{content:'';position:absolute;width:18px;height:18px;left:3px;top:3px;background:var(--surface);border-radius:50%;transition:.2s;box-shadow:0 1px 4px #1c3b3040}
.switch input:checked+.slider{background:var(--accent)}
.switch input:checked+.slider:before{transform:translateX(20px)}
.settings-row input[type=range].vol-slider{flex:1;max-width:190px;accent-color:var(--accent)}
.seg-mini{padding:3px;background:var(--seg-bg);display:inline-flex;gap:2px;border-radius:9px;flex:none}
.seg-mini button{border:0;background:transparent;color:var(--text-muted);border-radius:7px;padding:6px 10px;font-size:11px;font-weight:900}
.seg-mini button.active{background:var(--surface);color:var(--seg-active);box-shadow:var(--seg-shadow)}
.music-actions{display:flex;gap:7px;flex-wrap:wrap}
.music-file-btn{cursor:pointer;display:inline-flex;align-items:center}
.music-file-btn input{display:none}
.settings-modal .modal-actions button{padding:11px 12px}

/* 新闻跑马灯与滑入快讯卡 */
.news-ticker{display:flex;align-items:center;gap:9px;border:1px solid var(--border);background:var(--surface-tint);border-radius:11px;padding:7px 11px;margin:10px 0 0;font-size:12px;font-weight:800;color:var(--text-mid);overflow:hidden}
.ticker-tag{flex:none;background:var(--tint-green);color:var(--accent-deep);border-radius:6px;padding:3px 7px;font-size:10px;font-weight:900}
.ticker-body{flex:1;min-width:0;overflow:hidden;white-space:nowrap;mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.ticker-track{display:inline-block;white-space:nowrap;animation:tickerMove 16s linear infinite;padding-left:100%}
.ticker-track.flat{animation:none;padding-left:0}
@keyframes tickerMove{from{transform:translateX(0)}to{transform:translateX(-100%)}}
.ticker-more{flex:none;font-size:11px;padding:4px 0}
.news-float{position:fixed;right:16px;top:88px;width:min(320px,calc(100vw - 24px));z-index:50;background:var(--surface);border:1px solid var(--border-strong);border-radius:14px;box-shadow:var(--shadow-modal);padding:13px 15px;text-align:left;transform:translateX(calc(100% + 30px));transition:transform .28s ease}
.news-float.show{transform:none}
.news-float .nf-close{position:absolute;right:8px;top:5px;border:0;background:none;font-size:19px;color:var(--text-muted);padding:2px 6px}
.nf-tag{display:inline-block;background:var(--tint-green);color:var(--accent-deep);border-radius:6px;padding:3px 7px;font-size:10px;font-weight:900;margin-bottom:6px}
.nf-tag.ach{background:var(--amber-bg);color:var(--amber-text)}
.news-float h4{margin:2px 0 6px;font-size:13px;font-weight:900;color:var(--text);padding-right:16px}
.news-float p{margin:0 0 7px;font-size:11px;line-height:1.55;color:var(--text-muted);font-weight:700}
.nf-date{font:700 10px 'DM Mono',monospace;color:var(--text-faint)}
.news-center-list{max-height:52dvh;overflow:auto;text-align:left;display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.news-center-list > *{flex-shrink:0}
.news-center-item{border:1px solid var(--border);border-radius:11px;padding:10px 12px;background:var(--surface-tint)}
.news-center-item .nf-tag{margin-bottom:4px}
.news-center-item h4{margin:2px 0 4px;font-size:12px;font-weight:900;color:var(--text)}
.news-center-item p{margin:0 0 4px;font-size:11px;line-height:1.5;color:var(--text-muted);font-weight:700}
@media(max-width:720px){.news-float{top:auto;bottom:16px;right:10px}.news-ticker{font-size:10px;padding:6px 9px}.ticker-more{display:none}.ach-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 回放工具条：周期切换 / 拖动进度 / 区间选择 / 区间统计 */
.playback-tools{display:flex;align-items:center;gap:10px;margin:10px 0 0;flex-wrap:wrap}
.chart-progress-row{display:flex;align-items:center;gap:9px;flex:1;min-width:180px;color:var(--text-faint);font:700 10px 'DM Mono',monospace}
input.chart-progress{flex:1;accent-color:var(--accent);height:4px;min-width:60px}
.range-picker{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:10px 0 0;font-size:11px;font-weight:800;color:var(--text-muted)}
.range-picker input[type=date]{border:1px solid var(--border-strong);border-radius:8px;padding:5px 7px;font:800 11px 'DM Mono',monospace;background:var(--surface);color:var(--text-deep);color-scheme:light}
html[data-theme="night"] .range-picker input[type=date]{color-scheme:dark}
.range-picker .arrow{color:var(--text-faint)}
.range-stats{display:flex;gap:4px 14px;flex-wrap:wrap;margin:9px 0 0;font-size:11px;font-weight:800;color:var(--text-muted)}
.range-stats b{font:700 11px 'DM Mono',monospace;color:var(--text-deep)}
@media(max-width:720px){.playback-tools{gap:6px;margin-top:6px}.range-picker{gap:5px;font-size:10px}.range-picker .seg-mini{flex:1 1 100%;overflow-x:auto}.range-picker input[type=date]{padding:4px 5px;font-size:10px;flex:1 1 42%;min-width:0}.range-picker .arrow{flex:none}.range-picker #rangeApplyBtn{flex:1 1 100%;text-align:center}.range-stats{font-size:9px;gap:3px 10px}.range-stats b{font-size:9px}}

/* 成就册 */
.ach-modal{max-width:520px}
.ach-progress-line{font-size:12px;color:var(--text-muted);font-weight:800;margin:-6px 0 14px}
.ach-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:16px;max-height:52dvh;overflow:auto;padding:2px}
.ach-card{border:1px solid var(--border);border-radius:12px;padding:11px 10px;text-align:left;background:var(--surface-tint);min-height:104px;display:flex;flex-direction:column;gap:5px}
.ach-card.unlocked{border-color:var(--accent-hover);background:var(--tint-green)}
.ach-card .ach-medal{font-size:17px;line-height:1}
.ach-card .ach-name{font-size:12px;font-weight:900;color:var(--text);line-height:1.3}
.ach-card.locked .ach-name{color:var(--text-muted)}
.ach-card .ach-desc{font-size:10px;line-height:1.45;color:var(--text-muted);font-weight:700;flex:1}
.ach-card .ach-date{font:700 9px 'DM Mono',monospace;color:var(--text-faint)}
.ach-follow-btn{margin-top:2px;border:0;border-radius:8px;padding:7px 6px;font-size:10px;font-weight:900;background:var(--accent);color:#183e2b}

/* 分享卡 */
.share-modal{max-width:440px}
.share-preview{background:var(--surface-tint);border-radius:14px;padding:9px;margin-bottom:14px}
.share-preview img{display:block;width:100%;max-height:50dvh;object-fit:contain;border-radius:10px}
.share-preview .share-placeholder{display:grid;place-items:center;height:220px;color:var(--text-muted);font-size:12px;font-weight:800}
.share-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.share-actions .primary-button{grid-column:1/-1}
