전략편집기 팝업 기능 적용

This commit is contained in:
Macbook
2026-06-16 10:48:13 +09:00
parent 484f477d6c
commit d5e864b230
7 changed files with 644 additions and 84 deletions
+15
View File
@@ -12,6 +12,21 @@
position: relative;
}
.se-page--modal {
height: 100%;
min-height: 0;
}
.se-btn--modal-close {
font-size: 1.35rem;
line-height: 1;
color: var(--se-text-muted);
}
.se-btn--modal-close:hover {
color: var(--se-text);
}
.se-save-toast {
position: absolute;
top: 56px;
+249
View File
@@ -80,6 +80,69 @@
height: 100%;
}
.seval-left-tabs-row {
display: flex;
align-items: flex-end;
gap: 6px;
flex-shrink: 0;
}
.seval-left-tabs-row .btd-exec-tabs {
flex: 1;
min-width: 0;
}
.seval-strategy-add-btn {
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
margin-bottom: 6px;
padding: 0;
border: 1px solid color-mix(in srgb, var(--btd-gold, var(--se-gold)) 40%, var(--se-border));
border-radius: 7px;
background: color-mix(in srgb, var(--btd-gold, var(--se-gold)) 12%, var(--se-input-bg));
color: var(--btd-gold, var(--se-gold));
cursor: pointer;
}
.seval-strategy-add-btn:hover {
background: color-mix(in srgb, var(--btd-gold, var(--se-gold)) 22%, var(--se-input-bg));
}
.seval-editor-modal-overlay {
position: fixed;
inset: 0;
z-index: 12000;
display: flex;
align-items: stretch;
justify-content: center;
background: rgba(0, 0, 0, 0.72);
backdrop-filter: blur(4px);
}
.seval-editor-modal-shell {
flex: 1;
min-width: 0;
min-height: 0;
margin: 8px;
border-radius: 12px;
overflow: hidden;
border: 1px solid color-mix(in srgb, var(--se-gold) 35%, transparent);
box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);
}
.seval-editor-modal-loading {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
color: var(--se-text-muted);
font-size: 0.85rem;
}
.seval-main-content {
flex: 1;
min-height: 0;
@@ -969,6 +1032,14 @@
overflow: hidden;
}
.seval-settings-top {
flex: 1 1 52%;
min-height: 120px;
display: flex;
flex-direction: column;
overflow: hidden;
}
.seval-settings-head {
flex-shrink: 0;
padding: 4px 2px 8px;
@@ -1108,6 +1179,184 @@
cursor: not-allowed;
}
/* ── 전략설정 탭 하단 — 조건식 · 상세 설명 ─────────────────────────────── */
.seval-detail {
flex: 1 1 48%;
min-height: 160px;
max-height: 52%;
display: flex;
flex-direction: column;
overflow: hidden;
border-top: 1px solid var(--btd-divider, var(--se-border));
background: color-mix(in srgb, var(--btd-surface, var(--se-palette-card-bg)) 88%, transparent);
}
.seval-detail-head {
flex-shrink: 0;
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 8px;
padding: 8px 2px 6px;
border-bottom: 1px solid var(--btd-divider, var(--se-border));
}
.seval-detail-title {
margin: 0;
font-size: 0.72rem;
font-weight: 700;
color: var(--btd-gold, var(--se-gold));
letter-spacing: 0.02em;
}
.seval-detail-strategy {
font-size: 0.62rem;
color: var(--se-text-muted);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.seval-detail-scroll {
flex: 1;
min-height: 0;
overflow-y: auto;
overscroll-behavior: contain;
padding: 8px 2px 10px;
}
.seval-detail-section + .seval-detail-section {
margin-top: 12px;
padding-top: 10px;
border-top: 1px dashed color-mix(in srgb, var(--btd-divider, var(--se-border)) 70%, transparent);
}
.seval-detail-section-title {
margin: 0 0 8px;
font-size: 0.68rem;
font-weight: 700;
color: var(--se-text);
}
.seval-detail-empty {
margin: 0;
font-size: 0.66rem;
color: var(--se-text-muted);
line-height: 1.4;
}
.seval-detail-formulas {
display: flex;
flex-direction: column;
gap: 8px;
}
.seval-detail-formula {
border-radius: 8px;
border: 1px solid var(--btd-divider, var(--se-border));
background: var(--btd-surface, var(--se-input-bg));
overflow: hidden;
}
.seval-detail-formula--buy {
border-color: color-mix(in srgb, #4caf50 28%, var(--se-border));
}
.seval-detail-formula--sell {
border-color: color-mix(in srgb, #ef5350 28%, var(--se-border));
}
.seval-detail-formula-head {
padding: 6px 8px;
border-bottom: 1px solid var(--btd-divider, var(--se-border));
}
.seval-detail-formula-badge {
font-size: 0.64rem;
font-weight: 700;
}
.seval-detail-formula-badge--buy {
color: #66bb6a;
}
.seval-detail-formula-badge--sell {
color: #ef5350;
}
.seval-detail-formula-expr {
margin: 0;
padding: 8px;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
font-size: 0.62rem;
line-height: 1.45;
color: var(--se-text);
white-space: pre-wrap;
word-break: break-word;
background: rgba(0, 0, 0, 0.12);
}
.seval-detail-formula-text {
margin: 0;
padding: 6px 8px 8px;
font-size: 0.64rem;
line-height: 1.45;
color: var(--se-text-muted);
}
.seval-detail-narrative {
font-size: 0.64rem;
line-height: 1.5;
color: var(--se-text);
}
.seval-detail-intro {
margin: 0 0 8px;
color: var(--se-text-muted);
}
.seval-detail-block + .seval-detail-block {
margin-top: 10px;
}
.seval-detail-block-title {
margin: 0 0 6px;
font-size: 0.66rem;
font-weight: 700;
color: var(--se-text);
}
.seval-detail-para {
margin: 0 0 6px;
}
.seval-detail-list {
margin: 4px 0 0;
padding-left: 0;
list-style: none;
}
.seval-detail-list-item {
margin: 0 0 4px;
padding-left: 0;
white-space: pre-wrap;
word-break: break-word;
color: var(--se-text-muted);
}
.seval-detail-footnotes {
margin-top: 10px;
padding-top: 8px;
border-top: 1px solid var(--btd-divider, var(--se-border));
}
.seval-detail-footnote {
margin: 0 0 4px;
font-size: 0.6rem;
color: var(--se-text-muted);
line-height: 1.4;
}
/* ── 조건 분석보기 버튼 · 팝업 ─────────────────────────────────────────── */
.seval-analyze-btn {
flex-shrink: 0;