/* AlphaX Console MVP — styles. MOCK/DRY(안전) 는 LIVE(위험)와 시각적으로 강하게 구분한다. */
:root {
  /* 레거시 변수 → AlphaX 다크 톤(--v3-*) 단일 소스로 별칭. 라이트/블루 값을 제거해 새로고침·async 렌더 시 톤 흔들림 차단. */
  --bg: var(--v3-bg0, #16191b); --panel: var(--v3-bg1, #1e2224); --panel2: var(--v3-bg2, #252a2c);
  --text: var(--v3-t0, #e2e6e4); --muted: var(--v3-t1, #98a29d);
  --ok: #6b9d84; --warn: #98a29d; --danger: var(--v3-neg, #c47c80); --border: var(--v3-line, #2e3437);
  --mock: #626b67; --dry: var(--v3-brand, #5b8a72); --live: var(--v3-neg, #c47c80);
  /* 이전엔 '미정의'라 흰(#e6e9ef)/파란(#1a2030,#8a93a6) fallback 으로 튀던 변수들 — AlphaX 톤으로 확정. */
  --line: var(--v3-line, #2e3437); --bg-0: var(--v3-bg0, #16191b); --bg-1: var(--v3-bg1, #1e2224); --bg-2: var(--v3-bg2, #252a2c);
  --text-0: var(--v3-t0, #e2e6e4); --text-1: var(--v3-t1, #98a29d); --text-2: var(--v3-t1, #98a29d);
  --accent: var(--v3-brand, #5b8a72); --brand: var(--v3-brand, #5b8a72);
  /* 통합 톤 변수(--ax-*): 동일 카드 컴포넌트가 같은 배경/테두리 변수를 쓰도록 한 곳에서 관리. */
  --ax-bg: var(--v3-bg0, #16191b); --ax-card-bg: var(--v3-bg1, #1e2224);
  --ax-card-border: var(--v3-line, #2e3437); --ax-card-border-soft: var(--v3-line-soft, #252a2c);
  --ax-card-shadow: 0 1px 0 rgba(0,0,0,.15); --ax-focus-ring: rgba(91,138,114,.5);
  --ax-muted: var(--v3-t1, #98a29d); --ax-brand: var(--v3-brand, #5b8a72); --ax-warning: var(--v3-neg, #c47c80);
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--text);
  font: 14px/1.5 -apple-system, "Apple SD Gothic Neo", "Noto Sans KR", Segoe UI, sans-serif; }

.app-header { display: flex; justify-content: space-between; align-items: center;
  padding: 10px 16px; border-bottom: 1px solid var(--border); background: var(--panel); }
.app-title { font-weight: 700; font-size: 16px; }
.app-sub { display: block; font-size: 11px; color: var(--muted); font-weight: 400; }
.app-main { padding: 14px 16px 40px; max-width: 1100px; margin: 0 auto; }
.app-footer { padding: 10px 16px; font-size: 11px; color: var(--muted);
  border-top: 1px solid var(--border); background: var(--panel); }

/* ── mode banner: 색/문구로 강제 구분 ── */
.mode-banner { display: flex; gap: 12px; align-items: center; padding: 10px 14px; border-radius: 10px;
  margin-bottom: 8px; font-weight: 700; border: 2px solid transparent; }
.mode-badge { color: #fff; padding: 4px 10px; border-radius: 6px; font-size: 13px; letter-spacing: .5px; }
.mode-ko { color: var(--muted); font-weight: 500; }
.mode-money { margin-left: auto; padding: 4px 10px; border-radius: 6px; font-weight: 800; }
.money-safe { background: #14351f; color: #86efac; }               /* 실제 돈 안 움직임 = 안전 초록 */
.money-moves { background: #3b0d0d; color: #fca5a5; }              /* 실제 돈 움직임 = 위험 빨강 */
.mode-mock { background: #14171e; border-color: var(--mock); }
.mode-dry  { background: var(--v3-bg2); border-color: var(--dry); }
.mode-live { background: #2a0b0b; border-color: var(--live); animation: pulseLive 1.4s infinite; }
.mode-unknown { background: #241a05; border-color: var(--warn); }
@keyframes pulseLive { 0%,100% { box-shadow: 0 0 0 0 rgba(220,38,38,.6);} 50% { box-shadow: 0 0 0 6px rgba(220,38,38,0);} }

.warning-bar { padding: 8px 14px; border-radius: 8px; margin-bottom: 12px; font-weight: 600; font-size: 13px; }
.warning-bar.mode-mock { background: #1a1d24; color: #cbd5e1; }
.warning-bar.mode-dry  { background: #0e1830; color: #bfdbfe; }
.warning-bar.mode-live { background: #3b0d0d; color: #fecaca; border: 1px solid var(--live); }
.warning-bar.mode-unknown { background: #241a05; color: #fde68a; }

/* ── cards / pills ── */
.card { background: var(--panel); border: 1px solid var(--border); border-radius: 10px;
  padding: 12px 14px; margin-bottom: 12px; }
.card-title { margin: 0 0 8px; font-size: 13px; color: var(--muted); text-transform: uppercase; letter-spacing: .5px; }
.card-body { display: flex; flex-wrap: wrap; gap: 8px; }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 720px) { .grid2 { grid-template-columns: 1fr; } }

.pill { display: inline-flex; gap: 6px; align-items: center; background: var(--panel2);
  border: 1px solid var(--border); border-radius: 999px; padding: 4px 10px; font-size: 12px; }
.pill-k { color: var(--muted); }
.pill-v { font-weight: 700; }
.pill-ok .pill-v { color: #86efac; }
.pill-warn .pill-v { color: #fbbf24; }
.pill-danger { border-color: var(--danger); }
.pill-danger .pill-v { color: #fca5a5; }
.pill-neutral .pill-v { color: var(--text); }

.muted { color: var(--muted); }

/* ── alerts / timeline ── */
.alerts { list-style: none; padding: 0; margin: 0; width: 100%; }
.alert { padding: 6px 8px; border-radius: 6px; margin-bottom: 4px; background: var(--panel2); }
.alert .sev { font-weight: 800; margin-right: 6px; }
.alert-warning .sev { color: #fbbf24; }
.alert-error .sev, .alert-critical .sev { color: #fca5a5; }
.alert-info .sev { color: #93c5fd; }

.timeline { width: 100%; border-collapse: collapse; font-size: 12px; }
.timeline th, .timeline td { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--border); }
.timeline th { color: var(--muted); font-weight: 600; }
.ev-critical .ev-sev, .ev-error .ev-sev { color: #fca5a5; font-weight: 800; }
.ev-warning .ev-sev { color: #fbbf24; font-weight: 700; }
.ev-act { color: #fbbf24; }

/* ── readiness ── */
.readiness-summary { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; width: 100%; }
.checklist { list-style: none; padding: 0; margin: 0; width: 100%;
  display: grid; grid-template-columns: 1fr 1fr; gap: 4px; }
@media (max-width: 720px) { .checklist { grid-template-columns: 1fr; } }
.chk { display: flex; gap: 8px; align-items: center; padding: 4px 6px; border-radius: 6px; background: var(--panel2); }
.chk-box { font-weight: 800; width: 16px; text-align: center; }
.chk-ok .chk-box { color: #86efac; }
.chk-no .chk-box { color: #fca5a5; }
.chk-key { color: var(--muted); font-size: 11px; margin-left: auto; }
.blockers { width: 100%; margin-top: 8px; font-size: 12px; color: #fca5a5; }

/* ── role switcher ── */
.role-switcher { text-align: right; }
.role-note { font-size: 11px; color: #fbbf24; margin-bottom: 4px; }
.role-opt { background: var(--panel2); color: var(--text); border: 1px solid var(--border);
  border-radius: 6px; padding: 4px 8px; margin-left: 4px; cursor: pointer; font-size: 12px; }
.role-opt.active { border-color: var(--dry); color: #bfdbfe; }
.role-desc { width: 100%; color: var(--muted); margin-bottom: 6px; }

/* ── disabled controls ── */
.controls { display: flex; flex-wrap: wrap; gap: 8px; width: 100%; }
/* aria-disabled 로만 비활성 표시(네이티브 disabled 아님) → 클릭 시 mock toast 만, 실제 동작 없음 */
.ctrl-btn { background: #23262e; color: var(--muted); border: 1px dashed var(--border);
  border-radius: 8px; padding: 8px 12px; font-size: 13px; cursor: not-allowed; opacity: .8; }
.ctrl-btn[aria-disabled="true"] { pointer-events: auto; }
.ctrl-why { font-size: 11px; color: var(--warn); }
.controls-note { width: 100%; margin-top: 6px; font-size: 11px; color: var(--muted); }

.tabs { display: flex; gap: 8px; margin: 4px 0 10px; }
.tab { font-size: 12px; color: var(--muted); border: 1px solid var(--border); border-radius: 6px; padding: 4px 10px; }

/* 구 하단 .toast 제거 — PC/모바일 공통 상단 .ax-toast 로 일원화(ALPHAX_TOAST_TOP_UNIFY_20260708) */

/* ════ friendly main screen (hand-drawn operator concept) ════ */
.m-header { display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  padding: 10px 16px; background: var(--panel); border-bottom: 1px solid var(--border); }
.m-brand { display: flex; align-items: center; gap: 8px; }
.m-logo { font-weight: 800; font-size: 18px; letter-spacing: .5px; }
.m-logo b { color: #7dd3fc; }
.m-badge { color: #fff; font-size: 11px; font-weight: 800; padding: 2px 8px; border-radius: 5px; }
.m-tabs { display: flex; gap: 4px; }
.m-tab { background: var(--panel2); color: var(--muted); border: 1px solid var(--border);
  border-radius: 8px 8px 0 0; padding: 6px 12px; font-size: 13px; cursor: pointer; }
.m-tab.active { color: var(--v3-brand-bright); border-color: var(--v3-brand-bright); background: var(--v3-tab-active-bg); }
.m-chips { display: flex; gap: 6px; flex-wrap: wrap; margin-left: auto; }
.m-chip { font-size: 11px; color: var(--muted); background: var(--panel2);
  border: 1px solid var(--border); border-radius: 999px; padding: 3px 9px; }
.m-chip-name { color: #7dd3fc; }
.m-chip-mode.mode-mock { color: #cbd5e1; } .m-chip-mode.mode-dry { color: #bfdbfe; }
.m-chip-mode.mode-live { color: #fecaca; border-color: var(--live); } .m-chip-mode.mode-unknown { color: #fde68a; }

.m-body { display: grid; grid-template-columns: 300px 1fr; gap: 14px; padding: 14px 16px 30px;
  max-width: 1200px; margin: 0 auto; }
@media (max-width: 820px) { .m-body { grid-template-columns: 1fr; } }
.m-left { display: flex; flex-direction: column; gap: 12px; }
.m-start { background: linear-gradient(180deg,#1e3a2b,#16241c); color: #86efac; border: 1px solid #2f6f4e;
  border-radius: 10px; padding: 14px; font-size: 15px; font-weight: 800; cursor: not-allowed; text-align: center; }
.m-start[aria-disabled="true"] { pointer-events: auto; opacity: .85; }
.m-start-why { display: block; font-size: 10.5px; color: var(--warn); font-weight: 500; margin-top: 4px; }
.m-card { background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 12px; }
.m-card-t { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .4px; margin-bottom: 8px; }
.m-judge { font-size: 13px; line-height: 1.5; color: var(--text); }
.m-kv { display: flex; justify-content: space-between; padding: 5px 0; border-bottom: 1px dashed var(--border); font-size: 13px; }
.m-kv:last-child { border-bottom: 0; }
.m-kv span { color: var(--muted); }
.m-kv b.pos { color: #86efac; } .m-kv b.neg { color: #fca5a5; }
.m-note { font-size: 11px; color: var(--muted); line-height: 1.5; } .m-note b { color: var(--text); }

.m-center { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.m-board { background: #0c0f14; border: 1px solid var(--border); border-radius: 10px; padding: 12px; }
.m-board-t { font-size: 13px; font-weight: 700; margin-bottom: 10px; }
.m-board-sub { font-size: 11px; color: var(--muted); font-weight: 400; }
.m-log-list { display: flex; flex-direction: column; gap: 3px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.m-log-row { display: grid; grid-template-columns: 152px 24px 54px 62px 1fr; gap: 8px; align-items: center;
  font-size: 12px; padding: 4px 6px; border-radius: 5px; background: #11151c; }
.m-log-ts { color: var(--muted); } .m-log-ic { text-align: center; }
.m-log-side { color: #7dd3fc; font-weight: 700; } .m-log-step { color: #fbbf24; }
.m-log-msg { color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.m-range { background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 12px; }
.m-range-t { font-size: 13px; font-weight: 700; margin-bottom: 10px; }
.m-range-inputs { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.m-range-inputs label { font-size: 12px; color: var(--muted); display: flex; gap: 6px; align-items: center; }
.m-date { background: var(--panel2); color: var(--text); border: 1px solid var(--border); border-radius: 6px; padding: 5px 8px; }
.m-range-result { display: flex; gap: 8px; flex-wrap: wrap; }
.m-range-note { font-size: 11px; color: var(--muted); margin-top: 8px; }
.m-foot { padding: 10px 16px; font-size: 11px; color: var(--muted); border-top: 1px solid var(--border); }

/* ════ P2: auth gate / popup / modals / control bar / config / snapshot ════ */
.lg-wrap { min-height: 80vh; display: flex; align-items: center; justify-content: center; padding: 20px; }
.lg-card { background: var(--panel); border: 1px solid var(--border); border-radius: 14px; padding: 22px;
  width: 340px; max-width: 92vw; display: flex; flex-direction: column; gap: 10px; }
.lg-title { font-size: 22px; font-weight: 800; text-align: center; } .lg-title b { color: #7dd3fc; }
.lg-mock { font-size: 11px; color: var(--warn); text-align: center; }
.lg-l { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--muted); }
.lg-in { background: var(--panel2); color: var(--text); border: 1px solid var(--border); border-radius: 7px; padding: 8px; }
.lg-captcha { border: 1px dashed var(--border); border-radius: 8px; padding: 10px; text-align: center; }
.lg-captcha-box { font-size: 20px; letter-spacing: 3px; color: var(--muted); }
.lg-captcha-note { font-size: 10.5px; color: var(--warn); margin: 6px 0; }
.lg-captcha-btn, .lg-btn { background: var(--panel2); color: var(--text); border: 1px solid var(--dry);
  border-radius: 8px; padding: 8px; cursor: pointer; }
.lg-btn { background: linear-gradient(180deg,#1e3a5f,#152436); font-weight: 700; color: #bfdbfe; }
.lg-error { color: #fca5a5; font-size: 12px; }
.lg-status { color: #86efac; font-size: 12px; min-height: 14px; }
.lg-hint { font-size: 11px; color: var(--muted); text-align: center; }

.dp-overlay, .md-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.6);
  display: flex; align-items: center; justify-content: center; padding: 16px; z-index: 50; }
.dp-card, .md-card { background: var(--panel); border: 1px solid var(--border); border-radius: 14px;
  padding: 18px; width: 420px; max-width: 94vw; display: flex; flex-direction: column; gap: 8px; }
.dp-head { display: flex; justify-content: space-between; align-items: center; }
.dp-title { font-weight: 800; font-size: 16px; }
.dp-mode { font-size: 11px; color: var(--warn); }
.dp-row { font-size: 13px; }
.dp-news { margin: 4px 0; padding-left: 18px; font-size: 12px; color: var(--muted); }
.dp-hide { font-size: 12px; display: flex; gap: 6px; align-items: center; }
.dp-close { margin-top: 6px; background: var(--dry); color: #fff; border: 0; border-radius: 8px; padding: 9px; cursor: pointer; font-weight: 700; }

.md-title { font-weight: 800; font-size: 16px; }
.md-warn { color: #fca5a5; font-weight: 700; font-size: 13px; }
.md-note { font-size: 12px; color: var(--muted); } .md-note b { color: var(--text); }
.md-safe { background: #14351f; color: #86efac; border-radius: 6px; padding: 6px 8px; font-weight: 800; font-size: 12px; }
.md-l { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--muted); }
.md-in { background: var(--panel2); color: var(--text); border: 1px solid var(--border); border-radius: 7px; padding: 8px; }
.md-hint { font-size: 11px; color: var(--warn); }
.md-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 6px; }
.md-cancel { background: var(--panel2); color: var(--muted); border: 1px solid var(--border); border-radius: 8px; padding: 8px 14px; cursor: pointer; }
.md-confirm { background: var(--dry); color: #fff; border: 0; border-radius: 8px; padding: 8px 14px; cursor: pointer; font-weight: 700; }
.md-danger { border-color: var(--live); }
.md-danger-btn { background: var(--live); }

.control-bar { display: flex; gap: 10px; align-items: center; padding: 10px 16px; background: var(--panel);
  border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.cb-start { background: linear-gradient(180deg,#1e3a2b,#16241c); color: #86efac; border: 1px solid #2f6f4e; border-radius: 9px; padding: 9px 16px; font-weight: 800; cursor: pointer; }
.cb-stop { background: linear-gradient(180deg,#3a2b1e,#241c16); color: #fbbf24; border: 1px solid #6f4e2f; border-radius: 9px; padding: 9px 16px; font-weight: 800; cursor: pointer; }
.cb-emg { background: #2a0b0b; color: #fca5a5; border: 1px solid var(--live); border-radius: 9px; padding: 9px 16px; font-weight: 800; cursor: pointer; }
.cb-note { font-size: 11px; color: var(--muted); margin-left: auto; }

.snap-banner { padding: 8px 16px; font-size: 12px; font-weight: 600; }
.snap-banner[data-state="fresh"] { background: #10261a; color: #86efac; }
.snap-banner[data-state="stale"] { background: #2a2410; color: #fbbf24; }
.snap-banner[data-state="expired"] { background: #2a0b0b; color: #fca5a5; }

/* PC 설정 패널: 넓은 화면에서 과도하게 벌어지지 않도록 max-width + 중앙 정렬(밀도↑). 모바일은 mobile.css 별도. */
.cf-card { background: var(--panel); border: 1px solid var(--border); border-radius: 10px; margin: 14px auto; padding: 16px 18px; max-width: 880px; width: calc(100% - 32px); box-sizing: border-box; }
.cf-title { font-weight: 700; margin-bottom: 10px; }
.cf-row { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px dashed var(--border); font-size: 13px; }
.cf-row span { color: var(--muted); }
.cf-notes { margin: 10px 0 0; padding-left: 18px; color: var(--warn); font-size: 12px; }
.cf-flags { font-size: 11px; color: var(--muted); margin-top: 8px; }
.m-range-summary { font-size: 12px; color: var(--text); margin-top: 8px; font-weight: 600; }

/* ════ P3: role-based read-only monitoring views ════ */
.mr-header { display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 10px 14px; background: var(--panel); border: 1px solid var(--border); border-radius: 10px; margin-bottom: 10px; }
.mr-brand { font-weight: 800; font-size: 16px; } .mr-brand b { color: #7dd3fc; }
.mr-badge { color: #fff; font-size: 11px; font-weight: 800; padding: 2px 8px; border-radius: 5px; }
.mr-role { font-size: 12px; color: #bfdbfe; }
.mr-money { padding: 2px 8px; border-radius: 5px; font-weight: 800; font-size: 11px; }
.mr-flags { margin-left: auto; font-size: 11px; color: var(--muted); }
.mr-rolenote { font-size: 12px; color: #bfdbfe; margin-bottom: 4px; }
.mr-readonly { font-size: 11px; color: var(--warn); margin-bottom: 10px; }
.ro-note { width: 100%; font-size: 11px; color: var(--muted); margin-top: 6px; }
.mr-switcher { text-align: right; }
.mr-switcher-note { font-size: 11px; color: #fbbf24; margin-bottom: 4px; }
.mr-role-opt { background: var(--panel2); color: var(--text); border: 1px solid var(--border);
  border-radius: 6px; padding: 4px 8px; margin-left: 4px; cursor: pointer; font-size: 12px; }
.mr-role-opt.active { border-color: var(--dry); color: #bfdbfe; }

/* ════ P4: approved AlphaX logo integration (colors/timing/geometry/glow unmodified from source) ════ */
/* landing .ax-stage component rules copied verbatim from mvp/assets/alphax-landing-logo.html (source file unmodified) */
.ax-stage { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.ax-halo { position: absolute; width: 460px; height: 460px; border-radius: 50%;
  background: radial-gradient(circle, rgba(0,210,255,0.18) 0%, rgba(0,229,199,0.08) 35%, transparent 70%);
  filter: blur(8px); animation: ax-halo 4s ease-in-out infinite; pointer-events: none; }
.ax-mark { position: relative; z-index: 2; overflow: visible; }
.ax-word { position: relative; z-index: 2; font-weight: 500; font-size: 52px; letter-spacing: 2px;
  color: #eaf2fb; margin-top: 6px; opacity: 0; animation: ax-fade 0.8s ease-out 1.2s forwards; }
.ax-word .x { color: #00d8e6; }
.ax-tag { position: relative; z-index: 2; font-family: "SF Mono","Menlo","Consolas",monospace; font-size: 13px;
  letter-spacing: 5px; color: #3d7a8a; margin-top: 10px; opacity: 0; animation: ax-fade 0.8s ease-out 1.7s forwards; }
@keyframes ax-halo { 0%,100% { transform: scale(0.92); opacity: 0.7; } 50% { transform: scale(1.08); opacity: 1; } }
@keyframes ax-fade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
/* ── P6 login redesign: dominant central logo hero + minimal login strip (no bulky boxed card) ── */
.lg-wrap { flex-direction: column; gap: 10px; min-height: 100vh; justify-content: center; }
/* larger, dominant, centered landing logo (wrapper sizing only — logo internals unchanged) */
.lg-hero { position: relative; display: flex; align-items: center; justify-content: center; }
.lg-hero-lg { height: 340px; width: 100%; max-width: 560px; overflow: hidden; transform: scale(1.02); margin-bottom: 4px; }
@media (max-width: 560px) { .lg-hero-lg { height: 250px; transform: scale(0.8); } }
/* minimal login strip below the logo — no border box */
.lg-strip { width: 100%; max-width: 460px; display: flex; flex-direction: column; gap: 10px; align-items: center; padding: 0 16px; }
.lg-row { display: flex; gap: 8px; width: 100%; flex-wrap: wrap; justify-content: center; }
.lg-row .lg-in { flex: 1 1 150px; min-width: 130px; }
.lg-captcha-min { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: center; font-size: 11px; }
.lg-captcha-min .lg-captcha-box { font-size: 13px; letter-spacing: 2px; color: var(--muted); border: 1px dashed var(--border); border-radius: 6px; padding: 3px 8px; }
.lg-captcha-min .lg-captcha-note { color: var(--warn); font-size: 10.5px; }
.lg-foot { display: flex; flex-direction: column; align-items: center; gap: 2px; margin-top: 2px; }
.lg-foot .lg-hint { color: var(--muted); } .lg-foot .lg-mock { color: var(--warn); font-size: 10.5px; }
/* static header logo (references the unmodified copied SVG) */
.hdr-home { background: none; border: 0; padding: 0; margin: 0; cursor: pointer; display: inline-flex; align-items: center; }
.hdr-home:focus-visible { outline: 2px solid #6ea8fe; outline-offset: 2px; border-radius: 6px; }
.hdr-logo { display: inline-block; height: 34px; width: auto; vertical-align: middle; }
.mr-brand .hdr-logo { height: 29px; }

/* ── P6: config form (UI-only) ── */
.cf-sub { font-size: 11px; color: var(--muted); font-weight: 400; }
/* grouped, bilingual config form — 2열 그리드, 셀 폭 균일 · 입력창 크기/패딩/라운드 통일 */
.cf-form { margin: 10px 0; display: flex; flex-direction: column; gap: 12px; }
.cf-group { border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; background: #14171e; }
/* 섹션 제목: 필드 제목보다 상위 위계(더 굵고·구분선). */
.cf-group-t { font-size: 12px; font-weight: 800; color: #bfdbfe; margin: 0 0 10px; padding-bottom: 6px; letter-spacing: .4px; text-transform: uppercase; border-bottom: 1px solid var(--border); }
.cf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; align-items: start; }
@media (max-width: 680px) { .cf-grid { grid-template-columns: 1fr; } }
.cf-field { display: flex; flex-direction: column; gap: 4px; font-size: 12px; min-width: 0; }
.cf-field.cf-w-wide { grid-column: 1 / -1; }
.cf-label { color: var(--text); font-size: 12.5px; font-weight: 600; }
.cf-label b { font-weight: 700; }
.cf-ko { color: var(--muted); font-weight: 500; }
.cf-help { font-size: 10.5px; color: var(--muted); line-height: 1.4; }
.cf-inputwrap { display: block; }
/* 모든 입력창은 자기 그리드 셀을 꽉 채우도록 폭 통일(항목별 제멋대로 폭 제거). height/padding/radius 동일. */
.cf-input { width: 100%; box-sizing: border-box; background: var(--panel2); color: var(--text); border: 1px solid var(--border); border-radius: 7px; padding: 8px 10px; font-size: 13px; line-height: 1.3; }
.cf-input:focus { outline: none; border-color: var(--dry); }
.cf-w-compact .cf-input, .cf-w-medium .cf-input, .cf-w-wide .cf-input { width: 100%; }
.cf-textarea { min-height: 56px; resize: vertical; width: 100%; }
.cf-note-inline { font-size: 10.5px; color: var(--warn); }
.cf-actions { display: flex; gap: 8px; flex-wrap: wrap; margin: 6px 0; }
.cf-btn { border-radius: 8px; padding: 8px 16px; font-size: 13px; font-weight: 700; cursor: pointer; border: 1px solid var(--border); }
.cf-save { background: linear-gradient(180deg,#1e3a2b,#16241c); color: #86efac; border-color: #2f6f4e; }
.cf-apply { background: linear-gradient(180deg,#1e3a5f,#152436); color: #bfdbfe; border-color: var(--dry); }
.cf-reset { background: var(--panel2); color: var(--muted); }
.cf-draftstatus { font-size: 11.5px; color: #86efac; margin-bottom: 8px; }

/* ── P7: local read-only DRY snapshot bridge bar ── */
.bridge-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 8px 16px; font-size: 12px;
  border-bottom: 1px solid var(--border); background: #12151c; }
.bridge-bar[data-state="fresh"] { background: #10261a; }
.bridge-bar[data-state="stale"] { background: #2a2410; }
.bridge-bar[data-state="expired"] { background: #2a0b0b; }
.bridge-dot.on { color: #86efac; font-weight: 800; }
.bridge-dot.off { color: #fca5a5; font-weight: 800; }
.bridge-k { color: var(--muted); margin-left: 6px; }
.bridge-auth { color: var(--muted); font-size: 10.5px; }
.bridge-thr { color: var(--warn); font-size: 10.5px; margin-left: 4px; }
.bridge-refresh { margin-left: auto; background: var(--panel2); color: #bfdbfe; border: 1px solid var(--dry);
  border-radius: 7px; padding: 5px 12px; font-size: 12px; cursor: pointer; }

/* ═══════════════════════════════════════════════════════════════
   AlphaX Console v3 리디자인 (ALPHAX_CONSOLE_REDESIGN_V3_FULL)
   다크모드 · 녹색은 로고/활성탭 밑줄만 · 색 신호는 손익만 · 알록달록 태그 금지
   토큰 리맵 + 네온(파랑/노랑/형광) 중화. 상태로직/HTML/API 불변 — 표시만.
   ═══════════════════════════════════════════════════════════════ */
:root{
  --bg:#16191b; --panel:#1e2224; --panel2:#252a2c; --text:#e2e6e4; --muted:#98a29d;
  --border:#2e3437; --ok:#6b9d84; --warn:#98a29d; --danger:#c47c80;
  --mock:#626b67; --dry:#5b8a72; --live:#c47c80;
  /* AlphaX 원래 v3 톤(61f38cb 원안): 중립 다크 배경 + 세이지 그린은 브랜드 액센트에서만. 배경 녹색 틴트 금지(어제 정상 복원). */
  --v3-bg0:#16191b; --v3-bg1:#1e2224; --v3-bg2:#252a2c; --v3-hover:#2b3134;
  --v3-line:#2e3437; --v3-line-soft:#252a2c; --v3-brand:#5b8a72; --v3-brand-bright:#7fae94;
  --v3-pos:#6b9d84; --v3-neg:#c47c80; --v3-t0:#e2e6e4; --v3-t1:#98a29d; --v3-t2:#626b67;
  /* 큰 카드/패널 테두리(v3 세이지 다크 복원): 저대비 세이지 틴트 → 화면이 선으로 갇히지 않고 배경과 조화.
     쿨 블루그레이 #2e3437 이 카드마다 튀던 것을 저대비 세이지로 통일. 활성/hover 만 더 또렷하게. */
  --v3-card-border:rgba(127,174,148,.13); --v3-card-border-active:color-mix(in srgb,var(--v3-brand) 45%,transparent);
  --v3-tab-active-bg:rgba(91,138,114,.10);
  --v3-radius:10px; --v3-radius-sm:7px;
  --v3-mono:"SF Mono","JetBrains Mono","Roboto Mono",ui-monospace,monospace;
}
body{background:var(--v3-bg0);color:var(--v3-t0);}
/* 브랜드/로고 강조는 녹색으로 통일(기존 파랑 #7dd3fc → v3 brand) */
.m-logo b,.mr-brand b,.lg-title b,.m-chip-name,.m-log-side,.logo .x,.ax-word .x{color:var(--v3-brand-bright)!important;}
/* 탭: v3 톤(회색 → 활성 시 녹색 밑줄) */
.m-tab{background:transparent;border:0;border-radius:8px;color:var(--v3-t1);border-bottom:2px solid transparent;}
.m-tab.active{background:var(--v3-tab-active-bg);color:var(--v3-brand-bright);border-bottom:2px solid var(--v3-brand-bright);}
/* 카드/필드 v3 규격 */
.card,.m-card,.cf-card,.cf-group,.m-board,.m-range{background:var(--v3-bg1)!important;border:1px solid var(--v3-card-border)!important;border-radius:var(--v3-radius)!important;}
.m-board{background:var(--v3-bg0)!important;}
.pill,.m-chip{background:var(--v3-bg2)!important;border:1px solid var(--v3-line)!important;border-radius:var(--v3-radius-sm)!important;}
.cf-input,.lg-in,.md-in,.m-date,.rsi-f input{background:var(--v3-bg2)!important;border:1px solid var(--v3-line)!important;color:var(--v3-t0)!important;border-radius:var(--v3-radius-sm)!important;}
.cf-input:focus,.rsi-f input:focus{border-color:var(--v3-brand)!important;outline:none;}
/* 알록달록 중화: pill/alert/checklist/log — 손익(pos/neg)만 색, 나머지 회색 */
.pill-ok .pill-v,.chk-ok .chk-box,.m-kv b.pos,.bridge-dot.on,.lg-status,.summary-row .v.pos,.stat .v.pos,.event .sev.ok{color:var(--v3-pos)!important;background:transparent;}
.pill-danger .pill-v,.chk-no .chk-box,.m-kv b.neg,.bridge-dot.off,.lg-error,.summary-row .v.neg,.stat .v.neg,.event .sev.err,.alert-error .sev,.alert-critical .sev{color:var(--v3-neg)!important;}
.pill-warn .pill-v,.alert-warning .sev,.ev-warning .ev-sev,.m-log-step,.cf-notes,.controls-note,.warning-bar,.lg-mock,.dp-mode,.role-note,.cf-draftstatus{color:var(--v3-t1)!important;}
.pill-danger{border-color:var(--v3-line)!important;}
/* 버튼 v3(그라디언트/네온 → 차분한 bg-2 + brand 저장) */
.cf-btn,.lg-btn,.lg-captcha-btn,.dp-close,.md-confirm,.bridge-refresh,.cb-start,.cb-stop{background:var(--v3-bg2)!important;border:1px solid var(--v3-line)!important;color:var(--v3-t0)!important;border-radius:var(--v3-radius-sm)!important;}
.cf-save,.rsi-btn-save{background:var(--v3-brand)!important;border-color:var(--v3-brand)!important;color:#16191b!important;}
.cb-emg,.md-danger-btn{background:#2a1416!important;border:1px solid var(--v3-neg)!important;color:var(--v3-neg)!important;}
/* 배지: 모의운영 작게·회색 */
.m-badge,.mr-badge,.mode-badge{background:var(--v3-bg2)!important;color:var(--v3-t1)!important;border:1px solid var(--v3-line)!important;font-weight:600!important;border-radius:var(--v3-radius-sm)!important;padding:4px 9px!important;}
.mode-banner{background:var(--v3-bg1)!important;border:1px solid var(--v3-card-border)!important;}
.money-safe{background:transparent!important;color:var(--v3-pos)!important;}
.money-moves{background:transparent!important;color:var(--v3-neg)!important;}
/* config 그룹 제목: 파랑 → 회색 */
.cf-group-t,.mr-role,.mr-rolenote,.m-chip-mode{color:var(--v3-t1)!important;}
.m-tab.active{border-color:var(--v3-brand)!important;}
/* 최근이벤트/로그 톤 */
.m-log-row,.alert{background:var(--v3-bg2)!important;border-radius:var(--v3-radius-sm)!important;}
/* 최근 이벤트: 채운 박스 → 투명 flat 행(dot + hairline 구분선). 색면/라운드 박스 중화 규칙보다 우선. */
.event{background:transparent!important;border-radius:0!important;}
/* MOCK ROLE SWITCHER 화면 제거(v3 상용 · 실권한은 로그인 RBAC) — 로직/테스트 불변, 표시만 숨김 */
.role-switcher,.mr-switcher,.role-note,.mr-switcher-note{display:none!important;}
.role-opt,.mr-role-opt{display:none!important;}
/* v3 상단바/푸터 톤 */
.app-header,.m-header,.mr-header{background:var(--v3-bg1)!important;border-color:var(--v3-card-border)!important;}
.app-footer,.m-foot{background:var(--v3-bg1)!important;border-color:var(--v3-card-border)!important;color:var(--v3-t2)!important;}
/* v3 대시보드 컴포넌트 (ALPHAX_MAIN_RENDER_V3_REWRITE) — 시안 구조 */
.v3-body{max-width:1360px;margin:0 auto;padding:20px 22px 40px;display:grid;grid-template-columns:1.5fr 1fr;gap:16px;align-items:start;}
@media (max-width:820px){.v3-body{grid-template-columns:1fr;}}
.v3-card{background:var(--v3-bg1);border:1px solid var(--v3-card-border);border-radius:var(--v3-radius);padding:18px;}
.v3-card+.v3-card{margin-top:16px;}
.v3-card-h{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;font-weight:700;letter-spacing:.3px;color:var(--v3-t1);margin-bottom:15px;}
.v3-card-h .sub{font-size:11px;color:var(--v3-t2);font-weight:500;}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
@media (max-width:520px){.stat-grid{grid-template-columns:1fr 1fr;}}
.stat{background:var(--v3-bg2);border:1px solid var(--v3-line-soft);border-radius:var(--v3-radius-sm);padding:13px 14px;}
.stat .k{font-size:11.5px;color:var(--v3-t2);margin-bottom:6px;font-weight:600;}
.stat .v{font-size:19px;font-weight:800;letter-spacing:-.4px;color:var(--v3-t0);font-variant-numeric:tabular-nums;}
.stat .v.pos{color:var(--v3-pos);} .stat .v.neg{color:var(--v3-neg);} .stat .v.sm{font-size:14px;}
.position-line{margin-top:12px;display:flex;align-items:center;gap:12px;background:var(--v3-bg2);border:1px solid var(--v3-line-soft);border-radius:var(--v3-radius-sm);padding:12px 15px;}
.position-line .lb{font-size:11.5px;color:var(--v3-t2);font-weight:600;}
.position-line .empty{color:var(--v3-t1);font-size:13.5px;font-weight:600;}
.position-line .mk{margin-left:auto;color:var(--v3-t2);font-size:12px;font-family:var(--v3-mono);}
.summary-row{display:flex;align-items:center;justify-content:space-between;padding:12px 2px;border-bottom:1px dashed var(--v3-line);}
.summary-row:last-child{border-bottom:none;}
.summary-row .k{font-size:13px;color:var(--v3-t1);font-weight:500;}
.summary-row .v{font-size:15px;font-weight:800;color:var(--v3-t0);font-family:var(--v3-mono);}
.summary-row .v.pos{color:var(--v3-pos);} .summary-row .v.neg{color:var(--v3-neg);} .summary-row .v.dim{color:var(--v3-t1);}
.events{max-height:600px;overflow-y:auto;}
.event{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;padding:9px 4px;border-radius:0;margin-bottom:0;background:transparent;border-bottom:1px solid var(--v3-line-soft,#252a2c);}
.event:last-child{border-bottom:none;}
.event:hover{background:var(--v3-hover);}
.event .sev{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--v3-t2);}
.event .sev.err{background:var(--v3-neg);} .event .sev.ok{background:var(--v3-pos);} .event .sev.warn{background:#e0a43b;}
.event.bot-event{padding-left:4px;}
.event.bot-event .msg{font-weight:700;}
/* 시장국면(regime) 색상 — 한눈에 보이게 */
/* 색상은 텍스트 color 만 공통 적용 — 대시보드 "시장 국면"은 배경/테두리 없이 글자색만 바뀐다(text-only). */
.regime-neutral{color:var(--v3-t2);}
.regime-watch{color:#17b5c4;}
.regime-candidate{color:#ec8a1e;}
.regime-active{color:var(--v3-pos);}
.regime-blocked,.regime-danger{color:var(--v3-neg);}
.regime-managing{color:var(--v3-t1,#98a29d);}
.regime-stale{color:#e0a43b;}
/* 대시보드 stat 내부: text-only 보장(박스 느낌 제거) */
.stat .v.regime-text{font-weight:800;background:none;border:none;padding:0;box-shadow:none;border-radius:0;}
/* 배지 박스는 컨트롤바(.regime-badge)에서만 — 배경 틴트/테두리/pill 은 여기서만 적용 */
.regime-badge{display:inline-block;font-size:11px;font-weight:800;padding:3px 10px;border-radius:999px;margin-left:10px;
  border:1px solid transparent;letter-spacing:.2px;vertical-align:middle;}
.regime-badge.regime-neutral{background:color-mix(in srgb,var(--v3-t2) 16%,transparent);border-color:color-mix(in srgb,var(--v3-t2) 35%,transparent);}
.regime-badge.regime-watch{background:color-mix(in srgb,#17b5c4 15%,transparent);border-color:color-mix(in srgb,#17b5c4 45%,transparent);}
.regime-badge.regime-candidate{background:color-mix(in srgb,#ec8a1e 16%,transparent);border-color:color-mix(in srgb,#ec8a1e 50%,transparent);}
.regime-badge.regime-active{background:color-mix(in srgb,var(--v3-pos) 16%,transparent);border-color:color-mix(in srgb,var(--v3-pos) 50%,transparent);animation:v3pulse 1.6s infinite;}
.regime-badge.regime-blocked,.regime-badge.regime-danger{background:color-mix(in srgb,var(--v3-neg) 16%,transparent);border-color:color-mix(in srgb,var(--v3-neg) 50%,transparent);}
.regime-badge.regime-managing{background:color-mix(in srgb,var(--v3-t2) 16%,transparent);border-color:color-mix(in srgb,var(--v3-t2) 38%,transparent);color:var(--v3-t1,#98a29d);}
.regime-badge.regime-stale{background:color-mix(in srgb,#e0a43b 16%,transparent);border-color:color-mix(in srgb,#e0a43b 50%,transparent);}
.event .body{min-width:0;} .event .msg{font-size:13px;color:var(--v3-t0);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.event .meta{font-size:11px;color:var(--v3-t2);margin-top:2px;} .event .time{font-size:11px;color:var(--v3-t2);white-space:nowrap;font-family:var(--v3-mono);}
/* v3 상단바 */
.v3-top{display:flex;align-items:center;gap:18px;padding:0 22px;height:56px;background:var(--v3-bg1);border-bottom:1px solid var(--v3-line);position:sticky;top:0;z-index:50;}
.v3-logo{display:flex;align-items:center;gap:9px;font-weight:800;font-size:19px;letter-spacing:-.5px;background:none;border:0;cursor:pointer;color:var(--v3-t0);}
.v3-logo .mark{width:25px;height:25px;border-radius:7px;background:linear-gradient(135deg,var(--v3-brand-bright),var(--v3-brand));display:grid;place-items:center;font-size:13px;color:#16191b;font-weight:900;}
.v3-logo .x{color:var(--v3-brand-bright);}
.v3-tabs{display:flex;gap:2px;margin-left:6px;}
.v3-tab{padding:8px 14px;border-radius:8px;color:var(--v3-t1);font-weight:600;font-size:13.5px;cursor:pointer;background:transparent;border:0;border-bottom:2px solid transparent;}
.v3-tab:hover{color:var(--v3-t0);background:var(--v3-bg2);}
/* 활성탭: 세이지가 또렷하게 살아나야 함(§5). brand-bright 텍스트 + 저채도 세이지 배경 + 세이지 밑줄. sp-tab 활성과 톤 통일. */
.v3-tab.active{color:var(--v3-brand-bright);background:var(--v3-tab-active-bg);border-bottom:2px solid var(--v3-brand-bright);}
.v3-right{margin-left:auto;display:flex;align-items:center;gap:9px;}
.v3-badge{padding:5px 11px;border-radius:7px;font-size:12px;font-weight:600;border:1px solid var(--v3-line);color:var(--v3-t1);background:var(--v3-bg2);display:flex;align-items:center;gap:6px;}
.v3-badge .dot{width:6px;height:6px;border-radius:50%;background:var(--v3-t1);}
.v3-foot{margin-top:28px;padding-top:16px;border-top:1px solid var(--v3-line-soft);font-size:11.5px;color:var(--v3-t2);text-align:center;}
/* v4 로그인 (ALPHAX_LOGIN_TOGGLE_SAVEZONE_RBAC_V1) — 스우시 빛줄기·flash·X 맥동·shimmer·focus glow·hover shine */
.v4login-wrap{min-height:100vh;display:grid;place-items:center;overflow:hidden;position:relative;background:var(--v3-bg0);}
.v4-bgglow{position:fixed;top:-20%;left:50%;transform:translateX(-50%);width:900px;height:600px;z-index:0;pointer-events:none;background:radial-gradient(ellipse at center,rgba(91,138,114,.08),transparent 65%);animation:v4breathe 8s ease-in-out infinite;}
@keyframes v4breathe{0%,100%{opacity:.5}50%{opacity:.9}}
.v4login{position:relative;z-index:2;width:380px;padding:0 24px;text-align:center;}
.brand-zone{position:relative;margin-bottom:14px;height:70px;display:grid;place-items:center;}
.swoosh{position:absolute;inset:-40px -80px;z-index:1;pointer-events:none;overflow:visible;}
.swoosh path{fill:none;stroke:url(#beam);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:520;stroke-dashoffset:520;filter:drop-shadow(0 0 6px rgba(168,230,196,.8));animation:v4fly 1.3s cubic-bezier(.5,0,.2,1) .3s forwards;}
@keyframes v4fly{0%{stroke-dashoffset:520;opacity:0}15%{opacity:1}75%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:-40;opacity:0}}
.v4brand{font-size:52px;font-weight:900;letter-spacing:-2px;line-height:1;position:relative;display:inline-block;z-index:2;color:var(--v3-t0);opacity:.35;animation:v4wake 1.3s ease-out .3s forwards;}
@keyframes v4wake{0%{opacity:.35}55%{opacity:.35}68%{opacity:1;text-shadow:0 0 24px rgba(168,230,196,.9),0 0 44px rgba(127,174,148,.5)}100%{opacity:1;text-shadow:0 0 0 transparent}}
.v4brand .x{color:var(--v3-brand-bright);animation:v4charge 2.6s ease-in-out 1.6s infinite;}
@keyframes v4charge{0%,100%{color:var(--v3-brand-bright);text-shadow:0 0 8px rgba(127,174,148,.5),0 0 16px rgba(127,174,148,.25)}50%{color:#a8e6c4;text-shadow:0 0 14px rgba(168,230,196,.85),0 0 28px rgba(127,174,148,.5),0 0 40px rgba(127,174,148,.25)}}
.flash{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;z-index:3;pointer-events:none;background:#a8e6c4;opacity:0;animation:v4pop 1.3s ease-out .3s forwards;}
@keyframes v4pop{0%,60%{opacity:0;transform:translate(-50%,-50%) scale(.3)}70%{opacity:.95;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(28)}}
.v4brand::after{content:"AlphaX";position:absolute;left:0;top:0;background:linear-gradient(110deg,transparent 35%,#a8e6c4 49%,#eafff4 51%,#a8e6c4 53%,transparent 67%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;background-size:220% 100%;background-position:-120% 0;animation:v4shimmer 4.5s ease-in-out 2.2s infinite;pointer-events:none;}
@keyframes v4shimmer{0%{background-position:180% 0}35%,100%{background-position:-120% 0}}
.v4tag{font-size:12px;font-weight:600;letter-spacing:6px;color:var(--v3-t2);margin-bottom:42px;text-transform:uppercase;opacity:0;animation:v4fadein .8s ease-out 1.4s forwards;}
@keyframes v4fadein{to{opacity:1}}
.v4form{opacity:0;transform:translateY(14px);animation:v4rise .7s cubic-bezier(.2,.7,.2,1) 1.5s forwards;}
@keyframes v4rise{to{opacity:1;transform:translateY(0)}}
.v4field{margin-bottom:12px;text-align:left;}
.v4field input,.v4login .lg-in{width:100%;padding:14px 16px;border-radius:var(--v3-radius);background:var(--v3-bg1);border:1px solid var(--v3-line);color:var(--v3-t0);font-size:14.5px;transition:.18s;outline:none;}
.v4field input:focus,.v4login .lg-in:focus{border-color:var(--v3-brand);box-shadow:0 0 0 3px rgba(91,138,114,.14);background:var(--v3-bg2);}
.v4captcha{display:flex;gap:10px;margin:16px 0 20px;}
.v4captcha-box{flex:1;padding:12px;border-radius:var(--v3-radius);background:var(--v3-bg1);border:1px dashed var(--v3-line);color:var(--v3-t2);font-size:12.5px;display:flex;align-items:center;justify-content:center;gap:7px;}
.v4captcha-btn{padding:12px 18px;border-radius:var(--v3-radius);border:1px solid var(--v3-line)!important;background:var(--v3-bg2)!important;color:var(--v3-t1)!important;font-weight:600;font-size:13px;cursor:pointer;}
.v4captcha-btn:hover{border-color:var(--v3-brand)!important;color:var(--v3-brand-bright)!important;}
.v4loginbtn{width:100%;padding:15px;border-radius:var(--v3-radius)!important;border:none!important;cursor:pointer;background:linear-gradient(135deg,var(--v3-brand),var(--v3-brand-bright))!important;color:#0c1410!important;font-size:15px;font-weight:800;letter-spacing:.3px;transition:.18s;position:relative;overflow:hidden;}
.v4loginbtn:hover{box-shadow:0 6px 24px rgba(91,138,114,.3);transform:translateY(-1px);}
.v4loginbtn::before{content:"";position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent);transition:.5s;}
.v4loginbtn:hover::before{left:130%;}
.v4hint{margin-top:22px;font-size:11.5px;color:var(--v3-t2);line-height:1.7;} .v4hint .mock{color:var(--v3-t1);}
.v4-err{margin-top:14px;font-size:12.5px;color:var(--v3-neg);font-weight:600;min-height:16px;}
.v4status{color:var(--v3-pos);font-size:12px;min-height:14px;}
/* 시작/정지 토글 바 */
.v3-toggle-bar{max-width:1360px;margin:14px auto 0;padding:0 22px;display:flex;align-items:center;gap:12px;}
.v3-toggle{background:var(--v3-brand);border:1px solid var(--v3-brand);color:#16191b;border-radius:8px;padding:8px 18px;font-weight:800;font-size:14px;cursor:pointer;}
.v3-toggle[data-state="running"]{background:#2a1416;border-color:var(--v3-neg);color:var(--v3-neg);animation:v3pulse 1.4s infinite;}
@keyframes v3pulse{0%,100%{box-shadow:0 0 0 0 rgba(196,124,128,.5)}50%{box-shadow:0 0 0 6px rgba(196,124,128,0)}}
.v3-tg-state{font-size:13px;color:var(--v3-t1);font-weight:600;}
.v3-tg-note{font-size:11.5px;color:var(--v3-t2);margin-left:auto;}
.v3-tg-badge{font-size:12px;color:var(--v3-t1);background:var(--v3-bg2);border:1px solid var(--v3-line);border-radius:7px;padding:5px 11px;}
/* ═══ 전 탭 통일 shell (ALPHAX_CONSOLE_UNIFY_V2) — 폭/여백/카드 규격 완전 동일 ═══ */
.app-content-shell{max-width:1360px;margin:0 auto;padding:20px 22px 40px;box-sizing:border-box;}
.app-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;align-items:start;}
@media(max-width:820px){.app-grid{grid-template-columns:1fr;}}
/* shell 내부 모든 카드는 폭 통일(컨피그 880 중앙정렬·개별 max-width 제거) */
.app-content-shell .card,.app-content-shell .cf-card,.app-content-shell .m-card,.app-content-shell .v3-card,.app-content-shell .rsi-panel,.app-content-shell .m-board,.app-content-shell .m-range{max-width:none!important;width:100%!important;margin:0 0 16px!important;background:var(--v3-bg1)!important;border:1px solid var(--v3-card-border)!important;border-radius:var(--v3-radius)!important;padding:18px!important;box-sizing:border-box;}
.app-content-shell .card-title,.app-content-shell .cf-title,.app-content-shell .v3-card-h,.app-content-shell .rsi-head{color:var(--v3-t1);font-size:12.5px;font-weight:700;letter-spacing:.3px;}
/* 토글바 shell 내부(자체 max-width/margin 제거) */
.v3-toggle-bar{max-width:none;margin:0 0 14px;padding:0;display:flex;align-items:center;gap:12px;}
/* ═══ 세이브존 RSI 패널 polish (ALPHAX_CONSOLE_POLISH_V3) — 컨피그급 섹션카드/필드/토글/버튼 ═══ */
.rsi-panel .rsi-head{display:flex;align-items:center;gap:9px;margin-bottom:6px;}
.rsi-panel .rsi-title{font-size:15px;font-weight:800;color:var(--v3-t0);}
.rsi-panel .rsi-badge{font-size:10px;padding:2px 7px;border-radius:6px;background:var(--v3-bg2);color:var(--v3-t1);border:1px solid var(--v3-line);}
.rsi-panel .rsi-note{font-size:12px;color:var(--v3-t2);margin-bottom:14px;}
.rsi-panel .rsi-ro{font-size:12px;color:var(--v3-neg);background:#2a1618;border-radius:6px;padding:5px 9px;margin-bottom:10px;}
/* 내부 섹션 카드 */
.rsi-sec{background:var(--v3-bg2);border:1px solid var(--v3-line-soft);border-radius:var(--v3-radius-sm);padding:15px 16px;margin-bottom:14px;}
.rsi-sec:last-child{margin-bottom:0;}
.rsi-sec-t{font-size:12px;font-weight:800;color:var(--v3-t1);letter-spacing:.3px;margin-bottom:12px;padding-bottom:7px;border-bottom:1px solid var(--v3-line);}
/* 필드 그리드 */
.rsi-grid{display:grid;gap:12px 14px;margin-bottom:10px;}
.rsi-grid:last-child{margin-bottom:0;}
.rsi-grid-4{grid-template-columns:repeat(4,1fr);} .rsi-grid-3{grid-template-columns:repeat(3,1fr);}
@media(max-width:680px){.rsi-grid-4,.rsi-grid-3{grid-template-columns:1fr 1fr;}}
.rsi-field{display:flex;flex-direction:column;gap:4px;min-width:0;}
.rsi-flabel{font-size:12.5px;font-weight:700;color:var(--v3-t0);}
.rsi-input{width:100%;box-sizing:border-box;background:var(--v3-bg1);color:var(--v3-t0);border:1px solid var(--v3-line);border-radius:var(--v3-radius-sm);padding:8px 10px;font-size:13px;font-variant-numeric:tabular-nums;}
.rsi-input:focus{outline:none;border-color:var(--v3-brand);box-shadow:0 0 0 3px rgba(91,138,114,.14);}
.rsi-input:disabled{opacity:.72;}
.rsi-help{font-size:10.5px;color:var(--v3-t2);}
/* v3 토글 스위치 */
.rsi-switch-row{display:flex;flex-wrap:wrap;gap:18px;margin-bottom:12px;}
.rsi-switch{display:inline-flex;align-items:center;gap:9px;cursor:pointer;user-select:none;}
.rsi-switch input{position:absolute;opacity:0;width:0;height:0;}
.rsi-track{width:38px;height:22px;border-radius:12px;background:var(--v3-bg1);border:1px solid var(--v3-line);position:relative;transition:.16s;flex-shrink:0;}
.rsi-track::after{content:"";position:absolute;left:3px;top:2px;width:16px;height:16px;border-radius:50%;background:var(--v3-t2);transition:.16s;}
.rsi-switch input:checked+.rsi-track{background:var(--v3-brand);border-color:var(--v3-brand);}
.rsi-switch input:checked+.rsi-track::after{transform:translateX(15px);background:#16191b;}
.rsi-switch input:disabled+.rsi-track{opacity:.5;}
.rsi-swlabel{font-size:13px;font-weight:600;color:var(--v3-t0);}
/* 버튼 v3(저장=brand·불러오기=ghost) */
.rsi-actions{display:flex;gap:10px;align-items:center;}
.rsi-btn-save{background:var(--v3-brand);border:1px solid var(--v3-brand);color:#16191b;border-radius:var(--v3-radius-sm);padding:9px 20px;font-size:13px;font-weight:800;cursor:pointer;transition:.16s;}
.rsi-btn-save:hover{box-shadow:0 4px 16px rgba(91,138,114,.3);background:var(--v3-brand-bright);}
.rsi-btn-save:disabled{opacity:.62;cursor:not-allowed;box-shadow:none;}
.rsi-btn-ghost{background:transparent;border:1px solid var(--v3-line);color:var(--v3-t1);border-radius:var(--v3-radius-sm);padding:9px 18px;font-size:13px;font-weight:600;cursor:pointer;transition:.16s;}
.rsi-btn-ghost:hover{background:var(--v3-hover);border-color:var(--v3-t2);color:var(--v3-t0);}
.rsi-err{font-size:12px;margin-top:10px;min-height:15px;}
.rsi-saved{font-size:11px;color:var(--v3-t2);margin-top:8px;}
/* 시작/정지 토글 control card (카드 규격 안) */
.v3-card.ctrl-card{margin-bottom:16px;padding:12px 18px;}
.ctrl-inner{display:flex;align-items:center;gap:12px;}
/* 공용 AlphaX 로고 (ALPHAX_CONSOLE_POLISH_V4) — 텍스트+우상향 스우시 */
.ax-logo,.mb-logo{display:inline-flex;flex-direction:column;align-items:flex-start;line-height:1;gap:1px;background:none;}
.ax-name{font-weight:800;font-size:18px;letter-spacing:-.5px;color:var(--v3-t0);}
.ax-x{color:var(--v3-brand-bright);}
.ax-swoosh{display:block;margin-top:2px;width:60px;height:12px;}
.mb-logo .ax-name{font-size:16px;} .mb-logo .ax-swoosh{width:52px;height:11px;}
/* 시작 토글 카드 휑함 제거 — note 우측 밀어내기 해제·내용 좌측 정돈·아래 카드와 폭 정렬 */
.v3-card.ctrl-card{margin-bottom:16px;padding:13px 18px;}
.ctrl-inner{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.v3-toggle-bar .v3-tg-note,.ctrl-inner .v3-tg-note{margin-left:0;}
.ctrl-card .v3-tg-state{font-size:13px;color:var(--v3-t1);font-weight:600;}
.ctrl-card .v3-tg-note{font-size:11.5px;color:var(--v3-t2);padding-left:2px;border-left:1px solid var(--v3-line);padding-left:12px;margin-left:2px;}
/* PRODUCT_PERSISTENT_BOT_SESSION_V1 — 세션 컨트롤바/배지 */
.bot-ctrl .bot-btn.is-stop{background:#2a1416;border-color:var(--v3-neg);color:var(--v3-neg);}
.bot-ctrl .bot-btn[disabled]{opacity:.72;cursor:default;}
.bot-ctrl .bot-big-state{font-weight:800;}
.bot-ctrl .bot-big-state.tone-ok{color:var(--v3-brand);}
.bot-ctrl .bot-big-state.tone-warn{color:#e0a43b;}
.bot-ctrl .bot-big-state.tone-error{color:var(--v3-neg);}
.bot-ctrl .bot-subs{display:flex;flex-wrap:wrap;gap:4px 14px;}
.bot-ctrl .bot-sub-line{font-size:11.5px;color:var(--v3-t2);}
.bot-ctrl .bot-sub-line::before{content:"·";margin-right:6px;color:var(--v3-line);}
.bot-ctrl .bot-sub-line:first-child::before{content:"";margin:0;}
.verify-badge-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0 2px;}
.verify-badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;border:1px solid var(--v3-line);color:var(--v3-t2);}
.verify-badge.ok{color:var(--v3-brand);border-color:color-mix(in srgb,var(--v3-brand) 40%,transparent);}
.verify-detail-toggle{font-size:11px;background:none;border:1px solid var(--v3-line);color:var(--v3-t2);border-radius:6px;padding:2px 8px;cursor:pointer;}
/* padding 핀셋: 이벤트 row·필드가 모서리에 붙지 않게 */
.app-content-shell .events{padding:2px;}
.app-content-shell .summary-row{padding-left:2px;padding-right:2px;}
/* polish v5 (ALPHAX_CONSOLE_POLISH_V5) — 로고 텍스트·토글 정렬·바이낸스 링크·padding */
.ax-logo,.mb-logo{display:inline-flex;align-items:baseline;line-height:1;background:none;flex-direction:row;gap:0;}
.ax-name{font-weight:800;font-size:18px;letter-spacing:-.5px;color:var(--v3-t0);} .ax-x{color:var(--v3-brand-bright);}
.mb-logo .ax-name{font-size:16px;}
/* 시작 토글 카드 = shell 카드 규격(지갑손익과 폭 정렬)·우측 바이낸스 링크로 균형 */
.v3-card.ctrl-card{margin:0 0 16px;padding:13px 18px;}
.ctrl-inner{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.ctrl-inner .v3-chart-link{margin-left:auto;}
.v3-chart-link{display:inline-flex;align-items:center;gap:5px;background:transparent;border:1px solid var(--v3-line);color:var(--v3-brand-bright);border-radius:var(--v3-radius-sm);padding:7px 13px;font-size:12.5px;font-weight:600;text-decoration:none;transition:.15s;white-space:nowrap;}
.v3-chart-link:hover{background:var(--v3-hover);border-color:var(--v3-brand);}
/* 세이브존 RSI 제목 padding — 카드 좌측벽에 붙지 않게(다른 card-h 와 동일) */
.rsi-panel{padding:2px 2px 4px;}
.rsi-panel .rsi-head{padding:0 2px;}
.rsi-panel .rsi-note{padding:0 2px;}
/* polish v6 (ALPHAX_CONSOLE_POLISH_V6) — 바이낸스 워드마크·시작카드 정렬 */
.ax-bnb{font-weight:800;letter-spacing:1px;font-size:12px;color:var(--v3-brand-bright);}
.v3-chart-link{display:inline-flex;align-items:center;gap:5px;background:transparent;border:1px solid var(--v3-line);color:var(--v3-t1);border-radius:var(--v3-radius-sm);padding:7px 13px;font-size:12.5px;font-weight:600;text-decoration:none;transition:.15s;white-space:nowrap;}
.v3-chart-link:hover{background:var(--v3-hover);border-color:var(--v3-brand);}
/* Binance 외부 이동 버튼 — 로고 이미지 없이 텍스트 + amber 포인트만(공식/제휴 오해 방지). AlphaX 다크 배경 유지, hover 시에만 약한 amber glow. */
.v3-chart-link.bnb-link{color:var(--bnb-amber,#e8b13a);border-color:color-mix(in srgb,#e8b13a 30%,transparent);}
.v3-chart-link.bnb-link .ax-bnb{color:var(--bnb-amber,#e8b13a);}
.v3-chart-link.bnb-link:hover{background:color-mix(in srgb,#e8b13a 9%,transparent);border-color:color-mix(in srgb,#e8b13a 55%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,#e8b13a 16%,transparent),0 2px 10px color-mix(in srgb,#e8b13a 13%,transparent);}
/* 시작 토글 카드: m-left 컬럼 안에서 지갑손익과 동일 폭 */
.m-left .ctrl-card{margin:0 0 16px;width:100%;}
/* 위험작업 확인 모달 (ALPHAX_CONSOLE_POLISH_V6) — v3 다크 */
.op-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:16px;z-index:200;}
.op-modal{background:var(--v3-bg1);border:1px solid var(--v3-line);border-radius:var(--v3-radius);padding:20px;width:360px;max-width:94vw;display:flex;flex-direction:column;gap:11px;}
.op-modal-t{font-size:15px;font-weight:800;color:var(--v3-t0);}
.op-modal-desc{font-size:12.5px;color:var(--v3-t1);line-height:1.6;} .op-modal-desc b{color:var(--v3-brand-bright);}
.op-modal-in{background:var(--v3-bg2);border:1px solid var(--v3-line);color:var(--v3-t0);border-radius:var(--v3-radius-sm);padding:11px 13px;font-size:14px;}
.op-modal-in:focus{outline:none;border-color:var(--v3-brand);box-shadow:0 0 0 3px rgba(91,138,114,.14);}
.op-modal-note{font-size:11px;color:var(--v3-t2);}
.op-modal-actions{display:flex;gap:9px;justify-content:flex-end;margin-top:4px;}
.op-modal-confirm{background:var(--v3-brand);border:1px solid var(--v3-brand);color:#16191b;border-radius:var(--v3-radius-sm);padding:9px 18px;font-size:13px;font-weight:800;cursor:pointer;}
.op-modal-confirm:hover{background:var(--v3-brand-bright);}
.op-modal-cancel{background:transparent;border:1px solid var(--v3-line);color:var(--v3-t1);border-radius:var(--v3-radius-sm);padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer;}
.op-modal-cancel:hover{background:var(--v3-hover);}
/* 마감 방식 선택 모달(ALPHAX_CLOSE_SCHEDULER) — op-modal 톤 재사용 · 옵션 목록만 추가 */
.cs-modal{width:420px;}
.cs-opts{display:flex;flex-direction:column;gap:8px;}
.cs-opt{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--v3-card-border);border-radius:var(--v3-radius-sm);padding:10px 12px;cursor:pointer;}
.cs-opt:hover{background:var(--v3-hover);}
.cs-opt-disabled{opacity:.55;cursor:not-allowed;}
.cs-radio{margin-top:3px;accent-color:var(--v3-brand);}
.cs-opt-body{display:flex;flex-direction:column;gap:3px;min-width:0;}
.cs-opt-t{font-size:13px;font-weight:800;color:var(--v3-t0);}
.cs-badge{font-style:normal;font-size:10.5px;font-weight:700;color:var(--v3-t2);border:1px solid var(--v3-card-border);border-radius:5px;padding:1px 6px;margin-left:4px;}
.cs-opt-d{font-size:12px;color:var(--v3-t1);line-height:1.5;}
.cs-opt-w{font-size:11px;color:var(--v3-t2);line-height:1.5;}
.cs-time-row{display:flex;flex-direction:column;gap:5px;}
.cs-time-row label{font-size:11.5px;color:var(--v3-t1);}
/* 사이클 진실 배너(ALPHAX_CYCLE_STATE_TRUTH) — 이월/현재 분리 · 완료≠수익 · 오늘 순손익 */
.ct-wrap{display:flex;flex-direction:column;gap:9px;margin-bottom:10px;}
.ct-banner{border:1px solid var(--v3-card-border);border-radius:var(--v3-radius-sm);padding:11px 13px;background:var(--v3-bg1);}
.ct-warn{border-color:var(--v3-warn-line,rgba(196,124,128,.4));}
.ct-b-t{font-size:13px;font-weight:800;color:var(--v3-neg,#c47c80);}
.ct-b-d{font-size:12px;color:var(--v3-t1);line-height:1.6;margin-top:4px;}
.ct-b-split{display:flex;gap:9px;margin-top:9px;flex-wrap:wrap;}
.ct-leg{flex:1;min-width:150px;border:1px solid var(--v3-card-border-soft,rgba(127,174,148,.06));border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:3px;}
.ct-leg span{font-size:11px;color:var(--v3-t2);}
.ct-leg b{font-size:13px;color:var(--v3-t0);}
.ct-carry b{color:var(--v3-neg,#c47c80);}
.ct-kpis{display:flex;gap:10px;flex-wrap:wrap;}
.ct-kpi{flex:1;min-width:120px;display:flex;flex-direction:column;gap:2px;}
.ct-kpi span{font-size:11px;color:var(--v3-t2);}
.ct-kpi b{font-size:15px;font-weight:800;color:var(--v3-t0);font-variant-numeric:tabular-nums;}
.ct-kpi b.pos{color:var(--v3-pos,#6b9d84);} .ct-kpi b.neg{color:var(--v3-neg,#c47c80);}
.ct-kpi em{font-size:10px;font-style:normal;color:var(--v3-t2);line-height:1.4;}
/* v8 (ALPHAX_CONSOLE_DIAGNOSE_V8) — 시작 토글 카드 = m-left 컬럼 100%(지갑손익과 동일 left/width 못박기) */
/* v10: 방법A(m-left 토글) 폐기 — 아래 dashboard-container(방법B)로 대체 */
.app-content-shell .dashboard-grid .m-left{min-width:0;}
/* v9 (ALPHAX_CONSOLE_FIX_V9) — PC 시작카드 내부 [▶시작 대기중]...[BINANCE] + note 하단 */
.ctrl-card .ctrl-row{display:flex;align-items:center;justify-content:space-between;gap:14px;}
.ctrl-card .ctrl-left{display:flex;align-items:center;gap:12px;}
.ctrl-card .v3-tg-state{font-size:13px;color:var(--v3-t1);font-weight:600;}
.ctrl-card .v3-tg-note{font-size:11px;color:var(--v3-t2);margin-top:9px;padding-top:9px;border-top:1px solid var(--v3-line-soft);}
/* v10 (ALPHAX_DASHBOARD_RESTRUCTURE_V10) — 시작카드+2단grid 공통 컨테이너(방법B: 시작카드=grid 전체폭 헤더) */
/* v11: dashboard-container→dashboard-width-frame 로 대체 */



/* v11 (ALPHAX_DASHBOARD_WRAP_V11) — 공통 폭 부모 dashboard-width-frame. 시작바 width/margin 편법 0 */
.dashboard-root{width:100%;}
/* v12: dashboard-width-frame→dashboard-action-frame */
.dashboard-startbar{width:100%;}

.dashboard-left-column{display:flex;flex-direction:column;gap:16px;min-width:0;}
.dashboard-right-column{min-width:0;}

/* 시작바/카드는 app-content-shell 공통 v3-card 규격(width:100%) 상속 — 시작바 전용 보정 없음 */
.dashboard-startbar > .ctrl-card{margin:0;}
/* v12 (ALPHAX_DASHBOARD_WRAP_V12) — 실제 visible 큰 카드(dashboard-main-card) 안에 작은 카드 3개. 시작바=큰 카드와 같은 action-frame 형제(폭 상속·편법 0) */
.dashboard-root{width:100%;}
.dashboard-action-frame{width:100%;display:flex;flex-direction:column;gap:16px;}
.dashboard-startbar{width:100%;}
.app-content-shell .dashboard-startbar > .ctrl-card{margin:0!important;}
/* 큰 wrapper 박스 제거: 상황판+패널을 감싸던 "카드 속 카드" 통을 순수 레이아웃 컨테이너로. (어제 정상 = 열린 카드 나열) */
.dashboard-main-card{width:100%;background:transparent;border:none;border-radius:0;padding:0;box-sizing:border-box;}
.dashboard-grid{width:100%;display:grid;grid-template-columns:1.5fr 1fr;gap:16px;align-items:start;margin:0;}
.dashboard-left-column{display:flex;flex-direction:column;gap:16px;min-width:0;}
.dashboard-right-column{min-width:0;}
@media(max-width:820px){.dashboard-grid{grid-template-columns:1fr;}}
/* 작은 카드 3개: 큰 카드 안에서 bg-2 로 구분(겹겹 방지·depth) */
/* wrapper 제거로 내부 카드는 bg2 강등 없이 원래 열린 카드(bg1)로 복원 — 카드 속 카드 이중 중첩 해제 */
.app-content-shell .dashboard-main-card .v3-card,.app-content-shell .dashboard-main-card .m-card,.app-content-shell .dashboard-main-card .card{background:var(--v3-bg1)!important;margin:0!important;}
.dashboard-main-card .stat,.dashboard-main-card .event,.dashboard-main-card .position-line{background:var(--v3-bg1);}

/* ── CONSOLE_UI_TRUTHFUL_STATE: 연결 상태(미연결) 진실 표시 (DISPLAY-ONLY) ── */
/* 강화 모드 배지: 모의(중립/회색) vs 실전(accent). 여기선 항상 모의 → 중립. 절대 실전처럼 보이면 안 됨. */
.mode-badge-strong{display:inline-flex;align-items:center;gap:6px;font-weight:700;letter-spacing:.2px;}
.mode-badge-strong .mbs-dot,.mode-badge-strong .dot{width:8px;height:8px;border-radius:50%;background:var(--v3-t1);display:inline-block;}
.mbs-mock{color:var(--v3-t1)!important;background:var(--v3-bg2)!important;border:1px solid var(--v3-line)!important;}
.mbs-mock .mbs-dot,.mbs-mock .dot{background:var(--v3-t1);}
.mbs-live{color:var(--v3-neg)!important;background:#2a1416!important;border:1px solid var(--v3-neg)!important;}
.mbs-live .mbs-dot,.mbs-live .dot{background:var(--v3-neg);}
/* 읽기 전용 실계좌 연결 배지: 정보(teal) 톤 — 실전(red)과 확실히 다름. "실전 운영 중" 으로 읽히지 않도록 중립·정보색만 사용. */
.mbs-readonly{color:#7fd4c8!important;background:#0f2320!important;border:1px solid #2f6f63!important;}
.mbs-readonly .mbs-dot,.mbs-readonly .dot{background:#4fb8a6;}
/* 읽기 전용 연결 안내 배지(대시보드 카드 상단) */
.ro-badge{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0 0 10px;padding:8px 10px;border-radius:var(--v3-radius-sm);background:#0f2320;border:1px solid #2f6f63;}
.ro-badge .ro-dot{width:8px;height:8px;border-radius:50%;background:#4fb8a6;display:inline-block;}
.ro-badge .ro-title{color:#9fe3d7;font-size:12.5px;}
.ro-badge .ro-chip{color:#bfeee6;background:#123029;border:1px solid #2f6f63;border-radius:999px;padding:1px 8px;font-size:11px;}
/* 갱신 상태/마지막 갱신 줄 */
.live-balance-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0 0 10px;font-size:11.5px;color:var(--v3-t2);}
.live-balance-meta .lbm-poll{font-weight:600;}
.live-balance-meta.lbm-ok .lbm-poll{color:#4fb8a6;}
.live-balance-meta.lbm-err .lbm-poll{color:var(--v3-neg);}
.live-balance-meta .lbm-refresh{margin-left:auto;background:var(--v3-bg2);color:var(--v3-t1);border:1px solid var(--v3-line);border-radius:var(--v3-radius-sm);padding:2px 10px;font-size:11px;cursor:pointer;}
/* 미연결 인디케이터(숨김 없음) */
.conn-notice{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin:0 0 12px;padding:10px 12px;border-radius:var(--v3-radius-sm);background:var(--v3-bg2);border:1px dashed var(--v3-line);}
.conn-notice.conn-off b{color:var(--v3-t0);font-size:13px;}
.conn-notice .conn-dot{width:8px;height:8px;border-radius:50%;background:var(--v3-t1);display:inline-block;align-self:center;}
.conn-notice .conn-sub{color:var(--v3-t2);font-size:11.5px;flex-basis:100%;}
/* 이벤트 없음 · 미연결 */
.events-empty{display:flex;flex-direction:column;gap:4px;padding:16px 12px;text-align:center;}
.events-empty b{color:var(--v3-t1);font-size:13px;}
.events-empty .events-empty-sub{color:var(--v3-t2);font-size:11.5px;}

/* 시작 전 확인 요약(간결·설명 배지 아님) */
.prestart-card .ps-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;margin-top:6px}
.prestart-card .ps-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:2px 0}
.prestart-card .ps-k{color:var(--text-2,#626b67)}
.prestart-card .ps-v{font-weight:600}
.prestart-card .ps-v.ps-ok{color:#2a9d6a}
.prestart-card .ps-v.ps-warn{color:#c8892a}
.prestart-card .ps-v.ps-block{color:#626b67}
.enf-card{margin-top:8px;border-top:1px solid var(--line,#2e3437);padding-top:8px}
.enf-card .m-card-t .sub{font-size:11px;color:var(--text-2,#626b67);font-weight:500;margin-left:6px}
.lfp-card{margin-top:8px;border-top:1px solid var(--line,#2e3437);padding-top:8px}
.lfp-card .m-card-t .sub{font-size:11px;color:var(--text-2,#626b67);font-weight:500;margin-left:6px}
.lfp-note{margin-top:6px;font-size:11px;color:var(--text-2,#626b67);line-height:1.4}
/* 이벤트 사운드 컨트롤 */
.ev-sound{float:right;display:inline-flex;gap:6px;font-size:11px}
.ev-snd-btn,.ev-snd-vol{background:var(--bg-2,#252a2c);border:1px solid var(--border,#2e3437);color:var(--text-2,#626b67);border-radius:6px;padding:2px 8px;cursor:pointer;font-size:11px}
.ev-snd-btn:hover,.ev-snd-vol:hover{color:var(--text-0,#e2e6e4)}
.cf-btn.cf-applied,.rsi-btn-apply.rsi-applied{background:#2a5d43;color:#fff}
.rsi-btn-apply{background:var(--v3-bg2,#252a2c);border:1px solid var(--v3-line,#2e3437);color:var(--v3-t0,#e2e6e4);border-radius:6px;padding:6px 14px;cursor:pointer}

/* ===== AlphaX 컨피그 패널 재이식 (ALPHAX_CONFIG_UX_REDESIGN_20260708) — 다크 톤 · 아코디언 · 커스텀 드롭다운 ===== */
.ax-cfg{display:flex;flex-direction:column;gap:14px}
.ax-cfg-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ax-cfg-title{font-size:16px;font-weight:800;color:var(--v3-t0,#e2e6e4)}
.ax-cfg-sub{font-size:12px;color:var(--v3-t1,#98a29d)}
.ax-ro{font-size:12px;color:var(--v3-neg,#c47c80);background:#2a1618;border-radius:6px;padding:5px 9px}
.ax-sumcard{background:linear-gradient(180deg,var(--v3-bg2,#252a2c),var(--v3-bg1,#1e2224));border:1px solid var(--v3-line,#2e3437);border-radius:var(--v3-radius,10px);padding:14px 16px}
.ax-sum-title{font-size:12px;font-weight:800;color:var(--v3-brand-bright,#7fae94);letter-spacing:.3px;margin-bottom:10px;text-transform:uppercase}
.ax-sum-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px 14px}
.ax-sum-cell{display:flex;flex-direction:column;gap:3px;min-width:0}
.ax-sum-k{font-size:11px;color:var(--v3-t1,#98a29d)}
.ax-sum-v{font-size:14px;font-weight:700;color:var(--v3-t0,#e2e6e4);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.ax-acc{background:var(--v3-bg1,#1e2224);border:1px solid var(--v3-line,#2e3437);border-radius:var(--v3-radius,10px);overflow:hidden}
.ax-acc-h{list-style:none;cursor:pointer;padding:13px 16px;font-size:13px;font-weight:800;color:var(--v3-t0,#e2e6e4);display:flex;align-items:center;justify-content:space-between;background:var(--v3-bg2,#252a2c);user-select:none}
.ax-acc-h::-webkit-details-marker{display:none}
.ax-acc-chev{color:var(--v3-t1,#98a29d);transition:transform .15s;font-size:11px}
.ax-acc[open] .ax-acc-chev{transform:rotate(180deg)}
.ax-acc-body{padding:14px 16px}
.ax-grid{display:grid;gap:12px 14px}
.ax-grid-2{grid-template-columns:1fr 1fr}
.ax-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.ax-flabel{font-size:12.5px;font-weight:700;color:var(--v3-t0,#e2e6e4)}
.ax-help{font-size:10.5px;color:var(--v3-t1,#98a29d);line-height:1.4}
.ax-input{width:100%;box-sizing:border-box;background:var(--v3-bg0,#16191b);color:var(--v3-t0,#e2e6e4);border:1px solid var(--v3-line,#2e3437);border-radius:var(--v3-radius-sm,7px);padding:9px 11px;font-size:13px;font-variant-numeric:tabular-nums}
.ax-input:focus{outline:none;border-color:var(--v3-brand,#5b8a72);box-shadow:0 0 0 3px rgba(91,138,114,.16)}
.ax-input[readonly],.ax-input:disabled{opacity:.72}
.ax-selectwrap{position:relative;display:block}
.ax-selectwrap::after{content:"▾";position:absolute;right:11px;top:50%;transform:translateY(-50%);color:var(--v3-t1,#98a29d);font-size:11px;pointer-events:none}
.ax-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;box-sizing:border-box;background:var(--v3-bg0,#16191b);color:var(--v3-t0,#e2e6e4);border:1px solid var(--v3-line,#2e3437);border-radius:var(--v3-radius-sm,7px);padding:9px 30px 9px 11px;font-size:13px;cursor:pointer;line-height:1.3}
.ax-select:focus{outline:none;border-color:var(--v3-brand,#5b8a72);box-shadow:0 0 0 3px rgba(91,138,114,.16)}
.ax-select:disabled{opacity:.72;cursor:default}
.ax-select option{background:var(--v3-bg1,#1e2224);color:var(--v3-t0,#e2e6e4)}
.ax-switch-row{margin-top:10px}
.ax-switch{display:inline-flex;align-items:center;gap:9px;cursor:pointer;user-select:none;font-size:13px;color:var(--v3-t0,#e2e6e4);position:relative}
.ax-switch input{position:absolute;opacity:0;width:0;height:0}
.ax-track{width:38px;height:22px;border-radius:12px;background:var(--v3-line,#2e3437);position:relative;transition:background .15s;flex:0 0 auto}
.ax-track::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--v3-t1,#98a29d);transition:transform .15s,background .15s}
.ax-switch input:checked + .ax-track{background:var(--v3-brand,#5b8a72)}
.ax-switch input:checked + .ax-track::after{transform:translateX(16px);background:#fff}
.ax-pv-card{background:var(--v3-bg1,#1e2224);border:1px solid var(--v3-line,#2e3437);border-radius:var(--v3-radius,10px);padding:14px 16px;overflow-x:auto}
.ax-pv-title{font-size:12px;font-weight:800;color:var(--v3-brand-bright,#7fae94);margin-bottom:10px;display:flex;align-items:center;gap:10px;text-transform:uppercase;letter-spacing:.3px}
.ax-pv-basis{font-size:11px;color:var(--v3-t1,#98a29d);margin-bottom:8px}
.ax-pv-row{display:grid;grid-template-columns:58px 72px 1fr 1fr;gap:8px;font-size:12px;padding:5px 0;border-bottom:1px dashed var(--v3-line-soft,#252a2c);color:var(--v3-t0,#e2e6e4);align-items:center}
.ax-pv-head{color:var(--v3-t1,#98a29d);font-weight:700;font-size:11px}
.ax-pv-note{font-size:11.5px;color:var(--v3-t1,#98a29d);margin-top:8px}
.ax-pv-note b{color:var(--v3-t0,#e2e6e4)}
.ax-pv-empty{font-size:12px;color:var(--v3-t1,#98a29d);padding:8px 0}
.ax-actions{display:flex;gap:10px;flex-wrap:wrap}
.ax-btn{padding:9px 18px;border-radius:var(--v3-radius-sm,7px);font-size:13px;font-weight:700;cursor:pointer;border:1px solid var(--v3-line,#2e3437);background:var(--v3-bg2,#252a2c);color:var(--v3-t0,#e2e6e4)}
.ax-btn-save{background:var(--v3-brand,#5b8a72);border-color:var(--v3-brand,#5b8a72);color:#0f1613}
.ax-btn-apply.ax-applied{background:var(--v3-brand,#5b8a72);border-color:var(--v3-brand,#5b8a72);color:#0f1613}
.ax-btn-ghost{background:transparent}
.ax-btn:disabled{opacity:.62;cursor:default}
.ax-pv-title .ax-btn-ghost{padding:3px 10px;font-size:11px}
.ax-err{font-size:12px;color:var(--v3-neg,#c47c80);min-height:16px}
.ax-cfg-note{font-size:11.5px;color:var(--v3-t1,#98a29d)}
/* 프리셋 선택 즉시 '적용될 실제 값' 라이브 표시 */
.ax-preset-actual{margin-top:6px;font-size:11.5px;color:var(--v3-t0,#e2e6e4);line-height:1.55;word-break:break-word;background:var(--v3-bg0,#16191b);border:1px solid var(--v3-line-soft,#252a2c);border-radius:var(--v3-radius-sm,7px);padding:6px 9px}
.ax-actual-k{color:var(--v3-brand-bright,#7fae94);font-weight:800;margin-right:6px}
.ax-actual-empty{color:var(--v3-t2,#626b67)}
.ax-actual-steps{color:var(--v3-t1,#98a29d);font-size:11px;margin-top:3px}
/* 미리보기 자동 갱신 안내 + 보조 재계산 버튼(주요 UX 아님) */
.ax-pv-title{justify-content:space-between}
.ax-pv-auto{font-size:10.5px;font-weight:600;color:var(--v3-t2,#626b67);text-transform:none;letter-spacing:0}
.ax-pv-foot{margin-top:10px;text-align:right}
.ax-btn-mini{background:transparent;border:1px solid var(--v3-line,#2e3437);color:var(--v3-t1,#98a29d);font-size:11px;padding:4px 11px;border-radius:var(--v3-radius-sm,7px);cursor:pointer}
.ax-btn-mini:hover{color:var(--v3-t0,#e2e6e4);border-color:var(--v3-brand,#5b8a72)}
/* 고급 직접입력 설명 배너 */
.ax-advnote{background:var(--v3-bg0,#16191b);border:1px solid var(--v3-line,#2e3437);border-left:3px solid var(--v3-brand,#5b8a72);border-radius:var(--v3-radius-sm,7px);padding:11px 13px;margin-bottom:12px}
.ax-advnote-t{font-size:12px;font-weight:800;color:var(--v3-brand-bright,#7fae94);margin-bottom:5px}
.ax-advnote-b{font-size:11.5px;color:var(--v3-t1,#98a29d);line-height:1.6}
.ax-advnote-b b{color:var(--v3-t0,#e2e6e4)}
.ax-advwarn{font-size:11.5px;color:var(--v3-neg,#c47c80);line-height:1.6;margin-top:7px}
.ax-advwarn b{color:#e6b98f}
/* 저장 직전 요약 카드(브랜드 강조) */
.ax-savesum{background:linear-gradient(180deg,var(--v3-bg2,#252a2c),var(--v3-bg1,#1e2224));border:1px solid var(--v3-brand,#5b8a72);border-radius:var(--v3-radius,10px);padding:14px 16px}
.ax-savesum-title{font-size:12px;font-weight:800;color:var(--v3-brand-bright,#7fae94);text-transform:uppercase;letter-spacing:.3px}
.ax-savesum-lead{font-size:11.5px;color:var(--v3-t1,#98a29d);margin:3px 0 11px}
.ax-savesum .ax-sum-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
@media(max-width:680px){
  .ax-grid-2{grid-template-columns:1fr}
  .ax-pv-row{grid-template-columns:42px 52px 1fr 1fr;font-size:11px;gap:5px}
  .ax-sum-grid,.ax-savesum .ax-sum-grid{grid-template-columns:1fr 1fr}
  .ax-select{padding:11px 30px 11px 11px;font-size:13px}
  .ax-input{padding:11px;font-size:13px}
  .ax-preset-actual{font-size:11px}
  .ax-pv-title{flex-direction:column;align-items:flex-start;gap:3px}
}
/* ===== [?] 설정 도움말 버튼 + 다크 팝오버 (ALPHAX_CONFIG_HELP_GUIDE_20260708) ===== */
.ax-help-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-left:6px;padding:0;border-radius:50%;border:1px solid var(--v3-line,#2e3437);background:var(--v3-bg2,#252a2c);color:var(--v3-t1,#98a29d);font-size:11px;font-weight:800;line-height:1;cursor:pointer;vertical-align:middle;flex:0 0 auto}
@media(max-width:680px){.ax-help-btn{width:24px;height:24px;font-size:12px}}
.ax-help-btn:hover{color:var(--v3-brand-bright,#7fae94);border-color:var(--v3-brand,#5b8a72)}
.ax-help-btn:focus-visible{outline:2px solid var(--v3-brand,#5b8a72);outline-offset:1px}
.ax-help-pop{position:fixed;z-index:9999;width:320px;max-width:calc(100vw - 24px);background:var(--v3-bg1,#1e2224);border:1px solid var(--v3-brand,#5b8a72);border-radius:var(--v3-radius,10px);box-shadow:0 12px 34px rgba(0,0,0,.55);padding:13px 15px;color:var(--v3-t0,#e2e6e4);max-height:min(70vh,440px);overflow-y:auto}
.ax-help-pop-t{font-size:13px;font-weight:800;color:var(--v3-brand-bright,#7fae94);margin-bottom:9px}
.ax-help-sec{margin-bottom:8px}
.ax-help-q{display:block;font-size:11px;font-weight:800;color:var(--v3-t1,#98a29d);margin-bottom:2px;letter-spacing:.2px}
.ax-help-a{margin:0;font-size:12px;line-height:1.65;color:var(--v3-t0,#e2e6e4);word-break:break-word}
.ax-help-rec .ax-help-q{color:var(--v3-pos,#6b9d84)}
.ax-help-rec .ax-help-a{color:#bcd6c8}
.ax-help-warn .ax-help-q{color:#e6b98f}
.ax-help-foot{margin-top:9px;padding-top:8px;border-top:1px solid var(--v3-line-soft,#252a2c);font-size:11px;color:var(--v3-t2,#626b67);line-height:1.5}
/* ===== 공통 알림 토스트(PC + 모바일, 상단 중앙 · 크게 · 오래) — ALPHAX_TOAST_TOP_UNIFY_20260708 ===== */
.ax-toast{position:fixed;top:calc(env(safe-area-inset-top,0px) + 14px);left:50%;transform:translateX(-50%) translateY(-10px);z-index:2147483000;display:flex;align-items:center;gap:10px;max-width:min(440px,calc(100vw - 24px));width:max-content;background:var(--v3-bg1,#1e2224);border:1px solid var(--v3-brand,#5b8a72);border-left:4px solid var(--v3-brand,#5b8a72);border-radius:12px;box-shadow:0 14px 38px rgba(0,0,0,.6);padding:14px 18px;color:var(--v3-t0,#e2e6e4);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}
.ax-toast.show{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}
.ax-toast-ic{font-size:18px;font-weight:800;color:var(--v3-brand-bright,#7fae94);flex:0 0 auto;line-height:1}
.ax-toast-msg{font-size:15px;font-weight:700;line-height:1.4;letter-spacing:.1px}
.ax-toast--warn{border-color:var(--v3-neg,#c47c80);border-left-color:var(--v3-neg,#c47c80)}
.ax-toast--warn .ax-toast-ic{color:#e6b98f}

/* ===== viewer/monitoring 계정 톤 일관 + read-only 배너 — ALPHAX_MONITORING_UX_20260709 ===== */
/* read-only 배너: 화면이 깨진 게 아니라 "의도된 안내"로 보이게(브랜드 톤 · 어둡지 않게). */
.cb-readonly,.cf-readonly,.mb-readonly,.mbs-readonly{
  display:inline-flex;align-items:center;gap:6px;
  font-size:12px;font-weight:700;line-height:1.3;
  color:var(--v3-brand-bright,#7fae94);
  background:rgba(91,138,114,.12);
  border:1px solid var(--v3-brand,#5b8a72);
  border-radius:8px;padding:5px 10px;white-space:nowrap;}
.mb-readonly{display:flex;width:100%;justify-content:center;margin:6px 0;}
/* viewer 카드도 owner 와 동일한 배경/테두리 톤(어둡거나 다른 색으로 튀지 않게). */
.v3-card.viewer,.mb-card.viewer{background:var(--v3-bg1,#1e2224);border-color:var(--v3-line,#2e3437);}
.ctrl-card.viewer .ctrl-inner{display:flex;justify-content:center;align-items:center;min-height:40px;}
/* 미정의였던 mb-opnote 기본 톤(모바일 안내문) — 흐릿/깨짐 방지. */
.mb-opnote{font-size:12px;color:var(--v3-t1,#98a29d);line-height:1.5;margin-top:4px;}
.mb-opnote.mb-gate{color:#e6b98f;}

/* ===== 현재 운용 상황판 (operation board) — ALPHAX_MONITORING_UX_20260709 ===== */
.opb-card{margin-bottom:12px;}
.opb-headline{font-size:15px;font-weight:800;color:var(--v3-t0,#e2e6e4);margin:2px 0 10px;letter-spacing:.2px;}
.opb-rows{display:flex;flex-direction:column;gap:5px;margin-bottom:10px;}
.opb-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:13px;}
.opb-k{color:var(--v3-t1,#98a29d);}
.opb-v{color:var(--v3-t0,#e2e6e4);font-weight:700;font-variant-numeric:tabular-nums;}
/* 미실현 손익 합계 색상: 수익(>0)=초록, 손실(<0)=빨강, 0/없음=중립(기본색). KPI '미실현 손익'과 동일 정책. */
.opb-v.pos{color:var(--v3-brand-bright,#7fae94);}
.opb-v.neg{color:var(--v3-neg,#c47c80);}
.opb-empty{font-size:12.5px;padding:6px 0;}
.opb-plan{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--v3-line,#2e3437);padding-top:9px;}
.opb-step{display:flex;flex-direction:column;gap:1px;padding:4px 0 4px 11px;border-radius:0;background:transparent;border:none;border-left:2px solid var(--v3-line-soft,#252a2c);}
.opb-step.active{border-left-color:color-mix(in srgb,var(--v3-brand,#5b8a72) 60%,transparent);background:transparent;}
.opb-step-t{font-size:12.5px;font-weight:800;color:var(--v3-t0,#e2e6e4);}
.opb-step.active .opb-step-t{color:var(--v3-t0,#e2e6e4);}
.opb-step-d{font-size:12px;color:var(--v3-t1,#98a29d);font-variant-numeric:tabular-nums;}
/* 현재 운용 상황판 = 핵심 판단 도구: 전체폭·강조. 지갑/손익보다 위. */
.opb-fullwidth{width:100%;margin-bottom:12px;}
.dashboard-summary-strip{margin-bottom:12px;}
/* 상황판 = 원래 열린 v3-card(중립 bg1 + 얇은 line 보더). 녹색 배경 틴트 제거. 녹색 정체성은 헤드라인 액센트 텍스트로만. */
.opb-card.opb-primary{border:1px solid var(--v3-card-border);background:var(--v3-bg1,#1e2224);box-shadow:none;}
.opb-card.opb-primary .opb-headline{font-size:16.5px;color:var(--v3-brand-bright,#7fae94);}
.opb-card.opb-primary .opb-row{font-size:13.5px;padding:2px 0;}
.opb-card.opb-primary .opb-v{font-size:14px;}
/* 정직화(자동 감시 중단/정지) 카드: 진행형 그린이 아니라 중립 경고 톤. 헤드라인 그린 강조 제거. */
.opb-card.opb-primary.opb-halt .opb-headline{color:var(--v3-t0,#e2e6e4);}
.opb-halt-detail{font-size:12.5px;color:var(--v3-t1,#98a29d);line-height:1.55;margin:2px 0 2px;}
.opb-warn{font-size:12.5px;font-weight:700;color:var(--v3-t1,#98a29d);background:transparent;border:none;border-left:2px solid color-mix(in srgb,var(--v3-neg,#c47c80) 55%,transparent);border-radius:0;padding:2px 0 2px 11px;margin:0 0 10px;}

/* ── UI 톤 안정화: mobile.css 전역 라이트/블루 잔재가 다크 콘솔로 새는 것 차단 ──
   mobile.css 가 index 에서 styles.css 뒤에 로드돼 하드코딩 흰(#e6e9ef)/파란(#1a2030) 규칙이 이겼다.
   body 스코프(specificity 0,1,1)로 순서 무관하게 AlphaX 톤을 강제 — 검증 카드/사운드가 async 로 떠도 톤 불변. */
body .enf-card, body .lfp-card { border-top: 1px solid var(--v3-line); }
body .enf-card .m-card-t .sub, body .lfp-card .m-card-t .sub, body .prestart-card .ps-k { color: var(--v3-t1); }
body .ev-snd-btn, body .ev-snd-vol { background: var(--v3-bg2); border-color: var(--v3-line); color: var(--v3-t1); }
body .rsi-btn-apply { background: var(--v3-bg2); border-color: var(--v3-line); color: var(--v3-t0); }
/* focus: 키보드 탐색(focus-visible)에만 링 표시. 마우스 클릭/새로고침만으로 카드/버튼 테두리가 강조되어 남지 않게. */
button:focus:not(:focus-visible), .v3-tab:focus:not(:focus-visible), .m-tab:focus:not(:focus-visible), .sp-tab:focus:not(:focus-visible) { outline: none; }
:focus-visible { outline: 2px solid var(--ax-focus-ring); outline-offset: 2px; }

/* ── 운용 주의 안내 배너(마감 버튼 아래 · 옛 상태줄 자리) ── */
/* 운용 배너 = 큰 박스 아님. 얇은 좌측 accent + 제목 강조만(open notice, KPI/grid 와 같은 edge 정렬). */
.op-banner{display:flex;align-items:flex-start;gap:10px;margin:0;padding:8px 0 8px 13px;border-radius:0;border:none;border-left:3px solid var(--v3-line,#2e3437);background:transparent;}
.op-banner-ico{font-size:16px;line-height:1.3;flex:0 0 auto;}
.op-banner-body{display:flex;flex-direction:column;gap:2px;min-width:0;}
.op-banner-body b{font-size:13.5px;font-weight:800;color:var(--v3-t0,#e2e6e4);}
.op-banner-body span{font-size:12.5px;color:var(--v3-t1,#98a29d);line-height:1.55;word-break:keep-all;}
.op-banner-note{margin-top:4px;font-size:11.5px;color:var(--v3-t1,#98a29d);opacity:.85;}
.op-banner-warn{border-left-color:color-mix(in srgb,var(--v3-neg,#c47c80) 60%,transparent);background:transparent;}
.op-banner-warn .op-banner-body b{color:var(--v3-neg,#c47c80);}
.op-banner-error{border-left-color:var(--v3-neg,#c47c80);background:transparent;}
.op-banner-error .op-banner-body b{color:var(--v3-neg,#c47c80);}
.op-banner-info{border-left-color:color-mix(in srgb,var(--v3-brand,#5b8a72) 55%,transparent);background:transparent;}
.op-banner-info .op-banner-body b{color:var(--v3-t0,#e2e6e4);}
@media (max-width:820px){.op-banner{margin:0;}}

/* ── 상황판 접기/펼치기 ── */
.opb-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.opb-toggle{margin-left:auto;background:var(--v3-bg2,#252a2c);border:1px solid var(--v3-line,#2e3437);color:var(--v3-t1,#98a29d);border-radius:8px;padding:4px 10px;font-size:11.5px;font-weight:700;cursor:pointer;white-space:nowrap;}
.opb-toggle:hover{border-color:var(--v3-brand,#5b8a72);color:var(--v3-t0,#e2e6e4);}
.opb-alert-badge{background:rgba(196,124,128,.16);border:1px solid color-mix(in srgb,var(--v3-neg,#c47c80) 45%,transparent);color:var(--v3-neg,#c47c80);border-radius:999px;padding:2px 9px;font-size:11px;font-weight:800;}
.opb-summary{margin-top:8px;font-size:13px;line-height:1.6;color:var(--v3-t0,#e2e6e4);word-break:keep-all;}
.opb-collapsed.opb-summary-warn{border-color:color-mix(in srgb,var(--v3-neg,#c47c80) 34%,transparent);}
.opb-collapsed.opb-summary-warn .opb-summary{color:var(--v3-t0,#e2e6e4);}

/* ── 상황판: 중심/잔여 포지션 구분 표시 ── */
.opb-positions{display:flex;flex-direction:column;gap:9px;margin:10px 0 4px;}
.opb-center-line{font-size:13px;color:var(--v3-t1,#98a29d);}
.opb-center-line b{color:var(--v3-neg,#c47c80);font-weight:800;}
.opb-pos{border:none;border-left:2px solid var(--v3-line-soft,#252a2c);border-radius:0;padding:3px 0 3px 11px;background:transparent;}
.opb-pos-t{display:block;font-size:12px;font-weight:800;margin-bottom:3px;letter-spacing:.2px;}
.opb-pos-d{font-size:12.5px;color:var(--v3-t0,#e2e6e4);line-height:1.5;word-break:keep-all;}
.opb-pos-center{border-left-color:color-mix(in srgb,var(--v3-neg,#c47c80) 55%,transparent);background:transparent;}
.opb-pos-center .opb-pos-t{color:var(--v3-neg,#c47c80);}
.opb-pos-residual .opb-pos-t{color:var(--v3-t1,#98a29d);}
/* 거래소 실보유 포지션(SoT) + 상태 충돌 배너 (source-of-truth 정합) */
.opb-pos-exchange{border-left-color:color-mix(in srgb,var(--v3-brand,#5b8a72) 45%,transparent);}
.opb-pos-exchange .opb-pos-t{color:var(--v3-t1,#98a29d);}
.opb-conflict{font-size:12.5px;font-weight:700;color:var(--v3-t0,#e2e6e4);background:color-mix(in srgb,var(--v3-neg,#c47c80) 12%,transparent);border-left:3px solid var(--v3-neg,#c47c80);border-radius:4px;padding:6px 10px;margin:0 0 10px;}
.opb-conflict b{color:var(--v3-neg,#c47c80);}
/* 보호모드 '필요 조치'는 강한 빨강 대신 차분한 amber(공포 완화 · task §7) */
.opb-v.opb-sync{color:color-mix(in srgb,#e0a43b 80%,var(--v3-t1,#98a29d));font-weight:700;}
/* 기준가 돌파 안내(task §4): 차분한 amber 강조 · 공포 빨강 아님. 정보 전달용. */
.opb-cross{font-size:12.5px;color:var(--v3-t0,#e2e6e4);background:color-mix(in srgb,#e0a43b 12%,transparent);border-left:3px solid color-mix(in srgb,#e0a43b 60%,transparent);border-radius:4px;padding:6px 10px;margin:0 0 10px;line-height:1.5;}
.opb-cross b{color:color-mix(in srgb,#e0a43b 88%,var(--v3-t0,#e2e6e4));}
/* 익절 로그(정산성 기록) */
.pl-list{display:flex;flex-direction:column;gap:8px;}
.pl-row{padding:7px 10px;border-left:3px solid var(--v3-line-soft,#252a2c);border-radius:4px;background:color-mix(in srgb,var(--v3-t0,#e2e6e4) 3%,transparent);}
.pl-row.pl-pos{border-left-color:color-mix(in srgb,var(--v3-brand,#5b8a72) 55%,transparent);}
.pl-row.pl-warn{border-left-color:color-mix(in srgb,var(--v3-t1,#98a29d) 45%,transparent);}
.pl-row.pl-neg{border-left-color:color-mix(in srgb,var(--v3-neg,#c47c80) 50%,transparent);}
.pl-head{font-size:12.5px;font-weight:800;color:var(--v3-t0,#e2e6e4);margin-bottom:2px;}
.pl-body{font-size:12px;color:var(--v3-t1,#98a29d);line-height:1.5;word-break:keep-all;}
.pl-empty{padding:14px 10px;font-size:12.5px;text-align:center;}
.pl-settle{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;padding:8px 10px;margin-bottom:2px;border-left:3px solid color-mix(in srgb,var(--v3-brand,#5b8a72) 55%,transparent);border-radius:4px;background:color-mix(in srgb,var(--v3-brand,#5b8a72) 8%,transparent);}
.pl-settle-k{font-size:12px;font-weight:700;color:var(--v3-t1,#98a29d);}
.pl-settle-v{font-size:15px;font-weight:800;color:var(--v3-t0,#e2e6e4);font-variant-numeric:tabular-nums;}
.pl-settle-v.pos{color:var(--v3-up,#4c9a72);}
.pl-settle-v.neg{color:var(--v3-down,#c05b5b);}
.pl-settle-src{font-size:11px;color:var(--v3-t2,#6b756f);}
.settle-connect-note{font-size:12.5px;line-height:1.6;padding:8px 12px;border-left:3px solid color-mix(in srgb,var(--v3-t1,#98a29d) 40%,transparent);border-radius:4px;background:color-mix(in srgb,var(--v3-t0,#e2e6e4) 3%,transparent);}
.opb-dirs{display:flex;flex-direction:column;gap:6px;margin:8px 0 2px;}
.opb-dir{display:flex;align-items:baseline;gap:8px;font-size:12.5px;padding:2px 0 2px 11px;border-left:2px solid var(--v3-line-soft,#252a2c);}
.opb-dir-t{flex:0 0 auto;font-size:11.5px;font-weight:800;letter-spacing:.3px;}
.opb-dir b{color:var(--v3-t0,#e2e6e4);font-weight:700;}
.opb-dir-good{border-left-color:color-mix(in srgb,var(--v3-brand,#5b8a72) 55%,transparent);background:transparent;}
.opb-dir-good .opb-dir-t{color:var(--v3-brand-bright,#7fae94);}
.opb-dir-caution{border-left-color:color-mix(in srgb,var(--v3-neg,#c47c80) 55%,transparent);background:transparent;}
.opb-dir-caution .opb-dir-t{color:var(--v3-neg,#c47c80);}

/* ── 사운드(콘솔 알림) 헤더 배치 ── */
.ev-sound-hdr{display:inline-flex;align-items:center;gap:6px;}
.ev-sound-hdr .ev-snd-btn,.ev-sound-hdr .ev-snd-vol{background:var(--v3-bg2,#252a2c);border:1px solid var(--v3-line,#2e3437);color:var(--v3-t0,#e2e6e4);border-radius:8px;padding:5px 9px;font-size:11.5px;cursor:pointer;white-space:nowrap;}
.ev-sound-hdr .ev-snd-btn:hover,.ev-sound-hdr .ev-snd-vol:hover{border-color:var(--v3-brand,#5b8a72);}
.mb-snd{cursor:pointer;padding:5px 8px;}

/* ── 지갑·손익 KPI 스트립(상단 가로) ── */
/* KPI = 은은한 정보 카드(soft container). 강한 테두리 박스 아님 — 채움(bg1)으로 영역을 정의하고 보더는 배경과 거의 구분 안 되는 line-soft 로 아주 약하게.
   숫자가 먼저 보이고 테두리는 나중. 컨트롤 카드(v3-card)와 같은 full-width·좌우 padding(18px) 규격 → 상단 컨트롤/상황판과 좌우 기준선 일치.
   divider 는 밝은 칸막이 금지: gap 간격으로만 구분(칸막이선 없음). */
.kpi-strip{display:flex;flex-wrap:wrap;align-items:center;gap:12px 30px;margin:0;padding:13px 18px;background:var(--v3-bg1,#1e2224);border:1px solid var(--v3-line-soft,#252a2c);border-radius:var(--v3-radius,10px);box-shadow:none;box-sizing:border-box;}
.kpi{display:flex;flex-direction:column;gap:3px;min-width:96px;flex:0 1 auto;padding:0;border-right:none;}
.kpi:last-child{border-right:none;}
/* 모바일: 같은 soft container 안에서 균일 3열 그리드로 정돈(덜렁 흩어짐 방지·가로 스크롤 없음). 좌우 padding=다른 카드(15px)와 동일. */
@media (max-width:820px){
  .kpi-strip{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px 10px;padding:14px 15px;align-items:start;}
  .kpi{min-width:0;}
}
.kpi-k{font-size:11px;color:var(--v3-t1,#98a29d);letter-spacing:.2px;}
.kpi-v{font-size:15px;font-weight:800;color:var(--v3-t0,#e2e6e4);font-variant-numeric:tabular-nums;}
/* 수익/손실 숫자 색은 손익 전용(§1/§5): 수익=--v3-pos #6b9d84(브랜드 세이지 #7fae94 와 구분 → 세이지는 로고/활성탭 전용 유지), 손실=--v3-neg. */
.kpi-v.pos{color:var(--v3-pos,#6b9d84);} .kpi-v.neg{color:var(--v3-neg,#c47c80);}
.kpi-v.dim{color:var(--v3-t1,#98a29d);font-weight:700;}
.kpi-sub{font-size:10px;color:var(--v3-t1,#98a29d);opacity:.72;margin-top:1px;letter-spacing:.2px;}
.kpi-price .kpi-v{font-variant-numeric:tabular-nums;}

/* ── 대시보드 2컬럼: 좌=상황판(메인), 우=접이식 이벤트 패널 ── */
/* padding:0 로 레거시 .m-body(137행) 의 16px inset 제거 → grid 좌우 edge = KPI/컨트롤바와 동일 기준선(규격 통일) */
.dashboard-grid.app-grid.m-body{grid-template-columns:minmax(0,1fr) clamp(340px,28vw,420px);align-items:start;gap:18px;padding:0;max-width:none;margin:0;}
.dashboard-grid.app-grid.m-body.panel-collapsed{grid-template-columns:minmax(0,1fr) clamp(340px,28vw,420px);padding:0;max-width:none;margin:0;}
@media (max-width:820px){.dashboard-grid.app-grid.m-body,.dashboard-grid.app-grid.m-body.panel-collapsed{grid-template-columns:1fr;}}
/* ── PC(데스크톱 >820px): 우측 이벤트 패널 = 항상 고정폭 열림. X 닫기 없음·세로 막대 접힘 없음. 모바일 drawer(≤820)와 완전 분리. ──
   상황판 접기/펼치기 후에도 grid 규격(1fr 340px)·상단 정렬 고정 → 레이아웃 흔들림 방지. */
@media (min-width:821px){
  .dashboard-grid.app-grid.m-body,
  .dashboard-grid.app-grid.m-body.panel-collapsed{grid-template-columns:minmax(0,1fr) clamp(340px,28vw,420px);align-items:start;padding:0;max-width:none;margin:0;}
  .side-panel .sp-collapse{display:none;}                 /* PC: X 닫기 버튼 제거 */
  /* 방어: 혹시 collapsed 상태가 들어와도 세로 막대/세로 텍스트가 되지 않게 정상 패널로 렌더 */
  .side-panel.collapsed{align-items:stretch;padding:0;background:var(--v3-bg1);border-color:var(--v3-line);}
  .side-panel.collapsed .sp-reopen{writing-mode:horizontal-tb;transform:none;width:100%;}
}

/* ── 우측 접이식 사이드 패널 ── */
/* 우측 패널 = 원래 열린 v3-card 톤(bg1 + 얇은 line 보더, radius 10). sp-head 의 bg2 블록/무거운 divider 제거로 프레임 박스 느낌 약화. */
.side-panel{display:flex;flex-direction:column;background:var(--v3-bg1,#1e2224);border:1px solid var(--v3-card-border);border-radius:var(--v3-radius,10px);overflow:hidden;position:sticky;top:12px;max-height:calc(100vh - 120px);}
.side-panel.collapsed{align-items:center;padding:8px 0;background:transparent;border-color:transparent;}
.sp-reopen{writing-mode:vertical-rl;transform:rotate(180deg);background:var(--v3-bg2,#252a2c);border:1px solid var(--v3-line,#2e3437);color:var(--v3-t0,#e2e6e4);border-radius:9px;padding:12px 6px;font-size:12.5px;font-weight:700;cursor:pointer;letter-spacing:1px;}
.sp-reopen:hover{border-color:var(--v3-brand,#5b8a72);}
.sp-head{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px;border-bottom:1px solid var(--v3-line-soft,#252a2c);background:transparent;}
.sp-tabs{display:flex;gap:3px;flex-wrap:wrap;}
.sp-tab{background:transparent;border:1px solid transparent;color:var(--v3-t1,#98a29d);border-radius:7px;padding:5px 9px;font-size:12px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:4px;}
.sp-tab:hover{color:var(--v3-t0,#e2e6e4);background:var(--v3-hover,rgba(255,255,255,.03));}
.sp-tab.active{color:var(--v3-brand-bright,#7fae94);border-color:color-mix(in srgb,var(--v3-brand,#5b8a72) 40%,transparent);background:rgba(91,138,114,.10);}
.sp-badge{display:inline-grid;place-items:center;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:var(--v3-neg,#c47c80);color:#16191b;font-size:10px;font-weight:800;}
.sp-collapse{background:transparent;border:none;color:var(--v3-t1,#98a29d);font-size:14px;cursor:pointer;padding:2px 6px;border-radius:6px;}
.sp-collapse:hover{color:var(--v3-t0,#e2e6e4);background:var(--v3-hover,rgba(255,255,255,.04));}
.sp-body{overflow-y:auto;padding:8px 10px;flex:1 1 auto;}
.sp-events{display:flex;flex-direction:column;}
/* 금일 요약 탭(우측 패널) — 좌측 큰 카드에서 이동. 패널 내 간결 행(별도 박스 아님). */
.sp-today{display:flex;flex-direction:column;gap:2px;padding:4px 2px;}
.sp-today-head{font-size:12.5px;font-weight:700;color:var(--v3-t1,#98a29d);letter-spacing:.3px;margin:2px 0 8px;}
.sp-today-unit{font-size:11px;font-weight:600;color:var(--v3-t2,#626b67);margin-left:4px;}
.sp-today-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:7px 2px;border-bottom:1px solid var(--v3-line-soft,#252a2c);}
.sp-today-row:last-child{border-bottom:none;}
.sp-today-k{font-size:12.5px;color:var(--v3-t1,#98a29d);}
.sp-today-v{font-size:14px;font-weight:800;color:var(--v3-t0,#e2e6e4);font-variant-numeric:tabular-nums;}
.sp-today-v.pos{color:var(--v3-pos,#6b9d84);} .sp-today-v.neg{color:var(--v3-neg,#c47c80);} .sp-today-v.dim{color:var(--v3-t1,#98a29d);font-weight:700;}
.sp-more{margin-top:8px;text-align:center;}
.sp-morelink{background:transparent;border:1px solid var(--v3-line,#2e3437);color:var(--v3-brand-bright,#7fae94);border-radius:8px;padding:6px 12px;font-size:12px;cursor:pointer;}
.sp-morelink:hover{border-color:var(--v3-brand,#5b8a72);}
.sp-morelink-strong{background:rgba(91,138,114,.12);border-color:color-mix(in srgb,var(--v3-brand,#5b8a72) 45%,transparent);font-weight:700;padding:8px 14px;}
.sp-help{display:flex;flex-direction:column;gap:10px;}
.sp-help-item{font-size:12.5px;}
.sp-help-item b{color:var(--v3-brand-bright,#7fae94);display:block;margin-bottom:3px;font-size:12.5px;}
.sp-help-item p{margin:0;color:var(--v3-t1,#98a29d);line-height:1.6;}
.sp-help-item p b{display:inline;color:var(--v3-neg,#c47c80);}
.sp-help-context .sp-help-item{font-size:13px;}
.sp-help-context .sp-help-item p{line-height:1.65;}
/* 설정 탭(읽기 전용 요약) — 금일 요약과 같은 조용한 행 톤. 입력/토글 없음. */
.sp-set{display:flex;flex-direction:column;gap:2px;padding:4px 2px;}
.sp-set-head{font-size:12.5px;font-weight:700;color:var(--v3-t1,#98a29d);letter-spacing:.3px;margin:2px 0 8px;display:flex;align-items:center;gap:6px;}
.sp-set-ro{font-size:10.5px;font-weight:700;color:var(--v3-t2,#626b67);border:1px solid var(--v3-line,#2e3437);border-radius:5px;padding:1px 6px;}
.sp-set-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:7px 2px;border-bottom:1px solid var(--v3-line-soft,#252a2c);}
.sp-set-row:last-of-type{border-bottom:none;}
.sp-set-k{font-size:12.5px;color:var(--v3-t1,#98a29d);}
.sp-set-v{font-size:13.5px;font-weight:700;color:var(--v3-t0,#e2e6e4);text-align:right;overflow-wrap:anywhere;}
.sp-set-v.hot{color:var(--v3-brand-bright,#7fae94);} .sp-set-v.dim{color:var(--v3-t1,#98a29d);font-weight:600;}
.sp-set-note{font-size:11.5px;color:var(--v3-t2,#626b67);line-height:1.55;margin-top:9px;word-break:keep-all;}
.sp-set-note b{color:var(--v3-t1,#98a29d);font-weight:700;}
/* ── 알림/이벤트 항목별 ? 도움말(native <details> · 클릭 항목만 · 누적 아님). ── */
.evt-help.body{min-width:0;}
.evt-help-sum{list-style:none;cursor:pointer;display:block;}
.evt-help-sum::-webkit-details-marker{display:none;}
.evt-head{display:flex;align-items:center;gap:6px;min-width:0;}
.evt-head .msg{flex:1 1 auto;min-width:0;}
.evt-help-q{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid var(--v3-line,#2e3437);border-radius:50%;font-size:10px;font-weight:700;color:var(--v3-t2,#626b67);line-height:1;transition:.15s;}
.evt-help-sum:hover .evt-help-q{color:var(--v3-brand-bright,#7fae94);border-color:color-mix(in srgb,var(--v3-brand,#5b8a72) 45%,transparent);}
.evt-help[open]>.evt-help-sum .evt-help-q{color:var(--v3-brand-bright,#7fae94);border-color:var(--v3-brand,#5b8a72);background:rgba(91,138,114,.10);}
.evt-help-b{margin-top:6px;padding:8px 10px;background:var(--v3-bg2,#252a2c);border:1px solid var(--v3-line-soft,#252a2c);border-radius:8px;}
.evt-help-b p{margin:0;font-size:12px;color:var(--v3-t1,#98a29d);line-height:1.55;white-space:normal;word-break:keep-all;}
.evt-help-sum:focus-visible{outline:2px solid color-mix(in srgb,var(--v3-brand,#5b8a72) 55%,transparent);outline-offset:2px;border-radius:6px;}
/* ── 기준선 탭: 세로 가격 지도(미니 차트). 현재가/좋은(익절)/주의(방어)/기준/진입 을 y=가격비율로 배치. ── */
.bl-wrap{display:flex;flex-direction:column;gap:9px;padding:2px 2px 4px;}
.bl-summary{font-size:12.5px;font-weight:800;color:var(--v3-t0,#e2e6e4);letter-spacing:.2px;line-height:1.4;}
.bl-map{position:relative;}
.bl-cap{font-size:9.5px;font-weight:700;color:var(--v3-t2,#626b67);letter-spacing:1px;text-align:center;}
.bl-cap-top{margin-bottom:3px;} .bl-cap-bot{margin-top:3px;}
.bl-plot{position:relative;height:212px;border-radius:10px;border:1px solid var(--v3-line-soft,#252a2c);background:linear-gradient(180deg,rgba(196,124,128,.055),rgba(0,0,0,0) 42%,rgba(0,0,0,0) 58%,rgba(107,157,132,.06));overflow:hidden;}
.bl-rail{position:absolute;left:15px;top:8px;bottom:8px;width:2px;border-radius:2px;background:var(--v3-line,#2e3437);}
.bl-zone{position:absolute;left:0;right:0;pointer-events:none;}
.bl-zone-good{background:linear-gradient(90deg,color-mix(in srgb,var(--v3-pos,#6b9d84) 20%,transparent),transparent 82%);}
.bl-zone-caution{background:linear-gradient(90deg,color-mix(in srgb,var(--v3-neg,#c47c80) 20%,transparent),transparent 82%);}
.bl-node{position:absolute;left:0;right:8px;transform:translateY(-50%);display:block;}
.bl-node .bl-dot{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:10px;height:10px;border-radius:50%;background:var(--v3-t2,#626b67);box-shadow:0 0 0 3px var(--v3-bg1,#1e2224);z-index:2;}
.bl-node .bl-rule{position:absolute;left:15px;right:0;top:50%;height:1px;background:var(--v3-line,#2e3437);}
.bl-meta{position:relative;z-index:2;margin-left:30px;display:inline-flex;align-items:baseline;gap:7px;padding:1px 6px 1px 3px;border-radius:5px;background:linear-gradient(90deg,var(--v3-bg1,#1e2224) 78%,transparent);max-width:calc(100% - 34px);}
.bl-price{font-size:12px;font-weight:800;color:var(--v3-t0,#e2e6e4);font-variant-numeric:tabular-nums;flex:0 0 auto;}
.bl-lab{font-size:10.5px;color:var(--v3-t1,#98a29d);line-height:1.25;white-space:normal;word-break:keep-all;}
.bl-good .bl-dot{background:var(--v3-pos,#6b9d84);} .bl-good .bl-rule{background:color-mix(in srgb,var(--v3-pos,#6b9d84) 50%,transparent);} .bl-good .bl-lab{color:var(--v3-pos,#6b9d84);font-weight:700;}
.bl-caution .bl-dot{background:var(--v3-neg,#c47c80);} .bl-caution .bl-rule{background:color-mix(in srgb,var(--v3-neg,#c47c80) 50%,transparent);} .bl-caution .bl-lab{color:var(--v3-neg,#c47c80);font-weight:700;}
.bl-prev .bl-dot,.bl-entry .bl-dot{background:var(--v3-t2,#626b67);}
.bl-current .bl-dot{width:13px;height:13px;background:var(--v3-brand-bright,#7fae94);box-shadow:0 0 0 3px var(--v3-bg1,#1e2224),0 0 11px 2px color-mix(in srgb,var(--v3-brand-bright,#7fae94) 55%,transparent);}
.bl-current .bl-rule{height:2px;background:var(--v3-brand-bright,#7fae94);}
.bl-current .bl-meta{background:linear-gradient(90deg,var(--v3-bg2,#252a2c) 80%,transparent);}
.bl-current .bl-price{color:var(--v3-brand-bright,#7fae94);font-size:12.5px;}
.bl-current .bl-lab{color:var(--v3-brand-bright,#7fae94);font-weight:700;}
.bl-note{font-size:11.5px;color:var(--v3-t1,#98a29d);line-height:1.5;padding:0 2px;word-break:keep-all;}
.bl-empty{align-items:flex-start;gap:5px;padding:22px 12px;}
.bl-empty-t{font-size:13px;font-weight:700;color:var(--v3-t0,#e2e6e4);}
.bl-empty-s{font-size:12px;color:var(--v3-t1,#98a29d);line-height:1.55;word-break:keep-all;}
/* ── AlphaX 다크톤 스크롤바(전역): 얇고 조용하게 · 투명 트랙 · muted green-gray thumb · hover 때만 살짝 밝게. ── */
*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--v3-line,#2e3437) 78%,var(--v3-brand,#5b8a72) 22%) transparent;}
::-webkit-scrollbar{width:8px;height:8px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--v3-line,#2e3437) 78%,var(--v3-brand,#5b8a72) 22%);border-radius:8px;border:2px solid transparent;background-clip:padding-box;}
::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--v3-brand,#5b8a72) 50%,var(--v3-line,#2e3437));background-clip:padding-box;}
::-webkit-scrollbar-corner{background:transparent;}
/* 모바일: 우측 패널이 하단 접이식 섹션으로. sticky 해제, 전체폭. */
@media (max-width:820px){
  .side-panel{position:static;max-height:none;}
  .side-panel.collapsed{padding:6px 0;}
  .sp-reopen{writing-mode:horizontal-tb;transform:none;width:100%;padding:11px;border-radius:10px;}
  .sp-body{max-height:52vh;}
}

/* ═══════════════════════════════════════════════════════════════════════════
   AlphaX v3 FINAL TONE LOCK — 20260711 (ALPHAX_V3_FINAL_OVERRIDE_LAYER_TONE_LOCK)
   목적: 레거시(MVP/v3/v4/v5/v6/v12/핫픽스) 누적 규칙 위에서 main console 주요 컴포넌트 톤을
         owner 확정 v3 세이지그린 다크로 "최종 잠금". 파일 맨 아래(cascade 최후) → 순서로 승리.
   원칙: 카드/패널 테두리 저대비 세이지 · 활성탭/로고에만 세이지 · 손익 숫자만 pos/neg · 오프톤 차단.
   기존 규칙 삭제 없음. !important 는 기존 규칙이 이미 !important 인 속성에서만 제한적으로 사용.
   ═══════════════════════════════════════════════════════════════════════════ */
:root{
  /* 저대비 세이지 테두리(단일 소스 · owner 권장 .10~.14 → 큰 카드 .11, 내부 보조 .06) */
  --v3-card-border:rgba(127,174,148,.11);
  --v3-card-border-soft:rgba(127,174,148,.06);
  --v3-tab-active-bg:rgba(91,138,114,.14);
  --v3-sage-line:rgba(127,174,148,.40);
}
/* A. 배경: 따뜻한 다크 그레이 고정 */
body{background:var(--v3-bg0)!important;color:var(--v3-t0);}
/* B. 큰 카드/패널: 저대비 세이지 테두리 통일 + 그림자 제거(선으로 갇힌 느낌 제거) */
.v3-card,.card,.m-card,.cf-card,.cf-group,.opb-card,.opb-card.opb-primary,.side-panel,.kpi-strip,.bl-plot,.mode-banner,.m-board,.m-range,
.app-content-shell .v3-card,.app-content-shell .card,.app-content-shell .cf-card,.app-content-shell .m-card,.app-content-shell .rsi-panel,.app-content-shell .m-board,.app-content-shell .m-range{
  border-color:var(--v3-card-border)!important;box-shadow:none!important;
}
.v3-card,.card,.opb-card,.side-panel,.kpi-strip{background:var(--v3-bg1)!important;}
/* C. 내부 보조 카드/행: 더 낮은 대비(중첩 테두리 최소화) */
.stat,.position-line{border-color:var(--v3-card-border-soft)!important;}
/* D. 헤더/푸터: 저대비 세이지 */
.app-header,.m-header,.mr-header,.app-footer,.m-foot{background:var(--v3-bg1)!important;border-color:var(--v3-card-border)!important;}
/* E. 활성탭: 세이지 분명하게(텍스트=brand-bright + 저채도 세이지 배경 + 세이지 밑줄). 비활성=muted gray */
.v3-tab.active,.m-tab.active{color:var(--v3-brand-bright)!important;background:var(--v3-tab-active-bg)!important;border-bottom-color:var(--v3-brand-bright)!important;}
.sp-tab.active{color:var(--v3-brand-bright)!important;background:var(--v3-tab-active-bg)!important;border-color:color-mix(in srgb,var(--v3-brand) 40%,transparent)!important;}
.v3-tab:not(.active),.m-tab:not(.active),.sp-tab:not(.active){color:var(--v3-t1);}
/* F. 로고: 세이지 고정(실제 렌더 클래스 .ax-x 포함 · 레거시 블루 #7dd3fc / 시안 #00d8e6 차단) */
.m-logo b,.ax-word .x,.ax-x,.ax-name .ax-x,.v3-logo .ax-x,.v3-logo .x,.logo .x,.mr-brand b{color:var(--v3-brand-bright)!important;}
/* G. 손익 색: 숫자 전용(수익 --v3-pos #6b9d84 · 손실 --v3-neg #c47c80). 브랜드 세이지와 분리. */
.kpi-v.pos,.summary-row .v.pos,.stat .v.pos,.sp-today-v.pos,.money-safe{color:var(--v3-pos)!important;}
.kpi-v.neg,.summary-row .v.neg,.stat .v.neg,.sp-today-v.neg,.money-moves{color:var(--v3-neg)!important;}
.money-safe,.money-moves{background:transparent!important;}
/* H. 오프톤 차단: 레거시 네온/블루가 main console 핵심색으로 새지 않게 */
.warning-bar.mode-dry{background:var(--v3-bg2)!important;color:var(--v3-t1)!important;}
.mode-dry{background:var(--v3-bg2)!important;}

/* ───── SAGE ACCENT RESTORE — 20260711 (ALPHAX_V3_SAGE_ACCENT_RESTORE) ─────
   세이지 포인트를 실제 렌더 요소에 제한적으로 복원: 로고X(.ax-x)·활성탭·우측탭·현재가 마커·시작버튼·검증배지.
   카드 전체/배경엔 세이지 확산 금지. 손익색은 손익 숫자 전용 유지. */
/* 상단 활성탭: 세이지 pill 이 또렷하게(텍스트+틴트 배경+세이지 밑줄) */
.v3-tab.active,.m-tab.active{color:var(--v3-brand-bright)!important;background:var(--v3-tab-active-bg)!important;border-bottom:2px solid var(--v3-brand-bright)!important;}
/* 우측 패널 활성탭: 세이지 텍스트 + 세이지 테두리(.40) + 저채도 세이지 배경(.14) */
.sp-tab.active{color:var(--v3-brand-bright)!important;background:var(--v3-tab-active-bg)!important;border-color:var(--v3-sage-line)!important;}
/* 현재가 마커/라인: 세이지 고정(형광 아님 · brand-bright + 은은한 글로우) */
.bl-current .bl-dot{background:var(--v3-brand-bright)!important;}
.bl-current .bl-rule{background:var(--v3-brand-bright)!important;}
.bl-current .bl-price{color:var(--v3-brand-bright)!important;}
/* 시작 버튼(.m-start): 무채색/네온(#86efac) → 차분한 세이지 계열(테두리·텍스트 중심, 과한 배경 금지) */
.m-start{background:rgba(91,138,114,.14)!important;border:1px solid var(--v3-sage-line)!important;color:var(--v3-brand-bright)!important;}
.m-start:hover{background:rgba(91,138,114,.20)!important;}
/* 검증 완료 배지: 세이지 포인트(얇은 테두리/텍스트 중심 · 과한 초록 배경 금지) */
.verify-badge.ok{color:var(--v3-brand-bright)!important;border-color:var(--v3-sage-line)!important;background:transparent!important;}

/* ── 세이브존 정책 선택기(sz-pol-*) · Config 저장/적용 모달(cfg-modal-*) — sage 다크 톤 ── */
.sz-pol{margin:14px 0;padding:14px;background:var(--v3-bg1);border:1px solid var(--v3-card-border);border-radius:var(--v3-radius);}
.sz-pol-head{display:flex;flex-direction:column;gap:2px;margin-bottom:10px;}
.sz-pol-title{font-weight:600;color:var(--v3-t0);font-size:14px;}
.sz-pol-sub{color:var(--v3-t2);font-size:11px;}
.sz-pol-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;}
.sz-pol-axis{display:flex;flex-direction:column;gap:5px;}
.sz-pol-flabel{color:var(--v3-t1);font-size:12px;font-weight:600;}
.sz-pol-desc{color:var(--v3-t2);font-size:11px;line-height:1.4;}
.sz-pol-warn{color:var(--v3-neg);font-size:11px;}
.sz-pol-blocked{color:var(--v3-neg);font-size:11px;font-weight:600;border:1px dashed var(--v3-line);border-radius:6px;padding:3px 7px;}
.sz-pol-cond{margin-top:12px;padding-top:10px;border-top:1px solid var(--v3-line-soft);}
.sz-pol-cond-t{color:var(--v3-t1);font-size:12px;font-weight:600;margin-bottom:8px;}
.sz-pol-select,.sz-pol-field.ax-input,.sz-pol-field.ax-select{background:var(--v3-bg2)!important;border:1px solid var(--v3-line)!important;color:var(--v3-t0)!important;border-radius:var(--v3-radius-sm)!important;}
.cfg-modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:16px;z-index:120;}
.cfg-modal-card{background:var(--v3-bg1);border:1px solid var(--v3-card-border);border-radius:var(--v3-radius);padding:20px;max-width:460px;width:100%;box-shadow:0 12px 40px rgba(0,0,0,.4);}
.cfg-modal-title{font-weight:600;font-size:15px;color:var(--v3-t0);margin-bottom:12px;}
.cfg-modal-fail .cfg-modal-title{color:var(--v3-neg);}
.cfg-modal-body{color:var(--v3-t1);font-size:13px;line-height:1.5;display:flex;flex-direction:column;gap:7px;}
.cfg-modal-lead{color:var(--v3-t0);font-weight:500;}
.cfg-modal-row{display:flex;justify-content:space-between;gap:12px;}
.cfg-modal-k{color:var(--v3-t2);}
.cfg-modal-v{color:var(--v3-t0);font-variant-numeric:tabular-nums;}
.cfg-modal-timing{color:var(--v3-brand-bright);font-size:12px;}
.cfg-modal-warn{color:var(--v3-neg);font-size:12px;}
.cfg-modal-note{color:var(--v3-t2);font-size:11px;}
.cfg-modal-errs{margin:0;padding-left:18px;color:var(--v3-neg);}
.cfg-modal-fields{color:var(--v3-t1);font-size:12px;}
.cfg-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;}
.cfg-modal-ok,.cfg-modal-confirm{background:var(--v3-bg2);border:1px solid var(--v3-line);color:var(--v3-t0);border-radius:var(--v3-radius-sm);padding:8px 16px;cursor:pointer;font-size:13px;}
.cfg-modal-confirm{background:rgba(91,138,114,.16);border-color:var(--v3-sage-line);color:var(--v3-brand-bright);font-weight:600;}
.cfg-modal-confirm:hover{background:rgba(91,138,114,.24);}
.cfg-modal-ghost{background:transparent;border:1px solid var(--v3-line);color:var(--v3-t1);border-radius:var(--v3-radius-sm);padding:8px 16px;cursor:pointer;font-size:13px;}
.cfg-modal-ghost:hover{background:var(--v3-bg2);}
.cfg-modal-actions{flex-wrap:wrap;}
/* 세이브존 활성화 2단계 모달: 정책 요약이 길어 스크롤 · 액션은 하단 고정 톤 */
.sz-act-card{max-height:86vh;overflow-y:auto;max-width:480px;}
