:root { --quant-blue:var(--accent); --quant-ink:var(--fg); --quant-line:var(--border); }
.algorithm-summary { padding:8px 10px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); }.algorithm-summary h3 { margin:0 0 11px; color:var(--quant-ink); font-size:15px; }.algorithm-summary > div { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }.algorithm-summary article { padding:11px; border-radius:var(--radius); background:var(--surface); }.algorithm-summary b { color:var(--fg); }.algorithm-summary p { margin:4px 0 0; font-size:12px; line-height:1.55; } @media (max-width:700px) { .algorithm-summary > div { grid-template-columns:1fr; } }
.stack-summary { margin-top:14px; }.stack-flow { display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding:6px 8px; border-radius:var(--radius); color:var(--fg-2); background:var(--surface-2); font-size:13px; font-weight:700; }.stack-flow span { padding:7px 10px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); }.stack-flow i { color:var(--info); font-style:normal; }
.quant-page { min-height:calc(100vh - 57px); background:var(--bg); }.quant-page .quant-shell { width:100%; margin:0; padding:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; align-items:start; }
.quant-page .quant-shell > :is(.quant-hero, .quant-stats, .quickstart, .strategy-lab, .quant-guide-card, [data-quant-tab="schema"], [data-quant-tab="algorithm"]) { grid-column:1 / -1; }
@media (max-width:1100px) { .quant-page .quant-shell { grid-template-columns:minmax(0,1fr); } }
.factor-body { display:grid; gap:8px; padding:8px 10px; color:var(--muted); font-size:13px; line-height:1.65; }.factor-body > p { margin:0; }.factor-body .run { width:100%; margin:0; }.factor-result { min-height:60px; padding:6px 8px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); }.factor-result p { margin:12px 0; }.factor-result > small { color:var(--muted); font-size:11px; }.factor-metrics { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }.factor-metrics span { padding:4px 8px; border:1px solid var(--border); background:var(--surface-2); }.factor-metrics small,.factor-metrics b { display:block; }.factor-metrics small { color:var(--muted); font-size:10px; }.factor-metrics b { margin-top:1px; color:var(--fg); font-family:var(--font-mono); font-size:14px; }.factor-exposures { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin:0; padding:0; list-style:none; }.factor-exposures li { display:flex; justify-content:space-between; gap:8px; padding:3px 8px; border:1px solid var(--quant-line); border-radius:var(--radius); background:var(--surface); font-size:12px; }.factor-exposures b { color:var(--info); } @media (max-width:700px) { .factor-metrics { grid-template-columns:repeat(2,1fr); }.factor-exposures { grid-template-columns:1fr; } }
.academy-shell.quant-layout { grid-template-columns:288px minmax(0,1fr); min-height:calc(100vh - 57px); }.academy-sidebar.quant-sidebar { top:0; height:calc(100dvh - 110px); }.academy-content.quant-shell { width:auto; max-width:1680px; margin:0; padding:16px clamp(18px,2.2vw,36px) 30px; }.quant-sidebar .academy-menu-item { padding:8px 11px 8px 16px; font-size:12px; }.quant-sidebar .academy-menu-item i { width:18px; margin-right:7px; }.quant-sidebar .academy-menu-item.active { box-shadow:inset 3px 0 0 var(--accent); }.quant-sidebar button:hover,.quant-sidebar button.active { color:var(--accent-dark); background:var(--info-bg); }.quant-hero { padding:13px 18px; }.quant-hero h1 { font-size:19px; }.quant-hero p { font-size:14px; }.quant-result .table-wrap { max-height:360px; overflow:auto; }.quant-result table { min-width:760px; }.quant-result th,.quant-result td { padding:8px; font-size:11px; }
.academy-sidebar.quant-sidebar .quant-side-head { padding:25px 22px 20px; border-bottom:1px solid var(--border); background:var(--surface-2); }.academy-sidebar.quant-sidebar .quant-side-head h1 { margin:5px 0 7px; color:var(--fg); font-size:21px; }.academy-sidebar.quant-sidebar .quant-side-head p { color:var(--muted); font-size:12px; }.academy-sidebar.quant-sidebar .academy-menu-item { padding:8px 11px 8px 36px; color:var(--muted); font-size:12px; }.academy-sidebar.quant-sidebar .academy-menu-item i { position:absolute; left:19px; width:18px; margin:0; color:var(--accent); }.academy-sidebar.quant-sidebar .academy-menu-item { position:relative; }.academy-hero.quant-hero { padding:13px 18px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface-2); }.academy-hero.quant-hero h2 { margin:0; color:var(--fg); font-size:19px; }.academy-hero.quant-hero p { color:var(--fg-2); font-size:14px; }
.backtest-meaning { margin:10px 0 0; padding:9px 11px; border-radius:var(--radius); color:var(--warn); background:var(--warn-bg); font-size:12px; line-height:1.55; }.backtest-meaning b { color:var(--warn); }
/* 기존 분석 화면과 동일한 공통 레이아웃·메뉴 규격을 마지막에 적용한다. */
.academy-shell.quant-layout { grid-template-columns:288px minmax(0,1fr); min-height:calc(100vh - 57px); }.academy-sidebar.quant-sidebar { position:sticky; top:0; height:calc(100dvh - 110px); }.academy-content.quant-shell { width:auto; max-width:1680px; margin:0; padding:16px clamp(18px,2.2vw,36px) 30px; }.quant-sidebar .academy-menu-item { padding:8px 11px 8px 16px; font-size:12px; }.quant-sidebar .academy-menu-item i { width:18px; margin-right:7px; }.quant-sidebar .academy-menu-item.active { box-shadow:inset 3px 0 0 var(--accent); }.quant-sidebar button:hover,.quant-sidebar button.active { color:var(--accent-dark); background:var(--info-bg); }.quant-hero { padding:13px 18px; }.quant-result .table-wrap { max-height:360px; overflow:auto; }.quant-result table { min-width:760px; }.quant-result th,.quant-result td { padding:8px; font-size:11px; }
.strategy-body { display:grid; gap:8px; padding:8px 10px; }.strategy-lead { margin:0; color:var(--muted); font-size:13px; }.strategy-buttons { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }.strategy-buttons button { display:grid; gap:2px; padding:6px 8px; border:1px solid var(--quant-line); border-radius:var(--radius-xs); color:var(--fg-2); background:var(--surface); font:inherit; text-align:left; cursor:pointer; }.strategy-buttons button:hover,.strategy-buttons button.active { border-color:var(--quant-blue); color:var(--fg); background:var(--surface-2); box-shadow:inset 2px 0 0 var(--accent); }.strategy-buttons b { color:var(--quant-blue); font-size:11px; }.strategy-buttons span { color:var(--quant-ink); font-size:13px; font-weight:700; }.strategy-buttons small { color:var(--muted); font-size:11px; }.strategy-result { min-height:80px; padding:8px 10px; border:1px solid var(--border); border-radius:var(--radius); color:var(--muted); background:var(--surface); font-size:13px; }.strategy-result > strong,.strategy-result > span { display:block; }.strategy-result > span { margin-top:3px; color:var(--muted); font-size:12px; }.strategy-result-head { display:flex; flex-wrap:wrap; gap:9px; align-items:center; }.strategy-result-head span { margin-right:auto; color:var(--quant-ink); font-weight:700; }.strategy-result-head b { padding:4px 7px; border-radius:var(--radius); color:var(--up); background:var(--up-bg); font-size:12px; }.strategy-result-head em { padding:4px 7px; border-radius:var(--radius); color:var(--warn); background:var(--warn-bg); font-size:12px; font-style:normal; }.strategy-result dl { display:grid; grid-template-columns:135px 1fr; gap:7px 12px; margin:13px 0 0; }.strategy-result dt { color:var(--muted); font-weight:700; }.strategy-result dd { margin:0; }.strategy-result p { margin:13px 0 0; padding-top:11px; border-top:1px solid var(--quant-line); font-size:12px; }.strategy-disclaimer { padding:11px 13px; border-left:2px solid var(--warn); border-radius:0 var(--radius) var(--radius) 0; color:var(--warn); background:var(--warn-bg); font-size:12px; line-height:1.6; } @media (max-width:1050px) { .strategy-buttons { grid-template-columns:repeat(2,minmax(0,1fr)); } } @media (max-width:680px) { .strategy-buttons { grid-template-columns:1fr; }.strategy-result dl { grid-template-columns:1fr; gap:2px; }.strategy-result dd { margin-bottom:8px; } }
.quickstart { scroll-margin-top:70px; margin:0; padding:8px 10px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface-2); }.quickstart-head span { color:var(--quant-blue); font-size:11px; font-weight:700; letter-spacing:.08em; }.quickstart-head h2 { margin:2px 0 6px; color:var(--quant-ink); font-size:14px; }.quickstart ol { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin:0; padding:0; list-style:none; }.quickstart li { display:flex; gap:8px; padding:6px 8px; border:1px solid var(--quant-line); border-radius:var(--radius); background:var(--surface); }.quickstart li > b { display:grid; flex:none; place-items:center; width:20px; height:20px; border-radius:0; font-family:var(--font-mono); font-size:11px; color:var(--accent-ink); background:var(--quant-blue); }.quickstart strong { color:var(--quant-ink); font-size:13px; }.quickstart p { margin:4px 0 0; color:var(--muted); font-size:12px; line-height:1.55; }.quickstart em { color:var(--accent-dark); font-style:normal; font-weight:700; }.quickstart-tip { margin:6px 0 0; padding:5px 8px; border-radius:var(--radius); color:var(--muted); background:var(--surface-2); font-size:12px; }.quickstart-tip b,.quickstart-tip strong { color:var(--fg); } @media (max-width:1050px) { .quickstart ol { grid-template-columns:1fr; } }
.system-store-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }.system-store-grid article { padding:8px 10px; border:1px solid var(--quant-line); border-radius:var(--radius); background:var(--surface); }.system-store-grid span { color:var(--quant-blue); font-size:11px; font-weight:800; letter-spacing:.04em; }.system-store-grid h3 { margin:7px 0; color:var(--quant-ink); font-size:15px; }.system-store-grid p { margin:0; color:var(--muted); font-size:13px; line-height:1.65; }.erd-map { padding:15px 17px; overflow:auto; border:1px solid var(--border); border-radius:var(--radius); color:var(--fg-2); background:var(--bg); font:13px/1.8 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; white-space:pre; } @media (max-width:860px) { .system-store-grid { grid-template-columns:1fr; } .erd-map { white-space:pre-wrap; font-size:12px; } }
.guide-body { display:grid; gap:10px; padding:8px 10px; color:var(--fg-2); font-size:13px; line-height:1.65; }.guide-intro,.guide-warning { padding:6px 10px; border-left:2px solid var(--quant-blue); border-radius:0 var(--radius) var(--radius) 0; background:var(--surface-2); }.guide-intro strong,.guide-warning b { color:var(--fg); }.dataset-grid,.schema-details,.case-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }.dataset-grid article,.schema-details article,.case-grid article { padding:8px 10px; border:1px solid var(--quant-line); border-radius:var(--radius); background:var(--surface); }.dataset-grid h3,.schema-details h3,.case-grid h3 { margin:0 0 8px; color:var(--quant-ink); font-size:14px; }.dataset-grid dl { margin:0; }.dataset-grid dt { margin-top:6px; color:var(--fg); font-weight:700; }.dataset-grid dt:first-child { margin-top:0; }.dataset-grid dd { margin:2px 0 0; color:var(--muted); }.guide-example { display:grid; gap:5px; padding:13px 15px; border-radius:var(--radius); color:var(--fg-2); background:var(--bg); border:1px solid var(--border); }.guide-example span { color:var(--accent); font-size:11px; font-weight:700; }.guide-example code { overflow:auto; white-space:nowrap; font-size:12px; }.guide-note { margin:0; color:var(--muted); font-size:12px; }.schema-flow { display:grid; grid-template-columns:1fr auto 1fr auto 1fr auto 1fr; gap:9px; align-items:center; }.schema-flow article { min-height:120px; padding:8px 10px; border:1px solid var(--quant-line); border-radius:var(--radius); background:var(--surface); }.schema-flow article > b { display:grid; place-items:center; width:20px; height:20px; border-radius:0; color:var(--accent-ink); background:var(--quant-blue); }.schema-flow h3 { margin:8px 0 4px; color:var(--quant-ink); font-size:13px; }.schema-flow p,.schema-details p,.case-grid p { margin:0; font-size:12px; }.schema-flow > i { color:var(--quant-blue); font-size:20px; font-style:normal; }.howto { display:grid; gap:9px; margin:0; padding:0; counter-reset:steps; list-style:none; }.howto li { display:grid; grid-template-columns:175px 1fr; gap:10px; padding:5px 8px; border:1px solid var(--quant-line); border-radius:var(--radius); background:var(--surface); }.howto b { color:var(--fg); }.howto em { color:var(--info); font-style:normal; font-weight:700; }.case-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.case-grid span { color:var(--info); font-size:11px; font-weight:700; }.case-grid ul { margin:10px 0 0; padding-left:18px; color:var(--muted); font-size:12px; } @media (max-width:1050px) { .dataset-grid { grid-template-columns:1fr; }.schema-flow { grid-template-columns:repeat(2,minmax(0,1fr)); }.schema-flow > i { display:none; }.schema-flow article { min-height:0; }.schema-details { grid-template-columns:1fr; } } @media (max-width:680px) { .guide-body { padding:14px; }.case-grid { grid-template-columns:1fr; }.howto li { grid-template-columns:1fr; gap:4px; }.guide-example code { white-space:normal; } }
.quant-layout { display:grid; grid-template-columns:296px minmax(0,1fr); min-height:calc(100vh - 53px); font-family:Pretendard,sans-serif; }.quant-sidebar { position:sticky; top:53px; align-self:start; height:calc(100vh - 53px); border-right:1px solid var(--quant-line); background:var(--surface); }.quant-side-head { padding:28px 24px 23px; border-bottom:1px solid var(--quant-line); }.quant-side-head span { color:var(--quant-blue); font-size:11px; font-weight:700; letter-spacing:.1em; }.quant-side-head strong { display:block; margin-top:9px; color:var(--quant-ink); font-size:21px; }.quant-side-head p { margin:6px 0 0; color:var(--muted); font-size:12px; }.quant-sidebar nav { display:grid; gap:4px; padding:16px 12px; }.quant-sidebar button { width:100%; padding:11px 12px; border:0; border-radius:var(--radius); color:var(--info); background:transparent; font:inherit; font-size:13px; font-weight:700; text-align:left; cursor:pointer; }.quant-sidebar button i { width:21px; color:var(--quant-blue); }.quant-sidebar button:hover,.quant-sidebar button.active { color:var(--info); background:var(--info-bg); }.quant-side-note { margin:10px 18px; padding:12px; border-radius:var(--radius); color:var(--muted); background:var(--surface-2); font-size:11px; line-height:1.55; }.quant-side-note i { color:var(--quant-blue); margin-right:5px; }.quant-shell { width:auto; min-width:0; margin:0; padding:32px 32px 58px; }.quant-hero { scroll-margin-top:70px; padding:6px 10px; border:1px solid var(--border); border-left:2px solid var(--accent); border-radius:0; background:var(--surface); }.quant-hero span { color:var(--quant-blue); font-family:var(--font-mono); font-size:11px; font-weight:700; letter-spacing:.1em; }.quant-hero h1 { margin:2px 0; color:var(--quant-ink); font-size:16px; }.quant-hero p { margin:0; color:var(--muted); font-size:12.5px; }.quant-stats { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:0; padding:4px 10px; border:1px solid var(--quant-line); border-radius:0; color:var(--fg-2); background:var(--surface); font-size:13px; }.quant-stats b { color:var(--up); }.quant-stats span { padding-left:10px; border-left:1px solid var(--border); }.quant-card { scroll-margin-top:70px; margin-top:0; overflow:hidden; border:1px solid var(--quant-line); border-radius:0; background:var(--surface); box-shadow:none; }.quant-card header { display:flex; gap:8px; align-items:center; padding:4px 8px; border-bottom:1px solid var(--quant-line); background:var(--surface-2); }.quant-card header b { display:grid; place-items:center; min-width:22px; height:18px; padding:0 4px; border-radius:0; font-family:var(--font-mono); font-size:10.5px; color:var(--accent-ink); background:var(--quant-blue); }.quant-card h2 { margin:0; color:var(--quant-ink); font-size:13px; }.quant-card header p { margin:0; color:var(--muted); font-size:11.5px; }.quant-controls { display:grid; grid-template-columns:minmax(160px,1fr) repeat(3,auto); gap:6px; align-items:end; padding:8px 10px 0; }.quant-controls label { display:grid; gap:3px; color:var(--muted); font-size:11px; font-weight:700; }.quant-controls input { height:28px; padding:0 8px; border:1px solid var(--border-strong); border-radius:var(--radius-xs); background:var(--bg); color:var(--fg); font:inherit; font-family:var(--font-mono); font-size:12.5px; font-weight:700; }.quant-controls button,.run { height:28px; padding:0 12px; border:0; border-radius:var(--radius-xs); color:var(--accent-ink); background:var(--quant-blue); font:inherit; font-size:13px; font-weight:700; cursor:pointer; }.quant-card pre { min-height:90px; margin:8px 10px; padding:8px 10px; overflow:auto; border-radius:var(--radius); color:var(--fg-2); background:var(--bg); border:1px solid var(--border); font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace; white-space:pre-wrap; }.quant-result { min-height:60px; margin:0 10px 10px; padding:6px 8px; overflow:auto; border:1px solid var(--quant-line); border-radius:0; color:var(--fg-2); font-size:12px; line-height:1.6; }.run { width:calc(100% - 20px); margin:8px 10px 0; }.table-wrap { overflow:auto; }.quant-result table { width:100%; min-width:650px; border-collapse:collapse; }.quant-result th,.quant-result td { padding:8px; border-bottom:1px solid var(--border); text-align:right; white-space:nowrap; }.quant-result th { color:var(--muted); background:var(--surface-2); font-size:10.5px; }.quant-result td { font-size:11px; }.quant-result th:first-child,.quant-result td:first-child { text-align:left; }.quant-result strong { color:var(--fg); }.quant-result small { color:var(--muted); }.error { color:var(--down); }.empty { margin:0; color:var(--muted); } @media (max-width:860px) { .quant-layout { grid-template-columns:1fr; }.quant-sidebar { position:relative; top:0; height:auto; border-right:0; border-bottom:1px solid var(--quant-line); }.quant-side-head { padding:18px; }.quant-sidebar nav { grid-template-columns:repeat(2,minmax(0,1fr)); padding:10px; }.quant-side-note { display:none; } } @media (max-width:680px) { .quant-shell { width:auto; padding:18px 10px 32px; }.quant-hero { padding:20px; }.quant-hero h1 { font-size:22px; }.quant-controls { grid-template-columns:1fr; }.quant-controls button { width:100%; }.quant-stats span { border-left:0; padding-left:0; }.quant-sidebar nav { grid-template-columns:1fr; } }

