Files
goldenChart/frontend/src/styles/backtestReportPrint.css
T
2026-06-03 12:14:08 +09:00

529 lines
12 KiB
CSS

/* ── 분석 레포트 팝업 (화면 = 인쇄용지 미리보기) ── */
.btd-report-overlay {
position: fixed;
inset: 0;
z-index: 9400;
display: flex;
align-items: center;
justify-content: center;
padding: 24px 16px;
background: rgba(30, 32, 38, 0.72);
}
.btd-report-shell {
display: flex;
flex-direction: column;
width: min(920px, 100%);
max-height: min(94vh, 960px);
background: #3d4249;
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 12px;
box-shadow: 0 24px 64px rgba(0, 0, 0, 0.45);
overflow: hidden;
}
.btd-report-chrome {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 12px 16px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
flex-shrink: 0;
background: #2a2e35;
}
.btd-report-chrome-title {
display: flex;
align-items: center;
gap: 10px;
min-width: 0;
}
.btd-report-chrome-icon {
display: flex;
color: #c9a227;
}
.btd-report-chrome-heading {
margin: 0;
font-size: 1rem;
font-weight: 700;
color: #f0f0f0;
}
.btd-report-chrome-sub {
margin: 2px 0 0;
font-size: 0.72rem;
color: #9ca3af;
}
.btd-report-chrome-actions {
display: flex;
align-items: flex-start;
gap: 12px;
flex-shrink: 0;
}
.btd-report-chrome-actions-col {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 4px;
}
.btd-report-print-hint {
margin: 0;
font-size: 0.62rem;
color: #b8bcc4;
text-align: right;
line-height: 1.4;
word-break: keep-all;
}
/* 크롬 바 전용 버튼 (btd-btn·--se-text 상속으로 글자가 안 보이는 문제 방지) */
.btd-report-chrome .btd-report-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 8px 14px;
border-radius: 8px;
border: 1px solid rgba(255, 255, 255, 0.28);
background: rgba(255, 255, 255, 0.08);
color: #f3f4f6;
font-size: 0.8rem;
font-weight: 600;
font-family: 'Noto Sans KR', 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif;
cursor: pointer;
transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.btd-report-chrome .btd-report-btn:hover {
background: rgba(255, 255, 255, 0.14);
border-color: rgba(255, 255, 255, 0.4);
color: #fff;
}
.btd-report-chrome .btd-report-btn--primary {
background: rgba(37, 99, 235, 0.35);
border-color: rgba(147, 197, 253, 0.65);
color: #fff;
}
.btd-report-chrome .btd-report-btn--primary:hover {
background: rgba(37, 99, 235, 0.5);
border-color: #93c5fd;
}
/* 책상 + A4 용지 */
.btd-report-scroll {
flex: 1;
min-height: 0;
overflow: auto;
padding: 28px 24px 36px;
background: #9ca3af;
background: linear-gradient(160deg, #a8adb5 0%, #8b919a 100%);
}
.btd-report-print-area {
box-sizing: border-box;
width: 100%;
max-width: 210mm;
min-height: auto;
margin: 0 auto;
padding: 14mm 12mm 16mm;
background: #fff;
color: #111827;
border-radius: 2px;
box-shadow:
0 1px 3px rgba(0, 0, 0, 0.12),
0 8px 24px rgba(0, 0, 0, 0.18);
font-family: 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans KR', sans-serif;
letter-spacing: normal;
word-break: keep-all;
line-height: 1.45;
-webkit-font-smoothing: antialiased;
font-feature-settings: 'kern' 1;
}
/* ── 용지 위 레포트 테마 (화면·인쇄 iframe 공통) ── */
.btd-report-print-area,
.btd-report-print-doc {
--text: #111827;
--text2: #374151;
--text3: #6b7280;
--bg1: #ffffff;
--bg2: #f9fafb;
--bg3: #f3f4f6;
--bg4: #e5e7eb;
--border: #d1d5db;
--brd-pos: #059669;
--brd-neg: #dc2626;
--brd-warn: #d97706;
--brd-blue: #2563eb;
--brd-purple: #7c3aed;
--brd-teal: #0d9488;
--brd-yellow: #ca8a04;
--brd-green: #16a34a;
}
.btd-report-print-doc {
margin: 0;
padding: 0;
background: #fff;
font-family: 'Noto Sans KR', 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif;
letter-spacing: normal;
}
.btd-report-print-header {
margin-bottom: 14px;
padding-bottom: 10px;
border-bottom: 2px solid #c9a227;
}
.btd-report-print-brand h1 {
margin: 0 0 6px;
font-size: 1.2rem;
font-weight: 800;
color: #111827;
letter-spacing: -0.02em;
}
.btd-report-print-meta {
margin: 0;
font-size: 0.7rem;
color: #6b7280;
}
.btd-report-print-symbol {
margin: 8px 0 0;
font-size: 1.05rem;
font-weight: 700;
color: #92400e;
}
.btd-report-print-footer {
margin-top: 18px;
padding-top: 10px;
border-top: 1px solid #e5e7eb;
font-size: 0.62rem;
color: #6b7280;
text-align: center;
}
.btd-report-print-footer p {
margin: 0;
}
.btd-report-print-area .brd-dashboard,
.btd-report-print-area .brd-dashboard--report {
padding: 0;
background: #fff !important;
min-height: auto !important;
height: auto !important;
gap: 10px;
overflow: visible !important;
}
.btd-report-print-area .brd-sig-scroll {
max-height: none !important;
overflow: visible !important;
}
.btd-report-print-area .brd-dash-header {
display: grid !important;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center !important;
gap: 12px 20px !important;
background: linear-gradient(135deg, #eff6ff 0%, #f5f3ff 100%) !important;
border: 1px solid #bfdbfe !important;
}
.btd-report-print-area .brd-dash-header-left {
min-width: 0;
}
.btd-report-print-area .brd-dash-strategy {
font-size: 0.95rem !important;
font-family: 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans KR', sans-serif !important;
letter-spacing: normal !important;
word-break: keep-all !important;
overflow-wrap: anywhere;
line-height: 1.45 !important;
white-space: normal !important;
}
.btd-report-print-area .brd-dash-header-kpi {
display: flex !important;
flex-shrink: 0;
gap: 14px !important;
align-items: flex-start;
}
.btd-report-print-area .brd-dash-big-kpi {
text-align: right;
min-width: 4.8rem;
flex-shrink: 0;
}
.btd-report-print-area .brd-dash-big-kpi:last-child {
min-width: 7.5rem;
}
/* 레포트: 라벨·수치 한 줄 (총 수익률 -0.04% 형태) */
.btd-report-print-area .brd-dash-header-kpi--report {
align-items: center !important;
}
.btd-report-print-area .brd-dash-big-kpi--report {
display: inline-flex !important;
flex-direction: row !important;
align-items: baseline !important;
gap: 5px !important;
white-space: nowrap !important;
}
.btd-report-print-area .brd-dash-big-kpi--report .brd-dash-big-label {
order: -1;
margin-top: 0 !important;
}
.btd-report-print-area .brd-dash-big-val {
font-size: 1.05rem !important;
font-weight: 800 !important;
letter-spacing: -0.02em !important;
line-height: 1.15 !important;
white-space: nowrap !important;
}
.btd-report-print-area .brd-dash-big-label {
font-size: 0.62rem !important;
margin-top: 2px !important;
white-space: nowrap !important;
}
.btd-report-print-area .brd-dash-strategy,
.btd-report-print-area .brd-kpi-value,
.btd-report-print-area .brd-metric-value {
color: #111827 !important;
}
.btd-report-print-area .brd-dash-badge {
background: #dbeafe !important;
color: #1d4ed8 !important;
border-color: #93c5fd !important;
}
.btd-report-print-area .brd-dash-badge--time {
background: #f3f4f6 !important;
color: #6b7280 !important;
border-color: #d1d5db !important;
}
.btd-report-print-area .brd-kpi-card,
.btd-report-print-area .brd-card {
background: #f9fafb !important;
border: 1px solid #e5e7eb !important;
box-shadow: none !important;
overflow: visible !important;
}
.btd-report-print-area .brd-kpi-card:hover {
transform: none !important;
}
/* KPI·지표 한글 잘림(ellipsis) 방지 — 「미흡」 등이 깨져 보이던 원인 */
.btd-report-print-area .brd-kpi-sub,
.btd-report-print-area .brd-kpi-label,
.btd-report-print-area .brd-metric-label,
.btd-report-print-area .brd-metric-note,
.btd-report-print-area .brd-section-text,
.btd-report-print-area .brd-dash-strategy,
.btd-report-print-area .brd-compare-label,
.btd-report-print-area .brd-pnl-label,
.btd-report-print-area .brd-bench-label {
overflow: visible !important;
text-overflow: unset !important;
white-space: normal !important;
word-break: keep-all !important;
letter-spacing: normal !important;
line-height: 1.4 !important;
}
.btd-report-print-area .brd-kpi-sub {
min-height: 1.2em;
}
.btd-report-print-area .brd-dash-strategy {
letter-spacing: normal !important;
}
.btd-report-print-area .brd-kpi-value,
.btd-report-print-area .brd-metric-value {
line-height: 1.25 !important;
}
.btd-report-print-area .brd-section-title {
background: #f3f4f6 !important;
border-bottom-color: #e5e7eb !important;
color: #374151 !important;
}
.btd-report-print-area .brd-metric-label,
.btd-report-print-area .brd-kpi-label {
color: #6b7280 !important;
}
.btd-report-print-area .brd-dash-big-label {
color: #6b7280 !important;
}
.btd-report-print-area .brd-compare-track,
.btd-report-print-area .brd-pnl-track,
.btd-report-print-area .brd-bench-summary {
background: #e5e7eb !important;
}
.btd-report-print-area .brd-sig-table thead {
background: #f3f4f6 !important;
}
.btd-report-print-area .brd-sig-table th,
.btd-report-print-area .brd-sig-table td {
border-color: #e5e7eb !important;
color: #111827 !important;
}
.btd-report-print-doc .btd-report-print-area {
max-width: none;
min-height: auto;
margin: 0;
box-shadow: none;
border-radius: 0;
}
.btd-report-print-doc .brd-kpi-sub,
.btd-report-print-doc .brd-kpi-label,
.btd-report-print-doc .brd-metric-label {
overflow: visible !important;
text-overflow: unset !important;
white-space: normal !important;
word-break: keep-all !important;
}
.btd-report-print-doc .brd-dash-header {
display: grid !important;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center !important;
}
.btd-report-print-doc .brd-dash-header-kpi {
flex-shrink: 0;
gap: 14px !important;
}
.btd-report-print-doc .brd-dash-big-kpi {
min-width: 4.8rem;
}
.btd-report-print-doc .brd-dash-big-kpi:last-child {
min-width: 7.5rem;
}
.btd-report-print-doc .brd-dash-big-val {
font-size: 1.05rem !important;
white-space: nowrap !important;
}
.btd-report-print-doc .brd-dash-big-label {
font-size: 0.62rem !important;
white-space: nowrap !important;
}
.btd-analysis-tool--report {
cursor: pointer;
transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.btd-analysis-tool--report:hover:not(:disabled) {
color: var(--btd-gold, #d4af37);
border-color: var(--btd-gold-border, rgba(212, 175, 55, 0.5));
background: color-mix(in srgb, var(--btd-gold, #d4af37) 12%, transparent);
}
.btd-analysis-tool--report:disabled {
opacity: 0.35;
cursor: not-allowed;
}
/* iframe·PDF 인쇄 — 다페이지 허용, 하단 잘림 방지 */
@media print {
html,
body.btd-report-print-doc {
height: auto !important;
overflow: visible !important;
background: #fff !important;
}
.btd-report-print-doc {
padding: 0;
margin: 0;
}
.btd-report-print-doc .btd-report-print-area {
padding: 0;
box-shadow: none;
max-width: none;
min-height: 0 !important;
height: auto !important;
overflow: visible !important;
}
.btd-report-print-doc .brd-dashboard {
break-inside: auto !important;
page-break-inside: auto !important;
min-height: 0 !important;
}
.btd-report-print-doc .brd-row,
.btd-report-print-doc .brd-row--2col,
.btd-report-print-doc .brd-row--3col,
.btd-report-print-doc .brd-card,
.btd-report-print-doc .brd-card--full,
.btd-report-print-doc .brd-kpi-grid {
break-inside: auto !important;
page-break-inside: auto !important;
overflow: visible !important;
}
.btd-report-print-doc .brd-kpi-card,
.btd-report-print-doc .brd-dash-header {
break-inside: avoid !important;
page-break-inside: avoid !important;
}
.btd-report-print-doc .brd-sig-scroll {
max-height: none !important;
overflow: visible !important;
height: auto !important;
}
.btd-report-print-doc .brd-expand-btn {
display: none !important;
}
.btd-report-print-doc .brd-card,
.btd-report-print-doc .brd-kpi-card,
.btd-report-print-doc .brd-dash-header,
.btd-report-print-doc .btd-report-print-footer {
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
@page {
size: A4 portrait;
margin: 10mm;
}
}