Files
2026-05-31 13:49:36 +08:00

1301 lines
29 KiB
CSS

/*
* BTC 5m Terminal UI
* Standalone visual layer: only covers typography, layering, color, and responsiveness; does not change any business JS bindings.
*/
:root {
--terminal-bg: #04070b;
--terminal-ink: #f2f7ff;
--terminal-muted: #9aa8b8;
--terminal-faint: #5f6f83;
--terminal-line: rgba(151, 166, 188, 0.15);
--terminal-line-strong: rgba(151, 166, 188, 0.28);
--terminal-card: rgba(9, 15, 24, 0.78);
--terminal-card-strong: rgba(13, 22, 34, 0.94);
--terminal-card-soft: rgba(255, 255, 255, 0.045);
--terminal-green: #2ee6a6;
--terminal-red: #ff6474;
--terminal-amber: #f5bd4f;
--terminal-blue: #62bdff;
--terminal-cyan: #41e8ff;
--terminal-radius: 20px;
--terminal-radius-lg: 28px;
--terminal-shadow: 0 22px 70px rgba(0, 0, 0, 0.42), inset 0 1px 0 rgba(255, 255, 255, 0.055);
--terminal-shadow-soft: 0 14px 44px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.045);
--terminal-font: "Avenir Next", "DIN Alternate", "PingFang SC", "Microsoft YaHei", sans-serif;
--terminal-num: "JetBrains Mono", "SF Mono", "Fira Code", "Cascadia Code", monospace;
}
html {
background: var(--terminal-bg);
}
body {
min-width: 0;
color: var(--terminal-ink);
font-family: var(--terminal-font);
letter-spacing: 0.01em;
background:
radial-gradient(circle at 8% -8%, rgba(98, 189, 255, 0.24), transparent 30rem),
radial-gradient(circle at 92% 2%, rgba(46, 230, 166, 0.16), transparent 34rem),
radial-gradient(circle at 55% 110%, rgba(245, 189, 79, 0.11), transparent 24rem),
linear-gradient(135deg, #04070b 0%, #07111a 48%, #060a10 100%);
}
body::before {
content: "";
position: fixed;
inset: 0;
pointer-events: none;
background-image:
linear-gradient(rgba(255, 255, 255, 0.022) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.018) 1px, transparent 1px);
background-size: 44px 44px;
mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.9), transparent 76%);
}
button,
input {
font-family: inherit;
}
input {
color-scheme: dark;
}
.up { color: var(--terminal-green) !important; }
.down { color: var(--terminal-red) !important; }
.yellow { color: var(--terminal-amber) !important; }
.gray { color: var(--terminal-faint) !important; }
::-webkit-scrollbar {
width: 9px;
height: 9px;
}
::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.028);
}
::-webkit-scrollbar-thumb {
background: rgba(151, 166, 188, 0.26);
border: 2px solid rgba(4, 7, 11, 0.85);
border-radius: 999px;
}
::-webkit-scrollbar-thumb:hover {
background: rgba(151, 166, 188, 0.42);
}
#header,
#price-bar,
#strat-bar,
#observe-bar,
#main-wrap,
#pm-pnl,
#app-footer {
width: calc(100% - 32px);
max-width: 1880px;
margin-left: auto !important;
margin-right: auto !important;
}
/* Top Command Bar */
#header {
position: sticky;
top: 12px;
z-index: 5000;
margin-top: 14px !important;
padding: 12px 16px !important;
gap: 12px 14px !important;
border: 1px solid var(--terminal-line) !important;
border-radius: var(--terminal-radius-lg) !important;
background:
linear-gradient(135deg, rgba(255, 255, 255, 0.072), rgba(255, 255, 255, 0.022)),
rgba(7, 12, 20, 0.96) !important;
box-shadow: var(--terminal-shadow);
backdrop-filter: none;
overflow: visible !important;
}
#header:has(.result-dot:hover),
#header:has(.order-latency-trigger:hover) {
z-index: 8000;
}
#header .window-info {
display: inline-flex;
align-items: center;
gap: 10px;
color: var(--terminal-ink);
font-size: 16px !important;
font-weight: 900 !important;
letter-spacing: 0.02em;
}
#header .window-info::before {
content: "";
width: 10px;
height: 32px;
flex: 0 0 auto;
border-radius: 999px;
background: linear-gradient(180deg, var(--terminal-green), var(--terminal-blue));
box-shadow: 0 0 24px rgba(46, 230, 166, 0.44);
}
#header .window-info span {
color: var(--terminal-amber) !important;
}
#app-version {
padding: 2px 7px;
border: 1px solid rgba(151, 166, 188, 0.13);
border-radius: 999px;
background: rgba(255, 255, 255, 0.065);
color: var(--terminal-faint) !important;
}
#header > a {
padding: 6px 10px;
border: 1px solid rgba(245, 189, 79, 0.24);
border-radius: 999px;
background: rgba(245, 189, 79, 0.08);
color: var(--terminal-amber) !important;
}
#recent-results {
gap: 7px !important;
margin-left: auto;
}
.result-dot {
width: 24px !important;
height: 24px !important;
border: 1px solid var(--terminal-line);
background: rgba(255, 255, 255, 0.055);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
.result-dot.up {
background: linear-gradient(135deg, rgba(46, 230, 166, 0.94), rgba(14, 128, 94, 0.94)) !important;
}
.result-dot.down {
background: linear-gradient(135deg, rgba(255, 100, 116, 0.96), rgba(138, 38, 52, 0.96)) !important;
}
#conn-dot {
width: 10px !important;
height: 10px !important;
background: var(--terminal-green) !important;
box-shadow: 0 0 0 5px rgba(46, 230, 166, 0.12), 0 0 22px rgba(46, 230, 166, 0.76) !important;
}
#conn-dot.disconnected {
background: var(--terminal-red) !important;
box-shadow: 0 0 0 5px rgba(255, 100, 116, 0.12), 0 0 20px rgba(255, 100, 116, 0.74) !important;
}
#ws-status {
gap: 7px !important;
flex-wrap: wrap;
}
.ws-light,
#kline-status {
min-height: 26px;
padding: 5px 9px;
gap: 6px;
border: 1px solid rgba(151, 166, 188, 0.12);
border-radius: 999px;
background: rgba(255, 255, 255, 0.045);
color: var(--terminal-muted) !important;
font-size: 11px !important;
white-space: nowrap;
}
.ws-light .dot {
width: 7px !important;
height: 7px !important;
background: var(--terminal-red);
box-shadow: 0 0 10px rgba(255, 100, 116, 0.75);
}
.ws-light.on .dot,
.ws-light.http-fast .dot {
background: var(--terminal-green) !important;
box-shadow: 0 0 12px rgba(46, 230, 166, 0.78) !important;
}
.ws-light.http-slow .dot {
background: var(--terminal-amber) !important;
box-shadow: 0 0 12px rgba(245, 189, 79, 0.72) !important;
}
.mode-toggle {
margin-left: 0 !important;
padding: 5px 6px 5px 11px !important;
border-color: var(--terminal-line) !important;
background: rgba(255, 255, 255, 0.045) !important;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
.mode-toggle-label {
color: var(--terminal-muted) !important;
}
.mode-toggle-btn {
border-color: rgba(151, 166, 188, 0.22) !important;
background: rgba(255, 255, 255, 0.08) !important;
}
.mode-toggle-btn::after {
background: #d7e4f2 !important;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.45);
}
.mode-toggle-btn.on {
border-color: rgba(46, 230, 166, 0.65) !important;
background: rgba(46, 230, 166, 0.18) !important;
}
.mode-toggle-btn.on::after {
background: var(--terminal-green) !important;
}
/* Decision Strip */
#price-bar {
margin-top: 14px !important;
padding: 0 !important;
display: grid !important;
grid-template-columns: minmax(190px, 1.25fr) minmax(190px, 1.25fr) repeat(3, minmax(145px, 0.82fr)) minmax(132px, 0.72fr);
gap: 12px !important;
border: 0 !important;
background: transparent !important;
}
.price-item {
position: relative;
min-height: 104px;
padding: 17px 18px !important;
justify-content: space-between;
overflow: hidden;
border: 1px solid var(--terminal-line);
border-radius: var(--terminal-radius);
background:
linear-gradient(145deg, rgba(255, 255, 255, 0.088), rgba(255, 255, 255, 0.018)),
var(--terminal-card) !important;
box-shadow: var(--terminal-shadow-soft);
}
.price-item::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
background:
linear-gradient(120deg, rgba(255, 255, 255, 0.08), transparent 34%),
radial-gradient(circle at 85% 18%, rgba(98, 189, 255, 0.13), transparent 36%);
}
.price-item:nth-child(1),
.price-item:nth-child(2) {
min-height: 122px;
}
.price-item:nth-child(1)::before {
background:
linear-gradient(120deg, rgba(245, 189, 79, 0.13), transparent 38%),
radial-gradient(circle at 84% 22%, rgba(245, 189, 79, 0.18), transparent 36%);
}
.price-item:nth-child(2)::before {
background:
linear-gradient(120deg, rgba(46, 230, 166, 0.11), transparent 38%),
radial-gradient(circle at 84% 22%, rgba(65, 232, 255, 0.15), transparent 36%);
}
.price-label,
.compact-label {
position: relative;
z-index: 1;
color: var(--terminal-faint) !important;
font-size: 10px !important;
font-weight: 900;
letter-spacing: 0.14em !important;
}
.price-val,
#btc-diff,
#btc-diff-bn,
#btc-vol {
position: relative;
z-index: 1;
color: var(--terminal-ink);
font-family: var(--terminal-num);
font-size: clamp(21px, 1.7vw, 28px) !important;
font-weight: 900 !important;
letter-spacing: -0.045em;
}
.price-item:nth-child(1) .price-val,
.price-item:nth-child(2) .price-val {
font-size: clamp(26px, 2.1vw, 36px) !important;
}
#remaining {
color: var(--terminal-amber) !important;
text-shadow: 0 0 24px rgba(245, 189, 79, 0.35);
}
#remaining.ending {
color: var(--terminal-red) !important;
text-shadow: 0 0 24px rgba(255, 100, 116, 0.55);
}
/* Strategy And Observability */
#strat-bar,
#observe-bar {
position: relative;
margin-top: 12px !important;
border: 1px solid var(--terminal-line) !important;
border-radius: var(--terminal-radius) !important;
background:
linear-gradient(135deg, rgba(255, 255, 255, 0.062), rgba(255, 255, 255, 0.018)),
rgba(8, 14, 23, 0.96) !important;
box-shadow: var(--terminal-shadow-soft);
backdrop-filter: none;
}
#strat-bar {
padding: 14px 16px !important;
z-index: 4000;
overflow: visible !important;
}
#strat-bar:has(.strat-tip:hover),
#strat-bar:has(.tg-help-trigger:hover),
#strat-bar:has(#tg-config-body[style*="display: flex"]),
#strat-bar:has(.strat-popup.open) {
z-index: 9000;
}
#observe-bar {
padding: 10px 14px !important;
color: var(--terminal-muted) !important;
z-index: 200;
}
.strat-row {
position: relative;
z-index: 1;
align-items: center;
padding: 4px 0;
}
.strat-row:has(.strat-tip:hover),
.strat-row:has(.tip-box:hover),
.strat-row:has(.strat-popup.open) {
z-index: 100010;
}
.strat-group {
position: relative;
z-index: 1;
}
.strat-group:has(.strat-tip:hover),
.strat-group:has(.tip-box:hover) {
z-index: 100011;
}
.strat-group label {
position: relative;
z-index: 1;
padding: 6px 10px;
border: 1px solid rgba(151, 166, 188, 0.12);
border-radius: 999px;
background: rgba(255, 255, 255, 0.035);
color: var(--terminal-muted);
transition: transform 0.16s ease, border-color 0.16s ease, background 0.16s ease;
}
.strat-group label:hover {
z-index: 100012;
transform: translateY(-1px);
border-color: rgba(245, 189, 79, 0.32);
background: rgba(245, 189, 79, 0.06);
}
.strat-group input[type=checkbox] + .strat-tip::before {
color: rgba(151, 166, 188, 0.42);
}
.strat-group input[type=checkbox]:checked + .strat-tip::before,
.strat-group label:has(input:checked) {
color: var(--terminal-amber) !important;
}
.strat-amt {
height: 26px;
border-radius: 9px !important;
}
#strat-status {
min-height: 30px;
padding: 6px 11px;
border: 1px solid rgba(245, 189, 79, 0.18);
border-radius: 999px;
background: rgba(245, 189, 79, 0.075);
}
#strat-state-text {
font-weight: 900 !important;
letter-spacing: 0.02em;
}
#strat-state-text.idle { color: var(--terminal-faint) !important; }
#strat-state-text.scan { color: var(--terminal-muted) !important; }
#strat-state-text.active { color: var(--terminal-amber) !important; }
#strat-state-text.hold { color: var(--terminal-green) !important; }
#strat-state-text.done { color: var(--terminal-blue) !important; }
#strat-state-text.fail { color: var(--terminal-red) !important; }
.strat-divider {
background: var(--terminal-line-strong) !important;
}
/* Workbench */
#main-wrap {
position: relative;
z-index: 100;
margin-top: 14px !important;
padding: 0 !important;
display: grid !important;
grid-template-columns: minmax(0, 1fr) 380px;
gap: 14px !important;
align-items: start;
}
#main-wrap:has(.allowance-wrap:hover) {
z-index: 7000;
}
#book,
#order-panel,
#pm-pnl {
position: relative;
border: 1px solid var(--terminal-line) !important;
border-radius: var(--terminal-radius-lg) !important;
background:
linear-gradient(145deg, rgba(255, 255, 255, 0.065), rgba(255, 255, 255, 0.018)),
rgba(7, 12, 20, 0.96) !important;
box-shadow: var(--terminal-shadow);
backdrop-filter: none;
}
#book {
z-index: 10;
padding: 0 !important;
overflow: hidden;
}
#chart-toggle,
#book-toggle {
margin: 0 !important;
padding: 15px 17px !important;
border-bottom: 1px solid var(--terminal-line) !important;
background: rgba(255, 255, 255, 0.018);
}
#chart-toggle:hover,
#book-toggle:hover {
border-radius: 0 !important;
background: rgba(98, 189, 255, 0.075) !important;
}
#chart-toggle .toggle-label,
#book-toggle .toggle-label {
color: var(--terminal-muted) !important;
font-size: 11px !important;
font-weight: 900;
letter-spacing: 0.17em !important;
}
#chart-toggle .toggle-label::before,
#book-toggle .toggle-label::before {
content: "";
display: inline-block;
width: 8px;
height: 8px;
margin-right: 8px;
border-radius: 50%;
background: var(--terminal-blue);
box-shadow: 0 0 12px rgba(98, 189, 255, 0.72);
}
#book-toggle .toggle-label::before {
background: var(--terminal-amber);
box-shadow: 0 0 12px rgba(245, 189, 79, 0.72);
}
#chart-toggle .toggle-arrow,
#book-toggle .toggle-arrow {
color: var(--terminal-muted) !important;
}
#chart-collapsible {
max-height: 620px !important;
}
#chart-collapsible.collapsed {
max-height: 0 !important;
}
#price-chart {
margin: 12px !important;
overflow: hidden;
border: 1px solid rgba(151, 166, 188, 0.12) !important;
border-radius: 22px;
background:
radial-gradient(circle at 68% 14%, rgba(98, 189, 255, 0.13), transparent 34%),
linear-gradient(180deg, rgba(7, 12, 20, 0.92), rgba(4, 7, 11, 0.94)) !important;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.045);
}
#price-chart canvas {
height: min(54vh, 560px) !important;
min-height: 400px;
}
#book-collapsible {
max-height: 720px !important;
padding: 0 12px 14px;
}
#book-collapsible.collapsed {
max-height: 0 !important;
padding-top: 0 !important;
padding-bottom: 0 !important;
}
#momentum-bar,
#spread-bar {
border-color: var(--terminal-line) !important;
color: var(--terminal-muted) !important;
}
#momentum-bar {
margin-top: 10px;
padding: 9px 10px !important;
border: 1px solid var(--terminal-line);
border-radius: 15px;
background: rgba(255, 255, 255, 0.035);
}
.mom-label,
.mom-name {
color: var(--terminal-faint) !important;
}
.mom-val {
font-family: var(--terminal-num);
}
.mom-val.up { color: var(--terminal-green) !important; }
.mom-val.down { color: var(--terminal-red) !important; }
.mom-val.flat { color: var(--terminal-faint) !important; }
.book-header {
margin-top: 8px;
padding: 9px 10px !important;
color: var(--terminal-faint) !important;
font-weight: 900;
}
.order-row {
min-height: 27px;
align-items: center;
margin: 2px 0;
padding: 5px 10px !important;
border: 1px solid transparent;
border-radius: 11px !important;
background: rgba(255, 255, 255, 0.025);
font-family: var(--terminal-num);
}
.order-row:hover {
border-color: rgba(151, 166, 188, 0.16);
background: rgba(255, 255, 255, 0.05);
}
.order-row.ask .depth-bar {
background: linear-gradient(90deg, transparent, rgba(255, 100, 116, 0.58)) !important;
opacity: 0.2 !important;
}
.order-row.bid .depth-bar {
background: linear-gradient(90deg, rgba(46, 230, 166, 0.58), transparent) !important;
opacity: 0.2 !important;
}
.order-row .qty {
color: var(--terminal-muted) !important;
}
#spread-bar {
margin: 8px 0 !important;
padding: 10px !important;
border: 1px solid var(--terminal-line) !important;
border-radius: 15px;
background: rgba(255, 255, 255, 0.035);
}
#prob-bar {
padding: 12px 2px 0 !important;
}
.prob-label {
color: var(--terminal-muted) !important;
}
.prob-val {
font-family: var(--terminal-num);
font-size: 24px !important;
}
#prob-track {
height: 10px !important;
border: 1px solid rgba(151, 166, 188, 0.12);
border-radius: 999px;
background: rgba(255, 255, 255, 0.06) !important;
}
#prob-fill-up {
background: linear-gradient(90deg, var(--terminal-green), var(--terminal-cyan), var(--terminal-amber)) !important;
box-shadow: 0 0 18px rgba(65, 232, 255, 0.25);
}
/* Order Panel */
#order-panel {
position: sticky;
top: 94px;
z-index: 60;
width: auto !important;
padding: 16px !important;
gap: 12px !important;
overflow: visible !important;
}
#order-panel:has(.allowance-wrap:hover) {
z-index: 7001;
}
#order-panel .panel-title {
color: var(--terminal-ink) !important;
font-size: 15px !important;
font-weight: 900;
letter-spacing: 0.14em !important;
}
#order-panel > div:first-child {
padding-bottom: 10px;
border-bottom: 1px solid var(--terminal-line);
}
#account-block {
overflow: visible !important;
padding: 12px !important;
border: 1px solid rgba(151, 166, 188, 0.14);
border-radius: 19px !important;
background: rgba(255, 255, 255, 0.04) !important;
}
.acct-item {
gap: 8px;
min-height: 29px;
}
.acct-label,
.acct-sub,
#sync-time {
color: var(--terminal-faint) !important;
}
.acct-val {
font-family: var(--terminal-num);
color: var(--terminal-ink);
}
.verified-tag {
border: 1px solid rgba(151, 166, 188, 0.14);
border-radius: 999px !important;
background: rgba(255, 255, 255, 0.045) !important;
color: var(--terminal-faint) !important;
}
.verified-tag.ok {
border-color: rgba(46, 230, 166, 0.28);
background: rgba(46, 230, 166, 0.1) !important;
color: var(--terminal-green) !important;
}
.btn-group {
gap: 9px !important;
}
.tog-btn,
.side-btn,
.quick-amt-btn,
.pm-refresh-btn,
.max-btn,
.step-btn,
#clear-all-btn,
#confirm-btn,
#limit-confirm-btn {
border-radius: 14px !important;
transition: transform 0.15s ease, border-color 0.15s ease, background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}
.tog-btn,
.side-btn,
.quick-amt-btn {
border-color: rgba(151, 166, 188, 0.18) !important;
background: rgba(255, 255, 255, 0.055) !important;
color: var(--terminal-muted) !important;
}
.tog-btn:hover,
.side-btn:hover,
.quick-amt-btn:hover,
.pm-refresh-btn:hover,
.max-btn:hover,
.step-btn:hover {
transform: translateY(-1px);
}
.tog-btn.active {
border-color: rgba(98, 189, 255, 0.55) !important;
background: rgba(98, 189, 255, 0.13) !important;
color: var(--terminal-blue) !important;
box-shadow: 0 0 0 3px rgba(98, 189, 255, 0.08);
}
.tog-btn.active-up {
border-color: rgba(46, 230, 166, 0.54) !important;
background: rgba(46, 230, 166, 0.13) !important;
color: var(--terminal-green) !important;
}
.tog-btn.active-down {
border-color: rgba(255, 100, 116, 0.54) !important;
background: rgba(255, 100, 116, 0.13) !important;
color: var(--terminal-red) !important;
}
.side-btn.active-buy {
border-color: rgba(98, 189, 255, 0.5) !important;
background: linear-gradient(135deg, rgba(98, 189, 255, 0.28), rgba(98, 189, 255, 0.09)) !important;
color: #c7eaff !important;
}
.side-btn.active-sell {
border-color: rgba(245, 189, 79, 0.5) !important;
background: linear-gradient(135deg, rgba(245, 189, 79, 0.3), rgba(245, 189, 79, 0.08)) !important;
color: #ffe4aa !important;
}
.dir-pct,
#amount-unit {
font-family: var(--terminal-num);
}
#amount-unit {
color: var(--terminal-faint) !important;
}
.input-row {
border-color: rgba(151, 166, 188, 0.18) !important;
border-radius: 15px !important;
background: rgba(255, 255, 255, 0.04) !important;
}
.input-row:focus-within {
border-color: rgba(98, 189, 255, 0.65) !important;
box-shadow: 0 0 0 3px rgba(98, 189, 255, 0.1);
}
.input-row input {
background: transparent !important;
color: var(--terminal-ink) !important;
font-family: var(--terminal-num);
}
.step-btn,
.max-btn {
background: rgba(255, 255, 255, 0.055) !important;
color: var(--terminal-muted) !important;
}
.quick-amt-btn {
min-height: 28px;
}
.quick-amt-btn:hover,
.quick-amt-btn.active {
border-color: rgba(245, 189, 79, 0.5) !important;
background: rgba(245, 189, 79, 0.1) !important;
color: var(--terminal-amber) !important;
}
#est-row,
#pos-summary,
#cond-panel,
#slippage-row,
#manual-limit-list {
border: 1px solid rgba(151, 166, 188, 0.12) !important;
border-radius: 15px !important;
background: rgba(255, 255, 255, 0.035) !important;
}
#est-row {
padding: 9px 11px !important;
color: var(--terminal-muted) !important;
}
#est-row span {
color: var(--terminal-ink) !important;
font-family: var(--terminal-num);
}
#confirm-btn,
#limit-confirm-btn {
min-height: 52px;
border: 1px solid rgba(151, 166, 188, 0.16) !important;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.035)) !important;
color: var(--terminal-muted) !important;
letter-spacing: 0.03em;
}
#confirm-btn.ready-buy,
#limit-confirm-btn.ready-buy {
border-color: rgba(46, 230, 166, 0.45) !important;
background: linear-gradient(135deg, rgba(46, 230, 166, 0.96), rgba(18, 129, 91, 0.96)) !important;
color: #04130e !important;
box-shadow: 0 14px 38px rgba(46, 230, 166, 0.22);
}
#confirm-btn.ready-sell,
#limit-confirm-btn.ready-sell {
border-color: rgba(245, 189, 79, 0.48) !important;
background: linear-gradient(135deg, rgba(245, 189, 79, 0.96), rgba(164, 88, 28, 0.96)) !important;
color: #170d04 !important;
box-shadow: 0 14px 38px rgba(245, 189, 79, 0.2);
}
#confirm-btn:not(:disabled):hover,
#limit-confirm-btn:not(:disabled):hover,
#clear-all-btn:hover:not(:disabled) {
transform: translateY(-1px);
}
#clear-all-btn {
border-color: rgba(255, 100, 116, 0.3) !important;
background: rgba(255, 100, 116, 0.08) !important;
color: var(--terminal-red) !important;
}
#clear-all-btn:hover:not(:disabled) {
border-color: rgba(255, 100, 116, 0.5) !important;
background: rgba(255, 100, 116, 0.13) !important;
}
#cond-panel,
#slippage-row {
padding: 9px 10px;
}
#cond-head {
color: var(--terminal-muted) !important;
}
#cond-body {
border-left-color: var(--terminal-line) !important;
}
/* Floating Surfaces */
.result-dot .dot-tip,
.allowance-tooltip,
.strat-tip .tip-box,
.tg-help-tip,
.order-latency-tip,
.order-latency-tip > div,
#tg-config-body {
z-index: 100000 !important;
border-color: var(--terminal-line-strong) !important;
background: rgba(7, 12, 20, 0.96) !important;
box-shadow: 0 22px 70px rgba(0, 0, 0, 0.56) !important;
backdrop-filter: none;
}
.result-dot,
.allowance-wrap,
.strat-tip,
.tg-help-trigger,
.order-latency-trigger {
position: relative;
}
.result-dot:hover,
.allowance-wrap:hover,
.strat-tip:hover,
.tg-help-trigger:hover,
.order-latency-trigger:hover {
z-index: 100001;
}
.result-dot .dot-tip,
.allowance-tooltip,
.strat-tip .tip-box {
z-index: 100002 !important;
}
#tg-config-body {
width: min(460px, calc(100vw - 32px)) !important;
max-height: min(620px, calc(100vh - 120px));
overflow-y: auto;
overscroll-behavior: contain;
z-index: 100003 !important;
}
#tg-config-panel {
position: relative;
z-index: 100004;
}
.tg-help-tip {
z-index: 100005 !important;
pointer-events: auto;
}
#claim-tip {
position: relative;
}
#claim-tip:hover,
#claim-tip:has(.tg-help-tip:hover) {
z-index: 100010 !important;
}
#claim-tip::after {
left: auto !important;
right: 0 !important;
width: min(340px, calc(100vw - 32px));
height: 18px !important;
top: 100% !important;
z-index: 100009;
}
#claim-tip .tg-help-tip {
z-index: 100011 !important;
}
#tg-bot-token,
#tg-chat-id,
#vol-threshold,
.strat-amt,
#max-round-entries,
#strat-slippage,
#tg-interval,
#cond-tp-pct,
#cond-sl-pct,
#cond-sl-slippage,
#slippage-input {
border-color: rgba(151, 166, 188, 0.22) !important;
background: rgba(255, 255, 255, 0.05) !important;
color: var(--terminal-ink) !important;
}
#backtest-btn,
#tg-config-body button,
#cond-cancel-all-btn {
border-color: rgba(151, 166, 188, 0.22) !important;
background: rgba(255, 255, 255, 0.06) !important;
color: var(--terminal-muted) !important;
}
/* PnL Table */
#pm-pnl {
margin-top: 14px !important;
margin-bottom: 16px !important;
padding: 14px !important;
overflow-x: auto;
}
#pm-pnl .hist-title {
margin-bottom: 10px !important;
color: var(--terminal-muted) !important;
font-size: 12px !important;
font-weight: 900;
letter-spacing: 0.14em !important;
}
#pm-pnl .pm-total {
color: var(--terminal-muted) !important;
font-family: var(--terminal-num);
}
#pm-pnl .pm-total .val-pos { color: var(--terminal-green) !important; }
#pm-pnl .pm-total .val-neg { color: var(--terminal-red) !important; }
.pm-refresh-btn {
padding: 6px 12px !important;
border-color: rgba(151, 166, 188, 0.18) !important;
background: rgba(255, 255, 255, 0.055) !important;
color: var(--terminal-muted) !important;
}
.pm-refresh-btn:hover {
border-color: rgba(98, 189, 255, 0.5) !important;
background: rgba(98, 189, 255, 0.12) !important;
color: #d9f1ff !important;
}
.pm-countdown {
color: var(--terminal-faint) !important;
}
#pm-pnl-list {
gap: 5px !important;
height: min(42vh, 420px) !important;
}
.pm-item {
min-width: 920px;
padding: 7px 9px !important;
border: 1px solid rgba(151, 166, 188, 0.08);
border-radius: 12px !important;
background: rgba(255, 255, 255, 0.035) !important;
color: var(--terminal-muted) !important;
font-family: var(--terminal-num);
}
.pm-item:hover {
border-color: rgba(151, 166, 188, 0.17);
background: rgba(255, 255, 255, 0.055) !important;
}
.pm-header {
border-color: var(--terminal-line) !important;
background: transparent !important;
}
.pm-header > span {
color: var(--terminal-faint) !important;
}
.pm-item .pm-time,
.pm-item .pm-detail,
.pm-item .pm-title,
.pm-item .pm-amount .pm-amount-label,
.pm-item .pm-pos-pnl .pm-pos-pnl-label {
color: var(--terminal-faint) !important;
}
.pm-item .pm-kind.buy,
.pm-item .pm-outcome.up {
background: rgba(46, 230, 166, 0.12) !important;
color: var(--terminal-green) !important;
}
.pm-item .pm-kind.sell,
.pm-item .pm-outcome.down {
background: rgba(255, 100, 116, 0.12) !important;
color: var(--terminal-red) !important;
}
.pm-item .pm-kind.claim {
background: rgba(245, 189, 79, 0.13) !important;
color: var(--terminal-amber) !important;
}
.pm-item .pm-source {
background: rgba(98, 189, 255, 0.12) !important;
color: var(--terminal-blue) !important;
}
.pm-item .pm-source.manual {
background: rgba(245, 189, 79, 0.13) !important;
color: var(--terminal-amber) !important;
}
#app-footer {
margin-top: 0 !important;
margin-bottom: 16px !important;
border: 1px solid var(--terminal-line) !important;
border-radius: 16px;
background: rgba(255, 255, 255, 0.025);
color: var(--terminal-faint) !important;
}
/* Low Data Mode */
body.low-data-mode {
background:
radial-gradient(circle at 50% -10%, rgba(98, 189, 255, 0.18), transparent 30rem),
linear-gradient(135deg, #04070b, #071018 58%, #06080c) !important;
}
body.low-data-mode #header,
body.low-data-mode #price-bar,
body.low-data-mode #strat-bar,
body.low-data-mode #observe-bar {
width: min(980px, calc(100% - 32px)) !important;
max-width: none;
}
body.low-data-mode #header {
padding: 12px 16px !important;
}
body.low-data-mode #price-bar {
display: block !important;
margin-top: 12px !important;
border: 1px solid var(--terminal-line) !important;
border-radius: var(--terminal-radius-lg) !important;
background: var(--terminal-card-strong) !important;
box-shadow: var(--terminal-shadow);
}
body.low-data-mode #low-data-hero {
padding: 24px 24px 10px !important;
}
body.low-data-mode #low-data-detail {
padding: 10px 24px 18px !important;
border-top-color: var(--terminal-line) !important;
color: var(--terminal-muted) !important;
}
/* Responsive */
@media (max-width: 1320px) {
#price-bar {
grid-template-columns: repeat(3, minmax(180px, 1fr));
}
#main-wrap {
grid-template-columns: 1fr !important;
}
#order-panel {
position: static;
width: 100% !important;
}
}
@media (max-width: 860px) {
#header,
#price-bar,
#strat-bar,
#observe-bar,
#main-wrap,
#pm-pnl,
#app-footer {
width: calc(100% - 20px);
}
#header {
position: static;
margin-top: 10px !important;
border-radius: 20px !important;
}
#header .window-info {
width: 100%;
}
#recent-results {
margin-left: 0;
order: 3;
}
#ws-status {
order: 5;
width: 100%;
}
.mode-toggle {
order: 4;
}
#price-bar {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.price-item,
.price-item:nth-child(1),
.price-item:nth-child(2) {
min-height: 90px;
padding: 14px !important;
}
#price-chart canvas {
min-height: 320px;
height: 44vh !important;
}
#momentum-bar {
flex-direction: column;
}
.mom-group {
width: 100%;
}
#prob-bar {
gap: 12px !important;
}
}
@media (max-width: 560px) {
body {
font-size: 12px;
}
#price-bar {
grid-template-columns: 1fr;
}
#book-collapsible {
padding: 0 8px 10px;
}
#price-chart {
margin: 8px !important;
}
#price-chart canvas {
min-height: 280px;
}
#order-panel {
padding: 12px !important;
}
.tog-btn,
.side-btn {
font-size: 13px !important;
}
#low-data-hero {
flex-direction: column;
align-items: flex-start !important;
}
body.low-data-mode #header,
body.low-data-mode #price-bar,
body.low-data-mode #strat-bar,
body.low-data-mode #observe-bar {
width: calc(100% - 20px) !important;
}
}