/* quantlab 백테스트 결과: 자산·낙폭 차트, 지표표, 계산 영수증 */
.bt-charts { margin:12px 0; }.bt-chart { height:240px; border:1px solid var(--quant-line); border-radius:var(--radius); overflow:hidden; }.bt-chart-dd { height:130px; margin-top:6px; }.bt-legend { display:flex; flex-wrap:wrap; gap:6px 14px; align-items:center; margin:6px 0 0 !important; padding:0 !important; border:0 !important; color:var(--muted); font-size:11px !important; }.bt-legend i { display:inline-block; width:14px; height:3px; margin-right:4px; vertical-align:middle; }.bt-legend .eq { background:var(--accent); }.bt-legend .bh { background:var(--muted); }.bt-legend .dd { background:var(--down); }
.bt-metrics { min-width:420px !important; }.bt-receipt { margin-top:12px; padding:10px 12px; border:1px solid var(--quant-line); border-radius:var(--radius); background:var(--surface-2); font-size:12px; }.bt-receipt summary { cursor:pointer; color:var(--info); font-weight:700; }.bt-receipt dl { display:grid; grid-template-columns:110px 1fr; gap:5px 12px; margin:10px 0 0; }.bt-receipt dt { color:var(--muted); }.bt-receipt dd { margin:0; word-break:break-all; }.bt-receipt code { font:11px ui-monospace,SFMono-Regular,Menlo,monospace; color:var(--fg-2); }.bt-receipt p { margin:8px 0 0; padding-top:8px; border-top:1px solid var(--quant-line); color:var(--muted); font-size:11px; } @media (max-width:680px) { .bt-receipt dl { grid-template-columns:1fr; } }
.strategy-result-head b.loss { color:var(--down); background:var(--down-bg, rgba(255,77,77,.12)); }
