/* Trading Ledger — shared visual system for every console page. */
.dashboard-v2 {
    --v2-bg: #0b1015;
    --v2-top: #0e151b;
    --v2-sidebar: #0d1318;
    --v2-panel: #131b22;
    --v2-panel-2: #18232b;
    --v2-panel-3: #202d36;
    --v2-line: #293742;
    --v2-line-soft: #202c34;
    --v2-text: #dce5ea;
    --v2-muted: #87959e;
    --v2-blue: #55b8c5;
    --v2-blue-soft: rgba(85, 184, 197, 0.11);
    --v2-green: #55c29b;
    --v2-green-soft: rgba(85, 194, 155, 0.1);
    --v2-red: #e36d76;
    --v2-red-soft: rgba(227, 109, 118, 0.11);
    --v2-yellow: #e2a846;
    --v2-yellow-soft: rgba(226, 168, 70, 0.12);
    background-color: var(--v2-bg);
    background-image:
        linear-gradient(rgba(91, 113, 125, 0.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(91, 113, 125, 0.025) 1px, transparent 1px);
    background-size: 36px 36px;
    color: var(--v2-text);
    font-family: "Microsoft YaHei UI", "Microsoft YaHei", sans-serif;
}

.dashboard-v2 h1,
.dashboard-v2 h2,
.dashboard-v2 h3,
.dashboard-v2 .v2-brand-title,
.dashboard-v2 .panel-heading h2,
.dashboard-v2 .config-card-title {
    font-family: Bahnschrift, "Arial Narrow", "Microsoft YaHei UI", sans-serif;
    font-stretch: condensed;
    letter-spacing: .025em;
}

.dashboard-v2 .overview-value,
.dashboard-v2 .strategy-runtime-metric strong,
.dashboard-v2 .strategy-selector-value strong,
.dashboard-v2 .history-table td,
.dashboard-v2 .positions-table td,
.dashboard-v2 .levels-table td,
.dashboard-v2 .key-metric strong,
.dashboard-v2 .event-time,
.dashboard-v2 input[type="number"] {
    font-family: Consolas, "SFMono-Regular", monospace;
    font-variant-numeric: tabular-nums;
}

.dashboard-v2 :focus-visible {
    outline: 2px solid var(--v2-yellow);
    outline-offset: 2px;
}

.v2-app { min-height: 100vh; }

.v2-topbar {
    position: sticky;
    z-index: 30;
    top: 0;
    height: 60px;
    padding: 0 22px;
    border-top: 2px solid var(--v2-yellow);
    border-bottom: 1px solid var(--v2-line);
    background: rgba(14, 21, 27, .96);
    backdrop-filter: blur(12px);
}

.v2-topbar::after {
    position: absolute;
    right: 24px;
    bottom: -1px;
    width: 96px;
    height: 1px;
    content: "";
    background: var(--v2-blue);
    animation: ledger-scan 900ms ease-out both;
}

.v2-brand { gap: 11px; color: var(--v2-text); text-decoration: none; }
.v2-brand-mark {
    position: relative;
    width: 31px;
    height: 31px;
    overflow: hidden;
    border: 1px solid #4b5b65;
    border-radius: 2px;
    color: transparent;
    background: transparent;
}
.v2-brand-mark i { display: none; }
.v2-brand-mark::before {
    position: absolute;
    left: 7px;
    top: 8px;
    width: 16px;
    height: 2px;
    content: "";
    background: var(--v2-yellow);
    box-shadow: 0 6px 0 var(--v2-blue), 0 12px 0 #657681;
}
.v2-brand-mark::after {
    position: absolute;
    left: 11px;
    top: 5px;
    width: 1px;
    height: 21px;
    content: "";
    background: #42515b;
}
.v2-brand-title { font-size: 16px; font-weight: 700; line-height: 1.1; }
.v2-brand-subtitle {
    margin-top: 4px;
    color: #71808a;
    font: 9px/1.1 Consolas, monospace;
    letter-spacing: .13em;
    text-transform: uppercase;
}

.dashboard-v2 .topbar-actions { gap: 7px; }
.dashboard-v2 .env-switch-group,
.dashboard-v2 .toolbar-button,
.dashboard-v2 .env-pill,
.dashboard-v2 .count-badge,
.dashboard-v2 .action-button,
.dashboard-v2 .mini-action {
    border-radius: 2px;
}
.dashboard-v2 .env-switch-group { padding: 2px; background: #11191f; }
.dashboard-v2 .env-switch { border-radius: 1px; font: 11px/1.2 Consolas, monospace; }
.dashboard-v2 .env-switch.active { color: #071215; background: var(--v2-blue); }
.dashboard-v2 .env-pill {
    border-color: rgba(226, 168, 70, .42);
    color: var(--v2-yellow);
    background: transparent;
    font: 700 10px/1.2 Consolas, monospace;
    letter-spacing: .08em;
}
.dashboard-v2 .toolbar-button {
    min-height: 32px;
    border-color: var(--v2-line);
    color: #b9c6cd;
    background: #11191f;
}
.dashboard-v2 .toolbar-button:hover {
    border-color: #4a5c67;
    color: #f0f5f7;
    background: #19242b;
}

.v2-shell { grid-template-columns: 214px minmax(0, 1fr); min-height: calc(100vh - 60px); }
.v2-sidebar {
    position: sticky;
    top: 60px;
    height: calc(100vh - 60px);
    padding: 24px 14px 94px;
    border-right-color: var(--v2-line);
    background: rgba(13, 19, 24, .95);
}
.v2-nav-label {
    padding: 0 10px 12px;
    color: #66757f;
    font: 700 9px/1 Consolas, monospace;
    letter-spacing: .18em;
}
.v2-nav-label::after { content: " / 交易执行台"; color: #44535d; }
.dashboard-v2 .sidebar-nav { gap: 2px; }
.dashboard-v2 .nav-item {
    position: relative;
    gap: 10px;
    padding: 10px 12px 10px 14px;
    border: 0;
    border-left: 2px solid transparent;
    border-radius: 0;
    color: #8c9aa3;
    font-size: 13px;
}
.dashboard-v2 .nav-item i { width: 17px; color: #5e6e78; text-align: center; }
.dashboard-v2 .nav-item:hover { color: #dce5ea; background: #121b21; }
.dashboard-v2 .nav-item.active {
    border-color: var(--v2-yellow);
    color: #edf2f4;
    background: rgba(226, 168, 70, .075);
}
.dashboard-v2 .nav-item.active i { color: var(--v2-yellow); }
.v2-sidebar-status {
    left: 24px;
    right: 18px;
    border-top-color: var(--v2-line);
    color: #9eabb3;
    font: 11px/1.35 Consolas, monospace;
}
.v2-sidebar-status small { color: #5f6f79; }
.v2-status-dot {
    width: 6px;
    height: 6px;
    border-radius: 0;
    background: var(--v2-green);
    box-shadow: 0 0 0 2px rgba(85, 194, 155, .12);
}

.v2-workspace,
.console-page .console-workspace {
    width: 100%;
    max-width: 1540px;
    margin-inline: auto;
    padding: 28px 30px 36px;
}
.v2-page-head {
    position: relative;
    min-height: 65px;
    align-items: flex-start;
    margin-bottom: 18px;
    padding: 2px 0 14px;
    border-bottom: 1px solid var(--v2-line);
}
.v2-page-head h1 { font-size: 27px; line-height: 1.08; font-weight: 700; }
.v2-page-head p { margin-top: 7px; color: #82909a; font-size: 12px; }
.v2-market-status,
.console-page .strategy-sync-state {
    color: #74838c;
    font: 10px/1.2 Consolas, monospace;
    letter-spacing: .04em;
}

.v2-overview,
.console-page .daily-overview-grid,
.console-page .strategy-runtime-overview {
    border-color: var(--v2-line);
    border-radius: 2px;
    background: var(--v2-panel);
}
.dashboard-v2 .overview-card {
    position: relative;
    min-height: 100px;
    padding: 17px 18px 14px;
    background:
        linear-gradient(90deg, rgba(85, 184, 197, .045) 1px, transparent 1px),
        var(--v2-panel);
    background-size: 28px 100%;
}
.dashboard-v2 .overview-card::before {
    position: absolute;
    left: 0;
    top: 16px;
    width: 2px;
    height: 28px;
    content: "";
    background: #40515b;
}
.dashboard-v2 .overview-card.positive::before { background: var(--v2-green); }
.dashboard-v2 .overview-card.negative::before { background: var(--v2-red); }
.dashboard-v2 .overview-label {
    color: #81909a;
    font: 10px/1.2 Consolas, monospace;
    letter-spacing: .08em;
}
.dashboard-v2 .overview-value { margin-top: 10px; font-size: 23px; font-weight: 600; }
.dashboard-v2 .overview-meta { color: #63737d; font-size: 10px; }

.v2-content-grid { grid-template-columns: minmax(0, 1fr) 316px; gap: 14px; }
.v2-main-stack, .v2-side-stack { gap: 14px; }
.v2-panel,
.console-page .panel {
    position: relative;
    border-color: var(--v2-line);
    border-radius: 2px;
    background: var(--v2-panel);
}
.v2-panel::before,
.console-page .panel::before {
    position: absolute;
    z-index: 2;
    left: -1px;
    top: 0;
    width: 2px;
    height: 48px;
    content: "";
    background: var(--v2-blue);
}
.v2-panel-head,
.console-page .panel-heading {
    min-height: 56px;
    padding: 12px 17px;
    border-bottom-color: var(--v2-line);
    background: #111920;
}
.v2-panel-head h2,
.console-page .panel-heading h2 { font-size: 15px; font-weight: 650; }
.v2-panel-head p,
.console-page .panel-heading p,
.dashboard-v2 .panel-meta { color: #6f7e87; }
.dashboard-v2 .inline-link { color: var(--v2-yellow); font: 10px Consolas, monospace; }

.dashboard-v2 .positions-table thead tr,
.dashboard-v2 .levels-table thead tr,
.console-page .history-table thead tr { background: #0f171d; }
.dashboard-v2 .positions-table th,
.dashboard-v2 .levels-table th,
.console-page .history-table th {
    color: #73828c;
    font: 700 10px/1.2 Consolas, monospace;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.dashboard-v2 .positions-table td,
.dashboard-v2 .levels-table td,
.console-page .history-table td { border-bottom-color: var(--v2-line-soft); color: #c8d2d7; }
.dashboard-v2 .positions-table tbody tr:hover,
.console-page .history-table tbody tr:hover { background: rgba(85, 184, 197, .035); }
.dashboard-v2 .position-row.active {
    background: rgba(226, 168, 70, .06);
    box-shadow: inset 2px 0 var(--v2-yellow);
}
.dashboard-v2 .coin-badge {
    border: 1px solid #42545f;
    border-radius: 2px;
    color: #dbe4e8;
    background: #1d2b34 !important;
    font-family: Consolas, monospace;
}
.dashboard-v2 .symbol-name { font-family: Bahnschrift, "Arial Narrow", sans-serif; letter-spacing: .04em; }
.dashboard-v2 .status-pill,
.dashboard-v2 .mode-badge,
.dashboard-v2 .auto-badge,
.console-page .status-pill,
.console-page .daily-symbol-chip {
    border: 1px solid currentColor;
    border-radius: 1px;
    background: transparent;
    font: 700 10px/1 Consolas, monospace;
}

.dashboard-v2 .event-item { border-bottom-color: var(--v2-line-soft); }
.dashboard-v2 .event-dot { width: 3px; height: 18px; margin-top: 1px; border-radius: 0; }
.dashboard-v2 .event-symbol { font-family: Consolas, monospace; }
.dashboard-v2 .risk-box,
.dashboard-v2 .daily-strategy-box { background: var(--v2-panel); }
.dashboard-v2 .risk-bar { height: 3px; border-radius: 0; background: #26343d; }
.dashboard-v2 .risk-bar span { border-radius: 0; }
.dashboard-v2 .daily-strategy-box.enabled { box-shadow: inset 2px 0 var(--v2-green); }
.dashboard-v2 .daily-strategy-box.disabled { box-shadow: inset 2px 0 #4b5962; }

.v2-detail-grid { grid-template-columns: minmax(300px, 34%) minmax(0, 1fr); }
.v2-subhead {
    color: #9eabb3;
    background: #10181e;
    font: 700 10px/1 Consolas, monospace;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.dashboard-v2 .key-metric { background: transparent; }
.dashboard-v2 .key-metric span { color: #778690; font-size: 11px; }
.dashboard-v2 .grid-price-chart { background: #0d1419; }
.dashboard-v2 .grid-price-chart-head { border-bottom-color: var(--v2-line); }
.dashboard-v2 .grid-price-chart-legend i { border-radius: 0; }
.dashboard-v2 .rolling-limit-input,
.dashboard-v2 .runtime-stop-input,
.console-page .field-input,
.auth-field input {
    border-radius: 2px;
    border-color: #31414b;
    color: #dce5ea;
    background: #0c1318;
}
.dashboard-v2 .rolling-limit-input:focus,
.dashboard-v2 .runtime-stop-input:focus,
.console-page .field-input:focus,
.auth-field input:focus {
    border-color: var(--v2-yellow);
    box-shadow: 0 0 0 1px rgba(226, 168, 70, .22);
}
.dashboard-v2 .action-button.primary,
.console-page .accent-button {
    border-color: rgba(226, 168, 70, .55);
    color: #f2c87d;
    background: rgba(226, 168, 70, .08);
}
.console-page .solid-button { border-color: rgba(85, 194, 155, .45); background: rgba(85, 194, 155, .1); }

.console-page .config-stack,
.console-page .strategy-runtime-grid { gap: 10px; }
.console-page .config-card,
.console-page .strategy-runtime-card,
.console-page .advanced-details {
    position: relative;
    border-radius: 2px;
    background: #10181e;
}
.console-page .config-card::before,
.console-page .strategy-runtime-card::before {
    position: absolute;
    left: -1px;
    top: 11px;
    width: 2px;
    height: 24px;
    content: "";
    background: #40515b;
}
.console-page .strategy-runtime-card:hover { border-color: #49606c; }
.console-page .strategy-runtime-card.active {
    border-color: rgba(226, 168, 70, .66);
    background: rgba(226, 168, 70, .045);
}
.console-page .strategy-runtime-card.active::before { background: var(--v2-yellow); }
.console-page .strategy-symbol-token { border-radius: 2px; background: #24343e; }
.console-page .count-badge { color: #aab7be; background: #10181e; font-family: Consolas, monospace; }
.console-page .table-shell { scrollbar-color: #465963 #10181e; }

/* Login is composed as an access ticket beside a static price ladder. */
.auth-page { background-color: #090e12; }
.auth-shell {
    position: relative;
    overflow: hidden;
    padding: 32px;
}
.auth-shell::before {
    position: absolute;
    inset: 0;
    content: "";
    pointer-events: none;
    background-image:
        linear-gradient(rgba(79, 101, 113, .05) 1px, transparent 1px),
        linear-gradient(90deg, rgba(79, 101, 113, .035) 1px, transparent 1px);
    background-size: 42px 42px;
}
.auth-frame {
    position: relative;
    width: min(860px, 100%);
    display: grid;
    grid-template-columns: minmax(0, 1.08fr) minmax(330px, .92fr);
    border: 1px solid var(--v2-line);
    border-top: 2px solid var(--v2-yellow);
    background: #10171c;
    box-shadow: 0 28px 80px rgba(0, 0, 0, .42);
}
.auth-card {
    width: auto;
    min-height: 540px;
    padding: 46px 48px;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}
.auth-heading { margin: 70px 0 26px; }
.auth-heading::before {
    display: block;
    margin-bottom: 12px;
    color: var(--v2-yellow);
    content: "ACCESS / 01";
    font: 700 10px Consolas, monospace;
    letter-spacing: .18em;
}
.auth-heading h1 { font-family: Bahnschrift, "Arial Narrow", sans-serif; font-size: 31px; font-weight: 650; }
.auth-heading p { max-width: 330px; color: #7f8e97; line-height: 1.7; }
.auth-form { gap: 17px; }
.auth-field { color: #8998a1; font: 11px Consolas, "Microsoft YaHei", sans-serif; }
.auth-field input { min-height: 47px; padding-inline: 14px; font-family: Consolas, monospace; }
.auth-submit {
    min-height: 47px;
    margin-top: 4px;
    justify-content: space-between;
    padding: 0 16px;
    border-color: var(--v2-yellow);
    border-radius: 2px;
    color: #16120a;
    background: var(--v2-yellow);
    font-weight: 700;
}
.auth-submit:hover { background: #edb85b; }
.auth-aside {
    position: relative;
    min-height: 540px;
    padding: 44px 34px;
    overflow: hidden;
    border-left: 1px solid var(--v2-line);
    background: #0c1318;
}
.auth-aside-label { color: #687780; font: 700 9px Consolas, monospace; letter-spacing: .18em; }
.auth-aside h2 { margin: 12px 0 4px; font: 600 22px Bahnschrift, "Arial Narrow", sans-serif; }
.auth-aside p { margin: 0; color: #66757e; font-size: 11px; }
.auth-ladder { position: absolute; inset: 142px 34px 54px; border-left: 1px solid #2b3a43; }
.auth-ladder-row {
    position: relative;
    height: 52px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-left: 20px;
    border-bottom: 1px solid #202c34;
    color: #72818a;
    font: 11px Consolas, monospace;
}
.auth-ladder-row::before { position: absolute; left: -4px; width: 7px; height: 1px; content: ""; background: #53646e; }
.auth-ladder-row strong { color: #aab7be; font-weight: 400; }
.auth-ladder-row.live { color: var(--v2-blue); }
.auth-ladder-row.live::before { height: 3px; background: var(--v2-blue); }
.auth-ladder-row.live strong { color: var(--v2-blue); }
.auth-aside-status { position: absolute; right: 34px; bottom: 25px; color: #74848d; font: 10px Consolas, monospace; }

@keyframes ledger-scan {
    from { transform: scaleX(0); transform-origin: right; opacity: .2; }
    to { transform: scaleX(1); transform-origin: right; opacity: 1; }
}

@media (max-width: 1180px) {
    .v2-shell { grid-template-columns: 72px minmax(0, 1fr); }
    .v2-sidebar { padding-inline: 9px; }
    .v2-content-grid { grid-template-columns: minmax(0, 1fr) 292px; }
}

@media (max-width: 1040px) {
    .v2-content-grid { grid-template-columns: 1fr; }
}

@media (max-width: 820px) {
    .v2-topbar { position: relative; top: auto; min-height: 60px; padding: 10px 12px; }
    .v2-shell { grid-template-columns: 1fr; }
    .v2-sidebar {
        position: sticky;
        z-index: 20;
        top: 0;
        width: 100%;
        height: auto;
        padding: 0;
        overflow: hidden;
        border-right: 0;
        border-bottom: 1px solid var(--v2-line);
    }
    .dashboard-v2 .sidebar-nav { display: flex; flex-wrap: nowrap; gap: 0; padding: 0 8px; overflow-x: auto; scrollbar-width: none; }
    .dashboard-v2 .sidebar-nav::-webkit-scrollbar { display: none; }
    .dashboard-v2 .nav-item { flex: 0 0 auto; min-height: 46px; padding: 8px 11px; border-left: 0; border-bottom: 2px solid transparent; white-space: nowrap; }
    .dashboard-v2 .nav-item.active { border-bottom-color: var(--v2-yellow); }
    .v2-workspace, .console-page .console-workspace { padding: 20px 14px 28px; }
    .v2-page-head { min-height: auto; }
    .v2-detail-grid { grid-template-columns: 1fr; }
    .dashboard-v2 .positions-table { min-width: 760px; }
}

@media (max-width: 680px) {
    .auth-shell { padding: 0; align-items: stretch; }
    .auth-frame { min-height: 100vh; grid-template-columns: 1fr; border: 0; border-top: 2px solid var(--v2-yellow); }
    .auth-card { min-height: 100vh; padding: 32px 22px; }
    .auth-heading { margin-top: 78px; }
    .auth-heading h1 { font-size: 28px; }
    .auth-aside { display: none; }
}

@media (max-width: 560px) {
    .v2-brand-title { font-size: 13px; }
    .dashboard-v2 .topbar-actions { flex-wrap: nowrap; }
    .dashboard-v2 .env-switch { padding-inline: 8px; }
    .v2-workspace, .console-page .console-workspace { padding-inline: 10px; }
    .v2-page-head { padding-left: 0; }
    .v2-page-head h1 { font-size: 23px; }
    .v2-overview,
    .console-page .strategy-runtime-overview { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .dashboard-v2 .overview-card { min-height: 88px; padding: 13px 12px; }
    .dashboard-v2 .overview-value { font-size: 18px; }
    .dashboard-v2 .positions-table { min-width: 760px; table-layout: fixed; }
    .dashboard-v2 .positions-table col:nth-child(n),
    .dashboard-v2 .positions-table th:nth-child(n),
    .dashboard-v2 .positions-table td:nth-child(n) { display: table-cell; }
    .dashboard-v2 .positions-table col:nth-child(1) { width: 22%; }
    .dashboard-v2 .positions-table col:nth-child(2) { width: 19%; }
    .dashboard-v2 .positions-table col:nth-child(3) { width: 13%; }
    .dashboard-v2 .positions-table col:nth-child(4),
    .dashboard-v2 .positions-table col:nth-child(5) { width: 13%; }
    .dashboard-v2 .positions-table col:nth-child(6) { width: 20%; }
    .dashboard-v2 .positions-table-wrap,
    .dashboard-v2 .levels-wrap,
    .console-page .table-shell { scrollbar-color: #4c606a #0d1419; }
    .dashboard-v2 .grid-price-chart-legend { display: grid; grid-template-columns: repeat(2, max-content); }
    .dashboard-v2 .grid-price-canvas-wrap { width: 100%; min-width: 0; height: 240px; }
    .dashboard-v2 .grid-price-chart { overflow: hidden; }
    .console-page .strategy-runtime-grid { padding: 10px; }
    .console-page .strategy-selector-card { grid-template-columns: minmax(118px, 1fr) auto; }
    .console-page .strategy-selector-value strong {
        overflow: visible;
        font-size: 12px;
        text-overflow: clip;
        white-space: normal;
    }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
