전략편집기 횡보구간 컨트롤 추가

This commit is contained in:
Macbook
2026-06-12 09:08:44 +09:00
parent 74b0ea4ab6
commit d741d3fec6
8 changed files with 1601 additions and 19 deletions
+314 -8
View File
@@ -1564,9 +1564,61 @@
.se-formula-ind--ind { color: var(--se-palette-ind-accent); }
/* ── Right palette ── */
.se-side-wrap {
display: flex;
flex-direction: row;
align-items: stretch;
align-self: stretch;
flex-shrink: 0;
min-height: 0;
height: 100%;
position: relative;
z-index: 8;
}
.se-side-wrap--right {
flex-direction: row;
min-width: 16px;
}
.se-panel-handle {
align-self: center;
flex-shrink: 0;
position: relative;
z-index: 20;
width: 16px;
height: 56px;
border: 1px solid var(--se-border);
color: var(--se-text-muted);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.15s, color 0.15s, box-shadow 0.15s, border-color 0.15s;
padding: 0;
background: transparent;
}
.se-panel-handle--right {
margin-right: -1px;
background: var(--se-palette-bg);
border-right: none;
border-radius: 8px 0 0 8px;
box-shadow: -2px 0 10px rgba(0, 0, 0, 0.3);
}
.se-panel-handle--right:hover {
color: var(--se-text);
background: color-mix(in srgb, var(--se-bg-muted) 70%, var(--se-palette-bg));
box-shadow: -3px 0 14px rgba(0, 0, 0, 0.45);
}
.se-side-wrap--right.se-side-wrap--open .se-panel-handle--right,
.se-panel-handle--right.se-panel-handle--open {
border-color: color-mix(in srgb, var(--se-accent) 35%, var(--se-border));
}
.se-right {
flex: 0 0 380px;
width: 380px;
display: flex;
flex-direction: column;
min-height: 0;
@@ -1575,6 +1627,39 @@
overflow: hidden;
}
.se-right--collapsible {
width: 0;
flex: 0 0 0;
min-width: 0;
max-width: 0;
transition:
width 0.22s cubic-bezier(0.4, 0, 0.2, 1),
flex-basis 0.22s cubic-bezier(0.4, 0, 0.2, 1),
max-width 0.22s cubic-bezier(0.4, 0, 0.2, 1);
}
.se-right--collapsible.se-right--collapsible--open,
.se-side-wrap--right.se-side-wrap--open .se-right--collapsible {
width: var(--se-right-width, 380px);
flex: 0 0 var(--se-right-width, 380px);
max-width: var(--se-right-width, 380px);
min-width: var(--se-right-width, 380px);
}
.se-side-wrap--right .se-right--collapsible .se-palette-panel {
flex: 1;
min-height: 0;
width: 100%;
min-width: 0;
}
.se-side-wrap--right.se-side-wrap--open .se-right-tabs,
.se-side-wrap--right.se-side-wrap--open .se-right-body,
.se-right--collapsible--open .se-right-tabs,
.se-right--collapsible--open .se-right-body {
min-width: var(--se-right-width, 380px);
}
.se-palette-panel {
flex: 1;
min-height: 0;
@@ -1649,14 +1734,234 @@
color: var(--se-tab-active);
box-shadow: inset 0 -2px 0 var(--se-tab-active);
}
.se-palette-subtab:first-child.se-palette-subtab--on {
.se-palette-subtab--aux.se-palette-subtab--on {
color: var(--se-palette-section-ind, #2dd4bf);
box-shadow: inset 0 -2px 0 var(--se-palette-section-ind, #2dd4bf);
}
.se-palette-subtab:last-child.se-palette-subtab--on {
.se-palette-subtab--composite.se-palette-subtab--on {
color: var(--se-palette-section-composite, #c084fc);
box-shadow: inset 0 -2px 0 var(--se-palette-section-composite, #c084fc);
}
.se-palette-subtab--range.se-palette-subtab--on {
color: var(--se-palette-section-range, #f59e0b);
box-shadow: inset 0 -2px 0 var(--se-palette-section-range, #f59e0b);
}
.se-palette-section--range .se-palette-toolbar-title {
color: var(--se-palette-section-range, #f59e0b);
}
.se-palette-card--range {
border-color: color-mix(in srgb, var(--se-palette-section-range, #f59e0b) 35%, var(--se-border));
}
.se-palette-card--range:hover {
border-color: color-mix(in srgb, var(--se-palette-section-range, #f59e0b) 55%, var(--se-border));
}
.se-palette-card-icon--range {
background: color-mix(in srgb, var(--se-palette-section-range, #f59e0b) 18%, transparent);
color: var(--se-palette-section-range, #f59e0b);
}
.se-range-count {
font-size: 0.65rem;
color: var(--se-text-dim);
font-weight: 600;
}
.se-range-mode-tabs {
display: flex;
gap: 4px;
margin: 4px 10px 8px;
flex-shrink: 0;
}
.se-range-mode-tab {
flex: 1;
padding: 6px 4px;
border-radius: 6px;
border: 1px solid var(--se-border);
background: var(--se-btn-bg);
color: var(--se-text-muted);
font-size: 0.68rem;
font-weight: 600;
cursor: pointer;
}
.se-range-mode-tab--on {
border-color: color-mix(in srgb, var(--se-palette-section-range, #f59e0b) 50%, transparent);
color: var(--se-palette-section-range, #f59e0b);
background: color-mix(in srgb, var(--se-palette-section-range, #f59e0b) 10%, var(--se-btn-bg));
}
.se-range-mode-tab--include.se-range-mode-tab--on {
border-color: color-mix(in srgb, #38bdf8 50%, transparent);
color: #38bdf8;
background: color-mix(in srgb, #38bdf8 10%, var(--se-btn-bg));
}
.se-range-mode-tab--exclude.se-range-mode-tab--on {
border-color: color-mix(in srgb, #f87171 50%, transparent);
color: #f87171;
background: color-mix(in srgb, #f87171 10%, var(--se-btn-bg));
}
.se-range-hint {
margin: 4px 10px 8px;
font-size: 0.65rem;
line-height: 1.45;
color: var(--se-text-dim);
}
.se-range-selected-bar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
margin: 0 10px 8px;
padding: 8px 10px;
border-radius: 8px;
border: 1px solid color-mix(in srgb, var(--se-palette-section-range, #f59e0b) 35%, var(--se-border));
background: color-mix(in srgb, var(--se-palette-section-range, #f59e0b) 6%, var(--se-panel-card-bg));
}
.se-range-selected-label {
font-size: 0.72rem;
font-weight: 600;
color: var(--se-text);
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.se-range-category {
margin: 0 10px 12px;
}
.se-range-category-title {
margin: 0 0 6px;
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--se-text-dim);
}
.se-range-badge {
flex-shrink: 0;
padding: 2px 6px;
border-radius: 4px;
font-size: 0.58rem;
font-weight: 700;
letter-spacing: 0.02em;
}
.se-range-badge--include {
background: color-mix(in srgb, #38bdf8 18%, transparent);
color: #38bdf8;
}
.se-range-badge--exclude {
background: color-mix(in srgb, #f87171 18%, transparent);
color: #f87171;
}
.se-range-chip {
display: flex;
flex-direction: column;
gap: 6px;
padding: 8px 8px 9px;
min-height: 56px;
}
.se-range-chip-icons {
display: flex;
align-items: center;
justify-content: space-between;
gap: 6px;
}
.se-range-chip-icon {
display: flex;
align-items: center;
justify-content: center;
width: 22px;
height: 22px;
border-radius: 5px;
font-size: 0.72rem;
line-height: 1;
flex-shrink: 0;
}
.se-range-chip-icon--left {
background: color-mix(in srgb, var(--se-palette-section-range, #f59e0b) 18%, transparent);
color: var(--se-palette-section-range, #f59e0b);
}
.se-range-chip-icon--right.se-range-chip-icon--include {
background: color-mix(in srgb, #38bdf8 18%, transparent);
color: #38bdf8;
}
.se-range-chip-icon--right.se-range-chip-icon--exclude {
background: color-mix(in srgb, #f87171 18%, transparent);
color: #f87171;
}
.se-range-chip-name {
font-size: 0.68rem;
font-weight: 700;
line-height: 1.25;
color: var(--se-text);
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
word-break: keep-all;
}
.se-range-hint-tooltip {
position: fixed;
z-index: 10050;
max-width: min(280px, calc(100vw - 24px));
padding: 9px 11px;
border-radius: 8px;
/* body 포털 — :root(--text/--bg2) 사용 (.se-page 토큰 미상속) */
color: var(--text, #c0caf5);
background: color-mix(in srgb, var(--bg2, #24283b) 94%, var(--bg, #1a1b26));
border: 1px solid color-mix(in srgb, #f59e0b 52%, var(--border, rgba(122, 162, 247, 0.22)));
box-shadow:
var(--popup-shadow, 0 8px 32px rgba(0, 0, 0, 0.55)),
0 0 0 1px color-mix(in srgb, #f59e0b 12%, transparent),
inset 0 1px 0 color-mix(in srgb, var(--text, #c0caf5) 8%, transparent);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
pointer-events: none;
transform: translate(-50%, calc(-100% - 10px));
}
.se-range-hint-tooltip::after {
content: '';
position: absolute;
left: 50%;
bottom: -5px;
width: 10px;
height: 10px;
background: color-mix(in srgb, var(--bg2, #24283b) 94%, var(--bg, #1a1b26));
border-right: 1px solid color-mix(in srgb, #f59e0b 52%, var(--border, rgba(122, 162, 247, 0.22)));
border-bottom: 1px solid color-mix(in srgb, #f59e0b 52%, var(--border, rgba(122, 162, 247, 0.22)));
transform: translateX(-50%) rotate(45deg);
}
.se-range-hint-tooltip-title {
font-size: 0.74rem;
font-weight: 700;
color: color-mix(in srgb, #f59e0b 72%, var(--text, #c0caf5));
margin-bottom: 4px;
line-height: 1.3;
}
.se-range-hint-tooltip-desc {
font-size: 0.68rem;
line-height: 1.5;
color: var(--text2, #9aa5ce);
}
.se-palette-grid--2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.se-palette-toolbar {
display: flex;
@@ -1675,6 +1980,11 @@
}
.se-palette-section--aux .se-palette-toolbar-title { color: var(--se-palette-section-ind); }
.se-palette-section--composite .se-palette-toolbar-title { color: var(--se-palette-section-composite, #c084fc); }
.se-palette-section--range .se-palette-toolbar-title { color: var(--se-palette-section-range, #f59e0b); }
.se-range-grid {
margin: 0 10px 10px;
}
.se-palette-toolbar-actions {
display: flex;
@@ -2098,7 +2408,3 @@
color: var(--se-text-muted);
line-height: 1.5;
}
@media (max-width: 1100px) {
.se-right { flex: 0 0 300px; width: 300px; }
}