모의투자, 백테스팅 레이아웃 수정
This commit is contained in:
@@ -1,67 +1,296 @@
|
||||
/* 모의투자 대시보드 (ptd-) — 전체 화면 고정 레이아웃, 앱 테마 변수 연동 */
|
||||
.ptd-page {
|
||||
/* 모의투자 — 좌측 패널·우측 탭·성과 지표 하단선 정렬 */
|
||||
|
||||
.bps-page .bps-main {
|
||||
padding: 0 10px 10px 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.bps-page .bps-right {
|
||||
border: 1px solid var(--se-panel-card-border);
|
||||
border-radius: 14px;
|
||||
box-shadow: var(--se-panel-card-shadow), inset 0 1px 0 color-mix(in srgb, var(--se-text) 4%, transparent);
|
||||
}
|
||||
|
||||
.bps-page .bps-footer {
|
||||
margin: 0 12px 0;
|
||||
}
|
||||
|
||||
.bps-center-content .ptd-center-fill {
|
||||
height: 100%;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.bps-center-content .ptd-chart-card {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
height: 100%;
|
||||
border: 1px solid var(--se-border);
|
||||
background: var(--se-panel-card-bg);
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* 중앙 — 캔들 + 보조지표 (실시간 차트 레이아웃) */
|
||||
.ptd-analysis-chart {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
}
|
||||
.ptd-analysis-chart .ptd-main-pane {
|
||||
flex: 1.55;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
}
|
||||
.ptd-analysis-chart .ptd-sub-panes {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border-top: 1px solid var(--sep);
|
||||
overflow: hidden;
|
||||
}
|
||||
.ptd-analysis-chart .ptd-chart-wrap {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
padding: 8px 10px 0;
|
||||
}
|
||||
.ptd-analysis-chart .ptd-chart-canvas {
|
||||
flex: 1;
|
||||
min-height: 120px;
|
||||
max-height: none;
|
||||
}
|
||||
|
||||
.ptd-ind-stack {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.ptd-ind-row {
|
||||
flex: 1;
|
||||
min-height: 72px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 4px 10px 6px;
|
||||
border-bottom: 1px solid var(--sep);
|
||||
background: color-mix(in srgb, var(--bg3) 80%, transparent);
|
||||
}
|
||||
.ptd-ind-row:last-child { border-bottom: none; }
|
||||
.ptd-ind-row .ptd-ind-svg {
|
||||
flex: 1;
|
||||
min-height: 48px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 좌·우 상하단 카드 분리 */
|
||||
.ptd-split-panel {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
.bps-panel-body--tabs {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
}
|
||||
.bps-panel-body--tabs > .ptd-split-panel--left,
|
||||
.bps-right-body > .ptd-right-body > .ptd-split-panel--right {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
}
|
||||
.ptd-split-card {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--se-border, var(--border));
|
||||
border-radius: 10px;
|
||||
background: color-mix(in srgb, var(--se-bg-elevated, var(--bg2)) 88%, transparent);
|
||||
box-shadow: inset 0 1px 0 color-mix(in srgb, var(--se-text, var(--text)) 4%, transparent);
|
||||
}
|
||||
.ptd-split-card-head {
|
||||
flex-shrink: 0;
|
||||
padding: 8px 10px;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
color: var(--text2, var(--se-text-muted));
|
||||
border-bottom: 1px solid var(--sep, var(--se-border));
|
||||
}
|
||||
.ptd-split-card-body {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
padding: 8px 10px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
.ptd-split-panel--right .ptd-split-card-body .ptd-ob--section {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
.ptd-split-panel--right .ptd-split-card-body .ptd-ob--section .ptd-ob-body {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
max-height: none;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.ptd-split-panel--right .ptd-order-card,
|
||||
.ptd-split-panel--right .top-panel {
|
||||
background: transparent;
|
||||
}
|
||||
.ptd-tabs--in-card {
|
||||
border-bottom: none;
|
||||
margin: -4px -2px 0;
|
||||
}
|
||||
.ptd-asset-inline {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
gap: 8px;
|
||||
padding-bottom: 4px;
|
||||
border-bottom: 1px solid var(--sep);
|
||||
}
|
||||
.ptd-asset-total--sm {
|
||||
padding: 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
.ptd-asset-ret--sm {
|
||||
padding: 0;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/* 좌측 전략·설정 탭 */
|
||||
.ptd-left-tab {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
}
|
||||
.ptd-left-section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
.ptd-left-section-title {
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
color: var(--text2);
|
||||
padding-bottom: 4px;
|
||||
border-bottom: 1px solid var(--sep);
|
||||
}
|
||||
.ptd-left-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 8px;
|
||||
font-size: 11px;
|
||||
color: var(--text2);
|
||||
}
|
||||
.ptd-left-field {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
font-size: 10px;
|
||||
color: var(--text3);
|
||||
}
|
||||
.ptd-left-select,
|
||||
.ptd-left-input {
|
||||
width: 100%;
|
||||
padding: 6px 8px;
|
||||
border-radius: 8px;
|
||||
border: 1px solid var(--border);
|
||||
background: var(--bg3);
|
||||
color: var(--text);
|
||||
font-size: 11px;
|
||||
}
|
||||
.ptd-left-hint {
|
||||
margin: 0;
|
||||
font-size: 10px;
|
||||
color: var(--accent);
|
||||
}
|
||||
.ptd-left-status {
|
||||
margin: 0;
|
||||
font-size: 10px;
|
||||
color: var(--text3);
|
||||
padding: 6px 8px;
|
||||
border-radius: 8px;
|
||||
background: var(--bg3);
|
||||
}
|
||||
.ptd-left-status--on {
|
||||
color: #22c55e;
|
||||
background: rgba(34, 197, 94, 0.1);
|
||||
}
|
||||
.ptd-left-reset {
|
||||
width: 100%;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.bps-right-body .ptd-right-body {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
padding: 8px 12px 10px;
|
||||
font-family: var(--font, 'Noto Sans KR', sans-serif);
|
||||
}
|
||||
.ptd-page--loading {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-height: 320px;
|
||||
color: var(--text2);
|
||||
gap: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.ptd-topbar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
margin-bottom: 8px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.ptd-title { margin: 0; font-size: 18px; font-weight: 800; color: var(--text); }
|
||||
.ptd-topbar-actions { display: flex; gap: 8px; flex-shrink: 0; }
|
||||
.ptd-btn {
|
||||
padding: 6px 10px;
|
||||
border-radius: 8px;
|
||||
border: 1px solid var(--border);
|
||||
background: var(--bg2);
|
||||
color: var(--text);
|
||||
font-size: 11px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.ptd-btn:hover { background: var(--bg3); }
|
||||
.ptd-btn--danger { border-color: rgba(239,68,68,0.4); color: #ef4444; }
|
||||
|
||||
.ptd-banner {
|
||||
padding: 8px 10px;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 8px;
|
||||
font-size: 11px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.ptd-banner--warn {
|
||||
background: rgba(251,191,36,0.1);
|
||||
border: 1px solid rgba(251,191,36,0.3);
|
||||
color: #fbbf24;
|
||||
.bps-right-body .ptd-right-body > * {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.ptd-metrics {
|
||||
margin-bottom: 8px;
|
||||
flex-shrink: 0;
|
||||
.bps-right-body .ptd-right-body > .ptd-split-panel {
|
||||
gap: 8px;
|
||||
}
|
||||
.ptd-metrics-grid {
|
||||
|
||||
.bps-footer .ptd-metrics-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.bps-page .ptd-metric,
|
||||
.se-page .ptd-metric {
|
||||
background: color-mix(in srgb, var(--se-bg-elevated) 88%, transparent);
|
||||
border-color: var(--se-border);
|
||||
}
|
||||
|
||||
.bps-page .ptd-card,
|
||||
.se-page .ptd-card {
|
||||
background: color-mix(in srgb, var(--se-bg-elevated) 88%, transparent);
|
||||
border-color: var(--se-border);
|
||||
}
|
||||
|
||||
.bps-page .up,
|
||||
.se-page .up { color: var(--se-up, #22c55e); }
|
||||
.bps-page .down,
|
||||
.se-page .down { color: var(--se-down, #ef4444); }
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
.bps-footer .ptd-metrics-grid { grid-template-columns: repeat(2, 1fr); }
|
||||
}
|
||||
|
||||
/* legacy layout removed — shell handles page structure */
|
||||
.ptd-metric {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
@@ -78,28 +307,6 @@
|
||||
.ptd-metric--up .ptd-metric-value { color: #22c55e; }
|
||||
.ptd-metric--down .ptd-metric-value { color: #ef4444; }
|
||||
|
||||
.ptd-main {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(220px, 260px) minmax(0, 1fr) minmax(250px, 280px);
|
||||
gap: 10px;
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
.ptd-col {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
.ptd-col--left {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.ptd-col--center { min-width: 0; }
|
||||
.ptd-col--right { min-width: 0; }
|
||||
|
||||
.ptd-card {
|
||||
background: var(--bg2);
|
||||
border: 1px solid var(--border);
|
||||
@@ -300,23 +507,30 @@
|
||||
.ptd-right-body {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
padding: 8px;
|
||||
gap: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.ptd-right-body > .ptd-ob--fill {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
margin: -8px;
|
||||
margin: 0;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.ptd-order-card { flex-shrink: 0; border: none; background: transparent; }
|
||||
.ptd-order-card .ptd-order-stack { padding: 0 4px 4px; }
|
||||
.ptd-order-card {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow-y: auto;
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
.ptd-order-card .ptd-order-stack { padding: 0 4px 4px; flex: 1; }
|
||||
.ptd-order-card .top-panel { padding: 4px 2px; background: transparent; }
|
||||
.ptd-order-card .top-field { margin-bottom: 4px; }
|
||||
.ptd-order-card .top-submit--buy { background: #22c55e !important; border-color: #22c55e !important; }
|
||||
@@ -397,6 +611,23 @@
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
.ptd-history-card--tab {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.ptd-history-card--tab .ptd-table {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
display: block;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.bps-right-body > .ptd-right-body > .ptd-history-card--tab {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.ptd-history-card .ptd-table-wrap,
|
||||
.ptd-history-card .ptd-table {
|
||||
flex: 1;
|
||||
@@ -425,16 +656,3 @@
|
||||
}
|
||||
.ptd-status--done { background: rgba(34,197,94,0.15); color: #22c55e; }
|
||||
|
||||
.ptd-page .up { color: #22c55e; }
|
||||
.ptd-page .down { color: #ef4444; }
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
.ptd-page { overflow-y: auto; }
|
||||
.ptd-main {
|
||||
grid-template-columns: 1fr;
|
||||
overflow: visible;
|
||||
min-height: auto;
|
||||
}
|
||||
.ptd-metrics-grid { grid-template-columns: repeat(2, 1fr); }
|
||||
.ptd-col--left { overflow: visible; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user